From 63ff570d423fb090e923ebe1466c3987ee737d6f Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Mon, 11 Nov 2024 21:53:22 -0500 Subject: [PATCH 001/313] refactoring time --- Cryptid.lua | 3213 +--- config.lua | 26 - old/Cryptid.lua | 3224 ++++ {Items => old/Items}/Achievements.lua | 900 +- {Items => old/Items}/Antimatter.lua | 0 {Items => old/Items}/Blinds.lua | 2942 ++-- {Items => old/Items}/Challenges.lua | 0 {Items => old/Items}/CodeCards.lua | 8240 +++++------ {Items => old/Items}/CryptidJokerDisplay.lua | 0 {Items => old/Items}/Decks.lua | 906 +- {Items => old/Items}/Enhanced.lua | 0 {Items => old/Items}/EpicJokers.lua | 0 {Items => old/Items}/Exotic.lua | 0 {Items => old/Items}/M.lua | 0 {Items => old/Items}/Misc.lua | 0 {Items => old/Items}/MiscJokers.lua | 12924 ++++++++--------- {Items => old/Items}/Planets.lua | 1412 +- {Items => old/Items}/PokerHands.lua | 788 +- {Items => old/Items}/Sleeves.lua | 636 +- {Items => old/Items}/Spectrals.lua | 2540 ++-- {Items => old/Items}/Spooky.lua | 2828 ++-- {Items => old/Items}/Stakes.lua | 1212 +- {Items => old/Items}/Tags.lua | 0 {Items => old/Items}/Vouchers.lua | 0 {Items => old/Items}/dummy_https.lua | 6 +- {Items => old/Items}/dummy_timerblinds.lua | 8 +- lovely.toml => old/lovely.toml | 1430 +- {lovely => old/lovely}/Achievements.toml | 74 +- {lovely => old/lovely}/Antimatter.toml | 52 +- {lovely => old/lovely}/Blinds.toml | 106 +- {lovely => old/lovely}/CCD.toml | 114 +- {lovely => old/lovely}/CatMerge.toml | 216 +- {lovely => old/lovely}/Challenges.toml | 60 +- {lovely => old/lovely}/Code.toml | 502 +- {lovely => old/lovely}/Conveyor.toml | 56 +- {lovely => old/lovely}/Cube.toml | 52 +- {lovely => old/lovely}/Enhanced.toml | 146 +- {lovely => old/lovely}/Equilibrium.toml | 58 +- {lovely => old/lovely}/Error.toml | 112 +- {lovely => old/lovely}/Exponentia.toml | 232 +- {lovely => old/lovely}/Gateway.toml | 54 +- {lovely => old/lovely}/Misc.toml | 858 +- {lovely => old/lovely}/Misprint.toml | 1034 +- {lovely => old/lovely}/Planets.toml | 52 +- {lovely => old/lovely}/ResizedJokers.toml | 252 +- {lovely => old/lovely}/Seals.toml | 40 +- {lovely => old/lovely}/Spooky.toml | 0 {lovely => old/lovely}/Stakes.toml | 970 +- {lovely => old/lovely}/Sticker.toml | 622 +- {lovely => old/lovely}/Universum.toml | 86 +- {lovely => old/lovely}/VeryFair.toml | 140 +- 51 files changed, 24555 insertions(+), 24568 deletions(-) delete mode 100644 config.lua create mode 100644 old/Cryptid.lua rename {Items => old/Items}/Achievements.lua (96%) rename {Items => old/Items}/Antimatter.lua (100%) rename {Items => old/Items}/Blinds.lua (96%) rename {Items => old/Items}/Challenges.lua (100%) rename {Items => old/Items}/CodeCards.lua (96%) rename {Items => old/Items}/CryptidJokerDisplay.lua (100%) rename {Items => old/Items}/Decks.lua (96%) rename {Items => old/Items}/Enhanced.lua (100%) rename {Items => old/Items}/EpicJokers.lua (100%) rename {Items => old/Items}/Exotic.lua (100%) rename {Items => old/Items}/M.lua (100%) rename {Items => old/Items}/Misc.lua (100%) rename {Items => old/Items}/MiscJokers.lua (96%) rename {Items => old/Items}/Planets.lua (96%) rename {Items => old/Items}/PokerHands.lua (96%) rename {Items => old/Items}/Sleeves.lua (96%) rename {Items => old/Items}/Spectrals.lua (96%) rename {Items => old/Items}/Spooky.lua (96%) rename {Items => old/Items}/Stakes.lua (96%) rename {Items => old/Items}/Tags.lua (100%) rename {Items => old/Items}/Vouchers.lua (100%) rename {Items => old/Items}/dummy_https.lua (97%) rename {Items => old/Items}/dummy_timerblinds.lua (97%) rename lovely.toml => old/lovely.toml (97%) rename {lovely => old/lovely}/Achievements.toml (97%) rename {lovely => old/lovely}/Antimatter.toml (96%) rename {lovely => old/lovely}/Blinds.toml (97%) rename {lovely => old/lovely}/CCD.toml (96%) rename {lovely => old/lovely}/CatMerge.toml (96%) rename {lovely => old/lovely}/Challenges.toml (96%) rename {lovely => old/lovely}/Code.toml (97%) rename {lovely => old/lovely}/Conveyor.toml (97%) rename {lovely => old/lovely}/Cube.toml (95%) rename {lovely => old/lovely}/Enhanced.toml (97%) rename {lovely => old/lovely}/Equilibrium.toml (97%) rename {lovely => old/lovely}/Error.toml (97%) rename {lovely => old/lovely}/Exponentia.toml (97%) rename {lovely => old/lovely}/Gateway.toml (98%) rename {lovely => old/lovely}/Misc.toml (96%) rename {lovely => old/lovely}/Misprint.toml (97%) rename {lovely => old/lovely}/Planets.toml (96%) rename {lovely => old/lovely}/ResizedJokers.toml (96%) rename {lovely => old/lovely}/Seals.toml (95%) rename {lovely => old/lovely}/Spooky.toml (100%) rename {lovely => old/lovely}/Stakes.toml (97%) rename {lovely => old/lovely}/Sticker.toml (96%) rename {lovely => old/lovely}/Universum.toml (97%) rename {lovely => old/lovely}/VeryFair.toml (97%) diff --git a/Cryptid.lua b/Cryptid.lua index eef512242..366d01f45 100644 --- a/Cryptid.lua +++ b/Cryptid.lua @@ -6,3219 +6,8 @@ --- MOD_DESCRIPTION: Adds unbalanced ideas to Balatro. --- BADGE_COLOUR: 708b91 --- DEPENDENCIES: [Talisman>=2.0.0-beta8, Steamodded>=1.0.0~ALPHA-1103a] ---- VERSION: 0.5.2~1108a +--- VERSION: 0.5.2-REFACTOR~1111a --- PRIORITY: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 ---------------------------------------------- ------------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. - --- 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 -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('571d91'), - 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("e91ff0"), -} - -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" - }, - 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_azure = HEX("1d4fd7") - 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 - G.ARGS.LOC_COLOURS.cry_ascendant = G.C.CRY_ASCENDANT - G.ARGS.LOC_COLOURS.cry_jolly = G.C.CRY_JOLLY - 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 - --- 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, unbalanced) - -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating - excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key - selection = G.P_CENTERS[key] - -- check if it is valid - for k, v in pairs(excluded_flags) do - if not center_no(selection, v, key, true) then - passes = passes + 1 - end - end - -- use it if it's valid or we've run out of attempts - if passes >= #excluded_flags or tries <= 0 then - return selection - 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 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 = 5624 - end -end --- 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 = 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" - 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 - - --[[ - 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 - -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 = {} -for _, file in ipairs(files) do - print("Loading file " .. file) - local f, err = SMODS.load_file("Items/" .. 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 - 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 not item.order then - item.order = 0 - end - if curr_obj.order then - item.order = item.order + curr_obj.order - end - if SMODS[item.object_type] then - if not Cryptid.obj_buffer[item.object_type] then - Cryptid.obj_buffer[item.object_type] = {} - 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 - end - end - end -end -for set, objs in pairs(Cryptid.obj_buffer) do - table.sort(objs, function(a, b) - return a.order < b.order - end) - for i = 1, #objs do - if objs[i].post_process and type(objs[i].post_process) == "function" then - objs[i]:post_process() - end - SMODS[set](objs[i]) - end -end -local cryptidTabs = function() return { - { - label = localize("cry_set_features"), - chosen = true, - tab_definition_function = function() - cry_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, - }), - }, - }, - }, - }, - } - 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() - 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})}}, - }, - }, - } - 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 } }, - }) -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] = 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 - -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 not forced_key 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 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 - - 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 - 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 - 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 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 - at2(Tag(tag.key)) - 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 == "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 == "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) - --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, "immune_to_chemach", true) and 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) - 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 - ---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 - -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 -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.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---------------------- diff --git a/config.lua b/config.lua deleted file mode 100644 index b252ad13b..000000000 --- a/config.lua +++ /dev/null @@ -1,26 +0,0 @@ -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, -} diff --git a/old/Cryptid.lua b/old/Cryptid.lua new file mode 100644 index 000000000..e00d4ff1e --- /dev/null +++ b/old/Cryptid.lua @@ -0,0 +1,3224 @@ +--- STEAMODDED HEADER +--- MOD_NAME: Cryptid +--- MOD_ID: Cryptid +--- PREFIX: cry +--- MOD_AUTHOR: [MathIsFun_, Cryptid and Balatro Discords] +--- MOD_DESCRIPTION: Adds unbalanced ideas to Balatro. +--- BADGE_COLOUR: 708b91 +--- DEPENDENCIES: [Talisman>=2.0.0-beta8, Steamodded>=1.0.0~ALPHA-1103a] +--- VERSION: 0.5.2~1108a +--- PRIORITY: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + +---------------------------------------------- +------------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. + +-- 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 +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('571d91'), + 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("e91ff0"), +} + +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" + }, + 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_azure = HEX("1d4fd7") + 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 + G.ARGS.LOC_COLOURS.cry_ascendant = G.C.CRY_ASCENDANT + G.ARGS.LOC_COLOURS.cry_jolly = G.C.CRY_JOLLY + 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 + +-- 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, unbalanced) + -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating + excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key + selection = G.P_CENTERS[key] + -- check if it is valid + for k, v in pairs(excluded_flags) do + if not center_no(selection, v, key, true) then + passes = passes + 1 + end + end + -- use it if it's valid or we've run out of attempts + if passes >= #excluded_flags or tries <= 0 then + return selection + 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 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 = 5624 + end +end +-- 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 = 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" + 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 + + --[[ + 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 + +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 = {} +for _, file in ipairs(files) do + print("Loading file " .. file) + local f, err = SMODS.load_file("Items/" .. 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 + 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 not item.order then + item.order = 0 + end + if curr_obj.order then + item.order = item.order + curr_obj.order + end + if SMODS[item.object_type] then + if not Cryptid.obj_buffer[item.object_type] then + Cryptid.obj_buffer[item.object_type] = {} + 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 + end + end + end +end +for set, objs in pairs(Cryptid.obj_buffer) do + table.sort(objs, function(a, b) + return a.order < b.order + end) + for i = 1, #objs do + if objs[i].post_process and type(objs[i].post_process) == "function" then + objs[i]:post_process() + end + SMODS[set](objs[i]) + end +end +local cryptidTabs = function() return { + { + label = localize("cry_set_features"), + chosen = true, + tab_definition_function = function() + cry_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, + }), + }, + }, + }, + }, + } + 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() + 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})}}, + }, + }, + } + 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 } }, + }) +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] = 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 + +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 not forced_key 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 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 + + 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 + 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml + G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 + 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 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 + at2(Tag(tag.key)) + 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 == "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 == "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) + --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, "immune_to_chemach", true) and 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) + 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 + +--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 + +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 +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.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---------------------- diff --git a/Items/Achievements.lua b/old/Items/Achievements.lua similarity index 96% rename from Items/Achievements.lua rename to old/Items/Achievements.lua index a24895986..03b68af39 100644 --- a/Items/Achievements.lua +++ b/old/Items/Achievements.lua @@ -1,450 +1,450 @@ -local achievement_atlas = { - object_type = "Atlas", - key = "achievements", - path = "cry_achievements.png", - px = 66, - py = 66, -} - -local break_infinity = { - object_type = "Achievement", - key = "break_infinity", - order = 1, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "chip_score" and to_big(args.chips) >= to_big(2) ^ to_big(1024) then - return true - end - end, -} - -local used_crash = { - object_type = "Achievement", - key = "used_crash", - order = 2, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if - args.type == "ach_cry_used_crash" - and G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"] - and G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"].count > 0 - then - return true - end - end, -} - -local haxxor = { - object_type = "Achievement", - key = "haxxor", - order = 3, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "cheat_used" then - return true - end - end, -} - -local googol_play_pass = { - object_type = "Achievement", - key = "googol_play_pass", - order = 4, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "googol_play_rigged" then - return true - end - end, -} - -local bullet_hell = { - object_type = "Achievement", - key = "bullet_hell", - order = 5, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "modify_jokers" then - local ap_joker_count = 0 - - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == "j_cry_apjoker" then - ap_joker_count = ap_joker_count + 1 - end - end - end - - if ap_joker_count >= 15 then - return true - end - end - end, -} - -local what_have_you_done = { - object_type = "Achievement", - key = "what_have_you_done", - order = 6, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "what_have_you_done" then - return true - end - end, -} - -local cryptid_the_cryptid = { - object_type = "Achievement", - key = "cryptid_the_cryptid", - order = 7, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "cryptid_the_cryptid" then - return true - end - end, -} - -local niw_uoy = { - object_type = "Achievement", - key = "niw_uoy", - order = 8, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "ante_up" and args.ante <= -8 then - return true - end - end, -} - -local jokes_on_you = { - object_type = "Achievement", - key = "jokes_on_you", - order = 9, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) --NOTE: Might be buggy due to G.GAME saving - if args.type == "win" and G.GAME.cry_ach_conditions.the_jokes_on_you_triggered == true then - return true - end - end, -} - -local now_the_fun_begins = { - object_type = "Achievement", - key = "now_the_fun_begins", - order = 10, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "modify_jokers" then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == "j_cry_canvas" then - return true - end - end - end - end, -} - -local blurred_blurred_joker = { - object_type = "Achievement", - key = "blurred_blurred_joker", - order = 11, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "modify_jokers" then - for i = 1, #G.jokers.cards do - if - G.jokers.cards[i].config.center.key == "j_cry_blurred" - and (G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_blur) - then - return true - end - end - end - end, -} - -local exodia = { - object_type = "Achievement", - key = "exodia", - order = 12, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "modify_jokers" then - local exotic_count = 0 - - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.rarity == "cry_exotic" then - exotic_count = exotic_count + 1 - end - end - - if exotic_count >= 5 then - return true - end - end - end, -} - -local freak_house = { - object_type = "Achievement", - key = "freak_house", - order = 13, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) -- NOTE: I hate doing checks like this. Unscuff later - if args.type == "hand" then - -- Do you have Nice - local has_nice - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == "j_cry_nice" then - has_nice = true - end - end - - --Is it a hearts flush house - local total_6s = 0 - local total_9s = 0 - local total_hearts = 0 - for k, v in ipairs(args.scoring_hand) do - if v:is_suit("Hearts", nil, true) then - total_hearts = total_hearts + 1 - end - if v:get_id() == 6 then - total_6s = total_6s + 1 - elseif v:get_id() == 9 then - total_9s = total_9s + 1 - end - end - - if - has_nice - and ((total_6s == 3 and total_9s == 2) or (total_6s == 2 and total_9s == 3)) - and total_hearts == 5 - and args.disp_text == "Flush House" - then - return true - end - end - end, -} - -local ult_full_skip = { - object_type = "Achievement", - key = "ult_full_skip", - order = 14, - bypass_all_unlocked = true, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "win" and G.GAME.round == 1 then - return true - end - end, -} - -local patience_virtue = { - object_type = "Achievement", - key = "patience_virtue", - order = 15, - bypass_all_unlocked = true, - hidden_text = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "round_win" then - if - G.GAME.blind.config.blind.key == "bl_cry_lavender_loop" - and G.GAME.cry_ach_conditions.patience_virtue_earnable == true - then - return true - end - if G.GAME.cry_ach_conditions.patience_virtue_earnable then - G.GAME.cry_ach_conditions.patience_virtue_earnable = nil - end - if G.GAME.cry_ach_conditions.patience_virtue_timer then - G.GAME.cry_ach_conditions.patience_virtue_timer = nil - end - end - end, -} - -local pull_request = { - object_type = "Achievement", - key = "pull_request", - order = 16, - bypass_all_unlocked = true, - hidden_text = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "pr_unlock" then - return true - end - end, -} - -local ace_through_crash = { - object_type = "Achievement", - key = "ace_in_crash", - order = 17, - bypass_all_unlocked = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "ace_in_crash" then - return true - end - end, -} - -local home_realtor = { - object_type = "Achievement", - key = "home_realtor", - order = 18, - bypass_all_unlocked = true, - hidden_text = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - --todo: check for doe/antimatter sleeves - if args.type == "home_realtor" then - return true - end - end, -} - -local traffic_jam = { - object_type = "Achievement", - key = "traffic_jam", - order = 19, - bypass_all_unlocked = true, - hidden_text = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "win_challenge" or args.type == "win_challenge_startup" then - local rush_hours_beaten = 0 - - if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour"] then - rush_hours_beaten = rush_hours_beaten + 1 - end - if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour_ii"] then - rush_hours_beaten = rush_hours_beaten + 1 - end - if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour_iii"] then - rush_hours_beaten = rush_hours_beaten + 1 - end - - if rush_hours_beaten == 3 then - return true - end - end - end, -} - -local perfectly_balanced = { - object_type = "Achievement", - key = "perfectly_balanced", - order = 20, - bypass_all_unlocked = true, - hidden_text = true, - pos = { x = 2, y = 0 }, - atlas = "cry_achievements", - --reset_on_startup = true, - unlock_condition = function(self, args) - if args.type == "win_stake" or args.type == "win_stake_startup" then - if - (G.GAME.selected_back.effect.center.key == "b_cry_very_fair" and G.GAME.stake == 32) - or get_deck_win_stake("b_cry_very_fair") == 32 - then - return true - end - end - end, -} - --- TODO: Add new Achievements. --- Current Ideas (Normal): --- Cry: Win a run with only Sob and Obelisk --- Overtuned: Have any Glitched item give either 100x or 0.01x its original values --- Current Ideas (Platinum): - --- Implemented (Normal) --- Break Infinity: Score more than 1.57e308 in one hand --- H4xx0r: Use a cheat code --- We Told You Not To: Use ://CRASH --- Googol Play Pass: Rig a Googol Play Card --- Bullet Hell: Have 15 copies of AP Joker --- !niW uoY: Reach Ante -8 --- Now the Fun Begins: Obtain Canvas --- Exodia: Have 5 Exotic Jokers --- WHAT HAVE YOU DONE: Delete or Sacrifice an Exotic Joker --- Joke's on You, Pal!: Trigger The Joke's effect on Ante 1 and win the run --- Freak House: Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice --- Ultimate Full Skip: Win in 1 round --- Legally Blind: Obtain a Blurred Blurred Joker --- Cryptid the Cryptid: Use Cryptid on Cryptid --- Implemented (Platinum) --- Patience is a Virtue: Wait out Lavender Loop for 2 minutes before playing first hand and beat it --- Pull Request: Have ://COMMIT spawn the same Joker that it destroyed --- Pocket ACE: Only unlockable through using ACE to unlock --- Home Realtor: Activate Happy House before Ante 8 (without DoE/Antimatter) --- Traffic Jam: Win all Rush Hour challenges --- Perfectly Balanced: Beat Very Fair Deck on Ascendant Stake - -local achievement_objects = { - achievement_atlas, - break_infinity, - bullet_hell, - cryptid_the_cryptid, - now_the_fun_begins, - blurred_blurred_joker, - exodia, - what_have_you_done, - used_crash, - haxxor, - googol_play_pass, - pull_request, - niw_uoy, - jokes_on_you, - freak_house, - ult_full_skip, - patience_virtue, - ace_through_crash, - home_realtor, - traffic_jam, - perfectly_balanced, -} -return { name = "Achievements", init = function() end, items = achievement_objects } +local achievement_atlas = { + object_type = "Atlas", + key = "achievements", + path = "cry_achievements.png", + px = 66, + py = 66, +} + +local break_infinity = { + object_type = "Achievement", + key = "break_infinity", + order = 1, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "chip_score" and to_big(args.chips) >= to_big(2) ^ to_big(1024) then + return true + end + end, +} + +local used_crash = { + object_type = "Achievement", + key = "used_crash", + order = 2, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if + args.type == "ach_cry_used_crash" + and G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"] + and G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"].count > 0 + then + return true + end + end, +} + +local haxxor = { + object_type = "Achievement", + key = "haxxor", + order = 3, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "cheat_used" then + return true + end + end, +} + +local googol_play_pass = { + object_type = "Achievement", + key = "googol_play_pass", + order = 4, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "googol_play_rigged" then + return true + end + end, +} + +local bullet_hell = { + object_type = "Achievement", + key = "bullet_hell", + order = 5, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "modify_jokers" then + local ap_joker_count = 0 + + if G.jokers then + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.key == "j_cry_apjoker" then + ap_joker_count = ap_joker_count + 1 + end + end + end + + if ap_joker_count >= 15 then + return true + end + end + end, +} + +local what_have_you_done = { + object_type = "Achievement", + key = "what_have_you_done", + order = 6, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "what_have_you_done" then + return true + end + end, +} + +local cryptid_the_cryptid = { + object_type = "Achievement", + key = "cryptid_the_cryptid", + order = 7, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "cryptid_the_cryptid" then + return true + end + end, +} + +local niw_uoy = { + object_type = "Achievement", + key = "niw_uoy", + order = 8, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "ante_up" and args.ante <= -8 then + return true + end + end, +} + +local jokes_on_you = { + object_type = "Achievement", + key = "jokes_on_you", + order = 9, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) --NOTE: Might be buggy due to G.GAME saving + if args.type == "win" and G.GAME.cry_ach_conditions.the_jokes_on_you_triggered == true then + return true + end + end, +} + +local now_the_fun_begins = { + object_type = "Achievement", + key = "now_the_fun_begins", + order = 10, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "modify_jokers" then + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.key == "j_cry_canvas" then + return true + end + end + end + end, +} + +local blurred_blurred_joker = { + object_type = "Achievement", + key = "blurred_blurred_joker", + order = 11, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "modify_jokers" then + for i = 1, #G.jokers.cards do + if + G.jokers.cards[i].config.center.key == "j_cry_blurred" + and (G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_blur) + then + return true + end + end + end + end, +} + +local exodia = { + object_type = "Achievement", + key = "exodia", + order = 12, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "modify_jokers" then + local exotic_count = 0 + + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.rarity == "cry_exotic" then + exotic_count = exotic_count + 1 + end + end + + if exotic_count >= 5 then + return true + end + end + end, +} + +local freak_house = { + object_type = "Achievement", + key = "freak_house", + order = 13, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) -- NOTE: I hate doing checks like this. Unscuff later + if args.type == "hand" then + -- Do you have Nice + local has_nice + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.key == "j_cry_nice" then + has_nice = true + end + end + + --Is it a hearts flush house + local total_6s = 0 + local total_9s = 0 + local total_hearts = 0 + for k, v in ipairs(args.scoring_hand) do + if v:is_suit("Hearts", nil, true) then + total_hearts = total_hearts + 1 + end + if v:get_id() == 6 then + total_6s = total_6s + 1 + elseif v:get_id() == 9 then + total_9s = total_9s + 1 + end + end + + if + has_nice + and ((total_6s == 3 and total_9s == 2) or (total_6s == 2 and total_9s == 3)) + and total_hearts == 5 + and args.disp_text == "Flush House" + then + return true + end + end + end, +} + +local ult_full_skip = { + object_type = "Achievement", + key = "ult_full_skip", + order = 14, + bypass_all_unlocked = true, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "win" and G.GAME.round == 1 then + return true + end + end, +} + +local patience_virtue = { + object_type = "Achievement", + key = "patience_virtue", + order = 15, + bypass_all_unlocked = true, + hidden_text = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "round_win" then + if + G.GAME.blind.config.blind.key == "bl_cry_lavender_loop" + and G.GAME.cry_ach_conditions.patience_virtue_earnable == true + then + return true + end + if G.GAME.cry_ach_conditions.patience_virtue_earnable then + G.GAME.cry_ach_conditions.patience_virtue_earnable = nil + end + if G.GAME.cry_ach_conditions.patience_virtue_timer then + G.GAME.cry_ach_conditions.patience_virtue_timer = nil + end + end + end, +} + +local pull_request = { + object_type = "Achievement", + key = "pull_request", + order = 16, + bypass_all_unlocked = true, + hidden_text = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "pr_unlock" then + return true + end + end, +} + +local ace_through_crash = { + object_type = "Achievement", + key = "ace_in_crash", + order = 17, + bypass_all_unlocked = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "ace_in_crash" then + return true + end + end, +} + +local home_realtor = { + object_type = "Achievement", + key = "home_realtor", + order = 18, + bypass_all_unlocked = true, + hidden_text = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + --todo: check for doe/antimatter sleeves + if args.type == "home_realtor" then + return true + end + end, +} + +local traffic_jam = { + object_type = "Achievement", + key = "traffic_jam", + order = 19, + bypass_all_unlocked = true, + hidden_text = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "win_challenge" or args.type == "win_challenge_startup" then + local rush_hours_beaten = 0 + + if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour"] then + rush_hours_beaten = rush_hours_beaten + 1 + end + if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour_ii"] then + rush_hours_beaten = rush_hours_beaten + 1 + end + if G.PROFILES[G.SETTINGS.profile].challenge_progress.completed["c_cry_rush_hour_iii"] then + rush_hours_beaten = rush_hours_beaten + 1 + end + + if rush_hours_beaten == 3 then + return true + end + end + end, +} + +local perfectly_balanced = { + object_type = "Achievement", + key = "perfectly_balanced", + order = 20, + bypass_all_unlocked = true, + hidden_text = true, + pos = { x = 2, y = 0 }, + atlas = "cry_achievements", + --reset_on_startup = true, + unlock_condition = function(self, args) + if args.type == "win_stake" or args.type == "win_stake_startup" then + if + (G.GAME.selected_back.effect.center.key == "b_cry_very_fair" and G.GAME.stake == 32) + or get_deck_win_stake("b_cry_very_fair") == 32 + then + return true + end + end + end, +} + +-- TODO: Add new Achievements. +-- Current Ideas (Normal): +-- Cry: Win a run with only Sob and Obelisk +-- Overtuned: Have any Glitched item give either 100x or 0.01x its original values +-- Current Ideas (Platinum): + +-- Implemented (Normal) +-- Break Infinity: Score more than 1.57e308 in one hand +-- H4xx0r: Use a cheat code +-- We Told You Not To: Use ://CRASH +-- Googol Play Pass: Rig a Googol Play Card +-- Bullet Hell: Have 15 copies of AP Joker +-- !niW uoY: Reach Ante -8 +-- Now the Fun Begins: Obtain Canvas +-- Exodia: Have 5 Exotic Jokers +-- WHAT HAVE YOU DONE: Delete or Sacrifice an Exotic Joker +-- Joke's on You, Pal!: Trigger The Joke's effect on Ante 1 and win the run +-- Freak House: Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice +-- Ultimate Full Skip: Win in 1 round +-- Legally Blind: Obtain a Blurred Blurred Joker +-- Cryptid the Cryptid: Use Cryptid on Cryptid +-- Implemented (Platinum) +-- Patience is a Virtue: Wait out Lavender Loop for 2 minutes before playing first hand and beat it +-- Pull Request: Have ://COMMIT spawn the same Joker that it destroyed +-- Pocket ACE: Only unlockable through using ACE to unlock +-- Home Realtor: Activate Happy House before Ante 8 (without DoE/Antimatter) +-- Traffic Jam: Win all Rush Hour challenges +-- Perfectly Balanced: Beat Very Fair Deck on Ascendant Stake + +local achievement_objects = { + achievement_atlas, + break_infinity, + bullet_hell, + cryptid_the_cryptid, + now_the_fun_begins, + blurred_blurred_joker, + exodia, + what_have_you_done, + used_crash, + haxxor, + googol_play_pass, + pull_request, + niw_uoy, + jokes_on_you, + freak_house, + ult_full_skip, + patience_virtue, + ace_through_crash, + home_realtor, + traffic_jam, + perfectly_balanced, +} +return { name = "Achievements", init = function() end, items = achievement_objects } diff --git a/Items/Antimatter.lua b/old/Items/Antimatter.lua similarity index 100% rename from Items/Antimatter.lua rename to old/Items/Antimatter.lua diff --git a/Items/Blinds.lua b/old/Items/Blinds.lua similarity index 96% rename from Items/Blinds.lua rename to old/Items/Blinds.lua index 5a1927ba8..5a5bd67d1 100644 --- a/Items/Blinds.lua +++ b/old/Items/Blinds.lua @@ -1,1471 +1,1471 @@ ---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", - name = "cry-oldox", - key = "oldox", - pos = { x = 0, y = 0 }, - boss = { - min = 2, - max = 10, - }, - atlas = "nostalgia", - order = 4, - boss_colour = HEX("4f6367"), - modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - if to_big(hand_chips) ~= to_big(0) then - G.GAME.blind.triggered = true - return mult, to_big(0), true - end - return mult, to_big(0), false - end, -} -local oldhouse = { - object_type = "Blind", - name = "cry-oldhouse", - key = "oldhouse", - pos = { x = 0, y = 2 }, - boss = { - min = 3, - max = 10, - }, - atlas = "nostalgia", - order = 5, - boss_colour = HEX("4f6367"), - debuff_hand = function(self, cards, hand, handname, check) - if handname == "Full House" and not G.GAME.blind.disabled then - G.GAME.blind.triggered = true - return true - end - return false - end, - get_loc_debuff_text = function(self) - return localize("cry_debuff_oldhouse") - end, -} -local oldarm = { - object_type = "Blind", - name = "cry-oldarm", - key = "oldarm", - pos = { x = 0, y = 3 }, - boss = { - min = 3, - max = 10, - }, - atlas = "nostalgia", - order = 6, - boss_colour = HEX("4f6367"), - debuff_hand = function(self, cards, hand, handname, check) - if #cards > 4 and not G.GAME.blind.disabled then - G.GAME.blind.triggered = true - return true - end - return false - end, - get_loc_debuff_text = function(self) - return localize("cry_debuff_oldarm") - end, -} -local oldfish = { - object_type = "Blind", - name = "cry-oldfish", - key = "oldfish", - pos = { x = 0, y = 4 }, - boss = { - min = 2, - max = 10, - }, - atlas = "nostalgia", - order = 7, - boss_colour = HEX("4f6367"), - modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - if to_big(mult) ~= to_big(1) then - G.GAME.blind.triggered = true - return to_big(1), hand_chips, true - end - return to_big(1), hand_chips, false - end, -} -local oldmanacle = { - object_type = "Blind", - name = "cry-oldmanacle", - key = "oldmanacle", - pos = { x = 0, y = 5 }, - boss = { - min = 1, - max = 10, - }, - atlas = "nostalgia", - order = 8, - boss_colour = HEX("4f6367"), - modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - if G.GAME.current_round.discards_left > 1 then - G.GAME.blind.triggered = true - return math.floor(mult / G.GAME.current_round.discards_left), hand_chips, true - end - return mult, hand_chips, false - end, -} -local oldserpent = { - object_type = "Blind", - name = "cry-oldserpent", - key = "oldserpent", - pos = { x = 0, y = 6 }, - boss = { - min = 5, - max = 10, - }, - atlas = "nostalgia", - order = 9, - boss_colour = HEX("4f6367"), - modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - if G.GAME.hands[text].level > 1 then - G.GAME.blind.triggered = true - return math.floor(mult / G.GAME.hands[text].level), hand_chips, true - end - return mult, hand_chips, false - end, -} -local oldpillar = { - object_type = "Blind", - name = "cry-oldpillar", - key = "oldpillar", - pos = { x = 0, y = 7 }, - boss = { - min = 3, - max = 10, - }, - atlas = "nostalgia", - order = 10, - boss_colour = HEX("4f6367"), - debuff_hand = function(self, cards, hand, handname, check) - if handname == "Straight" and not G.GAME.blind.disabled then - G.GAME.blind.triggered = true - return true - end - return false - end, - get_loc_debuff_text = function(self) - return localize("cry_debuff_oldpillar") - end, -} -local oldflint = { - object_type = "Blind", - name = "cry-oldflint", - key = "oldflint", - pos = { x = 0, y = 8 }, - boss = { - min = 3, - max = 10, - }, - atlas = "nostalgia", - order = 11, - boss_colour = HEX("4f6367"), - debuff_hand = function(self, cards, hand, handname, check) - if handname == "Flush" and not G.GAME.blind.disabled then - G.GAME.blind.triggered = true - return true - end - return false - end, - get_loc_debuff_text = function(self) - return localize("cry_debuff_oldflint") - end, -} -local oldmark = { - object_type = "Blind", - name = "cry-oldmark", - key = "oldmark", - pos = { x = 0, y = 1 }, - boss = { - min = 4, - max = 10, - }, - atlas = "nostalgia", - order = 12, - boss_colour = HEX("4f6367"), - debuff_hand = function(self, cards, hand, handname, check) - if next(hand["Pair"]) then - G.GAME.blind.triggered = true - return true - end - return false - end, - get_loc_debuff_text = function(self) - return localize("cry_debuff_oldmark") - end, -} -local tax = { - object_type = "Blind", - name = "cry-Tax", - key = "tax", - pos = { x = 0, y = 0 }, - boss = { - min = 1, - max = 10, - }, - atlas = "blinds", - order = 2, - boss_colour = HEX("40ff40"), - cry_cap_score = function(self, score) - return math.floor(math.min(0.4 * G.GAME.blind.chips, score) + 0.5) - end, - in_pool = function() - return G.GAME.round_resets.hands >= 3 - end, -} -local box = { - object_type = "Blind", - name = "cry-box", - key = "box", - pos = { x = 0, y = 8 }, - boss = { - min = 1, - max = 10, - }, - atlas = "blinds", - order = 13, - boss_colour = HEX("883a3b"), - recalc_debuff = function(self, card, from_blind) - if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 1 then - return true - end - return false - end, -} -local clock = { - object_type = "Blind", - name = "cry-Clock", - key = "clock", - pos = { x = 0, y = 1 }, - mult = 0, - boss = { - min = 1, - max = 10, - }, - config = { - tw_bl = { - ignore = true, - }, - }, - atlas = "blinds", - order = 3, - boss_colour = HEX("853455"), - defeat = function(self, silent) - G.P_BLINDS.bl_cry_clock.mult = 0 - end, - disable = function(self, silent) - G.GAME.blind.chips = get_blind_amount(G.GAME.round_resets.ante) * G.GAME.starting_params.ante_scaling * 2 - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - end, - cry_ante_base_mod = function(self, dt) - return 0.1 * dt / 3 - end, -} -local trick = { - object_type = "Blind", - name = "cry-Trick", - key = "trick", - pos = { x = 0, y = 3 }, - boss = { - min = 1, - max = 10, - }, - atlas = "blinds", - order = 14, - boss_colour = HEX("babd24"), - cry_after_play = function(self) - --flip and shuffle all cards held in hand - for k, v in ipairs(G.hand.cards) do - if v.facing == "front" then - 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 })) - delay(0.15) - 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 })) - delay(0.5) - return true end })) - end--]] - end, -} - -local joke = { - object_type = "Blind", - name = "cry-Joke", - key = "joke", - pos = { x = 0, y = 4 }, - boss = { - min = 1, - max = 10, - }, - atlas = "blinds", - order = 15, - boss_colour = HEX("00ffaa"), - loc_vars = function(self, info_queue, card) - return { vars = { G.GAME.win_ante or 8 } } - 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 - G.GAME.cry_ach_conditions.the_jokes_on_you_triggered = true - end - return G.GAME.win_ante - G.GAME.round_resets.ante % G.GAME.win_ante - end - return 1 - end, -} -local hammer = { - object_type = "Blind", - name = "cry-hammer", - key = "hammer", - pos = { x = 0, y = 9 }, - boss = { - min = 2, - max = 10, - }, - atlas = "blinds", - order = 19, - boss_colour = HEX("ffabd6"), - recalc_debuff = function(self, card, from_blind) - if card.area ~= G.jokers and not G.GAME.blind.disabled then - if - card.ability.effect ~= "Stone Card" - and ( - card.base.value == "3" - or card.base.value == "5" - or card.base.value == "7" - or card.base.value == "9" - or card.base.value == "Ace" - ) - then - return true - end - return false - end - end, -} -local magic = { - object_type = "Blind", - name = "cry-magic", - key = "magic", - pos = { x = 0, y = 12 }, - boss = { - min = 2, - max = 10, - }, - atlas = "blinds", - order = 20, - boss_colour = HEX("009eff"), - recalc_debuff = function(self, card, from_blind) - if card.area ~= G.jokers and not G.GAME.blind.disabled then - if - card.ability.effect ~= "Stone Card" - and ( - card.base.value == "2" - or card.base.value == "4" - or card.base.value == "6" - or card.base.value == "8" - or card.base.value == "10" - ) - then - return true - end - return false - end - end, -} -local windmill = { - object_type = "Blind", - name = "cry-windmill", - key = "windmill", - pos = { x = 0, y = 10 }, - boss = { - min = 4, - max = 10, - }, - atlas = "blinds", - order = 16, - boss_colour = HEX("f70000"), - recalc_debuff = function(self, card, from_blind) - if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 2 then - return true - end - return false - end, -} -local striker = { - object_type = "Blind", - name = "cry-striker", - key = "striker", - pos = { x = 0, y = 13 }, - boss = { - min = 4, - max = 10, - }, - atlas = "blinds", - order = 1, - boss_colour = HEX("505e5c"), - recalc_debuff = function(self, card, from_blind) - if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 3 then - return true - end - return false - end, -} -local shackle = { - object_type = "Blind", - name = "cry-shackle", - key = "shackle", - pos = { x = 0, y = 15 }, - boss = { - min = 1, - max = 10, - }, - atlas = "blinds", - order = 18, - boss_colour = HEX("010466"), - in_pool = function() - if not G.jokers 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 - 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 - return true - end - return false - end, -} -local pin = { - object_type = "Blind", - name = "cry-pin", - key = "pin", - pos = { x = 0, y = 14 }, - boss = { - min = 4, - max = 10, - }, - atlas = "blinds", - order = 17, - boss_colour = HEX("452703"), - in_pool = function() - if not G.jokers 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 - 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) - then - return true - end - return false - end, -} - ---It seems Showdown blind order is seperate from normal blind collection order? convenient for me at least - -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 = { - object_type = "Blind", - name = "cry-Lavender Loop", - key = "lavender_loop", - pos = { x = 0, y = 2 }, - mult = 1, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - order = 2, - boss_colour = HEX("ae00ff"), - set_blind = function(self, reset, silent) - G.GAME.cry_ach_conditions.patience_virtue_timer = 120 - end, - disable = function(self, silent) - G.GAME.blind.chips = get_blind_amount(G.GAME.round_resets.ante) * G.GAME.starting_params.ante_scaling * 2 - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - G.GAME.cry_ach_conditions.patience_virtue_earnable = false - G.GAME.cry_ach_conditions.patience_virtue_earnable = nil - end, - cry_round_base_mod = function(self, dt) - if - G.GAME.cry_ach_conditions.patience_virtue_timer > 0 - 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) - 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) - end, -} -local tornado = { - object_type = "Blind", - name = "cry-tornado", - key = "tornado", - pos = { x = 0, y = 16 }, - mult = 0.8, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - order = 5, - boss_colour = HEX("3dd9ca"), - loc_vars = function(self) - return { vars = { "" .. ((G.GAME and 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) - 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 - end, - collection_loc_vars = function(self) - return { vars = { "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 2), 3 } } - end, - debuff_hand = function(self, cards, hand, handname, check) - if - not check - and (pseudorandom(pseudoseed("tornado")) < ((G.GAME.probabilities.normal * 2) / 3)) - 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 - return false - end - - G.GAME.blind.triggered = true - return true - end - return false - end, -} ---todo: disable get_local_debuff_text for this -local vermillion_virus = { - object_type = "Blind", - name = "cry-Vermillion Virus", - key = "vermillion_virus", - pos = { x = 0, y = 5 }, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - order = 1, - boss_colour = HEX("f65d34"), - cry_before_play = function(self) - if G.jokers.cards[1] then - 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}) - else - _card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "cry_vermillion_virus_gen") - G.jokers.cards[idx]:remove_from_deck() - _card:add_to_deck() - _card:start_materialize() - G.jokers.cards[idx] = _card - _card:set_card_area(G.jokers) - G.jokers:set_ranks() - G.jokers:align_cards() - end - end - end - end, -} - -local sapphire_stamp = { - object_type = "Blind", - name = "cry-Sapphire Stamp", - key = "sapphire_stamp", - pos = { x = 0, y = 6 }, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - order = 3, - boss_colour = HEX("4057d6"), - cry_before_play = function(self) - local idx = pseudorandom(pseudoseed("cry_sapphire_stamp"), 1, #G.hand.highlighted) - G.hand:remove_from_highlighted(G.hand.highlighted[idx]) - end, - set_blind = function(self, reset, silent) - if not reset then - G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + 1 - end - end, - defeat = function(self, silent) - if not G.GAME.blind.disabled then - G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - 1 - end - end, - disable = function(self, silent) - if not G.GAME.blind.disabled then - G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - 1 - end - end, -} - -local obsidian_orb = { - object_type = "Blind", - name = "cry-Obsidian Orb", - key = "obsidian_orb", - pos = { x = 0, y = 7 }, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - order = 4, - boss_colour = HEX("290759"), - set_blind = function(self, reset, silent) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.set_blind then - s:set_blind(reset, silent) - end - if s.name == "The Eye" and not reset then - G.GAME.blind.hands = { - ["Flush Five"] = false, - ["Flush House"] = false, - ["Five of a Kind"] = false, - ["Straight Flush"] = false, - ["Four of a Kind"] = false, - ["Full House"] = false, - ["Flush"] = false, - ["Straight"] = false, - ["Three of a Kind"] = false, - ["Two Pair"] = false, - ["Pair"] = false, - ["High Card"] = false, - } - end - if s.name == "The Mouth" and not reset then - G.GAME.blind.only_hand = false - end - if s.name == "The Fish" and not reset then - G.GAME.blind.prepped = nil - end - if s.name == "The Water" and not reset then - G.GAME.blind.discards_sub = G.GAME.current_round.discards_left - ease_discard(-G.GAME.blind.discards_sub) - end - if s.name == "The Needle" and not reset then - G.GAME.blind.hands_sub = G.GAME.round_resets.hands - 1 - ease_hands_played(-G.GAME.blind.hands_sub) - end - if s.name == "The Manacle" and not reset then - G.hand:change_size(-1) - end - if s.name == "Amber Acorn" and not reset and #G.jokers.cards > 0 then - G.jokers:unhighlight_all() - for k, v in ipairs(G.jokers.cards) do - v:flip() - end - if #G.jokers.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.jokers:shuffle("aajk") - play_sound("cardSlide1", 0.85) - return true - end, - })) - delay(0.15) - G.E_MANAGER:add_event(Event({ - func = function() - G.jokers:shuffle("aajk") - play_sound("cardSlide1", 1.15) - return true - end, - })) - delay(0.15) - G.E_MANAGER:add_event(Event({ - func = function() - G.jokers:shuffle("aajk") - play_sound("cardSlide1", 1) - return true - end, - })) - delay(0.5) - return true - end, - })) - end - end - - --add new debuffs - for _, v in ipairs(G.playing_cards) do - self:debuff_card(v) - end - for _, v in ipairs(G.jokers.cards) do - if not reset then - self:debuff_card(v, true) - end - end - end - end, - defeat = function(self, silent) - for k, _ in pairs(G.GAME.defeated_blinds) do - if G.P_BLINDS[k].defeat then - G.P_BLINDS[k]:defeat(silent) - end - if G.P_BLINDS[k].name == "The Manacle" and not self.disabled then - G.hand:change_size(1) - end - end - end, - disable = function(self, silent) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.disable then - s:disable(silent) - end - if s.name == "The Water" then - ease_discard(G.GAME.blind.discards_sub) - end - if s.name == "The Wheel" or s.name == "The House" or s.name == "The Mark" or s.name == "The Fish" then - for i = 1, #G.hand.cards do - if G.hand.cards[i].facing == "back" then - G.hand.cards[i]:flip() - end - end - for k, v in pairs(G.playing_cards) do - v.ability.wheel_flipped = nil - end - end - if s.name == "The Needle" then - ease_hands_played(G.GAME.blind.hands_sub) - end - if s.name == "The Wall" then - G.GAME.blind.chips = G.GAME.blind.chips / 2 - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - end - if s.name == "Cerulean Bell" then - for k, v in ipairs(G.playing_cards) do - v.ability.forced_selection = nil - end - end - if s.name == "The Manacle" then - G.hand:change_size(1) - - G.FUNCS.draw_from_deck_to_hand(1) - end - if s.name == "Violet Vessel" then - G.GAME.blind.chips = G.GAME.blind.chips / 3 - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - end - end - end, - press_play = function(self) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.press_play then - s:press_play() - end - if s.name == "The Hook" then - G.E_MANAGER:add_event(Event({ - func = function() - local any_selected = nil - local _cards = {} - for k, v in ipairs(G.hand.cards) do - _cards[#_cards + 1] = v - end - for i = 1, 2 do - if G.hand.cards[i] then - local selected_card, card_key = pseudorandom_element(_cards, pseudoseed("ObsidianOrb")) - G.hand:add_to_highlighted(selected_card, true) - table.remove(_cards, card_key) - any_selected = true - play_sound("card1", 1) - end - end - if any_selected then - G.FUNCS.discard_cards_from_highlighted(nil, true) - end - return true - end, - })) - G.GAME.blind.triggered = true - delay(0.7) - end - if s.name == "Crimson Heart" then - if G.jokers.cards[1] then - G.GAME.blind.triggered = true - G.GAME.blind.prepped = true - end - end - if s.name == "The Fish" then - G.GAME.blind.prepped = true - end - if s.name == "The Tooth" then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - for i = 1, #G.play.cards do - G.E_MANAGER:add_event(Event({ - func = function() - G.play.cards[i]:juice_up() - return true - end, - })) - ease_dollars(-1) - delay(0.23) - end - return true - end, - })) - G.GAME.blind.triggered = true - end - end - end, - modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - local new_mult = mult - local new_chips = hand_chips - local trigger = false - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.modify_hand then - local this_trigger = false - new_mult, new_chips, this_trigger = s:modify_hand(cards, poker_hands, text, new_mult, new_chips) - trigger = trigger or this_trigger - end - if s.name == "The Flint" then - G.GAME.blind.triggered = true - new_mult = math.max(math.floor(new_mult * 0.5 + 0.5), 1) - new_chips = math.max(math.floor(new_chips * 0.5 + 0.5), 0) - trigger = true - end - end - return new_mult or mult, new_chips or hand_chips, trigger - end, - debuff_hand = function(self, cards, hand, handname, check) - G.GAME.blind.debuff_boss = nil - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.debuff_hand and s:debuff_hand(cards, hand, handname, check) then - G.GAME.blind.debuff_boss = s - return true - end - if s.debuff then - G.GAME.blind.triggered = false - if s.debuff.hand and next(hand[s.debuff.hand]) then - G.GAME.blind.triggered = true - G.GAME.blind.debuff_boss = s - return true - end - if s.debuff.h_size_ge and #cards < s.debuff.h_size_ge then - G.GAME.blind.triggered = true - G.GAME.blind.debuff_boss = s - return true - end - if s.debuff.h_size_le and #cards > s.debuff.h_size_le then - G.GAME.blind.triggered = true - G.GAME.blind.debuff_boss = s - return true - end - if s.name == "The Eye" then - if G.GAME.blind.hands[handname] then - G.GAME.blind.triggered = true - G.GAME.blind.debuff_boss = s - return true - end - if not check then - G.GAME.blind.hands[handname] = true - end - end - if s.name == "The Mouth" then - if s.only_hand and s.only_hand ~= handname then - G.GAME.blind.triggered = true - G.GAME.blind.debuff_boss = s - return true - end - if not check then - s.only_hand = handname - end - end - end - if s.name == "The Arm" then - G.GAME.blind.triggered = false - if G.GAME.hands[handname].level > 1 then - G.GAME.blind.triggered = true - if not check then - level_up_hand(G.GAME.blind.children.animatedSprite, handname, nil, -1) - G.GAME.blind:wiggle() - end - end - end - if s.name == "The Ox" then - G.GAME.blind.triggered = false - if handname == G.GAME.current_round.most_played_poker_hand then - G.GAME.blind.triggered = true - if not check then - ease_dollars(-G.GAME.dollars, true) - G.GAME.blind:wiggle() - end - end - end - end - return false - end, - drawn_to_hand = function(self) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.drawn_to_hand then - s:drawn_to_hand() - end - if s.name == "Cerulean Bell" then - local any_forced = nil - for k, v in ipairs(G.hand.cards) do - if v.ability.forced_selection then - any_forced = true - end - end - if not any_forced then - G.hand:unhighlight_all() - local forced_card = pseudorandom_element(G.hand.cards, pseudoseed("ObsidianOrb")) - forced_card.ability.forced_selection = true - G.hand:add_to_highlighted(forced_card) - end - end - if s.name == "Crimson Heart" and G.GAME.blind.prepped and G.jokers.cards[1] then - local jokers = {} - for i = 1, #G.jokers.cards do - if not G.jokers.cards[i].debuff or #G.jokers.cards < 2 then - jokers[#jokers + 1] = G.jokers.cards[i] - end - G.jokers.cards[i]:set_debuff(false) - end - local _card = pseudorandom_element(jokers, pseudoseed("ObsidianOrb")) - if _card then - _card:set_debuff(true) - _card:juice_up() - G.GAME.blind:wiggle() - end - end - end - end, - stay_flipped = function(self, area, card) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.stay_flipped and s:stay_flipped(area, card) then - return true - end - if area == G.hand then - if - s.name == "The Wheel" - and pseudorandom(pseudoseed("ObsidianOrb")) < G.GAME.probabilities.normal / 7 - then - return true - end - if - s.name == "The House" - and G.GAME.current_round.hands_played == 0 - and G.GAME.current_round.discards_used == 0 - then - return true - end - if s.name == "The Mark" and card:is_face(true) then - return true - end - if s.name == "The Fish" and G.GAME.blind.prepped then - return true - end - end - end - end, - debuff_card = function(self, card, from_blind) - if card and type(card) == "table" and card.area then - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.debuff_card then - s:debuff_card(card, from_blind) - end - if s.debuff and not G.GAME.blind.disabled and card.area ~= G.jokers then - --this part is buggy for some reason - if s.debuff.suit and Card.is_suit(card, s.debuff.suit, true) then - card:set_debuff(true) - return - end - if s.debuff.is_face == "face" and Card.is_face(card, true) then - card:set_debuff(true) - return - end - if s.name == "The Pillar" and card.ability.played_this_ante then - card:set_debuff(true) - return - end - if s.debuff.value and s.debuff.value == card.base.value then - card:set_debuff(true) - return - end - if s.debuff.nominal and s.debuff.nominal == card.base.nominal then - card:set_debuff(true) - return - end - end - if s.name == "Crimson Heart" and not G.GAME.blind.disabled and card.area == G.jokers then - return - end - if s.name == "Verdant Leaf" and not G.GAME.blind.disabled and card.area ~= G.jokers then - card:set_debuff(true) - return - end - end - end - end, - cry_ante_base_mod = function(self, dt) - local mod = 0 - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_ante_base_mod then - mod = mod + s:cry_ante_base_mod(dt) - end - end - return mod - end, - cry_round_base_mod = function(self, dt) - local mod = 1 - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_round_base_mod then - mod = mod * s:cry_round_base_mod(dt) - end - end - return mod - end, - cry_cap_score = function(self, score) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_cap_score then - score = s:cry_cap_score(score) - end - end - return score - end, - cry_calc_ante_gain = function(self) - local ante = 1 - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_calc_ante_gain then - ante = math.max(ante, s:cry_calc_ante_gain()) - end - end - return ante - end, - cry_before_play = function(self) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_before_play then - s:cry_before_play() - end - end - end, - cry_after_play = function(self) - for k, _ in pairs(G.GAME.defeated_blinds) do - s = G.P_BLINDS[k] - if s.cry_after_play then - s:cry_after_play() - end - end - end, - get_loc_debuff_text = function(self) - if not G.GAME.blind.debuff_boss then - return localize("cry_debuff_obsidian_orb") - end - local loc_vars = nil - if G.GAME.blind.debuff_boss.name == "The Ox" then - loc_vars = { localize(G.GAME.current_round.most_played_poker_hand, "poker_hands") } - end - local loc_target = - localize({ type = "raw_descriptions", key = G.GAME.blind.debuff_boss.key, set = "Blind", vars = loc_vars }) - local loc_debuff_text = "" - for k, v in ipairs(loc_target) do - loc_debuff_text = loc_debuff_text .. v .. (k <= #loc_target and " " or "") - end - local disp_text = (G.GAME.blind.debuff_boss.name == "The Wheel" and G.GAME.probabilities.normal or "") - .. loc_debuff_text - if (G.GAME.blind.debuff_boss.name == "The Mouth") and G.GAME.blind.only_hand then - disp_text = disp_text .. " [" .. localize(G.GAME.blind.only_hand, "poker_hands") .. "]" - end - 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 nostalgia_sprites = { - object_type = "Atlas", - key = "nostalgia", - atlas_table = "ANIMATION_ATLAS", - path = "bl_nostalgia.png", - px = 34, - py = 34, - frames = 21, -} - -local items_togo = { - oldox, - oldhouse, - oldarm, - oldfish, - oldmanacle, - oldserpent, - oldpillar, - oldflint, - oldmark, - tax, - trick, - joke, - hammer, - magic, - box, - windmill, - striker, - shackle, - pin, - vermillion_virus, - 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 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) then - return - end - if - self.name ~= "cry-Obsidian Orb" - 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, -} +--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", + name = "cry-oldox", + key = "oldox", + pos = { x = 0, y = 0 }, + boss = { + min = 2, + max = 10, + }, + atlas = "nostalgia", + order = 4, + boss_colour = HEX("4f6367"), + modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + if to_big(hand_chips) ~= to_big(0) then + G.GAME.blind.triggered = true + return mult, to_big(0), true + end + return mult, to_big(0), false + end, +} +local oldhouse = { + object_type = "Blind", + name = "cry-oldhouse", + key = "oldhouse", + pos = { x = 0, y = 2 }, + boss = { + min = 3, + max = 10, + }, + atlas = "nostalgia", + order = 5, + boss_colour = HEX("4f6367"), + debuff_hand = function(self, cards, hand, handname, check) + if handname == "Full House" and not G.GAME.blind.disabled then + G.GAME.blind.triggered = true + return true + end + return false + end, + get_loc_debuff_text = function(self) + return localize("cry_debuff_oldhouse") + end, +} +local oldarm = { + object_type = "Blind", + name = "cry-oldarm", + key = "oldarm", + pos = { x = 0, y = 3 }, + boss = { + min = 3, + max = 10, + }, + atlas = "nostalgia", + order = 6, + boss_colour = HEX("4f6367"), + debuff_hand = function(self, cards, hand, handname, check) + if #cards > 4 and not G.GAME.blind.disabled then + G.GAME.blind.triggered = true + return true + end + return false + end, + get_loc_debuff_text = function(self) + return localize("cry_debuff_oldarm") + end, +} +local oldfish = { + object_type = "Blind", + name = "cry-oldfish", + key = "oldfish", + pos = { x = 0, y = 4 }, + boss = { + min = 2, + max = 10, + }, + atlas = "nostalgia", + order = 7, + boss_colour = HEX("4f6367"), + modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + if to_big(mult) ~= to_big(1) then + G.GAME.blind.triggered = true + return to_big(1), hand_chips, true + end + return to_big(1), hand_chips, false + end, +} +local oldmanacle = { + object_type = "Blind", + name = "cry-oldmanacle", + key = "oldmanacle", + pos = { x = 0, y = 5 }, + boss = { + min = 1, + max = 10, + }, + atlas = "nostalgia", + order = 8, + boss_colour = HEX("4f6367"), + modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + if G.GAME.current_round.discards_left > 1 then + G.GAME.blind.triggered = true + return math.floor(mult / G.GAME.current_round.discards_left), hand_chips, true + end + return mult, hand_chips, false + end, +} +local oldserpent = { + object_type = "Blind", + name = "cry-oldserpent", + key = "oldserpent", + pos = { x = 0, y = 6 }, + boss = { + min = 5, + max = 10, + }, + atlas = "nostalgia", + order = 9, + boss_colour = HEX("4f6367"), + modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + if G.GAME.hands[text].level > 1 then + G.GAME.blind.triggered = true + return math.floor(mult / G.GAME.hands[text].level), hand_chips, true + end + return mult, hand_chips, false + end, +} +local oldpillar = { + object_type = "Blind", + name = "cry-oldpillar", + key = "oldpillar", + pos = { x = 0, y = 7 }, + boss = { + min = 3, + max = 10, + }, + atlas = "nostalgia", + order = 10, + boss_colour = HEX("4f6367"), + debuff_hand = function(self, cards, hand, handname, check) + if handname == "Straight" and not G.GAME.blind.disabled then + G.GAME.blind.triggered = true + return true + end + return false + end, + get_loc_debuff_text = function(self) + return localize("cry_debuff_oldpillar") + end, +} +local oldflint = { + object_type = "Blind", + name = "cry-oldflint", + key = "oldflint", + pos = { x = 0, y = 8 }, + boss = { + min = 3, + max = 10, + }, + atlas = "nostalgia", + order = 11, + boss_colour = HEX("4f6367"), + debuff_hand = function(self, cards, hand, handname, check) + if handname == "Flush" and not G.GAME.blind.disabled then + G.GAME.blind.triggered = true + return true + end + return false + end, + get_loc_debuff_text = function(self) + return localize("cry_debuff_oldflint") + end, +} +local oldmark = { + object_type = "Blind", + name = "cry-oldmark", + key = "oldmark", + pos = { x = 0, y = 1 }, + boss = { + min = 4, + max = 10, + }, + atlas = "nostalgia", + order = 12, + boss_colour = HEX("4f6367"), + debuff_hand = function(self, cards, hand, handname, check) + if next(hand["Pair"]) then + G.GAME.blind.triggered = true + return true + end + return false + end, + get_loc_debuff_text = function(self) + return localize("cry_debuff_oldmark") + end, +} +local tax = { + object_type = "Blind", + name = "cry-Tax", + key = "tax", + pos = { x = 0, y = 0 }, + boss = { + min = 1, + max = 10, + }, + atlas = "blinds", + order = 2, + boss_colour = HEX("40ff40"), + cry_cap_score = function(self, score) + return math.floor(math.min(0.4 * G.GAME.blind.chips, score) + 0.5) + end, + in_pool = function() + return G.GAME.round_resets.hands >= 3 + end, +} +local box = { + object_type = "Blind", + name = "cry-box", + key = "box", + pos = { x = 0, y = 8 }, + boss = { + min = 1, + max = 10, + }, + atlas = "blinds", + order = 13, + boss_colour = HEX("883a3b"), + recalc_debuff = function(self, card, from_blind) + if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 1 then + return true + end + return false + end, +} +local clock = { + object_type = "Blind", + name = "cry-Clock", + key = "clock", + pos = { x = 0, y = 1 }, + mult = 0, + boss = { + min = 1, + max = 10, + }, + config = { + tw_bl = { + ignore = true, + }, + }, + atlas = "blinds", + order = 3, + boss_colour = HEX("853455"), + defeat = function(self, silent) + G.P_BLINDS.bl_cry_clock.mult = 0 + end, + disable = function(self, silent) + G.GAME.blind.chips = get_blind_amount(G.GAME.round_resets.ante) * G.GAME.starting_params.ante_scaling * 2 + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + end, + cry_ante_base_mod = function(self, dt) + return 0.1 * dt / 3 + end, +} +local trick = { + object_type = "Blind", + name = "cry-Trick", + key = "trick", + pos = { x = 0, y = 3 }, + boss = { + min = 1, + max = 10, + }, + atlas = "blinds", + order = 14, + boss_colour = HEX("babd24"), + cry_after_play = function(self) + --flip and shuffle all cards held in hand + for k, v in ipairs(G.hand.cards) do + if v.facing == "front" then + 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 })) + delay(0.15) + 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 })) + delay(0.5) + return true end })) + end--]] + end, +} + +local joke = { + object_type = "Blind", + name = "cry-Joke", + key = "joke", + pos = { x = 0, y = 4 }, + boss = { + min = 1, + max = 10, + }, + atlas = "blinds", + order = 15, + boss_colour = HEX("00ffaa"), + loc_vars = function(self, info_queue, card) + return { vars = { G.GAME.win_ante or 8 } } + 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 + G.GAME.cry_ach_conditions.the_jokes_on_you_triggered = true + end + return G.GAME.win_ante - G.GAME.round_resets.ante % G.GAME.win_ante + end + return 1 + end, +} +local hammer = { + object_type = "Blind", + name = "cry-hammer", + key = "hammer", + pos = { x = 0, y = 9 }, + boss = { + min = 2, + max = 10, + }, + atlas = "blinds", + order = 19, + boss_colour = HEX("ffabd6"), + recalc_debuff = function(self, card, from_blind) + if card.area ~= G.jokers and not G.GAME.blind.disabled then + if + card.ability.effect ~= "Stone Card" + and ( + card.base.value == "3" + or card.base.value == "5" + or card.base.value == "7" + or card.base.value == "9" + or card.base.value == "Ace" + ) + then + return true + end + return false + end + end, +} +local magic = { + object_type = "Blind", + name = "cry-magic", + key = "magic", + pos = { x = 0, y = 12 }, + boss = { + min = 2, + max = 10, + }, + atlas = "blinds", + order = 20, + boss_colour = HEX("009eff"), + recalc_debuff = function(self, card, from_blind) + if card.area ~= G.jokers and not G.GAME.blind.disabled then + if + card.ability.effect ~= "Stone Card" + and ( + card.base.value == "2" + or card.base.value == "4" + or card.base.value == "6" + or card.base.value == "8" + or card.base.value == "10" + ) + then + return true + end + return false + end + end, +} +local windmill = { + object_type = "Blind", + name = "cry-windmill", + key = "windmill", + pos = { x = 0, y = 10 }, + boss = { + min = 4, + max = 10, + }, + atlas = "blinds", + order = 16, + boss_colour = HEX("f70000"), + recalc_debuff = function(self, card, from_blind) + if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 2 then + return true + end + return false + end, +} +local striker = { + object_type = "Blind", + name = "cry-striker", + key = "striker", + pos = { x = 0, y = 13 }, + boss = { + min = 4, + max = 10, + }, + atlas = "blinds", + order = 1, + boss_colour = HEX("505e5c"), + recalc_debuff = function(self, card, from_blind) + if (card.area == G.jokers) and not G.GAME.blind.disabled and card.config.center.rarity == 3 then + return true + end + return false + end, +} +local shackle = { + object_type = "Blind", + name = "cry-shackle", + key = "shackle", + pos = { x = 0, y = 15 }, + boss = { + min = 1, + max = 10, + }, + atlas = "blinds", + order = 18, + boss_colour = HEX("010466"), + in_pool = function() + if not G.jokers 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 + 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 + return true + end + return false + end, +} +local pin = { + object_type = "Blind", + name = "cry-pin", + key = "pin", + pos = { x = 0, y = 14 }, + boss = { + min = 4, + max = 10, + }, + atlas = "blinds", + order = 17, + boss_colour = HEX("452703"), + in_pool = function() + if not G.jokers 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 + 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) + then + return true + end + return false + end, +} + +--It seems Showdown blind order is seperate from normal blind collection order? convenient for me at least + +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 = { + object_type = "Blind", + name = "cry-Lavender Loop", + key = "lavender_loop", + pos = { x = 0, y = 2 }, + mult = 1, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 2, + boss_colour = HEX("ae00ff"), + set_blind = function(self, reset, silent) + G.GAME.cry_ach_conditions.patience_virtue_timer = 120 + end, + disable = function(self, silent) + G.GAME.blind.chips = get_blind_amount(G.GAME.round_resets.ante) * G.GAME.starting_params.ante_scaling * 2 + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + G.GAME.cry_ach_conditions.patience_virtue_earnable = false + G.GAME.cry_ach_conditions.patience_virtue_earnable = nil + end, + cry_round_base_mod = function(self, dt) + if + G.GAME.cry_ach_conditions.patience_virtue_timer > 0 + 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) + 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) + end, +} +local tornado = { + object_type = "Blind", + name = "cry-tornado", + key = "tornado", + pos = { x = 0, y = 16 }, + mult = 0.8, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 5, + boss_colour = HEX("3dd9ca"), + loc_vars = function(self) + return { vars = { "" .. ((G.GAME and 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) + 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 + end, + collection_loc_vars = function(self) + return { vars = { "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 2), 3 } } + end, + debuff_hand = function(self, cards, hand, handname, check) + if + not check + and (pseudorandom(pseudoseed("tornado")) < ((G.GAME.probabilities.normal * 2) / 3)) + 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 + return false + end + + G.GAME.blind.triggered = true + return true + end + return false + end, +} +--todo: disable get_local_debuff_text for this +local vermillion_virus = { + object_type = "Blind", + name = "cry-Vermillion Virus", + key = "vermillion_virus", + pos = { x = 0, y = 5 }, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 1, + boss_colour = HEX("f65d34"), + cry_before_play = function(self) + if G.jokers.cards[1] then + 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}) + else + _card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "cry_vermillion_virus_gen") + G.jokers.cards[idx]:remove_from_deck() + _card:add_to_deck() + _card:start_materialize() + G.jokers.cards[idx] = _card + _card:set_card_area(G.jokers) + G.jokers:set_ranks() + G.jokers:align_cards() + end + end + end + end, +} + +local sapphire_stamp = { + object_type = "Blind", + name = "cry-Sapphire Stamp", + key = "sapphire_stamp", + pos = { x = 0, y = 6 }, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 3, + boss_colour = HEX("4057d6"), + cry_before_play = function(self) + local idx = pseudorandom(pseudoseed("cry_sapphire_stamp"), 1, #G.hand.highlighted) + G.hand:remove_from_highlighted(G.hand.highlighted[idx]) + end, + set_blind = function(self, reset, silent) + if not reset then + G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + 1 + end + end, + defeat = function(self, silent) + if not G.GAME.blind.disabled then + G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - 1 + end + end, + disable = function(self, silent) + if not G.GAME.blind.disabled then + G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - 1 + end + end, +} + +local obsidian_orb = { + object_type = "Blind", + name = "cry-Obsidian Orb", + key = "obsidian_orb", + pos = { x = 0, y = 7 }, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 4, + boss_colour = HEX("290759"), + set_blind = function(self, reset, silent) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.set_blind then + s:set_blind(reset, silent) + end + if s.name == "The Eye" and not reset then + G.GAME.blind.hands = { + ["Flush Five"] = false, + ["Flush House"] = false, + ["Five of a Kind"] = false, + ["Straight Flush"] = false, + ["Four of a Kind"] = false, + ["Full House"] = false, + ["Flush"] = false, + ["Straight"] = false, + ["Three of a Kind"] = false, + ["Two Pair"] = false, + ["Pair"] = false, + ["High Card"] = false, + } + end + if s.name == "The Mouth" and not reset then + G.GAME.blind.only_hand = false + end + if s.name == "The Fish" and not reset then + G.GAME.blind.prepped = nil + end + if s.name == "The Water" and not reset then + G.GAME.blind.discards_sub = G.GAME.current_round.discards_left + ease_discard(-G.GAME.blind.discards_sub) + end + if s.name == "The Needle" and not reset then + G.GAME.blind.hands_sub = G.GAME.round_resets.hands - 1 + ease_hands_played(-G.GAME.blind.hands_sub) + end + if s.name == "The Manacle" and not reset then + G.hand:change_size(-1) + end + if s.name == "Amber Acorn" and not reset and #G.jokers.cards > 0 then + G.jokers:unhighlight_all() + for k, v in ipairs(G.jokers.cards) do + v:flip() + end + if #G.jokers.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.jokers:shuffle("aajk") + play_sound("cardSlide1", 0.85) + return true + end, + })) + delay(0.15) + G.E_MANAGER:add_event(Event({ + func = function() + G.jokers:shuffle("aajk") + play_sound("cardSlide1", 1.15) + return true + end, + })) + delay(0.15) + G.E_MANAGER:add_event(Event({ + func = function() + G.jokers:shuffle("aajk") + play_sound("cardSlide1", 1) + return true + end, + })) + delay(0.5) + return true + end, + })) + end + end + + --add new debuffs + for _, v in ipairs(G.playing_cards) do + self:debuff_card(v) + end + for _, v in ipairs(G.jokers.cards) do + if not reset then + self:debuff_card(v, true) + end + end + end + end, + defeat = function(self, silent) + for k, _ in pairs(G.GAME.defeated_blinds) do + if G.P_BLINDS[k].defeat then + G.P_BLINDS[k]:defeat(silent) + end + if G.P_BLINDS[k].name == "The Manacle" and not self.disabled then + G.hand:change_size(1) + end + end + end, + disable = function(self, silent) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.disable then + s:disable(silent) + end + if s.name == "The Water" then + ease_discard(G.GAME.blind.discards_sub) + end + if s.name == "The Wheel" or s.name == "The House" or s.name == "The Mark" or s.name == "The Fish" then + for i = 1, #G.hand.cards do + if G.hand.cards[i].facing == "back" then + G.hand.cards[i]:flip() + end + end + for k, v in pairs(G.playing_cards) do + v.ability.wheel_flipped = nil + end + end + if s.name == "The Needle" then + ease_hands_played(G.GAME.blind.hands_sub) + end + if s.name == "The Wall" then + G.GAME.blind.chips = G.GAME.blind.chips / 2 + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + end + if s.name == "Cerulean Bell" then + for k, v in ipairs(G.playing_cards) do + v.ability.forced_selection = nil + end + end + if s.name == "The Manacle" then + G.hand:change_size(1) + + G.FUNCS.draw_from_deck_to_hand(1) + end + if s.name == "Violet Vessel" then + G.GAME.blind.chips = G.GAME.blind.chips / 3 + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + end + end + end, + press_play = function(self) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.press_play then + s:press_play() + end + if s.name == "The Hook" then + G.E_MANAGER:add_event(Event({ + func = function() + local any_selected = nil + local _cards = {} + for k, v in ipairs(G.hand.cards) do + _cards[#_cards + 1] = v + end + for i = 1, 2 do + if G.hand.cards[i] then + local selected_card, card_key = pseudorandom_element(_cards, pseudoseed("ObsidianOrb")) + G.hand:add_to_highlighted(selected_card, true) + table.remove(_cards, card_key) + any_selected = true + play_sound("card1", 1) + end + end + if any_selected then + G.FUNCS.discard_cards_from_highlighted(nil, true) + end + return true + end, + })) + G.GAME.blind.triggered = true + delay(0.7) + end + if s.name == "Crimson Heart" then + if G.jokers.cards[1] then + G.GAME.blind.triggered = true + G.GAME.blind.prepped = true + end + end + if s.name == "The Fish" then + G.GAME.blind.prepped = true + end + if s.name == "The Tooth" then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + for i = 1, #G.play.cards do + G.E_MANAGER:add_event(Event({ + func = function() + G.play.cards[i]:juice_up() + return true + end, + })) + ease_dollars(-1) + delay(0.23) + end + return true + end, + })) + G.GAME.blind.triggered = true + end + end + end, + modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) + local new_mult = mult + local new_chips = hand_chips + local trigger = false + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.modify_hand then + local this_trigger = false + new_mult, new_chips, this_trigger = s:modify_hand(cards, poker_hands, text, new_mult, new_chips) + trigger = trigger or this_trigger + end + if s.name == "The Flint" then + G.GAME.blind.triggered = true + new_mult = math.max(math.floor(new_mult * 0.5 + 0.5), 1) + new_chips = math.max(math.floor(new_chips * 0.5 + 0.5), 0) + trigger = true + end + end + return new_mult or mult, new_chips or hand_chips, trigger + end, + debuff_hand = function(self, cards, hand, handname, check) + G.GAME.blind.debuff_boss = nil + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.debuff_hand and s:debuff_hand(cards, hand, handname, check) then + G.GAME.blind.debuff_boss = s + return true + end + if s.debuff then + G.GAME.blind.triggered = false + if s.debuff.hand and next(hand[s.debuff.hand]) then + G.GAME.blind.triggered = true + G.GAME.blind.debuff_boss = s + return true + end + if s.debuff.h_size_ge and #cards < s.debuff.h_size_ge then + G.GAME.blind.triggered = true + G.GAME.blind.debuff_boss = s + return true + end + if s.debuff.h_size_le and #cards > s.debuff.h_size_le then + G.GAME.blind.triggered = true + G.GAME.blind.debuff_boss = s + return true + end + if s.name == "The Eye" then + if G.GAME.blind.hands[handname] then + G.GAME.blind.triggered = true + G.GAME.blind.debuff_boss = s + return true + end + if not check then + G.GAME.blind.hands[handname] = true + end + end + if s.name == "The Mouth" then + if s.only_hand and s.only_hand ~= handname then + G.GAME.blind.triggered = true + G.GAME.blind.debuff_boss = s + return true + end + if not check then + s.only_hand = handname + end + end + end + if s.name == "The Arm" then + G.GAME.blind.triggered = false + if G.GAME.hands[handname].level > 1 then + G.GAME.blind.triggered = true + if not check then + level_up_hand(G.GAME.blind.children.animatedSprite, handname, nil, -1) + G.GAME.blind:wiggle() + end + end + end + if s.name == "The Ox" then + G.GAME.blind.triggered = false + if handname == G.GAME.current_round.most_played_poker_hand then + G.GAME.blind.triggered = true + if not check then + ease_dollars(-G.GAME.dollars, true) + G.GAME.blind:wiggle() + end + end + end + end + return false + end, + drawn_to_hand = function(self) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.drawn_to_hand then + s:drawn_to_hand() + end + if s.name == "Cerulean Bell" then + local any_forced = nil + for k, v in ipairs(G.hand.cards) do + if v.ability.forced_selection then + any_forced = true + end + end + if not any_forced then + G.hand:unhighlight_all() + local forced_card = pseudorandom_element(G.hand.cards, pseudoseed("ObsidianOrb")) + forced_card.ability.forced_selection = true + G.hand:add_to_highlighted(forced_card) + end + end + if s.name == "Crimson Heart" and G.GAME.blind.prepped and G.jokers.cards[1] then + local jokers = {} + for i = 1, #G.jokers.cards do + if not G.jokers.cards[i].debuff or #G.jokers.cards < 2 then + jokers[#jokers + 1] = G.jokers.cards[i] + end + G.jokers.cards[i]:set_debuff(false) + end + local _card = pseudorandom_element(jokers, pseudoseed("ObsidianOrb")) + if _card then + _card:set_debuff(true) + _card:juice_up() + G.GAME.blind:wiggle() + end + end + end + end, + stay_flipped = function(self, area, card) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.stay_flipped and s:stay_flipped(area, card) then + return true + end + if area == G.hand then + if + s.name == "The Wheel" + and pseudorandom(pseudoseed("ObsidianOrb")) < G.GAME.probabilities.normal / 7 + then + return true + end + if + s.name == "The House" + and G.GAME.current_round.hands_played == 0 + and G.GAME.current_round.discards_used == 0 + then + return true + end + if s.name == "The Mark" and card:is_face(true) then + return true + end + if s.name == "The Fish" and G.GAME.blind.prepped then + return true + end + end + end + end, + debuff_card = function(self, card, from_blind) + if card and type(card) == "table" and card.area then + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.debuff_card then + s:debuff_card(card, from_blind) + end + if s.debuff and not G.GAME.blind.disabled and card.area ~= G.jokers then + --this part is buggy for some reason + if s.debuff.suit and Card.is_suit(card, s.debuff.suit, true) then + card:set_debuff(true) + return + end + if s.debuff.is_face == "face" and Card.is_face(card, true) then + card:set_debuff(true) + return + end + if s.name == "The Pillar" and card.ability.played_this_ante then + card:set_debuff(true) + return + end + if s.debuff.value and s.debuff.value == card.base.value then + card:set_debuff(true) + return + end + if s.debuff.nominal and s.debuff.nominal == card.base.nominal then + card:set_debuff(true) + return + end + end + if s.name == "Crimson Heart" and not G.GAME.blind.disabled and card.area == G.jokers then + return + end + if s.name == "Verdant Leaf" and not G.GAME.blind.disabled and card.area ~= G.jokers then + card:set_debuff(true) + return + end + end + end + end, + cry_ante_base_mod = function(self, dt) + local mod = 0 + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_ante_base_mod then + mod = mod + s:cry_ante_base_mod(dt) + end + end + return mod + end, + cry_round_base_mod = function(self, dt) + local mod = 1 + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_round_base_mod then + mod = mod * s:cry_round_base_mod(dt) + end + end + return mod + end, + cry_cap_score = function(self, score) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_cap_score then + score = s:cry_cap_score(score) + end + end + return score + end, + cry_calc_ante_gain = function(self) + local ante = 1 + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_calc_ante_gain then + ante = math.max(ante, s:cry_calc_ante_gain()) + end + end + return ante + end, + cry_before_play = function(self) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_before_play then + s:cry_before_play() + end + end + end, + cry_after_play = function(self) + for k, _ in pairs(G.GAME.defeated_blinds) do + s = G.P_BLINDS[k] + if s.cry_after_play then + s:cry_after_play() + end + end + end, + get_loc_debuff_text = function(self) + if not G.GAME.blind.debuff_boss then + return localize("cry_debuff_obsidian_orb") + end + local loc_vars = nil + if G.GAME.blind.debuff_boss.name == "The Ox" then + loc_vars = { localize(G.GAME.current_round.most_played_poker_hand, "poker_hands") } + end + local loc_target = + localize({ type = "raw_descriptions", key = G.GAME.blind.debuff_boss.key, set = "Blind", vars = loc_vars }) + local loc_debuff_text = "" + for k, v in ipairs(loc_target) do + loc_debuff_text = loc_debuff_text .. v .. (k <= #loc_target and " " or "") + end + local disp_text = (G.GAME.blind.debuff_boss.name == "The Wheel" and G.GAME.probabilities.normal or "") + .. loc_debuff_text + if (G.GAME.blind.debuff_boss.name == "The Mouth") and G.GAME.blind.only_hand then + disp_text = disp_text .. " [" .. localize(G.GAME.blind.only_hand, "poker_hands") .. "]" + end + 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 nostalgia_sprites = { + object_type = "Atlas", + key = "nostalgia", + atlas_table = "ANIMATION_ATLAS", + path = "bl_nostalgia.png", + px = 34, + py = 34, + frames = 21, +} + +local items_togo = { + oldox, + oldhouse, + oldarm, + oldfish, + oldmanacle, + oldserpent, + oldpillar, + oldflint, + oldmark, + tax, + trick, + joke, + hammer, + magic, + box, + windmill, + striker, + shackle, + pin, + vermillion_virus, + 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 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) then + return + end + if + self.name ~= "cry-Obsidian Orb" + 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, +} diff --git a/Items/Challenges.lua b/old/Items/Challenges.lua similarity index 100% rename from Items/Challenges.lua rename to old/Items/Challenges.lua diff --git a/Items/CodeCards.lua b/old/Items/CodeCards.lua similarity index 96% rename from Items/CodeCards.lua rename to old/Items/CodeCards.lua index 67e0e860c..9459faff2 100644 --- a/Items/CodeCards.lua +++ b/old/Items/CodeCards.lua @@ -1,4120 +1,4120 @@ ---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 = "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(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 } }) - 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) - G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult - end, - bulk_use = function(self, card, area, copier, number) - G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult ^ number - 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 = 5, 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 - 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 hook = { - object_type = "Consumable", - set = "Code", - name = "cry-Hook", - key = "hook", - pos = { - x = 0, - y = 4, - }, - config = {}, - cost = 4, - atlas = "code", - order = 14, - 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 = { 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 = { 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 - elseif rarity == "cry_epic" then - rarity = 1 - end - 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 - local a = nil - local c = nil - if G.shop_jokers.highlighted[1] then - 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 - 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, - pseudorandom_element(Cryptid.food, pseudoseed("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, - use = function(self, card, area, copier) - local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, nil, "cry_machinecode") - card:set_edition({ cry_glitched = true }) - card:add_to_deck() - G.consumeables:emplace(card) - 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 - 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) - 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, - 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(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, -} - ---todo: smods stickers (i know right now this won't work for flickering/possessed) -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 - 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 - 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 - 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.jokers.highlighted - + #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.jokers.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.jokers.highlighted[1]) - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - 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]) - card:add_to_deck() - if Incantation then - card_copy: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.jokers.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.jokers.highlighted[1]) - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - 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]) - card:add_to_deck() - if Incantation then - card_copy:setQty(1) - end - G.consumeables:emplace(card) - return true - end, - })) - end - end - 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 = { 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" - } - }, -} - -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 } }, - rarity = "cry_epic", - cost = 14, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { - vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), (center and center.ability.extra.odds or 2) }, - } - 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") < G.GAME.probabilities.normal / 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" }, - { "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" }, - ["Pair"] = { "pair", "2oak" }, - ["Two Pair"] = { "two pair", "2 pair" }, - ["Three of a Kind"] = { "three of a kind", "3 of a kind", "3oak", "trips" }, - ["Straight"] = { "straight" }, - ["Flush"] = { "flush" }, - ["Full House"] = { "full house", "full" }, - ["Four of a Kind"] = { "four of a kind", "4 of a kind", "4oak" }, - ["Straight Flush"] = { "straight flush", "strush", "slush", "slushie", "slushy" }, - ["Five of a Kind"] = { "five of a kind", "5 of a kind", "5oak" }, - ["Flush House"] = { "flush house", "flouse" }, - ["Flush Five"] = { "flush five", "fish" }, - } - 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" }, - 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 - check_for_unlock({ type = "cheat_used" }) - for i = #G.hand.highlighted, 1, -1 do - local card = G.hand.highlighted[i] - if card.ability.name == "Glass Card" then - card:shatter() - else - card:start_dissolve(nil, i == #G.hand.highlighted) - 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", - 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", - 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].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" then - local card = create_card("Consumeable", G.consumeables, nil, nil, nil, nil, current_card) - card:add_to_deck() - G.consumeables:emplace(card) - created = true - end - if G.P_CENTERS[current_card].set == "Voucher" 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 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] 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] 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 -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() - 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) - 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, -} -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] = encoded - 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 - 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.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 - results[G.GAME.cry_exploit_override] = results["High Card"] -- i would do results.top here but it just doesn't work, if someone could get that working that would be great - 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 - 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) - 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) - 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 - end, - items = code_cards, -} +--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 = "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(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 } }) + 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) + G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult + end, + bulk_use = function(self, card, area, copier, number) + G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult ^ number + 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 = 5, 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 + 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 hook = { + object_type = "Consumable", + set = "Code", + name = "cry-Hook", + key = "hook", + pos = { + x = 0, + y = 4, + }, + config = {}, + cost = 4, + atlas = "code", + order = 14, + 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 = { 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 = { 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 + elseif rarity == "cry_epic" then + rarity = 1 + end + 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 + local a = nil + local c = nil + if G.shop_jokers.highlighted[1] then + 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 + 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, + pseudorandom_element(Cryptid.food, pseudoseed("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, + use = function(self, card, area, copier) + local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, nil, "cry_machinecode") + card:set_edition({ cry_glitched = true }) + card:add_to_deck() + G.consumeables:emplace(card) + 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 + 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) + 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, + 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(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, +} + +--todo: smods stickers (i know right now this won't work for flickering/possessed) +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 + 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 + 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 + 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.jokers.highlighted + + #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.jokers.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.jokers.highlighted[1]) + card:add_to_deck() + G.jokers:emplace(card) + return true + end, + })) + 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]) + card:add_to_deck() + if Incantation then + card_copy: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.jokers.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.jokers.highlighted[1]) + card:add_to_deck() + G.jokers:emplace(card) + return true + end, + })) + 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]) + card:add_to_deck() + if Incantation then + card_copy:setQty(1) + end + G.consumeables:emplace(card) + return true + end, + })) + end + end + 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 = { 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" + } + }, +} + +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 } }, + rarity = "cry_epic", + cost = 14, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { + vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), (center and center.ability.extra.odds or 2) }, + } + 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") < G.GAME.probabilities.normal / 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" }, + { "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" }, + ["Pair"] = { "pair", "2oak" }, + ["Two Pair"] = { "two pair", "2 pair" }, + ["Three of a Kind"] = { "three of a kind", "3 of a kind", "3oak", "trips" }, + ["Straight"] = { "straight" }, + ["Flush"] = { "flush" }, + ["Full House"] = { "full house", "full" }, + ["Four of a Kind"] = { "four of a kind", "4 of a kind", "4oak" }, + ["Straight Flush"] = { "straight flush", "strush", "slush", "slushie", "slushy" }, + ["Five of a Kind"] = { "five of a kind", "5 of a kind", "5oak" }, + ["Flush House"] = { "flush house", "flouse" }, + ["Flush Five"] = { "flush five", "fish" }, + } + 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" }, + 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 + check_for_unlock({ type = "cheat_used" }) + for i = #G.hand.highlighted, 1, -1 do + local card = G.hand.highlighted[i] + if card.ability.name == "Glass Card" then + card:shatter() + else + card:start_dissolve(nil, i == #G.hand.highlighted) + 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", + 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", + 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].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" then + local card = create_card("Consumeable", G.consumeables, nil, nil, nil, nil, current_card) + card:add_to_deck() + G.consumeables:emplace(card) + created = true + end + if G.P_CENTERS[current_card].set == "Voucher" 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 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] 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] 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 +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() + 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) + 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, +} +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] = encoded + 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 + 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.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 + results[G.GAME.cry_exploit_override] = results["High Card"] -- i would do results.top here but it just doesn't work, if someone could get that working that would be great + 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 + 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) + 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) + 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 + end, + items = code_cards, +} diff --git a/Items/CryptidJokerDisplay.lua b/old/Items/CryptidJokerDisplay.lua similarity index 100% rename from Items/CryptidJokerDisplay.lua rename to old/Items/CryptidJokerDisplay.lua diff --git a/Items/Decks.lua b/old/Items/Decks.lua similarity index 96% rename from Items/Decks.lua rename to old/Items/Decks.lua index 93556e51b..59af41f1c 100644 --- a/Items/Decks.lua +++ b/old/Items/Decks.lua @@ -1,453 +1,453 @@ -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", - 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 G.jokers.cards[i].ability.name ~= "Ace Aequilibrium" then --Same Reason as Gemini/Multiply - 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", -} -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 = self.effect.config.cry_misprint_min - G.GAME.modifiers.cry_misprint_max = 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 - 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 - 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 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 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] 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, - }, -} +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", + 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 G.jokers.cards[i].ability.name ~= "Ace Aequilibrium" then --Same Reason as Gemini/Multiply + 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", +} +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 = self.effect.config.cry_misprint_min + G.GAME.modifiers.cry_misprint_max = 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 + 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 + 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 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 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] 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, + }, +} diff --git a/Items/Enhanced.lua b/old/Items/Enhanced.lua similarity index 100% rename from Items/Enhanced.lua rename to old/Items/Enhanced.lua diff --git a/Items/EpicJokers.lua b/old/Items/EpicJokers.lua similarity index 100% rename from Items/EpicJokers.lua rename to old/Items/EpicJokers.lua diff --git a/Items/Exotic.lua b/old/Items/Exotic.lua similarity index 100% rename from Items/Exotic.lua rename to old/Items/Exotic.lua diff --git a/Items/M.lua b/old/Items/M.lua similarity index 100% rename from Items/M.lua rename to old/Items/M.lua diff --git a/Items/Misc.lua b/old/Items/Misc.lua similarity index 100% rename from Items/Misc.lua rename to old/Items/Misc.lua diff --git a/Items/MiscJokers.lua b/old/Items/MiscJokers.lua similarity index 96% rename from Items/MiscJokers.lua rename to old/Items/MiscJokers.lua index 488972406..ede6ac942 100644 --- a/Items/MiscJokers.lua +++ b/old/Items/MiscJokers.lua @@ -1,6462 +1,6462 @@ -local dropshot = { - object_type = "Joker", - name = "cry-Dropshot", - key = "dropshot", - order = 3, - config = { extra = { Xmult_mod = 0.2, x_mult = 1 } }, - pos = { x = 5, y = 0 }, - rarity = 3, - cost = 8, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { - vars = { - center.ability.extra.Xmult_mod, - localize( - G.GAME.current_round.cry_dropshot_card and G.GAME.current_round.cry_dropshot_card.suit or "Spades", - "suits_singular" - ), - center.ability.extra.x_mult, - colours = { - G.C.SUITS[G.GAME.current_round.cry_dropshot_card and G.GAME.current_round.cry_dropshot_card.suit or "Spades"], - }, - }, - } - end, - calculate = function(self, card, context) - if context.cardarea == G.jokers and context.before and not context.blueprint then - cards = 0 - for k, v in ipairs(context.scoring_hand) do - v.cry_dropshot_incompat = true - end - for k, v in ipairs(context.full_hand) do - if not v.cry_dropshot_incompat and v:is_suit(G.GAME.current_round.cry_dropshot_card.suit) then - cards = cards + 1 - G.E_MANAGER:add_event(Event({ - func = function() - v:juice_up() - return true - end, - })) - end - end - for k, v in ipairs(context.scoring_hand) do - v.cry_dropshot_incompat = nil - end - if cards > 0 then - card.ability.extra.x_mult = card.ability.extra.x_mult + cards * card.ability.extra.Xmult_mod - 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 - 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 - end, - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Mystic Misclick" - }, - code = { - "Math" - } - }, -} -local happyhouse = { - object_type = "Joker", - name = "cry-happyhouse", - key = "happyhouse", - pos = { x = 2, y = 4 }, - order = 2, - config = { extra = { mult = 4, check = 0 } }, - immune_to_chemach = true, - pools = {["Meme"] = true}, - rarity = 2, - cost = 2, - blueprint_compat = true, - atlas = "atlastwo", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.mult, center.ability.extra.check } } - end, - calculate = function(self, card, context) - if - context.cardarea == G.jokers - and context.before - and not context.blueprint - and not context.retrigger_joker - then - card.ability.extra.check = card.ability.extra.check + 1 - if - card.ability.extra.check == 114 - and G.GAME.round_resets.ante < 8 - and not ( - G.GAME.selected_back.effect.center.key == "antimatter" - or G.GAME.selected_back.effect.center.key == "equilibrium" - ) - then --Yes, the cut off point is boss blind Ante 7. I'm evil >:3. - check_for_unlock({ type = "home_realtor" }) - end - if card.ability.extra.check < 114 then --Hardcoded, dont want misprint to mess with this hehe - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = card.ability.extra.check .. "/114", - colour = G.C.DARK_EDITION, - }), - } - 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 - return { - 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, - } - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local maximized = { - object_type = "Joker", - name = "cry-Maximized", - key = "maximized", - pos = { x = 5, y = 2 }, - rarity = 3, - order = 13, - cost = 11, - atlas = "atlastwo", - cry_credits = { - idea = { - "Gold" - }, - art = { - "Gold" - }, - code = { - "Math" - } - }, -} -local potofjokes = { - object_type = "Joker", - name = "cry-Pot of Jokes", - key = "pot_of_jokes", - config = { extra = { h_size = -2, h_mod = 1 } }, - pos = { x = 5, y = 0 }, - immune_to_chemach = true, - rarity = 3, - order = 104, - cost = 10, - perishable_compat = false, - atlas = "atlastwo", - loc_vars = function(self, info_queue, center) - return { - vars = { - center.ability.extra.h_size < 0 and center.ability.extra.h_size or "+" .. 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 - card.ability.extra.h_size = card.ability.extra.h_size + card.ability.extra.h_mod - G.hand:change_size(card.ability.extra.h_mod) - return { - message = localize({ type = "variable", key = "a_handsize", vars = { card.ability.extra.h_mod } }), - colour = G.C.FILTER, - card = card, - } - end - end, - add_to_deck = function(self, card, from_debuff) - G.hand:change_size(card.ability.extra.h_size) - end, - remove_from_deck = function(self, card, from_debuff) - G.hand:change_size(-card.ability.extra.h_size) - end, - cry_credits = { - idea = { - "Mjiojio" - }, - art = { - "Ein13" - }, - code = { - "Math" - } - }, -} -local queensgambit = { - object_type = "Joker", - name = "cry-Queen's Gambit", - key = "queens_gambit", - pos = { x = 1, y = 0 }, - rarity = 1, - order = 7, - cost = 7, - loc_vars = function(self, info_queue, center) - 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 = "atlastwo", - config = { extra = { type = "Straight Flush" } }, - calculate = function(self, card, context) - if context.destroying_card and not context.blueprint then - if - G.GAME.current_round.current_hand.handname == "Royal Flush" - and SMODS.Ranks[context.destroying_card.base.value].key == "Queen" - then - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_plus_joker"), colour = G.C.FILTER } - ) - G.E_MANAGER:add_event(Event({ - trigger = "after", - func = function() - local card = create_card("Joker", G.jokers, nil, 0.99, nil, nil, nil, "cry_gambit") - card:set_edition({ negative = true }) - card:add_to_deck() - G.jokers:emplace(card) - card:start_materialize() - return true - end, - })) - return nil, true - end - end - end, - cry_credits = { - idea = { - "Project666" - }, - art = { - "Ein13" - }, - code = { - --wonder what happened to this guy - "Thedrunkenbrick" - } - }, -} -local wee_fib = { - object_type = "Joker", - name = "cry-Wee Fibonacci", - key = "wee_fib", - config = { extra = { mult = 0, mult_mod = 3 } }, - pos = { x = 1, y = 5 }, - rarity = 3, - cost = 9, - order = 98, - blueprint_compat = true, - perishable_compat = false, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.mult, center.ability.extra.mult_mod } } - 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 - 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 - - return { - extra = { focus = card, message = localize("k_upgrade_ex") }, - card = card, - colour = G.C.MULT, - } - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), - mult_mod = card.ability.extra.mult, - colour = G.C.MULT, - } - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "LocalThunk" - }, - code = { - "Math" - } - }, -} -local whip = { - object_type = "Joker", - name = "cry-The WHIP", - key = "whip", - pos = { x = 5, y = 3 }, - config = { extra = { Xmult_mod = 0.5, x_mult = 1 } }, - rarity = 2, - cost = 8, - order = 15, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.x_mult } } - end, - 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 == "2" then - for j = 1, #context.full_hand do - if SMODS.Ranks[context.full_hand[j].base.value].key == "7" then - --Different suits - for k, v in pairs(SMODS.Suits) do - if - context.full_hand[i]:is_suit(k, nil, true) - and context.full_hand[j]:is_suit(k, nil, true) - then - return - end - end - 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({ - type = "variable", - key = "a_xmult", - vars = { card.ability.extra.x_mult }, - }), - } - ) - return nil, true - end - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - end, - cry_credits = { - idea = { - "Gold" - }, - art = { - "Ein13" - }, - code = { - "Math" - } - }, -} -local lucky_joker = { - object_type = "Joker", - name = "cry-Lucky Joker", - key = "lucky_joker", - config = { extra = { dollars = 5 } }, - pos = { x = 4, y = 3 }, - rarity = 1, - cost = 4, - order = 36, - blueprint_compat = true, - atlas = "atlasone", - enhancement_gate = "m_lucky", - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = G.P_CENTERS.m_lucky - return { vars = { center.ability.extra.dollars } } - end, - 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 })) - return { - dollars = card.ability.extra.dollars, - card = card, - } - end - end, - cry_credits = { - idea = { - "Ein13" - }, - art = { - "Jevonn" - }, - code = { - "Wilsonthewolf" - } - }, -} -local cursor = { - object_type = "Joker", - name = "cry-Cursor", - key = "cursor", - config = { extra = { chips = 0, chip_mod = 8 } }, - pos = { x = 4, y = 1 }, - rarity = 1, - cost = 5, - order = 5, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod } } - end, - 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, - } - ) - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - chip_mod = card.ability.extra.chips, - } - end - end, - cry_credits = { - idea = { - "Math" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local pickle = { - object_type = "Joker", - name = "cry-Pickle", - key = "pickle", - config = { extra = { tags = 3, tags_mod = 1 } }, - pos = { x = 3, y = 3 }, - immune_to_chemach = true, - rarity = 2, - order = 45, - cost = 6, - blueprint_compat = true, - eternal_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { vars = { math.min(20, center.ability.extra.tags), center.ability.extra.tags_mod } } - end, - calculate = function(self, card, context) - if context.skip_blind then - for i = 1, math.min(20, card.ability.extra.tags) do - local tag = Tag(get_next_tag_key("cry_pickle")) - if tag.name == "Orbital Tag" 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 - tag.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed("cry_pickle_orbital")) - end - if tag.name == "Boss Tag" then - i = i - 1 --skip these, as they can cause bugs with pack opening from other tags - else - 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, - } - ) - 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, - } - ) - return nil, true - 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 = { - "5381" - }, - art = { - "Mystic Misclick" - }, - code = { - "Math" - } - }, -} -local cube = { - object_type = "Joker", - name = "cry-Cube", - key = "cube", - config = { extra = { chips = 6 } }, - pos = { x = 5, y = 4 }, - rarity = 1, - order = 11, - cost = -27, - blueprint_compat = true, - atlas = "atlasone", - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - chip_mod = card.ability.extra.chips, - } - end - end, - cry_credits = { - idea = { - "Ein13", "Math" - }, - art = { - "Ein13" - }, - code = { - "Math" - } - }, -} -local triplet_rhythm = { - object_type = "Joker", - name = "cry-Triplet Rhythm", - key = "triplet_rhythm", - config = { extra = { Xmult = 3 } }, - pos = { x = 0, y = 4 }, - rarity = 1, - order = 10, - cost = 6, - blueprint_compat = true, - atlas = "atlastwo", - loc_vars = function(self, info_queue, center) - 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 - local threes = 0 - for i = 1, #context.scoring_hand do - if SMODS.Ranks[context.scoring_hand[i].base.value].key == "3" then - threes = threes + 1 - end - end - if threes == 3 then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), - Xmult_mod = card.ability.extra.Xmult, - } - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Math" - } - }, -} -local booster = { - object_type = "Joker", - name = "cry-Booster Joker", - key = "booster", - config = { extra = { booster_slots = 1 } }, - pos = { x = 2, y = 0 }, - order = 34, - immune_to_chemach = true, - rarity = 2, - cost = 6, - blueprint_compat = false, - atlas = "atlastwo", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.booster_slots } } - end, - add_to_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 + 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 - card.ability.extra.booster_slots - end, - cry_credits = { - idea = { - "Ein13" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local chili_pepper = { - object_type = "Joker", - name = "cry-Chili Pepper", - key = "chili_pepper", - config = { extra = { Xmult = 1, Xmult_mod = 0.5, rounds_remaining = 8 } }, - pos = { x = 0, y = 1 }, - rarity = 2, - cost = 6, - order = 48, - blueprint_compat = true, - eternal_compat = false, - perishable_compat = false, - atlas = "atlastwo", - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), - Xmult_mod = card.ability.extra.Xmult, - } - 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.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod - card.ability.extra.rounds_remaining = card.ability.extra.rounds_remaining - 1 - if card.ability.extra.rounds_remaining > 0 then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), - 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 = { - "Mystic Misclick" - }, - art = { - "Mystic Misclick" - }, - code = { - "Math" - } - }, -} -local compound_interest = { - object_type = "Joker", - name = "cry-Compound Interest", - key = "compound_interest", - config = { extra = { percent_mod = 3, percent = 12 } }, - pos = { x = 3, y = 2 }, - rarity = 3, - order = 9, - cost = 10, - perishable_compat = false, - atlas = "atlastwo", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.percent, center.ability.extra.percent_mod } } - end, - calc_dollar_bonus = function(self, card) - 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 - return bonus - end - end, - cry_credits = { - idea = { - "Mjiojio" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Math" - } - }, -} -local big_cube = { - object_type = "Joker", - name = "cry-Big Cube", - key = "big_cube", - joker_gate = "cry-Cube", - config = { extra = { x_chips = 6 } }, - pos = { x = 4, y = 4 }, - rarity = 1, - order = 105, - cost = 27, - blueprint_compat = true, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - 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 - return { - message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), - Xchip_mod = card.ability.extra.x_chips, - colour = G.C.CHIPS, - } - end - end, - cry_credits = { - idea = { - "Mystick Myclick" - }, - art = { - "AlexZGreat" - }, - code = { - "Math" - } - }, -} -local eternalflame = { - object_type = "Joker", - name = "cry-eternalflame", - key = "eternalflame", - pos = { x = 0, y = 4 }, - config = { extra = { extra = 0.1, 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 } } - 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 - 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 - card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra - 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, - cry_credits = { - idea = { - "Dovahkiin1307" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local nice = { - object_type = "Joker", - name = "cry-Nice", - key = "nice", - config = { extra = { chips = 420, sixcount = 0, ninecount = 0 } }, - pos = { x = 2, y = 3 }, - pools = {["Meme"] = true}, - rarity = 3, - cost = 6.9, - order = 84, - atlas = "atlasone", - blueprint_compat = true, - 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 context.before and not context.after then - card.ability.extra.sixcount = 0 - card.ability.extra.ninecount = 0 - for i, v in pairs(context.full_hand) do - if v:get_id() == 6 then - card.ability.extra.sixcount = card.ability.extra.sixcount + 1 - elseif v:get_id() == 9 then - 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 - 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 } }), - chip_mod = card.ability.extra.chips or 0, - } - end - end - end, - cry_credits = { - idea = { - "AlexZGreat" - }, - art = { - "Jevonn" - }, - code = { - "AlexZGreat" - } - }, -} -local seal_the_deal = { - object_type = "Joker", - name = "cry-Seal The Deal", - key = "seal_the_deal", - config = { extra = { x_chips = 6 } }, - pos = { x = 2, y = 4 }, - rarity = 2, - cost = 5, - order = 101, - atlas = "atlasone", - calculate = function(self, card, context) - if context.individual and context.cardarea == G.play then - if G.GAME.current_round.hands_left == 0 then - G.E_MANAGER:add_event(Event({ - func = function() - local seal_type = pseudorandom(pseudoseed("seal_the_deal")) - if seal_type > 0.75 then - context.other_card:set_seal("Red", true) - elseif seal_type > 0.5 then - context.other_card:set_seal("Blue", true) - elseif seal_type > 0.25 then - context.other_card:set_seal("Gold", true) - else - context.other_card:set_seal("Purple", true) - end - card:juice_up(0.3, 0.4) - context.other_card:juice_up(0.3, 0.3) - play_sound("gold_seal", 1.2, 0.4) - return true - end, - })) - delay(0.5) - return nil, true - end - end - end, - cry_credits = { - idea = { - "Zak" - }, - art = { - "5381" - }, - code = { - "AlexZGreat" - } - }, -} -local chad = { - object_type = "Joker", - name = "cry-Chad", - key = "chad", - pos = { x = 0, y = 3 }, - order = 71, - config = { extra = { retriggers = 2 } }, - immune_to_chemach = true, - pools = {["Meme"] = true}, - rarity = 3, - cost = 10, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.retriggers } } - end, - atlas = "atlasone", - calculate = function(self, card, context) - if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then - if context.other_card == G.jokers.cards[1] then - return { - message = localize("k_again_ex"), - repetitions = card.ability.extra.retriggers, - card = card, - } - else - return nil, true - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "SDM0" - }, - code = { - "Math" - } - }, -} -local jimball = { - object_type = "Joker", - name = "cry-Jimball", - key = "jimball", - pos = { x = 0, y = 0 }, - order = 8, - config = { x_mult = 1, extra = 0.15, override_x_mult_check = true }, - pools = {["Meme"] = true}, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra, center.ability.x_mult } } - end, - rarity = 3, - cost = 9, - blueprint_compat = true, - perishable_compat = false, - calculate = function(self, card, context) - if context.before and not context.blueprint then - local reset = false - local play_more_than = (G.GAME.hands[context.scoring_name].played or 0) - for k, v in pairs(G.GAME.hands) do - if k ~= context.scoring_name and v.played >= play_more_than and v.visible then - reset = true - end - end - if reset then - if to_big(card.ability.x_mult) > to_big(1) then - card.ability.x_mult = 1 - return { - card = self, - message = localize("k_reset"), - } - end - else - card.ability.x_mult = card.ability.x_mult + card.ability.extra - return nil, true - end - end - end, - add_to_deck = function(self, card, from_debuff) - if not from_debuff then - create_cryptid_notif_overlay("jimball") - end - end, - atlas = "jimball", - cry_credits = { - idea = { - "Math" - }, - art = { - "Grazzy", "Zakosek Artworks" - }, - code = { - "Math" - } - }, -} -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", - path = "j_cry_jimball.png", - px = 71, - py = 95, -} -local sus = { - object_type = "Joker", - name = "cry-SUS", - key = "sus", - pos = { x = 1, y = 3 }, - pools = {["Meme"] = true}, - rarity = 3, - cost = 7, - order = 79, - blueprint_compat = true, - atlas = "atlasone", - calculate = function(self, card, context) - 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 not card.ability.used_round or card.ability.used_round ~= G.GAME.round then - card.ability.chosen_card = nil - end - local choosable_cards = {} - local has_impostor = false - for i = 1, #G.hand.cards do - if not G.hand.cards[i].murdered_by_impostor then - choosable_cards[#choosable_cards + 1] = G.hand.cards[i] - if is_impostor(G.hand.cards[i]) then - has_impostor = true - end - end - end - if has_impostor then - choosable_cards = {} - for i = 1, #G.hand.cards do - if not G.hand.cards[i].murdered_by_impostor and is_impostor(G.hand.cards[i]) then - choosable_cards[#choosable_cards + 1] = G.hand.cards[i] - end - end - end - card.ability.chosen_card = card.ability.chosen_card - or pseudorandom_element(choosable_cards, pseudoseed("cry_sus")) - if not card.ability.used_round or card.ability.used_round ~= G.GAME.round then - card.ability.used_round = G.GAME.round - local deletable_cards = {} - for k, v in pairs(G.hand.cards) do - if not v.ability.eternal and not is_impostor(v) then - deletable_cards[#deletable_cards + 1] = v - end - 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}) - end - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.75, - func = function() - for k, v in pairs(deletable_cards) do - if v ~= card.ability.chosen_card then - v.murdered_by_impostor = true - v:start_dissolve(nil, _first_dissolve) - _first_dissolve = true - end - end - return true - end, - })) - - end - end - if card.ability.chosen_card ~= nil then - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.4, - func = function() - card:juice_up(0.3, 0.4) - G.playing_card = (G.playing_card and G.playing_card + 1) or 1 - local _c = copy_card(card.ability.chosen_card, nil, nil, G.playing_card) - _c:start_materialize() - _c:add_to_deck() - G.deck.config.card_limit = G.deck.config.card_limit + 1 - table.insert(G.playing_cards, _c) - G.hand:emplace(_c) - playing_card_joker_effects({ _c }) - return true - end, - })) - return { message = localize("cry_sus_ex") } - end - end - end, - cry_credits = { - idea = { - "Math" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local fspinner = { - object_type = "Joker", - name = "cry-fspinner", - key = "fspinner", - pos = { x = 4, y = 0 }, - config = { extra = { chips = 0, chip_mod = 6 } }, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod } } - end, - rarity = 1, - cost = 6, - order = 77, - blueprint_compat = true, - perishable_compat = false, - atlas = "fspinner", - calculate = function(self, card, context) - if context.before and not context.blueprint then - local play_more_than = (G.GAME.hands[context.scoring_name].played or 0) - for k, v in pairs(G.GAME.hands) do - if k ~= context.scoring_name and v.played >= play_more_than and v.visible then - card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chip_mod - return { - message = localize("k_upgrade_ex"), - card = card, - } - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - chip_mod = card.ability.extra.chips, - } - end - end, - atlas = "atlasone", - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local luigi = { - object_type = "Joker", - name = "cry-luigi", - key = "luigi", - pos = { x = 0, y = 3 }, - soul_pos = { x = 1, y = 3 }, - config = { extra = { x_chips = 3 } }, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.x_chips } } - end, - rarity = 4, - cost = 20, - order = 86, - blueprint_compat = true, - calculate = function(self, card, context) - if context.other_joker and context.other_joker.ability.set == "Joker" 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_xchips", vars = { card.ability.extra.x_chips } }), - colour = G.C.CHIPS, - Xchip_mod = card.ability.extra.x_chips, - } - end - end, - atlas = "atlasthree", - cry_credits = { - idea = { - "Auto Watto" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Auto Watto" - } - }, -} -local waluigi = { - object_type = "Joker", - name = "cry-Waluigi", - key = "waluigi", - pos = { x = 0, y = 3 }, - soul_pos = { x = 1, y = 3 }, - config = { extra = { Xmult = 2.5 } }, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.Xmult } } - end, - rarity = 4, - cost = 20, - order = 87, - blueprint_compat = true, - calculate = function(self, card, context) - if context.other_joker and context.other_joker.ability.set == "Joker" 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 = { card.ability.extra.Xmult } }), - Xmult_mod = card.ability.extra.Xmult, - } - end - end, - atlas = "atlastwo", - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Math" - } - }, -} -local mario = { - object_type = "Joker", - name = "cry-mario", - key = "mario", - config = { extra = { retriggers = 2 } }, - pos = { x = 4, y = 3 }, - soul_pos = { x = 5, y = 3 }, - rarity = 4, - order = 85, - cost = 20, - blueprint_compat = true, - immune_to_chemach = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.retriggers } } - end, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then - return { - message = localize("k_again_ex"), - repetitions = card.ability.extra.retriggers, - card = card, - } - end - end, - cry_credits = { - idea = { - "Auto Watto" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Auto Watto" - } - }, -} -local wario = { - object_type = "Joker", - name = "cry-wario", - key = "wario", - order = 88, - pos = { x = 2, y = 3 }, - soul_pos = { x = 3, y = 3 }, - config = { extra = { money = 3 } }, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.money } } - 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 - end - end, - - rarity = 4, - cost = 20, - blueprint_compat = true, - atlas = "atlasthree", - cry_credits = { - idea = { - "Auto Watto" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Auto Watto" - } - }, -} -local krustytheclown = { - object_type = "Joker", - name = "cry-krustytheclown", - key = "krustytheclown", - pos = { x = 3, y = 4 }, - config = { extra = { extra = 0.02, x_mult = 1 } }, - pools = {["Meme"] = true}, - rarity = 2, - order = 31, - cost = 7, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - if context.cardarea == G.play and context.individual and not context.blueprint then - card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra - return { - extra = { focus = card, message = localize("k_upgrade_ex") }, - card = card, - colour = G.C.MULT, - } - end - end, - cry_credits = { - idea = { - "Izumi" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local blurred = { - object_type = "Joker", - name = "cry-blurred Joker", - key = "blurred", - pos = { x = 4, y = 4 }, - pools = {["Meme"] = true}, - config = { extra = 1 }, - rarity = 1, - cost = 4, - order = 51, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - 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 })) - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local gardenfork = { - object_type = "Joker", - name = "cry-gardenfork", - key = "gardenfork", - pos = { x = 0, y = 1 }, - config = { extra = { money = 7 } }, - rarity = 3, - cost = 7, - order = 66, - blueprint_compat = true, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.money } } - end, - 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 - for j = 1, #context.full_hand do - if SMODS.Ranks[context.full_hand[j].base.value].key == "7" then - ease_dollars(card.ability.extra.money) - return { message = "$" .. card.ability.extra.money, colour = G.C.MONEY } - end - end - end - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, -} -local lightupthenight = { - object_type = "Joker", - name = "cry-lightupthenight", - key = "lightupthenight", - config = { extra = { xmult = 1.5 } }, - pos = { x = 1, y = 1 }, - atlas = "atlasone", - rarity = 3, - cost = 7, - order = 67, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.xmult } } - 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 - return { - x_mult = card.ability.extra.xmult, - colour = G.C.RED, - card = card, - } - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, -} -local nosound = { - object_type = "Joker", - name = "cry-nosound", - key = "nosound", - config = { extra = { retriggers = 3 } }, - pos = { x = 2, y = 1 }, - atlas = "atlasone", - rarity = 3, - order = 68, - cost = 7, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.retriggers } } - end, - 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 - return { - message = localize("k_again_ex"), - repetitions = card.ability.extra.retriggers, - card = card, - } - end - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, -} -local antennastoheaven = { - object_type = "Joker", - name = "cry-antennastoheaven", - key = "antennastoheaven", - pos = { x = 3, y = 1 }, - config = { extra = { bonus = 0.1, x_chips = 1 } }, - rarity = 3, - cost = 7, - order = 69, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.bonus, center.ability.extra.x_chips } } - 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 - return { - 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 - card.ability.extra.x_chips = card.ability.extra.x_chips + card.ability.extra.bonus - return { - extra = { focus = card, message = localize("k_upgrade_ex") }, - card = card, - colour = G.C.CHIPS, - } - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, -} -local hunger = { - object_type = "Joker", - name = "cry-hunger", - key = "hunger", - config = { extra = { money = 3 } }, - pos = { x = 3, y = 0 }, - rarity = 2, - cost = 6, - order = 80, - blueprint_compat = true, - atlas = "atlastwo", - 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 - end, - cry_credits = { - idea = { - "Mjiojio" - }, - art = { - "AlexZGreat" - }, - code = { - "Jevonn" - } - }, -} -local weegaming = { - object_type = "Joker", - name = "cry-weegaming", - key = "weegaming", - order = 62, - config = { extra = { retriggers = 2 } }, - pos = { x = 3, y = 4 }, - atlas = "atlastwo", - rarity = 1, - cost = 5, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.retriggers } } - end, - 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 - return { - message = localize("k_again_ex"), - repetitions = card.ability.extra.retriggers, - card = card, - } - end - end - end - end, - cry_credits = { - idea = { - "Gold" - }, - art = { - "Mystic Misclick" - }, - code = { - "Jevonn" - } - }, -} -local redbloon = { - object_type = "Joker", - name = "cry-redbloon", - key = "redbloon", - config = { extra = { money = 20, rounds_remaining = 2 } }, - pos = { x = 5, y = 1 }, - immune_to_chemach = true, - rarity = 1, - cost = 4, - order = 97, - blueprint_compat = false, - eternal_compat = false, - perishable_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.money, center.ability.extra.rounds_remaining } } - end, - calculate = function(self, card, context) - 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 - ease_dollars(card.ability.extra.money) - 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 = "$" .. card.ability.extra.money, - colour = G.C.MONEY, - } - end - end - end, - cry_credits = { - idea = { - "Roguefort Cookie" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local apjoker = { - object_type = "Joker", - name = "cry-AP Joker", - key = "apjoker", - pos = { x = 2, y = 0 }, - config = { extra = { x_mult = 4 } }, - rarity = 2, - cost = 6, - order = 37, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasone", - loc_vars = function(self, info_queue, center) - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, -} -local maze = { - object_type = "Joker", - name = "cry-maze", - key = "maze", - pos = { x = 1, y = 1 }, - rarity = 1, - cost = 1, - order = 61, - 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 - end - end, - add_to_deck = function(self, card, from_debuff) - G.GAME.current_round.hands_played = 0 - G.GAME.current_round.discards_used = 0 - end, - cry_credits = { - idea = { - "zy-b-org" - }, - art = { - "Math" - }, - code = { - "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", - name = "cry-panopticon", - key = "panopticon", - pos = { x = 1, y = 4 }, - config = { - extra = {}, - }, - rarity = 1, - order = 47, - cost = 1, - atlas = "atlastwo", - calculate = function(self, card, context) - if context.before and not context.blueprint and not context.retrigger_joker then - if not G.GAME.cry_panop_juggle then - G.GAME.cry_panop_juggle = G.GAME.current_round.hands_left - end - G.GAME.current_round.hands_left = 0 - end - if context.after and not context.blueprint and not context.retrigger_joker then - if G.GAME.cry_panop_juggle then - G.GAME.current_round.hands_left = G.GAME.cry_panop_juggle - G.GAME.cry_panop_juggle = nil - end - end - end, - cry_credits = { - idea = { - "Samario" - }, - art = { - "Samario" - }, - code = { - "Samario", "Toneblock" - } - }, -} -local magnet = { - object_type = "Joker", - name = "cry-magnet", - key = "magnet", - pos = { x = 4, y = 0 }, - config = { extra = { money = 2, Xmoney = 5, slots = 4 } }, - rarity = 1, - cost = 6, - order = 96, - blueprint_compat = false, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.money, center.ability.extra.Xmoney, center.ability.extra.slots } } - end, - atlas = "atlastwo", - calc_dollar_bonus = function(self, card) - if #G.jokers.cards <= card.ability.extra.slots then - return card.ability.extra.money * card.ability.extra.Xmoney - else - return card.ability.extra.money - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local unjust_dagger = { - object_type = "Joker", - name = "cry-Unjust Dagger", - key = "unjust_dagger", - pos = { x = 3, y = 0 }, - config = { extra = { x_mult = 1 } }, - rarity = 2, - cost = 8, - order = 102, - perishable_compat = false, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.x_mult } } - end, - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - local my_pos = nil - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then - my_pos = i - break - end - end - if - context.setting_blind - and not (context.blueprint_card or self).getting_sliced - and my_pos - and G.jokers.cards[my_pos - 1] - and not G.jokers.cards[my_pos - 1].ability.eternal - and not G.jokers.cards[my_pos - 1].getting_sliced - then - local sliced_card = G.jokers.cards[my_pos - 1] - sliced_card.getting_sliced = true - if sliced_card.config.center.rarity == "cry_exotic" then - check_for_unlock({ type = "what_have_you_done" }) - end - G.GAME.joker_buffer = G.GAME.joker_buffer - 1 - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.joker_buffer = 0 - card.ability.extra.x_mult = card.ability.extra.x_mult + sliced_card.sell_cost * 0.2 - card:juice_up(0.8, 0.8) - sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) - play_sound("slice1", 0.96 + math.random() * 0.08) - 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, - } - ) - return nil, true - end - end, - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Mystic Misclick" - }, - code = { - "Mystic Misclick" - } - }, -} -local monkey_dagger = { - object_type = "Joker", - name = "cry-Monkey Dagger", - key = "monkey_dagger", - pos = { x = 4, y = 3 }, - config = { extra = { chips = 0 } }, - rarity = 2, - cost = 6, - order = 49, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.chips } } - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - chip_mod = card.ability.extra.chips, - } - end - local my_pos = nil - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then - my_pos = i - break - end - end - if - context.setting_blind - and not (context.blueprint_card or self).getting_sliced - and my_pos - and G.jokers.cards[my_pos - 1] - and not G.jokers.cards[my_pos - 1].ability.eternal - and not G.jokers.cards[my_pos - 1].getting_sliced - then - local sliced_card = G.jokers.cards[my_pos - 1] - sliced_card.getting_sliced = true - if sliced_card.config.center.rarity == "cry_exotic" then - check_for_unlock({ type = "what_have_you_done" }) - end - G.GAME.joker_buffer = G.GAME.joker_buffer - 1 - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.joker_buffer = 0 - card.ability.extra.chips = card.ability.extra.chips + sliced_card.sell_cost * 10 - card:juice_up(0.8, 0.8) - sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) - play_sound("slice1", 0.96 + math.random() * 0.08) - 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, - } - ) - return nil, true - end - end, - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Mystic Misclick" - }, - code = { - "Mystic Misclick" - } - }, -} -local pirate_dagger = { - object_type = "Joker", - name = "cry-Pirate Dagger", - key = "pirate_dagger", - pos = { x = 3, y = 3 }, - config = { extra = { x_chips = 1 } }, - rarity = 2, - cost = 8, - order = 103, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.x_chips } } - 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 - return { - message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), - Xchip_mod = card.ability.extra.x_chips, - } - end - local my_pos = nil - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then - my_pos = i - break - end - end - if - context.setting_blind - and not (context.blueprint_card or self).getting_sliced - and my_pos - and G.jokers.cards[my_pos + 1] - and not G.jokers.cards[my_pos + 1].ability.eternal - and not G.jokers.cards[my_pos + 1].getting_sliced - then - local sliced_card = G.jokers.cards[my_pos + 1] - sliced_card.getting_sliced = true - if sliced_card.config.center.rarity == "cry_exotic" then - check_for_unlock({ type = "what_have_you_done" }) - end - G.GAME.joker_buffer = G.GAME.joker_buffer - 1 - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.joker_buffer = 0 - card.ability.extra.x_chips = card.ability.extra.x_chips + sliced_card.sell_cost * 0.25 - card:juice_up(0.8, 0.8) - sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) - play_sound("slice1", 0.96 + math.random() * 0.08) - 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, - } - ) - return nil, true - end - end, - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Mystic Misclick" - }, - code = { - "Mystic Misclick" - } - }, -} -local mondrian = { - object_type = "Joker", - name = "cry-mondrian", - key = "mondrian", - pos = { x = 5, y = 3 }, - config = { extra = { extra = 0.25, x_mult = 1 } }, - rarity = 2, - cost = 7, - order = 44, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - if - context.end_of_round - and G.GAME.current_round.discards_used == 0 - and not context.blueprint - and not context.individual - and not context.repetition - then - card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra - return { - message = localize("k_upgrade_ex"), - card = card, - } - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local sapling = { - object_type = "Joker", - name = "cry-sapling", - key = "sapling", - pos = { x = 3, y = 2 }, - config = { extra = { score = 0, req = 18, check = nil } }, - immune_to_chemach = true, - rarity = 2, - cost = 6, - order = 42, - blueprint_compat = false, - eternal_compat = false, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.score, center.ability.extra.req } } - end, - atlas = "atlasone", - calculate = function(self, card, context) - if - context.individual - and context.cardarea == G.play - and not context.blueprint - and not context.retrigger_joker - then - if context.other_card.ability.effect ~= "Base" then - 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 - end - 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") - 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"]}) - end - end - end, - cry_credits = { - idea = { - "Mjiojio" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local spaceglobe = { - object_type = "Joker", - name = "cry-spaceglobe", - key = "spaceglobe", - pos = { x = 1, y = 4 }, - config = { extra = { x_chips = 1, Xchipmod = 0.2, type = "High Card" } }, - rarity = 3, - cost = 8, - order = 73, - blueprint_compat = true, - perishable_compat = false, - loc_vars = function(self, info_queue, center) - return { - vars = { - center.ability.extra.x_chips, - center.ability.extra.Xchipmod, - localize(center.ability.extra.type, "poker_hands"), - }, - } - end, - 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')) - end, - calculate = function(self, card, context) - if context.cardarea == G.jokers and context.before and not context.blueprint then - if context.scoring_name == card.ability.extra.type then - G.E_MANAGER:add_event(Event({ - func = function() - local _type = {} - for k, v in pairs(G.GAME.hands) do - if v.visible and k ~= card.ability.to_do_type then - _type[#_type + 1] = k - end - end - card.ability.extra.type = pseudorandom_element(_type, pseudoseed("cry_space_globe")) - return true - end, - })) - card.ability.extra.x_chips = card.ability.extra.x_chips + card.ability.extra.Xchipmod - return { - message = localize("k_upgrade_ex"), - card = card, - colour = G.C.CHIPS, - } - 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 - return { - 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 - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local happy = { - object_type = "Joker", - name = "cry-happy", - key = "happy", - pos = { x = 2, y = 1 }, - rarity = 1, - cost = 2, - order = 63, - blueprint_compat = true, - 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 - local sellcreatejoker = 1 - G.GAME.joker_buffer = G.GAME.joker_buffer + sellcreatejoker - G.E_MANAGER:add_event(Event({ - func = function() - for i = 1, sellcreatejoker do - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "happy") - card:add_to_deck() - G.jokers:emplace(card) - card:start_materialize() - G.GAME.joker_buffer = 0 - end - return true - end, - })) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = localize("k_plus_joker"), colour = G.C.BLUE } - ) - return nil, true - end - if - 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 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 - G.E_MANAGER:add_event(Event({ - func = function() - if roundcreatejoker > 0 then - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "happy") - card:add_to_deck() - G.jokers:emplace(card) - card:start_materialize() - G.GAME.joker_buffer = 0 - end - return true - end, - })) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = localize("k_plus_joker"), colour = G.C.BLUE } - ) - return nil, true - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local meteor = { - object_type = "Joker", - name = "cry-meteor", - key = "meteor", - pos = { x = 0, y = 2 }, - config = { extra = { chips = 75 } }, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.foil) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_foil - end - return { vars = { center.ability.extra.chips } } - end, - rarity = 1, - cost = 4, - order = 38, - blueprint_compat = true, - calculate = function(self, card, context) - if - context.other_joker - and context.other_joker.edition - and context.other_joker.edition.foil == true - and card ~= context.other_joker - 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_chips", vars = { card.ability.extra.chips } }), - chip_mod = card.ability.extra.chips, - } - end - if context.individual and context.cardarea == G.play then - if context.other_card.edition and context.other_card.edition.foil == true then - return { - chips = card.ability.extra.chips, - colour = G.C.CHIPS, - card = card, - } - end - end - if - context.individual - and context.cardarea == G.hand - and context.other_card.edition - and context.other_card.edition.foil == true - and not context.end_of_round - then - if context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - else - return { - chips = card.ability.extra.chips, --this doesn't exist yet :pensive: if only... - card = card - } - end - end - end, - atlas = "atlastwo", - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Jevonn" - } - }, -} -local exoplanet = { - object_type = "Joker", - name = "cry-exoplanet", - key = "exoplanet", - pos = { x = 1, y = 2 }, - config = { extra = { mult = 15 } }, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.holo) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_holo - end - return { vars = { center.ability.extra.mult } } - end, - rarity = 1, - order = 39, - cost = 3, - blueprint_compat = true, - calculate = function(self, card, context) - if - context.other_joker - and context.other_joker.edition - and context.other_joker.edition.holo == true - and card ~= context.other_joker - 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_mult", vars = { card.ability.extra.mult } }), - mult_mod = card.ability.extra.mult, - } - end - if context.individual and context.cardarea == G.play then - if context.other_card.edition and context.other_card.edition.holo == true then - return { - mult = card.ability.extra.mult, - colour = G.C.MULT, - card = card, - } - end - end - if - context.individual - and context.cardarea == G.hand - and context.other_card.edition - and context.other_card.edition.holo == true - and not context.end_of_round - then - if context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - else - return { - h_mult = card.ability.extra.mult, - card = card - } - end - end - end, - atlas = "atlastwo", - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Jevonn" - } - }, -} -local stardust = { - object_type = "Joker", - name = "cry-stardust", - key = "stardust", - pos = { x = 2, y = 2 }, - config = { extra = { xmult = 2 } }, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.polychrome) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_polychrome - end - return { vars = { center.ability.extra.xmult } } - end, - rarity = 1, - cost = 2, - order = 40, - blueprint_compat = true, - calculate = function(self, card, context) - if - context.other_joker - and context.other_joker.edition - and context.other_joker.edition.polychrome == true - and card ~= context.other_joker - 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 = { card.ability.extra.xmult } }), - Xmult_mod = card.ability.extra.xmult, - } - end - if context.individual and context.cardarea == G.play then - if context.other_card.edition and context.other_card.edition.polychrome == true then - return { - x_mult = card.ability.extra.xmult, - colour = G.C.MULT, - card = card, - } - end - end - if - context.individual - and context.cardarea == G.hand - and context.other_card.edition - and context.other_card.edition.polychrome == true - and not context.end_of_round - then - if context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - else - return { - x_mult = card.ability.extra.xmult, - card = card - } - end - end - end, - atlas = "atlastwo", - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "Linus Goof Balls" - }, - code = { - "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", - name = "cry-rnjoker Joker", --:balatrojoker: - key = "rnjoker", - pos = { x = 5, y = 4 }, - config = {}, - order = 59, - loc_vars = function(self, info_queue, card) - local vars = { - vars = { - (card.ability.extra and card.ability.extra.value_mod and card.ability.extra.value) or 0, - (card.ability.extra and card.ability.extra.value and card.ability.extra.value_mod) - or (card.ability.extra and card.ability.extra.value) - or 0, - card.ability.extra and card.ability.extra.cond_value or 0, - G.GAME and G.GAME.probabilities.normal or 1, - }, - } - if card.ability.extra and card.ability.extra.color then - vars.vars.colours = { card.ability.extra.color } - end - return vars - end, - rarity = 2, - cost = 6, - blueprint_compat = true, - set_ability = function(self, card, initial, delay_sprites) - card.ability.abilities = {} - rnjoker_randomize(card) - end, - calculate = function(self, card, context) - if card.ability and card.ability.abilities then - for i, j in ipairs(card.ability.abilities) do - local j_context = j.context - local indiv = false - if j_context ~= "cry_payout" then - local valid_context = not not context[j.context] - if j.scale_value and context.blueprint then - valid_context = false - end - if (j_context == "playing_card_added") and card.getting_sliced then - valid_context = false - end - if (j_context == "setting_blind") and card.getting_sliced then - valid_context = false - end - if (j_context == "setting_blind") and card.getting_sliced then - valid_context = false - end - if (j_context == "before") and (card.area ~= G.jokers) then - valid_context = false - end - if (j_context == "after") and (card.area ~= G.jokers) then - valid_context = false - end - if (j_context == "joker_main") and (card.area ~= G.jokers) then - valid_context = false - end - if (j_context == "end_of_round") and (context.repetition or context.individual) then - valid_context = false - end - if - (j_context == "individual_play") - and context.individual - and not context.repetition - and (context.cardarea == G.play) - then - valid_context = true - indiv = true - end - if - (j_context == "individual_hand_score") - and context.individual - and not context.repetition - and (context.cardarea == G.hand) - and not context.end_of_round - then - valid_context = true - indiv = true - end - if - (j_context == "individual_hand_end") - and context.individual - and not context.repetition - and (context.cardarea == G.hand and context.end_of_round) - then - valid_context = true - indiv = true - end - if (j_context == "repetition_play") and context.repetition and (context.cardarea == G.play) then - valid_context = true - end - if (j_context == "repetition_hand") and context.repetition and (context.cardarea == G.hand) then - valid_context = true - end - if valid_context then - local cond_passed = false - local times_passed = 1 - if j.cond then - if j.cond == "buy_common" then - if - context.card - and context.card.ability - and (context.card.ability.set == "Joker") - and (context.card.config.center.rarity == 1) - then - cond_passed = true - end - elseif j.cond == "buy_uncommon" then - if - context.card - and context.card.ability - and (context.card.ability.set == "Joker") - and (context.card.config.center.rarity == 2) - then - cond_passed = true - end - elseif j.cond == "tarot" then - local card = context.card or context.consumeable - if card and card.ability and (card.ability.set == "Tarot") then - cond_passed = true - end - elseif j.cond == "planet" then - local card = context.card or context.consumeable - if card and card.ability and (card.ability.set == "Planet") then - cond_passed = true - end - elseif j.cond == "spectral" then - local card = context.card or context.consumeable - if card and card.ability and (card.ability.set == "Spectral") then - cond_passed = true - end - elseif j.cond == "joker" then - if context.card and context.card.ability and (context.card.ability.set == "Joker") then - cond_passed = true - end - elseif j.cond == "suit" then - times_passed = 0 - local cards = context.cards - if cards == nil then - cards = context.removed - end - if cards == nil then - cards = { context.other_card } - end - for i2, j2 in ipairs(cards) do - if j2:is_suit(j.suit) then - cond_passed = true - times_passed = times_passed + 1 - end - end - elseif j.cond == "rank" then - times_passed = 0 - local cards = context.cards - if cards == nil then - cards = context.removed - end - if cards == nil then - cards = { context.other_card } - end - for i2, j2 in ipairs(cards) do - if j2:get_id() == j.rank then - cond_passed = true - times_passed = times_passed + 1 - end - end - elseif j.cond == "face" then - times_passed = 0 - local cards = context.cards - if cards == nil then - cards = context.removed - end - if cards == nil then - cards = { context.other_card } - end - for i2, j2 in ipairs(cards) do - if j2:is_face() then - cond_passed = true - times_passed = times_passed + 1 - end - end - elseif j.cond == "boss" then - if context.blind.boss and not (context.blind.config and context.blind.config.bonus) then - cond_passed = true - end - elseif j.cond == "non_boss" then - if context.blind and not G.GAME.blind.boss then - cond_passed = true - end - elseif j.cond == "small" then - if context.blind == G.P_BLINDS.bl_small then - cond_passed = true - end - elseif j.cond == "big" then - if context.blind == G.P_BLINDS.bl_big then - cond_passed = true - end - elseif j.cond == "first" then - if G.GAME.current_round.hands_played == 0 then - cond_passed = true - end - elseif j.cond == "last" then - if G.GAME.current_round.hands_left == 0 then - cond_passed = true - end - elseif j.cond == "common" then - if context.other_joker.config.center.rarity == 1 then - cond_passed = true - end - elseif j.cond == "uncommon" then - if context.other_joker.config.center.rarity == 2 then - cond_passed = true - end - elseif j.cond == "rare" then - if context.other_joker.config.center.rarity == 3 then - cond_passed = true - end - elseif j.cond == "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 - if #context.full_hand >= j.cond_value then - cond_passed = true - end - elseif j.cond == "or_less" then - if #context.full_hand <= j.cond_value then - cond_passed = true - end - elseif j.cond == "hands_left" then - if G.GAME.current_round.hands_left == j.cond_value then - cond_passed = true - end - elseif j.cond == "discards_left" then - if G.GAME.current_round.discards_left == j.cond_value then - cond_passed = true - end - elseif j.cond == "first_discard" then - if G.GAME.current_round.discards_used <= 0 then - cond_passed = true - end - elseif j.cond == "last_discard" then - if G.GAME.current_round.discards_left <= 1 then - cond_passed = true - end - elseif j.cond == "odds" then - if - pseudorandom("rnj") - < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) - then - cond_passed = true - end - end - else - cond_passed = true - end - if cond_passed then - if j.context == "other_joker" then - local stats = { - plus_mult = "a_mult", - plus_chips = "a_chips", - x_mult = "a_xmult", - x_chips = "a_xchips", - } - local mods = { - plus_chips = "chip_mod", - plus_mult = "mult_mod", - x_mult = "Xmult_mod", - x_chips = "Xchip_mod", - } - local table = {} - 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({ - func = function() - context.other_joker:juice_up(0.5, 0.5) - return true - end, - })) - return table - elseif (j.context == "repetition_play") or (j.context == "repetition_hand") then - return { - message = localize("k_again_ex"), - repetitions = 1, - card = card, - } - elseif j.scale_value then - card.ability.extra.value = card.ability.extra.value - + (card.ability.extra.value_mod * times_passed) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - if j.stat == "h_size" then - G.hand:change_size(card.ability.extra.value_mod) - end - elseif j.act then - local j_mod = 0 - if j.context == "selling_self" and (card.ability.set == "Joker") then - j_mod = 1 - end - if j.context == "selling_card" and (context.card.ability.set == "Joker") then - j_mod = 1 - end - local c_mod = 0 - if j.context == "selling_self" and card.ability.consumeable then - c_mod = 1 - end - if j.context == "selling_card" and card.ability.consumeable then - c_mod = 1 - end - if j.act == "make_joker" then - local amount = card.ability.extra.value * times_passed - if - (G.jokers.config.card_limit + j_mod - #G.jokers.cards - G.GAME.joker_buffer) - < amount - then - amount = G.jokers.config.card_limit - + j_mod - - #G.jokers.cards - - G.GAME.joker_buffer - end - if amount > 0 then - G.GAME.joker_buffer = G.GAME.joker_buffer + amount - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.0, - func = function() - for i = 1, amount do - if G.jokers.config.card_limit + j_mod > #G.jokers.cards then - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - nil, - "rnj" - ) - card:add_to_deck() - G.jokers:emplace(card) - else - break - end - end - G.GAME.joker_buffer = 0 - return true - end, - })) - end - elseif j.act == "make_tarot" then - local amount = card.ability.extra.value * times_passed - if - ( - G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - ) < amount - then - amount = G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - end - if amount > 0 then - G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.0, - func = function() - for i = 1, amount do - if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards - then - local card = create_card( - "Tarot", - G.consumeables, - nil, - nil, - nil, - nil, - nil, - "rnj" - ) - card:add_to_deck() - G.consumeables:emplace(card) - else - break - end - end - G.GAME.consumeable_buffer = 0 - return true - end, - })) - end - elseif j.act == "make_planet" then - local amount = card.ability.extra.value * times_passed - if - ( - G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - ) < amount - then - amount = G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - end - if amount > 0 then - G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.0, - func = function() - for i = 1, amount do - if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards - then - local card = create_card( - "Planet", - G.consumeables, - nil, - nil, - nil, - nil, - nil, - "rnj" - ) - card:add_to_deck() - G.consumeables:emplace(card) - else - break - end - end - G.GAME.consumeable_buffer = 0 - return true - end, - })) - end - elseif j.act == "make_spectral" then - local amount = card.ability.extra.value * times_passed - if - ( - G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - ) < amount - then - amount = G.consumeables.config.card_limit - + c_mod - - #G.consumeables.cards - - G.GAME.consumeable_buffer - end - if amount > 0 then - G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.0, - func = function() - for i = 1, amount do - if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards - then - local card = create_card( - "Spectral", - G.consumeables, - nil, - nil, - nil, - nil, - nil, - "rnj" - ) - card:add_to_deck() - G.consumeables:emplace(card) - else - break - end - end - G.GAME.consumeable_buffer = 0 - return true - end, - })) - end - elseif j.act == "add_dollars" then - ease_dollars(card.ability.extra.value) - return { - message = localize("$") .. card.ability.extra.value, - colour = G.C.MONEY, - card = card, - } - end - end - end - end - if j.stat and context.individual and indiv then - local cond_passed = false - if j.cond == "suit" then - if context.other_card:is_suit(j.suit) then - cond_passed = true - end - elseif j.cond == "rank" then - if context.other_card:get_id() == j.rank then - cond_passed = true - end - elseif j.cond == "face" then - if context.other_card:is_face() then - cond_passed = true - end - elseif j.cond == "odds" then - if - pseudorandom("rnj") - < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) - then - cond_passed = true - end - end - if not j.cond then - cond_passed = true - end - if cond_passed then - if (context.cardarea == G.hand) and context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - end - if j.scale_value then - card.ability.extra.value = card.ability.extra.value + card.ability.extra.value_mod - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - if j.stat == "h_size" then - G.hand:change_size(card.ability.extra.value_mod) - end - else - local stats = { - plus_mult = "mult", - plus_chips = "chips", - } - if context.cardarea == G.hand then - local stats = { - plus_mult = "h_mult", - plus_chips = "h_chips", - } - end - local stat = stats[j.stat] or j.stat - local colors = { - plus_mult = G.C.RED, - plus_chips = G.C.BLUE, - x_mult = G.C.RED, - x_chips = G.C.BLUE, - } - local table = { - card = card, - } - table.colour = colors[j.stat] - table[stat] = card.ability.extra.value - return table - end - end - end - if context.joker_main and j.stat and (j.stat ~= "h_size") and (j.stat ~= "money") then - local cond_passed = false - if j_context ~= "joker_main" then - cond_passed = true - end - if j.cond == "first" then - if G.GAME.current_round.hands_played == 0 then - cond_passed = true - end - elseif j.cond == "last" then - if G.GAME.current_round.hands_left == 0 then - cond_passed = true - end - elseif j.cond == "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 - if #context.full_hand >= j.cond_value then - cond_passed = true - end - elseif j.cond == "or_less" then - if #context.full_hand <= j.cond_value then - cond_passed = true - end - elseif j.cond == "odds" then - if - pseudorandom("rnj") - < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) - then - cond_passed = true - end - end - if not j.cond then - cond_passed = true - end - if cond_passed then - local stats = { - plus_mult = "a_mult", - plus_chips = "a_chips", - x_mult = "a_xmult", - x_chips = "a_xchips", - } - local mods = { - plus_mult = "mult_mod", - plus_chips = "chip_mod", - x_mult = "Xmult_mod", - x_chips = "Xchip_mod", - } - local table = {} - table.message = localize({ - type = "variable", - key = stats[j.stat], - vars = { card.ability.extra.value }, - }) - table[mods[j.stat]] = card.ability.extra.value - return table - end - end - end - end - end - if - not context.individual - and not context.repetition - and not card.debuff - and context.end_of_round - and not context.blueprint - and G.GAME.blind.boss - and not (G.GAME.blind.config and G.GAME.blind.config.bonus) - then - local hand_size = 0 - if card.ability and card.ability.abilities then - for i, j in ipairs(card.ability.abilities) do - if j.stat == "h_size" then - hand_size = hand_size + card.ability.extra.value - end - end - end - G.hand:change_size(-hand_size) - rnjoker_randomize(card) - return { - message = localize("k_reset"), - colour = G.C.RED, - } - end - end, - add_to_deck = function(self, card, from_debuff) - local hand_size = 0 - if card.ability and card.ability.abilities then - for i, j in ipairs(card.ability.abilities) do - if j.stat == "h_size" then - hand_size = hand_size + card.ability.extra.value - end - end - end - G.hand:change_size(hand_size) - end, - remove_from_deck = function(self, card, from_debuff) - local hand_size = 0 - if card.ability and card.ability.abilities then - for i, j in ipairs(card.ability.abilities) do - if j.stat == "h_size" then - hand_size = hand_size + card.ability.extra.value - end - end - end - G.hand:change_size(-hand_size) - end, - generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) - local len = ( - card.ability - and card.ability.abilities - and card.ability.abilities[1].loc_txt - and #card.ability.abilities[1].loc_txt - ) or 0 - local target = { - type = "descriptions", - key = self.key, - set = self.set, - nodes = desc_nodes, - vars = specific_vars or {}, - } - 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 - end - local new_loc = { text = {} } - if - card.ability - and card.ability.abilities - and card.ability.abilities[1].loc_txt - and #card.ability.abilities[1].loc_txt - then - for i, j in ipairs(card.ability.abilities[1].loc_txt) do - table.insert(new_loc.text, j) - end - new_loc.text_parsed = card.ability.abilities[1].text_parsed - end - if not full_UI_table.name then - full_UI_table.name = - localize({ type = "name", set = self.set, key = target.key or self.key, nodes = full_UI_table.name }) - end - if specific_vars and specific_vars.debuffed then - target = { - type = "other", - key = "debuffed_" .. (specific_vars.playing_card and "playing_card" or "default"), - nodes = desc_nodes, - } - localize(target) - else - localalize_with_direct(new_loc, target) - end - end, - calc_dollar_bonus = function(self, card) - if card.ability and card.ability.abilities then - for i, j in ipairs(card.ability.abilities) do - if j.stat == "money" then - if card.ability.extra.value > 0 then - return card.ability.extra.value - end - end - end - end - end, - atlas = "atlastwo", - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local duos = { - object_type = "Joker", - name = "cry-duos", - key = "duos", - order = 90, - pos = { x = 0, y = 0 }, - config = { Xmult = 2.5, type = "Two Pair" }, - loc_vars = function(self, info_queue, card) - 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["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, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local home = { - object_type = "Joker", - name = "cry-home", - key = "home", - order = 91, - pos = { x = 2, y = 0 }, - config = { Xmult = 3.5, type = "Full House" }, - loc_vars = function(self, info_queue, card) - 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["Full House"]) then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local nuts = { - object_type = "Joker", - name = "cry-nuts", - key = "nuts", - order = 92, - pos = { x = 1, y = 0 }, - config = { Xmult = 5, type = "Straight Flush" }, - loc_vars = function(self, info_queue, card) - 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["Straight Flush"]) then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local quintet = { - object_type = "Joker", - name = "cry-quintet", - key = "quintet", - order = 93, - pos = { x = 3, y = 0 }, - config = { Xmult = 5, type = "Five of a Kind" }, - loc_vars = function(self, info_queue, card) - 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["Five of a Kind"]) then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["Five of a Kind"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local unity = { - object_type = "Joker", - name = "cry-unity", - key = "unity", - order = 94, - pos = { x = 4, y = 0 }, - config = { Xmult = 9, type = "Flush House" }, - loc_vars = function(self, info_queue, card) - 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["Flush House"]) then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["Flush House"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local swarm = { - object_type = "Joker", - name = "cry-swarm", - key = "swarm", - order = 95, - pos = { x = 5, y = 0 }, - config = { Xmult = 9, type = "Flush Five" }, - loc_vars = function(self, info_queue, card) - 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["Flush Five"]) then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["Flush Five"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local stronghold = { - object_type = "Joker", - name = "cry-stronghold", - key = "stronghold", - order = 114, - 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") } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Bulwark"].played > 0 then - return true - end - return false - end, -} -local wtf = { - object_type = "Joker", - name = "cry-wtf", - key = "wtf", - order = 115, - 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") } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Clusterfuck"].played > 0 then - return true - end - return false - end, -} -local clash = { - object_type = "Joker", - name = "cry-clash", - key = "clash", - order = 116, - 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") } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end - end, - in_pool = function(self) - if G.GAME.hands["cry_UltPair"].played > 0 then - return true - end - return false - end, -} -local filler = { - object_type = "Joker", - name = "cry-filler", - key = "filler", - pos = { x = 0, y = 1 }, - pools = {["Meme"] = true}, - config = { Xmult = 1.00000000000001, type = "High Card" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } - end, - atlas = "atlasthree", - rarity = 3, - order = 89, - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - colour = G.C.RED, - Xmult_mod = card.ability.x_mult, - } - end - end, - cry_credits = { - idea = { - "Mathguy" - }, - art = { - "Mathguy" - }, - code = { - "Mathguy" - } - }, -} -local giggly = { - object_type = "Joker", - name = "cry-Giggly Joker", - key = "giggly", - effect = "Cry Type Mult", - pos = { x = 0, y = 5 }, - config = { t_mult = 4, type = "High Card" }, - order = 16, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } - end, - atlas = "atlasthree", - rarity = 1, - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local nutty = { - object_type = "Joker", - name = "cry-Nutty Joker", - key = "nutty", - effect = "Cry Type Mult", - pos = { x = 1, y = 5 }, - order = 17, - config = { t_mult = 19, type = "Four of a Kind" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, 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["Four of a Kind"]) then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local manic = { - object_type = "Joker", - name = "cry-Manic Joker", - key = "manic", - effect = "Cry Type Mult", - pos = { x = 2, y = 5 }, - order = 18, - config = { t_mult = 22, type = "Straight Flush" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, 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["Straight Flush"]) then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local silly = { - object_type = "Joker", - name = "cry-Silly Joker", - key = "silly", - pos = { x = 3, y = 5 }, - effect = "Cry Type Mult", - order = 19, - config = { t_mult = 16, type = "Full House" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, 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["Full House"]) then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local delirious = { - object_type = "Joker", - name = "cry-Delirious Joker", - key = "delirious", - effect = "Cry Type Mult", - pos = { x = 4, y = 5 }, - order = 20, - config = { t_mult = 22, type = "Five of a Kind" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, 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["Five of a Kind"]) then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Five of a Kind"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local wacky = { - object_type = "Joker", - name = "cry-Wacky Joker", - key = "wacky", - pos = { x = 5, y = 5 }, - order = 21, - config = { t_mult = 30, type = "Flush House" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } - end, - atlas = "atlasthree", - rarity = 1, - cost = 4, - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Flush House"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local kooky = { - object_type = "Joker", - name = "cry-Kooky Joker", - key = "kooky", - pos = { x = 6, y = 5 }, - order = 22, - config = { t_mult = 30, type = "Flush Five" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } - end, - atlas = "atlasthree", - rarity = 1, - effect = "Cry Type Mult", - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Flush Five"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} - -local bonkers = { - object_type = "Joker", - name = "cry-Bonkers Joker", - key = "bonkers", - pos = { x = 8, y = 5 }, - order = 108, - config = { t_mult = 20, type = "cry_Bulwark" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_bulwark") } } - end, - atlas = "atlasthree", - rarity = 1, - effect = "Cry Type Mult", - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Bulwark"].played > 0 then - return true - end - return false - end, -} - -local fuckedup = { - object_type = "Joker", - name = "cry-Fucked-Up Joker", - key = "fuckedup", - pos = { x = 7, y = 2 }, - order = 109, - config = { t_mult = 37, type = "cry_Clusterfuck" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_clusterfuck") } } - end, - atlas = "atlasthree", - rarity = 1, - effect = "Cry Type Mult", - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Clusterfuck"].played > 0 then - return true - end - return false - end, -} - -local foolhardy = { - object_type = "Joker", - name = "cry-Foolhardy Joker", - key = "foolhardy", - pos = { x = 8, y = 2 }, - order = 110, - config = { t_mult = 42, type = "cry_UltPair" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_ultpair") } } - end, - atlas = "atlasthree", - rarity = 1, - effect = "Cry Type Mult", - 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 - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), - colour = G.C.RED, - mult_mod = card.ability.t_mult, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_UltPair"].played > 0 then - return true - end - return false - end, -} - -local dubious = { - object_type = "Joker", - name = "cry-Dubious Joker", - key = "dubious", - pos = { x = 0, y = 6 }, - order = 24, - config = { t_chips = 20, type = "High Card" }, - effect = "Cry Type Chips", - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize(card.ability.type, "poker_hands") } } - end, - atlas = "atlasthree", - rarity = 1, - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local shrewd = { - object_type = "Joker", - name = "cry-Shrewd Joker", - key = "shrewd", - pos = { x = 1, y = 6 }, - order = 25, - effect = "Cry Type Chips", - config = { t_chips = 150, type = "Four of a Kind" }, - loc_vars = function(self, info_queue, card) - 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["Four of a Kind"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local tricksy = { - object_type = "Joker", - name = "cry-Tricksy Joker", - key = "tricksy", - effect = "Cry Type Chips", - order = 26, - pos = { x = 2, y = 6 }, - config = { t_chips = 170, type = "Straight Flush" }, - loc_vars = function(self, info_queue, card) - 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["Straight Flush"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local foxy = { - object_type = "Joker", - name = "cry-Foxy Joker", - key = "foxy", - pos = { x = 3, y = 6 }, - order = 27, - effect = "Cry Type Chips", - config = { t_chips = 130, type = "Full House" }, - loc_vars = function(self, info_queue, card) - 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["Full House"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local savvy = { - object_type = "Joker", - name = "cry-Savvy Joker", - key = "savvy", - pos = { x = 4, y = 6 }, - effect = "Cry Type Chips", - order = 28, - config = { t_chips = 170, type = "Five of a Kind" }, - loc_vars = function(self, info_queue, card) - 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["Five of a Kind"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Five of a Kind"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local subtle = { - object_type = "Joker", - name = "cry-Subtle Joker", - key = "subtle", - pos = { x = 5, y = 6 }, - effect = "Cry Type Chips", - order = 29, - config = { t_chips = 240, type = "Flush House" }, - loc_vars = function(self, info_queue, card) - 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["Flush House"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Flush House"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local discreet = { - object_type = "Joker", - name = "cry-Discreet Joker", - key = "discreet", - pos = { x = 6, y = 6 }, - effect = "Cry Type Chips", - order = 30, - config = { t_chips = 240, type = "Flush Five" }, - loc_vars = function(self, info_queue, card) - 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["Flush Five"]) then - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["Flush Five"].played > 0 then - return true - end - return false - end, - cry_credits = { - idea = { - "Luigicat11" - }, - art = { - "Luigicat11" - }, - code = { - "Math" - } - }, -} -local adroit = { - object_type = "Joker", - name = "cry-Adroit Joker", - key = "adroit", - pos = { x = 7, y = 4 }, - effect = "Cry Type Chips", - order = 111, - config = { t_chips = 170, type = "cry_Bulwark" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_bulwark") } } - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Bulwark"].played > 0 then - return true - end - return false - end, -} -local penetrating = { - object_type = "Joker", - name = "cry-Penetrating Joker", - key = "penetrating", - pos = { x = 7, y = 3 }, - effect = "Cry Type Chips", - order = 112, - config = { t_chips = 270, type = "cry_Clusterfuck" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_clusterfuck") } } - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_Clusterfuck"].played > 0 then - return true - end - return false - end, -} -local treacherous = { - object_type = "Joker", - name = "cry-Treacherous Joker", - key = "treacherous", - pos = { x = 8, y = 3 }, - effect = "Cry Type Chips", - order = 113, - config = { t_chips = 300, type = "cry_UltPair" }, - loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_ultpair") } } - 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 - return { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), - colour = G.C.BLUE, - chip_mod = card.ability.t_chips, - } - end - end, - in_pool = function(self) - if G.GAME.hands["cry_UltPair"].played > 0 then - return true - end - return false - end, -} -local coin = { - object_type = "Joker", - name = "cry-coin", - key = "coin", - pos = { x = 0, y = 2 }, - config = { extra = { money = 1 } }, - rarity = 1, - order = 53, - cost = 5, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.money, center.ability.extra.money * 10 } } - end, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.selling_card and context.card.ability.set == "Joker" then - local option = pseudorandom(pseudoseed("coin"), card.ability.extra.money, card.ability.extra.money * 10) - ease_dollars(option) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = localize("$") .. option, colour = G.C.MONEY, delay = 0.45 } - ) - return nil, true - end - end, - cry_credits = { - idea = { - "Squiddy" - }, - art = { - "Timetoexplode" - }, - code = { - "Jevonn" - } - }, -} -local wheelhope = { - object_type = "Joker", - name = "cry-wheelhope", - key = "wheelhope", - pos = { x = 1, y = 1 }, - config = { extra = { extra = 0.5, x_mult = 1 } }, - rarity = 2, - cost = 5, - order = 74, - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = G.P_CENTERS.c_wheel_of_fortune - return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } - 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 - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - if context.consumeable then - if - context.consumeable.ability.name == "The Wheel of Fortune" - and not context.consumeable.cry_wheel_success - then - card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra - 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, - cry_credits = { - idea = { - "Linus Goof Balls" - }, - art = { - "Linus Good Balls" - }, - code = { - "Toneblock" - } - }, -} -local oldblueprint = { - object_type = "Joker", - name = "cry-oldblueprint", - key = "oldblueprint", - pos = { x = 2, y = 1 }, - config = { extra = { odds = 4 } }, - rarity = 1, - cost = 5, - order = 83, - loc_vars = function(self, info_queue, center) - return { vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), center.ability.extra.odds } } - end, - blueprint_compat = true, - eternal_compat = false, - atlas = "atlasthree", - 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("oldblueprint") < G.GAME.probabilities.normal / card.ability.extra.odds 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, - })) - return { - message = { localize("k_extinct_ex") }, - colour = G.C.FILTER, - } - else - return { - message = { localize("k_safe_ex") }, - colour = G.C.FILTER, - } - end - end - local other_joker = nil - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then - other_joker = G.jokers.cards[i + 1] - end - end - if other_joker and other_joker ~= self then - context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1 - context.blueprint_card = context.blueprint_card or card - - if context.blueprint > #G.jokers.cards + 1 then - return - end - - local other_joker_ret, trig = other_joker:calculate_joker(context) - 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.no_callback = true - return other_joker_ret - end - end - end, - cry_credits = { - idea = { - "Linus Goof Balls" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Math" - } - }, -} -local night = { - object_type = "Joker", - name = "cry-night", - key = "night", - config = { extra = { mult = 3 } }, - pos = { x = 3, y = 1 }, - rarity = 3, - cost = 6, - order = 41, - eternal_compat = false, - blueprint_compat = true, - atlas = "atlasthree", - loc_vars = function(self, info_queue, center) - 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 card.ability.extra.mult > 1 then - return { - 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 - if G.GAME.current_round.hands_left <= 0 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, - })) - return { - message = localize("k_extinct_ex"), - 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) - 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) - end - end - end, - cry_credits = { - idea = { - "Linus Goof Balls" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Jevonn" - } - }, -} -local busdriver = { - object_type = "Joker", - name = "cry-busdriver", - key = "busdriver", - config = { extra = { mult = 50, odds = 4 } }, - pos = { x = 5, y = 1 }, - immune_to_chemach = true, - rarity = 2, - cost = 7, - order = 46, - atlas = "atlasthree", - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { - vars = { - "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 3), - center.ability.extra.mult, - center.ability.extra.odds, - }, - } - 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 pseudorandom("busdriver") < G.GAME.probabilities.normal / card.ability.extra.odds * 3 then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), - mult_mod = card.ability.extra.mult, - colour = G.C.MULT, - } - else - return { - message = localize({ type = "variable", key = "a_mult_minus", vars = { card.ability.extra.mult } }), - mult_mod = (card.ability.extra.mult * -1), - colour = G.C.MULT, - } - end - end - end, - cry_credits = { - idea = { - "Linus Goof Balls" - }, - art = { - "Linus Goof Balls" - }, - code = { - "Jevonn" - } - }, -} -local translucent = { - object_type = "Joker", - name = "cry-translucent Joker", - key = "translucent", - pos = { x = 5, y = 2 }, - rarity = 1, - cost = 4, - order = 52, - eternal_compat = false, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.selling_self and not (context.retrigger_joker or context.blueprint) then - local jokers = {} - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] ~= card and not G.jokers.cards[i].debuff then - jokers[#jokers + 1] = G.jokers.cards[i] - end - end - if #jokers > 0 then - if #G.jokers.cards <= G.jokers.config.card_limit then - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_duplicated_ex") }) - local chosen_joker = pseudorandom_element(jokers, pseudoseed("trans")) - local _card = - copy_card(chosen_joker, nil, nil, nil, chosen_joker.edition and chosen_joker.edition.negative) - _card:add_to_deck() - _card:set_banana(true) - _card.ability.perishable = true -- Done manually to bypass perish compat - _card.ability.perish_tally = G.GAME.perishable_rounds - G.jokers:emplace(_card) - return nil, true - else - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_room_ex") }) - end - else - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_other_jokers") }) - end - end - end, - cry_credits = { - idea = { - "SDM0" - }, - art = { - "SDM0" - }, - code = { - "SDM0" - } - }, -} -local morse = { - object_type = "Joker", - name = "cry-morse", - key = "morse", - pos = { x = 5, y = 1 }, - config = { extra = { bonus = 2, money = 1 } }, - rarity = 1, - cost = 5, - order = 57, - perishable_compat = false, - blueprint_compat = false, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.bonus, center.ability.extra.money } } - end, - atlas = "atlastwo", - calculate = function(self, card, context) - if context.selling_card and context.card.edition and not context.blueprint then - card.ability.extra.money = card.ability.extra.money + card.ability.extra.bonus - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = localize("k_upgrade_ex"), - colour = G.C.MONEY, - }), - } - 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 = { - "Jevonn" - } - }, -} -local membershipcard = { - object_type = "Joker", - name = "cry-membershipcard", - key = "membershipcard", - config = { extra = { Xmult_mod = 0.1 } }, - pos = { x = 6, y = 2 }, - soul_pos = { x = 6, y = 1 }, - rarity = 4, - cost = 20, - order = 35, - blueprint_compat = true, - atlas = "atlasthree", - loc_vars = function(self, info_queue, card) - 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 - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { card.ability.extra.Xmult_mod * GLOBAL_cry_member_count }, - }), - Xmult_mod = card.ability.extra.Xmult_mod * GLOBAL_cry_member_count, - } - end - end, - cry_credits = { - idea = { - "Toneblock" - }, - art = { - "HexaCryonic" - }, - code = { - "Toneblock" - } - }, -} -local kscope = { - object_type = "Joker", - name = "cry-kscope", - key = "kscope", - pos = { x = 3, y = 4 }, - rarity = 3, - cost = 7, - order = 55, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.end_of_round and G.GAME.blind.boss and not context.individual and not context.repetition then - local eligiblejokers = {} - for k, v in pairs(G.jokers.cards) do - if v.ability.set == "Joker" and not v.edition and v ~= card then - table.insert(eligiblejokers, v) - end - end - if #eligiblejokers > 0 then - --you just lost the game - local eligible_card = - pseudorandom_element(eligiblejokers, pseudoseed("nevergonnagiveyouupnevergonnaletyoudown")) - local edition = { polychrome = true } - eligible_card:set_edition(edition, true) - check_for_unlock({ type = "have_edition" }) - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local cryptidmoment = { - object_type = "Joker", - name = "cry_cryptidmoment", - key = "cryptidmoment", - pos = { x = 6, y = 0 }, - config = { extra = { money = 1 } }, - loc_vars = function(self, info_queue, center) - return { vars = { math.max(1, math.floor(center.ability.extra.money)) } } - end, - rarity = 1, - cost = 4, - order = 65, - eternal_compat = false, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.selling_self and not context.blueprint then - for k, v in ipairs(G.jokers.cards) do - if v.set_cost then - v.ability.extra_value = (v.ability.extra_value or 0) - + math.max(1, math.floor(card.ability.extra.money)) - v:set_cost() - end - end - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_val_up"), colour = G.C.MONEY }) - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Yamper" - }, - code = { - "Jevonn" - } - }, -} -local flipside = { - object_type = "Joker", - name = "cry-Flip Side", - key = "flip_side", - pos = { x = 1, y = 0 }, - rarity = 2, - cost = 7, - order = 107, - atlas = "placeholders", - no_dbl = true, - loc_vars = function(self, info_queue) - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided - end, - add_to_deck = function(self, card, from_debuff) - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_double_sided then - G.jokers.cards[i]:init_dbl_side() - G.jokers.cards[i]:remove_from_deck(true) - G.jokers.cards[i].dbl_side:add_to_deck(true) - end - end - end, - remove_from_deck = function(self, card, from_debuff) - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_double_sided then - G.jokers.cards[i]:init_dbl_side() - G.jokers.cards[i]:add_to_deck(true) - G.jokers.cards[i].dbl_side:remove_from_deck(true) - end - end - end, - cry_credits = { - jolly = { - "Jolly Open Winner", - "Axolotolus", - }, - }, - 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.dbl_side then - return { - message = localize("k_again_ex"), - repetitions = 1, - card = card, - } - else - return nil, true - end - end - end, - cry_credits = { - idea = { - "Axolotus" - }, - art = { - ":(" - }, - code = { - "Math" - } - }, -} -local oldinvisible = { - object_type = "Joker", - name = "cry-Old Invisible Joker", - key = "oldinvisible", - pos = { x = 4, y = 4 }, - config = { extra = 0 }, - rarity = 4, - cost = 20, - order = 78, - atlas = "atlasthree", - loc_vars = function(self, info_queue, center) - 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 card.ability.extra == 3 then - card.ability.extra = 0 - local eligibleJokers = {} - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.name ~= card.ability.name and G.jokers.cards[i] ~= context.card then - eligibleJokers[#eligibleJokers + 1] = G.jokers.cards[i] - end - end - if #eligibleJokers > 0 then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(pseudorandom_element(eligibleJokers, pseudoseed("cry_oldinvis")), nil) - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = localize("k_duplicated_ex") } - ) - return nil, true - else - 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) - end - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = card.ability.extra .. "/4", - colour = G.C.FILTER, - }), - } - end - end - end, - cry_credits = { - idea = { - "LocalThunk" - }, - art = { - "LocalThunk" - }, - code = { - "Jevonn" - } - }, -} -local fractal = { - object_type = "Joker", - name = "cry-FractalFingers", - key = "fractal", - pos = { x = 6, y = 4 }, - config = { extra = 2 }, - rarity = 3, - cost = 7, - order = 76, - atlas = "atlasthree", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - add_to_deck = function(self, card, from_debuff) - card.ability.extra = math.floor(card.ability.extra) - G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + card.ability.extra - 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() - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "HexaCryonic" - }, - code = { - "HexaCryonic" - } - }, -} -local universe = { - cry_credits = { - idea = {"Mystic Misclick"}, - art = {"spire_winder"}, - code = {"spire_winder"} - }, - object_type = "Joker", - name = "cry-universe", - key = "universe", - pos = { x = 8, y = 0 }, - atlas = "atlasthree", - config = { extra = { emult = 1.2 } }, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.cry_astral) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral - end - return { vars = { center.ability.extra.emult } } - end, - rarity = 3, - cost = 6, - order = 40, - blueprint_compat = true, - calculate = function(self, card, context) - if - context.other_joker - and context.other_joker.edition - and context.other_joker.edition.cry_astral == true - and card ~= context.other_joker - 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_powmult", vars = { card.ability.extra.emult } }), - Emult_mod = card.ability.extra.emult, - colour = G.C.DARK_EDITION - } - end - if context.individual and context.cardarea == G.play then - if context.other_card.edition and context.other_card.edition.cry_astral == true then - return { - e_mult = card.ability.extra.emult, - colour = G.C.DARK_EDITION, - card = card - } - end - end - if - context.individual - and context.cardarea == G.hand - and context.other_card.edition - and context.other_card.edition.cry_astral == true - and not context.end_of_round - then - if context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - else - return { - e_mult = card.ability.extra.emult, - colour = G.C.DARK_EDITION, - card = card - } - end - end - end, -} -local astral_bottle = { - cry_credits = { - idea = {"AlexZGreat"}, - art = {"spire_winder"}, - code = {"spire_winder"} - }, - object_type = "Joker", - name = "cry-astral_bottle", - key = "astral_bottle", - pos = { x = 7, y = 0 }, - atlas = "atlasthree", - rarity = 2, - cost = 6, - blueprint_compat = false, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.cry_astral) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral - end - end, - calculate = function(self, card, context) - if context.selling_self and not context.retrigger_joker and not context.blueprint then - local jokers = {} - for i = 1, #G.jokers.cards do - if G.jokers.cards[i] ~= card and not G.jokers.cards[i].debuff and not G.jokers.cards[i].edition then - jokers[#jokers + 1] = G.jokers.cards[i] - end - end - 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.ability.perishable = true -- Done manually to bypass perish compat - chosen_joker.ability.perish_tally = G.GAME.perishable_rounds - return nil, true - else - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_other_jokers") }) - end - end - end, -} -local kidnap = { - object_type = "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", - calculate = function(self, card, context) - if - context.selling_card - and ( - ( - context.card.ability.name == "Sly Joker" - or context.card.ability.name == "Wily Joker" - or context.card.ability.name == "Clever Joker" - or context.card.ability.name == "Devious Joker" - or context.card.ability.name == "Crafty Joker" - ) - or context.card.ability.effect == "Type Mult" - or context.card.ability.effect == "Cry Type Mult" - or context.card.ability.effect == "Cry Type Chips" - --[[ - 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() - ) - and not context.blueprint - then - card.ability.extra.money = card.ability.extra.money + card.ability.extra.money_mod - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = localize("k_upgrade_ex"), - colour = G.C.MONEY, - }), - } - 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 = { - "Jevonn" - } - }, -} -local exposed = { - object_type = "Joker", - name = "cry-Exposed", - key = "exposed", - pos = { x = 0, y = 5 }, - config = { extra = 2 }, - rarity = 3, - cost = 8, - atlas = "atlastwo", - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - calculate = function(self, card, context) - if context.setting_blind and not context.blueprint then - for i, v in pairs (G.deck.cards) do - if v:is_face() then - v:set_debuff(true) - end - end - end - 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 - end - end, -} -local mask = { - object_type = "Joker", - name = "cry-Mask", - key = "mask", - pos = { x = 1, y = 5 }, - config = { extra = 3 }, - rarity = 3, - cost = 7, - atlas = "atlastwo", - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - calculate = function(self, card, context) - if context.setting_blind and not context.blueprint then - for i, v in pairs (G.deck.cards) do - if not v:is_face() then - v:set_debuff(true) - end - end - end - 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 - end - end, -} -local tropical_smoothie = { - object_type = "Joker", - name = "cry-Tropical Smoothie", - key = "tropical_smoothie", - pos = { x = 2, y = 5 }, - config = {}, - rarity = 3, - cost = 5, - atlas = "atlastwo", - immutable = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - calculate = function(self, card, context) - if context.selling_self then - local check = false - for i, v in pairs (G.jokers.cards) do - if not Card.no(v, "immune_to_chemach", true) and not Card.no(v, "immutable", true) then - cry_with_deck_effects(G.jokers.cards[1], function(card) - cry_misprintize(v, { min = 1.5, max = 1.5}, nil, true) - end) - check = true - end - end - if check then - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex"), colour = G.C.GREEN } - ) - end - end - end, -} -local miscitems = { - jimball_sprite, - dropshot, - happyhouse, - maximized, - potofjokes, - queensgambit, - wee_fib, - compound_interest, - whip, - pickle, - triplet_rhythm, - booster, - chili_pepper, - lucky_joker, - cursor, - cube, - big_cube, - nice, - sus, - chad, - jimball, - luigi, - waluigi, - mario, - wario, - eternalflame, - seal_the_deal, - fspinner, - krustytheclown, - blurred, - gardenfork, - lightupthenight, - nosound, - antennastoheaven, - hunger, - weegaming, - redbloon, - apjoker, - maze, - panopticon, - magnet, - unjust_dagger, - monkey_dagger, - pirate_dagger, - mondrian, - sapling, - spaceglobe, - happy, - meteor, - exoplanet, - stardust, - rnjoker, - filler, - duos, - home, - nuts, - quintet, - unity, - swarm, - stronghold, - wtf, - clash, - coin, - wheelhope, - night, - busdriver, - oldblueprint, - morse, - translucent, - membershipcard, - kscope, - cryptidmoment, - oldinvisible, - fractal, - giggly, - nutty, - manic, - silly, - delirious, - wacky, - kooky, - bonkers, - fuckedup, - foolhardy, - dubious, - shrewd, - tricksy, - foxy, - savvy, - subtle, - discreet, - adroit, - penetrating, - treacherous, - kidnap, - exposed, - mask, - tropical_smoothie, -} -if Cryptid.enabled["Misc."] then - miscitems[#miscitems+1] = flipside - miscitems[#miscitems+1] = universe - miscitems[#miscitems+1] = astral_bottle -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 - end, - items = miscitems, -} +local dropshot = { + object_type = "Joker", + name = "cry-Dropshot", + key = "dropshot", + order = 3, + config = { extra = { Xmult_mod = 0.2, x_mult = 1 } }, + pos = { x = 5, y = 0 }, + rarity = 3, + cost = 8, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { + vars = { + center.ability.extra.Xmult_mod, + localize( + G.GAME.current_round.cry_dropshot_card and G.GAME.current_round.cry_dropshot_card.suit or "Spades", + "suits_singular" + ), + center.ability.extra.x_mult, + colours = { + G.C.SUITS[G.GAME.current_round.cry_dropshot_card and G.GAME.current_round.cry_dropshot_card.suit or "Spades"], + }, + }, + } + end, + calculate = function(self, card, context) + if context.cardarea == G.jokers and context.before and not context.blueprint then + cards = 0 + for k, v in ipairs(context.scoring_hand) do + v.cry_dropshot_incompat = true + end + for k, v in ipairs(context.full_hand) do + if not v.cry_dropshot_incompat and v:is_suit(G.GAME.current_round.cry_dropshot_card.suit) then + cards = cards + 1 + G.E_MANAGER:add_event(Event({ + func = function() + v:juice_up() + return true + end, + })) + end + end + for k, v in ipairs(context.scoring_hand) do + v.cry_dropshot_incompat = nil + end + if cards > 0 then + card.ability.extra.x_mult = card.ability.extra.x_mult + cards * card.ability.extra.Xmult_mod + 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 + 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 + end, + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Mystic Misclick" + }, + code = { + "Math" + } + }, +} +local happyhouse = { + object_type = "Joker", + name = "cry-happyhouse", + key = "happyhouse", + pos = { x = 2, y = 4 }, + order = 2, + config = { extra = { mult = 4, check = 0 } }, + immune_to_chemach = true, + pools = {["Meme"] = true}, + rarity = 2, + cost = 2, + blueprint_compat = true, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.mult, center.ability.extra.check } } + end, + calculate = function(self, card, context) + if + context.cardarea == G.jokers + and context.before + and not context.blueprint + and not context.retrigger_joker + then + card.ability.extra.check = card.ability.extra.check + 1 + if + card.ability.extra.check == 114 + and G.GAME.round_resets.ante < 8 + and not ( + G.GAME.selected_back.effect.center.key == "antimatter" + or G.GAME.selected_back.effect.center.key == "equilibrium" + ) + then --Yes, the cut off point is boss blind Ante 7. I'm evil >:3. + check_for_unlock({ type = "home_realtor" }) + end + if card.ability.extra.check < 114 then --Hardcoded, dont want misprint to mess with this hehe + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = card.ability.extra.check .. "/114", + colour = G.C.DARK_EDITION, + }), + } + 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 + return { + 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, + } + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local maximized = { + object_type = "Joker", + name = "cry-Maximized", + key = "maximized", + pos = { x = 5, y = 2 }, + rarity = 3, + order = 13, + cost = 11, + atlas = "atlastwo", + cry_credits = { + idea = { + "Gold" + }, + art = { + "Gold" + }, + code = { + "Math" + } + }, +} +local potofjokes = { + object_type = "Joker", + name = "cry-Pot of Jokes", + key = "pot_of_jokes", + config = { extra = { h_size = -2, h_mod = 1 } }, + pos = { x = 5, y = 0 }, + immune_to_chemach = true, + rarity = 3, + order = 104, + cost = 10, + perishable_compat = false, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + return { + vars = { + center.ability.extra.h_size < 0 and center.ability.extra.h_size or "+" .. 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 + card.ability.extra.h_size = card.ability.extra.h_size + card.ability.extra.h_mod + G.hand:change_size(card.ability.extra.h_mod) + return { + message = localize({ type = "variable", key = "a_handsize", vars = { card.ability.extra.h_mod } }), + colour = G.C.FILTER, + card = card, + } + end + end, + add_to_deck = function(self, card, from_debuff) + G.hand:change_size(card.ability.extra.h_size) + end, + remove_from_deck = function(self, card, from_debuff) + G.hand:change_size(-card.ability.extra.h_size) + end, + cry_credits = { + idea = { + "Mjiojio" + }, + art = { + "Ein13" + }, + code = { + "Math" + } + }, +} +local queensgambit = { + object_type = "Joker", + name = "cry-Queen's Gambit", + key = "queens_gambit", + pos = { x = 1, y = 0 }, + rarity = 1, + order = 7, + cost = 7, + loc_vars = function(self, info_queue, center) + 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 = "atlastwo", + config = { extra = { type = "Straight Flush" } }, + calculate = function(self, card, context) + if context.destroying_card and not context.blueprint then + if + G.GAME.current_round.current_hand.handname == "Royal Flush" + and SMODS.Ranks[context.destroying_card.base.value].key == "Queen" + then + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_joker"), colour = G.C.FILTER } + ) + G.E_MANAGER:add_event(Event({ + trigger = "after", + func = function() + local card = create_card("Joker", G.jokers, nil, 0.99, nil, nil, nil, "cry_gambit") + card:set_edition({ negative = true }) + card:add_to_deck() + G.jokers:emplace(card) + card:start_materialize() + return true + end, + })) + return nil, true + end + end + end, + cry_credits = { + idea = { + "Project666" + }, + art = { + "Ein13" + }, + code = { + --wonder what happened to this guy + "Thedrunkenbrick" + } + }, +} +local wee_fib = { + object_type = "Joker", + name = "cry-Wee Fibonacci", + key = "wee_fib", + config = { extra = { mult = 0, mult_mod = 3 } }, + pos = { x = 1, y = 5 }, + rarity = 3, + cost = 9, + order = 98, + blueprint_compat = true, + perishable_compat = false, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.mult, center.ability.extra.mult_mod } } + 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 + 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 + + return { + extra = { focus = card, message = localize("k_upgrade_ex") }, + card = card, + colour = G.C.MULT, + } + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), + mult_mod = card.ability.extra.mult, + colour = G.C.MULT, + } + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "LocalThunk" + }, + code = { + "Math" + } + }, +} +local whip = { + object_type = "Joker", + name = "cry-The WHIP", + key = "whip", + pos = { x = 5, y = 3 }, + config = { extra = { Xmult_mod = 0.5, x_mult = 1 } }, + rarity = 2, + cost = 8, + order = 15, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.x_mult } } + end, + 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 == "2" then + for j = 1, #context.full_hand do + if SMODS.Ranks[context.full_hand[j].base.value].key == "7" then + --Different suits + for k, v in pairs(SMODS.Suits) do + if + context.full_hand[i]:is_suit(k, nil, true) + and context.full_hand[j]:is_suit(k, nil, true) + then + return + end + end + 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({ + type = "variable", + key = "a_xmult", + vars = { card.ability.extra.x_mult }, + }), + } + ) + return nil, true + end + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + end, + cry_credits = { + idea = { + "Gold" + }, + art = { + "Ein13" + }, + code = { + "Math" + } + }, +} +local lucky_joker = { + object_type = "Joker", + name = "cry-Lucky Joker", + key = "lucky_joker", + config = { extra = { dollars = 5 } }, + pos = { x = 4, y = 3 }, + rarity = 1, + cost = 4, + order = 36, + blueprint_compat = true, + atlas = "atlasone", + enhancement_gate = "m_lucky", + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.m_lucky + return { vars = { center.ability.extra.dollars } } + end, + 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 })) + return { + dollars = card.ability.extra.dollars, + card = card, + } + end + end, + cry_credits = { + idea = { + "Ein13" + }, + art = { + "Jevonn" + }, + code = { + "Wilsonthewolf" + } + }, +} +local cursor = { + object_type = "Joker", + name = "cry-Cursor", + key = "cursor", + config = { extra = { chips = 0, chip_mod = 8 } }, + pos = { x = 4, y = 1 }, + rarity = 1, + cost = 5, + order = 5, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod } } + end, + 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, + } + ) + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + end + end, + cry_credits = { + idea = { + "Math" + }, + art = { + "Jevonn" + }, + code = { + "Math" + } + }, +} +local pickle = { + object_type = "Joker", + name = "cry-Pickle", + key = "pickle", + config = { extra = { tags = 3, tags_mod = 1 } }, + pos = { x = 3, y = 3 }, + immune_to_chemach = true, + rarity = 2, + order = 45, + cost = 6, + blueprint_compat = true, + eternal_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { vars = { math.min(20, center.ability.extra.tags), center.ability.extra.tags_mod } } + end, + calculate = function(self, card, context) + if context.skip_blind then + for i = 1, math.min(20, card.ability.extra.tags) do + local tag = Tag(get_next_tag_key("cry_pickle")) + if tag.name == "Orbital Tag" 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 + tag.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed("cry_pickle_orbital")) + end + if tag.name == "Boss Tag" then + i = i - 1 --skip these, as they can cause bugs with pack opening from other tags + else + 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, + } + ) + 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, + } + ) + return nil, true + 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 = { + "5381" + }, + art = { + "Mystic Misclick" + }, + code = { + "Math" + } + }, +} +local cube = { + object_type = "Joker", + name = "cry-Cube", + key = "cube", + config = { extra = { chips = 6 } }, + pos = { x = 5, y = 4 }, + rarity = 1, + order = 11, + cost = -27, + blueprint_compat = true, + atlas = "atlasone", + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + end + end, + cry_credits = { + idea = { + "Ein13", "Math" + }, + art = { + "Ein13" + }, + code = { + "Math" + } + }, +} +local triplet_rhythm = { + object_type = "Joker", + name = "cry-Triplet Rhythm", + key = "triplet_rhythm", + config = { extra = { Xmult = 3 } }, + pos = { x = 0, y = 4 }, + rarity = 1, + order = 10, + cost = 6, + blueprint_compat = true, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + 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 + local threes = 0 + for i = 1, #context.scoring_hand do + if SMODS.Ranks[context.scoring_hand[i].base.value].key == "3" then + threes = threes + 1 + end + end + if threes == 3 then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), + Xmult_mod = card.ability.extra.Xmult, + } + end + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Math" + } + }, +} +local booster = { + object_type = "Joker", + name = "cry-Booster Joker", + key = "booster", + config = { extra = { booster_slots = 1 } }, + pos = { x = 2, y = 0 }, + order = 34, + immune_to_chemach = true, + rarity = 2, + cost = 6, + blueprint_compat = false, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.booster_slots } } + end, + add_to_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 + 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 - card.ability.extra.booster_slots + end, + cry_credits = { + idea = { + "Ein13" + }, + art = { + "Jevonn" + }, + code = { + "Math" + } + }, +} +local chili_pepper = { + object_type = "Joker", + name = "cry-Chili Pepper", + key = "chili_pepper", + config = { extra = { Xmult = 1, Xmult_mod = 0.5, rounds_remaining = 8 } }, + pos = { x = 0, y = 1 }, + rarity = 2, + cost = 6, + order = 48, + blueprint_compat = true, + eternal_compat = false, + perishable_compat = false, + atlas = "atlastwo", + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), + Xmult_mod = card.ability.extra.Xmult, + } + 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.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod + card.ability.extra.rounds_remaining = card.ability.extra.rounds_remaining - 1 + if card.ability.extra.rounds_remaining > 0 then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), + 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 = { + "Mystic Misclick" + }, + art = { + "Mystic Misclick" + }, + code = { + "Math" + } + }, +} +local compound_interest = { + object_type = "Joker", + name = "cry-Compound Interest", + key = "compound_interest", + config = { extra = { percent_mod = 3, percent = 12 } }, + pos = { x = 3, y = 2 }, + rarity = 3, + order = 9, + cost = 10, + perishable_compat = false, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.percent, center.ability.extra.percent_mod } } + end, + calc_dollar_bonus = function(self, card) + 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 + return bonus + end + end, + cry_credits = { + idea = { + "Mjiojio" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Math" + } + }, +} +local big_cube = { + object_type = "Joker", + name = "cry-Big Cube", + key = "big_cube", + joker_gate = "cry-Cube", + config = { extra = { x_chips = 6 } }, + pos = { x = 4, y = 4 }, + rarity = 1, + order = 105, + cost = 27, + blueprint_compat = true, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + 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 + return { + message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), + Xchip_mod = card.ability.extra.x_chips, + colour = G.C.CHIPS, + } + end + end, + cry_credits = { + idea = { + "Mystick Myclick" + }, + art = { + "AlexZGreat" + }, + code = { + "Math" + } + }, +} +local eternalflame = { + object_type = "Joker", + name = "cry-eternalflame", + key = "eternalflame", + pos = { x = 0, y = 4 }, + config = { extra = { extra = 0.1, 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 } } + 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 + 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 + card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra + 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, + cry_credits = { + idea = { + "Dovahkiin1307" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local nice = { + object_type = "Joker", + name = "cry-Nice", + key = "nice", + config = { extra = { chips = 420, sixcount = 0, ninecount = 0 } }, + pos = { x = 2, y = 3 }, + pools = {["Meme"] = true}, + rarity = 3, + cost = 6.9, + order = 84, + atlas = "atlasone", + blueprint_compat = true, + 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 context.before and not context.after then + card.ability.extra.sixcount = 0 + card.ability.extra.ninecount = 0 + for i, v in pairs(context.full_hand) do + if v:get_id() == 6 then + card.ability.extra.sixcount = card.ability.extra.sixcount + 1 + elseif v:get_id() == 9 then + 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 + 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 } }), + chip_mod = card.ability.extra.chips or 0, + } + end + end + end, + cry_credits = { + idea = { + "AlexZGreat" + }, + art = { + "Jevonn" + }, + code = { + "AlexZGreat" + } + }, +} +local seal_the_deal = { + object_type = "Joker", + name = "cry-Seal The Deal", + key = "seal_the_deal", + config = { extra = { x_chips = 6 } }, + pos = { x = 2, y = 4 }, + rarity = 2, + cost = 5, + order = 101, + atlas = "atlasone", + calculate = function(self, card, context) + if context.individual and context.cardarea == G.play then + if G.GAME.current_round.hands_left == 0 then + G.E_MANAGER:add_event(Event({ + func = function() + local seal_type = pseudorandom(pseudoseed("seal_the_deal")) + if seal_type > 0.75 then + context.other_card:set_seal("Red", true) + elseif seal_type > 0.5 then + context.other_card:set_seal("Blue", true) + elseif seal_type > 0.25 then + context.other_card:set_seal("Gold", true) + else + context.other_card:set_seal("Purple", true) + end + card:juice_up(0.3, 0.4) + context.other_card:juice_up(0.3, 0.3) + play_sound("gold_seal", 1.2, 0.4) + return true + end, + })) + delay(0.5) + return nil, true + end + end + end, + cry_credits = { + idea = { + "Zak" + }, + art = { + "5381" + }, + code = { + "AlexZGreat" + } + }, +} +local chad = { + object_type = "Joker", + name = "cry-Chad", + key = "chad", + pos = { x = 0, y = 3 }, + order = 71, + config = { extra = { retriggers = 2 } }, + immune_to_chemach = true, + pools = {["Meme"] = true}, + rarity = 3, + cost = 10, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.retriggers } } + end, + atlas = "atlasone", + calculate = function(self, card, context) + if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then + if context.other_card == G.jokers.cards[1] then + return { + message = localize("k_again_ex"), + repetitions = card.ability.extra.retriggers, + card = card, + } + else + return nil, true + end + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "SDM0" + }, + code = { + "Math" + } + }, +} +local jimball = { + object_type = "Joker", + name = "cry-Jimball", + key = "jimball", + pos = { x = 0, y = 0 }, + order = 8, + config = { x_mult = 1, extra = 0.15, override_x_mult_check = true }, + pools = {["Meme"] = true}, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra, center.ability.x_mult } } + end, + rarity = 3, + cost = 9, + blueprint_compat = true, + perishable_compat = false, + calculate = function(self, card, context) + if context.before and not context.blueprint then + local reset = false + local play_more_than = (G.GAME.hands[context.scoring_name].played or 0) + for k, v in pairs(G.GAME.hands) do + if k ~= context.scoring_name and v.played >= play_more_than and v.visible then + reset = true + end + end + if reset then + if to_big(card.ability.x_mult) > to_big(1) then + card.ability.x_mult = 1 + return { + card = self, + message = localize("k_reset"), + } + end + else + card.ability.x_mult = card.ability.x_mult + card.ability.extra + return nil, true + end + end + end, + add_to_deck = function(self, card, from_debuff) + if not from_debuff then + create_cryptid_notif_overlay("jimball") + end + end, + atlas = "jimball", + cry_credits = { + idea = { + "Math" + }, + art = { + "Grazzy", "Zakosek Artworks" + }, + code = { + "Math" + } + }, +} +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", + path = "j_cry_jimball.png", + px = 71, + py = 95, +} +local sus = { + object_type = "Joker", + name = "cry-SUS", + key = "sus", + pos = { x = 1, y = 3 }, + pools = {["Meme"] = true}, + rarity = 3, + cost = 7, + order = 79, + blueprint_compat = true, + atlas = "atlasone", + calculate = function(self, card, context) + 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 not card.ability.used_round or card.ability.used_round ~= G.GAME.round then + card.ability.chosen_card = nil + end + local choosable_cards = {} + local has_impostor = false + for i = 1, #G.hand.cards do + if not G.hand.cards[i].murdered_by_impostor then + choosable_cards[#choosable_cards + 1] = G.hand.cards[i] + if is_impostor(G.hand.cards[i]) then + has_impostor = true + end + end + end + if has_impostor then + choosable_cards = {} + for i = 1, #G.hand.cards do + if not G.hand.cards[i].murdered_by_impostor and is_impostor(G.hand.cards[i]) then + choosable_cards[#choosable_cards + 1] = G.hand.cards[i] + end + end + end + card.ability.chosen_card = card.ability.chosen_card + or pseudorandom_element(choosable_cards, pseudoseed("cry_sus")) + if not card.ability.used_round or card.ability.used_round ~= G.GAME.round then + card.ability.used_round = G.GAME.round + local deletable_cards = {} + for k, v in pairs(G.hand.cards) do + if not v.ability.eternal and not is_impostor(v) then + deletable_cards[#deletable_cards + 1] = v + end + 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}) + end + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.75, + func = function() + for k, v in pairs(deletable_cards) do + if v ~= card.ability.chosen_card then + v.murdered_by_impostor = true + v:start_dissolve(nil, _first_dissolve) + _first_dissolve = true + end + end + return true + end, + })) + + end + end + if card.ability.chosen_card ~= nil then + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.4, + func = function() + card:juice_up(0.3, 0.4) + G.playing_card = (G.playing_card and G.playing_card + 1) or 1 + local _c = copy_card(card.ability.chosen_card, nil, nil, G.playing_card) + _c:start_materialize() + _c:add_to_deck() + G.deck.config.card_limit = G.deck.config.card_limit + 1 + table.insert(G.playing_cards, _c) + G.hand:emplace(_c) + playing_card_joker_effects({ _c }) + return true + end, + })) + return { message = localize("cry_sus_ex") } + end + end + end, + cry_credits = { + idea = { + "Math" + }, + art = { + "Jevonn" + }, + code = { + "Math" + } + }, +} +local fspinner = { + object_type = "Joker", + name = "cry-fspinner", + key = "fspinner", + pos = { x = 4, y = 0 }, + config = { extra = { chips = 0, chip_mod = 6 } }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod } } + end, + rarity = 1, + cost = 6, + order = 77, + blueprint_compat = true, + perishable_compat = false, + atlas = "fspinner", + calculate = function(self, card, context) + if context.before and not context.blueprint then + local play_more_than = (G.GAME.hands[context.scoring_name].played or 0) + for k, v in pairs(G.GAME.hands) do + if k ~= context.scoring_name and v.played >= play_more_than and v.visible then + card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chip_mod + return { + message = localize("k_upgrade_ex"), + card = card, + } + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + end + end, + atlas = "atlasone", + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local luigi = { + object_type = "Joker", + name = "cry-luigi", + key = "luigi", + pos = { x = 0, y = 3 }, + soul_pos = { x = 1, y = 3 }, + config = { extra = { x_chips = 3 } }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.x_chips } } + end, + rarity = 4, + cost = 20, + order = 86, + blueprint_compat = true, + calculate = function(self, card, context) + if context.other_joker and context.other_joker.ability.set == "Joker" 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_xchips", vars = { card.ability.extra.x_chips } }), + colour = G.C.CHIPS, + Xchip_mod = card.ability.extra.x_chips, + } + end + end, + atlas = "atlasthree", + cry_credits = { + idea = { + "Auto Watto" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Auto Watto" + } + }, +} +local waluigi = { + object_type = "Joker", + name = "cry-Waluigi", + key = "waluigi", + pos = { x = 0, y = 3 }, + soul_pos = { x = 1, y = 3 }, + config = { extra = { Xmult = 2.5 } }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.Xmult } } + end, + rarity = 4, + cost = 20, + order = 87, + blueprint_compat = true, + calculate = function(self, card, context) + if context.other_joker and context.other_joker.ability.set == "Joker" 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 = { card.ability.extra.Xmult } }), + Xmult_mod = card.ability.extra.Xmult, + } + end + end, + atlas = "atlastwo", + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Math" + } + }, +} +local mario = { + object_type = "Joker", + name = "cry-mario", + key = "mario", + config = { extra = { retriggers = 2 } }, + pos = { x = 4, y = 3 }, + soul_pos = { x = 5, y = 3 }, + rarity = 4, + order = 85, + cost = 20, + blueprint_compat = true, + immune_to_chemach = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.retriggers } } + end, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then + return { + message = localize("k_again_ex"), + repetitions = card.ability.extra.retriggers, + card = card, + } + end + end, + cry_credits = { + idea = { + "Auto Watto" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Auto Watto" + } + }, +} +local wario = { + object_type = "Joker", + name = "cry-wario", + key = "wario", + order = 88, + pos = { x = 2, y = 3 }, + soul_pos = { x = 3, y = 3 }, + config = { extra = { money = 3 } }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.money } } + 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 + end + end, + + rarity = 4, + cost = 20, + blueprint_compat = true, + atlas = "atlasthree", + cry_credits = { + idea = { + "Auto Watto" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Auto Watto" + } + }, +} +local krustytheclown = { + object_type = "Joker", + name = "cry-krustytheclown", + key = "krustytheclown", + pos = { x = 3, y = 4 }, + config = { extra = { extra = 0.02, x_mult = 1 } }, + pools = {["Meme"] = true}, + rarity = 2, + order = 31, + cost = 7, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + if context.cardarea == G.play and context.individual and not context.blueprint then + card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra + return { + extra = { focus = card, message = localize("k_upgrade_ex") }, + card = card, + colour = G.C.MULT, + } + end + end, + cry_credits = { + idea = { + "Izumi" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local blurred = { + object_type = "Joker", + name = "cry-blurred Joker", + key = "blurred", + pos = { x = 4, y = 4 }, + pools = {["Meme"] = true}, + config = { extra = 1 }, + rarity = 1, + cost = 4, + order = 51, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + 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 })) + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local gardenfork = { + object_type = "Joker", + name = "cry-gardenfork", + key = "gardenfork", + pos = { x = 0, y = 1 }, + config = { extra = { money = 7 } }, + rarity = 3, + cost = 7, + order = 66, + blueprint_compat = true, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.money } } + end, + 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 + for j = 1, #context.full_hand do + if SMODS.Ranks[context.full_hand[j].base.value].key == "7" then + ease_dollars(card.ability.extra.money) + return { message = "$" .. card.ability.extra.money, colour = G.C.MONEY } + end + end + end + end + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Jevonn" + } + }, +} +local lightupthenight = { + object_type = "Joker", + name = "cry-lightupthenight", + key = "lightupthenight", + config = { extra = { xmult = 1.5 } }, + pos = { x = 1, y = 1 }, + atlas = "atlasone", + rarity = 3, + cost = 7, + order = 67, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.xmult } } + 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 + return { + x_mult = card.ability.extra.xmult, + colour = G.C.RED, + card = card, + } + end + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Jevonn" + } + }, +} +local nosound = { + object_type = "Joker", + name = "cry-nosound", + key = "nosound", + config = { extra = { retriggers = 3 } }, + pos = { x = 2, y = 1 }, + atlas = "atlasone", + rarity = 3, + order = 68, + cost = 7, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.retriggers } } + end, + 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 + return { + message = localize("k_again_ex"), + repetitions = card.ability.extra.retriggers, + card = card, + } + end + end + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Jevonn" + } + }, +} +local antennastoheaven = { + object_type = "Joker", + name = "cry-antennastoheaven", + key = "antennastoheaven", + pos = { x = 3, y = 1 }, + config = { extra = { bonus = 0.1, x_chips = 1 } }, + rarity = 3, + cost = 7, + order = 69, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.bonus, center.ability.extra.x_chips } } + 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 + return { + 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 + card.ability.extra.x_chips = card.ability.extra.x_chips + card.ability.extra.bonus + return { + extra = { focus = card, message = localize("k_upgrade_ex") }, + card = card, + colour = G.C.CHIPS, + } + end + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Jevonn" + } + }, +} +local hunger = { + object_type = "Joker", + name = "cry-hunger", + key = "hunger", + config = { extra = { money = 3 } }, + pos = { x = 3, y = 0 }, + rarity = 2, + cost = 6, + order = 80, + blueprint_compat = true, + atlas = "atlastwo", + 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 + end, + cry_credits = { + idea = { + "Mjiojio" + }, + art = { + "AlexZGreat" + }, + code = { + "Jevonn" + } + }, +} +local weegaming = { + object_type = "Joker", + name = "cry-weegaming", + key = "weegaming", + order = 62, + config = { extra = { retriggers = 2 } }, + pos = { x = 3, y = 4 }, + atlas = "atlastwo", + rarity = 1, + cost = 5, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.retriggers } } + end, + 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 + return { + message = localize("k_again_ex"), + repetitions = card.ability.extra.retriggers, + card = card, + } + end + end + end + end, + cry_credits = { + idea = { + "Gold" + }, + art = { + "Mystic Misclick" + }, + code = { + "Jevonn" + } + }, +} +local redbloon = { + object_type = "Joker", + name = "cry-redbloon", + key = "redbloon", + config = { extra = { money = 20, rounds_remaining = 2 } }, + pos = { x = 5, y = 1 }, + immune_to_chemach = true, + rarity = 1, + cost = 4, + order = 97, + blueprint_compat = false, + eternal_compat = false, + perishable_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.money, center.ability.extra.rounds_remaining } } + end, + calculate = function(self, card, context) + 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 + ease_dollars(card.ability.extra.money) + 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 = "$" .. card.ability.extra.money, + colour = G.C.MONEY, + } + end + end + end, + cry_credits = { + idea = { + "Roguefort Cookie" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local apjoker = { + object_type = "Joker", + name = "cry-AP Joker", + key = "apjoker", + pos = { x = 2, y = 0 }, + config = { extra = { x_mult = 4 } }, + rarity = 2, + cost = 6, + order = 37, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "Jevonn" + } + }, +} +local maze = { + object_type = "Joker", + name = "cry-maze", + key = "maze", + pos = { x = 1, y = 1 }, + rarity = 1, + cost = 1, + order = 61, + 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 + end + end, + add_to_deck = function(self, card, from_debuff) + G.GAME.current_round.hands_played = 0 + G.GAME.current_round.discards_used = 0 + end, + cry_credits = { + idea = { + "zy-b-org" + }, + art = { + "Math" + }, + code = { + "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", + name = "cry-panopticon", + key = "panopticon", + pos = { x = 1, y = 4 }, + config = { + extra = {}, + }, + rarity = 1, + order = 47, + cost = 1, + atlas = "atlastwo", + calculate = function(self, card, context) + if context.before and not context.blueprint and not context.retrigger_joker then + if not G.GAME.cry_panop_juggle then + G.GAME.cry_panop_juggle = G.GAME.current_round.hands_left + end + G.GAME.current_round.hands_left = 0 + end + if context.after and not context.blueprint and not context.retrigger_joker then + if G.GAME.cry_panop_juggle then + G.GAME.current_round.hands_left = G.GAME.cry_panop_juggle + G.GAME.cry_panop_juggle = nil + end + end + end, + cry_credits = { + idea = { + "Samario" + }, + art = { + "Samario" + }, + code = { + "Samario", "Toneblock" + } + }, +} +local magnet = { + object_type = "Joker", + name = "cry-magnet", + key = "magnet", + pos = { x = 4, y = 0 }, + config = { extra = { money = 2, Xmoney = 5, slots = 4 } }, + rarity = 1, + cost = 6, + order = 96, + blueprint_compat = false, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.money, center.ability.extra.Xmoney, center.ability.extra.slots } } + end, + atlas = "atlastwo", + calc_dollar_bonus = function(self, card) + if #G.jokers.cards <= card.ability.extra.slots then + return card.ability.extra.money * card.ability.extra.Xmoney + else + return card.ability.extra.money + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local unjust_dagger = { + object_type = "Joker", + name = "cry-Unjust Dagger", + key = "unjust_dagger", + pos = { x = 3, y = 0 }, + config = { extra = { x_mult = 1 } }, + rarity = 2, + cost = 8, + order = 102, + perishable_compat = false, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.x_mult } } + end, + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + local my_pos = nil + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] == card then + my_pos = i + break + end + end + if + context.setting_blind + and not (context.blueprint_card or self).getting_sliced + and my_pos + and G.jokers.cards[my_pos - 1] + and not G.jokers.cards[my_pos - 1].ability.eternal + and not G.jokers.cards[my_pos - 1].getting_sliced + then + local sliced_card = G.jokers.cards[my_pos - 1] + sliced_card.getting_sliced = true + if sliced_card.config.center.rarity == "cry_exotic" then + check_for_unlock({ type = "what_have_you_done" }) + end + G.GAME.joker_buffer = G.GAME.joker_buffer - 1 + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.joker_buffer = 0 + card.ability.extra.x_mult = card.ability.extra.x_mult + sliced_card.sell_cost * 0.2 + card:juice_up(0.8, 0.8) + sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + play_sound("slice1", 0.96 + math.random() * 0.08) + 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, + } + ) + return nil, true + end + end, + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Mystic Misclick" + }, + code = { + "Mystic Misclick" + } + }, +} +local monkey_dagger = { + object_type = "Joker", + name = "cry-Monkey Dagger", + key = "monkey_dagger", + pos = { x = 4, y = 3 }, + config = { extra = { chips = 0 } }, + rarity = 2, + cost = 6, + order = 49, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.chips } } + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + end + local my_pos = nil + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] == card then + my_pos = i + break + end + end + if + context.setting_blind + and not (context.blueprint_card or self).getting_sliced + and my_pos + and G.jokers.cards[my_pos - 1] + and not G.jokers.cards[my_pos - 1].ability.eternal + and not G.jokers.cards[my_pos - 1].getting_sliced + then + local sliced_card = G.jokers.cards[my_pos - 1] + sliced_card.getting_sliced = true + if sliced_card.config.center.rarity == "cry_exotic" then + check_for_unlock({ type = "what_have_you_done" }) + end + G.GAME.joker_buffer = G.GAME.joker_buffer - 1 + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.joker_buffer = 0 + card.ability.extra.chips = card.ability.extra.chips + sliced_card.sell_cost * 10 + card:juice_up(0.8, 0.8) + sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + play_sound("slice1", 0.96 + math.random() * 0.08) + 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, + } + ) + return nil, true + end + end, + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Mystic Misclick" + }, + code = { + "Mystic Misclick" + } + }, +} +local pirate_dagger = { + object_type = "Joker", + name = "cry-Pirate Dagger", + key = "pirate_dagger", + pos = { x = 3, y = 3 }, + config = { extra = { x_chips = 1 } }, + rarity = 2, + cost = 8, + order = 103, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.x_chips } } + 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 + return { + message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), + Xchip_mod = card.ability.extra.x_chips, + } + end + local my_pos = nil + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] == card then + my_pos = i + break + end + end + if + context.setting_blind + and not (context.blueprint_card or self).getting_sliced + and my_pos + and G.jokers.cards[my_pos + 1] + and not G.jokers.cards[my_pos + 1].ability.eternal + and not G.jokers.cards[my_pos + 1].getting_sliced + then + local sliced_card = G.jokers.cards[my_pos + 1] + sliced_card.getting_sliced = true + if sliced_card.config.center.rarity == "cry_exotic" then + check_for_unlock({ type = "what_have_you_done" }) + end + G.GAME.joker_buffer = G.GAME.joker_buffer - 1 + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.joker_buffer = 0 + card.ability.extra.x_chips = card.ability.extra.x_chips + sliced_card.sell_cost * 0.25 + card:juice_up(0.8, 0.8) + sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + play_sound("slice1", 0.96 + math.random() * 0.08) + 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, + } + ) + return nil, true + end + end, + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Mystic Misclick" + }, + code = { + "Mystic Misclick" + } + }, +} +local mondrian = { + object_type = "Joker", + name = "cry-mondrian", + key = "mondrian", + pos = { x = 5, y = 3 }, + config = { extra = { extra = 0.25, x_mult = 1 } }, + rarity = 2, + cost = 7, + order = 44, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + if + context.end_of_round + and G.GAME.current_round.discards_used == 0 + and not context.blueprint + and not context.individual + and not context.repetition + then + card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra + return { + message = localize("k_upgrade_ex"), + card = card, + } + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local sapling = { + object_type = "Joker", + name = "cry-sapling", + key = "sapling", + pos = { x = 3, y = 2 }, + config = { extra = { score = 0, req = 18, check = nil } }, + immune_to_chemach = true, + rarity = 2, + cost = 6, + order = 42, + blueprint_compat = false, + eternal_compat = false, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.score, center.ability.extra.req } } + end, + atlas = "atlasone", + calculate = function(self, card, context) + if + context.individual + and context.cardarea == G.play + and not context.blueprint + and not context.retrigger_joker + then + if context.other_card.ability.effect ~= "Base" then + 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 + end + 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") + 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"]}) + end + end + end, + cry_credits = { + idea = { + "Mjiojio" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local spaceglobe = { + object_type = "Joker", + name = "cry-spaceglobe", + key = "spaceglobe", + pos = { x = 1, y = 4 }, + config = { extra = { x_chips = 1, Xchipmod = 0.2, type = "High Card" } }, + rarity = 3, + cost = 8, + order = 73, + blueprint_compat = true, + perishable_compat = false, + loc_vars = function(self, info_queue, center) + return { + vars = { + center.ability.extra.x_chips, + center.ability.extra.Xchipmod, + localize(center.ability.extra.type, "poker_hands"), + }, + } + end, + 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')) + end, + calculate = function(self, card, context) + if context.cardarea == G.jokers and context.before and not context.blueprint then + if context.scoring_name == card.ability.extra.type then + G.E_MANAGER:add_event(Event({ + func = function() + local _type = {} + for k, v in pairs(G.GAME.hands) do + if v.visible and k ~= card.ability.to_do_type then + _type[#_type + 1] = k + end + end + card.ability.extra.type = pseudorandom_element(_type, pseudoseed("cry_space_globe")) + return true + end, + })) + card.ability.extra.x_chips = card.ability.extra.x_chips + card.ability.extra.Xchipmod + return { + message = localize("k_upgrade_ex"), + card = card, + colour = G.C.CHIPS, + } + 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 + return { + 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 + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local happy = { + object_type = "Joker", + name = "cry-happy", + key = "happy", + pos = { x = 2, y = 1 }, + rarity = 1, + cost = 2, + order = 63, + blueprint_compat = true, + 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 + local sellcreatejoker = 1 + G.GAME.joker_buffer = G.GAME.joker_buffer + sellcreatejoker + G.E_MANAGER:add_event(Event({ + func = function() + for i = 1, sellcreatejoker do + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "happy") + card:add_to_deck() + G.jokers:emplace(card) + card:start_materialize() + G.GAME.joker_buffer = 0 + end + return true + end, + })) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_joker"), colour = G.C.BLUE } + ) + return nil, true + end + if + 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 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 + G.E_MANAGER:add_event(Event({ + func = function() + if roundcreatejoker > 0 then + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "happy") + card:add_to_deck() + G.jokers:emplace(card) + card:start_materialize() + G.GAME.joker_buffer = 0 + end + return true + end, + })) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_joker"), colour = G.C.BLUE } + ) + return nil, true + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local meteor = { + object_type = "Joker", + name = "cry-meteor", + key = "meteor", + pos = { x = 0, y = 2 }, + config = { extra = { chips = 75 } }, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.foil) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_foil + end + return { vars = { center.ability.extra.chips } } + end, + rarity = 1, + cost = 4, + order = 38, + blueprint_compat = true, + calculate = function(self, card, context) + if + context.other_joker + and context.other_joker.edition + and context.other_joker.edition.foil == true + and card ~= context.other_joker + 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_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + end + if context.individual and context.cardarea == G.play then + if context.other_card.edition and context.other_card.edition.foil == true then + return { + chips = card.ability.extra.chips, + colour = G.C.CHIPS, + card = card, + } + end + end + if + context.individual + and context.cardarea == G.hand + and context.other_card.edition + and context.other_card.edition.foil == true + and not context.end_of_round + then + if context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + else + return { + chips = card.ability.extra.chips, --this doesn't exist yet :pensive: if only... + card = card + } + end + end + end, + atlas = "atlastwo", + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Jevonn" + } + }, +} +local exoplanet = { + object_type = "Joker", + name = "cry-exoplanet", + key = "exoplanet", + pos = { x = 1, y = 2 }, + config = { extra = { mult = 15 } }, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.holo) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_holo + end + return { vars = { center.ability.extra.mult } } + end, + rarity = 1, + order = 39, + cost = 3, + blueprint_compat = true, + calculate = function(self, card, context) + if + context.other_joker + and context.other_joker.edition + and context.other_joker.edition.holo == true + and card ~= context.other_joker + 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_mult", vars = { card.ability.extra.mult } }), + mult_mod = card.ability.extra.mult, + } + end + if context.individual and context.cardarea == G.play then + if context.other_card.edition and context.other_card.edition.holo == true then + return { + mult = card.ability.extra.mult, + colour = G.C.MULT, + card = card, + } + end + end + if + context.individual + and context.cardarea == G.hand + and context.other_card.edition + and context.other_card.edition.holo == true + and not context.end_of_round + then + if context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + else + return { + h_mult = card.ability.extra.mult, + card = card + } + end + end + end, + atlas = "atlastwo", + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Jevonn" + } + }, +} +local stardust = { + object_type = "Joker", + name = "cry-stardust", + key = "stardust", + pos = { x = 2, y = 2 }, + config = { extra = { xmult = 2 } }, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.polychrome) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_polychrome + end + return { vars = { center.ability.extra.xmult } } + end, + rarity = 1, + cost = 2, + order = 40, + blueprint_compat = true, + calculate = function(self, card, context) + if + context.other_joker + and context.other_joker.edition + and context.other_joker.edition.polychrome == true + and card ~= context.other_joker + 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 = { card.ability.extra.xmult } }), + Xmult_mod = card.ability.extra.xmult, + } + end + if context.individual and context.cardarea == G.play then + if context.other_card.edition and context.other_card.edition.polychrome == true then + return { + x_mult = card.ability.extra.xmult, + colour = G.C.MULT, + card = card, + } + end + end + if + context.individual + and context.cardarea == G.hand + and context.other_card.edition + and context.other_card.edition.polychrome == true + and not context.end_of_round + then + if context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + else + return { + x_mult = card.ability.extra.xmult, + card = card + } + end + end + end, + atlas = "atlastwo", + cry_credits = { + idea = { + "Mystic Misclick" + }, + art = { + "Linus Goof Balls" + }, + code = { + "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", + name = "cry-rnjoker Joker", --:balatrojoker: + key = "rnjoker", + pos = { x = 5, y = 4 }, + config = {}, + order = 59, + loc_vars = function(self, info_queue, card) + local vars = { + vars = { + (card.ability.extra and card.ability.extra.value_mod and card.ability.extra.value) or 0, + (card.ability.extra and card.ability.extra.value and card.ability.extra.value_mod) + or (card.ability.extra and card.ability.extra.value) + or 0, + card.ability.extra and card.ability.extra.cond_value or 0, + G.GAME and G.GAME.probabilities.normal or 1, + }, + } + if card.ability.extra and card.ability.extra.color then + vars.vars.colours = { card.ability.extra.color } + end + return vars + end, + rarity = 2, + cost = 6, + blueprint_compat = true, + set_ability = function(self, card, initial, delay_sprites) + card.ability.abilities = {} + rnjoker_randomize(card) + end, + calculate = function(self, card, context) + if card.ability and card.ability.abilities then + for i, j in ipairs(card.ability.abilities) do + local j_context = j.context + local indiv = false + if j_context ~= "cry_payout" then + local valid_context = not not context[j.context] + if j.scale_value and context.blueprint then + valid_context = false + end + if (j_context == "playing_card_added") and card.getting_sliced then + valid_context = false + end + if (j_context == "setting_blind") and card.getting_sliced then + valid_context = false + end + if (j_context == "setting_blind") and card.getting_sliced then + valid_context = false + end + if (j_context == "before") and (card.area ~= G.jokers) then + valid_context = false + end + if (j_context == "after") and (card.area ~= G.jokers) then + valid_context = false + end + if (j_context == "joker_main") and (card.area ~= G.jokers) then + valid_context = false + end + if (j_context == "end_of_round") and (context.repetition or context.individual) then + valid_context = false + end + if + (j_context == "individual_play") + and context.individual + and not context.repetition + and (context.cardarea == G.play) + then + valid_context = true + indiv = true + end + if + (j_context == "individual_hand_score") + and context.individual + and not context.repetition + and (context.cardarea == G.hand) + and not context.end_of_round + then + valid_context = true + indiv = true + end + if + (j_context == "individual_hand_end") + and context.individual + and not context.repetition + and (context.cardarea == G.hand and context.end_of_round) + then + valid_context = true + indiv = true + end + if (j_context == "repetition_play") and context.repetition and (context.cardarea == G.play) then + valid_context = true + end + if (j_context == "repetition_hand") and context.repetition and (context.cardarea == G.hand) then + valid_context = true + end + if valid_context then + local cond_passed = false + local times_passed = 1 + if j.cond then + if j.cond == "buy_common" then + if + context.card + and context.card.ability + and (context.card.ability.set == "Joker") + and (context.card.config.center.rarity == 1) + then + cond_passed = true + end + elseif j.cond == "buy_uncommon" then + if + context.card + and context.card.ability + and (context.card.ability.set == "Joker") + and (context.card.config.center.rarity == 2) + then + cond_passed = true + end + elseif j.cond == "tarot" then + local card = context.card or context.consumeable + if card and card.ability and (card.ability.set == "Tarot") then + cond_passed = true + end + elseif j.cond == "planet" then + local card = context.card or context.consumeable + if card and card.ability and (card.ability.set == "Planet") then + cond_passed = true + end + elseif j.cond == "spectral" then + local card = context.card or context.consumeable + if card and card.ability and (card.ability.set == "Spectral") then + cond_passed = true + end + elseif j.cond == "joker" then + if context.card and context.card.ability and (context.card.ability.set == "Joker") then + cond_passed = true + end + elseif j.cond == "suit" then + times_passed = 0 + local cards = context.cards + if cards == nil then + cards = context.removed + end + if cards == nil then + cards = { context.other_card } + end + for i2, j2 in ipairs(cards) do + if j2:is_suit(j.suit) then + cond_passed = true + times_passed = times_passed + 1 + end + end + elseif j.cond == "rank" then + times_passed = 0 + local cards = context.cards + if cards == nil then + cards = context.removed + end + if cards == nil then + cards = { context.other_card } + end + for i2, j2 in ipairs(cards) do + if j2:get_id() == j.rank then + cond_passed = true + times_passed = times_passed + 1 + end + end + elseif j.cond == "face" then + times_passed = 0 + local cards = context.cards + if cards == nil then + cards = context.removed + end + if cards == nil then + cards = { context.other_card } + end + for i2, j2 in ipairs(cards) do + if j2:is_face() then + cond_passed = true + times_passed = times_passed + 1 + end + end + elseif j.cond == "boss" then + if context.blind.boss and not (context.blind.config and context.blind.config.bonus) then + cond_passed = true + end + elseif j.cond == "non_boss" then + if context.blind and not G.GAME.blind.boss then + cond_passed = true + end + elseif j.cond == "small" then + if context.blind == G.P_BLINDS.bl_small then + cond_passed = true + end + elseif j.cond == "big" then + if context.blind == G.P_BLINDS.bl_big then + cond_passed = true + end + elseif j.cond == "first" then + if G.GAME.current_round.hands_played == 0 then + cond_passed = true + end + elseif j.cond == "last" then + if G.GAME.current_round.hands_left == 0 then + cond_passed = true + end + elseif j.cond == "common" then + if context.other_joker.config.center.rarity == 1 then + cond_passed = true + end + elseif j.cond == "uncommon" then + if context.other_joker.config.center.rarity == 2 then + cond_passed = true + end + elseif j.cond == "rare" then + if context.other_joker.config.center.rarity == 3 then + cond_passed = true + end + elseif j.cond == "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 + if #context.full_hand >= j.cond_value then + cond_passed = true + end + elseif j.cond == "or_less" then + if #context.full_hand <= j.cond_value then + cond_passed = true + end + elseif j.cond == "hands_left" then + if G.GAME.current_round.hands_left == j.cond_value then + cond_passed = true + end + elseif j.cond == "discards_left" then + if G.GAME.current_round.discards_left == j.cond_value then + cond_passed = true + end + elseif j.cond == "first_discard" then + if G.GAME.current_round.discards_used <= 0 then + cond_passed = true + end + elseif j.cond == "last_discard" then + if G.GAME.current_round.discards_left <= 1 then + cond_passed = true + end + elseif j.cond == "odds" then + if + pseudorandom("rnj") + < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) + then + cond_passed = true + end + end + else + cond_passed = true + end + if cond_passed then + if j.context == "other_joker" then + local stats = { + plus_mult = "a_mult", + plus_chips = "a_chips", + x_mult = "a_xmult", + x_chips = "a_xchips", + } + local mods = { + plus_chips = "chip_mod", + plus_mult = "mult_mod", + x_mult = "Xmult_mod", + x_chips = "Xchip_mod", + } + local table = {} + 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({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + return table + elseif (j.context == "repetition_play") or (j.context == "repetition_hand") then + return { + message = localize("k_again_ex"), + repetitions = 1, + card = card, + } + elseif j.scale_value then + card.ability.extra.value = card.ability.extra.value + + (card.ability.extra.value_mod * times_passed) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + if j.stat == "h_size" then + G.hand:change_size(card.ability.extra.value_mod) + end + elseif j.act then + local j_mod = 0 + if j.context == "selling_self" and (card.ability.set == "Joker") then + j_mod = 1 + end + if j.context == "selling_card" and (context.card.ability.set == "Joker") then + j_mod = 1 + end + local c_mod = 0 + if j.context == "selling_self" and card.ability.consumeable then + c_mod = 1 + end + if j.context == "selling_card" and card.ability.consumeable then + c_mod = 1 + end + if j.act == "make_joker" then + local amount = card.ability.extra.value * times_passed + if + (G.jokers.config.card_limit + j_mod - #G.jokers.cards - G.GAME.joker_buffer) + < amount + then + amount = G.jokers.config.card_limit + + j_mod + - #G.jokers.cards + - G.GAME.joker_buffer + end + if amount > 0 then + G.GAME.joker_buffer = G.GAME.joker_buffer + amount + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + for i = 1, amount do + if G.jokers.config.card_limit + j_mod > #G.jokers.cards then + local card = create_card( + "Joker", + G.jokers, + nil, + nil, + nil, + nil, + nil, + "rnj" + ) + card:add_to_deck() + G.jokers:emplace(card) + else + break + end + end + G.GAME.joker_buffer = 0 + return true + end, + })) + end + elseif j.act == "make_tarot" then + local amount = card.ability.extra.value * times_passed + if + ( + G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + ) < amount + then + amount = G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + end + if amount > 0 then + G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + for i = 1, amount do + if + G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + then + local card = create_card( + "Tarot", + G.consumeables, + nil, + nil, + nil, + nil, + nil, + "rnj" + ) + card:add_to_deck() + G.consumeables:emplace(card) + else + break + end + end + G.GAME.consumeable_buffer = 0 + return true + end, + })) + end + elseif j.act == "make_planet" then + local amount = card.ability.extra.value * times_passed + if + ( + G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + ) < amount + then + amount = G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + end + if amount > 0 then + G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + for i = 1, amount do + if + G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + then + local card = create_card( + "Planet", + G.consumeables, + nil, + nil, + nil, + nil, + nil, + "rnj" + ) + card:add_to_deck() + G.consumeables:emplace(card) + else + break + end + end + G.GAME.consumeable_buffer = 0 + return true + end, + })) + end + elseif j.act == "make_spectral" then + local amount = card.ability.extra.value * times_passed + if + ( + G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + ) < amount + then + amount = G.consumeables.config.card_limit + + c_mod + - #G.consumeables.cards + - G.GAME.consumeable_buffer + end + if amount > 0 then + G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + amount + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + for i = 1, amount do + if + G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + then + local card = create_card( + "Spectral", + G.consumeables, + nil, + nil, + nil, + nil, + nil, + "rnj" + ) + card:add_to_deck() + G.consumeables:emplace(card) + else + break + end + end + G.GAME.consumeable_buffer = 0 + return true + end, + })) + end + elseif j.act == "add_dollars" then + ease_dollars(card.ability.extra.value) + return { + message = localize("$") .. card.ability.extra.value, + colour = G.C.MONEY, + card = card, + } + end + end + end + end + if j.stat and context.individual and indiv then + local cond_passed = false + if j.cond == "suit" then + if context.other_card:is_suit(j.suit) then + cond_passed = true + end + elseif j.cond == "rank" then + if context.other_card:get_id() == j.rank then + cond_passed = true + end + elseif j.cond == "face" then + if context.other_card:is_face() then + cond_passed = true + end + elseif j.cond == "odds" then + if + pseudorandom("rnj") + < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) + then + cond_passed = true + end + end + if not j.cond then + cond_passed = true + end + if cond_passed then + if (context.cardarea == G.hand) and context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + end + if j.scale_value then + card.ability.extra.value = card.ability.extra.value + card.ability.extra.value_mod + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + if j.stat == "h_size" then + G.hand:change_size(card.ability.extra.value_mod) + end + else + local stats = { + plus_mult = "mult", + plus_chips = "chips", + } + if context.cardarea == G.hand then + local stats = { + plus_mult = "h_mult", + plus_chips = "h_chips", + } + end + local stat = stats[j.stat] or j.stat + local colors = { + plus_mult = G.C.RED, + plus_chips = G.C.BLUE, + x_mult = G.C.RED, + x_chips = G.C.BLUE, + } + local table = { + card = card, + } + table.colour = colors[j.stat] + table[stat] = card.ability.extra.value + return table + end + end + end + if context.joker_main and j.stat and (j.stat ~= "h_size") and (j.stat ~= "money") then + local cond_passed = false + if j_context ~= "joker_main" then + cond_passed = true + end + if j.cond == "first" then + if G.GAME.current_round.hands_played == 0 then + cond_passed = true + end + elseif j.cond == "last" then + if G.GAME.current_round.hands_left == 0 then + cond_passed = true + end + elseif j.cond == "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 + if #context.full_hand >= j.cond_value then + cond_passed = true + end + elseif j.cond == "or_less" then + if #context.full_hand <= j.cond_value then + cond_passed = true + end + elseif j.cond == "odds" then + if + pseudorandom("rnj") + < ((G.GAME and G.GAME.probabilities.normal or 1) / card.ability.extra.cond_value) + then + cond_passed = true + end + end + if not j.cond then + cond_passed = true + end + if cond_passed then + local stats = { + plus_mult = "a_mult", + plus_chips = "a_chips", + x_mult = "a_xmult", + x_chips = "a_xchips", + } + local mods = { + plus_mult = "mult_mod", + plus_chips = "chip_mod", + x_mult = "Xmult_mod", + x_chips = "Xchip_mod", + } + local table = {} + table.message = localize({ + type = "variable", + key = stats[j.stat], + vars = { card.ability.extra.value }, + }) + table[mods[j.stat]] = card.ability.extra.value + return table + end + end + end + end + end + if + not context.individual + and not context.repetition + and not card.debuff + and context.end_of_round + and not context.blueprint + and G.GAME.blind.boss + and not (G.GAME.blind.config and G.GAME.blind.config.bonus) + then + local hand_size = 0 + if card.ability and card.ability.abilities then + for i, j in ipairs(card.ability.abilities) do + if j.stat == "h_size" then + hand_size = hand_size + card.ability.extra.value + end + end + end + G.hand:change_size(-hand_size) + rnjoker_randomize(card) + return { + message = localize("k_reset"), + colour = G.C.RED, + } + end + end, + add_to_deck = function(self, card, from_debuff) + local hand_size = 0 + if card.ability and card.ability.abilities then + for i, j in ipairs(card.ability.abilities) do + if j.stat == "h_size" then + hand_size = hand_size + card.ability.extra.value + end + end + end + G.hand:change_size(hand_size) + end, + remove_from_deck = function(self, card, from_debuff) + local hand_size = 0 + if card.ability and card.ability.abilities then + for i, j in ipairs(card.ability.abilities) do + if j.stat == "h_size" then + hand_size = hand_size + card.ability.extra.value + end + end + end + G.hand:change_size(-hand_size) + end, + generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + local len = ( + card.ability + and card.ability.abilities + and card.ability.abilities[1].loc_txt + and #card.ability.abilities[1].loc_txt + ) or 0 + local target = { + type = "descriptions", + key = self.key, + set = self.set, + nodes = desc_nodes, + vars = specific_vars or {}, + } + 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 + end + local new_loc = { text = {} } + if + card.ability + and card.ability.abilities + and card.ability.abilities[1].loc_txt + and #card.ability.abilities[1].loc_txt + then + for i, j in ipairs(card.ability.abilities[1].loc_txt) do + table.insert(new_loc.text, j) + end + new_loc.text_parsed = card.ability.abilities[1].text_parsed + end + if not full_UI_table.name then + full_UI_table.name = + localize({ type = "name", set = self.set, key = target.key or self.key, nodes = full_UI_table.name }) + end + if specific_vars and specific_vars.debuffed then + target = { + type = "other", + key = "debuffed_" .. (specific_vars.playing_card and "playing_card" or "default"), + nodes = desc_nodes, + } + localize(target) + else + localalize_with_direct(new_loc, target) + end + end, + calc_dollar_bonus = function(self, card) + if card.ability and card.ability.abilities then + for i, j in ipairs(card.ability.abilities) do + if j.stat == "money" then + if card.ability.extra.value > 0 then + return card.ability.extra.value + end + end + end + end + end, + atlas = "atlastwo", + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local duos = { + object_type = "Joker", + name = "cry-duos", + key = "duos", + order = 90, + pos = { x = 0, y = 0 }, + config = { Xmult = 2.5, type = "Two Pair" }, + loc_vars = function(self, info_queue, card) + 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["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, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local home = { + object_type = "Joker", + name = "cry-home", + key = "home", + order = 91, + pos = { x = 2, y = 0 }, + config = { Xmult = 3.5, type = "Full House" }, + loc_vars = function(self, info_queue, card) + 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["Full House"]) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local nuts = { + object_type = "Joker", + name = "cry-nuts", + key = "nuts", + order = 92, + pos = { x = 1, y = 0 }, + config = { Xmult = 5, type = "Straight Flush" }, + loc_vars = function(self, info_queue, card) + 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["Straight Flush"]) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local quintet = { + object_type = "Joker", + name = "cry-quintet", + key = "quintet", + order = 93, + pos = { x = 3, y = 0 }, + config = { Xmult = 5, type = "Five of a Kind" }, + loc_vars = function(self, info_queue, card) + 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["Five of a Kind"]) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["Five of a Kind"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local unity = { + object_type = "Joker", + name = "cry-unity", + key = "unity", + order = 94, + pos = { x = 4, y = 0 }, + config = { Xmult = 9, type = "Flush House" }, + loc_vars = function(self, info_queue, card) + 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["Flush House"]) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["Flush House"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local swarm = { + object_type = "Joker", + name = "cry-swarm", + key = "swarm", + order = 95, + pos = { x = 5, y = 0 }, + config = { Xmult = 9, type = "Flush Five" }, + loc_vars = function(self, info_queue, card) + 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["Flush Five"]) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["Flush Five"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local stronghold = { + object_type = "Joker", + name = "cry-stronghold", + key = "stronghold", + order = 114, + 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") } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Bulwark"].played > 0 then + return true + end + return false + end, +} +local wtf = { + object_type = "Joker", + name = "cry-wtf", + key = "wtf", + order = 115, + 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") } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Clusterfuck"].played > 0 then + return true + end + return false + end, +} +local clash = { + object_type = "Joker", + name = "cry-clash", + key = "clash", + order = 116, + 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") } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end + end, + in_pool = function(self) + if G.GAME.hands["cry_UltPair"].played > 0 then + return true + end + return false + end, +} +local filler = { + object_type = "Joker", + name = "cry-filler", + key = "filler", + pos = { x = 0, y = 1 }, + pools = {["Meme"] = true}, + config = { Xmult = 1.00000000000001, type = "High Card" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } + end, + atlas = "atlasthree", + rarity = 3, + order = 89, + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + colour = G.C.RED, + Xmult_mod = card.ability.x_mult, + } + end + end, + cry_credits = { + idea = { + "Mathguy" + }, + art = { + "Mathguy" + }, + code = { + "Mathguy" + } + }, +} +local giggly = { + object_type = "Joker", + name = "cry-Giggly Joker", + key = "giggly", + effect = "Cry Type Mult", + pos = { x = 0, y = 5 }, + config = { t_mult = 4, type = "High Card" }, + order = 16, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } + end, + atlas = "atlasthree", + rarity = 1, + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local nutty = { + object_type = "Joker", + name = "cry-Nutty Joker", + key = "nutty", + effect = "Cry Type Mult", + pos = { x = 1, y = 5 }, + order = 17, + config = { t_mult = 19, type = "Four of a Kind" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, 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["Four of a Kind"]) then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local manic = { + object_type = "Joker", + name = "cry-Manic Joker", + key = "manic", + effect = "Cry Type Mult", + pos = { x = 2, y = 5 }, + order = 18, + config = { t_mult = 22, type = "Straight Flush" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, 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["Straight Flush"]) then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local silly = { + object_type = "Joker", + name = "cry-Silly Joker", + key = "silly", + pos = { x = 3, y = 5 }, + effect = "Cry Type Mult", + order = 19, + config = { t_mult = 16, type = "Full House" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, 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["Full House"]) then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local delirious = { + object_type = "Joker", + name = "cry-Delirious Joker", + key = "delirious", + effect = "Cry Type Mult", + pos = { x = 4, y = 5 }, + order = 20, + config = { t_mult = 22, type = "Five of a Kind" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, 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["Five of a Kind"]) then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Five of a Kind"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local wacky = { + object_type = "Joker", + name = "cry-Wacky Joker", + key = "wacky", + pos = { x = 5, y = 5 }, + order = 21, + config = { t_mult = 30, type = "Flush House" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } + end, + atlas = "atlasthree", + rarity = 1, + cost = 4, + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Flush House"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local kooky = { + object_type = "Joker", + name = "cry-Kooky Joker", + key = "kooky", + pos = { x = 6, y = 5 }, + order = 22, + config = { t_mult = 30, type = "Flush Five" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } + end, + atlas = "atlasthree", + rarity = 1, + effect = "Cry Type Mult", + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Flush Five"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} + +local bonkers = { + object_type = "Joker", + name = "cry-Bonkers Joker", + key = "bonkers", + pos = { x = 8, y = 5 }, + order = 108, + config = { t_mult = 20, type = "cry_Bulwark" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize("cry_hand_bulwark") } } + end, + atlas = "atlasthree", + rarity = 1, + effect = "Cry Type Mult", + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Bulwark"].played > 0 then + return true + end + return false + end, +} + +local fuckedup = { + object_type = "Joker", + name = "cry-Fucked-Up Joker", + key = "fuckedup", + pos = { x = 7, y = 2 }, + order = 109, + config = { t_mult = 37, type = "cry_Clusterfuck" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize("cry_hand_clusterfuck") } } + end, + atlas = "atlasthree", + rarity = 1, + effect = "Cry Type Mult", + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Clusterfuck"].played > 0 then + return true + end + return false + end, +} + +local foolhardy = { + object_type = "Joker", + name = "cry-Foolhardy Joker", + key = "foolhardy", + pos = { x = 8, y = 2 }, + order = 110, + config = { t_mult = 42, type = "cry_UltPair" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_mult, localize("cry_hand_ultpair") } } + end, + atlas = "atlasthree", + rarity = 1, + effect = "Cry Type Mult", + 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 + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), + colour = G.C.RED, + mult_mod = card.ability.t_mult, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_UltPair"].played > 0 then + return true + end + return false + end, +} + +local dubious = { + object_type = "Joker", + name = "cry-Dubious Joker", + key = "dubious", + pos = { x = 0, y = 6 }, + order = 24, + config = { t_chips = 20, type = "High Card" }, + effect = "Cry Type Chips", + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_chips, localize(card.ability.type, "poker_hands") } } + end, + atlas = "atlasthree", + rarity = 1, + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local shrewd = { + object_type = "Joker", + name = "cry-Shrewd Joker", + key = "shrewd", + pos = { x = 1, y = 6 }, + order = 25, + effect = "Cry Type Chips", + config = { t_chips = 150, type = "Four of a Kind" }, + loc_vars = function(self, info_queue, card) + 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["Four of a Kind"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local tricksy = { + object_type = "Joker", + name = "cry-Tricksy Joker", + key = "tricksy", + effect = "Cry Type Chips", + order = 26, + pos = { x = 2, y = 6 }, + config = { t_chips = 170, type = "Straight Flush" }, + loc_vars = function(self, info_queue, card) + 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["Straight Flush"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local foxy = { + object_type = "Joker", + name = "cry-Foxy Joker", + key = "foxy", + pos = { x = 3, y = 6 }, + order = 27, + effect = "Cry Type Chips", + config = { t_chips = 130, type = "Full House" }, + loc_vars = function(self, info_queue, card) + 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["Full House"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local savvy = { + object_type = "Joker", + name = "cry-Savvy Joker", + key = "savvy", + pos = { x = 4, y = 6 }, + effect = "Cry Type Chips", + order = 28, + config = { t_chips = 170, type = "Five of a Kind" }, + loc_vars = function(self, info_queue, card) + 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["Five of a Kind"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Five of a Kind"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local subtle = { + object_type = "Joker", + name = "cry-Subtle Joker", + key = "subtle", + pos = { x = 5, y = 6 }, + effect = "Cry Type Chips", + order = 29, + config = { t_chips = 240, type = "Flush House" }, + loc_vars = function(self, info_queue, card) + 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["Flush House"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Flush House"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local discreet = { + object_type = "Joker", + name = "cry-Discreet Joker", + key = "discreet", + pos = { x = 6, y = 6 }, + effect = "Cry Type Chips", + order = 30, + config = { t_chips = 240, type = "Flush Five" }, + loc_vars = function(self, info_queue, card) + 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["Flush Five"]) then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["Flush Five"].played > 0 then + return true + end + return false + end, + cry_credits = { + idea = { + "Luigicat11" + }, + art = { + "Luigicat11" + }, + code = { + "Math" + } + }, +} +local adroit = { + object_type = "Joker", + name = "cry-Adroit Joker", + key = "adroit", + pos = { x = 7, y = 4 }, + effect = "Cry Type Chips", + order = 111, + config = { t_chips = 170, type = "cry_Bulwark" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_chips, localize("cry_hand_bulwark") } } + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Bulwark"].played > 0 then + return true + end + return false + end, +} +local penetrating = { + object_type = "Joker", + name = "cry-Penetrating Joker", + key = "penetrating", + pos = { x = 7, y = 3 }, + effect = "Cry Type Chips", + order = 112, + config = { t_chips = 270, type = "cry_Clusterfuck" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_chips, localize("cry_hand_clusterfuck") } } + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_Clusterfuck"].played > 0 then + return true + end + return false + end, +} +local treacherous = { + object_type = "Joker", + name = "cry-Treacherous Joker", + key = "treacherous", + pos = { x = 8, y = 3 }, + effect = "Cry Type Chips", + order = 113, + config = { t_chips = 300, type = "cry_UltPair" }, + loc_vars = function(self, info_queue, card) + return { vars = { card.ability.t_chips, localize("cry_hand_ultpair") } } + 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 + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), + colour = G.C.BLUE, + chip_mod = card.ability.t_chips, + } + end + end, + in_pool = function(self) + if G.GAME.hands["cry_UltPair"].played > 0 then + return true + end + return false + end, +} +local coin = { + object_type = "Joker", + name = "cry-coin", + key = "coin", + pos = { x = 0, y = 2 }, + config = { extra = { money = 1 } }, + rarity = 1, + order = 53, + cost = 5, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.money, center.ability.extra.money * 10 } } + end, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.selling_card and context.card.ability.set == "Joker" then + local option = pseudorandom(pseudoseed("coin"), card.ability.extra.money, card.ability.extra.money * 10) + ease_dollars(option) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("$") .. option, colour = G.C.MONEY, delay = 0.45 } + ) + return nil, true + end + end, + cry_credits = { + idea = { + "Squiddy" + }, + art = { + "Timetoexplode" + }, + code = { + "Jevonn" + } + }, +} +local wheelhope = { + object_type = "Joker", + name = "cry-wheelhope", + key = "wheelhope", + pos = { x = 1, y = 1 }, + config = { extra = { extra = 0.5, x_mult = 1 } }, + rarity = 2, + cost = 5, + order = 74, + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.c_wheel_of_fortune + return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } + 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 + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } + end + if context.consumeable then + if + context.consumeable.ability.name == "The Wheel of Fortune" + and not context.consumeable.cry_wheel_success + then + card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra + 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, + cry_credits = { + idea = { + "Linus Goof Balls" + }, + art = { + "Linus Good Balls" + }, + code = { + "Toneblock" + } + }, +} +local oldblueprint = { + object_type = "Joker", + name = "cry-oldblueprint", + key = "oldblueprint", + pos = { x = 2, y = 1 }, + config = { extra = { odds = 4 } }, + rarity = 1, + cost = 5, + order = 83, + loc_vars = function(self, info_queue, center) + return { vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), center.ability.extra.odds } } + end, + blueprint_compat = true, + eternal_compat = false, + atlas = "atlasthree", + 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("oldblueprint") < G.GAME.probabilities.normal / card.ability.extra.odds 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, + })) + return { + message = { localize("k_extinct_ex") }, + colour = G.C.FILTER, + } + else + return { + message = { localize("k_safe_ex") }, + colour = G.C.FILTER, + } + end + end + local other_joker = nil + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] == card then + other_joker = G.jokers.cards[i + 1] + end + end + if other_joker and other_joker ~= self then + context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1 + context.blueprint_card = context.blueprint_card or card + + if context.blueprint > #G.jokers.cards + 1 then + return + end + + local other_joker_ret, trig = other_joker:calculate_joker(context) + 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.no_callback = true + return other_joker_ret + end + end + end, + cry_credits = { + idea = { + "Linus Goof Balls" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Math" + } + }, +} +local night = { + object_type = "Joker", + name = "cry-night", + key = "night", + config = { extra = { mult = 3 } }, + pos = { x = 3, y = 1 }, + rarity = 3, + cost = 6, + order = 41, + eternal_compat = false, + blueprint_compat = true, + atlas = "atlasthree", + loc_vars = function(self, info_queue, center) + 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 card.ability.extra.mult > 1 then + return { + 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 + if G.GAME.current_round.hands_left <= 0 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, + })) + return { + message = localize("k_extinct_ex"), + 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) + 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) + end + end + end, + cry_credits = { + idea = { + "Linus Goof Balls" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Jevonn" + } + }, +} +local busdriver = { + object_type = "Joker", + name = "cry-busdriver", + key = "busdriver", + config = { extra = { mult = 50, odds = 4 } }, + pos = { x = 5, y = 1 }, + immune_to_chemach = true, + rarity = 2, + cost = 7, + order = 46, + atlas = "atlasthree", + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { + vars = { + "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 3), + center.ability.extra.mult, + center.ability.extra.odds, + }, + } + 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 pseudorandom("busdriver") < G.GAME.probabilities.normal / card.ability.extra.odds * 3 then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), + mult_mod = card.ability.extra.mult, + colour = G.C.MULT, + } + else + return { + message = localize({ type = "variable", key = "a_mult_minus", vars = { card.ability.extra.mult } }), + mult_mod = (card.ability.extra.mult * -1), + colour = G.C.MULT, + } + end + end + end, + cry_credits = { + idea = { + "Linus Goof Balls" + }, + art = { + "Linus Goof Balls" + }, + code = { + "Jevonn" + } + }, +} +local translucent = { + object_type = "Joker", + name = "cry-translucent Joker", + key = "translucent", + pos = { x = 5, y = 2 }, + rarity = 1, + cost = 4, + order = 52, + eternal_compat = false, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.selling_self and not (context.retrigger_joker or context.blueprint) then + local jokers = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] ~= card and not G.jokers.cards[i].debuff then + jokers[#jokers + 1] = G.jokers.cards[i] + end + end + if #jokers > 0 then + if #G.jokers.cards <= G.jokers.config.card_limit then + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_duplicated_ex") }) + local chosen_joker = pseudorandom_element(jokers, pseudoseed("trans")) + local _card = + copy_card(chosen_joker, nil, nil, nil, chosen_joker.edition and chosen_joker.edition.negative) + _card:add_to_deck() + _card:set_banana(true) + _card.ability.perishable = true -- Done manually to bypass perish compat + _card.ability.perish_tally = G.GAME.perishable_rounds + G.jokers:emplace(_card) + return nil, true + else + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_room_ex") }) + end + else + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_other_jokers") }) + end + end + end, + cry_credits = { + idea = { + "SDM0" + }, + art = { + "SDM0" + }, + code = { + "SDM0" + } + }, +} +local morse = { + object_type = "Joker", + name = "cry-morse", + key = "morse", + pos = { x = 5, y = 1 }, + config = { extra = { bonus = 2, money = 1 } }, + rarity = 1, + cost = 5, + order = 57, + perishable_compat = false, + blueprint_compat = false, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.bonus, center.ability.extra.money } } + end, + atlas = "atlastwo", + calculate = function(self, card, context) + if context.selling_card and context.card.edition and not context.blueprint then + card.ability.extra.money = card.ability.extra.money + card.ability.extra.bonus + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize("k_upgrade_ex"), + colour = G.C.MONEY, + }), + } + 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 = { + "Jevonn" + } + }, +} +local membershipcard = { + object_type = "Joker", + name = "cry-membershipcard", + key = "membershipcard", + config = { extra = { Xmult_mod = 0.1 } }, + pos = { x = 6, y = 2 }, + soul_pos = { x = 6, y = 1 }, + rarity = 4, + cost = 20, + order = 35, + blueprint_compat = true, + atlas = "atlasthree", + loc_vars = function(self, info_queue, card) + 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 + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { card.ability.extra.Xmult_mod * GLOBAL_cry_member_count }, + }), + Xmult_mod = card.ability.extra.Xmult_mod * GLOBAL_cry_member_count, + } + end + end, + cry_credits = { + idea = { + "Toneblock" + }, + art = { + "HexaCryonic" + }, + code = { + "Toneblock" + } + }, +} +local kscope = { + object_type = "Joker", + name = "cry-kscope", + key = "kscope", + pos = { x = 3, y = 4 }, + rarity = 3, + cost = 7, + order = 55, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.end_of_round and G.GAME.blind.boss and not context.individual and not context.repetition then + local eligiblejokers = {} + for k, v in pairs(G.jokers.cards) do + if v.ability.set == "Joker" and not v.edition and v ~= card then + table.insert(eligiblejokers, v) + end + end + if #eligiblejokers > 0 then + --you just lost the game + local eligible_card = + pseudorandom_element(eligiblejokers, pseudoseed("nevergonnagiveyouupnevergonnaletyoudown")) + local edition = { polychrome = true } + eligible_card:set_edition(edition, true) + check_for_unlock({ type = "have_edition" }) + end + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Jevonn" + }, + code = { + "Jevonn" + } + }, +} +local cryptidmoment = { + object_type = "Joker", + name = "cry_cryptidmoment", + key = "cryptidmoment", + pos = { x = 6, y = 0 }, + config = { extra = { money = 1 } }, + loc_vars = function(self, info_queue, center) + return { vars = { math.max(1, math.floor(center.ability.extra.money)) } } + end, + rarity = 1, + cost = 4, + order = 65, + eternal_compat = false, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.selling_self and not context.blueprint then + for k, v in ipairs(G.jokers.cards) do + if v.set_cost then + v.ability.extra_value = (v.ability.extra_value or 0) + + math.max(1, math.floor(card.ability.extra.money)) + v:set_cost() + end + end + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_val_up"), colour = G.C.MONEY }) + end + end, + cry_credits = { + idea = { + "Jevonn" + }, + art = { + "Yamper" + }, + code = { + "Jevonn" + } + }, +} +local flipside = { + object_type = "Joker", + name = "cry-Flip Side", + key = "flip_side", + pos = { x = 1, y = 0 }, + rarity = 2, + cost = 7, + order = 107, + atlas = "placeholders", + no_dbl = true, + loc_vars = function(self, info_queue) + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided + end, + add_to_deck = function(self, card, from_debuff) + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_double_sided then + G.jokers.cards[i]:init_dbl_side() + G.jokers.cards[i]:remove_from_deck(true) + G.jokers.cards[i].dbl_side:add_to_deck(true) + end + end + end, + remove_from_deck = function(self, card, from_debuff) + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].edition and G.jokers.cards[i].edition.cry_double_sided then + G.jokers.cards[i]:init_dbl_side() + G.jokers.cards[i]:add_to_deck(true) + G.jokers.cards[i].dbl_side:remove_from_deck(true) + end + end + end, + cry_credits = { + jolly = { + "Jolly Open Winner", + "Axolotolus", + }, + }, + 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.dbl_side then + return { + message = localize("k_again_ex"), + repetitions = 1, + card = card, + } + else + return nil, true + end + end + end, + cry_credits = { + idea = { + "Axolotus" + }, + art = { + ":(" + }, + code = { + "Math" + } + }, +} +local oldinvisible = { + object_type = "Joker", + name = "cry-Old Invisible Joker", + key = "oldinvisible", + pos = { x = 4, y = 4 }, + config = { extra = 0 }, + rarity = 4, + cost = 20, + order = 78, + atlas = "atlasthree", + loc_vars = function(self, info_queue, center) + 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 card.ability.extra == 3 then + card.ability.extra = 0 + local eligibleJokers = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].ability.name ~= card.ability.name and G.jokers.cards[i] ~= context.card then + eligibleJokers[#eligibleJokers + 1] = G.jokers.cards[i] + end + end + if #eligibleJokers > 0 then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(pseudorandom_element(eligibleJokers, pseudoseed("cry_oldinvis")), nil) + card:add_to_deck() + G.jokers:emplace(card) + return true + end, + })) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_duplicated_ex") } + ) + return nil, true + else + 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) + end + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = card.ability.extra .. "/4", + colour = G.C.FILTER, + }), + } + end + end + end, + cry_credits = { + idea = { + "LocalThunk" + }, + art = { + "LocalThunk" + }, + code = { + "Jevonn" + } + }, +} +local fractal = { + object_type = "Joker", + name = "cry-FractalFingers", + key = "fractal", + pos = { x = 6, y = 4 }, + config = { extra = 2 }, + rarity = 3, + cost = 7, + order = 76, + atlas = "atlasthree", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + add_to_deck = function(self, card, from_debuff) + card.ability.extra = math.floor(card.ability.extra) + G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + card.ability.extra + 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() + end, + cry_credits = { + idea = { + "HexaCryonic" + }, + art = { + "HexaCryonic" + }, + code = { + "HexaCryonic" + } + }, +} +local universe = { + cry_credits = { + idea = {"Mystic Misclick"}, + art = {"spire_winder"}, + code = {"spire_winder"} + }, + object_type = "Joker", + name = "cry-universe", + key = "universe", + pos = { x = 8, y = 0 }, + atlas = "atlasthree", + config = { extra = { emult = 1.2 } }, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.cry_astral) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral + end + return { vars = { center.ability.extra.emult } } + end, + rarity = 3, + cost = 6, + order = 40, + blueprint_compat = true, + calculate = function(self, card, context) + if + context.other_joker + and context.other_joker.edition + and context.other_joker.edition.cry_astral == true + and card ~= context.other_joker + 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_powmult", vars = { card.ability.extra.emult } }), + Emult_mod = card.ability.extra.emult, + colour = G.C.DARK_EDITION + } + end + if context.individual and context.cardarea == G.play then + if context.other_card.edition and context.other_card.edition.cry_astral == true then + return { + e_mult = card.ability.extra.emult, + colour = G.C.DARK_EDITION, + card = card + } + end + end + if + context.individual + and context.cardarea == G.hand + and context.other_card.edition + and context.other_card.edition.cry_astral == true + and not context.end_of_round + then + if context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + else + return { + e_mult = card.ability.extra.emult, + colour = G.C.DARK_EDITION, + card = card + } + end + end + end, +} +local astral_bottle = { + cry_credits = { + idea = {"AlexZGreat"}, + art = {"spire_winder"}, + code = {"spire_winder"} + }, + object_type = "Joker", + name = "cry-astral_bottle", + key = "astral_bottle", + pos = { x = 7, y = 0 }, + atlas = "atlasthree", + rarity = 2, + cost = 6, + blueprint_compat = false, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.cry_astral) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral + end + end, + calculate = function(self, card, context) + if context.selling_self and not context.retrigger_joker and not context.blueprint then + local jokers = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] ~= card and not G.jokers.cards[i].debuff and not G.jokers.cards[i].edition then + jokers[#jokers + 1] = G.jokers.cards[i] + end + end + 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.ability.perishable = true -- Done manually to bypass perish compat + chosen_joker.ability.perish_tally = G.GAME.perishable_rounds + return nil, true + else + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_no_other_jokers") }) + end + end + end, +} +local kidnap = { + object_type = "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", + calculate = function(self, card, context) + if + context.selling_card + and ( + ( + context.card.ability.name == "Sly Joker" + or context.card.ability.name == "Wily Joker" + or context.card.ability.name == "Clever Joker" + or context.card.ability.name == "Devious Joker" + or context.card.ability.name == "Crafty Joker" + ) + or context.card.ability.effect == "Type Mult" + or context.card.ability.effect == "Cry Type Mult" + or context.card.ability.effect == "Cry Type Chips" + --[[ + 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() + ) + and not context.blueprint + then + card.ability.extra.money = card.ability.extra.money + card.ability.extra.money_mod + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize("k_upgrade_ex"), + colour = G.C.MONEY, + }), + } + 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 = { + "Jevonn" + } + }, +} +local exposed = { + object_type = "Joker", + name = "cry-Exposed", + key = "exposed", + pos = { x = 0, y = 5 }, + config = { extra = 2 }, + rarity = 3, + cost = 8, + atlas = "atlastwo", + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + calculate = function(self, card, context) + if context.setting_blind and not context.blueprint then + for i, v in pairs (G.deck.cards) do + if v:is_face() then + v:set_debuff(true) + end + end + end + 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 + end + end, +} +local mask = { + object_type = "Joker", + name = "cry-Mask", + key = "mask", + pos = { x = 1, y = 5 }, + config = { extra = 3 }, + rarity = 3, + cost = 7, + atlas = "atlastwo", + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + calculate = function(self, card, context) + if context.setting_blind and not context.blueprint then + for i, v in pairs (G.deck.cards) do + if not v:is_face() then + v:set_debuff(true) + end + end + end + 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 + end + end, +} +local tropical_smoothie = { + object_type = "Joker", + name = "cry-Tropical Smoothie", + key = "tropical_smoothie", + pos = { x = 2, y = 5 }, + config = {}, + rarity = 3, + cost = 5, + atlas = "atlastwo", + immutable = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + calculate = function(self, card, context) + if context.selling_self then + local check = false + for i, v in pairs (G.jokers.cards) do + if not Card.no(v, "immune_to_chemach", true) and not Card.no(v, "immutable", true) then + cry_with_deck_effects(G.jokers.cards[1], function(card) + cry_misprintize(v, { min = 1.5, max = 1.5}, nil, true) + end) + check = true + end + end + if check then + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex"), colour = G.C.GREEN } + ) + end + end + end, +} +local miscitems = { + jimball_sprite, + dropshot, + happyhouse, + maximized, + potofjokes, + queensgambit, + wee_fib, + compound_interest, + whip, + pickle, + triplet_rhythm, + booster, + chili_pepper, + lucky_joker, + cursor, + cube, + big_cube, + nice, + sus, + chad, + jimball, + luigi, + waluigi, + mario, + wario, + eternalflame, + seal_the_deal, + fspinner, + krustytheclown, + blurred, + gardenfork, + lightupthenight, + nosound, + antennastoheaven, + hunger, + weegaming, + redbloon, + apjoker, + maze, + panopticon, + magnet, + unjust_dagger, + monkey_dagger, + pirate_dagger, + mondrian, + sapling, + spaceglobe, + happy, + meteor, + exoplanet, + stardust, + rnjoker, + filler, + duos, + home, + nuts, + quintet, + unity, + swarm, + stronghold, + wtf, + clash, + coin, + wheelhope, + night, + busdriver, + oldblueprint, + morse, + translucent, + membershipcard, + kscope, + cryptidmoment, + oldinvisible, + fractal, + giggly, + nutty, + manic, + silly, + delirious, + wacky, + kooky, + bonkers, + fuckedup, + foolhardy, + dubious, + shrewd, + tricksy, + foxy, + savvy, + subtle, + discreet, + adroit, + penetrating, + treacherous, + kidnap, + exposed, + mask, + tropical_smoothie, +} +if Cryptid.enabled["Misc."] then + miscitems[#miscitems+1] = flipside + miscitems[#miscitems+1] = universe + miscitems[#miscitems+1] = astral_bottle +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 + end, + items = miscitems, +} diff --git a/Items/Planets.lua b/old/Items/Planets.lua similarity index 96% rename from Items/Planets.lua rename to old/Items/Planets.lua index 7de8337fa..0c338afef 100644 --- a/Items/Planets.lua +++ b/old/Items/Planets.lua @@ -1,706 +1,706 @@ -local timantti = { - object_type = "Consumable", - set = "Planet", - name = "cry-Timantti", - key = "Timantti", - pos = { x = 0, y = 2 }, - config = { hand_types = { "High Card", "Pair", "Two Pair" } }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 3, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["High Card"].level or 1 - local leveltwo = G.GAME.hands["Pair"].level or 1 - local levelthree = G.GAME.hands["Two Pair"].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("High Card", "poker_hands"), - localize("Pair", "poker_hands"), - localize("Two Pair", "poker_hands"), - G.GAME.hands["High Card"].level, - G.GAME.hands["Pair"].level, - G.GAME.hands["Two Pair"].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 == "High Card" - or context.scoring_name == "Pair" - or context.scoring_name == "Two Pair" - ) - 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 klubi = { - object_type = "Consumable", - set = "Planet", - name = "cry-Klubi", - key = "Klubi", - pos = { x = 1, y = 2 }, - config = { hand_types = { "Three of a Kind", "Straight", "Flush" } }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 4, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["Three of a Kind"].level or 1 - local leveltwo = G.GAME.hands["Straight"].level or 1 - local levelthree = G.GAME.hands["Flush"].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("Three of a Kind", "poker_hands"), - localize("Straight", "poker_hands"), - localize("Flush", "poker_hands"), - G.GAME.hands["Three of a Kind"].level, - G.GAME.hands["Straight"].level, - G.GAME.hands["Flush"].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 == "Three of a Kind" - or context.scoring_name == "Straight" - or context.scoring_name == "Flush" - ) - 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 sydan = { - object_type = "Consumable", - set = "Planet", - name = "cry-Sydan", - key = "Sydan", - pos = { x = 2, y = 2 }, - config = { hand_types = { "Full House", "Four of a Kind", "Straight Flush" } }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 5, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["Full House"].level or 1 - local leveltwo = G.GAME.hands["Four of a Kind"].level or 1 - local levelthree = G.GAME.hands["Straight Flush"].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("Full House", "poker_hands"), - localize("Four of a Kind", "poker_hands"), - localize("Straight Flush", "poker_hands"), - G.GAME.hands["Full House"].level, - G.GAME.hands["Four of a Kind"].level, - G.GAME.hands["Straight Flush"].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 == "Full House" - or context.scoring_name == "Four of a Kind" - or context.scoring_name == "Straight Flush" - ) - 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 lapio = { - object_type = "Consumable", - set = "Planet", - name = "cry-Lapio", - key = "Lapio", - pos = { x = 3, y = 2 }, - config = { hand_types = { "Five of a Kind", "Flush House", "Flush Five" }, softlock = true }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 6, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["Five of a Kind"].level or 1 - local leveltwo = G.GAME.hands["Flush House"].level or 1 - local levelthree = G.GAME.hands["Flush Five"].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("Five of a Kind", "poker_hands"), - localize("Flush House", "poker_hands"), - localize("Flush Five", "poker_hands"), - G.GAME.hands["Five of a Kind"].level, - G.GAME.hands["Flush House"].level, - G.GAME.hands["Flush Five"].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 == "Five of a Kind" - or context.scoring_name == "Flush House" - or context.scoring_name == "Flush Five" - ) - 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 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 = 7, - 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, -} -local planetlua = { - object_type = "Consumable", - set = "Planet", - name = "cry-planetlua", - key = "planetlua", - config = { extra = { odds = 5 } }, - pos = { x = 4, y = 2 }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 1, - loc_vars = function(self, info_queue, center) - return { vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), 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") < G.GAME.probabilities.normal / 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 = "" } - ) - 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 = "+1" }) - delay(1.3) - for k, v in pairs(G.GAME.hands) do - level_up_hand(used_consumable, k, true) - end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, - { mult = 0, chips = 0, handname = "", level = "" } - ) - else - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() --"borrowed" from Wheel Of Fortune - attention_text({ - text = localize("k_nope_ex"), - scale = 1.3, - hold = 1.4, - major = used_consumable, - backdrop_colour = G.C.SECONDARY_SET.Planet, - 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, - }, - silent = true, - }) - 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) - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - end - end, - bulk_use = function(self, card, area, copier, number) - local used_consumable = copier or card - local quota = 0 - for i = 1, number do - quota = quota - + (pseudorandom("planetlua") < G.GAME.probabilities.normal / card.ability.extra.odds and 1 or 0) - end - if quota > 0 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 = "+" .. quota }) - delay(1.3) - for k, v in pairs(G.GAME.hands) do - level_up_hand(card, k, true, quota) - end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, - { mult = 0, chips = 0, handname = "", level = "" } - ) - else - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - attention_text({ - text = localize("k_nope_ex"), - scale = 1.3, - hold = 1.4, - major = used_consumable, - backdrop_colour = G.C.SECONDARY_SET.Planet, - 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, - }, - silent = true, - }) - 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) - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - end - end, - 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") < G.GAME.probabilities.normal / card.ability.extra.odds) - 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 nstar = { - object_type = "Consumable", - set = "Planet", - name = "cry-nstar", - key = "nstar", - pos = { x = 4, y = 1 }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 2, - set_card_type_badge = function(self, card, badges) - badges[1] = create_badge(localize("k_planet_q"), get_type_colour(self or card.config, card), nil, 1.2) - end, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - return { vars = { (G.GAME and G.GAME.neutronstarsusedinthisrun or 0) } } - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - --Get amount of Neutron stars use this run or set to 0 if nil - G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun or 0 - - --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, - } - ) - --level up once for each neutron star used this run - level_up_hand(used_consumable, neutronhand, nil, G.GAME.neutronstarsusedinthisrun) - 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 - G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun or 0 - - local handstolv = {} - local neutronhand = "n/a" - for i = 1, number do - G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun + 1 - neutronhand = neutronstarrandomhand() - 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, - } - ) - card_eval_status_text( - used_consumable, - "extra", - nil, - nil, - nil, - { message = "+" .. tostring(v), colour = G.C.BLUE } - ) - level_up_hand(used_consumable, k, nil, v) - end - update_hand_text( - { 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, - }) - ) - end, - calculate = function(self, card, context) --Observatory effect: X0.04 mult for each neutron star used this run - if G.GAME.used_vouchers.v_observatory and G.GAME.neutronstarsusedinthisrun ~= nil then - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { 1 + (0.04 * G.GAME.neutronstarsusedinthisrun) }, - }), - Xmult_mod = 1 + (0.04 * G.GAME.neutronstarsusedinthisrun), - } - end - end, -} -function suit_level_up(center, card, area, copier, number) - local used_consumable = copier or card - 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, - } - ) - level_up_hand(used_consumable, v, nil, number) - end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, - { 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, kaikki } -if not (SMODS.Mods["jen"] or {}).can_load then -end -return { name = "Planets", init = function() end, items = planet_cards } +local timantti = { + object_type = "Consumable", + set = "Planet", + name = "cry-Timantti", + key = "Timantti", + pos = { x = 0, y = 2 }, + config = { hand_types = { "High Card", "Pair", "Two Pair" } }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 3, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["High Card"].level or 1 + local leveltwo = G.GAME.hands["Pair"].level or 1 + local levelthree = G.GAME.hands["Two Pair"].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("High Card", "poker_hands"), + localize("Pair", "poker_hands"), + localize("Two Pair", "poker_hands"), + G.GAME.hands["High Card"].level, + G.GAME.hands["Pair"].level, + G.GAME.hands["Two Pair"].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 == "High Card" + or context.scoring_name == "Pair" + or context.scoring_name == "Two Pair" + ) + 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 klubi = { + object_type = "Consumable", + set = "Planet", + name = "cry-Klubi", + key = "Klubi", + pos = { x = 1, y = 2 }, + config = { hand_types = { "Three of a Kind", "Straight", "Flush" } }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 4, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["Three of a Kind"].level or 1 + local leveltwo = G.GAME.hands["Straight"].level or 1 + local levelthree = G.GAME.hands["Flush"].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("Three of a Kind", "poker_hands"), + localize("Straight", "poker_hands"), + localize("Flush", "poker_hands"), + G.GAME.hands["Three of a Kind"].level, + G.GAME.hands["Straight"].level, + G.GAME.hands["Flush"].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 == "Three of a Kind" + or context.scoring_name == "Straight" + or context.scoring_name == "Flush" + ) + 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 sydan = { + object_type = "Consumable", + set = "Planet", + name = "cry-Sydan", + key = "Sydan", + pos = { x = 2, y = 2 }, + config = { hand_types = { "Full House", "Four of a Kind", "Straight Flush" } }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 5, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["Full House"].level or 1 + local leveltwo = G.GAME.hands["Four of a Kind"].level or 1 + local levelthree = G.GAME.hands["Straight Flush"].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("Full House", "poker_hands"), + localize("Four of a Kind", "poker_hands"), + localize("Straight Flush", "poker_hands"), + G.GAME.hands["Full House"].level, + G.GAME.hands["Four of a Kind"].level, + G.GAME.hands["Straight Flush"].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 == "Full House" + or context.scoring_name == "Four of a Kind" + or context.scoring_name == "Straight Flush" + ) + 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 lapio = { + object_type = "Consumable", + set = "Planet", + name = "cry-Lapio", + key = "Lapio", + pos = { x = 3, y = 2 }, + config = { hand_types = { "Five of a Kind", "Flush House", "Flush Five" }, softlock = true }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 6, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["Five of a Kind"].level or 1 + local leveltwo = G.GAME.hands["Flush House"].level or 1 + local levelthree = G.GAME.hands["Flush Five"].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("Five of a Kind", "poker_hands"), + localize("Flush House", "poker_hands"), + localize("Flush Five", "poker_hands"), + G.GAME.hands["Five of a Kind"].level, + G.GAME.hands["Flush House"].level, + G.GAME.hands["Flush Five"].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 == "Five of a Kind" + or context.scoring_name == "Flush House" + or context.scoring_name == "Flush Five" + ) + 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 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 = 7, + 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, +} +local planetlua = { + object_type = "Consumable", + set = "Planet", + name = "cry-planetlua", + key = "planetlua", + config = { extra = { odds = 5 } }, + pos = { x = 4, y = 2 }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 1, + loc_vars = function(self, info_queue, center) + return { vars = { "" .. (G.GAME and G.GAME.probabilities.normal or 1), 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") < G.GAME.probabilities.normal / 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 = "" } + ) + 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 = "+1" }) + delay(1.3) + for k, v in pairs(G.GAME.hands) do + level_up_hand(used_consumable, k, true) + end + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) + else + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() --"borrowed" from Wheel Of Fortune + attention_text({ + text = localize("k_nope_ex"), + scale = 1.3, + hold = 1.4, + major = used_consumable, + backdrop_colour = G.C.SECONDARY_SET.Planet, + 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, + }, + silent = true, + }) + 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) + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + end + end, + bulk_use = function(self, card, area, copier, number) + local used_consumable = copier or card + local quota = 0 + for i = 1, number do + quota = quota + + (pseudorandom("planetlua") < G.GAME.probabilities.normal / card.ability.extra.odds and 1 or 0) + end + if quota > 0 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 = "+" .. quota }) + delay(1.3) + for k, v in pairs(G.GAME.hands) do + level_up_hand(card, k, true, quota) + end + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) + else + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + attention_text({ + text = localize("k_nope_ex"), + scale = 1.3, + hold = 1.4, + major = used_consumable, + backdrop_colour = G.C.SECONDARY_SET.Planet, + 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, + }, + silent = true, + }) + 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) + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + end + end, + 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") < G.GAME.probabilities.normal / card.ability.extra.odds) + 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 nstar = { + object_type = "Consumable", + set = "Planet", + name = "cry-nstar", + key = "nstar", + pos = { x = 4, y = 1 }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 2, + set_card_type_badge = function(self, card, badges) + badges[1] = create_badge(localize("k_planet_q"), get_type_colour(self or card.config, card), nil, 1.2) + end, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + return { vars = { (G.GAME and G.GAME.neutronstarsusedinthisrun or 0) } } + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + --Get amount of Neutron stars use this run or set to 0 if nil + G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun or 0 + + --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, + } + ) + --level up once for each neutron star used this run + level_up_hand(used_consumable, neutronhand, nil, G.GAME.neutronstarsusedinthisrun) + 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 + G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun or 0 + + local handstolv = {} + local neutronhand = "n/a" + for i = 1, number do + G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun + 1 + neutronhand = neutronstarrandomhand() + 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, + } + ) + card_eval_status_text( + used_consumable, + "extra", + nil, + nil, + nil, + { message = "+" .. tostring(v), colour = G.C.BLUE } + ) + level_up_hand(used_consumable, k, nil, v) + end + update_hand_text( + { 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, + }) + ) + end, + calculate = function(self, card, context) --Observatory effect: X0.04 mult for each neutron star used this run + if G.GAME.used_vouchers.v_observatory and G.GAME.neutronstarsusedinthisrun ~= nil then + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { 1 + (0.04 * G.GAME.neutronstarsusedinthisrun) }, + }), + Xmult_mod = 1 + (0.04 * G.GAME.neutronstarsusedinthisrun), + } + end + end, +} +function suit_level_up(center, card, area, copier, number) + local used_consumable = copier or card + 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, + } + ) + level_up_hand(used_consumable, v, nil, number) + end + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { 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, kaikki } +if not (SMODS.Mods["jen"] or {}).can_load then +end +return { name = "Planets", init = function() end, items = planet_cards } diff --git a/Items/PokerHands.lua b/old/Items/PokerHands.lua similarity index 96% rename from Items/PokerHands.lua rename to old/Items/PokerHands.lua index 04c724d64..bba46a79f 100644 --- a/Items/PokerHands.lua +++ b/old/Items/PokerHands.lua @@ -1,394 +1,394 @@ -local disc = function(self, card, badges) - badges[#badges + 1] = create_badge('Circumstellar Disc', get_type_colour(self or card.config, card), nil, 1.2) -end - -local nothingness = function(self, card, badges) - badges[#badges + 1] = create_badge(' ', get_type_colour(self or card.config, card), nil, 1.2) -end - -local moons = function(self, card, badges) - badges[#badges + 1] = create_badge('Natural Satellites', get_type_colour(self or card.config, card), nil, 1.2) -end - -local actualuniverse = function(self, card, badges) - badges[#badges + 1] = create_badge('The Actual Fucking Universe', get_type_colour(self or card.config, card), nil, 1.2) -end - -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' }, - }, - loc_txt = { - ['en-us'] = { - name = 'Bulwark', - description = { - '5 rankless, suitless cards played together.', - } - }, - ['de'] = { - name = 'Bollwerk', - description = { - '5 ranglose, farbenlose Karten zusammen gespielt.', - } - } - }, - 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, -} - -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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'Clusterfuck', - description = { - 'At least 8 cards that do not', - 'contain a Pair, Flush, or Straight.', - } - }, - ['de'] = { - name = 'Clusterfuck', - description = { - 'Mindestens 8 Karten, welche nicht', - 'Paar, Flush oder Straße enthalten.' - } - } - }, - 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, -} - -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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'Ultimate Pair', - description = { - 'Two Two Pairs, where each', - 'Two Pair is a single suit, for a', - 'total of two suits between them.', - } - }, - ['de'] = { - name = 'Ultimatives Paar', - description = { - 'Zwei zwei Paare, bei denen jedes', - 'von ihnen von einer Farbe ist,', - 'was insgesammt 2 Farben ergibt.' - } - } - }, - 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, -} - -SMODS.PokerHand{ - key = 'WholeDeck', - visible = false, - chips = 5200, - mult = 520, - l_chips = 520, - l_mult = 52, - 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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'The Entire Fucking Deck', - description = { - 'A hand that contains every single', - 'card found in a 52-card deck.', - 'Are you insane?', - } - } - }, - 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, -} - -SMODS.Consumable{ - set = 'Planet', - key = 'asteroidbelt', - --! `h_` prefix was removed - config = { hand_type = 'cry_Bulwark', softlock = true }, - pos = {x = 1, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = disc, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Asteroid Belt' - }, - ['de'] = { - name = 'Asteroidengürtel' - } - } -} - - -SMODS.Consumable{ - set = 'Planet', - key = 'void', - --! `h_` prefix was removed - config = { hand_type = 'cry_Clusterfuck', softlock = true }, - pos = {x = 0, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = nothingness, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Void' - }, - ['de'] = { - name = 'Leere' - } - } -} - -SMODS.Consumable{ - set = 'Planet', - key = 'marsmoons', - --! `h_` prefix was removed - config = { hand_type = 'cry_UltPair', softlock = true }, - pos = {x = 2, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = moons, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Phobos & Deimos' - }, - ['de'] = { - name = 'Phobos & Deimos' - } - } -} - -SMODS.Consumable{ - set = 'Planet', - key = 'universe', - --! `h_` prefix was removed - config = { hand_type = 'cry_WholeDeck', softlock = true }, - pos = {x = 4, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = actualuniverse, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'The Universe In Its Fucking Entirety' - } - } -} - -return { - name = "PokerHands", - items = { Bulwark, asteroidbelt, Clusterfuck, void, UltPair, marsmoons, WholeDeck, universe }, -} +local disc = function(self, card, badges) + badges[#badges + 1] = create_badge('Circumstellar Disc', get_type_colour(self or card.config, card), nil, 1.2) +end + +local nothingness = function(self, card, badges) + badges[#badges + 1] = create_badge(' ', get_type_colour(self or card.config, card), nil, 1.2) +end + +local moons = function(self, card, badges) + badges[#badges + 1] = create_badge('Natural Satellites', get_type_colour(self or card.config, card), nil, 1.2) +end + +local actualuniverse = function(self, card, badges) + badges[#badges + 1] = create_badge('The Actual Fucking Universe', get_type_colour(self or card.config, card), nil, 1.2) +end + +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' }, + }, + loc_txt = { + ['en-us'] = { + name = 'Bulwark', + description = { + '5 rankless, suitless cards played together.', + } + }, + ['de'] = { + name = 'Bollwerk', + description = { + '5 ranglose, farbenlose Karten zusammen gespielt.', + } + } + }, + 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, +} + +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 }, + }, + loc_txt = { + ['en-us'] = { + name = 'Clusterfuck', + description = { + 'At least 8 cards that do not', + 'contain a Pair, Flush, or Straight.', + } + }, + ['de'] = { + name = 'Clusterfuck', + description = { + 'Mindestens 8 Karten, welche nicht', + 'Paar, Flush oder Straße enthalten.' + } + } + }, + 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, +} + +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 }, + }, + loc_txt = { + ['en-us'] = { + name = 'Ultimate Pair', + description = { + 'Two Two Pairs, where each', + 'Two Pair is a single suit, for a', + 'total of two suits between them.', + } + }, + ['de'] = { + name = 'Ultimatives Paar', + description = { + 'Zwei zwei Paare, bei denen jedes', + 'von ihnen von einer Farbe ist,', + 'was insgesammt 2 Farben ergibt.' + } + } + }, + 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, +} + +SMODS.PokerHand{ + key = 'WholeDeck', + visible = false, + chips = 5200, + mult = 520, + l_chips = 520, + l_mult = 52, + 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 }, + }, + loc_txt = { + ['en-us'] = { + name = 'The Entire Fucking Deck', + description = { + 'A hand that contains every single', + 'card found in a 52-card deck.', + 'Are you insane?', + } + } + }, + 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, +} + +SMODS.Consumable{ + set = 'Planet', + key = 'asteroidbelt', + --! `h_` prefix was removed + config = { hand_type = 'cry_Bulwark', softlock = true }, + pos = {x = 1, y = 5 }, + atlas = 'atlasnotjokers', + aurinko = true, + set_card_type_badge = disc, + process_loc_text = function(self) + --use another planet's loc txt instead + local target_text = G.localization.descriptions[self.set]['c_mercury'].text + SMODS.Consumable.process_loc_text(self) + G.localization.descriptions[self.set][self.key].text = target_text + end, + generate_ui = 0, + loc_txt = { + ['en-us'] = { + name = 'Asteroid Belt' + }, + ['de'] = { + name = 'Asteroidengürtel' + } + } +} + + +SMODS.Consumable{ + set = 'Planet', + key = 'void', + --! `h_` prefix was removed + config = { hand_type = 'cry_Clusterfuck', softlock = true }, + pos = {x = 0, y = 5 }, + atlas = 'atlasnotjokers', + aurinko = true, + set_card_type_badge = nothingness, + process_loc_text = function(self) + --use another planet's loc txt instead + local target_text = G.localization.descriptions[self.set]['c_mercury'].text + SMODS.Consumable.process_loc_text(self) + G.localization.descriptions[self.set][self.key].text = target_text + end, + generate_ui = 0, + loc_txt = { + ['en-us'] = { + name = 'Void' + }, + ['de'] = { + name = 'Leere' + } + } +} + +SMODS.Consumable{ + set = 'Planet', + key = 'marsmoons', + --! `h_` prefix was removed + config = { hand_type = 'cry_UltPair', softlock = true }, + pos = {x = 2, y = 5 }, + atlas = 'atlasnotjokers', + aurinko = true, + set_card_type_badge = moons, + process_loc_text = function(self) + --use another planet's loc txt instead + local target_text = G.localization.descriptions[self.set]['c_mercury'].text + SMODS.Consumable.process_loc_text(self) + G.localization.descriptions[self.set][self.key].text = target_text + end, + generate_ui = 0, + loc_txt = { + ['en-us'] = { + name = 'Phobos & Deimos' + }, + ['de'] = { + name = 'Phobos & Deimos' + } + } +} + +SMODS.Consumable{ + set = 'Planet', + key = 'universe', + --! `h_` prefix was removed + config = { hand_type = 'cry_WholeDeck', softlock = true }, + pos = {x = 4, y = 5 }, + atlas = 'atlasnotjokers', + aurinko = true, + set_card_type_badge = actualuniverse, + process_loc_text = function(self) + --use another planet's loc txt instead + local target_text = G.localization.descriptions[self.set]['c_mercury'].text + SMODS.Consumable.process_loc_text(self) + G.localization.descriptions[self.set][self.key].text = target_text + end, + generate_ui = 0, + loc_txt = { + ['en-us'] = { + name = 'The Universe In Its Fucking Entirety' + } + } +} + +return { + name = "PokerHands", + items = { Bulwark, asteroidbelt, Clusterfuck, void, UltPair, marsmoons, WholeDeck, universe }, +} diff --git a/Items/Sleeves.lua b/old/Items/Sleeves.lua similarity index 96% rename from Items/Sleeves.lua rename to old/Items/Sleeves.lua index 26af2b101..96a923d1f 100644 --- a/Items/Sleeves.lua +++ b/old/Items/Sleeves.lua @@ -1,318 +1,318 @@ -if CardSleeves then - local atlasSleeves = SMODS.Atlas({ - object_type = "Atlas", - key = "atlasSleeves", - path = "atlasSleeves.png", - px = 71, - py = 95, - }) - - local encodedsleeve = CardSleeves.Sleeve({ - key = "encoded_sleeve", - name = "Encoded Sleeve", - atlas = "atlasSleeves", - pos = { x = 1, y = 0 }, - config = {}, - unlocked = true, - unlock_condition = { deck = "Encoded Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - - trigger_effect = function(self, args) end, - apply = function(self) - G.E_MANAGER:add_event(Event({ - func = function() - if G.jokers then - 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) - 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) - return true - end - end, - })) - - --DOWNSIDE: - - G.GAME.joker_rate = 0 - G.GAME.planet_rate = 0 - G.GAME.tarot_rate = 0 - G.GAME.code_rate = 1e100 - end, - }) - - local equilibriumsleeve = CardSleeves.Sleeve({ - key = "equilibrium_sleeve", - name = "Balanced Sleeve", - atlas = "atlasSleeves", - pos = { x = 2, y = 0 }, - config = { vouchers = { "v_overstock_norm", "v_overstock_plus" }, cry_equilibrium = true }, - unlocked = true, - unlock_condition = { deck = "Deck of Equilibrium", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - - trigger_effect = function(self, args) end, - apply = function(self) - change_shop_size(2) - G.GAME.modifiers.cry_equilibrium = true - end, - }) - - local misprintsleeve = CardSleeves.Sleeve({ - key = "misprint_sleeve", - name = "Misprinted Sleeve", - atlas = "atlasSleeves", - pos = { x = 3, y = 0 }, - config = { cry_misprint_min = 0.1, cry_misprint_max = 10 }, - unlocked = true, - unlock_condition = { deck = "Misprint Deck", stake = 1 }, - trigger_effect = function(self, args) - if args.context.create_card then - cry_misprintize( - args.context.card, - { min = 0.1 * (G.GAME.modifiers.cry_misprint_min or 1), max = 10 - * (G.GAME.modifiers.cry_misprint_max or 1) } - ) - end - end, - 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 - end, - }) - - local infinitesleeve = CardSleeves.Sleeve({ - key = "infinite_sleeve", - name = "Unlimited Sleeve", - atlas = "atlasSleeves", - pos = { x = 4, y = 0 }, - config = { cry_highlight_limit = 1e20, hand_size = 1 }, - unlocked = true, - unlock_condition = { deck = "Infinite Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - trigger_effect = function(self, args) end, - apply = function(self) - G.GAME.modifiers.cry_highlight_limit = self.config.cry_highlight_limit - end, - }) - - local conveyorsleeve = CardSleeves.Sleeve({ - key = "conveyor_sleeve", - name = "Conveyor Sleeve", - atlas = "atlasSleeves", - pos = { x = 5, y = 0 }, - config = { cry_conveyor = true }, - unlocked = true, - unlock_condition = { deck = "Conveyor Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - trigger_effect = function(self, args) end, - apply = function(self) - G.GAME.modifiers.cry_conveyor = true - end, - }) - - local CCDsleeve = CardSleeves.Sleeve({ - key = "ccd_sleeve", - name = "CCD Sleeve", - atlas = "atlasSleeves", - pos = { x = 6, y = 0 }, - config = { cry_conveyor = true }, - unlocked = true, - unlock_condition = { deck = "CCD Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - trigger_effect = function(self, args) end, - apply = function(self) - G.GAME.modifiers.cry_ccd = true - end, - }) - - local wormholesleeve = CardSleeves.Sleeve({ - key = "wormhole_sleeve", - name = "Wormhole Sleeve", - atlas = "atlasSleeves", - pos = { x = 0, y = 0 }, - config = { cry_wormhole = true, cry_negative_rate = 20, joker_slot = -2 }, - unlocked = true, - unlock_condition = { deck = "Wormhole Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - apply = function(self) - G.E_MANAGER:add_event(Event({ - func = function() - if G.jokers then - local card = - create_card("Joker", G.jokers, nil, "cry_exotic", nil, nil, nil, "cry_wormholesleeve") - card:add_to_deck() - card:start_materialize() - G.jokers:emplace(card) - return true - end - end, - })) - G.GAME.modifiers.cry_negative_rate = (G.GAME.modifiers.cry_negative_rate or 1) - * self.config.cry_negative_rate - G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + self.config.joker_slot - end, - }) - - local redeemedsleeve = CardSleeves.Sleeve({ - key = "redeemed_sleeve", - name = "Redeemed Sleeve", - atlas = "atlasSleeves", - pos = { x = 7, y = 0 }, - config = { cry_negative_rate = 20, joker_slot = -2 }, - unlocked = true, - unlock_condition = { deck = "Redeemed Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - apply = function(self) - G.GAME.modifiers.cry_redeemed = true - end, - }) - - local criticalsleeve = CardSleeves.Sleeve({ - key = "critical_sleeve", - name = "Critical Sleeve", - atlas = "atlasSleeves", - pos = { x = 8, y = 0 }, - config = { cry_crit_rate = 0.25, cry_crit_miss_rate = 0.125 }, - unlocked = true, - unlock_condition = { deck = "Redeemed Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - apply = function(self) end, - trigger_effect = function(self, args) - if args.context == "final_scoring_step" then - local 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 legendarysleeve = CardSleeves.Sleeve({ - key = "legendary_sleeve", - name = "Legendary Sleeve", - atlas = "atlasSleeves", - pos = { x = 1, y = 1 }, - config = { cry_legendary = true, cry_legendary_rate = 0.2 }, - unlocked = true, - unlock_condition = { deck = "Legendary Deck", stake = 1 }, - loc_vars = function(self) - return { vars = {} } - end, - trigger_effect = function(self, args) - if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then - if G.jokers then - if #G.jokers.cards < G.jokers.config.card_limit then - 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 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 - end -end -return { name = "Sleeves", init = function() end, items = { sleeveitems } } +if CardSleeves then + local atlasSleeves = SMODS.Atlas({ + object_type = "Atlas", + key = "atlasSleeves", + path = "atlasSleeves.png", + px = 71, + py = 95, + }) + + local encodedsleeve = CardSleeves.Sleeve({ + key = "encoded_sleeve", + name = "Encoded Sleeve", + atlas = "atlasSleeves", + pos = { x = 1, y = 0 }, + config = {}, + unlocked = true, + unlock_condition = { deck = "Encoded Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + + trigger_effect = function(self, args) end, + apply = function(self) + G.E_MANAGER:add_event(Event({ + func = function() + if G.jokers then + 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) + 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) + return true + end + end, + })) + + --DOWNSIDE: + + G.GAME.joker_rate = 0 + G.GAME.planet_rate = 0 + G.GAME.tarot_rate = 0 + G.GAME.code_rate = 1e100 + end, + }) + + local equilibriumsleeve = CardSleeves.Sleeve({ + key = "equilibrium_sleeve", + name = "Balanced Sleeve", + atlas = "atlasSleeves", + pos = { x = 2, y = 0 }, + config = { vouchers = { "v_overstock_norm", "v_overstock_plus" }, cry_equilibrium = true }, + unlocked = true, + unlock_condition = { deck = "Deck of Equilibrium", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + + trigger_effect = function(self, args) end, + apply = function(self) + change_shop_size(2) + G.GAME.modifiers.cry_equilibrium = true + end, + }) + + local misprintsleeve = CardSleeves.Sleeve({ + key = "misprint_sleeve", + name = "Misprinted Sleeve", + atlas = "atlasSleeves", + pos = { x = 3, y = 0 }, + config = { cry_misprint_min = 0.1, cry_misprint_max = 10 }, + unlocked = true, + unlock_condition = { deck = "Misprint Deck", stake = 1 }, + trigger_effect = function(self, args) + if args.context.create_card then + cry_misprintize( + args.context.card, + { min = 0.1 * (G.GAME.modifiers.cry_misprint_min or 1), max = 10 + * (G.GAME.modifiers.cry_misprint_max or 1) } + ) + end + end, + 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 + end, + }) + + local infinitesleeve = CardSleeves.Sleeve({ + key = "infinite_sleeve", + name = "Unlimited Sleeve", + atlas = "atlasSleeves", + pos = { x = 4, y = 0 }, + config = { cry_highlight_limit = 1e20, hand_size = 1 }, + unlocked = true, + unlock_condition = { deck = "Infinite Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + trigger_effect = function(self, args) end, + apply = function(self) + G.GAME.modifiers.cry_highlight_limit = self.config.cry_highlight_limit + end, + }) + + local conveyorsleeve = CardSleeves.Sleeve({ + key = "conveyor_sleeve", + name = "Conveyor Sleeve", + atlas = "atlasSleeves", + pos = { x = 5, y = 0 }, + config = { cry_conveyor = true }, + unlocked = true, + unlock_condition = { deck = "Conveyor Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + trigger_effect = function(self, args) end, + apply = function(self) + G.GAME.modifiers.cry_conveyor = true + end, + }) + + local CCDsleeve = CardSleeves.Sleeve({ + key = "ccd_sleeve", + name = "CCD Sleeve", + atlas = "atlasSleeves", + pos = { x = 6, y = 0 }, + config = { cry_conveyor = true }, + unlocked = true, + unlock_condition = { deck = "CCD Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + trigger_effect = function(self, args) end, + apply = function(self) + G.GAME.modifiers.cry_ccd = true + end, + }) + + local wormholesleeve = CardSleeves.Sleeve({ + key = "wormhole_sleeve", + name = "Wormhole Sleeve", + atlas = "atlasSleeves", + pos = { x = 0, y = 0 }, + config = { cry_wormhole = true, cry_negative_rate = 20, joker_slot = -2 }, + unlocked = true, + unlock_condition = { deck = "Wormhole Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + apply = function(self) + G.E_MANAGER:add_event(Event({ + func = function() + if G.jokers then + local card = + create_card("Joker", G.jokers, nil, "cry_exotic", nil, nil, nil, "cry_wormholesleeve") + card:add_to_deck() + card:start_materialize() + G.jokers:emplace(card) + return true + end + end, + })) + G.GAME.modifiers.cry_negative_rate = (G.GAME.modifiers.cry_negative_rate or 1) + * self.config.cry_negative_rate + G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + self.config.joker_slot + end, + }) + + local redeemedsleeve = CardSleeves.Sleeve({ + key = "redeemed_sleeve", + name = "Redeemed Sleeve", + atlas = "atlasSleeves", + pos = { x = 7, y = 0 }, + config = { cry_negative_rate = 20, joker_slot = -2 }, + unlocked = true, + unlock_condition = { deck = "Redeemed Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + apply = function(self) + G.GAME.modifiers.cry_redeemed = true + end, + }) + + local criticalsleeve = CardSleeves.Sleeve({ + key = "critical_sleeve", + name = "Critical Sleeve", + atlas = "atlasSleeves", + pos = { x = 8, y = 0 }, + config = { cry_crit_rate = 0.25, cry_crit_miss_rate = 0.125 }, + unlocked = true, + unlock_condition = { deck = "Redeemed Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + apply = function(self) end, + trigger_effect = function(self, args) + if args.context == "final_scoring_step" then + local 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 legendarysleeve = CardSleeves.Sleeve({ + key = "legendary_sleeve", + name = "Legendary Sleeve", + atlas = "atlasSleeves", + pos = { x = 1, y = 1 }, + config = { cry_legendary = true, cry_legendary_rate = 0.2 }, + unlocked = true, + unlock_condition = { deck = "Legendary Deck", stake = 1 }, + loc_vars = function(self) + return { vars = {} } + end, + trigger_effect = function(self, args) + if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then + if G.jokers then + if #G.jokers.cards < G.jokers.config.card_limit then + 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 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 + end +end +return { name = "Sleeves", init = function() end, items = { sleeveitems } } diff --git a/Items/Spectrals.lua b/old/Items/Spectrals.lua similarity index 96% rename from Items/Spectrals.lua rename to old/Items/Spectrals.lua index 6cb08339a..84413db3e 100644 --- a/Items/Spectrals.lua +++ b/old/Items/Spectrals.lua @@ -1,1270 +1,1270 @@ -local white_hole = { - object_type = "Consumable", - set = "Spectral", - name = "cry-White Hole", - key = "white_hole", - pos = { x = 1, y = 4 }, - cost = 4, - order = 40, - atlas = "atlasnotjokers", - hidden = true, --default soul_rate of 0.3% in spectral packs is used - soul_set = "Planet", - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - --Get most played hand type (logic yoinked from Telescope) - local _planet, _hand, _tally = nil, 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 - 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 - 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 = "" } - ) - end, - --Incantation compat - can_stack = true, - can_divide = true, - can_bulk_use = true, - bulk_use = function(self, card, area, copier, number) - local used_consumable = copier or card - --Get most played hand type (logic yoinked from Telescope) - local _planet, _hand, _tally = nil, 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 - 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 - 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 = "" } - ) - end, -} -local vacuum = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Vacuum", - key = "vacuum", - pos = { x = 3, y = 1 }, - config = { extra = 4 }, - cost = 4, - order = 2, - atlas = "atlasnotjokers", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra } } - end, - can_use = function(self, card) - return #G.hand.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local earnings = 0 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - used_consumable: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] - if CARD.config.center ~= G.P_CENTERS.c_base then - earnings = earnings + 1 - end - if CARD.edition then - earnings = earnings + 1 - end - if CARD.seal then - earnings = earnings + 1 - end - 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_ability(G.P_CENTERS.c_base, true, nil) - CARD:set_edition(nil, true) - CARD:set_seal(nil, true) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - ease_dollars(earnings * card.ability.extra) - end, -} -local hammerspace = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Hammerspace", - key = "hammerspace", - pos = { x = 4, y = 3 }, - config = {}, - cost = 4, - order = 3, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.hand.cards > 0 - end, - 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() - play_sound("tarot1") - used_consumable: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_ability(get_random_consumable("cry_hammerspace"), true, nil) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - end, -} -local lock = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Lock", - key = "lock", - pos = { x = 0, y = 1 }, - config = {}, - cost = 4, - order = 1, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.jokers.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local target = #G.jokers.cards == 1 and G.jokers.cards[1] or G.jokers.cards[math.random(#G.jokers.cards)] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - for i = 1, #G.jokers.cards do - local percent = 1.15 - (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.jokers.cards[i]:flip() - play_sound("card1", percent) - G.jokers.cards[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.jokers.cards do - local CARD = G.jokers.cards[i] - local percent = 0.85 + (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - 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 - play_sound("card1", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot2") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - play_sound("card1", 0.9) - target:flip() - return true - end, - })) - delay(0.2) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - func = function() - play_sound("gold_seal", 1.2, 0.4) - target:juice_up(0.3, 0.3) - return true - end, - })) - delay(0.2) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - play_sound("card1", 1.1) - target:flip() - target:set_eternal(true) - return true - end, - })) - end, -} -local trade = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Trade", - key = "trade", - pos = { x = 2, y = 1 }, - config = {}, - cost = 4, - order = 4, - atlas = "atlasnotjokers", - can_use = function(self, card) - local usable_count = 0 - for _, v in pairs(G.GAME.used_vouchers) do - if v 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 - return false - end - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local usable_vouchers = {} - for k, _ in pairs(G.GAME.used_vouchers) 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 - 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 can_use then - usable_vouchers[#usable_vouchers + 1] = k - end - end - local unredeemed_voucher = pseudorandom_element(usable_vouchers, pseudoseed("cry_trade")) - --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 - 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 - end - card:start_materialize() - area:emplace(card) - card.cost = 0 - card.shop_voucher = false - local current_round_voucher = G.GAME.current_round.voucher - card:unredeem() - 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, - })) - for i = 1, 2 do - 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 _pool = get_current_pool("Voucher", nil, nil, nil, true) - local center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem")) - local it = 1 - while center == "UNAVAILABLE" do - it = it + 1 - center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem_resample" .. it)) - end - local card = create_card("Voucher", area, nil, nil, nil, nil, center) - 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, -} -local analog = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Analog", - key = "analog", - pos = { x = 3, y = 0 }, - config = { copies = 2, ante = 1 }, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.copies, center.ability.ante } } - end, - cost = 4, - order = 7, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.jokers.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local deletable_jokers = {} - for k, v in pairs(G.jokers.cards) do - if not v.ability.eternal then - deletable_jokers[#deletable_jokers + 1] = v - end - end - local chosen_joker = pseudorandom_element(G.jokers.cards, pseudoseed("cry_analog_choice")) - local _first_dissolve = nil - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.75, - func = function() - for k, v in pairs(deletable_jokers) do - if v ~= chosen_joker then - v:start_dissolve(nil, _first_dissolve) - _first_dissolve = true - end - end - return true - end, - })) - for i = 1, card.ability.copies do - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.4, - func = function() - local card = copy_card(chosen_joker) - card:start_materialize() - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - end - ease_ante(card.ability.ante) - end, -} -local summoning = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Summoning", - key = "summoning", - pos = { x = 3, y = 4 }, - cost = 4, - order = 5, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.jokers.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local deletable_jokers = {} - for k, v in pairs(G.jokers.cards) do - if not v.ability.eternal then - deletable_jokers[#deletable_jokers + 1] = v - end - end - local chosen_joker = pseudorandom_element(G.jokers.cards, pseudoseed("cry_summoning")) - local _first_dissolve = nil - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.75, - func = function() - for k, v in pairs(deletable_jokers) do - if v == chosen_joker then - v:start_dissolve(nil, _first_dissolve) - _first_dissolve = true - end - end - 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, nil, "cry_epic", nil, nil, nil, "cry_summoning") - card:add_to_deck() - G.jokers:emplace(card) - card:juice_up(0.3, 0.5) - return true - end, - })) - delay(0.6) - end, -} -local replica = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Replica", - key = "replica", - pos = { x = 1, y = 1 }, - config = {}, - cost = 4, - order = 6, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.hand.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local chosen_card = pseudorandom_element(G.hand.cards, pseudoseed("cry_replica_choice")) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - used_consumable: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 - for i = 1, #G.hand.cards do - if not G.hand.cards[i].ability.eternal then - G.E_MANAGER:add_event(Event({ - func = function() - copy_card(chosen_card, G.hand.cards[i]) - return true - end, - })) - end - end - for i = 1, #G.hand.cards do - 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() - G.hand.cards[i]:flip() - play_sound("tarot2", percent, 0.6) - G.hand.cards[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.5) - end, -} -local ritual = { - cry_credits = { - idea = {"Mystic Misclick"}, - art = {"spire_winder"}, - code = {"spire_winder"} - }, - object_type = "Consumable", - set = "Spectral", - name = "cry-Ritual", - key = "ritual", - order = 9, - config = { - max_highlighted = 1, - }, - loc_vars = function(self, info_queue, center) - if not center.edition or (center.edition and not center.edition.cry_mosaic) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_mosaic - 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 - if not center.edition or (center.edition and not center.edition.cry_astral) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral - end - return { vars = { center.ability.max_highlighted } } - end, - cost = 5, - atlas = "atlasnotjokers", - pos = { x = 5, y = 1 }, - use = function(self, card, area, copier) - 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 - 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}) - else - highlighted:set_edition({negative = true}) - 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, - })) - end - end, -} -local adversary = { - cry_credits = { - idea = {"y_not_tony"}, - art = {"Pyrocreep"}, - code = {"spire_winder"} - }, - object_type = "Consumable", - set = "Spectral", - name = "cry-Adversary", - key = "adversary", - pos = { x = 6, y = 1 }, - config = {}, - cost = 4, - order = 10, - atlas = "atlasnotjokers", - loc_vars = function(self, info_queue, center) - 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, - can_use = function(self, card) - return #G.jokers.cards > 0 - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local target = #G.jokers.cards == 1 and G.jokers.cards[1] or G.jokers.cards[math.random(#G.jokers.cards)] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - for i = 1, #G.jokers.cards do - local percent = 1.15 - (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.jokers.cards[i]:flip() - play_sound("card1", percent) - G.jokers.cards[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.jokers.cards do - local CARD = G.jokers.cards[i] - local percent = 0.85 + (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - CARD:set_edition({negative = true}) - play_sound("card1", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot2") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.cry_shop_joker_price_modifier = G.GAME.cry_shop_joker_price_modifier * 2 - for k, v in pairs(G.I.CARD) do - if v.set_cost then - v:set_cost() - end - end - return true - end, - })) - end, -} -local chambered = { - cry_credits = { - idea = {"y_not_tony"}, - art = {"Pyrocreep"}, - code = {"spire_winder"} - }, - object_type = "Consumable", - set = "Spectral", - name = "cry-Chambered", - key = "chambered", - pos = { x = 5, y = 0 }, - 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 } } - end, - cost = 4, - order = 11, - atlas = "atlasnotjokers", - can_use = function(self, card) - local filteredCons = {} - - -- Copy consumables that aren't Chambered - for _, item in ipairs(G.consumeables.cards) do - if item.ability.name ~= "cry-Chambered" then - table.insert(filteredCons, item) - end - end - return #filteredCons > 0 - end, - use = function(self, card, area, copier) - local filteredCons = {} - - -- Copy consumables that aren't Chambered - for _, item in ipairs(G.consumeables.cards) do - if item.ability.name ~= "cry-Chambered" then - table.insert(filteredCons, item) - end - end - 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: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 - end, -} -local conduit = { - cry_credits = { - idea = {"Knockback1 (Oiiman)"}, - art = {"Knockback1 (Oiiman)"}, - code = {"spire_winder"} - }, - object_type = "Consumable", - set = "Spectral", - name = "cry-conduit", - key = "conduit", - pos = { x = 6, y = 0 }, - config = { }, - cost = 4, - order = 12, - atlas = "atlasnotjokers", - can_use = function(self, card) - local combinedTable = {} - - for _, value in ipairs(G.hand.highlighted) do - if value ~= card then - table.insert(combinedTable, value) - end - end - - for _, value in ipairs(G.jokers.highlighted) do - if value ~= card then - table.insert(combinedTable, value) - end - end - return (#combinedTable == 2) - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - local combinedTable = {} - - for _, value in ipairs(G.hand.highlighted) do - if value ~= card then - table.insert(combinedTable, value) - end - end - - for _, value in ipairs(G.jokers.highlighted) do - if value ~= card then - table.insert(combinedTable, value) - end - end - local highlighted_1 = combinedTable[1] - local highlighted_2 = combinedTable[2] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - local percent = 1.15 - (1 - 0.999) / (1 - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - highlighted_1:flip() - highlighted_2:flip() - play_sound("card1", percent) - highlighted_1:juice_up(0.3, 0.3) - highlighted_2:juice_up(0.3, 0.3) - return true - end, - })) - delay(0.2) - local percent = 0.85 + (1 - 0.999) / (1 - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - local one_edition = highlighted_1.edition - highlighted_1:flip() - highlighted_1:set_edition(highlighted_2.edition) - highlighted_2:flip() - highlighted_2:set_edition(one_edition) - play_sound("card1", percent) - highlighted_1:juice_up(0.3, 0.3) - highlighted_2:juice_up(0.3, 0.3) - return true - end, - })) - delay(0.2) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot2") - used_consumable:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - G.jokers:unhighlight_all() - return true - end, - })) - end, -} -local spectrals = { - white_hole, - vacuum, - hammerspace, - lock, - trade, - analog, - replica, - adversary, - chambered, - conduit, -} -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, -} +local white_hole = { + object_type = "Consumable", + set = "Spectral", + name = "cry-White Hole", + key = "white_hole", + pos = { x = 1, y = 4 }, + cost = 4, + order = 40, + atlas = "atlasnotjokers", + hidden = true, --default soul_rate of 0.3% in spectral packs is used + soul_set = "Planet", + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + --Get most played hand type (logic yoinked from Telescope) + local _planet, _hand, _tally = nil, 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 + 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 + 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 = "" } + ) + end, + --Incantation compat + can_stack = true, + can_divide = true, + can_bulk_use = true, + bulk_use = function(self, card, area, copier, number) + local used_consumable = copier or card + --Get most played hand type (logic yoinked from Telescope) + local _planet, _hand, _tally = nil, 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 + 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 + 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 = "" } + ) + end, +} +local vacuum = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Vacuum", + key = "vacuum", + pos = { x = 3, y = 1 }, + config = { extra = 4 }, + cost = 4, + order = 2, + atlas = "atlasnotjokers", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra } } + end, + can_use = function(self, card) + return #G.hand.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local earnings = 0 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + used_consumable: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] + if CARD.config.center ~= G.P_CENTERS.c_base then + earnings = earnings + 1 + end + if CARD.edition then + earnings = earnings + 1 + end + if CARD.seal then + earnings = earnings + 1 + end + 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_ability(G.P_CENTERS.c_base, true, nil) + CARD:set_edition(nil, true) + CARD:set_seal(nil, true) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + ease_dollars(earnings * card.ability.extra) + end, +} +local hammerspace = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Hammerspace", + key = "hammerspace", + pos = { x = 4, y = 3 }, + config = {}, + cost = 4, + order = 3, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.hand.cards > 0 + end, + 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() + play_sound("tarot1") + used_consumable: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_ability(get_random_consumable("cry_hammerspace"), true, nil) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + end, +} +local lock = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Lock", + key = "lock", + pos = { x = 0, y = 1 }, + config = {}, + cost = 4, + order = 1, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.jokers.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local target = #G.jokers.cards == 1 and G.jokers.cards[1] or G.jokers.cards[math.random(#G.jokers.cards)] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + for i = 1, #G.jokers.cards do + local percent = 1.15 - (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.jokers.cards[i]:flip() + play_sound("card1", percent) + G.jokers.cards[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.jokers.cards do + local CARD = G.jokers.cards[i] + local percent = 0.85 + (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + 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 + play_sound("card1", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot2") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + play_sound("card1", 0.9) + target:flip() + return true + end, + })) + delay(0.2) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + func = function() + play_sound("gold_seal", 1.2, 0.4) + target:juice_up(0.3, 0.3) + return true + end, + })) + delay(0.2) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + play_sound("card1", 1.1) + target:flip() + target:set_eternal(true) + return true + end, + })) + end, +} +local trade = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Trade", + key = "trade", + pos = { x = 2, y = 1 }, + config = {}, + cost = 4, + order = 4, + atlas = "atlasnotjokers", + can_use = function(self, card) + local usable_count = 0 + for _, v in pairs(G.GAME.used_vouchers) do + if v 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 + return false + end + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local usable_vouchers = {} + for k, _ in pairs(G.GAME.used_vouchers) 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 + 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 can_use then + usable_vouchers[#usable_vouchers + 1] = k + end + end + local unredeemed_voucher = pseudorandom_element(usable_vouchers, pseudoseed("cry_trade")) + --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 + 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 + end + card:start_materialize() + area:emplace(card) + card.cost = 0 + card.shop_voucher = false + local current_round_voucher = G.GAME.current_round.voucher + card:unredeem() + 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, + })) + for i = 1, 2 do + 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 _pool = get_current_pool("Voucher", nil, nil, nil, true) + local center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem")) + local it = 1 + while center == "UNAVAILABLE" do + it = it + 1 + center = pseudorandom_element(_pool, pseudoseed("cry_trade_redeem_resample" .. it)) + end + local card = create_card("Voucher", area, nil, nil, nil, nil, center) + 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, +} +local analog = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Analog", + key = "analog", + pos = { x = 3, y = 0 }, + config = { copies = 2, ante = 1 }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.copies, center.ability.ante } } + end, + cost = 4, + order = 7, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.jokers.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local deletable_jokers = {} + for k, v in pairs(G.jokers.cards) do + if not v.ability.eternal then + deletable_jokers[#deletable_jokers + 1] = v + end + end + local chosen_joker = pseudorandom_element(G.jokers.cards, pseudoseed("cry_analog_choice")) + local _first_dissolve = nil + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.75, + func = function() + for k, v in pairs(deletable_jokers) do + if v ~= chosen_joker then + v:start_dissolve(nil, _first_dissolve) + _first_dissolve = true + end + end + return true + end, + })) + for i = 1, card.ability.copies do + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.4, + func = function() + local card = copy_card(chosen_joker) + card:start_materialize() + card:add_to_deck() + G.jokers:emplace(card) + return true + end, + })) + end + ease_ante(card.ability.ante) + end, +} +local summoning = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Summoning", + key = "summoning", + pos = { x = 3, y = 4 }, + cost = 4, + order = 5, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.jokers.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local deletable_jokers = {} + for k, v in pairs(G.jokers.cards) do + if not v.ability.eternal then + deletable_jokers[#deletable_jokers + 1] = v + end + end + local chosen_joker = pseudorandom_element(G.jokers.cards, pseudoseed("cry_summoning")) + local _first_dissolve = nil + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.75, + func = function() + for k, v in pairs(deletable_jokers) do + if v == chosen_joker then + v:start_dissolve(nil, _first_dissolve) + _first_dissolve = true + end + end + 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, nil, "cry_epic", nil, nil, nil, "cry_summoning") + card:add_to_deck() + G.jokers:emplace(card) + card:juice_up(0.3, 0.5) + return true + end, + })) + delay(0.6) + end, +} +local replica = { + object_type = "Consumable", + set = "Spectral", + name = "cry-Replica", + key = "replica", + pos = { x = 1, y = 1 }, + config = {}, + cost = 4, + order = 6, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.hand.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local chosen_card = pseudorandom_element(G.hand.cards, pseudoseed("cry_replica_choice")) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + used_consumable: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 + for i = 1, #G.hand.cards do + if not G.hand.cards[i].ability.eternal then + G.E_MANAGER:add_event(Event({ + func = function() + copy_card(chosen_card, G.hand.cards[i]) + return true + end, + })) + end + end + for i = 1, #G.hand.cards do + 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() + G.hand.cards[i]:flip() + play_sound("tarot2", percent, 0.6) + G.hand.cards[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.5) + end, +} +local ritual = { + cry_credits = { + idea = {"Mystic Misclick"}, + art = {"spire_winder"}, + code = {"spire_winder"} + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-Ritual", + key = "ritual", + order = 9, + config = { + max_highlighted = 1, + }, + loc_vars = function(self, info_queue, center) + if not center.edition or (center.edition and not center.edition.cry_mosaic) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_mosaic + 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 + if not center.edition or (center.edition and not center.edition.cry_astral) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral + end + return { vars = { center.ability.max_highlighted } } + end, + cost = 5, + atlas = "atlasnotjokers", + pos = { x = 5, y = 1 }, + use = function(self, card, area, copier) + 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 + 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}) + else + highlighted:set_edition({negative = true}) + 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, + })) + end + end, +} +local adversary = { + cry_credits = { + idea = {"y_not_tony"}, + art = {"Pyrocreep"}, + code = {"spire_winder"} + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-Adversary", + key = "adversary", + pos = { x = 6, y = 1 }, + config = {}, + cost = 4, + order = 10, + atlas = "atlasnotjokers", + loc_vars = function(self, info_queue, center) + 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, + can_use = function(self, card) + return #G.jokers.cards > 0 + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local target = #G.jokers.cards == 1 and G.jokers.cards[1] or G.jokers.cards[math.random(#G.jokers.cards)] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + for i = 1, #G.jokers.cards do + local percent = 1.15 - (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.jokers.cards[i]:flip() + play_sound("card1", percent) + G.jokers.cards[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.jokers.cards do + local CARD = G.jokers.cards[i] + local percent = 0.85 + (i - 0.999) / (#G.jokers.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + CARD:set_edition({negative = true}) + play_sound("card1", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot2") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.cry_shop_joker_price_modifier = G.GAME.cry_shop_joker_price_modifier * 2 + for k, v in pairs(G.I.CARD) do + if v.set_cost then + v:set_cost() + end + end + return true + end, + })) + end, +} +local chambered = { + cry_credits = { + idea = {"y_not_tony"}, + art = {"Pyrocreep"}, + code = {"spire_winder"} + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-Chambered", + key = "chambered", + pos = { x = 5, y = 0 }, + 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 } } + end, + cost = 4, + order = 11, + atlas = "atlasnotjokers", + can_use = function(self, card) + local filteredCons = {} + + -- Copy consumables that aren't Chambered + for _, item in ipairs(G.consumeables.cards) do + if item.ability.name ~= "cry-Chambered" then + table.insert(filteredCons, item) + end + end + return #filteredCons > 0 + end, + use = function(self, card, area, copier) + local filteredCons = {} + + -- Copy consumables that aren't Chambered + for _, item in ipairs(G.consumeables.cards) do + if item.ability.name ~= "cry-Chambered" then + table.insert(filteredCons, item) + end + end + 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: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 + end, +} +local conduit = { + cry_credits = { + idea = {"Knockback1 (Oiiman)"}, + art = {"Knockback1 (Oiiman)"}, + code = {"spire_winder"} + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-conduit", + key = "conduit", + pos = { x = 6, y = 0 }, + config = { }, + cost = 4, + order = 12, + atlas = "atlasnotjokers", + can_use = function(self, card) + local combinedTable = {} + + for _, value in ipairs(G.hand.highlighted) do + if value ~= card then + table.insert(combinedTable, value) + end + end + + for _, value in ipairs(G.jokers.highlighted) do + if value ~= card then + table.insert(combinedTable, value) + end + end + return (#combinedTable == 2) + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + local combinedTable = {} + + for _, value in ipairs(G.hand.highlighted) do + if value ~= card then + table.insert(combinedTable, value) + end + end + + for _, value in ipairs(G.jokers.highlighted) do + if value ~= card then + table.insert(combinedTable, value) + end + end + local highlighted_1 = combinedTable[1] + local highlighted_2 = combinedTable[2] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + local percent = 1.15 - (1 - 0.999) / (1 - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + highlighted_1:flip() + highlighted_2:flip() + play_sound("card1", percent) + highlighted_1:juice_up(0.3, 0.3) + highlighted_2:juice_up(0.3, 0.3) + return true + end, + })) + delay(0.2) + local percent = 0.85 + (1 - 0.999) / (1 - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + local one_edition = highlighted_1.edition + highlighted_1:flip() + highlighted_1:set_edition(highlighted_2.edition) + highlighted_2:flip() + highlighted_2:set_edition(one_edition) + play_sound("card1", percent) + highlighted_1:juice_up(0.3, 0.3) + highlighted_2:juice_up(0.3, 0.3) + return true + end, + })) + delay(0.2) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot2") + used_consumable:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + G.jokers:unhighlight_all() + return true + end, + })) + end, +} +local spectrals = { + white_hole, + vacuum, + hammerspace, + lock, + trade, + analog, + replica, + adversary, + chambered, + conduit, +} +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/Items/Spooky.lua b/old/Items/Spooky.lua similarity index 96% rename from Items/Spooky.lua rename to old/Items/Spooky.lua index f0ad6df8c..fb8efd90a 100644 --- a/Items/Spooky.lua +++ b/old/Items/Spooky.lua @@ -1,1414 +1,1414 @@ -local cotton_candy = { - object_type = "Joker", - key = "cotton_candy", - pos = { x = 2, y = 0 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - blueprint_compat = true, - eternal_compat = false, - perishable_compat = false, - 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} - end - if i < #G.jokers.cards then - G.jokers.cards[i+1]:set_edition{negative = true} - end - end - end - end - end -} -local wrapped = { - object_type = "Joker", - key = "wrapped", - pos = { x = 5, y = 0 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - eternal_compat = false, - perishable_compat = false, - immune_to_chemach = true, - config = {extra = {rounds = 2}}, - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" } - return { vars = { center.ability.extra.rounds } } - end, - calculate = function(self, card, context) - 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 = card.ability.extra.rounds - 1 - if card.ability.extra.rounds > 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, - })) - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - pseudorandom_element(Cryptid.food, pseudoseed("cry_wrapped")) - ) - card:add_to_deck() - G.jokers:emplace(card) - return { - message = localize("k_extinct_ex"), - colour = G.C.FILTER, - } - end - end - end, -} -local choco_dice = { - object_type = "Joker", - key = "chocolate_dice", - pos = { x = 1, y = 0 }, - rarity = 3, - cost = 10, - atlas = "atlasspooky", - 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 } - end - else - 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 } } - 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 - --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() - return { - message = tostring(card.ability.extra.roll), - colour = G.C.GREEN - } - end - end, -} -local choco_base_event = { - object_type = "Event", - 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}} - end, - start = function(self) - G.GAME.events[self.key] = true - 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 - SMODS.Stickers.cry_flickering:apply(G[v].cards[i], true) - end - end - end - --create a ghost - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_ghost") - card:add_to_deck() - G.jokers:emplace(card) - end -} -local choco2 = { - object_type = "Event", - key = "choco2", - --everything here is done with lovely patches or hooks, search for ev_cry_choco2 - calculate = function(self, context) - if context.cash_out then - G.GAME.current_round.rerolled = false - end - end -} -local num_potions = 3 --note: must be changed whenever new potion effects are added -local choco3 = { - object_type = "Event", - key = "choco3", - start = function(self) - if not G.GAME.events[self.key] then - 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) - G.consumeables:emplace(card) - end - end, - 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 = "Unique", key = "c_cry_potion" } -- bugged rn - end, - 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]) - 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]) - 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 - --Detect if a potion has been used - local used_potion = false - for i = 1, num_potions do - if G.GAME.events[self.key].potions[i] then - used_potion = true - break - end - end - if used_potion then - G.E_MANAGER:add_event(Event({ - 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]:start_dissolve() - end - end - return true - end - })) - else - --these animations are still a bit goofy, idk why - G.E_MANAGER:add_event(Event({ - 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]:start_dissolve() - end - end - return true - end - })) - end - end - end - --todo: loc_vars potions -} -local potion = { - object_type = "Consumable", - set = "Unique", - key = "potion", - name = "cry-Potion", - pos = { x = 0, y = 1 }, - config = { random_event = 2 }, - cost = 4, - no_doe = true, - no_ccd = true, - immutable = true, - no_dbl = true, - no_grc = true, - atlas = "atlasspooky", - can_use = function(self, card) - return true - end, - in_pool = function() - return false - end, - use = function(self, card, area, copier) - 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), - hold = 2, - align = "cm", - offset = { x = 0, y = -2.7 }, - major = G.play, - }) - return true - end - })) - if card.ability.random_event == 1 then -- -1 to all hand levels - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { handname = localize("k_all_hands"), chips = "...", mult = "...", level = "" } - ) - update_hand_text({ delay = 0 }, { mult = "-", StatusText = true }) - update_hand_text({ delay = 0 }, { chips = "-", StatusText = true }) - update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = "+1" }) - delay(1.3) - for k, v in pairs(G.GAME.hands) do - level_up_hand(used_consumable, k, true, -1) - end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, - { mult = 0, chips = 0, handname = "", level = "" } - ) - end - if card.ability.random_event == 2 then -- X1.15 blind size - G.GAME.starting_params.ante_scaling = G.GAME.starting_params.ante_scaling * 1.15 - if G.GAME.blind and G.GAME.blind.chips then - G.GAME.blind.chips = G.GAME.blind.chips * 1.15 - 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) - end - 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 - 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 - end - 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 - local faces = 0 - for i = 1, #G.play.cards do - if G.play.cards[i]:is_face() then - faces = faces + 1 - end - end - if faces > 1 then - mult = mult / faces - update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) - 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 - 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 - v:set_ability(G.P_CENTERS.c_base, nil, true) - v.vampired = true - G.E_MANAGER:add_event(Event({ - func = function() - v:juice_up() - v.vampired = nil - return true - end - })) - end - end - end - 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 - G.E_MANAGER:add_event(Event({ - func = function() - context.destroying_card:start_dissolve() - return true - end - })) - end - end - end - end -} -local choco6 = { --please take one - object_type = "Event", - key = "choco6", - calculate = function(self, context) - 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}) - card.cost = 0 - card.from_tag = true - G.FUNCS.use_card({config = {ref_table = card}}) - card:start_materialize() - pack_opened = true - return true - end - })) - end - if context.setting_blind then - pack_opened = nil - end - end -} -local choco7 = { - object_type = "Event", - key = "choco7", - start = function(self) - G.GAME.events[self.key] = true - for i = 1, 3 do - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_trick_or_treat") - card:add_to_deck() - G.jokers:emplace(card) - end - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_candy_basket") - card:add_to_deck() - G.jokers:emplace(card) - end, - calculate = function(self, context) - if context.start_shop then - local tag = Tag("tag_cry_rework") - if not tag.ability then - tag.ability = {} - end - tag.ability.rework_key = "j_cry_trick_or_treat" - tag.ability.rework_edition = "e_base" - add_tag(tag) - end - end -} -local choco8 = { - object_type = "Event", - key = "choco8", - calculate = function(self, context) - if context.cash_out then - for i = 1, G.GAME.current_round.hands_left do - local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_choco8") - card:add_to_deck() - G.jokers:emplace(card) - end - end - end -} -local choco9 = { - object_type = "Event", - key = "choco9", - start = function(self) - G.GAME.events[self.key] = true - ease_dollars(10) --will already be X2 = 20 - 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" - --everything here is lovely patches or hooks -} -local spy = { - object_type = "Joker", - key = "spy", - pos = { x = 0, y = 0 }, - rarity = 1, - cost = 8, - atlas = "atlasspooky", - config = {x_mult = 0.5, extra = {secret_card = "", revealed = false}}, - immutable = true, - 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 } } - 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 ""))) - card.ability.extra.secret_card = secret_card.key - if not (card.area and card.area.config.collection) then - card.pos = secret_card.pos - card.config.center.rarity = secret_card.rarity - card.cost = secret_card.cost - card:set_sprites(G.P_CENTERS[card.ability.extra.secret_card]) - card.children.center:set_sprite_pos(secret_card.pos) - end - end - if card.area and card.area.config.collection then - card.config.center.rarity = "cry_cursed" - end - 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.config.center.rarity = "cry_cursed" - card:set_sprites(card.config.center) - card.ability.extra.revealed = true - end, - remove_from_deck = function(self, card, from_debuff) - G.jokers.config.card_limit = G.jokers.config.card_limit - 1 - end, - calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), - Xmult_mod = card.ability.x_mult, - colour = G.C.MULT, - } - end - end, - generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) - if card.ability.extra.revealed or (card.area and card.area.config.collection) then - if card.area and card.area.config.collection then - card:update(0.016) - end - local target = { - type = 'descriptions', - key = self.key, - set = self.set, - 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 - 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 } - 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 } - 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 } - 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 - else - local secret_card = cry_deep_copy(G.P_CENTERS[card.ability.extra.secret_card]) - secret_card.ability = secret_card.config - local target = { - type = 'descriptions', - key = secret_card.key, - set = secret_card.set, - nodes = desc_nodes, - vars = - specific_vars or {} - } - local res = {} - 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 } - 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 } - 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 } - 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 - end - end -} -local flickering = { - object_type = "Sticker", - 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 } } - 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 - end - end, - calculate = function(self, card, context) - 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}},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 - elseif context.from_playing_card and not card.debuff and not context.repetition_only and context.ret then - context.ret.jokers = nil - 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}) - else - card.will_shatter = true - G.E_MANAGER:add_event(Event({ - func = function() - card:start_dissolve() - return true - end - })) - end - end - end - end, -} -local trick_or_treat = { - object_type = "Joker", - key = "trick_or_treat", - pos = { x = 2, y = 1 }, - rarity = 2, - cost = 5, - atlas = "atlasspooky", - blueprint_compat = true, - eternal_compat = false, - 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 - 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() - G.jokers:emplace(card) - end - else - local card = create_card("Joker", G.jokers, nil, "cry_cursed", nil, nil, nil, "cry_trick_curse") - card:add_to_deck() - G.jokers:emplace(card) - end - end - end, - loc_vars = function(self, info_queue, center) - return { vars = { 3 * G.GAME.probabilities.normal, 4 } } - end, -} -local candy_basket = { - object_type = "Joker", - key = "candy_basket", - pos = { x = 4, y = 0 }, - rarity = 2, - cost = 6, - atlas = "atlasspooky", - blueprint_compat = false, - eternal_compat = false, - perishable_compat = false, - 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 - local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_candy_basket") - card:add_to_deck() - G.jokers:emplace(card) - end - end - if context.end_of_round and not context.individual and not context.repetition then - candy_pre = math.floor(card.ability.extra.candies) - card.ability.extra.candies = card.ability.extra.candies + card.ability.extra.candy_mod - if G.GAME.blind.boss then - card.ability.extra.candies = card.ability.extra.candies + card.ability.extra.candy_boss_mod - end - if math.floor(card.ability.extra.candies) > candy_pre then - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) - end - 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} } - end, -} -local blacklist = { - object_type = "Joker", - key = "blacklist", - pos = { x = 2, y = 2 }, - rarity = "cry_cursed", - cost = 0, - atlas = "atlasspooky", - config = {extra = {blacklist = {}}}, - blueprint_compat = false, - eternal_compat = false, - perishable_compat = false, - no_dbl = true, - calculate = function(self, card, context) - if context.joker_main then - local blacklist = false - for i = 1, #G.play.cards do - if G.play.cards[i]:get_id() == card.ability.extra.blacklist.id then - blacklist = true - break - end - end - for i = 1, #G.hand.cards do - if G.hand.cards[i]:get_id() == card.ability.extra.blacklist.id then - blacklist = true - break - end - end - if blacklist then - hand_chips = to_big(0) - mult = to_big(0) - update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) - return { - message = localize("k_nope_ex"), - colour = G.C.BLACK, - } - else - for i = 1, #G.discard.cards do - if G.discard.cards[i]:get_id() == card.ability.extra.blacklist.id then - blacklist = true - break - end - end - for i = 1, #G.deck.cards do - if G.deck.cards[i]:get_id() == card.ability.extra.blacklist.id then - blacklist = true - break - end - end - if not blacklist then - G.E_MANAGER:add_event(Event({ - func = function() - card:start_dissolve() - return true - 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)) - end, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.blacklist and center.ability.extra.blacklist.key or "Ace" } } - end, -} -local ghost = { - object_type = "Joker", - key = "ghost", - pos = { x = 3, y = 0 }, - config = {extra = {possess_rate = 2, destroy_rate = 6}}, - rarity = "cry_cursed", - cost = 0, - atlas = "atlasspooky", - blueprint_compat = false, - eternal_compat = false, - 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")) < G.GAME.probabilities.normal/card.ability.extra.destroy_rate then - G.E_MANAGER:add_event(Event({ - func = function() - card:start_dissolve() - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.cry_possessed then - if G.jokers.cards[i].ability.eternal then - G.jokers.cards[i].ability.cry_possessed = nil - else - G.jokers.cards[i]:start_dissolve() - end - end - end - return true - end - })) - return - end - --todo: let multiple ghosts possess multiple jokers - if pseudorandom(pseudoseed("cry_ghost_possess")) < G.GAME.probabilities.normal/card.ability.extra.possess_rate then - for i = 1, #G.jokers.cards do - G.jokers.cards[i].ability.cry_possessed = nil - end - local eligible_cards = {} - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key ~= "j_cry_ghost" then - table.insert(eligible_cards, i) - end - end - if #eligible_cards ~= 0 then - 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, center) - info_queue[#info_queue + 1] = { set = "Other", key = "cry_possessed"} - return { vars = { G.GAME.probabilities.normal or 1, center.ability.extra.possess_rate, center.ability.extra.destroy_rate } } - end, -} -local possessed = { - object_type = "Sticker", - atlas = "sticker", - pos = { x = 2, y = 2 }, --todo - key = "possessed", - no_sticker_sheet = true, - badge_colour = HEX("aaaaaa"), -} -local spookydeck = { - object_type = "Back", - key = "spooky", - config = { cry_spooky = true, cry_curse_rate = 0.25 }, - pos = { x = 3, y = 1 }, - atlas = "atlasspooky", -} -local candy_dagger = { - object_type = "Joker", - name = "cry-Candy Dagger", - key = "candy_dagger", - pos = { x = 4, y = 2 }, - rarity = 2, - cost = 8, - 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 - break - end - end - if - context.setting_blind - and not (context.blueprint_card or self).getting_sliced - and my_pos - and G.jokers.cards[my_pos + 1] - and not G.jokers.cards[my_pos + 1].ability.eternal - and not G.jokers.cards[my_pos + 1].getting_sliced - then - local sliced_card = G.jokers.cards[my_pos + 1] - sliced_card.getting_sliced = true - if sliced_card.config.center.rarity == "cry_exotic" then - check_for_unlock({ type = "what_have_you_done" }) - end - G.GAME.joker_buffer = G.GAME.joker_buffer - 1 - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.joker_buffer = 0 - card:juice_up(0.8, 0.8) - sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) - play_sound("slice1", 0.96 + math.random() * 0.08) - 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, - } - ) - 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, -} -local candy_cane = { - object_type = "Joker", - key = "candy_cane", - pos = { x = 1, y = 1 }, - rarity = "cry_candy", - config = { extra = { rounds = 11, dollars = 4 } }, - cost = 10, - atlas = "atlasspooky", - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.rounds, center.ability.extra.dollars } } - end, - 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 - G.E_MANAGER:add_event(Event({ - func = function() - context.other_card.candy_caned = nil - return true - end - })) - else - ease_dollars(card.ability.extra.dollars) - 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 = card.ability.extra.rounds - 1 - if card.ability.extra.rounds > 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_extinct_ex"), - colour = G.C.FILTER, - } - end - end - end, -} - -local candy_buttons = { - object_type = "Joker", - key = "candy_buttons", - name = "cry-candybuttons", - pos = { x = 1, y = 2 }, - rarity = "cry_candy", - config = { extra = { rerolls = 15 } }, - cost = 10, - atlas = "atlasspooky", - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.rerolls } } - end, - calculate = function(self, card, context) - if context.reroll_shop and not context.blueprint then - card.ability.extra.rerolls = card.ability.extra.rerolls - 1 - if card.ability.extra.rerolls <= 0 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, - })) - return { - message = localize("k_extinct_ex"), - colour = G.C.FILTER, - } - end - return nil, true - end - end, - add_to_deck = function(self, card, from_debuff) - calculate_reroll_cost(true) - end, - remove_from_deck = function(self, card, from_debuff) - calculate_reroll_cost(true) - end, -} - -local jawbreaker = { - object_type = "Joker", - key = "jawbreaker", - pos = { x = 3, y = 2 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - blueprint_compat = false, - 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 - 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) - 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) - cry_misprintize(card, { min = 2, max = 2 }, nil, true) - end) - end - end - end - end - 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_extinct_ex"), - colour = G.C.FILTER, - } - end - end, - add_to_deck = function(self, card, from_debuff) - calculate_reroll_cost(true) - end, - remove_from_deck = function(self, card, from_debuff) - calculate_reroll_cost(true) - end, -} -local mellowcreme = { - object_type = "Joker", - key = "mellowcreme", - pos = { x = 0, y = 2 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - config = {extra = {sell_mult = 4}}, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.sell_mult } } - end, - 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) - v:set_cost() - end - end - end - end, -} -local brittle = { - object_type = "Joker", - key = "brittle", - pos = { x = 5, y = 1 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - config = {extra = {rounds = 9}}, - 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, - calculate = function(self, card, context) - 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")) - _card.brittled = true - _card:set_ability(G.P_CENTERS[enhancement], nil, true) - G.E_MANAGER:add_event(Event({ - func = function() - _card:juice_up() - _card.brittled = nil - return true - end - })) - if card.ability.extra.rounds > 0 then - return nil, true - 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_extinct_ex"), - colour = G.C.FILTER, - } - end - end - end - end -} -local monopoly_money = { - object_type = "Joker", - key = "monopoly_money", - name = "cry-Monopoly", - pos = { x = 4, y = 1 }, - config = {extra = {fail_rate = 4}}, - rarity = "cry_cursed", - cost = 0, - atlas = "atlasspooky", - blueprint_compat = false, - eternal_compat = false, - 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 then - if pseudorandom(pseudoseed("cry_monopoly")) < G.GAME.probabilities.normal/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, { - message = localize("k_nope_ex"), - colour = G.C.BLACK, - }) - return true - end - })) - end - return nil, true - end - 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)) - return true - end - })) - return nil, true - end - end, - loc_vars = function(self, info_queue, center) - return { vars = { G.GAME.probabilities.normal or 1, center.ability.extra.fail_rate} } - end, -} -local candy_sticks = { - object_type = "Joker", - key = "candy_sticks", - name = "cry-Candy-Sticks", - pos = { x = 5, y = 2 }, - config = {extra = { boss = {}, hands = 1, clockscore = 0}}, - rarity = "cry_candy", - cost = 3, - atlas = "atlasspooky", - blueprint_compat = false, - eternal_compat = false, - 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 - 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 })) - end - 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 - 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 - })) - end - end - 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 - })) - end - end, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.hands} } - end, -} - -items = { - cotton_candy, - wrapped, - choco_dice, - choco_base_event, - choco1, - choco2, - choco3, - potion, - choco4, - choco5, - choco6, - choco7, - choco8, - choco9, - choco10, - spy, - flickering, - trick_or_treat, - candy_basket, - blacklist, - ghost, - possessed, - spookydeck, - candy_dagger, - candy_cane, - candy_buttons, - jawbreaker, - mellowcreme, - brittle, - monopoly_money, - candy_sticks, -} ---order is temporary so we can more easily test these out -return { name = "Spooky", order = 1e300, 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) - 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 - 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, - })) - end - end -end, items = items } +local cotton_candy = { + object_type = "Joker", + key = "cotton_candy", + pos = { x = 2, y = 0 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + blueprint_compat = true, + eternal_compat = false, + perishable_compat = false, + 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} + end + if i < #G.jokers.cards then + G.jokers.cards[i+1]:set_edition{negative = true} + end + end + end + end + end +} +local wrapped = { + object_type = "Joker", + key = "wrapped", + pos = { x = 5, y = 0 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + eternal_compat = false, + perishable_compat = false, + immune_to_chemach = true, + config = {extra = {rounds = 2}}, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" } + return { vars = { center.ability.extra.rounds } } + end, + calculate = function(self, card, context) + 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 = card.ability.extra.rounds - 1 + if card.ability.extra.rounds > 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, + })) + local card = create_card( + "Joker", + G.jokers, + nil, + nil, + nil, + nil, + pseudorandom_element(Cryptid.food, pseudoseed("cry_wrapped")) + ) + card:add_to_deck() + G.jokers:emplace(card) + return { + message = localize("k_extinct_ex"), + colour = G.C.FILTER, + } + end + end + end, +} +local choco_dice = { + object_type = "Joker", + key = "chocolate_dice", + pos = { x = 1, y = 0 }, + rarity = 3, + cost = 10, + atlas = "atlasspooky", + 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 } + end + else + 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 } } + 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 + --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() + return { + message = tostring(card.ability.extra.roll), + colour = G.C.GREEN + } + end + end, +} +local choco_base_event = { + object_type = "Event", + 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}} + end, + start = function(self) + G.GAME.events[self.key] = true + 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 + SMODS.Stickers.cry_flickering:apply(G[v].cards[i], true) + end + end + end + --create a ghost + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_ghost") + card:add_to_deck() + G.jokers:emplace(card) + end +} +local choco2 = { + object_type = "Event", + key = "choco2", + --everything here is done with lovely patches or hooks, search for ev_cry_choco2 + calculate = function(self, context) + if context.cash_out then + G.GAME.current_round.rerolled = false + end + end +} +local num_potions = 3 --note: must be changed whenever new potion effects are added +local choco3 = { + object_type = "Event", + key = "choco3", + start = function(self) + if not G.GAME.events[self.key] then + 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) + G.consumeables:emplace(card) + end + end, + 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 = "Unique", key = "c_cry_potion" } -- bugged rn + end, + 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]) + 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]) + 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 + --Detect if a potion has been used + local used_potion = false + for i = 1, num_potions do + if G.GAME.events[self.key].potions[i] then + used_potion = true + break + end + end + if used_potion then + G.E_MANAGER:add_event(Event({ + 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]:start_dissolve() + end + end + return true + end + })) + else + --these animations are still a bit goofy, idk why + G.E_MANAGER:add_event(Event({ + 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]:start_dissolve() + end + end + return true + end + })) + end + end + end + --todo: loc_vars potions +} +local potion = { + object_type = "Consumable", + set = "Unique", + key = "potion", + name = "cry-Potion", + pos = { x = 0, y = 1 }, + config = { random_event = 2 }, + cost = 4, + no_doe = true, + no_ccd = true, + immutable = true, + no_dbl = true, + no_grc = true, + atlas = "atlasspooky", + can_use = function(self, card) + return true + end, + in_pool = function() + return false + end, + use = function(self, card, area, copier) + 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), + hold = 2, + align = "cm", + offset = { x = 0, y = -2.7 }, + major = G.play, + }) + return true + end + })) + if card.ability.random_event == 1 then -- -1 to all hand levels + update_hand_text( + { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, + { handname = localize("k_all_hands"), chips = "...", mult = "...", level = "" } + ) + update_hand_text({ delay = 0 }, { mult = "-", StatusText = true }) + update_hand_text({ delay = 0 }, { chips = "-", StatusText = true }) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = "+1" }) + delay(1.3) + for k, v in pairs(G.GAME.hands) do + level_up_hand(used_consumable, k, true, -1) + end + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) + end + if card.ability.random_event == 2 then -- X1.15 blind size + G.GAME.starting_params.ante_scaling = G.GAME.starting_params.ante_scaling * 1.15 + if G.GAME.blind and G.GAME.blind.chips then + G.GAME.blind.chips = G.GAME.blind.chips * 1.15 + 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) + end + 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 + 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 + end + 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 + local faces = 0 + for i = 1, #G.play.cards do + if G.play.cards[i]:is_face() then + faces = faces + 1 + end + end + if faces > 1 then + mult = mult / faces + update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) + 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 + 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 + v:set_ability(G.P_CENTERS.c_base, nil, true) + v.vampired = true + G.E_MANAGER:add_event(Event({ + func = function() + v:juice_up() + v.vampired = nil + return true + end + })) + end + end + end + 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 + G.E_MANAGER:add_event(Event({ + func = function() + context.destroying_card:start_dissolve() + return true + end + })) + end + end + end + end +} +local choco6 = { --please take one + object_type = "Event", + key = "choco6", + calculate = function(self, context) + 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}) + card.cost = 0 + card.from_tag = true + G.FUNCS.use_card({config = {ref_table = card}}) + card:start_materialize() + pack_opened = true + return true + end + })) + end + if context.setting_blind then + pack_opened = nil + end + end +} +local choco7 = { + object_type = "Event", + key = "choco7", + start = function(self) + G.GAME.events[self.key] = true + for i = 1, 3 do + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_trick_or_treat") + card:add_to_deck() + G.jokers:emplace(card) + end + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_candy_basket") + card:add_to_deck() + G.jokers:emplace(card) + end, + calculate = function(self, context) + if context.start_shop then + local tag = Tag("tag_cry_rework") + if not tag.ability then + tag.ability = {} + end + tag.ability.rework_key = "j_cry_trick_or_treat" + tag.ability.rework_edition = "e_base" + add_tag(tag) + end + end +} +local choco8 = { + object_type = "Event", + key = "choco8", + calculate = function(self, context) + if context.cash_out then + for i = 1, G.GAME.current_round.hands_left do + local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_choco8") + card:add_to_deck() + G.jokers:emplace(card) + end + end + end +} +local choco9 = { + object_type = "Event", + key = "choco9", + start = function(self) + G.GAME.events[self.key] = true + ease_dollars(10) --will already be X2 = 20 + 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" + --everything here is lovely patches or hooks +} +local spy = { + object_type = "Joker", + key = "spy", + pos = { x = 0, y = 0 }, + rarity = 1, + cost = 8, + atlas = "atlasspooky", + config = {x_mult = 0.5, extra = {secret_card = "", revealed = false}}, + immutable = true, + 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 } } + 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 ""))) + card.ability.extra.secret_card = secret_card.key + if not (card.area and card.area.config.collection) then + card.pos = secret_card.pos + card.config.center.rarity = secret_card.rarity + card.cost = secret_card.cost + card:set_sprites(G.P_CENTERS[card.ability.extra.secret_card]) + card.children.center:set_sprite_pos(secret_card.pos) + end + end + if card.area and card.area.config.collection then + card.config.center.rarity = "cry_cursed" + end + 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.config.center.rarity = "cry_cursed" + card:set_sprites(card.config.center) + card.ability.extra.revealed = true + end, + remove_from_deck = function(self, card, from_debuff) + G.jokers.config.card_limit = G.jokers.config.card_limit - 1 + end, + calculate = function(self, card, context) + if context.cardarea == G.jokers and not context.before and not context.after then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), + Xmult_mod = card.ability.x_mult, + colour = G.C.MULT, + } + end + end, + generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + if card.ability.extra.revealed or (card.area and card.area.config.collection) then + if card.area and card.area.config.collection then + card:update(0.016) + end + local target = { + type = 'descriptions', + key = self.key, + set = self.set, + 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 + 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 } + 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 } + 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 } + 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 + else + local secret_card = cry_deep_copy(G.P_CENTERS[card.ability.extra.secret_card]) + secret_card.ability = secret_card.config + local target = { + type = 'descriptions', + key = secret_card.key, + set = secret_card.set, + nodes = desc_nodes, + vars = + specific_vars or {} + } + local res = {} + 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 } + 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 } + 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 } + 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 + end + end +} +local flickering = { + object_type = "Sticker", + 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 } } + 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 + end + end, + calculate = function(self, card, context) + 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}},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 + elseif context.from_playing_card and not card.debuff and not context.repetition_only and context.ret then + context.ret.jokers = nil + 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}) + else + card.will_shatter = true + G.E_MANAGER:add_event(Event({ + func = function() + card:start_dissolve() + return true + end + })) + end + end + end + end, +} +local trick_or_treat = { + object_type = "Joker", + key = "trick_or_treat", + pos = { x = 2, y = 1 }, + rarity = 2, + cost = 5, + atlas = "atlasspooky", + blueprint_compat = true, + eternal_compat = false, + 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 + 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() + G.jokers:emplace(card) + end + else + local card = create_card("Joker", G.jokers, nil, "cry_cursed", nil, nil, nil, "cry_trick_curse") + card:add_to_deck() + G.jokers:emplace(card) + end + end + end, + loc_vars = function(self, info_queue, center) + return { vars = { 3 * G.GAME.probabilities.normal, 4 } } + end, +} +local candy_basket = { + object_type = "Joker", + key = "candy_basket", + pos = { x = 4, y = 0 }, + rarity = 2, + cost = 6, + atlas = "atlasspooky", + blueprint_compat = false, + eternal_compat = false, + perishable_compat = false, + 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 + local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_candy_basket") + card:add_to_deck() + G.jokers:emplace(card) + end + end + if context.end_of_round and not context.individual and not context.repetition then + candy_pre = math.floor(card.ability.extra.candies) + card.ability.extra.candies = card.ability.extra.candies + card.ability.extra.candy_mod + if G.GAME.blind.boss then + card.ability.extra.candies = card.ability.extra.candies + card.ability.extra.candy_boss_mod + end + if math.floor(card.ability.extra.candies) > candy_pre then + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) + end + 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} } + end, +} +local blacklist = { + object_type = "Joker", + key = "blacklist", + pos = { x = 2, y = 2 }, + rarity = "cry_cursed", + cost = 0, + atlas = "atlasspooky", + config = {extra = {blacklist = {}}}, + blueprint_compat = false, + eternal_compat = false, + perishable_compat = false, + no_dbl = true, + calculate = function(self, card, context) + if context.joker_main then + local blacklist = false + for i = 1, #G.play.cards do + if G.play.cards[i]:get_id() == card.ability.extra.blacklist.id then + blacklist = true + break + end + end + for i = 1, #G.hand.cards do + if G.hand.cards[i]:get_id() == card.ability.extra.blacklist.id then + blacklist = true + break + end + end + if blacklist then + hand_chips = to_big(0) + mult = to_big(0) + update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) + return { + message = localize("k_nope_ex"), + colour = G.C.BLACK, + } + else + for i = 1, #G.discard.cards do + if G.discard.cards[i]:get_id() == card.ability.extra.blacklist.id then + blacklist = true + break + end + end + for i = 1, #G.deck.cards do + if G.deck.cards[i]:get_id() == card.ability.extra.blacklist.id then + blacklist = true + break + end + end + if not blacklist then + G.E_MANAGER:add_event(Event({ + func = function() + card:start_dissolve() + return true + 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)) + end, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.blacklist and center.ability.extra.blacklist.key or "Ace" } } + end, +} +local ghost = { + object_type = "Joker", + key = "ghost", + pos = { x = 3, y = 0 }, + config = {extra = {possess_rate = 2, destroy_rate = 6}}, + rarity = "cry_cursed", + cost = 0, + atlas = "atlasspooky", + blueprint_compat = false, + eternal_compat = false, + 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")) < G.GAME.probabilities.normal/card.ability.extra.destroy_rate then + G.E_MANAGER:add_event(Event({ + func = function() + card:start_dissolve() + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].ability.cry_possessed then + if G.jokers.cards[i].ability.eternal then + G.jokers.cards[i].ability.cry_possessed = nil + else + G.jokers.cards[i]:start_dissolve() + end + end + end + return true + end + })) + return + end + --todo: let multiple ghosts possess multiple jokers + if pseudorandom(pseudoseed("cry_ghost_possess")) < G.GAME.probabilities.normal/card.ability.extra.possess_rate then + for i = 1, #G.jokers.cards do + G.jokers.cards[i].ability.cry_possessed = nil + end + local eligible_cards = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.key ~= "j_cry_ghost" then + table.insert(eligible_cards, i) + end + end + if #eligible_cards ~= 0 then + 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, center) + info_queue[#info_queue + 1] = { set = "Other", key = "cry_possessed"} + return { vars = { G.GAME.probabilities.normal or 1, center.ability.extra.possess_rate, center.ability.extra.destroy_rate } } + end, +} +local possessed = { + object_type = "Sticker", + atlas = "sticker", + pos = { x = 2, y = 2 }, --todo + key = "possessed", + no_sticker_sheet = true, + badge_colour = HEX("aaaaaa"), +} +local spookydeck = { + object_type = "Back", + key = "spooky", + config = { cry_spooky = true, cry_curse_rate = 0.25 }, + pos = { x = 3, y = 1 }, + atlas = "atlasspooky", +} +local candy_dagger = { + object_type = "Joker", + name = "cry-Candy Dagger", + key = "candy_dagger", + pos = { x = 4, y = 2 }, + rarity = 2, + cost = 8, + 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 + break + end + end + if + context.setting_blind + and not (context.blueprint_card or self).getting_sliced + and my_pos + and G.jokers.cards[my_pos + 1] + and not G.jokers.cards[my_pos + 1].ability.eternal + and not G.jokers.cards[my_pos + 1].getting_sliced + then + local sliced_card = G.jokers.cards[my_pos + 1] + sliced_card.getting_sliced = true + if sliced_card.config.center.rarity == "cry_exotic" then + check_for_unlock({ type = "what_have_you_done" }) + end + G.GAME.joker_buffer = G.GAME.joker_buffer - 1 + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.joker_buffer = 0 + card:juice_up(0.8, 0.8) + sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + play_sound("slice1", 0.96 + math.random() * 0.08) + 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, + } + ) + 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, +} +local candy_cane = { + object_type = "Joker", + key = "candy_cane", + pos = { x = 1, y = 1 }, + rarity = "cry_candy", + config = { extra = { rounds = 11, dollars = 4 } }, + cost = 10, + atlas = "atlasspooky", + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.rounds, center.ability.extra.dollars } } + end, + 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 + G.E_MANAGER:add_event(Event({ + func = function() + context.other_card.candy_caned = nil + return true + end + })) + else + ease_dollars(card.ability.extra.dollars) + 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 = card.ability.extra.rounds - 1 + if card.ability.extra.rounds > 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_extinct_ex"), + colour = G.C.FILTER, + } + end + end + end, +} + +local candy_buttons = { + object_type = "Joker", + key = "candy_buttons", + name = "cry-candybuttons", + pos = { x = 1, y = 2 }, + rarity = "cry_candy", + config = { extra = { rerolls = 15 } }, + cost = 10, + atlas = "atlasspooky", + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.rerolls } } + end, + calculate = function(self, card, context) + if context.reroll_shop and not context.blueprint then + card.ability.extra.rerolls = card.ability.extra.rerolls - 1 + if card.ability.extra.rerolls <= 0 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, + })) + return { + message = localize("k_extinct_ex"), + colour = G.C.FILTER, + } + end + return nil, true + end + end, + add_to_deck = function(self, card, from_debuff) + calculate_reroll_cost(true) + end, + remove_from_deck = function(self, card, from_debuff) + calculate_reroll_cost(true) + end, +} + +local jawbreaker = { + object_type = "Joker", + key = "jawbreaker", + pos = { x = 3, y = 2 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + blueprint_compat = false, + 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 + 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) + 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) + cry_misprintize(card, { min = 2, max = 2 }, nil, true) + end) + end + end + end + end + 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_extinct_ex"), + colour = G.C.FILTER, + } + end + end, + add_to_deck = function(self, card, from_debuff) + calculate_reroll_cost(true) + end, + remove_from_deck = function(self, card, from_debuff) + calculate_reroll_cost(true) + end, +} +local mellowcreme = { + object_type = "Joker", + key = "mellowcreme", + pos = { x = 0, y = 2 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + config = {extra = {sell_mult = 4}}, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.sell_mult } } + end, + 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) + v:set_cost() + end + end + end + end, +} +local brittle = { + object_type = "Joker", + key = "brittle", + pos = { x = 5, y = 1 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + config = {extra = {rounds = 9}}, + 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, + calculate = function(self, card, context) + 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")) + _card.brittled = true + _card:set_ability(G.P_CENTERS[enhancement], nil, true) + G.E_MANAGER:add_event(Event({ + func = function() + _card:juice_up() + _card.brittled = nil + return true + end + })) + if card.ability.extra.rounds > 0 then + return nil, true + 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_extinct_ex"), + colour = G.C.FILTER, + } + end + end + end + end +} +local monopoly_money = { + object_type = "Joker", + key = "monopoly_money", + name = "cry-Monopoly", + pos = { x = 4, y = 1 }, + config = {extra = {fail_rate = 4}}, + rarity = "cry_cursed", + cost = 0, + atlas = "atlasspooky", + blueprint_compat = false, + eternal_compat = false, + 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 then + if pseudorandom(pseudoseed("cry_monopoly")) < G.GAME.probabilities.normal/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, { + message = localize("k_nope_ex"), + colour = G.C.BLACK, + }) + return true + end + })) + end + return nil, true + end + 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)) + return true + end + })) + return nil, true + end + end, + loc_vars = function(self, info_queue, center) + return { vars = { G.GAME.probabilities.normal or 1, center.ability.extra.fail_rate} } + end, +} +local candy_sticks = { + object_type = "Joker", + key = "candy_sticks", + name = "cry-Candy-Sticks", + pos = { x = 5, y = 2 }, + config = {extra = { boss = {}, hands = 1, clockscore = 0}}, + rarity = "cry_candy", + cost = 3, + atlas = "atlasspooky", + blueprint_compat = false, + eternal_compat = false, + 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 + 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 })) + end + 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 + 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 + })) + end + end + 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 + })) + end + end, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.hands} } + end, +} + +items = { + cotton_candy, + wrapped, + choco_dice, + choco_base_event, + choco1, + choco2, + choco3, + potion, + choco4, + choco5, + choco6, + choco7, + choco8, + choco9, + choco10, + spy, + flickering, + trick_or_treat, + candy_basket, + blacklist, + ghost, + possessed, + spookydeck, + candy_dagger, + candy_cane, + candy_buttons, + jawbreaker, + mellowcreme, + brittle, + monopoly_money, + candy_sticks, +} +--order is temporary so we can more easily test these out +return { name = "Spooky", order = 1e300, 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) + 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 + 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, + })) + end + end +end, items = items } diff --git a/Items/Stakes.lua b/old/Items/Stakes.lua similarity index 96% rename from Items/Stakes.lua rename to old/Items/Stakes.lua index d457eb64f..9d3fdd3d7 100644 --- a/Items/Stakes.lua +++ b/old/Items/Stakes.lua @@ -1,606 +1,606 @@ -local pink = { - object_type = "Stake", - name = "cry-Pink Stake", - key = "pink", - pos = { x = 0, y = 0 }, - atlas = "stake", - applied_stakes = { "gold" }, - modifiers = function() - G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 - end, - order = 9, - colour = HEX("ff5ee6"), -} -local brown = { - object_type = "Stake", - name = "cry-Brown Stake", - key = "brown", - pos = { x = 1, y = 0 }, - atlas = "stake", - applied_stakes = { "cry_pink" }, - modifiers = function() - G.GAME.modifiers.cry_eternal_perishable_compat = true - end, - order = 10, - colour = HEX("883200"), -} -local yellow = { - object_type = "Stake", - name = "cry-Yellow Stake", - key = "yellow", - pos = { x = 2, y = 0 }, - atlas = "stake", - applied_stakes = { "cry_brown" }, - modifiers = function() - G.GAME.modifiers.cry_any_stickers = true - end, - order = 11, - colour = HEX("f7ff1f"), -} -local jade = { - object_type = "Stake", - name = "cry-Jade Stake", - key = "jade", - pos = { x = 3, y = 0 }, - atlas = "stake", - applied_stakes = { "cry_yellow" }, - modifiers = function() - G.GAME.modifiers.flipped_cards = 20 - end, - shiny = true, - order = 12, - colour = HEX("78953c"), -} -local cyan = { - object_type = "Stake", - name = "cry-Cyan Stake", - key = "cyan", - pos = { x = 4, y = 0 }, - atlas = "stake", - applied_stakes = { "cry_jade" }, - modifiers = function() - G.GAME.modifiers.cry_rarer_jokers = true - -- Note that this is not the exact rarity as the old lovely patch might be nerf/buff to the stake - G.GAME.uncommon_mod = 0.5 - G.GAME.rare_mod = 0.5 - end, - order = 13, - colour = HEX("39ffcc"), -} -local gray = { - object_type = "Stake", - name = "cry-Gray Stake", - key = "gray", - pos = { x = 0, y = 1 }, - atlas = "stake", - applied_stakes = { "cry_cyan" }, - modifiers = function() - G.GAME.modifiers.cry_reroll_scaling = 2 - end, - order = 14, - colour = HEX("999999"), -} -local crimson = { - object_type = "Stake", - name = "cry-Crimson Stake", - key = "crimson", - pos = { x = 1, y = 1 }, - atlas = "stake", - applied_stakes = { "cry_gray" }, - modifiers = function() - G.GAME.modifiers.cry_voucher_restock_antes = 2 - end, - order = 15, - colour = HEX("800000"), -} -local diamond = { - object_type = "Stake", - name = "cry-Diamond Stake", - key = "diamond", - pos = { x = 2, y = 1 }, - atlas = "stake", - applied_stakes = { "cry_crimson" }, - modifiers = function() - G.GAME.win_ante = 10 - end, - shiny = true, - order = 16, - colour = HEX("88e5d9"), -} -local amber = { - object_type = "Stake", - name = "cry-Amber Stake", - key = "amber", - pos = { x = 3, y = 1 }, - atlas = "stake", - applied_stakes = { "cry_diamond" }, - modifiers = function() - G.GAME.modifiers.cry_booster_packs = 1 - end, - shiny = true, - order = 17, - colour = HEX("feb900"), -} -local bronze = { - object_type = "Stake", - name = "cry-Bronze Stake", - key = "bronze", - pos = { x = 4, y = 1 }, - atlas = "stake", - applied_stakes = { "cry_amber" }, - modifiers = function() - G.GAME.modifiers.cry_voucher_price_hike = 1.5 - end, - shiny = true, - order = 18, - colour = HEX("d27c37"), -} -local quartz = { - object_type = "Stake", - name = "cry-Quartz Stake", - key = "quartz", - pos = { x = 0, y = 2 }, - atlas = "stake", - applied_stakes = { "cry_bronze" }, - modifiers = function() - G.GAME.modifiers.cry_enable_pinned_in_shop = true - end, - shiny = true, - order = 19, - colour = HEX("e8e8e8"), -} -local ruby = { - object_type = "Stake", - name = "cry-Ruby Stake", - key = "ruby", - pos = { x = 1, y = 2 }, - atlas = "stake", - applied_stakes = { "cry_quartz" }, - modifiers = function() - G.GAME.modifiers.cry_big_boss_rate = 0.3 - end, - shiny = true, - order = 20, - colour = HEX("fc5f55"), -} -local glass = { - object_type = "Stake", - name = "cry-Glass Stake", - key = "glass", - pos = { x = 2, y = 2 }, - atlas = "stake", - applied_stakes = { "cry_ruby" }, - modifiers = function() - G.GAME.modifiers.cry_shatter_rate = 30 - end, - shiny = true, - order = 21, - colour = HEX("ffffff8f"), -} -local sapphire = { - object_type = "Stake", - name = "cry-Sapphire Stake", - key = "sapphire", - pos = { x = 3, y = 2 }, - atlas = "stake", - applied_stakes = { "cry_glass" }, - modifiers = function() - G.GAME.modifiers.cry_ante_tax = 0.25 - G.GAME.modifiers.cry_ante_tax_max = 10 - end, - shiny = true, - order = 22, - colour = HEX("3551fc"), -} -local emerald = { - object_type = "Stake", - name = "cry-Emerald Stake", - key = "emerald", - pos = { x = 4, y = 2 }, - atlas = "stake", - applied_stakes = { "cry_sapphire" }, - modifiers = function() - G.GAME.modifiers.cry_enable_flipped_in_shop = true - end, - shiny = true, - order = 23, - colour = HEX("06fc2c"), -} -local platinum = { - object_type = "Stake", - name = "cry-Platinum Stake", - key = "platinum", - pos = { x = 0, y = 3 }, - atlas = "stake", - applied_stakes = { "cry_emerald" }, - modifiers = function() - G.GAME.modifiers.cry_no_small_blind = true - G.GAME.round_resets.blind_states["Small"] = "Hide" - end, - shiny = true, - order = 24, - colour = HEX("b0f6ff"), -} ---init colors so they have references -G.C.CRY_TWILIGHT = { 0, 0, 0, 0 } -G.C.CRY_VERDANT = { 0, 0, 0, 0 } -G.C.CRY_EMBER = { 0, 0, 0, 0 } -G.C.CRY_DAWN = { 0, 0, 0, 0 } -G.C.CRY_HORIZON = { 0, 0, 0, 0 } -G.C.CRY_BLOSSOM = { 0, 0, 0, 0 } -G.C.CRY_AZURE = { 0, 0, 0, 0 } -G.C.CRY_ASCENDANT = { 0, 0, 0, 0 } -local twilight = { - object_type = "Stake", - name = "cry-Twilight Stake", - key = "twilight", - pos = { x = 1, y = 3 }, - atlas = "stake", - applied_stakes = { "cry_platinum" }, - modifiers = function() - G.GAME.modifiers.enable_banana = true - end, - shiny = true, - order = 25, - colour = G.C.CRY_TWILIGHT, -} -local banana = { - object_type = "Sticker", - badge_colour = HEX("e8c500"), - prefix_config = { key = false }, - key = "banana", - atlas = "sticker", - pos = { x = 5, y = 2 }, - should_apply = false, - loc_vars = function(self, info_queue, card) - if card.ability.consumeable then - return { key = "cry_banana_consumeable", vars = { G.GAME.probabilities.normal or 1, 4 } } - elseif card.ability.set == "Voucher" then - return { key = "cry_banana_voucher", vars = { G.GAME.probabilities.normal or 1, 12 } } - elseif card.ability.set == "Booster" then - return { key = "cry_banana_booster" } - else - return { vars = { G.GAME.probabilities.normal or 1, 10 } } - end - end, -} -local verdant = { - object_type = "Stake", - name = "cry-Verdant Stake", - key = "verdant", - pos = { x = 2, y = 3 }, - atlas = "stake", - applied_stakes = { "cry_twilight" }, - modifiers = function() - G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 - end, - shiny = true, - order = 26, - colour = G.C.CRY_VERDANT, -} -local ember = { - object_type = "Stake", - name = "cry-Ember Stake", - key = "ember", - pos = { x = 3, y = 3 }, - atlas = "stake", - applied_stakes = { "cry_verdant" }, - modifiers = function() - G.GAME.modifiers.cry_no_sell_value = true - end, - shiny = true, - order = 27, - colour = G.C.CRY_EMBER, -} -local dawn = { - object_type = "Stake", - name = "cry-Dawn Stake", - key = "dawn", - pos = { x = 4, y = 3 }, - atlas = "stake", - applied_stakes = { "cry_ember" }, - modifiers = function() - G.GAME.modifiers.cry_consumable_reduce = true - end, - shiny = true, - order = 28, - colour = G.C.CRY_DAWN, -} -local horizon = { - object_type = "Stake", - name = "cry-Horizon Stake", - key = "horizon", - pos = { x = 0, y = 4 }, - atlas = "stake", - applied_stakes = { "cry_dawn" }, - modifiers = function() - G.GAME.modifiers.cry_card_each_round = true - end, - shiny = true, - order = 29, - colour = G.C.CRY_HORIZON, -} -local blossom = { - object_type = "Stake", - name = "cry-Blossom Stake", - key = "blossom", - pos = { x = 1, y = 4 }, - atlas = "stake", - applied_stakes = { "cry_horizon" }, - modifiers = function() - G.GAME.modifiers.cry_big_showdown = true - end, - shiny = true, - order = 30, - colour = G.C.CRY_BLOSSOM, -} -local azure = { - object_type = "Stake", - name = "cry-Azure Stake", - key = "azure", - pos = { x = 2, y = 4 }, - atlas = "stake", - applied_stakes = { "cry_blossom" }, - modifiers = function() - G.GAME.modifiers.cry_jkr_misprint_mod = 0.8 - end, - shiny = true, - order = 31, - colour = G.C.CRY_AZURE, -} -local ascendant = { - object_type = "Stake", - name = "cry-Ascendant Stake", - key = "ascendant", - pos = { x = 3, y = 4 }, - atlas = "stake", - applied_stakes = { "cry_azure" }, - modifiers = function() - change_shop_size(-1) - end, - shiny = true, - order = 32, - colour = G.C.CRY_ASCENDANT, -} -local stake_atlas = { object_type = "Atlas", key = "stake", -path = "stake_cry.png", px = 29, py = 29 } -return { - name = "More Stakes", - init = function(self) - -- Disallow use of Debuffed Perishable consumables - local cuc = Card.can_use_consumeable - function Card:can_use_consumeable(any_state, skip_check) - if self.ability.perish_tally == nil then - self.ability.perish_tally = G.GAME.perishable_rounds or 5 - end - if self.ability.perishable and self.ability.perish_tally <= 0 then - return false - end - return cuc(self, any_state, skip_check) - end - -- Overriding Steamodded's registering of Incantation/Familiar/Grim - local function random_destroy(used_tarot) - local destroyed_cards = {} - local temp_hand = {} - local hasHand = false - for k, v in ipairs(G.hand.cards) do - if not v.ability.eternal then - temp_hand[#temp_hand + 1] = v - hasHand = true - end - end - if hasHand then - destroyed_cards[#destroyed_cards + 1] = pseudorandom_element(temp_hand, pseudoseed("random_destroy")) - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - if used_tarot and used_tarot.juice_up then - used_tarot:juice_up(0.3, 0.5) - end - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - for i = #destroyed_cards, 1, -1 do - local card = destroyed_cards[i] - if card.ability.name == "Glass Card" then - card:shatter() - else - card:start_dissolve(nil, i ~= #destroyed_cards) - end - end - return true - end, - })) - return destroyed_cards - end - SMODS.Consumable:take_ownership("grim", { - use = function(self, card, area, copier) - local used_tarot = copier or card - local destroyed_cards = random_destroy(used_tarot) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.7, - func = function() - local cards = {} - for i = 1, card.ability.extra do - cards[i] = true - local suit_list = {} - for i = #SMODS.Suit.obj_buffer, 1, -1 do - suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] - end - local _suit, _rank = - SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("grim_create"))].card_key, "A" - local cen_pool = {} - for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do - if v.key ~= "m_stone" then - cen_pool[#cen_pool + 1] = v - end - end - create_playing_card({ - front = G.P_CARDS[_suit .. "_" .. _rank], - center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), - }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) - end - playing_card_joker_effects(cards) - return true - end, - })) - delay(0.3) - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) - end - end, - }, true) - SMODS.Consumable:take_ownership("familiar", { - use = function(self, card, area, copier) - local used_tarot = copier or card - local destroyed_cards = random_destroy(used_tarot) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.7, - func = function() - local cards = {} - for i = 1, card.ability.extra do - cards[i] = true - local suit_list = {} - for i = #SMODS.Suit.obj_buffer, 1, -1 do - suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] - end - local faces = {} - for _, v in ipairs(SMODS.Rank.obj_buffer) do - local r = SMODS.Ranks[v] - if r.face then - table.insert(faces, r.card_key) - end - end - local _suit, _rank = - SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("familiar_create"))].card_key, - pseudorandom_element(faces, pseudoseed("familiar_create")) - local cen_pool = {} - for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do - if v.key ~= "m_stone" then - cen_pool[#cen_pool + 1] = v - end - end - create_playing_card({ - front = G.P_CARDS[_suit .. "_" .. _rank], - center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), - }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) - end - playing_card_joker_effects(cards) - return true - end, - })) - delay(0.3) - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) - end - end, - }, true) - SMODS.Consumable:take_ownership("incantation", { - use = function(self, card, area, copier) - local used_tarot = copier or card - local destroyed_cards = random_destroy(used_tarot) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.7, - func = function() - local cards = {} - for i = 1, card.ability.extra do - cards[i] = true - local suit_list = {} - for i = #SMODS.Suit.obj_buffer, 1, -1 do - suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] - end - local numbers = {} - for _RELEASE_MODE, v in ipairs(SMODS.Rank.obj_buffer) do - local r = SMODS.Ranks[v] - if v ~= "Ace" and not r.face then - table.insert(numbers, r.card_key) - end - end - local _suit, _rank = - SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("incantation_create"))].card_key, - pseudorandom_element(numbers, pseudoseed("incantation_create")) - local cen_pool = {} - for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do - if v.key ~= "m_stone" then - cen_pool[#cen_pool + 1] = v - end - end - create_playing_card({ - front = G.P_CARDS[_suit .. "_" .. _rank], - center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), - }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) - end - playing_card_joker_effects(cards) - return true - end, - })) - delay(0.3) - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) - end - end, - }, true) - - local sc = Card.set_cost - function Card:set_cost() - sc(self) - if self.ability.set == "Voucher" and G.GAME.modifiers.cry_voucher_price_hike then - self.cost = math.floor(self.cost * G.GAME.modifiers.cry_voucher_price_hike) - --Update related costs - self.sell_cost = math.max(1, math.floor(self.cost / 2)) + (self.ability.extra_value or 0) - if - self.area - and self.ability.couponed - and (self.area == G.shop_jokers or self.area == G.shop_booster) - then - self.cost = 0 - end - self.sell_cost_label = self.facing == "back" and "?" or self.sell_cost - end - end - for _, v in pairs(self.items) do - if v.object_type == "Stake" then - v.sticker_pos = v.pos - v.sticker_atlas = "sticker" - end - end - end, - items = { - stake_atlas, - pink, - brown, - yellow, - jade, - cyan, - gray, - crimson, - diamond, - amber, - bronze, - quartz, - ruby, - glass, - sapphire, - emerald, - platinum, - twilight, - verdant, - ember, - dawn, - horizon, - blossom, - azure, - ascendant, - banana, - }, -} +local pink = { + object_type = "Stake", + name = "cry-Pink Stake", + key = "pink", + pos = { x = 0, y = 0 }, + atlas = "stake", + applied_stakes = { "gold" }, + modifiers = function() + G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 + end, + order = 9, + colour = HEX("ff5ee6"), +} +local brown = { + object_type = "Stake", + name = "cry-Brown Stake", + key = "brown", + pos = { x = 1, y = 0 }, + atlas = "stake", + applied_stakes = { "cry_pink" }, + modifiers = function() + G.GAME.modifiers.cry_eternal_perishable_compat = true + end, + order = 10, + colour = HEX("883200"), +} +local yellow = { + object_type = "Stake", + name = "cry-Yellow Stake", + key = "yellow", + pos = { x = 2, y = 0 }, + atlas = "stake", + applied_stakes = { "cry_brown" }, + modifiers = function() + G.GAME.modifiers.cry_any_stickers = true + end, + order = 11, + colour = HEX("f7ff1f"), +} +local jade = { + object_type = "Stake", + name = "cry-Jade Stake", + key = "jade", + pos = { x = 3, y = 0 }, + atlas = "stake", + applied_stakes = { "cry_yellow" }, + modifiers = function() + G.GAME.modifiers.flipped_cards = 20 + end, + shiny = true, + order = 12, + colour = HEX("78953c"), +} +local cyan = { + object_type = "Stake", + name = "cry-Cyan Stake", + key = "cyan", + pos = { x = 4, y = 0 }, + atlas = "stake", + applied_stakes = { "cry_jade" }, + modifiers = function() + G.GAME.modifiers.cry_rarer_jokers = true + -- Note that this is not the exact rarity as the old lovely patch might be nerf/buff to the stake + G.GAME.uncommon_mod = 0.5 + G.GAME.rare_mod = 0.5 + end, + order = 13, + colour = HEX("39ffcc"), +} +local gray = { + object_type = "Stake", + name = "cry-Gray Stake", + key = "gray", + pos = { x = 0, y = 1 }, + atlas = "stake", + applied_stakes = { "cry_cyan" }, + modifiers = function() + G.GAME.modifiers.cry_reroll_scaling = 2 + end, + order = 14, + colour = HEX("999999"), +} +local crimson = { + object_type = "Stake", + name = "cry-Crimson Stake", + key = "crimson", + pos = { x = 1, y = 1 }, + atlas = "stake", + applied_stakes = { "cry_gray" }, + modifiers = function() + G.GAME.modifiers.cry_voucher_restock_antes = 2 + end, + order = 15, + colour = HEX("800000"), +} +local diamond = { + object_type = "Stake", + name = "cry-Diamond Stake", + key = "diamond", + pos = { x = 2, y = 1 }, + atlas = "stake", + applied_stakes = { "cry_crimson" }, + modifiers = function() + G.GAME.win_ante = 10 + end, + shiny = true, + order = 16, + colour = HEX("88e5d9"), +} +local amber = { + object_type = "Stake", + name = "cry-Amber Stake", + key = "amber", + pos = { x = 3, y = 1 }, + atlas = "stake", + applied_stakes = { "cry_diamond" }, + modifiers = function() + G.GAME.modifiers.cry_booster_packs = 1 + end, + shiny = true, + order = 17, + colour = HEX("feb900"), +} +local bronze = { + object_type = "Stake", + name = "cry-Bronze Stake", + key = "bronze", + pos = { x = 4, y = 1 }, + atlas = "stake", + applied_stakes = { "cry_amber" }, + modifiers = function() + G.GAME.modifiers.cry_voucher_price_hike = 1.5 + end, + shiny = true, + order = 18, + colour = HEX("d27c37"), +} +local quartz = { + object_type = "Stake", + name = "cry-Quartz Stake", + key = "quartz", + pos = { x = 0, y = 2 }, + atlas = "stake", + applied_stakes = { "cry_bronze" }, + modifiers = function() + G.GAME.modifiers.cry_enable_pinned_in_shop = true + end, + shiny = true, + order = 19, + colour = HEX("e8e8e8"), +} +local ruby = { + object_type = "Stake", + name = "cry-Ruby Stake", + key = "ruby", + pos = { x = 1, y = 2 }, + atlas = "stake", + applied_stakes = { "cry_quartz" }, + modifiers = function() + G.GAME.modifiers.cry_big_boss_rate = 0.3 + end, + shiny = true, + order = 20, + colour = HEX("fc5f55"), +} +local glass = { + object_type = "Stake", + name = "cry-Glass Stake", + key = "glass", + pos = { x = 2, y = 2 }, + atlas = "stake", + applied_stakes = { "cry_ruby" }, + modifiers = function() + G.GAME.modifiers.cry_shatter_rate = 30 + end, + shiny = true, + order = 21, + colour = HEX("ffffff8f"), +} +local sapphire = { + object_type = "Stake", + name = "cry-Sapphire Stake", + key = "sapphire", + pos = { x = 3, y = 2 }, + atlas = "stake", + applied_stakes = { "cry_glass" }, + modifiers = function() + G.GAME.modifiers.cry_ante_tax = 0.25 + G.GAME.modifiers.cry_ante_tax_max = 10 + end, + shiny = true, + order = 22, + colour = HEX("3551fc"), +} +local emerald = { + object_type = "Stake", + name = "cry-Emerald Stake", + key = "emerald", + pos = { x = 4, y = 2 }, + atlas = "stake", + applied_stakes = { "cry_sapphire" }, + modifiers = function() + G.GAME.modifiers.cry_enable_flipped_in_shop = true + end, + shiny = true, + order = 23, + colour = HEX("06fc2c"), +} +local platinum = { + object_type = "Stake", + name = "cry-Platinum Stake", + key = "platinum", + pos = { x = 0, y = 3 }, + atlas = "stake", + applied_stakes = { "cry_emerald" }, + modifiers = function() + G.GAME.modifiers.cry_no_small_blind = true + G.GAME.round_resets.blind_states["Small"] = "Hide" + end, + shiny = true, + order = 24, + colour = HEX("b0f6ff"), +} +--init colors so they have references +G.C.CRY_TWILIGHT = { 0, 0, 0, 0 } +G.C.CRY_VERDANT = { 0, 0, 0, 0 } +G.C.CRY_EMBER = { 0, 0, 0, 0 } +G.C.CRY_DAWN = { 0, 0, 0, 0 } +G.C.CRY_HORIZON = { 0, 0, 0, 0 } +G.C.CRY_BLOSSOM = { 0, 0, 0, 0 } +G.C.CRY_AZURE = { 0, 0, 0, 0 } +G.C.CRY_ASCENDANT = { 0, 0, 0, 0 } +local twilight = { + object_type = "Stake", + name = "cry-Twilight Stake", + key = "twilight", + pos = { x = 1, y = 3 }, + atlas = "stake", + applied_stakes = { "cry_platinum" }, + modifiers = function() + G.GAME.modifiers.enable_banana = true + end, + shiny = true, + order = 25, + colour = G.C.CRY_TWILIGHT, +} +local banana = { + object_type = "Sticker", + badge_colour = HEX("e8c500"), + prefix_config = { key = false }, + key = "banana", + atlas = "sticker", + pos = { x = 5, y = 2 }, + should_apply = false, + loc_vars = function(self, info_queue, card) + if card.ability.consumeable then + return { key = "cry_banana_consumeable", vars = { G.GAME.probabilities.normal or 1, 4 } } + elseif card.ability.set == "Voucher" then + return { key = "cry_banana_voucher", vars = { G.GAME.probabilities.normal or 1, 12 } } + elseif card.ability.set == "Booster" then + return { key = "cry_banana_booster" } + else + return { vars = { G.GAME.probabilities.normal or 1, 10 } } + end + end, +} +local verdant = { + object_type = "Stake", + name = "cry-Verdant Stake", + key = "verdant", + pos = { x = 2, y = 3 }, + atlas = "stake", + applied_stakes = { "cry_twilight" }, + modifiers = function() + G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 + end, + shiny = true, + order = 26, + colour = G.C.CRY_VERDANT, +} +local ember = { + object_type = "Stake", + name = "cry-Ember Stake", + key = "ember", + pos = { x = 3, y = 3 }, + atlas = "stake", + applied_stakes = { "cry_verdant" }, + modifiers = function() + G.GAME.modifiers.cry_no_sell_value = true + end, + shiny = true, + order = 27, + colour = G.C.CRY_EMBER, +} +local dawn = { + object_type = "Stake", + name = "cry-Dawn Stake", + key = "dawn", + pos = { x = 4, y = 3 }, + atlas = "stake", + applied_stakes = { "cry_ember" }, + modifiers = function() + G.GAME.modifiers.cry_consumable_reduce = true + end, + shiny = true, + order = 28, + colour = G.C.CRY_DAWN, +} +local horizon = { + object_type = "Stake", + name = "cry-Horizon Stake", + key = "horizon", + pos = { x = 0, y = 4 }, + atlas = "stake", + applied_stakes = { "cry_dawn" }, + modifiers = function() + G.GAME.modifiers.cry_card_each_round = true + end, + shiny = true, + order = 29, + colour = G.C.CRY_HORIZON, +} +local blossom = { + object_type = "Stake", + name = "cry-Blossom Stake", + key = "blossom", + pos = { x = 1, y = 4 }, + atlas = "stake", + applied_stakes = { "cry_horizon" }, + modifiers = function() + G.GAME.modifiers.cry_big_showdown = true + end, + shiny = true, + order = 30, + colour = G.C.CRY_BLOSSOM, +} +local azure = { + object_type = "Stake", + name = "cry-Azure Stake", + key = "azure", + pos = { x = 2, y = 4 }, + atlas = "stake", + applied_stakes = { "cry_blossom" }, + modifiers = function() + G.GAME.modifiers.cry_jkr_misprint_mod = 0.8 + end, + shiny = true, + order = 31, + colour = G.C.CRY_AZURE, +} +local ascendant = { + object_type = "Stake", + name = "cry-Ascendant Stake", + key = "ascendant", + pos = { x = 3, y = 4 }, + atlas = "stake", + applied_stakes = { "cry_azure" }, + modifiers = function() + change_shop_size(-1) + end, + shiny = true, + order = 32, + colour = G.C.CRY_ASCENDANT, +} +local stake_atlas = { object_type = "Atlas", key = "stake", +path = "stake_cry.png", px = 29, py = 29 } +return { + name = "More Stakes", + init = function(self) + -- Disallow use of Debuffed Perishable consumables + local cuc = Card.can_use_consumeable + function Card:can_use_consumeable(any_state, skip_check) + if self.ability.perish_tally == nil then + self.ability.perish_tally = G.GAME.perishable_rounds or 5 + end + if self.ability.perishable and self.ability.perish_tally <= 0 then + return false + end + return cuc(self, any_state, skip_check) + end + -- Overriding Steamodded's registering of Incantation/Familiar/Grim + local function random_destroy(used_tarot) + local destroyed_cards = {} + local temp_hand = {} + local hasHand = false + for k, v in ipairs(G.hand.cards) do + if not v.ability.eternal then + temp_hand[#temp_hand + 1] = v + hasHand = true + end + end + if hasHand then + destroyed_cards[#destroyed_cards + 1] = pseudorandom_element(temp_hand, pseudoseed("random_destroy")) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + if used_tarot and used_tarot.juice_up then + used_tarot:juice_up(0.3, 0.5) + end + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + for i = #destroyed_cards, 1, -1 do + local card = destroyed_cards[i] + if card.ability.name == "Glass Card" then + card:shatter() + else + card:start_dissolve(nil, i ~= #destroyed_cards) + end + end + return true + end, + })) + return destroyed_cards + end + SMODS.Consumable:take_ownership("grim", { + use = function(self, card, area, copier) + local used_tarot = copier or card + local destroyed_cards = random_destroy(used_tarot) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.7, + func = function() + local cards = {} + for i = 1, card.ability.extra do + cards[i] = true + local suit_list = {} + for i = #SMODS.Suit.obj_buffer, 1, -1 do + suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] + end + local _suit, _rank = + SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("grim_create"))].card_key, "A" + local cen_pool = {} + for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do + if v.key ~= "m_stone" then + cen_pool[#cen_pool + 1] = v + end + end + create_playing_card({ + front = G.P_CARDS[_suit .. "_" .. _rank], + center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), + }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) + end + playing_card_joker_effects(cards) + return true + end, + })) + delay(0.3) + for i = 1, #G.jokers.cards do + G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) + end + end, + }, true) + SMODS.Consumable:take_ownership("familiar", { + use = function(self, card, area, copier) + local used_tarot = copier or card + local destroyed_cards = random_destroy(used_tarot) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.7, + func = function() + local cards = {} + for i = 1, card.ability.extra do + cards[i] = true + local suit_list = {} + for i = #SMODS.Suit.obj_buffer, 1, -1 do + suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] + end + local faces = {} + for _, v in ipairs(SMODS.Rank.obj_buffer) do + local r = SMODS.Ranks[v] + if r.face then + table.insert(faces, r.card_key) + end + end + local _suit, _rank = + SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("familiar_create"))].card_key, + pseudorandom_element(faces, pseudoseed("familiar_create")) + local cen_pool = {} + for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do + if v.key ~= "m_stone" then + cen_pool[#cen_pool + 1] = v + end + end + create_playing_card({ + front = G.P_CARDS[_suit .. "_" .. _rank], + center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), + }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) + end + playing_card_joker_effects(cards) + return true + end, + })) + delay(0.3) + for i = 1, #G.jokers.cards do + G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) + end + end, + }, true) + SMODS.Consumable:take_ownership("incantation", { + use = function(self, card, area, copier) + local used_tarot = copier or card + local destroyed_cards = random_destroy(used_tarot) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.7, + func = function() + local cards = {} + for i = 1, card.ability.extra do + cards[i] = true + local suit_list = {} + for i = #SMODS.Suit.obj_buffer, 1, -1 do + suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] + end + local numbers = {} + for _RELEASE_MODE, v in ipairs(SMODS.Rank.obj_buffer) do + local r = SMODS.Ranks[v] + if v ~= "Ace" and not r.face then + table.insert(numbers, r.card_key) + end + end + local _suit, _rank = + SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("incantation_create"))].card_key, + pseudorandom_element(numbers, pseudoseed("incantation_create")) + local cen_pool = {} + for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do + if v.key ~= "m_stone" then + cen_pool[#cen_pool + 1] = v + end + end + create_playing_card({ + front = G.P_CARDS[_suit .. "_" .. _rank], + center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), + }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) + end + playing_card_joker_effects(cards) + return true + end, + })) + delay(0.3) + for i = 1, #G.jokers.cards do + G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) + end + end, + }, true) + + local sc = Card.set_cost + function Card:set_cost() + sc(self) + if self.ability.set == "Voucher" and G.GAME.modifiers.cry_voucher_price_hike then + self.cost = math.floor(self.cost * G.GAME.modifiers.cry_voucher_price_hike) + --Update related costs + self.sell_cost = math.max(1, math.floor(self.cost / 2)) + (self.ability.extra_value or 0) + if + self.area + and self.ability.couponed + and (self.area == G.shop_jokers or self.area == G.shop_booster) + then + self.cost = 0 + end + self.sell_cost_label = self.facing == "back" and "?" or self.sell_cost + end + end + for _, v in pairs(self.items) do + if v.object_type == "Stake" then + v.sticker_pos = v.pos + v.sticker_atlas = "sticker" + end + end + end, + items = { + stake_atlas, + pink, + brown, + yellow, + jade, + cyan, + gray, + crimson, + diamond, + amber, + bronze, + quartz, + ruby, + glass, + sapphire, + emerald, + platinum, + twilight, + verdant, + ember, + dawn, + horizon, + blossom, + azure, + ascendant, + banana, + }, +} diff --git a/Items/Tags.lua b/old/Items/Tags.lua similarity index 100% rename from Items/Tags.lua rename to old/Items/Tags.lua diff --git a/Items/Vouchers.lua b/old/Items/Vouchers.lua similarity index 100% rename from Items/Vouchers.lua rename to old/Items/Vouchers.lua diff --git a/Items/dummy_https.lua b/old/Items/dummy_https.lua similarity index 97% rename from Items/dummy_https.lua rename to old/Items/dummy_https.lua index 866c44c56..6b513afe3 100644 --- a/Items/dummy_https.lua +++ b/old/Items/dummy_https.lua @@ -1,3 +1,3 @@ --- dummy file to add https option to mod menu -return { name = "HTTPS Module" } --- someone should make a system for this, engineers are crying +-- 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/Items/dummy_timerblinds.lua b/old/Items/dummy_timerblinds.lua similarity index 97% rename from Items/dummy_timerblinds.lua rename to old/Items/dummy_timerblinds.lua index a462b0fff..68ee4e321 100644 --- a/Items/dummy_timerblinds.lua +++ b/old/Items/dummy_timerblinds.lua @@ -1,4 +1,4 @@ --- Dummy file, only here to add the timer blinds toggle to the menu ---Jevonn was here [MMMMMMM] -return { name = "Timer Mechanics" } --- ^^^ M spotted +-- 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/lovely.toml b/old/lovely.toml similarity index 97% rename from lovely.toml rename to old/lovely.toml index 7774019a5..0003bd48f 100644 --- a/lovely.toml +++ b/old/lovely.toml @@ -1,715 +1,715 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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']) - 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]) - 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']) - 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_ccd', 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 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 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 - -# Max out hand size at deck size -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) + delta" -position = "at" -payload = ''' -self.config.realer_card_limit = (self.config.realer_card_limit or self.config.real_card_limit or self.config.card_limit) + delta -self.config.real_card_limit = self ~= G.hand and self.config.realer_card_limit or math.min((G.deck and G.deck.config.card_limit or 52), self.config.realer_card_limit) -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "self.config.card_limit = math.max(0, self.config.real_card_limit)" -position = "at" -payload = "self.config.card_limit = math.max(0, self.config.real_card_limit)" -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 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) -[[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 -''' -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 -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = '''function love.load()''' -position = "before" -payload = ''' -Cryptid = {} -Cryptid.memepack = {} -Cryptid.aliases = {} -Cryptid.food = {} -Cryptid.M_jokers = {} -Cryptid.Megavouchers = {} -''' -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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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']) + 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]) + 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']) + 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_ccd', 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 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 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 + +# Max out hand size at deck size +[[patches]] +[patches.pattern] +target = "cardarea.lua" +pattern = "self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) + delta" +position = "at" +payload = ''' +self.config.realer_card_limit = (self.config.realer_card_limit or self.config.real_card_limit or self.config.card_limit) + delta +self.config.real_card_limit = self ~= G.hand and self.config.realer_card_limit or math.min((G.deck and G.deck.config.card_limit or 52), self.config.realer_card_limit) +''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "cardarea.lua" +pattern = "self.config.card_limit = math.max(0, self.config.real_card_limit)" +position = "at" +payload = "self.config.card_limit = math.max(0, self.config.real_card_limit)" +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 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) +[[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 +''' +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 +[[patches]] +[patches.pattern] +target = "main.lua" +pattern = '''function love.load()''' +position = "before" +payload = ''' +Cryptid = {} +Cryptid.memepack = {} +Cryptid.aliases = {} +Cryptid.food = {} +Cryptid.M_jokers = {} +Cryptid.Megavouchers = {} +''' +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 diff --git a/lovely/Achievements.toml b/old/lovely/Achievements.toml similarity index 97% rename from lovely/Achievements.toml rename to old/lovely/Achievements.toml index c672a1110..939e745c6 100644 --- a/lovely/Achievements.toml +++ b/old/lovely/Achievements.toml @@ -1,38 +1,38 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -## 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''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +## 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/lovely/Antimatter.toml b/old/lovely/Antimatter.toml similarity index 96% rename from lovely/Antimatter.toml rename to old/lovely/Antimatter.toml index c855a0629..1c3eca4f0 100644 --- a/lovely/Antimatter.toml +++ b/old/lovely/Antimatter.toml @@ -1,27 +1,27 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# Checkered Deck Effect -[[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 = "after" -payload = ''' -if self.GAME.selected_back.effect.config.cry_antimatter then - if _s == 'C' then _s = 'S' end - if _s == 'D' then _s = 'H' end -end -''' -match_indent = true - -# Anaglyph Deck Effect -[[patches]] -[patches.pattern] -target = "back.lua" -pattern = "if self.name == 'Anaglyph Deck' and args.context == 'eval' and G.GAME.last_blind and G.GAME.last_blind.boss then" -position = "at" -payload = "if (self.name == 'Anaglyph Deck' or self.name == 'cry-Antimatter') and args.context == 'eval' and G.GAME.last_blind and G.GAME.last_blind.boss then" +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# Checkered Deck Effect +[[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 = "after" +payload = ''' +if self.GAME.selected_back.effect.config.cry_antimatter then + if _s == 'C' then _s = 'S' end + if _s == 'D' then _s = 'H' end +end +''' +match_indent = true + +# Anaglyph Deck Effect +[[patches]] +[patches.pattern] +target = "back.lua" +pattern = "if self.name == 'Anaglyph Deck' and args.context == 'eval' and G.GAME.last_blind and G.GAME.last_blind.boss then" +position = "at" +payload = "if (self.name == 'Anaglyph Deck' or self.name == 'cry-Antimatter') and args.context == 'eval' and G.GAME.last_blind and G.GAME.last_blind.boss then" match_indent = true \ No newline at end of file diff --git a/lovely/Blinds.toml b/old/lovely/Blinds.toml similarity index 97% rename from lovely/Blinds.toml rename to old/lovely/Blinds.toml index e9072646a..ec88e8f90 100644 --- a/lovely/Blinds.toml +++ b/old/lovely/Blinds.toml @@ -1,53 +1,53 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/CCD.toml b/old/lovely/CCD.toml similarity index 96% rename from lovely/CCD.toml rename to old/lovely/CCD.toml index 376c8276f..82891e82b 100644 --- a/lovely/CCD.toml +++ b/old/lovely/CCD.toml @@ -1,57 +1,57 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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', 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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', 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/lovely/CatMerge.toml b/old/lovely/CatMerge.toml similarity index 96% rename from lovely/CatMerge.toml rename to old/lovely/CatMerge.toml index d29b29e2d..146e9f87e 100644 --- a/lovely/CatMerge.toml +++ b/old/lovely/CatMerge.toml @@ -1,108 +1,108 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Challenges.toml b/old/lovely/Challenges.toml similarity index 96% rename from lovely/Challenges.toml rename to old/lovely/Challenges.toml index 33a116df1..857cddc9c 100644 --- a/lovely/Challenges.toml +++ b/old/lovely/Challenges.toml @@ -1,31 +1,31 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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" +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Code.toml b/old/lovely/Code.toml similarity index 97% rename from lovely/Code.toml rename to old/lovely/Code.toml index cec41f83b..5764a1480 100644 --- a/lovely/Code.toml +++ b/old/lovely/Code.toml @@ -1,251 +1,251 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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.regex] -target = "functions/state_events.lua" -pattern = '''game_over = false -(?[\t ]*)end -[\t ]*for i = 1, #G.jokers.cards do''' -position = 'at' -# match_indent = true -line_prepend = '$indent' -payload = ''' -game_over = false -end -if G.GAME.current_round.semicolon and game_over then - game_over = false -end -for i = 1, #G.jokers.cards do -''' - -# 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 self.STATE = self.STATES.SHOP 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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.regex] +target = "functions/state_events.lua" +pattern = '''game_over = false +(?[\t ]*)end +[\t ]*for i = 1, #G.jokers.cards do''' +position = 'at' +# match_indent = true +line_prepend = '$indent' +payload = ''' +game_over = false +end +if G.GAME.current_round.semicolon and game_over then + game_over = false +end +for i = 1, #G.jokers.cards do +''' + +# 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 self.STATE = self.STATES.SHOP 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/lovely/Conveyor.toml b/old/lovely/Conveyor.toml similarity index 97% rename from lovely/Conveyor.toml rename to old/lovely/Conveyor.toml index f67437013..40421eca1 100644 --- a/lovely/Conveyor.toml +++ b/old/lovely/Conveyor.toml @@ -1,29 +1,29 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Cube.toml b/old/lovely/Cube.toml similarity index 95% rename from lovely/Cube.toml rename to old/lovely/Cube.toml index 5ed6161af..1875da783 100644 --- a/lovely/Cube.toml +++ b/old/lovely/Cube.toml @@ -1,27 +1,27 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Enhanced.toml b/old/lovely/Enhanced.toml similarity index 97% rename from lovely/Enhanced.toml rename to old/lovely/Enhanced.toml index bb790a02c..29d075e0e 100644 --- a/lovely/Enhanced.toml +++ b/old/lovely/Enhanced.toml @@ -1,74 +1,74 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Equilibrium.toml b/old/lovely/Equilibrium.toml similarity index 97% rename from lovely/Equilibrium.toml rename to old/lovely/Equilibrium.toml index f56ade45d..2e0f77183 100644 --- a/lovely/Equilibrium.toml +++ b/old/lovely/Equilibrium.toml @@ -1,30 +1,30 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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" +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Error.toml b/old/lovely/Error.toml similarity index 97% rename from lovely/Error.toml rename to old/lovely/Error.toml index 1f46f603b..36fa4b0b8 100644 --- a/lovely/Error.toml +++ b/old/lovely/Error.toml @@ -1,57 +1,57 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# Misprint-like description -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "elseif self.ability.name == 'Misprint' then" -position = "before" -payload = ''' -elseif self.ability.name == 'cry-Error' then - 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 - 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})}}, - } -''' -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 - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "local main_start, main_end = nil,nil" -position = "after" -payload = ''' -if self.ability.name == 'cry-Machine Code' then - --"Create a random // glitched consumable" - main_start = { - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - } -end -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# Misprint-like description +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = "elseif self.ability.name == 'Misprint' then" +position = "before" +payload = ''' +elseif self.ability.name == 'cry-Error' then + 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 + 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})}}, + } +''' +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 + +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = "local main_start, main_end = nil,nil" +position = "after" +payload = ''' +if self.ability.name == 'cry-Machine Code' then + --"Create a random // glitched consumable" + main_start = { + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + } +end +''' match_indent = true \ No newline at end of file diff --git a/lovely/Exponentia.toml b/old/lovely/Exponentia.toml similarity index 97% rename from lovely/Exponentia.toml rename to old/lovely/Exponentia.toml index 28d8046ef..f4b0b61bb 100644 --- a/lovely/Exponentia.toml +++ b/old/lovely/Exponentia.toml @@ -1,116 +1,116 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Gateway.toml b/old/lovely/Gateway.toml similarity index 98% rename from lovely/Gateway.toml rename to old/lovely/Gateway.toml index 0b46500a5..3cff6b703 100644 --- a/lovely/Gateway.toml +++ b/old/lovely/Gateway.toml @@ -1,28 +1,28 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Misc.toml b/old/lovely/Misc.toml similarity index 96% rename from lovely/Misc.toml rename to old/lovely/Misc.toml index fefd05289..e039a3409 100644 --- a/lovely/Misc.toml +++ b/old/lovely/Misc.toml @@ -1,430 +1,430 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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.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 -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "elseif self.ability.name == 'Blueprint' then" -position = "at" -payload = '''elseif self.ability.name == 'Blueprint' or self.ability.name == 'cry-oldblueprint' then''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "elseif self.ability.name == 'Brainstorm' then" -position = "at" -payload = '''elseif self.ability.name == 'Brainstorm' or self.config.center.key == 'j_cry_gemino' then''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Blueprint' or self.ability.name == 'Brainstorm' then" -position = "at" -payload = ''' -if self.config.center.key == 'j_cry_gemino' then -other_joker = G.jokers.cards[1] -if other_joker and other_joker ~= self and not (Card.no(other_joker, "immune_to_chemach", true) or Card.no(other_joker, "immutable", true)) then - self.ability.blueprint_compat = 'compatible' -else - self.ability.blueprint_compat = 'incompatible' -end end -if self.ability.name == 'Blueprint' or self.ability.name == 'cry-oldblueprint' or self.ability.name == 'Brainstorm' then''' -match_indent = true - -# 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'])''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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.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 +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = "elseif self.ability.name == 'Blueprint' then" +position = "at" +payload = '''elseif self.ability.name == 'Blueprint' or self.ability.name == 'cry-oldblueprint' then''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = "elseif self.ability.name == 'Brainstorm' then" +position = "at" +payload = '''elseif self.ability.name == 'Brainstorm' or self.config.center.key == 'j_cry_gemino' then''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = "if self.ability.name == 'Blueprint' or self.ability.name == 'Brainstorm' then" +position = "at" +payload = ''' +if self.config.center.key == 'j_cry_gemino' then +other_joker = G.jokers.cards[1] +if other_joker and other_joker ~= self and not (Card.no(other_joker, "immune_to_chemach", true) or Card.no(other_joker, "immutable", true)) then + self.ability.blueprint_compat = 'compatible' +else + self.ability.blueprint_compat = 'incompatible' +end end +if self.ability.name == 'Blueprint' or self.ability.name == 'cry-oldblueprint' or self.ability.name == 'Brainstorm' then''' +match_indent = true + +# 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 \ No newline at end of file diff --git a/lovely/Misprint.toml b/old/lovely/Misprint.toml similarity index 97% rename from lovely/Misprint.toml rename to old/lovely/Misprint.toml index 4b57113d8..3bdda69c2 100644 --- a/lovely/Misprint.toml +++ b/old/lovely/Misprint.toml @@ -1,517 +1,517 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 = ''' -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 = "G.GAME.chips_text = ''" -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] = v - 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 self.config and self.config.center_key and G.GAME and G.GAME.cry_voucher_centers and G.GAME.cry_voucher_centers[self.config.center_key] and G.GAME.cry_voucher_centers[self.config.center_key].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 ((G.GAME.dollars-G.GAME.bankrupt_at) - cry_cheapest_boss_reroll() >= 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 = ''' +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 = "G.GAME.chips_text = ''" +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] = v + 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 self.config and self.config.center_key and G.GAME and G.GAME.cry_voucher_centers and G.GAME.cry_voucher_centers[self.config.center_key] and G.GAME.cry_voucher_centers[self.config.center_key].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 ((G.GAME.dollars-G.GAME.bankrupt_at) - cry_cheapest_boss_reroll() >= 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/lovely/Planets.toml b/old/lovely/Planets.toml similarity index 96% rename from lovely/Planets.toml rename to old/lovely/Planets.toml index edff5e251..7521952a1 100644 --- a/lovely/Planets.toml +++ b/old/lovely/Planets.toml @@ -1,27 +1,27 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/ResizedJokers.toml b/old/lovely/ResizedJokers.toml similarity index 96% rename from lovely/ResizedJokers.toml rename to old/lovely/ResizedJokers.toml index 698c8102d..544523c10 100644 --- a/lovely/ResizedJokers.toml +++ b/old/lovely/ResizedJokers.toml @@ -1,126 +1,126 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/Seals.toml b/old/lovely/Seals.toml similarity index 95% rename from lovely/Seals.toml rename to old/lovely/Seals.toml index 4d1dc99c4..62ddcabcf 100644 --- a/lovely/Seals.toml +++ b/old/lovely/Seals.toml @@ -1,20 +1,20 @@ -[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}) then - destroyed = true -end - -''' - +[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}) then + destroyed = true +end + +''' + diff --git a/lovely/Spooky.toml b/old/lovely/Spooky.toml similarity index 100% rename from lovely/Spooky.toml rename to old/lovely/Spooky.toml diff --git a/lovely/Stakes.toml b/old/lovely/Stakes.toml similarity index 97% rename from lovely/Stakes.toml rename to old/lovely/Stakes.toml index 4ca7461a5..041d08496 100644 --- a/lovely/Stakes.toml +++ b/old/lovely/Stakes.toml @@ -1,485 +1,485 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - - -# 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 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 ((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) 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 +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + + +# 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 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 ((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) 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/lovely/Sticker.toml b/old/lovely/Sticker.toml similarity index 96% rename from lovely/Sticker.toml rename to old/lovely/Sticker.toml index 8aa732656..4af9c8d7c 100644 --- a/lovely/Sticker.toml +++ b/old/lovely/Sticker.toml @@ -1,312 +1,312 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 \ No newline at end of file diff --git a/lovely/Universum.toml b/old/lovely/Universum.toml similarity index 97% rename from lovely/Universum.toml rename to old/lovely/Universum.toml index 151310f5a..73165b3ea 100644 --- a/lovely/Universum.toml +++ b/old/lovely/Universum.toml @@ -1,44 +1,44 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 -''' +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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/lovely/VeryFair.toml b/old/lovely/VeryFair.toml similarity index 97% rename from lovely/VeryFair.toml rename to old/lovely/VeryFair.toml index ee134df13..0b8806369 100644 --- a/lovely/VeryFair.toml +++ b/old/lovely/VeryFair.toml @@ -1,70 +1,70 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 0 - -# 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 - - +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 + + From 95cc236e13174af94321aeaa8528e9a7d328c613 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:07:56 -0500 Subject: [PATCH 002/313] create lib folder --- Cryptid.lua | 38 + lib/calculate.lua | 559 +++++++++ lib/content.lua | 261 +++++ lib/cross-mod.lua | 50 + lib/d20.lua | 12 + lib/event.lua | 60 + lib/https.lua | 28 + lib/misc.lua | 226 ++++ lib/misprintize.lua | 187 +++ lib/modifiers.lua | 414 +++++++ lib/notifications.lua | 77 ++ lib/overrides.lua | 788 +++++++++++++ old/Cryptid.lua | 2605 +---------------------------------------- 13 files changed, 2717 insertions(+), 2588 deletions(-) create mode 100644 lib/calculate.lua create mode 100644 lib/content.lua create mode 100644 lib/cross-mod.lua create mode 100644 lib/d20.lua create mode 100644 lib/event.lua create mode 100644 lib/https.lua create mode 100644 lib/misc.lua create mode 100644 lib/misprintize.lua create mode 100644 lib/modifiers.lua create mode 100644 lib/notifications.lua create mode 100644 lib/overrides.lua diff --git a/Cryptid.lua b/Cryptid.lua index 366d01f45..22842ec69 100644 --- a/Cryptid.lua +++ b/Cryptid.lua @@ -11,3 +11,41 @@ ---------------------------------------------- ------------MOD CODE ------------------------- + +-- 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. + +-- 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_config = SMODS.current_mod.config +-- This will save the current state even when settings are modified +Cryptid.enabled = copy_table(Cryptid_config) + +--Load Library Files +local files = NFS.getDirectoryItems(mod_path .. "lib") +for _, file in ipairs(files) do + print("[CRYPTID] Loading library file " .. file) + local f, err = SMODS.load_file("lib/" .. 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 + f() +end + +-- A list of content sets. These can be toggled individually to determine what types of content are enabled. +-- Consider it like the old file system, but with more flexibility. +Cryptid.CONTENT_SETS = { + M = "m", + DAGGER = "dagger", + ULTRAVIOLENCE = "ultraviolence", + MUSHROOM_KINGDOM = "mushroom_kingdom", + CODE = "code", + FOOD = "food", + CELESTIALS = "celestials", + D20 = "d20", +} diff --git a/lib/calculate.lua b/lib/calculate.lua new file mode 100644 index 000000000..623f6dd80 --- /dev/null +++ b/lib/calculate.lua @@ -0,0 +1,559 @@ +-- 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 = ec(card, context) + if card.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" + 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 diff --git a/lib/content.lua b/lib/content.lua new file mode 100644 index 000000000..2851fc023 --- /dev/null +++ b/lib/content.lua @@ -0,0 +1,261 @@ +-- content.lua - adds SMODS objects for content that should always be loaded + +SMODS.Rarity({ + key = "exotic", + loc_txt = {}, + badge_colour = HEX("708b91"), +}) + +SMODS.Rarity({ + key = "epic", + loc_txt = {}, + badge_colour = HEX("571d91"), + 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("e91ff0"), +}) + +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, +} + +--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.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, +}) +--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 +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, +}) +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() \ No newline at end of file diff --git a/lib/cross-mod.lua b/lib/cross-mod.lua new file mode 100644 index 000000000..0e923369f --- /dev/null +++ b/lib/cross-mod.lua @@ -0,0 +1,50 @@ +-- cross-mod.lua - Used for compatibility and content with other mods + +--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 + +--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 \ No newline at end of file diff --git a/lib/d20.lua b/lib/d20.lua new file mode 100644 index 000000000..e4903c6f4 --- /dev/null +++ b/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/lib/event.lua b/lib/event.lua new file mode 100644 index 000000000..f2c2b19a9 --- /dev/null +++ b/lib/event.lua @@ -0,0 +1,60 @@ +-- 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) + 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 + +-- 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 diff --git a/lib/https.lua b/lib/https.lua new file mode 100644 index 000000000..ba6a5a0dd --- /dev/null +++ b/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 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 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 = 5624 + end +end diff --git a/lib/misc.lua b/lib/misc.lua new file mode 100644 index 000000000..125e51510 --- /dev/null +++ b/lib/misc.lua @@ -0,0 +1,226 @@ +--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_azure = HEX("1d4fd7") + 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 + G.ARGS.LOC_COLOURS.cry_ascendant = G.C.CRY_ASCENDANT + G.ARGS.LOC_COLOURS.cry_jolly = G.C.CRY_JOLLY + 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 + +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 + +-- 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 + +-- gets a random, valid consumeable (used for Hammerspace, CCD Deck, Blessing, etc.) +function get_random_consumable(seed, excluded_flags, unbalanced) + -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating + excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key + selection = G.P_CENTERS[key] + -- check if it is valid + for k, v in pairs(excluded_flags) do + if not center_no(selection, v, key, true) then + passes = passes + 1 + end + end + -- use it if it's valid or we've run out of attempts + if passes >= #excluded_flags or tries <= 0 then + return selection + 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 + + --[[ + 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 + +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 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 + + +--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 \ No newline at end of file diff --git a/lib/misprintize.lua b/lib/misprintize.lua new file mode 100644 index 000000000..c6ad257c1 --- /dev/null +++ b/lib/misprintize.lua @@ -0,0 +1,187 @@ +-- 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) + 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" + ) + ) + end + else + for _k, _v in pairs(tbl[k]) do + if + is_number(tbl[k][_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[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) + --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, "immune_to_chemach", true) and 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) + 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 diff --git a/lib/modifiers.lua b/lib/modifiers.lua new file mode 100644 index 000000000..3b65e9d80 --- /dev/null +++ b/lib/modifiers.lua @@ -0,0 +1,414 @@ +-- Code to handle stickers, debuffs, etc. +-- Warning: this is a bit of a mess + +--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_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 + +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 + +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 + +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.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 \ No newline at end of file diff --git a/lib/notifications.lua b/lib/notifications.lua new file mode 100644 index 000000000..d60dfd8a2 --- /dev/null +++ b/lib/notifications.lua @@ -0,0 +1,77 @@ +-- 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" + } + } +} \ No newline at end of file diff --git a/lib/overrides.lua b/lib/overrides.lua new file mode 100644 index 000000000..65f51d11d --- /dev/null +++ b/lib/overrides.lua @@ -0,0 +1,788 @@ +-- overrides.lua - Adds hooks and overrides used by multiple features. + +-- Modify to display badges for credits +-- todo: make this optional +-- todo: fix memory leak (it's easy to see in main menu collection, unhovering doesn't remove credit dynatext) +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] = 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 + +-- 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 not forced_key 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 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 + + 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 + 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml + G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 + 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 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 + 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 + at2(Tag(tag.key)) + 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() + 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 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 +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 + +-- 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 + +--Gradients based on Balatrostuck code +G.C.CRY_JOLLY = { 0, 0, 0, 0 } +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 \ No newline at end of file diff --git a/old/Cryptid.lua b/old/Cryptid.lua index e00d4ff1e..76abf0527 100644 --- a/old/Cryptid.lua +++ b/old/Cryptid.lua @@ -18,6 +18,9 @@ -- Enables debug features (I think this is currently useless.) --Cryptid.debug = true +-- These files are going to be whittled away over time as more and more of this gets moved to the new rewrite. +-- Just letting you know in advance :) + -- Save the mod path permanently. local mod_path = "" .. SMODS.current_mod.path -- Load Options @@ -31,90 +34,8 @@ 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('571d91'), - 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("e91ff0"), -} - -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" - }, - 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 +--todo: 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 @@ -128,25 +49,6 @@ function Game:update_round_eval(dt) 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 @@ -177,440 +79,7 @@ if Cryptid.enabled["Menu"] then 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_azure = HEX("1d4fd7") - 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 - G.ARGS.LOC_COLOURS.cry_ascendant = G.C.CRY_ASCENDANT - G.ARGS.LOC_COLOURS.cry_jolly = G.C.CRY_JOLLY - 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 - --- 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, unbalanced) - -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating - excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key - selection = G.P_CENTERS[key] - -- check if it is valid - for k, v in pairs(excluded_flags) do - if not center_no(selection, v, key, true) then - passes = passes + 1 - end - end - -- use it if it's valid or we've run out of attempts - if passes >= #excluded_flags or tries <= 0 then - return selection - 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 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 = 5624 - end -end --- 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 = ec(card, context) - if card.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - return ret -end +--todo: move to Rigged -- deal wirh Rigged on Consumables local uc = Card.use_consumeable function Card:use_consumeable(area, copier) @@ -625,519 +94,7 @@ function Card:use_consumeable(area, copier) 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" - 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 - +--todo: move to Exponentia 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] @@ -1293,6 +250,7 @@ function exponentia_scale_mod(self, orig_scale_scale, orig_scale_base, new_scale end end +--todo: move to Compound Interest 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] @@ -1448,64 +406,15 @@ function compound_interest_scale_mod(self, orig_scale_scale, orig_scale_base, ne 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 - - --[[ - 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 - -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 = {} -for _, file in ipairs(files) do - print("Loading file " .. file) - local f, err = SMODS.load_file("Items/" .. file) - if err then - print("Error loading file: " .. err) +-- File loading based on Relic-Jokers +-- This is getting completely rewritten, so I'm just going to leave it here..l +local files = NFS.getDirectoryItems(mod_path .. "Items") +Cryptid.obj_buffer = {} +for _, file in ipairs(files) do + print("Loading file " .. file) + local f, err = SMODS.load_file("Items/" .. 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 @@ -1703,1153 +612,8 @@ end 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] = 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 - -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 not forced_key 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 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 - - 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 - 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 - 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 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 - at2(Tag(tag.key)) - 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 == "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 == "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) - --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, "immune_to_chemach", true) and 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) - 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 - ---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 +--this needs to be changed when the new system is added local jokers = { "j_gros_michel", "j_egg", @@ -2885,340 +649,5 @@ for i = 1, #jokers do Cryptid.food[#Cryptid.food+1] = jokers[i] 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 -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.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---------------------- From 3dce73be69bfefad4cc86ef95245e38e8971d8fb Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:30:26 -0500 Subject: [PATCH 003/313] lovely patches --- lib/https.lua | 4 +- lib/misc.lua | 30 ++ lovely/lib_https.toml | 64 ++++ lovely/lib_misc.toml | 220 ++++++++++++ lovely/lib_modifiers.toml | 428 +++++++++++++++++++++++ lovely/tag_cat.toml | 17 + old/Cryptid.lua | 29 +- old/lovely.toml | 713 +------------------------------------- 8 files changed, 763 insertions(+), 742 deletions(-) create mode 100644 lovely/lib_https.toml create mode 100644 lovely/lib_misc.toml create mode 100644 lovely/lib_modifiers.toml create mode 100644 lovely/tag_cat.toml diff --git a/lib/https.lua b/lib/https.lua index ba6a5a0dd..7b00af3be 100644 --- a/lib/https.lua +++ b/lib/https.lua @@ -1,9 +1,9 @@ -- Update the Cryptid member count using HTTPS function update_cry_member_count() - if Cryptid.enabled["HTTPS Module"] == true then + 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(mod_path .. "https/thread.lua")) + 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 diff --git a/lib/misc.lua b/lib/misc.lua index 125e51510..fcc9739d2 100644 --- a/lib/misc.lua +++ b/lib/misc.lua @@ -223,4 +223,34 @@ function cry_apply_ante_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 = 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 \ No newline at end of file diff --git a/lovely/lib_https.toml b/lovely/lib_https.toml new file mode 100644 index 000000000..adb17a315 --- /dev/null +++ b/lovely/lib_https.toml @@ -0,0 +1,64 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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) +[[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 +''' +match_indent = true \ No newline at end of file diff --git a/lovely/lib_misc.toml b/lovely/lib_misc.toml new file mode 100644 index 000000000..0f8f4bdb4 --- /dev/null +++ b/lovely/lib_misc.toml @@ -0,0 +1,220 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 true then --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']) + 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]) + 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']) + 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_ccd', 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 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 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 + +# Max out hand size at deck size +[[patches]] +[patches.pattern] +target = "cardarea.lua" +pattern = "self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) + delta" +position = "at" +payload = ''' +self.config.realer_card_limit = (self.config.realer_card_limit or self.config.real_card_limit or self.config.card_limit) + delta +self.config.real_card_limit = self ~= G.hand and self.config.realer_card_limit or math.min((G.deck and G.deck.config.card_limit or 52), self.config.realer_card_limit) +''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "cardarea.lua" +pattern = "self.config.card_limit = math.max(0, self.config.real_card_limit)" +position = "at" +payload = "self.config.card_limit = math.max(0, self.config.real_card_limit)" +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 + +# 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 + +# 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 + +# init Cryptid global through lovely +# so other mods can add things to memepack pool +[[patches]] +[patches.pattern] +target = "main.lua" +pattern = '''function love.load()''' +position = "before" +payload = ''' +Cryptid = {} +Cryptid.memepack = {} +Cryptid.aliases = {} +Cryptid.food = {} +Cryptid.M_jokers = {} +Cryptid.Megavouchers = {} +''' +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 \ No newline at end of file diff --git a/lovely/lib_modifiers.toml b/lovely/lib_modifiers.toml new file mode 100644 index 000000000..ad4bf1c85 --- /dev/null +++ b/lovely/lib_modifiers.toml @@ -0,0 +1,428 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 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 + + + +# 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 + +# 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 \ No newline at end of file diff --git a/lovely/tag_cat.toml b/lovely/tag_cat.toml new file mode 100644 index 000000000..ef39b2e34 --- /dev/null +++ b/lovely/tag_cat.toml @@ -0,0 +1,17 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 \ No newline at end of file diff --git a/old/Cryptid.lua b/old/Cryptid.lua index 76abf0527..2ebed8a12 100644 --- a/old/Cryptid.lua +++ b/old/Cryptid.lua @@ -27,6 +27,7 @@ local mod_path = "" .. SMODS.current_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) +Cryptid.mod_path = mod_path --backwards compat moment cry_enable_jokers = Cryptid.enabled["Misc. Jokers"] cry_enable_epics = Cryptid.enabled["Epic Jokers"] @@ -50,34 +51,6 @@ function Game:update_round_eval(dt) gure(self, dt) 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 --todo: move to Rigged -- deal wirh Rigged on Consumables diff --git a/old/lovely.toml b/old/lovely.toml index 0003bd48f..d0aee679d 100644 --- a/old/lovely.toml +++ b/old/lovely.toml @@ -1,715 +1,4 @@ [manifest] version = "1.0.0" dump_lua = true -priority = 0 - -# 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']) - 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]) - 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']) - 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_ccd', 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 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 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 - -# Max out hand size at deck size -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) + delta" -position = "at" -payload = ''' -self.config.realer_card_limit = (self.config.realer_card_limit or self.config.real_card_limit or self.config.card_limit) + delta -self.config.real_card_limit = self ~= G.hand and self.config.realer_card_limit or math.min((G.deck and G.deck.config.card_limit or 52), self.config.realer_card_limit) -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "self.config.card_limit = math.max(0, self.config.real_card_limit)" -position = "at" -payload = "self.config.card_limit = math.max(0, self.config.real_card_limit)" -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 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) -[[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 -''' -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 -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = '''function love.load()''' -position = "before" -payload = ''' -Cryptid = {} -Cryptid.memepack = {} -Cryptid.aliases = {} -Cryptid.food = {} -Cryptid.M_jokers = {} -Cryptid.Megavouchers = {} -''' -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 +priority = 0 \ No newline at end of file From 12bbff005d960ba2596256482e7be80c76297b85 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:32:48 -0500 Subject: [PATCH 004/313] crash fix --- lib/content.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/content.lua b/lib/content.lua index 2851fc023..19bcbe13c 100644 --- a/lib/content.lua +++ b/lib/content.lua @@ -149,14 +149,14 @@ SMODS.Sound({ sync = false, pitch = 1, select_music_track = function() - return next(find_joker("cry-Jimball")) and Cryptid_config.Cryptid.jimball_music and 1.57e308 + return next(find_joker("cry-Jimball")) and Cryptid_config.Cryptid 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 + return Cryptid_config.Cryptid and Cryptid_config.Cryptid.code_music and ( ( G.pack_cards @@ -171,7 +171,7 @@ 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 + return Cryptid_config.Cryptid and Cryptid_config.Cryptid.big_music and to_big(G.GAME.round_scores["hand"].amt) > to_big(10) ^ 1000000 end, }) --Used to check to play the exotic music @@ -189,7 +189,7 @@ SMODS.Sound({ path = "music_exotic.ogg", volume = 0.4, select_music_track = function() - return Cryptid_config.Cryptid.exotic_music and cry_has_exotic() + return Cryptid_config.Cryptid and Cryptid_config.Cryptid.exotic_music and cry_has_exotic() end, }) SMODS.Atlas({ From 0f0f49dc3c00b0bd7c64be4d1872cd0e489742b6 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:56:03 -0500 Subject: [PATCH 005/313] sync with latest version --- lib/calculate.lua | 1 + lib/misc.lua | 12 +- lib/overrides.lua | 6 +- lovely/joker_necromancer.toml | 25 +++ lovely/lib_https.toml | 10 + old/Items/CodeCards.lua | 96 ++++++--- old/Items/Decks.lua | 13 ++ old/Items/MiscJokers.lua | 135 +++++++++++- old/Items/Planets.lua | 17 +- old/Items/PokerHands.lua | 394 ---------------------------------- old/Items/Spectrals.lua | 2 + old/Items/Spooky.lua | 12 ++ old/Items/Stakes.lua | 4 +- 13 files changed, 279 insertions(+), 448 deletions(-) create mode 100644 lovely/joker_necromancer.toml delete mode 100644 old/Items/PokerHands.lua diff --git a/lib/calculate.lua b/lib/calculate.lua index 623f6dd80..4a195c821 100644 --- a/lib/calculate.lua +++ b/lib/calculate.lua @@ -47,6 +47,7 @@ function Card:cry_double_scale_calc(orig_ability, in_context_scaling) 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 diff --git a/lib/misc.lua b/lib/misc.lua index fcc9739d2..4eccb7458 100644 --- a/lib/misc.lua +++ b/lib/misc.lua @@ -4,14 +4,16 @@ function loc_colour(_c, _default) if not G.ARGS.LOC_COLOURS then lc() end - G.ARGS.LOC_COLOURS.cry_azure = HEX("1d4fd7") 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 - G.ARGS.LOC_COLOURS.cry_ascendant = G.C.CRY_ASCENDANT - G.ARGS.LOC_COLOURS.cry_jolly = G.C.CRY_JOLLY + 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 @@ -87,7 +89,7 @@ function cry_poll_random_edition() end -- gets a random, valid consumeable (used for Hammerspace, CCD Deck, Blessing, etc.) -function get_random_consumable(seed, excluded_flags, unbalanced) +function get_random_consumable(seed, excluded_flags, unbalanced, pool) -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } or { "hidden", "no_doe", "no_grc" } local selection = "n/a" @@ -97,7 +99,7 @@ function get_random_consumable(seed, excluded_flags, unbalanced) tries = tries - 1 passes = 0 -- create a random consumable naively - local key = pseudorandom_element(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key + 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 for k, v in pairs(excluded_flags) do diff --git a/lib/overrides.lua b/lib/overrides.lua index 65f51d11d..b682deb3d 100644 --- a/lib/overrides.lua +++ b/lib/overrides.lua @@ -90,6 +90,7 @@ function SMODS.create_mod_badges(obj, badges) 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 @@ -635,7 +636,10 @@ function add_tag(tag, from_skip, no_copy) at2(tag) end for i = 2, added_tags do - at2(Tag(tag.key)) + local tag_table = tag:save() + local new_tag = Tag(tag.key) + new_tag:load(tag_table) + at2(new_tag) end end diff --git a/lovely/joker_necromancer.toml b/lovely/joker_necromancer.toml new file mode 100644 index 000000000..8c124ffd8 --- /dev/null +++ b/lovely/joker_necromancer.toml @@ -0,0 +1,25 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# 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 \ No newline at end of file diff --git a/lovely/lib_https.toml b/lovely/lib_https.toml index adb17a315..00a52ebbb 100644 --- a/lovely/lib_https.toml +++ b/lovely/lib_https.toml @@ -33,6 +33,7 @@ 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 (SDM0 easter egg) [[patches]] [patches.pattern] target = "functions/common_events.lua" @@ -59,6 +60,15 @@ if _c.name == 'cry-translucent Joker' then 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 \ No newline at end of file diff --git a/old/Items/CodeCards.lua b/old/Items/CodeCards.lua index 9459faff2..ee77d7291 100644 --- a/old/Items/CodeCards.lua +++ b/old/Items/CodeCards.lua @@ -7,7 +7,7 @@ local code = { collection_rows = { 4, 4 }, -- 4 pages for all code cards shop_rate = 0.0, loc_txt = {}, - default = "c_cry_crash", + default = (SMODS.Mods['jen'] or {}).can_load and "c_cry_oboe" or "c_cry_crash", can_stack = true, can_divide = true, } @@ -594,9 +594,7 @@ local commit = { elseif rarity == 4 then rarity = nil legendary = true - elseif rarity == "cry_epic" then - rarity = 1 - end + 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", @@ -1094,7 +1092,6 @@ local rework_tag = { end, } ---todo: smods stickers (i know right now this won't work for flickering/possessed) local patch = { object_type = "Consumable", set = "Code", @@ -1168,6 +1165,8 @@ local patch = { CARD:set_eternal(nil) end CARD.ability.banana = nil + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) play_sound("tarot2", percent) CARD:juice_up(0.3, 0.3) return true @@ -1191,6 +1190,8 @@ local patch = { CARD:set_eternal(nil) end CARD.ability.banana = nil + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) play_sound("card1", percent) CARD:juice_up(0.3, 0.3) return true @@ -1214,6 +1215,8 @@ local patch = { CARD:set_eternal(nil) end CARD.ability.banana = nil + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) play_sound("card1", percent) CARD:juice_up(0.3, 0.3) return true @@ -1241,8 +1244,7 @@ local ctrl_v = { return { } end, can_use = function(self, card) - return #G.jokers.highlighted - + #G.hand.highlighted + return #G.hand.highlighted + #G.consumeables.highlighted == 2 end, @@ -1250,16 +1252,6 @@ local ctrl_v = { if area then area:remove_from_highlighted(card) end - if G.jokers.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.jokers.highlighted[1]) - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - end if G.hand.highlighted[1] then G.E_MANAGER:add_event(Event({ func = function() @@ -1277,7 +1269,7 @@ local ctrl_v = { local card = copy_card(G.consumeables.highlighted[1]) card:add_to_deck() if Incantation then - card_copy:setQty(1) + card:setQty(1) end G.consumeables:emplace(card) return true @@ -1290,16 +1282,6 @@ local ctrl_v = { if area then area:remove_from_highlighted(card) end - if G.jokers.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.jokers.highlighted[1]) - card:add_to_deck() - G.jokers:emplace(card) - return true - end, - })) - end if G.hand.highlighted[1] then G.E_MANAGER:add_event(Event({ func = function() @@ -1327,6 +1309,60 @@ local ctrl_v = { 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) + return #G.hand.highlighted == 1 + end, + use = function(self, card, area, copier) + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then + 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 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 i = 1, number do + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then + 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 then + draw_card(G.deck,G.hand,nil,nil,false,G.deck.cards[i]) + break + end + end + end + end, +} + local automaton = { object_type = "Consumable", set = "Tarot", @@ -2523,6 +2559,7 @@ end local aliases = { jimbo = "joker", + ["gary mccready"] = "joker", greedy = "greedy joker", lusty = "lusty joker", wrathful = "wrathful joker", @@ -2673,6 +2710,8 @@ local aliases = { 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", @@ -3474,6 +3513,7 @@ local code_cards = { rework_tag, patch, ctrl_v, + inst, } if Cryptid.enabled["Misc."] then code_cards[#code_cards + 1] = spaghetti diff --git a/old/Items/Decks.lua b/old/Items/Decks.lua index 59af41f1c..b9111291f 100644 --- a/old/Items/Decks.lua +++ b/old/Items/Decks.lua @@ -221,6 +221,15 @@ local beta = { order = 13, atlas = "atlasdeck", } +local bountiful = { + object_type = "Back", + name = "cry-Bountiful", + key = "bountiful", + config = { cry_forced_draw_amount = 5 }, + pos = { x = 4, y = 2 }, + order = 14, + atlas = "placeholders", +} return { name = "Misc. Decks", init = function() @@ -282,6 +291,9 @@ return { 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 end --equilibrium deck patches local gcp = get_current_pool @@ -449,5 +461,6 @@ return { atlasglowing, glowing, beta, + bountiful, }, } diff --git a/old/Items/MiscJokers.lua b/old/Items/MiscJokers.lua index ede6ac942..69ed6213b 100644 --- a/old/Items/MiscJokers.lua +++ b/old/Items/MiscJokers.lua @@ -5833,7 +5833,7 @@ local oldinvisible = { 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 card.ability.extra == 3 then + if card.ability.extra >= 3 then card.ability.extra = 0 local eligibleJokers = {} for i = 1, #G.jokers.cards do @@ -6260,6 +6260,114 @@ local tropical_smoothie = { end end, } +local necromancer = { + object_type = "Joker", + name = "cry-Necromancer", + key = "necromancer", + pos = { x = 3, y = 5 }, + config = {}, + rarity = 2, + cost = 5, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + 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)]) + card.sell_cost = 0 + card:add_to_deck() + G.jokers:emplace(card) + card:start_materialize() + end + end, + cry_credits = { + idea = { + "Pyrocreep" + }, + art = { + "Pyrocreep" + }, + code = { + "Foegro" + } + }, +} +local oil_lamp = { --You want it? It's yours my friend + object_type = "Joker", + name = "cry-Oil-Lamp", + key = "oil_lamp", + pos = { x = 4, y = 5 }, + config = { extra = { increase = 1.2 } }, + rarity = 3, + cost = 10, + atlas = "atlastwo", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.increase } } + end, + calculate = function(self, card, context) + if context.end_of_round and not context.repetition and not context.individual then + 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], "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(cards) + cry_misprintize(cards, { min = card.ability.extra.increase, max = card.ability.extra.increase }, nil, true) + end) + end + end + end + end + end + end, + cry_credits = { + idea = { + "AlexZGreat" + }, + art = { + "AlexZGreat" + }, + code = { + "Foegro" + } + }, +} +local tax_fraud = { + object_type = "Joker", + name = "cry-Tax-Fraud", + key = "tax_fraud", + pos = { x = 2, y = 0 }, + config = { extra = { money = 6 } }, + rarity = 3, + cost = 10, + atlas = "placeholders", + 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 + end + return false + 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 + end + return rentals*card.ability.extra.money + end, + cry_credits = { + idea = { + "DoNotSus" + }, + code = { + "Foegro" + } + }, +} local miscitems = { jimball_sprite, dropshot, @@ -6320,16 +6428,12 @@ local miscitems = { quintet, unity, swarm, - stronghold, - wtf, - clash, coin, wheelhope, night, busdriver, oldblueprint, morse, - translucent, membershipcard, kscope, cryptidmoment, @@ -6342,9 +6446,6 @@ local miscitems = { delirious, wacky, kooky, - bonkers, - fuckedup, - foolhardy, dubious, shrewd, tricksy, @@ -6352,18 +6453,30 @@ local miscitems = { savvy, subtle, discreet, - adroit, - penetrating, - treacherous, kidnap, exposed, mask, tropical_smoothie, + necromancer, + oil_lamp, + tax_fraud, } 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", diff --git a/old/Items/Planets.lua b/old/Items/Planets.lua index 0c338afef..af26c23c4 100644 --- a/old/Items/Planets.lua +++ b/old/Items/Planets.lua @@ -8,7 +8,7 @@ local timantti = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 3, + order = 7, can_use = function(self, card) return true end, @@ -75,7 +75,7 @@ local klubi = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 4, + order = 8, can_use = function(self, card) return true end, @@ -142,7 +142,7 @@ local sydan = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 5, + order = 9, can_use = function(self, card) return true end, @@ -209,7 +209,7 @@ local lapio = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 6, + order = 10, can_use = function(self, card) return true end, @@ -276,7 +276,7 @@ local kaikki = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 7, + order = 11, can_use = function(self, card) return true end, @@ -565,7 +565,7 @@ local nstar = { cost = 4, aurinko = true, atlas = "atlasnotjokers", - order = 2, + order = 6, set_card_type_badge = function(self, card, badges) badges[1] = create_badge(localize("k_planet_q"), get_type_colour(self or card.config, card), nil, 1.2) end, @@ -700,7 +700,10 @@ function neutronstarrandomhand(ignore, seed, allowhidden) end return chosen_hand end -local planet_cards = { planetlua, nstar, timantti, klubi, sydan, lapio, kaikki } +local planet_cards = { planetlua, nstar, timantti, klubi, sydan, lapio } +if Cryptid.enabled["Misc."] then + planet_cards[#planet_cards + 1] = kaikki +end if not (SMODS.Mods["jen"] or {}).can_load then end return { name = "Planets", init = function() end, items = planet_cards } diff --git a/old/Items/PokerHands.lua b/old/Items/PokerHands.lua deleted file mode 100644 index bba46a79f..000000000 --- a/old/Items/PokerHands.lua +++ /dev/null @@ -1,394 +0,0 @@ -local disc = function(self, card, badges) - badges[#badges + 1] = create_badge('Circumstellar Disc', get_type_colour(self or card.config, card), nil, 1.2) -end - -local nothingness = function(self, card, badges) - badges[#badges + 1] = create_badge(' ', get_type_colour(self or card.config, card), nil, 1.2) -end - -local moons = function(self, card, badges) - badges[#badges + 1] = create_badge('Natural Satellites', get_type_colour(self or card.config, card), nil, 1.2) -end - -local actualuniverse = function(self, card, badges) - badges[#badges + 1] = create_badge('The Actual Fucking Universe', get_type_colour(self or card.config, card), nil, 1.2) -end - -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' }, - }, - loc_txt = { - ['en-us'] = { - name = 'Bulwark', - description = { - '5 rankless, suitless cards played together.', - } - }, - ['de'] = { - name = 'Bollwerk', - description = { - '5 ranglose, farbenlose Karten zusammen gespielt.', - } - } - }, - 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, -} - -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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'Clusterfuck', - description = { - 'At least 8 cards that do not', - 'contain a Pair, Flush, or Straight.', - } - }, - ['de'] = { - name = 'Clusterfuck', - description = { - 'Mindestens 8 Karten, welche nicht', - 'Paar, Flush oder Straße enthalten.' - } - } - }, - 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, -} - -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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'Ultimate Pair', - description = { - 'Two Two Pairs, where each', - 'Two Pair is a single suit, for a', - 'total of two suits between them.', - } - }, - ['de'] = { - name = 'Ultimatives Paar', - description = { - 'Zwei zwei Paare, bei denen jedes', - 'von ihnen von einer Farbe ist,', - 'was insgesammt 2 Farben ergibt.' - } - } - }, - 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, -} - -SMODS.PokerHand{ - key = 'WholeDeck', - visible = false, - chips = 5200, - mult = 520, - l_chips = 520, - l_mult = 52, - 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 }, - }, - loc_txt = { - ['en-us'] = { - name = 'The Entire Fucking Deck', - description = { - 'A hand that contains every single', - 'card found in a 52-card deck.', - 'Are you insane?', - } - } - }, - 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, -} - -SMODS.Consumable{ - set = 'Planet', - key = 'asteroidbelt', - --! `h_` prefix was removed - config = { hand_type = 'cry_Bulwark', softlock = true }, - pos = {x = 1, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = disc, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Asteroid Belt' - }, - ['de'] = { - name = 'Asteroidengürtel' - } - } -} - - -SMODS.Consumable{ - set = 'Planet', - key = 'void', - --! `h_` prefix was removed - config = { hand_type = 'cry_Clusterfuck', softlock = true }, - pos = {x = 0, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = nothingness, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Void' - }, - ['de'] = { - name = 'Leere' - } - } -} - -SMODS.Consumable{ - set = 'Planet', - key = 'marsmoons', - --! `h_` prefix was removed - config = { hand_type = 'cry_UltPair', softlock = true }, - pos = {x = 2, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = moons, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'Phobos & Deimos' - }, - ['de'] = { - name = 'Phobos & Deimos' - } - } -} - -SMODS.Consumable{ - set = 'Planet', - key = 'universe', - --! `h_` prefix was removed - config = { hand_type = 'cry_WholeDeck', softlock = true }, - pos = {x = 4, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = actualuniverse, - process_loc_text = function(self) - --use another planet's loc txt instead - local target_text = G.localization.descriptions[self.set]['c_mercury'].text - SMODS.Consumable.process_loc_text(self) - G.localization.descriptions[self.set][self.key].text = target_text - end, - generate_ui = 0, - loc_txt = { - ['en-us'] = { - name = 'The Universe In Its Fucking Entirety' - } - } -} - -return { - name = "PokerHands", - items = { Bulwark, asteroidbelt, Clusterfuck, void, UltPair, marsmoons, WholeDeck, universe }, -} diff --git a/old/Items/Spectrals.lua b/old/Items/Spectrals.lua index 84413db3e..e4efe405c 100644 --- a/old/Items/Spectrals.lua +++ b/old/Items/Spectrals.lua @@ -277,6 +277,8 @@ local lock = { CARD:set_eternal(nil) end CARD.ability.banana = nil + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) play_sound("card1", percent) CARD:juice_up(0.3, 0.3) return true diff --git a/old/Items/Spooky.lua b/old/Items/Spooky.lua index fb8efd90a..3fe04b2a7 100644 --- a/old/Items/Spooky.lua +++ b/old/Items/Spooky.lua @@ -465,6 +465,7 @@ local spy = { atlas = "atlasspooky", config = {x_mult = 0.5, extra = {secret_card = "", revealed = false}}, immutable = true, + source_gate = "sho", 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 } } @@ -1277,6 +1278,17 @@ local candy_sticks = { loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.hands} } end, + cry_credits = { + idea = { + "Squiddy" + }, + art = { + "lolxddj" + }, + code = { + "Foegro" + } + }, } items = { diff --git a/old/Items/Stakes.lua b/old/Items/Stakes.lua index 9d3fdd3d7..f66838d05 100644 --- a/old/Items/Stakes.lua +++ b/old/Items/Stakes.lua @@ -61,8 +61,8 @@ local cyan = { modifiers = function() G.GAME.modifiers.cry_rarer_jokers = true -- Note that this is not the exact rarity as the old lovely patch might be nerf/buff to the stake - G.GAME.uncommon_mod = 0.5 - G.GAME.rare_mod = 0.5 + G.GAME.uncommon_mod = 0.8 + G.GAME.rare_mod = 0.8 end, order = 13, colour = HEX("39ffcc"), From 91d8b88edcf77ca119914a0828a38530145f4ba8 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:14:52 -0500 Subject: [PATCH 006/313] Let me introduce you to Jolly Joker... --- lib/gameset.lua | 125 +++++++++++++++++++++++++++++++++++++++++++ lovely/lib_misc.toml | 4 +- 2 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 lib/gameset.lua diff --git a/lib/gameset.lua b/lib/gameset.lua new file mode 100644 index 000000000..c805b4c16 --- /dev/null +++ b/lib/gameset.lua @@ -0,0 +1,125 @@ +-- gameset.lua: functions for gameset UI and logic + +-- Based on vanilla tutorial system - add a system where Jolly Joker talks to the player +local gu = Game.update +function Game:update(dt) + gu(self, dt) + if not G.SETTINGS.cry_intro_complete then G.FUNCS.cry_intro_controller() end +end + +local gi = Game.init +function Game:init() + local ret = gi(self) + --temporarily remove all cryptid intro stuff + G.SETTINGS.cry_intro_complete = nil + G.cry_intro_progress = nil + return ret +end + +G.FUNCS.cry_intro_controller = function() + G.cry_intro_progress = G.cry_intro_progress or { + state = "start", + completed = {} + } + if not G.SETTINGS.paused and not G.SETTINGS.cry_intro_complete then + if G.STATE == G.STATES.MENU and not G.cry_intro_progress.completed.start then + G.cry_intro_progress.section = 'start' + G.FUNCS.cry_intro_part('start') + G.cry_intro_progress.completed.start = true + G:save_progress() + end + end +end + +G.FUNCS.cry_intro_part = function(_part) + local step = 1 + G.SETTINGS.paused = true + if _part == 'start' then + step = cry_tutorial_info({ + text_key = 'bb_1', + attach = {major = G.ROOM_ATTACH, type = 'cm', offset = {x = 0, y = 0}}, + step = step, + }) + end +end + +function cry_tutorial_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={ + {n=G.UIT.R, config={align = "tr", minh = G.ROOM.T.h, minw = G.ROOM.T.w}, nodes={ + UIBox_button{label = {localize('b_skip').." >"}, button = "skip_tutorial_section", minw = 1.3, scale = 0.45, colour = G.C.JOKER_GREY} + }} + }}, + 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 + G.CONTROLLER.interrupt.focus = true + G.OVERLAY_TUTORIAL.Jimbo = G.OVERLAY_TUTORIAL.Jimbo or Card_Character(pos) + G.OVERLAY_TUTORIAL.Jimbo.children.card:set_ability(G.P_CENTERS.j_jolly) + if type(args.highlight) == 'function' then args.highlight = args.highlight() end + args.highlight[#args.highlight+1] = G.OVERLAY_TUTORIAL.Jimbo + G.OVERLAY_TUTORIAL.Jimbo:add_speech_bubble(args.text_key, align, args.loc_vars) + 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 \ No newline at end of file diff --git a/lovely/lib_misc.toml b/lovely/lib_misc.toml index 0f8f4bdb4..54c3d2443 100644 --- a/lovely/lib_misc.toml +++ b/lovely/lib_misc.toml @@ -12,7 +12,7 @@ pattern = "SC = Card(G.ROOM.T.w/2 - SC_scale*G.CARD_W/2, 10. + G.ROOM.T.h/2 - SC position = "after" payload = ''' if true then --Cryptid.enabled["Menu"] then - if Cryptid.enabled["M Jokers"] then + if false then --Cryptid.enabled["M Jokers"] then local mcard = {} for k, _ in pairs(Cryptid.M_jokers) do if G.P_CENTERS[k] then @@ -41,7 +41,7 @@ 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_ccd', nil, true), true, nil) end +if true --[[Cryptid.enabled["Menu"]--]] then card:set_ability(get_random_consumable('cry_ccd', nil, true), true, nil) end ''' match_indent = true From 6a9726a6de9d8684b6ddfbea7f1795a70b1b8dca Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Fri, 22 Nov 2024 00:33:02 -0500 Subject: [PATCH 007/313] more jolly jokering --- lib/gameset.lua | 12 ++++++++---- localization/en-us.lua | 12 ++++++++++++ lovely/lib_gameset.toml | 21 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 lovely/lib_gameset.toml diff --git a/lib/gameset.lua b/lib/gameset.lua index c805b4c16..6d783d854 100644 --- a/lib/gameset.lua +++ b/lib/gameset.lua @@ -35,15 +35,20 @@ G.FUNCS.cry_intro_part = function(_part) local step = 1 G.SETTINGS.paused = true if _part == 'start' then - step = cry_tutorial_info({ - text_key = 'bb_1', + 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, + }) end end -function cry_tutorial_info(args) +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{ @@ -76,7 +81,6 @@ function cry_tutorial_info(args) not G.OVERLAY_TUTORIAL.step_complete then G.CONTROLLER.interrupt.focus = true G.OVERLAY_TUTORIAL.Jimbo = G.OVERLAY_TUTORIAL.Jimbo or Card_Character(pos) - G.OVERLAY_TUTORIAL.Jimbo.children.card:set_ability(G.P_CENTERS.j_jolly) if type(args.highlight) == 'function' then args.highlight = args.highlight() end args.highlight[#args.highlight+1] = G.OVERLAY_TUTORIAL.Jimbo G.OVERLAY_TUTORIAL.Jimbo:add_speech_bubble(args.text_key, align, args.loc_vars) diff --git a/localization/en-us.lua b/localization/en-us.lua index 085467d96..5031495c3 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -3487,6 +3487,18 @@ return { } }, misc = { + tutorial = { + cry_intro_1 = { + "Hello, I'm {C:attention}Jolly Joker{}!", + "Welcome to {C:cry_exotic,E:1}Cryptid{}!", + "{s:0.8}Note: You are currently playing an early version of the refactor. Expect issues!" + }, + cry_intro_2 = { + "I can give you the power to", + "break the game in ways never seen before.", + "But it's up to you how much you want to break it." + } + }, poker_hands = { ['cry_Bulwark'] = "Bulwark", ['cry_Clusterfuck'] = "Clusterfuck", diff --git a/lovely/lib_gameset.toml b/lovely/lib_gameset.toml new file mode 100644 index 000000000..1b28b8fd1 --- /dev/null +++ b/lovely/lib_gameset.toml @@ -0,0 +1,21 @@ +[manifest] +version = "1.0.0" +dump_lua = true +priority = 0 + +# Turn Jimbo into Jolly Joker +[[patches]] +[patches.pattern] +target = "card_character.lua" +pattern = 'self.children.card.states.visible = false' +position = "before" +payload = "self.children.card:set_ability(G.P_CENTERS.j_jolly)" +match_indent = true + +[[patches]] +[patches.pattern] +target = "card_character.lua" +pattern = 'colours = {G.C.RED, G.C.BLUE, G.C.ORANGE},' +position = "at" +payload = 'colours = {G.C.CRY_EXOTIC, G.C.BLUE, G.C.CRY_JOLLY},' +match_indent = true \ No newline at end of file From 59c19666c64236e36e484a5b09062c6339280bc2 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Fri, 22 Nov 2024 10:59:22 -0500 Subject: [PATCH 008/313] *grows hands* --- lib/content.lua | 22 +++++++++++----------- lib/gameset.lua | 24 ++++++++++++++++++++++++ localization/en-us.lua | 11 +++++++---- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/lib/content.lua b/lib/content.lua index 19bcbe13c..a5d6aab5f 100644 --- a/lib/content.lua +++ b/lib/content.lua @@ -197,65 +197,65 @@ SMODS.Atlas({ 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() \ No newline at end of file +}) \ No newline at end of file diff --git a/lib/gameset.lua b/lib/gameset.lua index 6d783d854..5af8aca36 100644 --- a/lib/gameset.lua +++ b/lib/gameset.lua @@ -35,6 +35,10 @@ G.FUNCS.cry_intro_part = function(_part) local step = 1 G.SETTINGS.paused = true if _part == 'start' then + G.gateway = Card(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, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) + G.gateway.states.visible = false + G.yawetag = Card(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, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) + G.yawetag.states.visible = false step = cry_intro_info({ text_key = 'cry_intro_1', attach = {major = G.ROOM_ATTACH, type = 'cm', offset = {x = 0, y = 0}}, @@ -45,6 +49,25 @@ G.FUNCS.cry_intro_part = function(_part) 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.children.center.atlas = G.ASSET_ATLAS['cry_atlasnotjokers'] + G.gateway.children.center:set_sprite_pos({x = 2, y = 0}) + G.gateway:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = -2, y = -3}} + G.yawetag.states.visible = true + G.yawetag.children.center.atlas = G.ASSET_ATLAS['cry_atlasnotjokers'] + G.yawetag.children.center:set_sprite_pos({x = 2, y = 0}) + G.yawetag:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = 2, y = -3}} + end + }) end end @@ -79,6 +102,7 @@ function cry_intro_info(args) 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 diff --git a/localization/en-us.lua b/localization/en-us.lua index 5031495c3..38e4d8741 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -3494,10 +3494,13 @@ return { "{s:0.8}Note: You are currently playing an early version of the refactor. Expect issues!" }, cry_intro_2 = { - "I can give you the power to", - "break the game in ways never seen before.", - "But it's up to you how much you want to break it." - } + "It looks like you've never", + "played Cryptid on this profile before.", + "Let me show you how things work!" + }, + cry_intro_3 = { + "*grows hands*" + }, }, poker_hands = { ['cry_Bulwark'] = "Bulwark", From f7b1292bd600c8a14b6dcd320d0019d6fc508b83 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:19:04 -0500 Subject: [PATCH 009/313] Jolly Joker is not good at humor --- assets/1x/atlasnotjokers.png | Bin 98674 -> 84675 bytes assets/2x/atlasnotjokers.png | Bin 169392 -> 106125 bytes lib/gameset.lua | 63 ++++++++++++++++++++++++++++++++--- localization/en-us.lua | 14 +++++++- 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/assets/1x/atlasnotjokers.png b/assets/1x/atlasnotjokers.png index 07f23aa7be54f6b6108b5917053d0bb72eb066a2..b7753af1c0b43d726c77fa35ac0a61b06ffe5899 100644 GIT binary patch literal 84675 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 a?LRX^#P#Ig23vd?fWXt$&t;ucLK6U#Vr#Pi literal 98674 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%0AwenHX2)WB&Jf5hY};(b4A~A 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%0As<6EiE& zfKGP-tpOk~=l$`3P!MMXo+*)zy4{9NpnzT>3In|sBO}xq&s3?np<3i3*`)*Tl9Gvr z*QsuBm%Sm&X{e;Tp(>ah)wdQB=WsWH_JQ-W&1c3sVANYvRV)CyKdYXZ)-(p1@hEr{ z0ED&+Z<0w)gbxb;5hzHO<3Q+|kUa-o`@PqT-2kZ+sOS#Y`o6>_wxpFbun*!5Dn9r# z@G7g~r_?gcS%r_gZD?yWV`)DGMO&0%UwB=2ND6ndHmT#C==|m0Lk7X( zfZ~P*rF1qvr{iC=yhj-_-CpwcJyI_9(UOdvqCE`*JN1i09+q_S65`|zWi}7gRnD7j zibxf=1&|_BoP7{ej3)}=mWY^w|6NzvtMjS!j?2kf@b6OGO-K2{ahbzzNOJw3q{wV` zkehHrG9~+sCg%EH#=6!%*Op7^?-YyI{KQB-@YaT=@j)tF$9=M%IDR$L0Q@jk>~oeM zcnM9SYX>FSLFkLNo-)i1vM%3oEaYU9$eau|U8a%fN6?^6KKnaKZMWJC5+h$pEK+3>Ks-a$tQ(3Ytj7O0#r)y2z_{ewW&NK^)H(1E zsK%M4#ddv6C-+=xrCa##SY=9)PD^W4y$)=BWu?GybYkzjeRr{QBlLC7j#ooHA(Qpp z<=0Q#X1)7y-zU(gD-Bs}eimXNpVMbH{||OSJ|PK$T2|^67rE)-`YW^3+-^JM1E*6o@@<6AgoynfC7xtX=|H;?cO12nZ2 z?)L3xoUX8>rT;fxAp6wpCkAi+$rvN`^H)*-Et@12zEEzFN!txNRcQgM#csCz$qIPi z(KXZNxu0RA|9L?24U?+#Q(o4hN9y*PS40m2>?6hMT&^kY{o?hEy?cWBzV4c~=>pbM3Dw!gV z5IJOB0>V1ugYXhiMZOhGW9goJ+s7uhrb5#d>h@9y$8W+tm!WrAk)=-e=gJn7{Pblj zx9UGy!)Y$z4vW*`HyR_YDF6GBe8ZXPywauVS62U53$TUa#r-k?KJj!JawB`QC+WW( zko3UL&pD}$;pH{kvRAo!FP|NVD!MmCH0e;gl&v7bCI2Uv28LI*b_LO7Sc)7<6m1PYt;$1(HN-DpjS=z_~>H!zv>hjipsCu{7y;@2+8K()alES(< zK>&gP+fZ*`Hyn+QjNbm41zLtY*JpLy>2GGzT=hvK_vVqA00pw7T0(#y9GYORp_A(|0to2eVAuY=tF$^to6-8=PTk)=8NsZg#!>$WEzr!?f; zDZbTH=$=5D2Jeo4-un@JC|Jy14YU4xX8?s=ds@`{9#jsZ7rxp=zkl2CeRFVbGC4}c z&1`^|+W|DXfBqdRsPv;PrFN_I=%$7G#Umlyb&oD`69bbr(im#HdE zBdm}1yBa6jM7ax%4R26vQJ^fjqt;xB?nV$CfRt-l==&lr5L}HL?+(#JK>{->J_`#P z>n%NUXi18U>d`-I!w+Q{)nncC&9qKFWjH>w%pG6oE_42t%<^E-5+jQ}hgx;6WAyd7 zjrN^P2yV7PnD(*+21c`4(9~OTOZ}F`8$!xJ4q0^`;M&8VUb=Ey9uTf-2V8!668Yw0emFS z*L@33CD3eD4T4<+#AeJ-*MN-T;eCJ`jgoUo@c#c9%VC4YKu+m5D8Y|gyOCZYE7vi> z^}9&p-+mfeJR87$D`5P%ZECu`1@-Z!jNpkj2%2k8wTCJ`Q_JB{HDMFoLx*)-_1NpM z2Z#;O{6*%TUE<^Le$Uq2DN_5Zt>oE_s`4)%GmhO zLXa%FFLkx2SbzQ$0FkI|E(;mykHk5*%9}?>hEk_$O86<(1R31(7|4Eir_9L zlz1IU+FUvys$?ZB4+9|?7gQiwLRE~H%V7-$6+q6_)4=ljx*PewuUD9hbjX;{bYbD` zi8&vl#VxKUuEkYZwC~EYu5ujbIW}GQ)1KUd567RR$>SjFPo+Wf`;_q)nz7xMR*1BO zQDODO&-#u&0>bbH`x;w%m5%yFe4Eua2g`pifnKO(rNn&m&@dtXX$j1$wpnDgB|a1B ze$1NQGwa#5FFe7wLoG^5y)>l_$PGo#Ls{sRY!LmWbA*fy>>I@o~!zXW@C+Tb)Vn$ zvr!1jxSTNDqkHf52Rlc^GuC5&zI_;y-XpjJ9$E_k$`>q#q(<%JmxH%HV!7&OSD(D> zbed6tblaw;Q+2CYV2`&MEA(Zu`4=|`*?6?lOzcDX_4kR+5kT#=Q8#pOL@CFx4Bp3-)l3(h(=E9XUKs_p*ddH~zs$B;K z>RDa|O58@+^%khYP;@{-_UvQxlsgf$PZDdOwP5;_G*pq73j&9slW=W=gq_q&4+XE$ zN8OvvL^)oRltvrXRsMaUS3Kv=Da~$!97P*iF8b`5l5`t-q-UQ>Kx|Vz^BrJ*)H*9J;uq#DrVab03wT8- zHmFrk>KLI#(UJr{IldI3&`!PsAH|!)f_-Ct6+dQmE%mHCi=t}=PU-+}c38t9>AOzZ zX+lk5(<4EK?KGqp;90ZdktXj$x2H|wY?4cg8v~gduk}$F4mke{i-T`(m%%Xiz%3w0 zpMmKG5iHBUv{}NdK`?`l*_tHS6wx27`!xiB(twmj#!dWh)qZ^gZs%U%qgFn{Sl;oS zYZv0>09O-zPXi8z%RRw7puDP2zGvIN*)eUZwT$p7GvJr=H9*k+r!1^4<^k#Yky~#6 z7d6b<>H|KRdgB(O&91t!2on&kS{nk2U07i?M(29uKT?P&>8$ z9-9<7w@5)%w7#w*`pGF{VilTm`9%e@hGbK_G(k}l12WQ;V|X&vRGF+mLdulB@3!;~ zhw4G9e$-0rme%2Qbc5r?I*+KDxeq$f;xW~Ug_JUUg4-7pFkWL5Zzv^sE;@bDEv+Q& zW$6!UVLrt-^?ETW*+MFqQ!KMR2r&r}rn4p|z%gqH(>c~ADeFrpy}$6xg5{ZObcuH=hfDB0Ui1#2CTK+(%unB#5nHYM^@Uhz zaOYu7#{4UUlY|2|u-VrGhjTGXw+#TlnwM(k{AsL+RScWtF+-8Vph!pEsVH1rvih>f zL|9p{5gNlI@l1oFX|Y9lA*a$=XN3IzDI(G(T39J*gu@(|IVi<}yDM`=yX`tWG4Ey`HxIr}C zHJFrRxtHlES8(}k7-D!(q@bGp9NHM5MU|zD&^6e4X0yAJ)X@6G!Ge>#Y6H8FX!F3< z1?>Z;lCqGeMC!xTj_SC2jSF=J#o-%6W08KFZzd1OJz&9^wbXGDC^)4iX4K(Y029;@ueqsy2tIhy^$r4nmS27&9 zpcRVX4qIEYP1h8M1HZmLwv^|sicYipD5Z$SYSEGbN*fx!RQRlXGF69ZNVG?raZq41 z96d+W>XZoxH|Z5kPb>PG81O-&fkJ&IcQ~4qxp%#Jt8>cM+^@86W6g|M#|Rc6W!*xC zs%f<-6O;{(j(#$#8Fj{v-dDaVZ?`_O!6QyL&hD9~p6+0V6Cb@IYJKS%I92%mp!~-V z43s03XA4`5~ln6D2-W%dYwF&Qf>njBUS*FK)Q3LlrqpWGhA zX$^-ia1GIAi=YvSIYC))UCd_VQWMUO&!}zFzs(nS^WjaJ`@8|6>}&A&lE#ihe$DW` z>nM(uK41^cNg`yj@)~cPpB7unok-B)Hv}6t1s!C{=%)bXKsI zveb)nfJr=!NB<#~pBj}Z++wE%dU81sf7-k8s+4g171$%NNOGUEvc^chgwPrw@kTJa zC|!{5+j;E-yF?R{)$>sU`XCssQ`Ou-r^E_`Ce1Pf5XR=rE(I!SPZ8kPYM9dR0{)uP z!7?TH(3QQ2CdrF1aPhro%uA>7R1=1A*@fUDkuLP_4;|c`#ig3+zF){LH~y2ARmpZfK@NKb5Tla$V+N&VNQ0Jk zzSV}+#kbz-?^;$D(htphZht(kajC{`BP@{bE}|W2WEq3lkf`3YMNNaG=PGAErVz zWNoQoe{+!1$DKIM+@VQA_H|RdUfRI!2qP;i);Oi(AFEzVizwAXkqwtWF8Kpq#lTNt!BkX)r-t4 z+KhQ*EZNuo>e+cPbSCj%e{>bXKeO>TYEVarkBj0kHK4xpS0rs?l>1P7T3JOe>BcUM z!4JzL*LYg7*KCM16!AWFCt{Yj1LP!q$Fl#N9UjtLi58a!i;k&cBUog$s+J)eh9ib( z{gWOr?8Y58SU8!C`a?SWESW0Vp!YM$e8;JP%^|qUP!#0)hhTV}50vGSlBNO#g|Ec` zs!|XVmW5iFo(Znv5o`3i$u#ajKHYc0g?H6q7er7mu>>gNFADzvjQ4s|-ilOCS~KtA zZ~sQSV{pt{eev~{oxLOK74OlVs+d6N-PUiciE^*rY+Nf^0)G_(Kew zrPF!rLq%nU`UTg^?91+a!nd||1=bZPchrMqTn;iiWGxVh!7Q!M&{RPUBH(0BRGD2^ z4c1f*q!o@HqT&{;q#Ul@*7wix%L#Cmxu7r(8mP*82cSS`njuUH`58*(5`(;^ex*2f z|Iv)~Vo!Vzso)qplv_V~aG)8ckgOJAe%KpTx4=e99m_xEDOUH7F_6vPwMQC^xmC#A z%Eo^(q}glebVOFj680T76{YuwxcF9KorkIVWY+Nb6W|b&zJYNg+NB1-G8LJZF#I1l zaS!zb{b!7Zh9LQqzATcl1aJw(^U!GvfTy{QxJHLJH~om9>H<+N4^YzfmI;W0?UzA3 zLm42EG%?-q_rXj(*Ji?>_`ceifp*hk?Zo$jg8*tOhF8EU&;kGk3@iFr0xhoDkIn5@ zYup_RK51BT3?#(DccQc=@XlNT-SDXchLUfbrF(H}M8`e&0Ni=kZ(R|xLb0x>-IJet zX?^u_1MNY49QZ>#@sNKtlyf%g+uj&!IT+?2lC|5b`nqf zIq*BYXn>6pgh)k6E@1cW3rBip*G8+xf{LcRqq zs&SW>_ff$OJ#%YOUEKgX|Ckbf?TSFV_KHR>O^f7OpOt|c&`xKS#;fViC)P({d6iA- zda_BCgpUa#UV#z2B_d!F1XfKc%;3h-ab7c$kMG&BwP|u<%|U1i?bB8dm9k(6baJp- z;y9B#g9q;Zx?6pcHDi8I9IF(lO?~-8denQ7QIieg^euT#cae=*b#HF99#OHqPW3AZ zFO;kf6qJ_}JuH$<3Ieq4nY)}{0qJ`Nkp4Y*LB1_sf@}*;Ha(#d>I+I%)91XTJ#O*~ zyAnk!BF;y~F@m%N|J*x@+~K8R0^*waCr{6rnYpZ2Uk{UZIjomRTdUc`lbk86pIUfYnlLk=ALSN>1`L7OSm!G=2c zBi9kexJya1qc>82y#DnfM1w?4gvWcJU3Ij(ose;<<4qfA9&-{jw8wKvR2qBu5xdh* z&0#n|1^eS4xDa4PT4{Di%D5bB?j2;c!x)cv*4CgXBB z;;8h3j8nAVOzS?TRiE8Y3jq4P1>usepAc0Z7J?`f#D4Z1WS&{h*L!HLOBFBbb#gPj zn7yG-wQFrfQRP(F1G2)(Eg~CLN%Y_k=#y0MDS6S;@=oamvRhdZB^oc?>^ih-R-gO= zX;958Q{BBs=&5(tyal?0enk*KVhc)FPe~>%aG~?R|J=+5>fQ7^uP$+B0rtvT*aP6j z!4{g5OO5C*6C>#&ZV@^=f+u(Zq0zdQ3TYDH8LgrmKoBlL)=8;>D42Io>FDS{-c>kQ zXCIj52u+GWWj$){OM9%f%U_>yK)gH1fKdxehB{e_jroz`J(`ShAxQWH}Z zA%BIYBUm_>mnZ!v#FH*T@#95s6Vxreo_Fnupaa=Cjo>q%Aq5UykDJ_k(48DNruUZP zqCb4Kr??+`dQ3Hm$AcKu!=tgrDO+Tl@$zMTXte zpu>-z$-PG)v8-c7Co`9JRIAJ({SSXjA1t>uSS#_3*tM;*I+m*%GIh7i-J`wf&7N=l z)=)l5m}`(9?0wOll3ei{)1fYxWH!zAU8VaB&way+OY=v;4>&Nj0Tj1^dEjiK2KIn-ZV$bTl$Wvcr18BJ#0=)N5C^E(A+w8PEPF)A!R184 z9K?HMMD=ld?X;Cz=2xq|4{4L@vnr=G)_w*UGdnShkylZOtOCRQaO%g4Y^P}E`xVGo z7i5)%er@T-`Ln9NT2g>wjRDlp_HKBzq%Cb<#JP)B_U!1Xh-C&|dt%q_%i+(l0E;M9U>Sn9tMPaI0 z{zkPICA1OuODaEhFNKUpT1n`P1e)v#5VCcJKw9x`I}>Or%(ehb`|yc2fPpyiZK?uf zgSUN7CBwTqX34&vZ^!Gd*PV%BUhaDzYW79rGHY?*#CyrAo%qJP&dWm{AXrxORV_^U zqHvLw-;cN3`tsmOWoI9zOf`=Q&!~a^MdAS{s0RLx&0|Ln8*`tWPH2`UO+DNC*R7it zybVnsE~!F+V?MW9d=A)y;fVm-mu$s(1F`gjfHzZ=SyYODozP zrqKJ^S*Q}XJ>kBGQ3$TUwwWxZh7#iZr@y%K z)ax|VV1K$vE)UyWTmPb0XioKb_Wqvlytit-4*Cn%(ca0##!BEKle+{0c|9%1iKL9rZ+`Y3T8C;py0#hMG-9DG3 zT>Zo>Y2%``e)~?!Kw>7qRYUzg`F}y+maMGdXv2F z4WR1~l2>eZTQBQh5Pl{$-QFjR`W|Kl zmA}ba8$=mz=j4|!YYwzEVB{V-YU_?}n~C%NPIw}WHQNg~Mz{Blk;wYMp4!(!d%jb8 zfHk7qU8+aw7|t3Y0I%zf`leCYoF%54_LsoTf{~*H%1&D4dfx~dMIgEy4_n7 zr&i&(W|-!#)M_Z~kI=~Q6oKgt+Lh~A$MS454%g^Wk#_{W;)j)9Ac36td;5k@?&}*+35a<{WXBzD=x zEe;3DqkCcfB)s9$ZkP-oT)Sb2Ut`P{Qb+=W@BV@zDTflsjTmwOHZN$&Tm_TClpeiv z!hsSudckl{i7N_05RB!tnikoMJJ1bU`*A5}qv|n)&kazYay&0Z8gSEDS%1+t8vxm% z-ZT;&)Q#FqQ0*jq{KlE{6EDg`xV4+>MS8cszH!%(IJO{ZyD+Ff28x==KBxa|V38i6 z!Dqs@)48PzXhe=C1Y12$wohQ*I z9wp6-i+RTkXZZ!rMuyNJ*W-3c?+P~G^PWzF0ih5$vVL-%vKsyeu74hk7sZ+!24z|2 z1|^DNjNj0lQ@H3GC3r_O_(FV6P``*;P{U6VGb6gI-)m?11wYekr@SU=1^sZ)r8DZ1 za4Jt3(I6rqRyaqxhMAP-5M{#cpm;C~O0pZ!8~AY`GLz~L0%k|oO8xQ3N8{jqQmH@s zH&EHk4rH1d%JhNsnRZF>q6G4%`D=rjGH>$9AA-o@jr!ysUNaXbJg>;B7P_?|18d1R zqp<^Kl=We*qCaKH7U_5Apql%=`ttA<5bc{*igZ2Jm+8$FhouyXMc&?8#S#McI)7dl zn#9+{4gWrB8ht(GP5RAud@#Cx@F|)msu|3SiT80SZ=o`0i8^ctBYR`l*U}D-V-5pn z0#r$wIy-uc5vNJ?mh6f`8F$Xr1ZzLrc~(2meYKO%+<{m1R}RdpG3nnTO}T-|(iHtq z;(01A74*bUuw+bRaQ{@vL?7g?;SH||-fM43G$MUtadx|=;7hnodvG62#=ZN%>8=D1 zPV&F?pFgYH&=llQC;lgbQ39`T(MG`lu_H$MCkn0h{?0>W4# z%*(gH4+&0FTujOK0v=GZ_qZ*iv@m7XPEug$By`a4F8{9<0E7@c6dEMQ%AZyI{{Q?~ zbOxuU_ujtg`v2!2@1A1~0cc7HHA1}o|M|UtANI8#aQ9P_vyP1q{(qlsca5Sptmga= z`w_K;H`-Iv6jB9j%uezyQlCpK&;4;;Zf!2AOqs0koLhGC9`t&!hAv6)a8PcP+%+X! zrad)Z6L;n;{3cQ?JmQ(IVwV2mf}tE%32&e!{yn!!s88 z^A&y`%5lwQa`wE3}`vu(n{IytLGFz@Z ziyd&-V%4?_%)ZE1A**R6O7U7^2ZtRR>vA5GcH60{7pw=*a9y&!82FFgDEVhKfHC&= zWSFb05dgsM|AA^c=9k(tsL_qPl0H`GyClo`q*!gb1 z`yy)ptKg!pqkZ*NyUWbdrrT0E#u$I6pBKfyRpp2}NRFK(Puj&esDh>N`e@K^YVXxw zL1(Y(k1hj&mV|Giy~eC`w919J17Y zRrvEqZ%Cni^|tF<*5rxR+ziV8jn_$&Vz9TYV-0A+?fAE%M+YCMm5ZxW#MeHouUvTa zMq!G$!WN@f*}@4FJ;{y|Y4FNleYKuMb&-^+P!t?I67thUssFl|e zglnkW%D&ZHd!D|iT|@E~7=OW{F9h8K|crDQ=v#SiI+D(G-dj|0v2423+ABYY9 z0fThL*;!%PFy%Ifu7)wMHZ<+LYmjUcme*pD#`59hA&jc5y;V#G1Aq!)C4*&nPq5ZeW|Kt^>+}83jXet-^|DrK zV6O*Zy93JQw-s0;lI9*3B$Gg8WQTE(i2FLU6=uDYwdjr(363A zaUt%EZL!4dJhqmKyI9?)HJ+O{4+AH5w&Su?!&37ZUOi>8@-MGWN&B5|FhMi>(<{!M z-M*@>UA*Dsso^+}-jKV7m>`c~%$=ItmmT-n^JQL3&?^9SkXQferoF?;ALnH0`(4f^ z7GNc0$3?d2=XzloOT0o4xw~%wGT}TB8!l;gG;wN!A)qbumr9yD!)mq{7Qn1pT-4iy z&zIi;6F1r~&LBbb<0}bU;eCVlfNq%+Lal3_U_T~;D^h>3|APs-V>J7eKQT&E9zG#D zvGXpNOE)1@Dbd2~b;0WGAy_#sY;}{Z)&^2P+dFo4|DD%0w6VO-eVk=)o5>A z{B$igz;A_3`t_(+f4j7$)ycrnT3vh;^LyC7MMuxz2W<1f$m8NXPZj5a;IF!M587NT zJ7Ek!e1&_u>-qLcb-=8Q(f8WNGx5-Tb|*--qQ6~J=1yRlQlH*JipHV4bcjVF zJqEaU!7?h>?-!@>r#i0VQeM~G^5=4O6Cixu`CKW|U4+mKVQ_rGetwcuBzv40C|Ua3 z0F71u9g_@tQt$LTWJMO(i6e?bz@grBn+_0skf$8Sz=W!T0R_zgVEMk>r38>!B9E>z z56)+n#qqKEYN>Or00sNaP@N|h;gYK%20yLo);Deakf~1tFN20eal+~jnDN^qfHh*+ z${p#-Ru6djr(i=L#v3eEkv=jXT$Nbf(;M)WJq*EPVTMo1BvM|GGNCd0lkcXL;1tgz zFrkJ5dQcDG&LUYDKE_}0eMZ!>R5mZz*3fWW^z1H{q!1l_aN$ki5hIJRc12o7hraIS;x?$n(*u%xs= z-AT=d+pwv@70VGLzs-k-fB#!Qwbn82wq2x$omPvy0w-4Qw7JBGulmSU;W);wsozZO z=q&hZ@RHN)Iv)0NtLY%l^+IKeB}h}tvG@tlJ}__xA=WBxcs6%l5zHKMQU8%k=*vxn z^#P|Yu+W`o_*4cX3>tWCq;@@7cg(kHbHOy7ZeQXKI(i=UF*&U9OO$mMUHIw8{W%)cA0yEh#wXKZ-!&e|XB{aereLB;zR*4Cy%EAaXCN@=m@Szs`8EVKDoSn%;0_ zlL{{A!7TRZ!2My4L?C@}X%JdiSvK+glS8EG+VUV)G}vu+jL%ph)s*Yf;D6;S1wtQR zA-APfCwS*s=6i3rXbH@k*T%YWYGVF^C_ylCVi@hGAmTbF$xQS)$J>>55qB9El&k5N619R) zjtQR5$1z|CmWHG&4%Y2n64ClwE!7nkF;jk#9KnU|Qozao^I6d>rJ8eG-cldLu zF}z1J8jR6;goe$5R zwq^^_QQ)LD>qx!m|Iqa1;ZXNq*iT8K2aQN&nHtIVpoNURFxj$&C|jknWf}W2s3_AA zlBF1A9ZN`&onlZbvJ_b}XpDWVV}H;5-uL~ZOLgJ8=DVEFIrq7jXq%&;H5B~x9aCnS zK&`$s?%0sML;hfTm3%g&E9K|lVMEY8roiDiIxl*FFs+|h`&Lfq0K@I8nq}bj-|1aR zMylj^J{kEKvgcKC`5cOVTh|NXo?X);C>V(S6ib!0?X|#N<;4baRXShww?;`clws69 z)b}l4-Msy^J9i$0GT*Ga4cL2cJd#O;FmRgRR-F%7dB@ScOl_ppDbPqpR>`|ZHD*We&j@hx@-kRZ}IzPSchlhG3 zv)NuL?hPU9BBgGG(j%fJW-)f)HOk>HS=z3;oUbLc4SuqHJGyQDBYbqzjt%c$8Qqfg z{dy+C@g9a>awkkQo=x{}HLTCpVG@JfJl%^kqEb+ExC@ua_F?aJwc?_)%<8o)bMmIH z_IQ

U<-Zzes&+a*<8HTTM@2n{<|QjE0}SlmYh2e3%tMCHcg zw{!a%`{N~mjO7EOO{2$xk-uXa@*ROuc6mEBWHr9lX6p-+Ouyga-f|hor46mB7cX`w zwC~O`{y+6L@g;S1AYpUSkZt_XATrYV<^#TY`6F{A4m{R#^eP(|HeG9=Rz6RYR+a@j zzU#505ECWr$&$~Bu7#MP;^v>5d`m7(tqgN@!SprhImmd8M0$LO0?3p%?i7n#t4(sa zw%}m@eV$qV$W4Rx4v+d7e(pwDXTrEt$3fwdQ=6mWsotmPH*#NYS?q=+Z?gvVjkCq5cB7`VV}iL`DlE5j{ZNGuba z7o0_;z__$Xc@e91GqSAS5ZaXN8I#y`2Pz?=y7CkbzUULx{}n9PI4h8;DHUn(gD&C@ z=J;~VV;?9bVnAZj2tL4idm)HU?{<4qZjy}u#<&k}6uXO3^=tJu<@V4|>TNI%?V9x) zqs(WtQDofLwB>)277KUR?T zs^XC0FA0>Fy1S9;HiCnOHMGsOs;jg$Zicd#TkLCrM*16;dm}5k8^8D|RxH@}9E3+c zOV4?*qxZQm>B7{$rriuVYfASMhbhyv$`tA01625!NWA-I?O>T`L;)<1?Koj^dL_Py7W3plELx`_yy`< zOl4!^00*Z|BoF~vmp&Yhd=9Ve$zzY8Jz!j0LfOpvH&|S9eP}W-4Ii|bq}=_n>+#S( z2129#rXJnw50p!d87uiu&Yp0H5sg_c6GB2S;gK50Olt0EqUGU|268Ada=Vi#zFpZ= z?Sz3aeQ#zg%!d!Romj!9x?n;wz^8>buhdEY>`yHIu<+-{f`B=KS== zylMR&N6^QtjA9RxY(2X{gUWBh1;rOp8a2rWT&wOE-P6lt^1Wa2vh>(cCp1IAon9n9 z6ZN3m?vmPn2~(GiPsKIH-_Y2y^Vx}M7D)6UHTw^UH#csKT1I;!MMBNdSiVT`HYv+# zSn-e4eB}_od{OA#9nK8K3a{*WY>X7L&9^+Q4S5*n4#1##4?}t*16d z9TQ~}vCI-N3rHc*rmKeq`*xUP+dUcuBE|EMjZWy$p-pw z%QI#t@f}gg(jvOt$+`%2WHLlKr{s9uqG1+ye~@^&;%tTeR!`MRr>I;~@Ag72kM9r7 z!L8t0&;QH2OHV=_BK5R--wItfM|a*J$;lo6s5~?V zvqy2a&C1RY;!|b?AA<)E(Zc87*guEVG$i-eNljl znm75JZ1n_B=Pmv~k)SpcR~PK@LoGzls6&m_-D0nh@qt!Xv?YW!2=MJuUid45aD{$m zE;fHzJIzY8-SACFapPgtj{BQ z-a^65mizPsZH;XWl?N^!GfyZBiH_Adp}zN%+`=9+$Zv78=_J5-njyeXXrRm`AtEV5olL-MW88k;g6ty3V}_1MX4iEN z{fw)S{ZE#Uxbxce`(?I-W!O?Wryz%J*Ql9@brl+LE&at+H8wrOw;=mCS?f{?Nt@!+ zE&04e?ox%5O61i#g>h4vRp`LZWLJ*|naT_pTX09w|DQgqo$h>5Q?v%2z z{NkxFTn1yWrv%46K=dYfQRezPxkK-~7)yLEYbCg3N`n%xo47|Ll&2Kvny9u$t z>=;2;=1mmbU)5YM@ve*iyw(O?_hN|(&?cZuRT)wA(60Gpj`Js$$MYcA`%h?pDhk2v zHGaTjuw;u?JxdnP^*~4EAvS$!9$ZcG`Rf{-p$|<6UPH@Eu^VYfQep4sVMHp*oz}mf zCh7A#)_LE$e%f|Bw|p}Bz!&!8*TZpWo8J`)+p(&IBD1=Eq4FX>qOs$7;IlnL+3RVP zRpGtA{x&0_8yD11oL^jjUp*h+MvEF+HEZ?pvndh7h)`mgBe&!EB%0$G6j-q1)l0J; z@nWu}3))p{UbKq-4a2z*W0E~@{G$AC+-Q5%?a^+4#mT2cqgMicdHK1Nm?p_tJ1O2K zc27NT?*SKcu#PtS=?SHtbxS0O!vuWWsWN#Qs|N~35+dJw)Q|A@IZ*H-q@+XL1&ZlNuh^pyIq6BF#RwBx`{g2MSf zH5+5hFFK~D*gl-0>J!tb5t+aG9CLpyXAdx6E`OM`WYlv&_8-*{kvG)o0YLchTn3%{SKF{ zJw70xdiirkKoU-UrE7qK`=pQ|HtU!**4**$x*LD!1|(U4M4w$^2sp4+VI@FZeHlcDDZYad>W-Z~=Dh|K~w) z#eyKoAA-I`sA&hf(H%PUStA;opsw_bXm=l8@yQUl@|2?=f>HmXj7<`Dp3}pEP*Q1b z^m6{igoE-(thBNTIHI1%mR?UYy`~9tjA*-_6SI!ob7+DFnjGyJ@g@Wy8fKiO;8+6S zP=6j5=IlIuQ>ju0I$bT=Ykn6QuiGl9ek0^nZdx3X0y%*)5^QLn;yHbA*pT#tF)Lg$ z478nwdG5JC>){(dEHpRlr6nrq^#|%qSVzar1&@5m;qFH)2dt^ThCV5S8++%;tK6S4 z*Sd@TbWRO~>cS3O2>6SR?>hrvO|TW^Ysp`75bjIX+A&Y( z$FP_;l~%$V=;C~X98K*$pk%zEYtNLdJQuXlQKr+w6jT*)@yLYbW_j}&mwul=YRt<3 z4V=zU(&KDeLaz0@*9E1>oi`L8wkxo>TEV2bR`$UH$t*lNbcbDKZ)TWJd}5Gq9Ga|l z#2BrMHN$IPwR4kyS>*w3CVCY{_DWrM7cDoNiBWF0NfpWsf1>YrwYzdYc1G8C{*-|Q zplF^Nf=emxE!<`&0r$70gXUOQai1$jg?uHzu&B^~1+qTAhNn`p+Pd zH&=WrKhYHx30jMg<#rO|IXnmy)%bd-kd!5owkQn-W>cq|2`;Y5BR%628 zI8UdhquJ{Jl5Js6`HJ(S`hY6BRw@?J0RaT*kfaPCedXTxI6}7obeX=@f^fe>gS*1F zRRhi*6HXuX9hz?cn;Fr(wO8XZ|U8-pE59ep{g zwA3-i44usmO3lj48JY1`4Gker0d!6?>S+!vyw*leBDm*$Z_BkJ_1i)$O(kyb3W+6wR6;b;wWOD zzi-f?X=hCvxiHEg}8UWJVD{1E>kH2PsO7Bb>Q(1UzU{miJk?Rva z^@4lIKY^MX(hoMDOYYo!J${0+QN+mYv5KPKr+F8qXm&P>&&3;BgY|d*s-pNot{E9V z2`tRsl?bRwdv!$6f_b@Pg(S=4khRTdl0G4D_Hco>i`?ejo;dxjTTq5kdvql*5Mo0{@HCKFavZ%sX{gXdR(dPXJ}-UN1r?Z)(TGUG z1}>FzejA&O6RM8o1J6EzAAh<{6zB(Hnj$Nfm-BZDH}kAB_!hXZ$WY6_EchEF4zySm zq^`K7Sg>yla2zrziOb$eJM4_3=ajd}t*Zfv z{mfRP56b^QWdMAtTrZ|NsPD;0MW8Pi(fhDJUsv&d2p)wYvt;i=`!GGYH!Tw~gtwgqADHzvV4GG1 zkyEbEv_JI(wpq?fq)A`KhhS56Tx0wRH9~IBl9)Ud;n*bCpDoL#+*F!q$qNy335(N6 zvM@E)wRA$!c_Vmn?O@Pw8KHu8>PuY-F3Mq=T%?t~Z63@yBm30Ks9~avDnuVDPqgEV z)j-9qYd_@-UH>ZiAi;4kSAB10{i3BJV2rtyDN%vTda^1v1QFodM@Mv!MK!DAC$=W`|aN`J=FD6Bz7()4SJr<>2sc7<4%~mwP#Fs zthnzrzB<=V1hN#LNQCV~Qx2^M5ZWU38ni|<{|@i+{i_h8{Dwa3nN^YLWVJH`K0r41 zVZ9}MHj8x`rm(Rkhe(Hi-A9zye?Bd?18-+d{y)nFos_h?~aGX~wV-24tE;Qd@+FZ1O; zDm+7F0`vb)h4a5m$Mavh)H!-m3Kyq59G_SIM-b*oYM8_YbFKy~`cv-hYD8}&`L5ln zI(}0JrFrhl2j??TE7pY0cq#4VXJ?*DnQs#I-G7qj)hABFcL)gG(f&Oqxy@Gy=4Y8J z=P0FsQ?I@%6+0EAZOeWj@GEIqX{EzqHuf=L)aY{<;S=b7&P$=-Qe@@*PgwxupxPA0 zpJrgmDywG(K8m-fq;fCPz^*u*`LJ%m<10B*iZ1fAD2T3pY4h#2*nEJ|c|XFM^&bO2 zuT~5CZ%Ma7^vedRj{Mdwq?gp720D;-otk~T(f4QGId4SAoqjy!+~1$o1URwHNOB53 zXvF%i_og%Rw4Rvq@DVKnr(6VHOO-)G$@nmZe#kj=Dw)&*$yj_y|E^rffKiL zVDXxv6Y<&a1O-6hQ&KD+^{T?-BiEjM8!I2Q(9h=EeSdd>>>n2Nt4q;8s03=Xm1ny1!S>l>nZ(l)6QtAJDqSNKM z^5bI1kk4usZR6@ZX5J^s$V<0J!9;IwWsa7+vhmA$DmNpskoG*mN!-L=e+^3TjxF-G z^+plZ&TIfS=)myBLbdBZ2T+>(7enB65bl$rqAhDsQYxPJq>pqBhhI2&;kmCD<(^_m z&I+k0DU5Ky457h^lA@G1WoRXHGu)kl$>=T*{=|OY>!c`bdav!YS@qcIm7gV3nrhxi zsYD%ho*g6{cJuqr8KXi{BIu*v5ds&jPTbQfb=^t+wW!@PAhHR;J=?wzuFc_B#1HS8 zBnp%5aEAMWHeYj7rd3OZtn0g}N#Oxj%!%w8~5m2Xp3Ar3cExHR9&a z_-~pQq}v4soWSZ>^cKXUo8UpQSInfW)j!H(W>jiS$J^Pw`lop-b>Ht^wfb)yYwgmf`(K7eaG50^?JU2 ze>1*4^kwg>FE8tNQ8izA`T{Ab*mF^C!{(OTGHR z2S6Si+=|+l#JWvyEDY4L@oI*GyKoW5Rwy3h zfa?Xdq3eei&F1$lBxOvkh#y|aJACi&&Y3G@=S@Q`b%;;bSce@hIkYb6DqsC$+_L3j z^c0yGSd>j`sf%srDv(lV#IqIA%iwL?T}q zpTs=fK~4(VqQ_vDik9>=$yxfo`$haufmJ3T0Lsoe78a*#rF!4WMCv%;*l$K&%x`Vq;y5QF_ejYNn zZ;X!s=F>Le!oiWKb(pgEyYT+C@PI*cC)Grx>Kshx>FoI6m(z@?lP{>HR$k>(mpR>U ze4Efp8GS5HcoWrP6XkupB5H-SR0ZXo>M|03O0`B%S^6SpK6&}Qi}u@ViVi9=cedZ} z`TLl$GE{`4Xgl_gnIo6&!cdKs{mj^I+R&$AQ&e33Nb=8aXn|n%M{Y#vplA`_W2L$v z^(zk_U8~x=tsvC3ZX;4}+F4w@lae@?LJ;1L2e59AxsL@VkrwHliT8nGC4~1Ka`31< zg0xePZf&x}y3}rp_4xJU+R^{+i=MJ>?v)XQ_Wqarp)NcF!Pt z_gdq8V*abpS9rO+MFDEy_aE0u@1i#NA;appjfI={?2{|5>VvArcP^I{BxE$blCbM3 z!Zx40Z9#CpDcAo&<@d$49C*JkZr zo_K;#|EyWp{-Qgj&+R7|xf{JGZF@ny`v;^ ztx^;qn{l|2qcjTn{d!v&%|1(t8m}sPPSh?5yW=l6>~xvW&pM95?^mCj!l9qw;x4-3 z5Lz0;WxZhhfp1~rte849MXw>{T)P)|p3&oeGe;O@1IF?@ERgtW2w5bvuln{UreM|E z_e^+EdB0~)gStkU(moyw58Wj|61DEC@g<@}NAzLOO|$NM?F2<7^bNQ1Us%}(xBkBt z;EU6YnlSbBru%#REn4d(j!!Qf^Qmbf)S%6Lz@aa5-p4&NWPI8yCw%G`>uG+1Fx7`* zEWBozybv#Ly%_`ZHm##hF6mp9i%?Ip+tzzr*0gE>2wiP8ZQix_%<$f+Jg4A6_@;?k zG|97I{Um$_PCEar&f|-GaDBM9crS~Dr_1ZkrxHWu+x8ktbH-ZrbsHjSx%e%S(UY!_ zk~L)6tB~7zihF6zk~^6u0@IhGXS;zb$kHZC4AC-(c9v!)GDHMgyIF6Y*OxruG5u)+qU8R_U3W7Q=zjnPSmZQTljdq) zF}LzEJv@Zl?itqMz+nH|GjqIbL92=csic4k+nUY4r7)fYE%idHbdj;1t$go6mo#Z@ z4suw(V?uEALs4WCrT{IJB;IsJY9T6Gu>U-Y|Mw_ht5@Hq!R``bdSv^&ROwnvsPJO5 zOs~So$&l5QeG?rvnYB#&cYBKbE7IF8Jusum^8IB#;I~MhjE`-U)Nq7qcIxCK0~>9QTE4PA;@-?M+2~ zo=e=OcWE-*SJEHlwcwjkFaALq)ZGtL4~tinn+$8sp0#Vs!qcCO&_EjM2jIc{_W3oQ zGJQN|3g4VN^AH-OsvzaB<@Kazv?Ub{yiu==yqR+n*6|Vnpj=9-ufHT;e7@d%I!>B- zX=AE%Oydy9ROu}*BDOpC0|orl*n))FZMUq?j^DOKerDz+&@XU^Mq)SCL}T2-?Hn{X z8{=*%y{S(Ba(`WIBj87N_D5|W+?4EsB&;ZRTUqSRy-@ikizZ(vm+_69jKk&M5~fO{ zH&5JQxM)kHEWf9b-O%oVTl=ah4v#e|>V6ZD}3rpFQ08E7yp_uIhE?B7!E}g6h5_2?YZVvNPLsPA0vz0`}yO^ zB@1)&j%e(A4{r3~#`PRXLzLVFsrZex2o%}2{AKH4$z@F1~5=AhNW(a*o{ zg!_tU7g)n_+*E~b^fQ^~>ohLrj7sHs1?nrXe3?nId=Urqal6-XE00!pU z6-SOEUE)8omGdF?vUNjfs`YJcOgJxP@v~)|^hL|&^vE}E#E|uO3;*gJZ^ts6p z>OY}FOI=@G{9~jQUaCuPfk$}3Rbn~)+{p=;lwFM3rv{5Gi>SUB48o7(F+$2f^F*WDqF$0gBmIIHpn zX3lU#9c8|XO#TA!>e!a{i2q<)iUq(2x(W}yhzeH= zWaJJGXk@0-Pq5P)IsH<%En|OoEHgjoj-%LxeYsYX#wRpKDOnS>F^z5VHTzq>%}i#+ zhT9oznA$vafbI?qe~5vEJ&IM75k`)yN?}N}+;ejMl%~hrFe%!0GH;Kn;KKQ)#5-`E zPgx~PbZ4DAf1LQU(;$yUgL6!yr8FI%YLzMNVy_t2M&%IYhQ8gN>6&*|u$|`DukG@; z7ao{_R_yz?H+Qmrr3?zY?)W8@|lmi-q z-q*h5hU^oXjO}z0o+uN*cC{U&XROJX!v!oota>9mw5*N@O#Y@Wci8}K%K__UQ{AIh z@-ekI7G9XjNRZXQu7zj4x?&Qn&#h4~32de0#cMpzC7MO7I&NAsU=8>(R|to0J_E(o zpxM{nqvYbMzR=Q^SA_Zk{%gLOC$SOutvh-le38F~4SC_Gz%OF6mc6c`rm#?_=wHT? z%tfX;gK#jx`rgmZT(14{l2&VbpE58uTla4i|M_W>g>Oz^kiNzpF$rym_tK`oZZ(jM zk%p0T`7v%Y?5|$r4c?`cRa@8@kfd&ir~hnv6}cG?aj8<{1O1M+3rt*k==~B?w}i*G zl;%sUV|?~zvKCxFQG^u;vO!*dA`>Xzohb1sp9E2Jir17(FM8>G-yM#SYxmN?9OR7n zXj7y=*~Bgi?%RlyhOcR!!1 zkGEfQd!Hvhf4?5MriQ%F3?mnF&E0<5mDJ$mUQ({nzY1JRG-_iI6{-urskG(c6r+EX6)5dC9~h{zTuV% zY>8@ll2jG{uU}7MDT*&9kj@U0ZY92iSw>%Zi2{fF#Qfe3USeD^M~3l=9=K8oKZ5SO zj!hn%pwh6zXi(v}BN(f`{U|;a=%Tq5VmgrEdZL69@pYcg?I$z?oMhud%VO=Tatnxi zqdjaz#Xmb??m>%W5$qmZNv31t+YM&yjSjel?w%4Q)a%mmP~N!uwfW`5VUAoP^+Sb10M!`lX$8Bl-89D+2J&_>3~$Ho*%87>p(xkvU^_RW`nI1W z?)%`zIARa2Vy{@D_%}*Au5=W9Z2sPGcG{YCxmc?-4>FJD+ur%TRfDWc`e~LTUCig^ zw_W`hOW0m7WV2|eS+=Pa^7NAlYQj;Mhs{^)d;ggGoE<%vH}`%ojxE zsb2ZLf4}5$)4$aLIYLMwvYGH#F6^JQW%;DP^M}3K`*HxVqQ{<=8NbiB|7jSWESCD( z7!m-@pk=E`n0=kgH*9*CJ~0cTEVASM|+7kaB5(= zrh*-Ju4`B|Jac4_??=B9=VI>-sNczx(b$gV$#V|Y5*gi68H*tdwo-DEm?D~>wAY5( z8*kigx7>4%!BTQ&;L=(`PrXAUNHD3Noh(>!$8t|@Og-mnKeIRHX=N^af9jh;xyu*6 zFPELbmi1UhVnoW8FCEHHhrJKenFp$Y4y9GvlEUqeV+$mbPw@}0>fR23&%BA~y`I6v z`5GTm_HhxZmN7sDtvu){aUJ?W@D&FBqyP2s1+ow4XtzF@yUml~nT@>Zl#-n=CO&_a zk9)1Mt`i9<9}x}-@KaB|NeeFl(H~Q&D_Ucac2YX4#x5|{ozio~Ip%j)q{26^fS)DB z71fY#)U+FVt3hqMBL1;hAs+4h$E4|MCB)jn%>rJAr$TCv38L$cP{1=tegzOvb=Y&v zk=|*`M-iFQt22Qo&Yv2pNtG8m+D?^XLHMR}iflDgZ{GW;HQl8r2!E5F` zKwJk*V(y|Cf`uaL(>>dO6~owaDLK<6xE^HIov1n zh^I+yb-A}IdBS>5uDm)xnEEC|;~V?)@qnP-LlNQiaZ>@>_5Go&n&+g$E)mJmScOvk zG|ttczWZ;}xF(7=DyMs<%J`PwFW2Yp7J5_{jSb`Afu&Q_WrM5heH3Hb-s_-%^s@Ap z3U*sp9an8qlG{jra*0!JC0kf-eRyM2yaYY`>`3xoeOc}Bo~FnB!00%48VSGU^7UEm zyte*8Ed4iUyXJt1+rneLM-F2+agDD5w<}chM$e(eT})%JBuM&I1-{g(CKVRtW2;JnIyTY^jHL{f*!>>-R1Tf}Ev_`u*6X9WeDa*A|={h%7X-cW` z4(N+f^Ai?0M7LUo16z-gu zCv0S=4q>0SEB?}_u^!6tX7n03dDjUG*`AsmX~NXEMY|5u5b84&N?}VXM*k?29ip|} zRY2l8V3t^s@OAodTTiq3Ht&NH9~#Ez%yBiR+}G zihuV(sevD!8rz0kc41>u?m2_M3R>3#DJPbEti3bd(G|SmH|0D5z~siZL>JVu`LkL! z&oA_X+w6Oky}6#JX~9oAh&1t#inUF{(>VAy3cw^=#edE-9q%ACL5iF|CVlwyriNHC zryR>ly+`TY{Qh{9>;zhycy{2W{K$h(eK4uRZpg!o6hyqGm$!AD4emUlk%H|_o}ixr zPo3t7349khCrX_CGfhn#+s#fzV3ZhQ*O9&%ooV>uy9!ONqcX znPW-C+Jcr1P8o(!<|IYJ4QF_`1n)V`{2M~Kg-_q?TE=_-5JKg>V=HlawC>G1Uu^@@ z0P}DCiYtf7vla{+7Z`JGDxC)1$b$q(-i%3-pGHFkg7Dv&B0wn3l#9az!^_1ufetf) z%4ys+l3l_(XJK+D2Dlw(-U~%7-I|jnsw|DGI7}40>SzcZ)#Xxa%bm$>Y1M+yarEy* zP8c|GDC8SR1|d~g+3xK}WQE>jCL;M$gp|w=S3QH9Z6OAU~@+3FaxfesLANTR6#|7gr$5 zHMW30rI(9$%%3$JT@xHnUL!X_TGBLintvFkOZn+~XYw&xUHP_Tp-4f4-iwjQP!qVJX^x0pfS!u1nA zU_{DZfXWIn&FboP#fBEwo=)wTc$JZwC1mbX_3-q~{;+>QKCwPUz^!?{Ad+Ns7^r+JS|X~JsABGY#6z-b-P z!cSYnnTA)%Z3^Umn#qWoT^+oUD*K0*ajS+b*gnBx>A+g;Y>&eBiVH({PXJG6;o6Vml!; zijt)eZCh@Tc6zyDK@EO}2Od@a0jP!S@0Pm;xjNr2#P{cdpVgkZ#u@xVUCHSxKU6bk z(WsCZxTSVs&I@ku72d3=bk!Dk6HYsK@4vZtaRiu&t?tfXq0Z< zA(<5MFurFT6tvVx0r6Q91ej~P^VM6F!JziP6{wPv*l;5w5|&FVm-M~q4#9aocHUv? zfi}cWu$Vb(I99jk@7Opbri2SC99OPgo>%g+Y8Su8IR=W8cFNY8+>_qd9&MMhOo`dd zkqxS>OFf#qwIffl8rqp|b%B$f3eLras&u8@KjgL3b-?oI6(OdNl)S1vM< zoIjQi({D1mb7lffi?l5m)?RJVKC3xml9h?-Eu}q#^l-G)=vw%)&{e*~5H5KJ_^jK| zcc3*k#R#BibYf5w8;0U9*0oA7pxKgq=DF_$s2{B?dO#fF)ghw6XQL_PqcK>JvFH_c z{xyD!&q5L^pp0_8h!9`?z$+B?=65rgKJ(Uui$a4^reJ?(a596h6Z=C5sNkNJ(mk#w zG{lB#^upL%)mex%St^J>8zcwncdNy?{tUz%;M`HYp-I?>OUi~=w8*64Dk;RUHelz5 zC_8$erpl{_j`Bu8Mmlq7qgr8Pi9ns7<8}|S6P}1?jx?~$AHP+&Bq<)VH2A!{ripFLIheWEBEDKO~Y24aicYHw)$Dx)Hn&6521k_C^iyb-eeBF=n zj5xAw(99QGx2}`Aw%s6cECtvZ4G=~fQ=x!Fwn*v|flk%T@$0%IDNm^Bd7V;>T(lD% zx8v=P*S;>uY0-S^v4*GL0`dfdBa}SwNVnR&5((LCj z*1h>sYi$*yba%n{wxT;HxUt_vOB$&Aol+b&y%D(U5;PgVy%0+)tuC-eS_IXs1H;~x z#NC|H=bP@0`-mVp33D^ig;}kYS99c}-OKnj!vy219P=lVwfy>WwzbtxwI|@W+8qLK z9KYtrUFyYH3Pp9_+hS#6c?p^>MepVy&a@J*!-7WQ0~q`WXZT;|ez#R~y-Yp|w&Ux^ zPS5*Zcn*}Ur%*3c6nv{*8L0UZA9C6A1%9uXE?j+kvMdtHx3tG&pQ@D_SfkO4ODT5$ ztN+$5{D*{24-b8TSz+O-Q72S;J)Py@G(8~x>>1GUzr}m;N9;=Ndh#^Jb2ZoNacTRb z2sPJttkxILwsT18pc-)>`QBNca-Gw2j=7($;!K3&eo?WUvpuPL^)`)lVGdI1aEhUO zUg<8%?9WfVA&0jgy1az?^+`Ya8jhL7{^|}bUL1ME?q;!?VtqRMK0~S4O;{~l)%#)% zuFz5^6IiGTL;G8;#EFZ+0xdcvzEN)B{ zsAwM!`jIWVKg=8}T8#VQN)D*+p-Y^Wi^~B{u9&UF+?GhSX|)=LDM7Abz-u=R0)JYS z&$z}n2styv|9cM(J8~MOzO6Q~DG!coMH@Um(vIcEl|?zTvC_j{@6&qEp(K0UIpt7q zB;foc7Sr>B1cxps8%zL!sdW8@#2cib@rf77!CypCtEY{bo~lmi!0!>e=)a7+WLZNl z!(gGtEDNytDCok~g{2_{ZSF@7>YPR!(_13-t)Z;s^o4BB#%B^TXRRCFIBI=aloy9V zVf+3cTVDbWb=$sOskBKWTiG&_om4`$vK129cOhga*=MMbAxp|q)>O7^S;soWpa>Ni z`;;YR?6QvKyM8_I`~Sc1_kBl4Im%<6-*VsAeO>2up67M79(Fn9-x({0yd^iWyv1&5 zCs1*@q%B>ovy_DVRnZ20ZYA}eK%O`MI$QB+}tCL zbL5QVMfW5zr1{q^bl9S|ex}aVRqnqm8X>ix7youFfPctjy0Yx8frXvbRk;(oX-UtW z_R5x%??s{9*l40oTc68il^-*6e+FwqxivjO6Ha9|60{gK$nndw6r^2cn z4^HhC&*$TDt*1)6)I)ctQw@kHYN{afK*>63Hm?&~v2AtreT`^MX)%AC*Yx<4^qXpe z^EzMfjPALZ*XAb%T{)VvIJD0Ayb|uT@jfaupb{y)F(;&&LW!El^)usgtovf|{j=NR z{9z|XrFBhy6#i%IRJANU#(6TRwGr&Gn4kVneld6W_k)cSQ@dOL9;tU>hUy_&hPMxx zBd!e}Eg$*phCbo`((chB*ycPql9pr2u%O&fVhm@?Q|>2`I6gLUw&;huDmF5TGZ;Po zkmH}cPW{~Hp>cx5=-Pfj=VnEl6G^GG`8CI!^DmRuQsLiUMU|RyHqQr+rc|tzSSTEL zW8pRcvI)B`ivjeL0XIdMxOPLTh=i}!sL5^tb@5DUi$9Vz!W6qT?GN-rZd0`EmVnb^ z2s}@43i$oU!q*xOUu~b&Edu9E5xQr7}J5w?ypE~t- zWnAWIubr?pIU+Tco6Ycv(VfzKjT|9GVrw7uvzQC0gQ)_6&$2CzUQZ1oS1%E0!Nm+~ z#A?BQ4z4={QKUy3$4YDjHXPI^itM@bppf@GLNwpc5nef=R?A8AfIxz0%WA+zh$3t~ zQpWfux3WX^bp1j7ya){q<-+W=m~2%{ zI<;RhQtK(Zq9olL7i8Sk=3TgK6D4*Lz^_p=w@bsE!G<^LM()6+p0E5ZLwBki3`c#= zX?e%15lhb>q=k<0{Ri-XmCa8t)7${Bt>m+iHbrx=0g4kY%F2R$&sfjcj+=VhpHP~ z`nT?`qH*c0kwrs6)M|NdR*I>*pQ{)rW-=M9JeONY)_(CCbt6W|%S%*Pi#~%q5vs|n z$h)UUZTrGspWdVV{U&6ad{cC}T<(xHaXbbh0^L}I zx=0t97ldd zt=5f%a9XyIbAO$Q`Fe{CiSfjIprnP9m-HXb%4k6yfxz}$R^LJ~G)6j#PshT^`HvBl( zw0|AV?3ui@lYx^WC1=duuiVPAKwMbK#B#EBLFP(wpEA3$JAZAC!=c8HKh2gQ?|5%CeG= zTTf^?!kdk;$?hqDIaaFAXAnL&u``rmRe5%&8KQp&$-t%ln$(2pp09}1z`SJ&!t#`AYWn9%34l`}b z9X@iJGYYw+dhZif1f6&q!kKVDDs|zX)R#;fFRf6&3rT~Q%plqTZqyFnSncZx5&RPf-kmD> zRhX$|STSqc@=tJvEBHVXrcUsm1!Ua^3#e(dYXnZdYhjn2fCtcI1FTqv;m@=@WlnVq zT-7PP^_wFkUg4VWSL}bWdOUu)(J5JGCTMHQc9pypI?CN{Q>!F2noDAncB2qra6m;! zKBck7p_ zXSoGEYQCka+ky=*Vls6pr>QNt>r&KCW+8j$`zHitq-ShqT>u>_Hs0BCbf_YQJ;rvf z5IT%C=nn{CVH~Ea`JRDzvUV2Vq8;L!6FB(lI@*GJGWksb<+1eR??z$=PJ0~2#NjSPAZX59g(0Tb*{^aj&;8&K5dfT)glj~%)3sy34-x3Pmh-Fx~2n+*yz)a zEWg_zcY%6o%Au`lTJqlTya>Y55kOcvFBu^!+b5jdc#xzlJ1g=`D5Ko&1*H=3$OH<) z+QH90p8~Fl1-#?Rbh1gN@TgEYOv|G=%CL?G|APq!#0RfI8wu2`?_{$jdXBoAz>TW+YrQcpx<2G}w4sSU z$d&Gcp4hgqwaCFjeF7MEd2ygoF%-yqI@D`U54l+0H_f{}MHXOKXoF3i!1piXNV+}! z3=0>!ZSyXl0-}xzF_U-P_fD?tv3EEzT-&o1nNM_U{{r-rjRkGb(_hGziRhuwZP}#| z;s@M>(MRrhd=IUH*tnt-&-1^w)0m z=_-K1c}x=+S+`oXX4uF2*Zr95`OJKyI|w-ritJfP`FBvj*S)aaWq=e23ScD8{^Wzm z>$MSocP@oDex2I7DJZt+o2y*;S=GJQ(a~yQ^1mWc`QjY{@eHEkNr$+(p1G}k z;;jH@lyUzto6x&$e~=WpZQ)>g?8<~BGxzEVq4x3MUC}~KxSWtl8@A{W$ontB>o~rQ zBXB|@(fa!qIJ}oRy)|AgheJHOPLJk3v8{pqMpSJ`#=W+gxx%;7 z&fcLQJnU44U5`@z zP_VGzpLRg|U{|*&I}<#K7-UeGhug2e*5eVGob3u=5MWe7_Jdo1LFi7Tp1Nh^LUKj= z-5_z^8toW?j`D%4r=H_pAC~`@3GdJNf8aN(!ma5IEh;aPs9H6A(Tj9&x?L-+ST{|gn! z&MnH;rF{SANB;M_{NOXZ@Kv~F;jeqvKOgw-?_U0b#E(1$kLKuC_MPu#_V%U_-j>ss zJ$Mq>y}x{O3M#KswSzoR5qMA6HIQ=|*qd0#N;D5|rk;GjK}}O6Q#8p-Hh)bbV=hy; zBpKc=MrpzNV>>GTn84*;Ida5mVhy`818-x&MN0WG47z=35tt6kb%Lkm1l%FeW?|3J z6IaRZE@T_qpo7QymgZlZ<>dyw`z3iWQu5ZbKgqk_i&atxn~(O^-r{?4{!dRxO1*$_3A*0k4|(Bx{lhgstjl~0M$!I4FZ-Wwi0k8pcf^CRhHmetOT970B`E(r#NRt*b7hV>&k0frsT&3HJ(P}~`Ed+{3|tH{6Cu3kK}``(LA|2y#DjE& zN*7nQ;-GhmTXr4wo9~v``!8em8tlxL{*qj<;=n$}QZ)tlY)7%wS^ue+vUzybV&@zG zF!9WIM!hbE5N_S_E9%b{<~Vkb^WQ0D$W}phuWl(ZZQKVYY&Oq|X3j53zl|%ua{lJr z+J~1-)0As1YqNVz$z77VO^HiLGR3h6R9vEN5ixQz!ePDoEaqofB;uZh=KB|4{~^<9 zw3WdzL+iw^BFnO8JDNp)@X8-U@^-o>_s&RjM-?i~$C1e?eS>RbE>GdpRUQM~1-1?a z%*>VgT=I$Ht(HVwkoQi|nAc?|LA3PE+FPbN2fSNCWr7xY>K}OzHpRMOL1Q?Jy!gqiF%xJh5YVlvW5 zJL9kv9WOVG9-XV*RF~|rm!}+a`e1C9sI1=9rSo=>q2#lF#)Qa|pg&FJg&%6PWD5(m zRXVG+>K!VSO#>eF9u`S|Oa?QUc=vW4hax=hcxzF89brTnnt}zAdX3#1DsOvvxnt^R z_`X&4BZHQ@Vab@WH-T4H3}8f)HmM zx5T|?Oa(xHJmXLg$x84xKK==8eA$58uYhWO&-Fn zy)~?TWA|2wu%WqXOx=Dvxk)uyw+Whm){>q@vpweNNG_tba#eO^ke#+1$WCJ`*b8XX zs!GI!HDmysG%6LK1iZ`z2bK^&mBDf5y^-s;#J#}wBuL0fWRwi>q0-Ysq5-AN2H4uy zXjR`5DH>HjL*sj=-21z`lRsBX#sc*eDket26bjf=bbCJHD*rVSLE`xZ-jRp;f*%e1 z{LFP<=^pp6+!P<_11>C0^pLeMlXC8{EJ9(wKF`Snu4|zKf?`EZhkP7ubvHBxA}TM= z76#I&u+w|{o^?w$Coj@$M1^WEc|F4^{C4nU3v4@|re8B#L!;`{1H-(Zye6D(0ro#Q ze@nJ0Ns~5|6j;Ni@p)*`Ap80CPOcsILi6Z)YV^P|p)?DuS!%e#3V|e8wy#eC-Yx-d zpA9_eEIp@gMf%F^ zM^N^#HHNjGe<)e=4*}z9Y+CHf0O+T-5IX5pxrfGGl6u4~_fG|kNC5od3y06=W4Iec z&#-~ElY|^rGd;eqcP$K7eCWdd?yb#&^(FQNyS);jx^^_t*dr%YZFrlXzCJ4AwytT} zmbHA#Y-+)FplYchHL%--wzChn_LQ7#%!k9uAUb)=dt zvNMf00quOpxO?g9r;Ut7IUgC8c@eZay3>=GjEPsq6a-HU^Klvm+y6QpRFy9@AoWXf zYmE*u2D|9=U>U~7jO_pRgYpDN??w}ioSF)IOL#$x;$Ht-)}-w%m#IUv9O3f{rrlHw ztq!c4=jN7}G9!rbK9MvC8)#&|L@%80w+_Iezi;Z?M^nMqMq-C_R`XoqL2+9VY$1~t z5h5s(QNs9E4|(|A`BK=r1{nWy9wDbEQC+7Bp5nBIX{3VC+D9RfOJxnQ#EQ_4%Bl+b z>>5`jKIlB3?sbjxvInEY-pg<1ZADGHe@ptwIFbWx7#6mErt=)V04YqTA7bhMi@wcw zI{&v0=$F?crb-nauCI6%7rD)^)5A+x{PsU=i5Zr<)rbyktS$@y=U_1-AdhYlA8!tDlh3;Mcc9W$;6V*lMyrEgDqC?em1ze_{-CtIZ7*^3xwgC|( zp-$Qqt&PBKyrxA>eE?bq1ITp*c}hc;k)PcjEda!HRAIlI9xrNcH}LJCeJ_>z;P2`_ zg%WGliEULwbDq%7toj=Mf<4I5w)7sFvpw&Zq}8_cSfFTYqHfw7PKBfQy8>s?fh0YQdE z#+CYmOK=@$Yc~Wz9?bG}da@YeL^l`g4E}wPr|AeY`GNc(c6Y~{s-C^k5x!?0MaxEh z-8yp-MO&+LBIXG7c9JRn;`M{HXZ47DW9XZFa1b)xxQLAVQiSJz{9&?ZH*(%(Z}qA3 z>FE&%2MHP-Uy(iec)6Rzi_(e_5AbD#nG60j5Tr6;xmiSHqGQhcpwp6Al^>lS{AoS* zyavq~Kw#9{qwnWu`%q@Qs-ZS>RoxPv-;Spu)O2Ufxb#c%qk7&)?o@5iskEiJLivQd1o zII-tlXP2Jfd)Z()wYcfx)zN7uttt>2u<+hbT;h~4^)oi%5@#!(F+VWFRjxDy?a-03 z_T4X#M8BK-akWF`44f;yZ0wegJlwZFcE@INLFT553L4#QyeAX&TbH?Ff7I&JQ1jrn z*Y5nWmIO>yUbWKnt|#fHbXgf+!&me3u|U0#b4h4adNr;4w(?8%y%9X4Hu~47XU0LpdHTDb@JWL5q1P&Y{J)%TSlSi} zEZKnt?_G?IIsM}Nqm|e1rWps_gjFz63_P=x{9MM{#D^ODHp^yeBpwERSrnNK;Qt=x zTt&t{dK#?`B6&y7$HC?X-2TS_bAIZCUFK&e1Yc5jqWBl0<8ZloSyd~|=Eonhlv zivP9^b{;S`K6|#jR9!Nc`5-6{B2H1Dub@2CMSt!8`!pjHU_#WxH4EJkD=9MNLJnsv8AG=}yb@Sh5;k(QBA}H2#H9m%;l+K-LNB_d6(-nJXiA4F8?nC;K`Lvc%pYL(_u)W^s`N*p}6hXJDe@-MtB-E&>X))P|B#~U6T3zJ(Su&ZZTPjz;8Fn}b#4mo+L24VgxZr(Ip%CsLT@@iUf7u-Op` zcXb%}6fNc$^-8G`+e=ukYQQia_`ihv&b(JhP-IHRwI^R-UN|!R`*T8$5mD7N1QY-L zGs_hl-cjb_p3M&>F-06@EPhGkd&_+7vjmwdm`U;qfh`3$M`e@@u`SIXS*x)LQ`t8t z$9XLjL*|>MoP4NQ&>ZqwlK)4E4>2N$`o3WHt51dAWK{hv{1p2F%PhgEAYz(!`R0d9 zK|_YW-NL@UF25j?KjLd&@Y|C#Y(lMd?tZv_Dwhj;pjeI)_Y+XEv$15!41Yv=KhM9Lh0f+HF3qO3!} z{?rQR@wu6no5vprz=3i@WoR8c3$UUT^ZP%%r*m-?Du0C0uA$e#P)g|&?WH)*H9UQ8LwDTW|t;twtQpMNec%ASDeu!Sf1>_+~R{@mPSVJaQQ0Nt6@ld(J>qok1MLV zaOF@zy1y)8?;t)!Lcs|pv#G~~)@f=R_y^q@n$b$zn>x%$W_WnSV=v!dP@|$w;h5Nqn z9?J=DU_|jh!Zk?|)CTj%)xY)`_)#9{R7}d;SU)wGc-&Ej###>1ls?I)Tly9)UV7kx zExu6seS{`{vvJ_2RsUd8`nP&-vXS^w4sB4wWJa`D_w4a@c>=K)k9Fd3bfR~Xd%9(^ zWmE};kfAJQ>te6J4X;y;b3#6yGUnNAkvJd7lX<3>!OCo8Ryf& zx|+iH!vKuT&x>r9d)}f z(UX{6{VJp*Sy}do7(&qj;?^}{SQBCUKDYHZUHZJZg5S9wx2Rt5ufI{^aL;ZAIlK$s z-oZKZ1bTHIk~fOzUVQa4x z-V^P2v;fD0-?epGtBXzWV>*m5$->Q*w2K~<5_0l4ya(*Q{=y>bDF1;fvI~>%i%fGn z`_(9>xroGkdMX%gs(PQCiN$F(b*Av5SZUy~)0oC8*ShXv$hU$%1%`E~wHGF=+1_MW za7}}}kFGwKbml+KY2ML^%PEuBJO{xIoRndqJ?>Djt;$>aracY(9K}V~N3#^(^mWVb z-RP{C%fn@Z{?5qAxVvDf5oE5GHG^q|6s3xxxov{`s`;?xiD%IZ&`YE!A)+BO%W9;e z*eBPEjCt3BhecJEc})Nz{y9}uC2075VBJR_s*K4i9m#FyEJWG7VASLRR>&ZS>rj%# zJo@Z+sLE;grkex6e+uy$Y(sX#eoH5#g3;lnGs@#cjf=qi9Yc*h*~W$~Z|br5t!n9q_AY{>X_t$Qc;JEE zI|9(9I?{<|)KKAst#|u!fMc}sW?R}5J4tcqAd@@Zt3k@8|2L%QorfR!^Z)*ceTQ13 z)$+Nxl7gsq^hWN%Z&O-k#Ws_D$EYG(7bI(isTIvtE;UuX8Z(j!=Cp zxa9X;OJRv#DxFyWk@GX45U-bmjd%YO+~-b=a5DWNQa|637VX(?8^91#IQiIZ(85JC zh^GsMzurorL-Kc#fAaSwKcfFxJDmcZ>*h%GI9U^mD>_Gt^ZQ^5C8_Vpdd*=$Xyzbb zj~_bRcS`2&&(09rw<&T0eO{oROiLY4E?iS>t@??(lbMM%Z^7p-gjvrVEK_{)vEyEJcU;& zHM6}Y$J;NKj|_buDDF+B@v*d`dqFx6$(pRvYxipa!CgRL#ha~Qs%7U3=e$BKPAOqp zB0EM20`8o5(1!tFf+ICwTNAMAN3v}kqLeYh3FEQ|>I!{{`Y1O0YiQ2ad7Xn~x2{&w z$r1M*rSdKvRI3XA*j>GZJwvNUAM}K@>EsB@-nTS0yWG$vwe;x}?fP0M%f$pSeF3+} z>HAF_>x&r|wC1)=A60Z%mhc8GvB()9gRv%h7fK%R%YS~4ynWi@iwzO);%Q#% z(Ou+ZeiOC2+~bf4(~T;&qyx~}46u-RjfF;yK!0%`_y9p&2W58cI<-qp`HEfz%{fVx zT9H^txo00&fCrW#$Rj{Azr9fd%%e{F9%WN*RC>-2X&1EiDfpayCq-JGXz+}hFkG+< zy|CX-)8&>Ke)GFbhq-V75nI0!-4R8?yIRZ<$hGB#DQ+Wc_o>_TJL54!Bbv#sDc8_ZNFIyt5F91Dp?gacxg=t>Vxk zO#@F4F94rWhlRAzgglz*vKjq+=qF=#en^j6t+Hs4;8kT`{r5SNX(YHP1^4zm(6#NQ zDv>_0^YBlTX&$c4CpCn-WI4x)mmy;sf}@k9`QO#&FKaYDdhV`qkQ^{q7d%VU*#6;f zXwmY-NB=|c{@5!&%y4UqOf`CUrgJ)TZ!FKng{og^QP3z(7<+Q)Vj-~nO{gX^C31AM zw>9g1TgS{|HJIPB9Ln8^1?q+Gf9)7B)GM)TFuO*iX-LwIQ?3;TK9y`VIjlkvz5Oou zNJM4DvKhl|^4O(ASGXLrBA8@29fK%= z2VA=F7{~gBDAXKqwjUk|9Wp!titcjHI;AcY=|H`#C5B%G(>gu0`i*Tazlyaqi#p=b zEqWC#??Uy2fhMORFl&?;5Q~ATa0`A*tuYMsfP_MJRCDArfM@jx&NH|U^gWp&qdcIo zq@?}321&He{V*mRg=;-??5@W8BU;XU?#)e}=(pGv-nX$GjCIm}Lnk{WTBU#X%EId- zsPzp9l2=_u^h!~T9vCr&*Y6@Z=D@FG1v^f8nY-1ZLuBbfr8ncmO#6Pw+$*{(WoagK zr1>NXGB20Im)gKWslR=q>gR{v*+D}2GDrVc@#s0{+={+2u1@;ZJ-I3w$LEX<^Hfx7 z_u-D`E28DEy!LEUeyI)jcUZ!VWCbeU$y3B)o71C3_k5udHf((I{TY;73mAZ@!`PQu zpP&r5T~-TWbKv>j(E4{ar%|jo?(q{~vtXG6r3q0(=qC&WUbSAkNvvCC{iQB8b@9&i zz?rFMbvVb{=gVDh2&Ug9I0boWNpvmyRMuyw_&*|T>KuOy@=>rjIQjk&_k~wc6di8T zkv=?{Q)ut&0;Q}KHcJ&uvuIxuCzxnP;4_c33r{uNY>Cvs*hXF~b017t3I;enyFw$ znj|!O7-3uVi%O5kl-5FP%R@k!7<~8b2si`` zc-(sYj4`CjNqE&dNHQ?*(b#~@#hNZKkS@Mp%Rbg3yA#-vIV<#uhJ^KDd~-$*gn$|c zSEKeN_IH8GcjgS{>+$5$oSi@R_4o7(Yq!s=lG6iGY{hc?NT2ma1+fj!_Ya*Dy65IVx_X_)hwya^k(T{3O)5f5a z?i=*Tx8vD2VI1R0@1Mfq4XluhaRoD(egd=nJs|jQgs*|e0i7_?`>Ch4wWk&QM5D!^ zD8`9y|L8mCA|wl>RO*9*Ok}3C2*DX~S@wlz*4k8(lTgApdOmbxqTc6C)AAf)F-8J| zYKjuWmIi9@M9CSLB^QY;^iGXYJ-eg_w|u&q@`RWEg>AUTRYX)4F^Dov)y%y}UuL)Y z)=8V#|K(;N$(a9~yc_n7JY~==kI`fES=(B2mu#u`R{f4;&}=zD_Fnsr`-BDdy?!|q z9Jx5Ez^KJ7T1Nk!UiICUeT3nyE6$SE?U~lmU{1U*&QbGb*i%R0z1Od$2{b0xF)Qz=s6j9*n9D8dC6kH%9Q;?K{=f5DsDwKyG zq5Puxiw?|EuV8zXTd!L`Xd=Xd7UrtZmefhuCg%)fy(246SGdGaeVEO-n8=1&<^4Vo z^74sNaWCVnHYO7d8uxReObgi~hF#2b4_%^chJ$uY4adWUR__MQ^<&bh0li{xjl4v> zhaB;g<(@zrXhf`=x*lpz5c3I26q5|vxTJYP{ELiTaVK@w)b_k(1vZ%~6mKh%SIxe6 zYCVl5dPAFF8(?zeQdTo8>VAc>iXAvnuZ4{q+mh0svoX zhmMM8o4xAMJdDr{L-$Qsuk;zsqd=f113y2obQ+%G=D#DbnLpf~=NlnowX{^we63M#9Y0_H5r5OmtO( zIaV#;uzoj`rFN|G*g%pYiNB{Xvp`@16ghlxF%_)gOYt*xN zZ!2QZ3H;;A(9hS3CRK^MOJ(Ow8tHk#E~79Ev3|i2CTPjI+fMwW{9Gr`&jy&8+^NA< zIXK#O`=70-$Vy*Kx6lh7g*9t3vs4i_>yvJqUm+Ga;5S;bJzHa_{wJ8;VCx50oJYY9 zU?B`HPMnaTeV(Skv0{k28YvYw&2&C=sF9A8iH`JsX=JLtn%SQAxsPe;$^-e^8WWOk zWS9Du#S->Tdi>9fRQhOtlj-UN5%bXp-ftedMQK>j7V1sjP8_w*FNaz2HB4^L+VbDIDz%C`g`3M?27Zls2F_0vlOBHe#=E2fyL zj)Bu$(<;~c_b^9hN4CSRFN_7hvCS5h6py8U>J^Rm(}<-X-m}x4zDe}r&{)U+1jaNY zxJ0_U1nLy`wp}@RHGf?z$RL$Q6yMMu2%h)i^+s*JqJd+YL=>YuwWeJ-uS$ZRzuqO@ zg1-+W?Azqk@58h8PCj|wdUw>z^oTb{l4v`*NS$KzKnvZj9u4K#lP5W1OaZQ!t(65i z9Kq(G0R_Fd|LIm((8d9N3Vuy_HVsgsZ|=*~L8u0D0_k=f;Hh&?4}!{=jyjBNu@;C1 zs1cr1_{L>X<)Mf5bDkBpksF0Vt3FD~2A+|UdZ@&Zy{6xhw9fI^2jM9xKI~Eptyz_x z%pPHxKPowZ8IV~Q>I@7*P81IimYyA|0P|yJ3dcqrdtxMty!1MI{is~dkRFrA{Semi ziSsHLKhmGyX}?}u8gG7M>#ZtU!CHHbNNpQOR0{Kz7Md0h6Sn+r6nTo@)(9Gpy=rF4 zHymJCpeZ<-%AKZ6b9(gI+4FpAdsPuGH~%MAd0=VUK@vAf)p3N5e=R4tU(Dhw))D`G zragU^ZXoTvt=V@a>an;)Te0Yb1J_R=H)~SQh#tZForXDgb$3avH5o+tdNaY=f%Q=r zrnSDci5o<+|JR_mntsh=TNTsjP-W7Tfn-u$a`HEV|qnI>^= zL380(&X`qA&RR@lXW=ZX?LAjKAQlXX*7*Klu6YufxuRcIewVN;9<%D!|9v~p);>ng zGOx~Mu%Ze*hrusmO98?7TnKZPK>Z!?ch`SWi8fR^;d4 zwY|x*{d;3zHP2$<>8YWcYY|0(rNwFAI2m0;D%hf4u|F-sdeqYlWj^!SY}qQGYWFT% zd>$q-tNrBjEZg>2Y@wiaW2^{A#M;MI!w5OJS9%ry|2+HvLX-x)z#E0i zOVrR7f9>h}T@NQ#bo#S|Y0qYT692j0x0s*McZ#4)7V{0%bOps~tm> z*ROC`cUw=l;2hU+qxMXiuNSVOE@{q462Lpp-BLSxXX~}umzlw&h4`62nK-47sux#= z7#GYrSEXp_80Unx7ucen)c^dzQazV}dwmShQ+nH~Rs@L*`mfv-UMg(X+7nPr2hojYgw1db zVK$$;v*cQ-2NM%)_`g$Uj8j)ZS~?r_VasPLOE7u9w}UcFCKbx}Zbk^Gia!syQU2y(;u z_U+n5A94_19p$UZP5yD0_yx#n1V;mUx={5~)&9Nr=n_fn#c5+% z$J42fax3d^47Uh1f&Gbu(d{(MkofFerlEy7MV-OaDNjnU{VoobDBeq0QI*#G2!5t^ zoRfib&r_*U&Xb2_yekC_17D|wj`+y7a^4ge<5OsWYW{ig&}$?ju>D^V0TJVYn7+Dr zoY`x}8}jC-m7&`_@F3|IPB1JSD>E`cmRtINEw`WQ#DaqF35z0D8$U!83b0;nx%QP^ zxlDID%${@o+?_e1^J*~3awW|B^W5kplt??H&o7FwVH_2|c{^SD$^ERt>aoA+tJJrg z2kNpypbIz>FzcZ^G#Retd~aVa`~#*v;hpCPpFx*Z69w%Lpsml{I`aa({Zue{b+rBk zI-09y482!;W`g z4C5`E%oDJ|??LT&1)ga zTxg#eHQQDtQGHEBVVz`hTq|JX{p=E!?JbpNXJugSwr?i<{-g$m@aB5a2cH5n`y-R`FmE3%07cJZkJ>NX7)6vXR!z>(YUjm)r-zvT0WdA zK;JVLjI^inN}Ri2|DX~)vCh(esY1b1^Im|9<9A;LK;ZsA9hay=sG&`s!3>8clKF=`2 zGB=!^+kQMfxyIQxJ31Lf-y@vYEZcgq-unhVp$>bec^g50f*V-Ud)n;C%4TWwt^)l@ z^=lQc!71MyrhRTdW3ez2LYKY@8g3;Zf^kfElc8W_EY~-~Yl}gLP zW-mh;ICVm}{y4O%Hg-dc>3_HkKnXnevJ_Y)hA*7jWXB=W+yi~=bh;s{>USeDtoE!QTx|`90ab@`H z^tZJXMP_h~1wl){d28mkR$uIbfC|WfvG^Pf6}II;!SNjWeeCH^b! zi^``685~Jwoc>5>V10!W`F6KuQn&cBhX5C3p?aS%zsA?Rbs(!U?@ZsaQHd6#2o!2wIDnqU-ymXXyXT0hM&TF;9AkBZ9 zFq3^oulI4icEAU}D-JEI=ctupM@v#p4^@KKwbK}JZF|&rmLNc^i(!Shba+jZ1VnUrn;pTihH+b>2Ktg2Tlb?qO=aI-bp@#;wo^E z7Du1G1PA0*d!71&u{e?ka4iuMkzERs5rZ_XxB?oO)M2txA{sGg9{UAY47>NZFrp!Z zE&ni{?dLW0$aP}+x-!&-akK+U&TF5Izt&U-I4Z`Qpc0qBkJl6f z5aEC?0J<3W6Ex9XBkGkI_sP`DTiLhLu`Aw6Y{^jf%yVtIyO=&JwNT!h1~Vib3myRP zFy_EwND>fGo)k;#qqU{r!G^NEo0(UG(|&O6DA+VO0)?Ya00d`9lIJqJ@dsj8w~cHj z=QU#XZI{mY194HXDf?HPDdtn=aO!Bl41eIBQSZ8{jx=~ zZPn^0ep1XxKrQq5&RW7N{-bn>(6P|wNn~nfpBZEKC}ZJiQrXpxs>ZNl1!;(o7DKNBl==_LoRjc&H}pUc0x4tKXpW9N`YYo#+X}8@i3L zOy(62m))N{E(?<-G8w!qDucZo>0}wC7At?71`g~dla~OyT$%tgGDG09iE&%6pORBXOKL_ zupl%v;*k61y$J{}>cP-%9v+D?l2fNCXop5Z@^nne<2jsjeQwWSFyL=q$c#@=hgi5N zgHxxzCw-lfOS6rseDycOj4FtP!@mHL=V65gM!Zq`u<`TRa$C0ykGHK^pFelTtgQa- z9AAxFKI>gQQ@uvXVSTrcIBu>ybYZh=`!elzg2wvig6}Tv*==n%RBC4;8vSG7bWPcY zcLkgw?f+#Oeva;dXtWCf`tJK8``4(LX~7KV#s9@kBVWm;4cuZjpJqOSmMHX(`-R|y z`vDIk%;sXmNic2VH7#}9OlXpcZ%lqHE`i=&WZAKB!C6v!6%5lu7wgDrF-7qjp)5=b z>zreGADkj8{p2gP8#6HNH$_~HNssabhSMe=zc$XrDg621?V~npc5Ozo7#vAN|9FY| z{*s=!J9O&jVnEb2dh;|8oB7qw1_N$HuPzL2|I0_=Iwo(0?rwoD;I3bu)zBYn5J3D; zf!A5xK}FBP8l+U0kDN6&WlgJ!JA>+KW?-j<8$gIO%!)j9X)>stSuaxW6U+MFlCw*H z+nP?zhbCPwiUmRrObon)48R8gdZB#w#@#VoQcnIP&-VqMtyY0m znda4@dPGkFIF3q7Z@akJ_1+`PBu#L_?MV&)KWxy?4Uk48@8&_(H}3|Dy0;R%F=J@O zG;Ow+xaGj{@j}A^tVx95dqCB53nGXs_l2*Ns^be{=3BO5n;S^?LCB}T`sJWtZE+W` z+hAIJ9G&_(!Ho*S&_@5~2e$LdKR}q2;N2 z+Ww4s#m;Pw(7w&YrppaExF0?ov4`*`l@{NbTCGQ%BjhdOW3Y7t4;B^DTsBsVj4cdH4=;e>{uZ{Z^hgf@RwaK*JH z^}=!V*^(#=pxmSbOLPPT!>iC(OV5!US0`FU8;RFzF#av#fDj>9?OdDQ@{G zL0-3EuFgldAccuaN7dM8v9WIedz)hCBM_jnd5~J^!5OrjS)RN3E6hnGadMgS7})w0 z$_IGI4~}-!SK)i9RTS3(ti?ZcaY;2EH%J{d2TujvGzh4n({Wah@&Q{hpB zpl@yCjOknSh)UdDuVoSH8k^Q>n2S8{+Dj3i<%CSGrFfr3y4|kP$(0wweXZ~F^}+yp z;*rkZ3=bZ{QxNO(HGc$4e(oGT)hlz6T_}0&6&h@&JPQb!ku>!DKNz?^(TgvG9K2>j zb85q&;+}|*bewYvn`mi{SfH47GmA}A`Ow!rKG*x+cS}p~LsK`BDfQi|R28zxesLtK!81&@Q!8!%G5?`-z~O`8pmy^( zUvdaGWF0~dIs9qeOA$RXYXs&&8^MOI;-l-s4$CN5>b}I4zjlvZTO)na^3cy$XGV!k z0H}J z9JEM?JEI{@Lk)Vo>`lxO7Z}~mS`54}7M~KL#qvE{<+_-{7^3aK!cELyF%>uYgN{8k zw824-$i{s#0@u!R#~?=sTq>D7+hOOK9$2^p*IxzKpZ1v7pOZG+x8}Cp=}|pm&Cpu_ z1^vOl0cI=JdRJCM%7G7Dt&>Po##9D8kOLyi*&C2ewK^Dj8rblS?%G8!h@iehhCyq5 zLF3zx>@*T*xG7cMu6WMi%O`g2V)RG20N!ckKzU1LiS~HO9_NnXq6~R;JP_XZhO(Y- zaQ8!n_jxy5+TlAPW*mQM)o-rg46>hwb3Fjkd_(~81{ zF_=5aMPoS(A`3o*fd$hcX(lkygn4a<(F|ahKU~g!IB<_3f}o~- zclg?n*Vn%m+~I4d6lCnO5x=wx7h`AD!K+7;#qO_c@bWPTwO8Duvgh@1Qo>mRJp|@> z^_2mcw@c5!$JSOM1HAOs6J}h7Ye%r5Mr-jk@*`NnRwtCHq|{vuS259b&6Q%%*yFNZ zkI#%0Yl&`m{>6HqX;6ftx$SA;?W>6$mk+kCR;BXWfnHc(weDgR3f=-k!T=l`B_y0lRV6*Mz7 z_59-IGx6Tu&54&Sip1asSAJ(+wL>ln)#o^22F2JnoMa(1yUF%NxVcNZ#GR}{oKuK~ z4DAVS*00-2@wD5li4#6gpV(|O-z0e-dGmJl#ST!$+%nN4w{=BSYbd>*d4x@l;@&Hi z)jg!luLZ;Q;2kNGf~f8PCCFrUsD*|4gc$`1i%iP$E&T}e$nwP!&dW+bkG8bkX6|U} ziG(B7XC89?x;xGhl`3y)fP6`B-j9r8fo06Kd+A4OM1RkSHp5yi5^mkN)EaL3&lJsi z?1ZA}nvL6kx}dOSkMByYvXeD3*~m%@y@d$vMChc@MYHJR=^9a}7%!iV0TNz8?ZeG3 zSvN2+Vln*+!L@scyF$N_x(GRFWv%77bUPtJ23m?~MAJfz3~=84R8DcBSZyK%&PP7H zjph^|-o@gn_T~ujQ9}J$VZ^ZC70D9pV$)ibfbcZZ@+}8Px{07ydjmHc4-b%8EzDF<_Xe0T>8wv3bq2K-%N;=J1urQ;HW;c-xF_(mK2wz>`w`6(yy z!E-|E0@-OlPQL3bKg#RKAM~-AtBCHi;qJszh^aW4<^kKNe-3^;#zPbj}I=aD?rY9Bk;ZCrqD(9iLf)H>Cas>6~5rWvEL~_(Zt#HEvtvd6&`(JG&X z%jIXB4YXm-=7A;9-+*mTOGcE2{Cx9Wu(~$7_Nd$j^fA5c~UZz?GjlzZArBOQH>Yc`5FfiM`B4DQ}rn`X8 zzYa$b5gBzl4o(xkq6xqJ*ddG7-Y3oE>|#?Z!TVXKq0GN`Q*p3-ptNvOod^~VZ@ooQ zY|K}Ar!%&UTjSK~ug^%HK?QAExc;A}t~?&f{ExS?o2AlFXkD35iKax65n;4Uj*uKl z$SRWtxzDmI<35VfG|oc8$SpKVu1q-QVx^^PhP!uX*NqzMu1b z#Ozzs$)cI;5+pw28?Z*PI#;VF!nc_%J&U_aUNypDdnZCu8-Fx5^!WNN>o4@xVf_b6 zs=64*R1lI&>owFA{WBx%?Ve5Hz?U7Z-~Qz2Vj-$T068q|L-gxHHjluAsb10=e{}6j1YiN<(1j|IZSTPD_i$~+ zd3c+DBop1O6aY;9TYH{pE+?Z+eDFeaz{H|yXb22!)6mzt!ZXO_SSbh-g+$Bb3=M5g4Qi1qJ}4k*h%=sW}o z$cFRYAj_a(z~d6KhK}mJ$&0;0c=dA+I2~$*yQ#p(nFi(rR_Fe#YVKQ704AH?XBdBB zGetS~%Er(+2sLC9khFn6(mB~rq1%B_ue|x;Huqc$@RwXyKZ^Sicgv-DMREA)4u^OF z#!4PBq`R@%sGe9zO7z8jY9KuiKpx&il|TQ`L(A~9Qko#R%B$|SV#xy?f8d8I3qXl4 z?EqH4d!2)9)H+O=%rKZ0vqa}XNJAG3$M2JqtrZ@gib4^N1$Cc#4n+wiTR#Y(J4c+< z!oB=BvbSu4FV(#1NF(qr(ra)AQFR~ZaHoowUil?So@$M;M9GdBzX(L#nu4TM9 zZ~ijC3LFy4luM$RgM+4~u_FLaVN~TQ2`nNUVt*nUy{It}-Wefq1_ji&AAtp#+Bm6- ztco+8X5w}KeL8-Vf zEJf$jgFqUjFj%){=?=;NWn$I;@G$Mtw=Nr82=)vg<<8te8F4Rvnf{$GcejNW(Gs9< z{LhNs()zj_z>1daS5t0`Z~W<$N59N?yq{~Z^$Ml&3eSno#ByuD+e#*mcUdI323BSr zM6p`A_1}#-B|)L7tQ6s^pBN=rW)}SiAR54<1!Uo|jddScu{t}Zb9PM~Zy0ZhfBs{D z)ySo1v3*}lX16abggUHfH=i&8Y@1`n1{DHn6B{G|us%v}iV# z;(-Z^CLLH#sR6|mv*~h4RrW&W`HxqcT{3@lT z=orD`c{M#ZK%Q#hM>cyqcKq>0NJ?qAFGIxmt|b{0Nt$UH^y&;}(}bBp9KS7{RzT%7 zIPTx#xT5_Koq3cu^d3sq0A)V;VLeD1Ivq=G$k2&?WYStt!O8+&D&48hYq<%UObzIr zIqQ!|=NIbdFn4R=?&?3$(>KkR5rhtNAUO@qS@10ueR}N;Xx~_0M{?pGfBrM&t|%oH z+xu3J)mrRMX4}M6@mG2TIs%@Z=>s)PCq8Y`PL@Z`1@?%@%qh*UM9_v^_Ku1WJLq0j zaA4eu4kV?YEQc)dy8k(^jx}9btMs)i=yE+)>n!XXBiqx2{j_iYGZP)@oB% zP3tb1@Wi_Pny+YCvOmWSfrNg?1Ktk3LPn<@Z!P%qOW|In`3!Y!e_ZY4l<&E57gS*7 z%y_}Lqdl2Bsp!&tqhODeEOaIi1iQ}v1qJ+oJX1&t1Py`x?%K;{ADTj@xBUQ4lcxui zorZE3(BOywvQe{aEJ!;?n)p{s#-QKR zqwjDLX`2l@j-6BHn_=G;lTwYdzizaJEr-yb*%S0K$03_G zvcvD_iR*!bBR=|*KuzvCN(fR$o1kTu4cez63CHca^@3C@_U_RErgyAH`2&JrQ2%^Y z@fWsrZ}*L6mD9$!=RL%$F}1sbdH1;-cHOp+V&&(mt@g}!7k2;`x-y7v+pAwuN6-=q z*%kVF-?1FQZC9V{^zvY6v|^%t4{=vwma0wfZ8FUf3AhN>-g3jt zN%hjv_)RVl6@^bjrTV;yFM9C|s)khUJ8**jn)LxBmp?Q?TQA&B$H?ddL{U0^y~WLAtf7jl z>2r`SKRz9Kn;4uY>P3*N^d!%%C}CFmQViY4-ga~G=aAc%C>{=tMJgeEjCmv^)PY>l zHbV_L3Ea?Dv-il%a1D}x5bnaC2?m_OLcg@F1I}?wmE5A#8HGBwkm$i`j`8Qq3XU_< zSz`EcJhe)EC)C$#{o-ZYMsrCEd4FxLu>g-%{ISn@3X<chXW6X_p)AaI>?VnH@28^jr1EA?>|Oo3ib4no>XPd z`#RiSZVz*vkijktt0=KCxxye zZ?5ak9|Wj(fv`Qr5)<9iX-(1;SBF^5w2#8c%DSb8~xl)8!nv*Nd(YDh3`Nb|lV z-S|fpOPx?RziBj9_M0WtX;<(Z;1s?8#5j~L?Kp49mGXk1)(}22nKBu)x4*~lt>+fg z$le0CQBs!rcg^8K+2_WD#v*6gU^?B%rw|B6nLLm&*dYXIl2LTLiyg5&TOpa1;$$?8 z{1vbMHltA5=NRub2?B!NpW= z*rM>u<61mR0G{n40z#6@Xe&XTag6K;%I@B&Txer!6bj^h0-Y{cojPusa2{{!nz46l zNPeBV_FbE(H1b$mw{5q6+ns*qtdRBiME>{IM8}V{YK)8nbolnahHG#$JT7b(~9MFaIQuFnqD81xcHpoB^PT2oMDk9Q4i2U&Apw71!O||&2mk+ zz!bS1@sP2UK5TveM4V5oM>58|huHA?xQ*QMn@io|173p&i%NW((w4>~JJkC3z)`Kc zRT+kAr)&i-Nyn^)Sc(ZsslXl7g#B%1g)cgxWO9qkh89k4vZxxa(P+~*e#$sf z((0-=qZR`L=R%mlf7LbP1kw$p?rc}EcHt+)-7sFwPY*k4SZZsN4cbSvLN}xFLoktNJZls9q-|KxNI(M7s#ltj%Oc zysQKjsI3!u3zVQ|2c%^avS3W}HzK%1Q9b!%r$)pffgzh}^@38t`N*U&1v%kDM){JQ zZsV&iMTNLWn8xJ48u+hi7)suvjo!A`{_fwQ_o#R*wB)#JPE!xW)Fe^97bCGcR+{%p zS8SG-b8-iLYR;LebQ8VH4K-c9GT^!yQ_)Gu5T~+R%HjVEz+?f`CB$xBLMJ5X7PI|c z2L@o;d&X@T}2d(a2xNtsPaL5MO$~i&cQ;j#b_#SaO{o7*^y#6FTVo< zGr-tK=t}*hEa)lnQJY*yvy#F|HkUyx7GRf)8q_3Y?K&PT2J%*+U5Tr3U;)Kn5*@H) zISOVGaKAQsWhAfv`^zlSP_3s|oc_Pp;Dc`bLHc37b)9@#VVJ$i4eTcPF~XS|(DW`v F{0D9>(A59{ diff --git a/lib/gameset.lua b/lib/gameset.lua index 5af8aca36..33d1cec58 100644 --- a/lib/gameset.lua +++ b/lib/gameset.lua @@ -35,10 +35,20 @@ G.FUNCS.cry_intro_part = function(_part) local step = 1 G.SETTINGS.paused = true if _part == 'start' then - G.gateway = Card(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, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) + G.gateway = Card(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.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) G.gateway.states.visible = false - G.yawetag = Card(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, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) + 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 = Card(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.P_CARDS.empty, G.P_CENTERS.j_joker, {bypass_discovery_center = true}) 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}}, @@ -61,11 +71,54 @@ G.FUNCS.cry_intro_part = function(_part) G.gateway.states.visible = true G.gateway.children.center.atlas = G.ASSET_ATLAS['cry_atlasnotjokers'] G.gateway.children.center:set_sprite_pos({x = 2, y = 0}) - G.gateway:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = -2, y = -3}} + G.gateway:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = -2.5, y = -3}} G.yawetag.states.visible = true G.yawetag.children.center.atlas = G.ASSET_ATLAS['cry_atlasnotjokers'] - G.yawetag.children.center:set_sprite_pos({x = 2, y = 0}) - G.yawetag:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = 2, y = -3}} + G.yawetag.children.center:set_sprite_pos({x = 6, y = 5}) + 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 + }, + }) + G.modestBtn = UIBox{ + definition = create_UIBox_character_button({button = "Modest", func = "cry_modest", colour = G.C.GREEN, maxw = 3}), + config = {major = G.ROOM_ATTACH, type = 'cm', offset = {x = -3, y = 2}} + } + G.mainlineBtn = UIBox{ + definition = create_UIBox_character_button({button = "Mainline", func = "cry_mainline", colour = G.C.RED, maxw = 3}), + config = {major = G.ROOM_ATTACH, type = 'cm', offset = {x = 0, y = 2}} + } + G.madnessBtn = UIBox{ + definition = create_UIBox_character_button({button = "Madness", func = "cry_madness", colour = G.C.CRY_EXOTIC, maxw = 3}), + config = {major = G.ROOM_ATTACH, type = 'cm', offset = {x = 3, y = 2}} + } + G.modestBtn.states.visible = false + G.mainlineBtn.states.visible = false + G.madnessBtn.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.modestBtn, + G.mainlineBtn, + G.madnessBtn, + }, + on_start = function() + G.modestBtn.states.visible = true + G.mainlineBtn.states.visible = true + G.madnessBtn.states.visible = true + G.gateway:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = -4.8, y = 1.8}} + G.yawetag:set_alignment{major = G.ROOM_ATTACH, type = 'cm', offset = {x = 4.8, y = 1.8}} end }) end diff --git a/localization/en-us.lua b/localization/en-us.lua index 38e4d8741..e4bcc2060 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -3491,7 +3491,8 @@ return { cry_intro_1 = { "Hello, I'm {C:attention}Jolly Joker{}!", "Welcome to {C:cry_exotic,E:1}Cryptid{}!", - "{s:0.8}Note: You are currently playing an early version of the refactor. Expect issues!" + "{s:0.8}Note: You are currently playing an early version", + "{s:0.8}of the refactor. Expect issues!" }, cry_intro_2 = { "It looks like you've never", @@ -3501,6 +3502,17 @@ return { cry_intro_3 = { "*grows hands*" }, + cry_intro_4 = { + "It's hard to quickly describe this mod, and", + "the many ways you can enjoy it.", + "Just know that this isn't the same Joker Poker", + "that your grandparents showed you!" + }, + cry_intro_5 = { + "You can see I like the letter M", + "by what I named these {C:cry_ascendant}gamesets{}!", + "Let me describe them one-by-one..." + }, }, poker_hands = { ['cry_Bulwark'] = "Bulwark", From de666bbaac06236ac3b9f794a37153350918055b Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Sat, 23 Nov 2024 00:03:37 -0500 Subject: [PATCH 010/313] sync with main --- lib/misc.lua | 13 +++++++++++++ lib/overrides.lua | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/misc.lua b/lib/misc.lua index 4eccb7458..85943bfdc 100644 --- a/lib/misc.lua +++ b/lib/misc.lua @@ -255,4 +255,17 @@ if true then --Cryptid.enabled["Menu"] then }}}) return ret end +end +function Cryptid.get_food(seed) + local food_keys = {} + for k, v in pairs(Cryptid.food) do + if v.unlocked and not G.GAME.banned_keys[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 \ No newline at end of file diff --git a/lib/overrides.lua b/lib/overrides.lua index b682deb3d..5cc0c9b55 100644 --- a/lib/overrides.lua +++ b/lib/overrides.lua @@ -194,7 +194,7 @@ function create_card(_type, area, legendary, _rarity, skip_materialize, soulable forced_key = "j_cry_rnjoker" end local function aeqviable(center) - return not center_no(center, "doe") + 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 From b9951a622be6216ca1d2b570e0a364415b2aaec2 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Sat, 23 Nov 2024 00:12:04 -0500 Subject: [PATCH 011/313] why did this file just break --- Cryptid.lua | 3254 +-------------------------------------------------- 1 file changed, 31 insertions(+), 3223 deletions(-) diff --git a/Cryptid.lua b/Cryptid.lua index 7c4aed670..ed579f35e 100644 --- a/Cryptid.lua +++ b/Cryptid.lua @@ -6,3238 +6,46 @@ --- MOD_DESCRIPTION: Adds unbalanced ideas to Balatro. --- BADGE_COLOUR: 708b91 --- DEPENDENCIES: [Talisman>=2.0.0-beta8, Steamodded>=1.0.0~ALPHA-1103a] ---- VERSION: 0.5.2~1115a +--- VERSION: 0.5.2-REFACTOR~1121a --- PRIORITY: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 ---------------------------------------------- ------------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_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('571d91'), - 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("e91ff0"), -} - -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" - }, - 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 - --- 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, unbalanced, pool) - -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating - excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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 - for k, v in pairs(excluded_flags) do - if not center_no(selection, v, key, true) then - passes = passes + 1 - end - end - -- use it if it's valid or we've run out of attempts - if passes >= #excluded_flags or tries <= 0 then - return selection - 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 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 = 5624 - end -end --- 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 = 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 - - --[[ - 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 - -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 - 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 not item.order then - item.order = 0 - end - if curr_obj.order then - item.order = item.order + curr_obj.order - end - if SMODS[item.object_type] then - if not Cryptid.obj_buffer[item.object_type] then - Cryptid.obj_buffer[item.object_type] = {} - 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 - end - end - end -end -for set, objs in pairs(Cryptid.obj_buffer) do - table.sort(objs, function(a, b) - return a.order < b.order - end) - for i = 1, #objs do - if objs[i].post_process and type(objs[i].post_process) == "function" then - objs[i]:post_process() - end - SMODS[set](objs[i]) - end -end -local cryptidTabs = function() return { - { - label = localize("cry_set_features"), - chosen = true, - tab_definition_function = function() - cry_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, - }), - }, - }, - }, - }, - } - 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() - 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})}}, - }, - }, - } - 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 } }, - }) -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 - -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 not forced_key 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 - - 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 - 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 - 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 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 == "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 == "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) - --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, "immune_to_chemach", true) and 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) - 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 - ---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 v.unlocked and not G.GAME.banned_keys[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 -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.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---------------------- + 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 + +-- A list of content sets. These can be toggled individually to determine what types of content are enabled. +-- Consider it like the old file system, but with more flexibility. +Cryptid.CONTENT_SETS = { + M = "m", + DAGGER = "dagger", + ULTRAVIOLENCE = "ultraviolence", + MUSHROOM_KINGDOM = "mushroom_kingdom", + CODE = "code", + FOOD = "food", + CELESTIALS = "celestials", + D20 = "d20", +} \ No newline at end of file From 2f35013b8c4812d481bf70cbbf47aa5604ff4666 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Sat, 23 Nov 2024 00:32:12 -0500 Subject: [PATCH 012/313] gameset sprites --- assets/1x/cry_gameset.png | Bin 0 -> 1835 bytes assets/2x/cry_gameset.png | Bin 0 -> 2225 bytes lib/content.lua | 6 ++++++ lib/gameset.lua | 33 ++++++++++++++++++++++++++++----- 4 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 assets/1x/cry_gameset.png create mode 100644 assets/2x/cry_gameset.png diff --git a/assets/1x/cry_gameset.png b/assets/1x/cry_gameset.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b37c4cf7a9329fab8915d2b429324f1471b0ac GIT binary patch literal 1835 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 Date: Sun, 24 Nov 2024 22:34:04 -0500 Subject: [PATCH 013/313] manual merges --- Cryptid.lua | 3254 +------------------------------------------ lib/misc.lua | 2 +- lib/misprintize.lua | 2 +- 3 files changed, 33 insertions(+), 3225 deletions(-) diff --git a/Cryptid.lua b/Cryptid.lua index be2dd0eac..ed579f35e 100644 --- a/Cryptid.lua +++ b/Cryptid.lua @@ -6,3238 +6,46 @@ --- MOD_DESCRIPTION: Adds unbalanced ideas to Balatro. --- BADGE_COLOUR: 708b91 --- DEPENDENCIES: [Talisman>=2.0.0-beta8, Steamodded>=1.0.0~ALPHA-1103a] ---- VERSION: 0.5.2~1115a +--- VERSION: 0.5.2-REFACTOR~1121a --- PRIORITY: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 ---------------------------------------------- ------------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_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('571d91'), - 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("e91ff0"), -} - -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" - }, - 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 - --- 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, unbalanced, pool) - -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating - excluded_flags = excluded_flags or unbalanced and { "no_doe", "no_grc" } 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 - for k, v in pairs(excluded_flags) do - if not center_no(selection, v, key, true) then - passes = passes + 1 - end - end - -- use it if it's valid or we've run out of attempts - if passes >= #excluded_flags or tries <= 0 then - return selection - 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 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 = 5624 - end -end --- 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 = 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 - - --[[ - 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 - -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 - 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 not item.order then - item.order = 0 - end - if curr_obj.order then - item.order = item.order + curr_obj.order - end - if SMODS[item.object_type] then - if not Cryptid.obj_buffer[item.object_type] then - Cryptid.obj_buffer[item.object_type] = {} - 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 - end - end - end -end -for set, objs in pairs(Cryptid.obj_buffer) do - table.sort(objs, function(a, b) - return a.order < b.order - end) - for i = 1, #objs do - if objs[i].post_process and type(objs[i].post_process) == "function" then - objs[i]:post_process() - end - SMODS[set](objs[i]) - end -end -local cryptidTabs = function() return { - { - label = localize("cry_set_features"), - chosen = true, - tab_definition_function = function() - cry_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, - }), - }, - }, - }, - }, - } - 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() - 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})}}, - }, - }, - } - 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 } }, - }) -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 - -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 not forced_key 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 - - 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 - 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 card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 1 - 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 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 == "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 == "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) - --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, "immune_to_chemach", true) and 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) - 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 - ---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] 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 -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.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---------------------- + 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 + +-- A list of content sets. These can be toggled individually to determine what types of content are enabled. +-- Consider it like the old file system, but with more flexibility. +Cryptid.CONTENT_SETS = { + M = "m", + DAGGER = "dagger", + ULTRAVIOLENCE = "ultraviolence", + MUSHROOM_KINGDOM = "mushroom_kingdom", + CODE = "code", + FOOD = "food", + CELESTIALS = "celestials", + D20 = "d20", +} \ No newline at end of file diff --git a/lib/misc.lua b/lib/misc.lua index 85943bfdc..c419c667c 100644 --- a/lib/misc.lua +++ b/lib/misc.lua @@ -259,7 +259,7 @@ end function Cryptid.get_food(seed) local food_keys = {} for k, v in pairs(Cryptid.food) do - if v.unlocked and not G.GAME.banned_keys[v] then + if G.GAME.banned_keys[v] then table.insert(food_keys, v) end end diff --git a/lib/misprintize.lua b/lib/misprintize.lua index c6ad257c1..faba9f4ee 100644 --- a/lib/misprintize.lua +++ b/lib/misprintize.lua @@ -113,7 +113,7 @@ function cry_misprintize(card, override, force_reset, stack) (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, "immune_to_chemach", true) and not Card.no(card, "immutable", true)) + or not Card.no(card, "immutable", true) then if card.ability.name == "Ace Aequilibrium" then return From 8975f39e26ae6cc79dcd9b18a2339f5b4a5ec139 Mon Sep 17 00:00:00 2001 From: MathIsFun0 <89877664+MathIsFun0@users.noreply.github.com> Date: Sun, 24 Nov 2024 23:58:00 -0500 Subject: [PATCH 014/313] main menu music, gameset menu polish --- assets/sounds/music_theme.ogg | Bin 0 -> 2137439 bytes lib/content.lua | 10 +++++ lib/gameset.lua | 77 ++++++++++++++++++---------------- localization/en-us.lua | 2 +- 4 files changed, 53 insertions(+), 36 deletions(-) create mode 100644 assets/sounds/music_theme.ogg diff --git a/assets/sounds/music_theme.ogg b/assets/sounds/music_theme.ogg new file mode 100644 index 0000000000000000000000000000000000000000..99657fd05fa89736737d534254f8f9cd0b23b319 GIT binary patch literal 2137439 zcmeFZdsI``)(5)w&Q3@|z$63+2)YRY0)h>Q2&goPK>~t?kRXDO@KQiPRG<`Xy9p0N zKnw_o_-F_Z1A+xBYSr3^Xtln0Dr&WgZ3VSfTieOSV16IyV%-)cfxFL0MYW4;@n9fhl zPT90&U3$vm1mT+hTsSOA%}(BwlDcIv>@ykm={wJVx>GzeJ?Y*1Fkzjn#0=OtX-i^u z%Hk-0F+O8DFFhOP<)?1h3g2n5a2Cu;-jtOCUoj~&^9 zb!lGqx@qbrW+vrjEnc$a!<^jo6dKG(Nz8pmVH=p3{;Ew|A%*^Dqulh|%+!B3Ldfrk z*jgn^9W9|B)Hm4pVx zF=5^WUNS>+vaz@`2v+9Lm&uDMK@(0Tecl3{reAo{t^}JesMLHfyfjj5DbY3-htGfQ zSh7J}VE3*MzF4L&rid?bOO}e^8&HBya!Rgipu0>Y$y{v}6s>bc@^<#O5_m!h>FTc0V zWdO*d8KIjw7H`|706;Ya>RRJ;t!cW)+A3;EStkkz05I5%|B{$RVYSj5O4Y67S$F^2 zl~AAR@U}UmA#*5weLF=fBsoytjstuRf~6Do6aOYM!Huvs(z=4a+yBV0%DOS4C&+of ztoOs3eY!7#9`E0J{qm3deXqlqasMhtBdqs$f4^ZB{awtX=fiQnOJw-HB4*jn#BV*RLyyz&rK}`Jze({Q6GEC}@qWpZ!HKk%+F+_%-DX9E z$2)?fKty#Z9MWDwaY)fePd_v?GZ7P^<|9Xavo zp#fmUFHVCj=l{B1I^AHoMYG}MGwe5iI3`q;mwKx{Z`Fy962?l`{PEE}c)iX`jH^#w z^*^q6pANY!4k!D&5AnRn-Fh`>f?v!0_h-TZ1v#9sxAQIhD1X@y|JsoEieLR#*es6b zgbw?w25r|wFUX1xNFAQPCMIBwDmH6neOAKpyt{i+@BZ=8cmM5LWAXMA*#HFBxO&#` zJZl~WR`J6{X_vf!h%&t*b>o7nM}al`@EW)DnhhV;oAx$N?mg($@wN(JPFI-@y0!vc zdx6eWP&J{gN!wd*YHytLP200mN1p!QU6yYrI3Ivqe%Ka%n1UawfRVSLo!40thGnxwW0UKH@>CZ-nEW9YNMIk+WE;k@l~Ie z0Z;d?n@UM3r==m;%T{5nfP+^Gn2pGT94FCHZ+N|>3;=q6tARx`y8Wl+#dP3Dk-S%s z{BMxnCI44<(U8CB*G2I9*Hd6eFBY+0NT<2{bnw1G@*gBEiiX_de;xkMeRadWq^yBO z|E(|B(W1fsH@@qC{j&f61OC5G0SL*M58zMj!f`yx16mu9BV+SvHP|(htezZI+;+|% zsYw+N8`6bQ|3wQvED#UlIuH&E2K=?W|0=411%`BHDA587(j5P@hG2~w{w_LZXoI_X zUX+$6WwlMiqyLKlIWsp03UFZ)<3H~ds7plv@hGq!VuGqiaS(>a)w}5cP_JqfKt}(+ z3;(l2HqfFVM*utgy2twg?2&)@D5xh7EF#(v_%*PyVEXO4#W6{n3CQ?S5Dft3LXUTp zO=wL^dZUMqA3nTj1t-1n@rMV~`+i+C{n^H}MrLTVe^f(TdWV-VN@WZ2%7baL7q|6~ zgVM523`kJmq)S@W_~VBMJ#=mDjqjckI_Mu2qYAHS`|uzHOX-bm9Y?*ReqA&zqLeCC z>A$i&I-bCeR&Zc#)o9+s=_kM*JD!|++v%_}N|m<;*R`cLc64+cv6Qahz-O+xl~?q* z+?d|caro3+X4LfK^46@POuu2r({KDlD)^)|E9;TzCQnZtWyn>xV0nEim`-_LfmFA4 z0syTv?5^~x=pHPwoFQs*nS&An0LvnK)$`wumY}iCJ^bAObX@*7J?r2wPLsaF>y|CV1yL&1nxo!t zY5C-oaGGq8EboYRYHnu2G}Tfaj(5QkfizovD=+nSeUbO+BhT&}1>gl{0SxHO*swrP zM@w)26t`)4DdHCEAtX;_O6V>nwF)X+75{Devw;jw`O2P~(}3!xXal^#7;*J&^1p71 z>C*p7{y&QOKydaJq5ZcT8T_RR1h3y8>kjSAvQVMvqYhY@Hrk=5z*9KqloAljjQx+ zZ@C#?(RDGYGTignNPLB_ooi-Pd+%7r;T~@CMlYXZ+~mp&)O9JDK5ch0tS(Yr6TE#! z<2MQ~a_=Qnv>tD)@C|u=N8#;zb2R`T6qA5dvvXc2|A1{3#oqBK8$i0@OgKs4oPo2V zMNt_9XN9$d+N6YeZ(}aCmD985t^T8kfO&6Ydc~7}#h4ME2c}z0t4N-$#cxZQ5rWnh z&c8IK_Lkb|m_h=-77o zg)mPUL2D{u!^t^Kd-#9|PdK_xfe;*X#U2hSyToRi{j7IfB?V$0W39r|Csf00<+gB_ zEw$Y$kJp*DFcjC?71!|}`Sn`glG@!$zaKdghUAG;UZf|*r;aPR$ZZ+hvaD&VHROt7 zKoEKWNEmq@Fh2kfw=#24ENmtqaOrxj^t>deKu%+_Vh~Z1Mlu&D<5stGu?DXurle)&cN#@`u0Z~|c1J47|j!7=Qeg~NR0ZF?|n z;h4_XS>4;FM&1V7z<`h`(Nyr1|5VV_ys0@;!YR+GxiIZD_1;v#6n~046*9G8N;2gG zYs{PSh2?%z-cycK9#byx{@zp|Y&ReN4T9ytuzc>6V9FIf!{c3-+b@-Vl=A-feIZ9d z(YqXBE-2~m0vFq@$`g>vnA0>z> zyFRK<`!0TA+E)Yjz3LHZOe5~Zm>HF>$q_#5*m-Qg#j_!)_l`4T_oL`A45=0lwskCd zvFGnF5&vHH@aVDf*L8cc7O+IGKFQU%g1<~wudg4-414@|&H0s({{MVE|dQQ1kK?TIF!e;j+d^50TzY=Y0>$cBfnM<*{N{cW3Eta~yhc-x=!vO*= zn$*v&h*x?#Ud2GMDmmI!hiWc}L&+pS8c7N?3P94z^PJGoP*v#W{xT|+AT&q^z)^!B zV}Vn@(iRhu#SEs6m;=nxP3xOv?Q|8j{no@hQ+D$=T3L1cpdFuWE|F3Q?Vd)pnuj`e`Yi8Tu%>5&>_hAOYM3tF2HllTEf^ zdS)Gpfi^VixC9u6eAWQ!eUqxQ|LQO8C$`Vqp{n@ftLVdV<$HgK+4QGyM{LC(pTODp zJ_3GM+{w4qcP9`hOyOV*679TIi9x+RRsyVj7e{J(=m56_xIl**G6K1AWD$_}CrL$2 zOv;oqdK#?D5TI$o^QD+nX@!x+b0;^aH!fe{xHIEwZoD&I!sC>5Jh>Xl&<)5!>7H6S zbDs?5dt<~Bw{CqF-ZA=9LnuPh%|N?FMHFvWZ?MP`lZeu&y?2^5sPsr{6NXmc0b-n> zwr&`Pa%4$nCOQ*vBbHCEvm71^qY!LoIq0y#w7$T686#Tf1u+2IQm7 zF=U{vC=aEGWU_K8Vu>(Mpx|484=e&l(twa%jZpwXk*R4+K=t4uqOWB30Gu_cMx?WU zNzVIHwM6x}V9K)h_yLp4`*W{^)dhe3kFQYhpjmMU1D5+8hJ)gMG&kb7+T($rEoK7=Xq^@Sr|VIL`!LRBe%o zgaeaSYtVFz36-|d7*jr+GqASp>84vxniCf(t~GtZFhrE(6zi*+&zU;B$duv{VYxN2 z1i=OU3=0lO;oJ2MXMel}T0@(FB>|{x-!ZC?x?4*keQ|6wno4%Zn<|kO!<|_iFhQeI zkM!7SZ!y6oraiY(h;xG7tJ9ctFqD3GIRL)pcW~hCm9?u%2aeaJc?bAOV%M!1CQ5<3l9AI*R%z0iAhHKbgp8RLB7S#Rt6< z&V@N~S>xIcFE7IrTd}Paj3l9Soq-w<76Wxlxm+x@wFu?doP+rdCIaB5hFFyiRB1)# zrkEw{vL0Wo+8h!8Inz^htV4c`Z7eKf>n#=BJz^Y7tz;(h`je6o^&B_lu9_C3QZnq? zBIFXX{bD99_zs+0+J1L`$k%HNGAY7x4PxdxxjQC{fWG5+jF*Tt2>>0XMuo9caPT#m z>mWjbc4Z+-Z4f4^MbzYnaco}+P}b(^2q6aCge9N(K&_-fx}>-V2>JbR;GaoJfOrfI ztY-^)FZDSMz3M(W_4vi(_>-S}a;sBia*3Kz@yAqVN9jM{Y<=JX%zNv8k4!v)?1@ru z-C}*`TM?apaf7QVYcF=*4+U~Eu;%fo0yI8Ag-Zlw?~WnKf{# zb0w=>dSG|m{LuwCdPW{D8Beq7hTj z)pg{M*vv?ys1J-hd&QtK7uR0^CEUpE%u5%zqOk}kPzmJx>H^4kF8R_JAZ4_Dt}PO` zyb_aeMJJHj?EC0|IT6uj*YW^!vx|&d3~={I4lslbAwV`kh5CmR-!Z9#F;>sEsdKwR zkvk(t=M8LE5xEH0MbA!lV0xY!qLR7>r%v@ zeZO@%#YV0Djt-^4=f9E>GuTj*Sqv&^iSIqQj|6x;I>(+-X;24#QT<3rE87_Zi2bVi zYz#_?;vgND3_FMh>TSl@;nz%DcC`83B{W zKZ86hsuIF9GPF1F*Kh zYBVBcQvLFu>)K17x~7hMo)e_NJ zy9_e>{LvLiqL_Yz+2Ld3G<-Eauo28&w1l$wV08>kOO#lIfb|@a) zj*&COIDTij1Xc5SFDbwQ;m@+iXSxal#r_zHTUnl$!~iu%<^mC~DhZH8cYhb?1f|p@ zHcGV=onXyE zTQiy}Vd{_RR8(h73XvU;VERg`OQJdv1ywUuaviM))kGjxb@6CM> ztElf9irz&^1~k&<9#8`w5hur(&{}Ohz64q))$AFz0L4^}ki2sSg%HYnElw~=3`anF zr|A5u2XzQWsbxa^b1Hl#0^Bz{m{IC02EDuQI>N6juWEA8`=8 zTI4KK*X-UZ+z&z6TLcfnvPOY=$c&?TZ@?;(8OLJlexb5!f-eS-lP2Dx? zz|8=exOh>@5x1OyY}!0>j3MRd?*rR*R2^;Ge?89@lvpJuVQP%(v`;7m08grAxr8ysl`-nFv2u1YV1O!q<$OfsF$wTM z$Jt!KAV}j`eAi6dQzGyN5XeknS5k?vhAlM`h^ufg5FrpV6p&D2ob|XyDUUdQ+WYz^ zBiKLxYFV`~`eyE)3%|afq50TmPTo9ZS}c}=Rd)*1k%?=~UlP|gFOp^BkhyP|GklHD z4Y1w4n|=CgS>7rX991_GVF-c&F=o3{E)p^2^PgD@ApC-|GI0S!5+aqzw&}>h&Xdn# zbH|P}db#f|_($(mX@so{<|R7%O#@a0MG4b5xl}OT$8;od&{gxq3yy}fioX;&x|19a zFmKx?L=DB9ONj=3{i(%r`}HTn;FJOiqqQiJ$L_;vB3~NP%`}{n7KtqkbF48WNGdf+ zep7Q2fCr(k~87KXg19!;z)3 z&30hm7+jzoDEQd^+WJMZg)h6Ovd&Xb9XgVb5D5!`DCsFDm(d(brOVXbFs*+ z$PjUtED)_k^yd)58cZy;ZFv4P4-SPwBL_r2WM1~yR+aj#kI%b5)#^8jo&72;)>G;? zZ2a}jjny`<;c|R~fw3?5=S#+DC&}G&9A=c+a2PitsOHVvm<$N$1%P;%hJy|+5jYkJ zFb2Yrv*s%~KLNoy&=0BWX@gj{gt(9N+1OW|vMQxQoXp*$r;KoO57fsXwW8#)vy zfnxCDS4cDut7p=d zA!9RjR2&LYQ_=@kC6UjrD}{dUY>uaAWeqKf1Q25aqpMixXEC%o`g*%n3%@H)z4V*P z&8jwBKIk*1a4mh(u9>%#n9qwO(U7rn3I({D^Nqk|bTZdgFT(n-5SdEpuv;lQp)iDU zZfB53Hj)Idyp1xcvGDh2(cLT@Z!BN{^Ocp;Do_~#5}SkXWz(t&d7pqHRL5U1dvq6B z4VZxWkZcLQc)kQ3$Z`~eQ-uH=fj+#oC$Dbc#myP`;;T`mMR?Ha^-FeihYx-@l|r5$ zxi`)yl*0n2Z+|||v357|+#1qjK9NabrZ_hbI@*flGy7F5z2ZNUhfB9frH{s&w`@0- zyE9tBfU8n@_ow6J#jFn5S2syAna5(IEC3M2xSoA=Oe#WDs-4s&5)i?rN3Xn>!vx+% z$cYlS53d?02b*o`I*aqDyz z8OJxt)Qqx$e0x4Z@eRy8nb?IHcd-8%a_vx)>`>UD=(?w%-!kfp>?lLiKCj8#*d-26 z)@8jSr+jdFr5hk5PUb++awq#lFZk^0*$^wbzQn7LbaB>B8u)v{>Whn4Px=J^W5rmj z-NaWD*SvNf>`BP`efHCM!xRMTpF*1+S9E+1^8H?Bo8>EWt%dtz8I^uQSSG!$SvdIdDL&3iyp%NEV>`5xzLWX9td&_0MKNbf(Gp`i?X zF2)g})Mf>@`6fS@8MWv-Dk>@kQ1z}|-U||gn1JV=NPUwM6;@`o0opD!xro4l4dP10 zfJm8Pk8%2JP7aZntwPbW7bwRO%-UR?jevt=*W!0Bo_AXH&&!z!mVZq3?0dLyMa}7D zf9wky8I3`3`Mhwwjwh2+p?Q z;=CeYu9hbM1bnDjyIP(P*ETS(a1o*fVyoZ>P4d$0nJBni!i)5Gmw>_!I<>l?B!CCm zl<;L-P2?g906gl#5EcgFWa?UKkpUGm%NO|718O{(pv*G!Aqd$kWYNqC3Z12xN`;$h z*cW7eK)FB?ZvpkgYl6~)&!m4;cgIA{`uXQzru+K!ZK^-)U}_T?m=h?xIrG7=TX(-} zqNE{9lfWbv6PL{q!1rsBTzFQ5Q%R=pUt#1W;m%;`K2|ReVX=UDJ_EBQ4eN?W#R!Ow z4l|qA6QF^j1;D5SJT*1;Jiwe(SU2Dj+DR%%YQ&);lyy36$Fh6Zcr%`N-g@HA_k3aX zN&@-@!Ti#Cp_JWAUfkqX*-k%~Y~3noC)fITqrhd%GBNx9qfMeA5W5eq{5 zwA^-Mf)$83A#K{QVDooFKXE!v6``0A6dmDt1Ca*zJ#&4ANJ7HzLK{L7lgR}`J_B&_ z6*yDr!*?cIrzTCMPwm!jjWv2KT=UnaCcCPIJ%Y$v%lX6%TWTIcYIfe{%-o<+6SpZR zMYAL4e2DZrS&GlSMrmzMD~?BMUT%4|`0EBnh7Ld0V$`n5C|*zgJRAcVZFGaqWD>Q) z^=R^p>k&Vh04QphU!if#hz8&SL}@eKfk9w$#5)XBpik(Wy=K-_L-OGhRfb%Q=M~vt zD3-;uL1P^^R4h%ojmmUia~XD=#)E1H5;zX_LrD+qEj0FgkFYDxeY zB~zW!LomZBgD2b6sY%P+-{T8q{zSBw=cp^tb2y7n`5Zx-`ue4MCKW(XKU<1CmKzyN|%dl<>$i$e6efihC>+`Mg2lft@75rFVr0aQB!^NN&BV^LYj zjgQdFgcI~}$ZN4GftM(KA?=Q_Y8MHkkOWx^m?Cv=(I$kMmRn3PN^n`HaWnrHSDvqR zCI}M&#R2U}Yk(CYnL&u(m*?Y5flO|<=rsy-ITYeM!bmNAt=~tz-))wq4Q3g6BIVpM zhp`>u!bLt`@3uG>sO2H@EXVG`^7lfExm7@*_0r;m5l=!50N11&tXkRp8lE;+6pQKYf_ib04GC&te%2UMSKc9fQkGQk%AS$b=^Nf<&&0W*nM zpr)e0gs9E9)Oehf-TepwDNG_<3nauB@(C1##9g~nJ@<#Barax~K0^!RuEkX!-LmR8 zn~d`N<*7}I1o8uDv*!M!{Rz%0V<3CA!Ky84iyN^B8lvZQ6&$sqv%kAtt>(8=4`8W4 z-M~c&14@mHv^5)z;cZ({FO({X9R|a>i=mRIMYZya=j%TRTk)*^KzpgFLwv6F&|I<- z>+cOdXW}BNWtS+cKwx@HAWi--CKQu zbl35OdO$3#&|KHqy+MlDOUZr!t<84i_?wabnM*ud!aTY0%Zp5pK;|5OAWGu7;0|EO zjeQCc)dP!ixMbTp3}L+woXgxdBRB?3%jL`hKvFB9B4WweX^$FSwGFYCeg*h zu19F*EcbISgsCr6D%65h2Ow_~ue4R!ARMKwE%`G@mo{BuQZN@c1~5f(IhkQ=QGM{l zja&8)zZtyeeC@h*{KlBXaz}cKQ%eqN$?W&wye`SZXl00GAl+SeKQrYJSEeiHprTW@ zcu^hVgvrMAgbSNc*1_Gas8BClOORL>Ytk}N23{NygPaN%?Qlaq`q`*iFqDsTey|v@ z!j(l&T$Du}#uz46UXBtHlw`-Bi%0=spZy1P(V(~+-A|o}Xwo#I7u^&$#|rWo@OB!2 z9{ThFb802RtSR?k+WqYwz5=fURO4nqXM7tfhjuT)HLvpYtl`ri&nsJ-F<$u55VCM^ zXIAX36-$>{t=p7zHTdve@`EUH`+c@{rf6Y3)Qzx{F6V09Zuk^IBSrl4?-SXz9(S4% zmw-_IuBE3MZd!h(Ya~!XhuT+o0ZJ!xx2GTu+V7$9(Cm*Xj?8m9H_;bUSo`FFoi)}5 zsw#Sm^sRiClB+cb%bPOnk~aXh9fKCN%aV$fw#Cq7q6O3>8_GqleE~~0oR4$?jx4i( z=W`)c#+W<%S@e8>La~t?ZwV(s5|c}kZUmsKm;*S$)r61|?!K9Pyhjvhod6WP9!eyf zQm*_K3%DQWK^jT}R0ara+HZ`}C{#u4Bo{!E3b=+D*0{5oi@7^`fG_NK3!&8mfTj|z z9z5XvH4EHd;4HWCNsiB5L0RSuZ4+&z45LTevOm<_BjSO#5Q9_R*$#Tvx<9HGio4AL z$lPg+;l2>!*|L3}Ga?h*&&d@CVY0PN9=~qTqG~l5gOYE=KQkkG&Uo4#vIumWXcRj+ zm`}z;BK)Jqi1y#VkAJg&`D|JBknjLk_RHpy${dy?Zr3*yz0JPxh-wy5l%_dJ@$+{< zzIeiV##VRxSezqNxdIpH+5REkO?`#Um6@ooUX-d%#4sI$%$;;mq5Ojmsxuf^iWC6w zy@Flr4aAvAnzkJu)JDu8H>0_2eF zxgeJcn1rbOWr+QgS5yM-5#>=U!2=dg361q0*DPjH+$&9?fBhD|wdl~}NN#k+t9@}L z!O`RgMIpp!{*RZT@!9=cXbm0|belqcbglN$9UeE>ar?a=LNA;+%C)YFRr***nRLd` zCtg5zPdFm)of!*xH)cV$9cGb#s19}Dc71#>GB)@^^xU1_q-~>nwU!L_Q;V6nQa1~F zH$V(VNerQpN=5DrM~qr2c5kGL%@x+Nezh5)Kx^}T!s&Mg5b4uu2hvCpH!_^E;_psY zvvGV+AK2pfN=2dPN(dnGi>NFGS)s$t9^@zl)CN){Bx0_}9t2{MMieMXp*NQIufp1?W^Syum=#b^sCo+xMM5ecfSYKSF6g z3h>wH zyDJfwRpO+~dqK?p9TWx^7=~ZfQdC4+0+ZabX4I9=N;|^B!QizcF5qQspC7dd*H%~# zkN&b6HE$}viGa+Ko#7mbwY~~Ylp?uajxgptpfW#o(bO!rwcffWZCe1j-3w?>axGIx zW{bNZ#N*m}tJG&lPc5a7q91)Ygl`nJg}zJJG+%x4Cl5K(DjFHFG_N&Ny|;QtQol+> zHU<1aqn9ltUcSP)8*}b8+%xF%#7tcKN z4w*PswBMqIe=KlB>>g0m&_I>XiRCLKbhpuXbP+vjNyH=_s6{np)>ikZ!q~t|ew+OP zl}rG=jq49gZD76BHW`p8WD1ZGWv7a5c5*Gvz(B&RUXzLCfcYXF0d~}CoH0kyA+!Jf zBp13n03NW}0q$PNrDt0KClG7w0V0lJxET$;=a+SN2}YJ#z(rUQ37{*7*sLE|bFW?o zD1Zj=CbEnoVFg3h?Qv}f%P(l~<)_&E@UKp%&DH8Jmsd^kP2qnDfo{VM1~ zteE6}R0X-UyO~VMS$+i5dkDDMfgjwVkU#W|KawjwCjZp!G%NC^7fVWxVj*M(nam)O zR1B%q$`<30bD%>S+T~H)VB$t3u=d1ky{kGm>k?_;RIxidD$RiuCu&=sq1Mqw7Tq@{ zDfloEaiSp*ObmX$Q3%gL6hqgZfgq8xwbK`%KL!{1E)qGOXA2hF zyf{6H@x*5^P(&tV{30@j5>K#x1b%+dTm;qA^||}3JGW0tA&r5EeCGw}B_<=my<`XE zpKen`ov;#-0lynTfyknfwDyn__lV0(+-Fnt8S6ho5Bj}-RrHO^t4-0J%O@}NM@EYU zhgA=YK)iV($XR@j@z=4IXW#qm#Rc3GIbFNO=j3Njo(L^eZ0xkHTPiQs5H1Z~>sLEP zSupnrSoe9cSXlpDiixC64>sLVma>1H^4hU-V^3ZC9*6VH`@g+z8%FbOqpPYiJr))f zT|esNNIX~j2t=B1q*cyk85qt`Ka-vxKg~MjGnzF#X_A|c-)hkfy_!g?coMEus0Js! zqA4~u_O8X5-0J!#c0hhSP=L;6>c3bA&7%#%kj)FK?Dv#d{EblZK z6*@bv9kcQ)t@~kN{ikb7M}ihjg}t}I{-F0)Js+PbbDXJs{NjxVC3LSmW(8#(yWI{L z-H~z1z}La}d)*BNuE2~BIbz2=qgtkmBZ_hYIqT(+7AU*fTwK;8q$=jTrPo2^L zgB6DcTgmZS-xM=zuIu9XN~g`C(Vc5Y)k3fk@b~K znYz+-b?Tl|PkKg?^3mS}6Zu*l=4Er5{f)bD0GKJ69iqI2_xIW!-dfmOzGif;^5D-c zfA8HJ{CFj_NvW?Nceyz+oX3r%ZcHIMEiJCU^upJYq){4LqSG#Lav*n$gzH*l(spBtmQtt9v?(N$0d=IqPtumY$K+;bzh1zw(I3!2_<< z&c~OvS>}nx9{={L(CYFlaS6vd>|R_6mxQv1=5*HZO}9~eL}EBp^Xg#s_Prw?uS#WX zu*6*CbRoq|o!Kd!Lr&3<3uwML2<4TN0-4~UjEatDk>bi;%NTg2P1sgw0!xI7Pr-u5 zbF{xjjG@R?O7n;5DuHBd-y8|F(@iwCD z&1f9=Fww9duFPV)msC7xExDh3=Uj=fHwPP4aiQm@GHK8KD$li6CNZ#;57zc?1Fo9e z-32Tb!pEUewS&0F5nZ4dya2B(3dtN75QIw-YC-^EBm&zz0zym2Q;J=1wSe$UA`BD? zWzO+ZtM$LO^{Xb&IdSWR)k0>Vdus7HGhoJZ<5#B>X8**QiaDEHgI~PLJTKU`RpT`}i2wt#)7+^)y@)9~J;NqKH4)7ua&iiwkCqCc=M9%T z8*9M@eoY{k_xne}z#<@oW-P{KK+KBjdB54l*RBZ!L@ zlMly|eQ%mfwkl~SE4j-+Pl`w6AaulWqY6_EdWLy9Pwf8V^NqA|UbP_Kss(pH=)P(+ zm2u8^Z^^3MdAmjYb;r6ws`?w+>|$oeZz4J#OE#ZJg+v{6JH9!ArKwtit$=9QQ@QHl)3MEvIym-OqLaulnQmdj zvp5TkEI|1FIMP=}rWjON3;r5rFp|!C(=Wor3r?BF;3ESxPVLyinxjD+*Pb zqn(-29EJwh+9J%J#sIMhyP$KNZ%ks)b=o*-=mo&Ty{t2AkvnVL*XMYAR{5ek{$?$I zS61W2A6V5FGw1AFUSj{T*rLpeSM6)sy)2yk>SoBQ+vM=iV#ZeN?>&D>u>QJkeRE5G zX0g~)*w5;`cLqPBUJ z9$t0G{*qeK5YHCp*;2&kFj2k1)El{x)S$3s*$97Xi-O=G2G}CI>2Ng>0KIwen|r_5-O3Yv-UYLVVmz zvl7kWmIobnbZFnW?ehzL0Y7_uDSP0yd0xl({^z0B(g#0?bZZg?-_t!jC`K2!P#o_? zMBHssA_Dj7I0tGGHRzrlAWB0nVf_y}Ny(MKj4w5OvURe=9|0GkWQ_S+)%3i0~O`07NJUvpBuRRuw%zGDa)~N|DvYI5^3u zzza|_?)bE60730&OBWbB>d(9^`19|MSzm7c!|{2~d?%tWgTg*~=2gYR!q9OSc{9Qh zZ^E?WYxlaFWNUVt)|*Gh&(@Mx9az4>F*P=0jvvTPz+Q6J%wIC5quM0w^b#AN#ZU>K zWq{@l=nhM*pt4PUmQ(##rnI$%WUD~|D0$TS{M*lzEq5^mfZpz}3Fc>9dQfu$Aj-Zd z2gG*rkr_%0F!~b!YS0IFQ-lQe{?vbPZ~5~sr{I?Q=O;EfmX+7vF8?cGRa3C;kA=}o zQzTjcG)wjKP$Ikb;zm%1*`xq(5t{d)+v#)rG&h?*xbyGjWm;nAp7~1$oNiT6E*Wp8 ze9e}Vg>JaJE}CifVxdWmKntzUWRj)`tml_`%2s4Q|LV<~kcYqTTzUM1x}9)~^k*}k zCH~>4VecUIoGHPvhet8?!XavM5RLoAm%prxy!B7sI^Tf#ckCZGgzZV*C+M+ftVx#b z{dS9_y~;sE#{}?S2kb3*xtYTBpP_C}vc!=$-}}h!U(XmonL}?f78nYmJ0>-lAhHFj z`*2-VV|Lh!p{181{KcpUn;4RJ{>ZI8xmS&+g9Z9Q!t3vgz+IpS9D5to>Qy$;z}Xk_PdoI4-K%_gT0;4~?Y8 zEJC~WhlLQa>P5C&qO1LjiRe;b@-+0bz3Bq&sWOm+*3uicCrdd>X2rF+cm~>lYF)g* z$|n`AYZ4niUb!wber-ga?w)R)aLa{bMNdn8IbW_6lVf`NIg-Q_k$#}F<9bO{hK}8v zo$>Sj=Y=zoZHm$KhYQPj9|gzA<%a%8YyuQa*va(` zC8)lr=1>15OSunHV3;kOM>XtS(Zj?h=o!UMt)`(SJ&LlE;IaZXD*$yMI@CdUy9veG z`bCf20bdoiZl7bz1_*ewJmA)cUUbEcA<3pU(I)GfZ$+LP7XI!X<-L9DgfgS(+c_97 zRnu6=78e(Mh#}2;Cg!6f5z|T$MO?9D^?L&|+)F&Ek+Zvlt?2H5W{2JUuJGEz8D}?b ztUCSC@A#1CX62V%Si_kUCR09^DGANnOCsrF z4)-U$iI#hWZ~9b8V{E+YZujdhNuK@{^n*1}bs03;()R|*yuHlz1MahETduCNF_@x+ z5O;B~V`7(;XoW$|5P2GiYhPk5>6UAKjA&at#uQnJgp7Rv^{O&xJW*3e^p-pkW|$T= zpz1e@Qt3lz%LQ?v$d5r?`HP<~JejE+@fv}w@Pqh0Nr!o78omq^T+k03|Ndc;a$}xw z&ED~nV;P*(@9)=|9fo~-=QL0jS+;uP%VKQm_Oyhj#`*dM?VePAp2Wx2er~M6*CdK)>+^0BCi|| zH1o_%;(-1JT|nLWDh)zgsQLWsND$mlIvu8u1VIA^SodvkavVIiAeN9kouFt*wePSXHDDNfDJR zT}#uBIXhtpv){L#Z&cG4e;AmXCz%ma-*M(Z?wzWJsFa6GRU>~FtuNdc`B!j&rsvLy z_xg`@p9oHK@LwF(&a0i5KBIZ<lUG73F00iX7FQGng@ZyX5~&e7={h#$J%SAo%Ki4^FQ09x*L4u z)+f{H?9bElXU~3{e&5#yf0Cj~tupL7r(M6>rjHRH9~pk>a@|$;2Bv!(SF+uaQ~BAR zmiEy8{EZ_WNsf;8qO39%K%_ajx&8e@p8yNy>1#r{;K(LL&$9B))j#}FefOV2kARHC zzKjx#P5JO8Pt^#bJVIyf-TNf9v^sjy`&Ix*eAcF;bb%l5uguBZE&vOaB1-yl-rQ;& zlUO2Oo*`b>%24)F03N7@3I`|^+9F{{?42FY_bunNMEjHlP6RrlB|XuYdg0u(Wu2y< z19Y@;whhhs?F6Jg!^KzW9~GUGRm+(>t;Tcz9RB5ASqM@DGDSPa$E_XH;*8PyWc|6q zr)P}KaA&z}}FCwJM*;pl{><`12l3S@G%5WDOZGceRoO zxJy6nico7T39BuIk>OW8RyKAfi0UEYJ?D6-#Kayrl|dNPIz@eR=W*xDAI2j zCqGQ3>TClVeQT+O{96YfQpWN>ZzS=ve$R+eJ+=E${-9g7yza?8&bIwcUrqEaJ#<=N zeUVR6s4=S)uZxyob;`QRH4b=#74hAW5pLgRARg?Qp%?O{MY*SNF%pQJrHqYPY2kiT znca=1wJ%940Ik_q3b*k?x>J1<7oBUC{?*ZDBqnIt1jE`)9Ji78ZQqsM*tB7nyCwJ$-{*KvyFaGsk?(PnTOWqlWU&`32 zohw%M60}4Fq;^CFuJ%~D^Z=osCZ>bFn?jRXAzg>z{+^4zdEQHTo+UzWOm!Zw8qX?I z2RBlAc83iH0fi;xCGAWDtf-rocHZ|#Fz7FZPX0M<8|D=nAVDrCD#=Yh?viIbHpzo|uqUy3&_UKuXFn%*)ToXTTb z5@gR(Xozn3wn9BJ!zYkkesNCa1%TeaHV5Edq``jKLl*$O+9@RKBCnK&y~xTVxVi6= z*z-_Jj`Qk(L(+bGl2OnyX-7q^o&5bwvp~_K5)11G(#>$3fxNZLdhP!~)0@CUx&HtE z*FBq=F_>X!Y&FKx7)unA(z!9#&%v|?%y|4H7dR}8~-Tc3kw|)6@IIHi%i47Ygm$zE@ zRj$8tVNXrk#z!k|+{mf~>u&9QeSWV@Wy6VS1<}kAjEPgkcvb7Ojr_BnP@Jq4PdH@K z-sr>TmZWED2^mSgG3N~Lmaym}4=BUT?!*9r?QtUNs~;7H25AGL3(~EKy2!=C2uzW$ zy|1>&Z5BXXL(lxsjR@UEe42f;1vSbRX)QKs9-f)I;q>W@xJ0r&?B)ByxC!@~i+)ts zH0*UnU9~qE$uRQwtt@;tV*^Hx+!nwlTs_O^oQfF~U<8#dsA#K=7lCeks)NMmj)6P84$vD~G+;;G~MfRWP)u+E`?@W`maApGzUt5-~fyI6Lb{*CY&_Oa)<{{|& z9xu`_p+5wbQYXsd=HcR7^{_$1$hRpK<(-x3*cjy;%Datq3d%|xXzm5Zppfcr`Pf|$ z7F-u*&sJy3GHZtC>T-HG%k} zXukNOmY-eTWo!8Hc3fD2%A|;Gi*tIo zuuKb=T9uc{!u+Ql>)k7Yj#1Ykd19H1s{yE!8k%t;=ZEy%bPBTJ^4ub zzJL9Zum7mG8HJcf?lJ!D@L#ou)*rp_H|_)iq$=P0Pu~qD+H?|?dRTwX<3e-uvyGPW z013hDGAKbP`Z31E7sAA@tfQyWc3b=8J}FLldRPS&a2vQ$=G9)E<2UIvbhJr9on)uH zhZ#CqHcnpU!5*KLy5~w@Q1x?7g1RY$U_cDAjABJG@WgtOJpbm(vuR#~TUUK~T$z2f zLE3&Ix#N+Rq&4U$<9xeuyp7oSrtj#~=Q)ClW6)-_`)vfepojc~XXDR~=BvhQI1~&u zGn6Z|Puumm3Y9@_jL6DZ3qrBKK=2h=4L+bWW{+-u{?PQPZlhyO+II|Tj0BFLJRL?} z2JvH0+-wxBC0oWKuf@;r5uYHo$^!M)+)F$9#&*%@iWyd>vxOv$y772v^KMLRLsng zx&*mfx@&inIO5QH@w^knN0=)3I)y^k#{p1)g}57z+W93BY<#t_s9#zRef|{pWA6L8 zjmw^w>Fj-cG$8r)nv3T9Y?&-c&B;8$^C0W zWpAz=s~*nOirK9B#FzE?BdK3DXx(!0P_=umew4BTOlfMAKe!x(D4eF$I}sV){^O|< z9SbKbS%=q(j+Cm1r*tqe#Ojxi~V+2zA={mT41*tuq0}nyLkPQQ4`Ha)~1wP`gsw<&WnWoZXo%)2T5J zK{q{kh`q0ppvDm4lZn0`1t`wCsO1)?Y7)}n@5c# zI-odRrLxN5p!aH{Clv)?96kbdKc~8(L{!9I_Radsv707-*FU{e9S94q9FGr~d1;%5 ze(8I(yqTRU@As*4h>;P4Hs=&v949OQ`aN?mpeYZV-vucS`CbiLBPtR}>{w83P|^Cn z+&-~%ikIDI{6KD&2ec_~spev;An&Z_vSU^=fI3uB)JvOL1>? z^Zj7;v}f||s=;&X-Fu3Ae*430MLgW+VoVn*V%0`NTRA~(hJ$1}9#2wf(Ug_4b|pV; zH~%@OlCFXOj@;!H$Ic3;UJkEoSb6Zq>i9D|47RC%`u<_nx;G<;~Yy;;zL zP%+w6%blvF0$JRGprC~6%&pqzhQFNrk@)EDzc(9uEHw3#ou&_oZuw5&}VHD8m=yxZiJ{M`zZqU+Yfi5UgIlq-CW?hJxe%?OF^V z#`fVpqBrvl0R*dL@hzRM+o~B=Z0$tSwLYq02x%(88!hq3>Wd>0ED@o{C=8h~ju#78d-h?JHfq*GsPTTFU(c#zEQpKgL zYWP;!3I{ymsY2*>0W@E2cJbB(4YQr0E9^H}RLK=_k9G~zT zX!%l+aMt$qUh5TKKMF3I9Z9##Wgquw2&lhEtXjb~C#{w^%uuwlC{i37$g)bv>>~t_ zb(0X3l}w~gj}zrv3H7e4qnGLuvLu@=Jx{kBnJ!16Jw3v))yen%u-#sp_m<*_(YE%( zgrb06upux3o2sYJk80&~GV9Q!SG-<5D3F0;`mhzp#qv;>vGYLS?xA8L~RRY8zQD8Qva%B}Vz6x@yz z*`JOe`qBh~K;NqfjMU{g>~3drt1d=W$HZFpxm=#KSISe=W{>%z4Z*&{J(+ArHZ`2m z&iVB2(Y}JrEou{wBNH_#Fl2t0k~{9?w|^v~zARz9fy|EHC*+PiIZ)%^yG}4h32I49 z)qB+uvEr(B{#^c{%;;?kyMnW`R~Dp$rECknX4vl*G0#q` zcXBU{l}?=Q7KN+d*?!+&1V=14ZhuPomrpH2v8GI)1#ARaT}DpZD%iQ)&vf3hxoT?#Zh0PBAlM80pR2)oyP$i>w40}GPqq5_3YqVEBdwFj8$sK1te5-sHa$$|fkCv#p z>W4?KeDM0X>&2R|e~o(DEZmi>oSKlhiR_GbRmUC=U)DLW^p253yJhli32*Z_E9)=M zUE==kHsuzFS-sXEHyq;_j?izvu!2y%;Y*2#<=D%iP-AFu7?V}pmn_0*g~Q>Q zn@s$cyt$qQW)o*)^YB2;Sw9U=yblv|2Hs@HU@kub~1JvJ`F z{jQ6tu8}6dE9cyxiP#b_7U1eN$`0QC=;s#m(WS@J1h{yGG#n4K?O7Q$@BE?x z=Mg>=iS3xgbB(}ymoIcL^Xjb4*!E){^L}A|!(RNeH?3A{hg);L?mZe);v_x#TWy0$ zN7Hcsv14R`)}u3CUiqTp$B$*Hl+@UYO%Fv@V%Jc>&I)TvbqIKOyB0D3nRQ4f)Igj5 z1-e%6bsL&Ve*UfIj%N7S?{1pL*(GuAl2`{_xF<>FeF}RW(9BghmT*Y;TD^K47_?O= zyQH?anTnVeFj?vK+scB9^TkUZD{H!g?C(?WhUPLOfD2i|6g4E-EO^wof}mrBuU2#O zuPDiH`sg|$X&tE|`Qhm$cIwU-gYzdZsiqrxn>Ym9VgH zGul0|+L@g4a=fnBlYTe?0O%|f4yK;o^~9UOE_Y2q``<5<>0TyfE9CE9f@AFY1<6)8 z9ezZ!^dw(w{pZ%NPKk=ApniI-jeRfj*HRS$n;WxnKzhc&?V%8nE=zSyhIJL&k9 zO{wm25u;me=Yzl10pEOtL`^ca`bhra6VIOg_xIi0tH)>C0ezFM(E`yLA==PW?4h8= zg<5D3we9O+JOjwwF@t6)E<4gwXi5=HNIgZSu-_7R3Ym{uYYPSLpGYEd)og>8(K&9` z$d*H-^-HhrkI4P6Dt2MMZqE}-JTXmkuxR${7nNH#PW${7HSlcCuqMK=gfODVdp4}& zet(;$SuAB~2rB8p7`R1tC8ygdXtEx6a+A`+KLHybbOYLN&K{;(1&BHzPGWu>BBm)E zdHgTm3vhfDCTiBPuLFsx9Azv};x4p*AJjX+=yYm>lZ#rk<4O3gz_B4vF`9tAF)EC;&R?{#5tLJ$0sM60#$C;P3jV zmt9W}O-HTDZ@Mk|C3$qkx@|-w+qOZ|orlZq-ppA)e)``1Vw2gjyQhl(Jz?34t>M+n zl>(Yyk8JZlpZ_j8Dvsk@Xj+S{fK>jp-#5v-U_j{!HTxMu|HzP?{wx<`!G!Q$=b3F z7rGwi4Hx;t35A~zk0)8TYT$qY^CGF{(KWuv8;0A{c-vc?I5N(WRjpSI|GZ3&g^g}` z+#{DrCowXXDhHtHzfI$Us_n18_5G2Tw{-xwiQp}H0@sRy5O){`(&`_;pMF~ z=_}})FGNhBQCV012fff3=e3Hayt{zo(`kQsz~jR8gU>XzPd=E=m*+=Sl&G%U0Xu5) z9cP#*hvaQ?rUZR|L+eR6b(1fNdGd zsZF*XwI{kPSdo(aGn!F$krE=g4`?D?nX+t>2YCF{Aal;cRY1~S2P)}D`I?#SYaf$b z&#N2kB*g|T{W^d9kn7Xa(m%@RtZKzN$;Zk)GQICZr_Ie$B&%H#_taeHcqm zRFP#%_g_r9(?0J-fxcpJ=1r@mr`8tp)nC^dd~CEZJ8byR&{*rtbQl@;Q2no$oeg^AJe@@ zj>%gBRroe8FV?&5SY>N-rm(Zg;y16ve=6M*qMi587XSO-dJAkl0i8R0eo9`+JZ2KLweWs^U36( z3dYIztEVn+*f#Gw*w8g@+-$ufRUL;ul-VPG8>;nq;jo#p_2x%2@7$(j$$mrW?JzU7 zkOfDn)WODR0CPA!^0Vwf(?R-*S0dM4KE`B zfK`CF<&-xI`xXTok4KH{sl8!0aq)RdA|*UvV&M7G+0pC2p8PgAcQWC?v~J``(fbsw z+2ab6f_Bv}+o#K$cOB4e)(LA`8ezGxWo1rMzO~qkt5a)K&ik{;tm|2gMaXM!z-v^5 z%9jG*uuTOpRK0v9g1Q#{!b0>Cn)z|TfS?Y_cC5X4jQ=TgRm$UFzBj$yDKn?8gKl!r z8=vE5BXX-_r`}3%j|}Hv2GCpeyAQozQ01g{<_K-ni#h!9n;_Bos(N9-5n8;T{ff4K zRxsQv!eqWh1a6@Hy*8TD%zP~3z@7|!rvPT@6bBo)zv;l*!b98XvFQFAcfJ(XUNqX< zjdH!L#WEeR-#R;E1Yn;gOiKC*LE1BZWr(*okq5HR&R+JfrSJL{|92-X> zw+C3PZwwh%DGJr3iSfEds|#QU3LPRAMK4nmCkIRTX-Lj%HtuuXWYpkT?=D1li{Md# zt2Ag&KX&BgCiu|-SYu){nG<}KKzxe37iaf08@24N!81I6JwhTR>A-6W_)b=bYiQmY zgSB_kTvj$7m;JFL_FTGa$j%=@+=JRx_onvFXH*IZrFnY8ZA9gZ&~NkcEi}=QziUB7 zIw0^)DO`M(x)2w?OR;D8YQaUTrEN0;+w_C&QD&f>rsFB!ZKFrlI)CdnOh|rdx6}J( zO7EX37b|POm38~?rwBrU6|2xm;dv!k6v}CQ0LXs>h`XSb)ZYhi7rso_nrVetNTe(Q-k^!#l$>h_8@RdzDGC+s|@ z$B^)m%VtX)OY9IV)|QC`^~60E@sk9AuSU1qVvAgUwtJ1}tVZdbnAHuYQB&{MRLAZr zdS7lpV^AoQ3qyCA>)Y?nF4-GqwRzi5slI?hON&k1HL* z3W!Y<4n^8F4BasjG^!@&^oB$Gk07Ucy-tcPE#MO3;P=lcy8q2XgFN=L6L3mkm5Qz1 zo+M>b=uS=+#l0tX@!pZ`lG0T@RVof&RByz~)EjqWesah8`IUbI91fxF&E?b-UfA~l zd#97`xJl;IRpN2jQojv-X7Ii}jYO4EO^xH~DdGf>Sj}2rGoRV@s?409K6ma_9%kF^ z&DLVMW%-=9j`}nGN1FDzo%{#=Gh4t#&GY7D?j+Ky3}U)j7JXqp`n!*BktZlfU+|{c z{=m)fOLs#z4y_)+ak`xE6i1B6gyH9F`UhN&zIDE!h&nU8Vyh1SRyL-Hz#5!d6&2T%Ga(IYQoq#Yho)|?N+ zuB6zAU*wpX5Adkjy{`EW4LtIWcQ^fwJc^10wIX?x@EB%ro%y_E>m)^taW}=Vh{qh_R7`c^zwMMjyOOaG@;Iv z@Z63V1b=HEez7L^mqYq=EFY*_i4RuL6|7m9{$w zpv?}B4A;L)?zbJeCaW4e+Euao(3wAjjYrHUt34YVJ>b$R@>nqDQd%XO)kkR=O=@SgX6AS=|9BO4Lfdv`GNG~Y z$Wb>BbN9DFSyxW{V{QM+#94{;V@vHY5g|r$K*y$yf^-N@ReO>bIXqXeQb8m+3H_@i^&wa)mbvWUhF@}$?z;UIRk6>1 zXVV$VdcS}TzvsJz=!$84>(?{S{6{y8Y|qgr;^~~_u}_yba6)#<^z)A!87tZ}V2f#e zfo5mUT^-c;_smRy2HOI$hGh%cZ+*(sKi#UI#qt^!(M~Vx(8Peo^j1g&W8Ey z!gf!(%7N)~jaRN3#l7DB%cdQ6lwSs^C%vD|Fn7aQ_m*iV%my}oT2*04g__ZzEy^r3zDtcLEnOB$mKmK-a-2+^${jp*wF zy+M8GlH;??cE3b7@E7n9n__z{F$btgz`uDvkK9;v|L%rU(aX0E3?|}ain#jM8}5dR zgf4V~@KcvjO`l z?%e-Fy_^`hSNqHH-BzoA^lT4~t@r(K;=#ZErG;VFek^H%BdAVEI%tSq`CE^@kRnsj zBH-gEa0}kzpBY#nJ?GTK5N5L7OSur-9PTz@h0qyhjlFRrJMHT#1^_$M*yGCS(RyJK zFxo40@g`?xt8&OVltfr2gz0@iuZu*`e7Lzu6`0;9K13X&sGz$E)60v(*i@Jl^Ao~~ z0n-u(csLvmFhbA&HS~Crds*9DnPRlL*VK#_K15pez$TTj6lW9aSW%uqkS7k+hf>P@ zHx#Raat~plc7it&y24~ohRq2o(7?ygEOIUfgM z8ECfm$Sd{aYY3*n1gk{=#i6!Ik&_MPCjKlXtnroB!Va7#Jg*u^U+On(S{bpE`>m#A z+f>Yt%iUf6ofRWHnj5pu!CcNqXje?KRUKz}?AI~f=}j0U9dD08?iCJu0u}^Z?jS3# z3>z|O1#m35z#SD4N3uqgcJX8!#^e*LK=zg-O}f&>9iWVDxzNX!vZE9fHY*!eFjb!rQh&L0SXB&L87AyHe9f%#R{3Z+l1U6}`4Z zOpl7$E0X|-cbYvY#8H5Yq7|+*T zZ5DQpDJ4)~(hk6rE~YqF|I7^6Ao93j_$Iy!PBx5FveVcFUt`*0R&lb-2m}lTimiCN zr#Se!*w?S*Wmon3%%JL&G#LoMIWVm+gAi!1P_d-vK~xGb6T(>ug0VAD&EDU3rK@}* z;=+NB!MM*~^{+UD>@6Js(ow@-QhV#=#{ZjXIb*EE-^L(;9lt0oEp&EP^=Mp|MVW z7syq(7JZRMIc7FEm|C7*heCcHW|XsrhQlPa3lqj$j`^=bu?$P@AOpPjI0z;KVwD)g z?~NJ`2GtlN2$VTP$O?Fig98Fbtp9fOK;xe4rkfPE&PBX>yy@k|EsxeO(wqrcyss6` z-NQJb{9mZbD}zHNY?in^Au)B~WOO|t{}{9cCah;o*v0p)n>BMPV54ymAS>8l179eJ z=fGeKh-AhA0T3k;{2v_$VyZNWs-vaO;cWU#ujo z#QV;bYj@g6Io_`3t7104^0=&B9xB(+h7tWmB+*g6_uIhzP4tt4ATv`f=+g1i26+X( z$Q``^Wz*x}6_x2}vzv&wv!NUfHPNiagK8$R=!{>B={cK<3>t>`s9>Pj+SMz>JP5qC zUH{ktDOH=xk;eC32K{JFEndtex!bcPI;-uI*z0Rw|EW%QlgbU z%!}3L);e??4Vy!;)Wcvq9#jk?Ky2h9&ufi(4rD6mF*tGFf9+ud8yq;2rBdBwnz+gf zYUI~YKqefXWE{Y|qVcC!IhFKm2C!e5Q|JgI`t5E80QcYWyMJcg{+<8tUb)%Z|CPNi z?z#PYdd=cE$$SNS5&AF)hy|xX%Bg!lnH=%^Co@qx$p&|Po-CAjuaQ89|4G*a*p_!? zmo@g^uhMpat9Hx6^uQPBpSbb*MUfZ+lJLcx4?5d<*< z`+koK((pF<=fn3KU-qq%_0bMT&q-}s%N>*MdhN6Fj--DU0Q67~dVX7H?At*^E#IA2 zHXFXt$`nVTq4G#^Y3D*6PZHgWl@8d200Adq!6zNOWfB)667p@HCOllly^GJ$JB3WL zZ2{XDL~5Fmpf#<*JyKxF?ul0bN+7aba0 z!15x%on{p-2?qrZch^(y5Agp^c^&5X;jG;Sk5yYc*Qb_N?t%Ibm45CvL@dm+y*eL{ zXojt%SDlY?aU&I<%@4Txa&j&K^pt6}q)_&+A9X?{P{>|k&A*^`-qDq^EG#koB z6`^G)9o{13-=va9Ai5_=I|xO@PR^kxK5RJDbZK8`@=3+bO3tCD{^^`5Qbo2=^iD~# zDJeB)Wv1V4`}fB=M|z6FSNyf!>;4LET9hTTBX??0b}O`9(~M)J5)`ZI;S*nv5Fm0P zR&-NOtb!vt+dn*@kv>|V2W(iAx-pZB35x*NT~vcUVYOAp_2I`@sT_1Ib_SY}5(d!~ z0_7mptH9df&|V!H;JNCFrFf+n9QEQvy6o;mAfX##3QM@~`!iev9;%D(e$0y4IoF`~ zBg1)>ebyh_omeKWEpt`N{@ZmqPIDeI1f}|H!I@@~G{v>VJJC(`quH5zw(|y!j_q3I z?9xeBz}*jlUKYW{)BYV-iX+DXSxTKB+{9qdn=N!qQ3f;xP~sN5qGRUw<=gJOURhRO zVCpkC67S{L?53+IXz-Eft*7>e>sr*iZ(6flMn1E@%d0?bT{2yh;I>Oe_oX^hc5@=r zD%NT9vRPV%!1;V>!1#fWLmh8+%K(x6fNug{0P~XUMIg1#%k}Dw-kw5~l?uEEy|t;J z0Z)YRGF4X{G8uM^?~bSr%fe&OnH9c(Mq7zR@^=z$MM`FHU>*6dF!0t*8@RgA*>n%L zEK=+Co1RdN1W?~L9q7<)Pkji$nZ<@WOmy+8TLG%Ch&~W0XKc3WR=Db`2p365n>IY1 zlg-{-v?b z!!r3nysfT#qpAr;5?XrEJ3FJK1QB2gpsy+eI4UM7irkAXhV6!>?T*cZY0l?Gh7d5Xn*jI-8UT8^M|4 zJXQSd`fz|Ico3^9g<|A&A#e9^bo^jfPrKJK@Ai#+jq=LDE;3*@3vgh7D zaB>QJ>qubP$oL&(FbOWx=*soF01tMWJj*}ln2KW1>O5Yk$s!~4BV(5# zZXPa_Qe~ubus`4k`de0QLm+@d1qm@qInDB?o8gD4(kAaJVf6G;?af{Y^!R4bs}Nd@ za}>I1wR+J#7IJE}U9FT14|R}ncor>b(Bxbj_F_=@09w>n>O z(u(%Gj5Zr#L14wy<9iFExiR~LxVnL-NI?3aB-6$&l$DC`PoLW`*-0((3Ic^hx&)<* z41l8m_jJ3l*dPmf6=-PXkULP0f*lBs*um@35hFWIJ`K+8@-1L*zz8_N=VYbhV9!}O zm}a8dpr4}22I++9al0%b*`L)6XksL+YX+)V-J72LNU!M_$VuAD91Bgt@rM?8SVP? zlSkc8e7-OzE_Hr?`3=r?>2W3N&QEvwADpvNt(MBQq9HC;V5a5GWW%L~yYrGum zqU-fgMbc3|Pl#3d_h4L1>^xKrKhV^m*Br!1mDJcfIUBDfCl z9}&Iw+igqg32!@qh+$tpwTFTOne0-y-_kI)7gHm4NoUOxury=|A1CoE#EHaYr^LM_~MZT;(+y*)=@v(IH=IFslCp(b)K zGf&vJs8vU00^g$%A|jm+VAp@ZYmjQ&; zq=g6K9J&X^)hMre>wQ-ldXNNiG!2Ig!A5c|YVKV2+G;sGhX6za3?firf>1wRABJbG z32XJ2E>3y=%zVRg|z2AgKHQuwsy(zr3vtWHplCT*;4rY4y6mJ^$9sF|LX zRgf4XbUu($7aMbcQ#jC)8X}PruqIWPIbY#uJ1KtGTbIbK?bi=zL>)IfFs9fgVyCOw zy-(NfC7q;lac0sr^aZi9^dTbKuQj1~jw_z%&k7ay=Pd|3`~HtX34sihpf&DsiN#w2 zK~Ed#1Gj^|o4!vD!^MtgKS(*y?#>jrwmoepqBZ&^ILT!Qrb&16e)aU%3LH=ur>X4= zL1=(Igd4F<%X@%F9S`c(;!m1V*pbynZZST8o-%R^2P}tn@vc`EXEb;~I zrBU)9*-_myxo1KOzumJ{mv)2^6jIM-)+!N>hmp~n>nF(E+ z8z=Q1S@pfJggaO_9uYGMqNIcjDPe^f+fu*P`=yogi;2_X!$kKu*PgnRX zx}HVMxLmJT!W*2XXk#{|0E1ozU|Z|qDrFNW)x^}yT4*Vuf8NF?oAv?db1@`4bPaFCnYPM4!)`ICdmx$(b(!g7V=%e|i6Tynmq2ZD#wK-j0zK z&Ofpk1=@m3VI~^1l8iCdHY}8437Ht7Zde?{F%c4fq|1?!;-B(OyGkBinK9$@Q(kTo zVs05_!(Lr2woR~>P7*J&gqGWptR4X!d}If^L(%=POGB^=V%v+8Raaz#D5ACn4`4Vf zw1>%T(xD4gp)f)~Kt(hNHag1AlteAJ%;p^(vYT7#%#9Q!8MVcT(`<4fy@GKEP5bb^ zAYehRvGW04{rv5JWfpFBXR(~F$n?zH&hM>M*-L?kQqhnkgski<=!v#Q<+QyzVkhys{LEkKnE?#%yfK*jpjN*uPY3em|i%Row3bV85OF5vNW=Ff>O% z0AA*(3LuSTSw`_^x3FirYNJNK{@2x5Y*lahOZtBW!swtk|9o4_;Z#(InQ0k~s$rLj zo7O=D3vBM!L--Nis&D>(PDWc|!!RW>zAZ;jXdG%A#?k2>Ymmh?S33lQVh)U7r9e`_ z<4GmNtMD9=wro97w3@^`+nkpPc(SNaZ4`N}nYebRC+EQ??d`Fn+N9)y0gDEnpKO07 zz`WD-qZcD?be5RK_C@R}Ps-kIA7nWT+rAhxC;cmiM1Z5|_e7jQQnHD$SCKBq(wLmh zG=Iz{XPGz+%7U3}1TTL{r(sI=Vlx+}=cTj3=L4JrxqvollcdWn+I~J@6I*E7xAer7 zUGUT(H!dL;t|d^08l*@xtHC z#cEtVU0!=|)!SzaH)o8RA9@UT(OrKLvsK@2-k<7V=B2OH(`4Fb?IkEzY@pa|IF8IP zphk(QF2I{468u7N5H>}lwBShD2EQCC*0G5beN@2H5SYLMbE@^D6G!4~5k3=$1ZXZJ z2z19iCeWEE!qgt!8!obxzcpg>*X%aW`C!WkC~O^ zdriozvJuhU#=7Djt#?eE?&qOmo?l-3^CcIj*PVJ`f>y$kudFFtEu(y<;CB0<65E1` z_kE4)E}tft!y{pYe9^HJ^!!;xG|W>%|0yX_tz^Ju!Q=_eGg1?HRvTc`G!fV>tB(;} z$lzbs`$T zg;<**|0mJy$A>Q69CY5bWl{G8)S=M3r!%z zCoSccuw7074kt>ujLYMant3{{m#S;Y*|BY5LH2mI8PL&2dutg?#?fqryTHCTN|7aK zKUw(agTFpb-`o}(TM!iUzrsyq4yx<3Skzmm#yW;bcy)x-B$6=0M=YYmo^vhoGj*j^ zR6ALDUs`Zay{}#W)liNRRc`#V}g{{O2>nq6XJR7t2R}3~(=>*qC5+@{)0aK}x`nTeS-Y;=cVvG_yPB zQd@-8$Lr>h_(9`^6qB0}N59R4pCF+Wg6h2{N=DHC6Q>&?lGIp}TA__do7T4fg2XEv z(M|#a25>h7O^!~bRCb(<2bDQc=(V>K>Uu^(84Q6v0U&gSt>0Cmi?2QEOArp*1rc_h zZ`kGh;P(>zzDe7wQwI@e6ujy$#Te5Ep;cN ztgRmm(Sek`6RISh3GH1;CKKmlvicd@^cqY*FlBS^)4MJ&^Sf^?AQCF~kfni-WBbr^1_cpPYT#y_jMyUD_N%@O7= zx1+k_K7Chda}lh#;++09a9w<&;ncssakQiyeA_bj#0(wuAqkx8EV)4vAZGm_6a_O% zBMUgm{-1UnGFsM>U#=eda60GN_E-EgagH`+rP=iB%jxO+-Gf>msBGnZTMVGR4eA?!~S>stpQ#N z(RKv|8avI`6wYz z#Zu-3eG&LL?w}j85bC^KCo0QIo-gbrjT-&(!`12n^Si@rKU|r)ao@iEhQhq2_II$^ z50$i>96!T$29W#~rVrUaw-Rocv2T|Gtu7{E4&&1|QfSb13vzv`ab>OTbjab`r!j)4 zc3?6=F5FHd<0PdseNur0W6eMcF%AC_$TO!7^s!q-njKKwFiZ$zzR; z0Fx71I<~5*vySKOtMfjt&VNu+$)~YoM_9Tk0Y(WmgZ2^PNI5R*RzG^Ixh~Mi>Oi3j zNl>Ao?iqjl@6;l}8obwOn1GYxrG<7r_q_-PyGkuEo+&w9HKlsRUALDU7Z;x|@qc=5 zO=o2J*LeYs2^HoAXy_^gojPgMQk5V06vr&dA&|wB!{JQMS4yhSeQPd|%`%`i2O?|+ z?)ukjY$5)|c=p@%`f{sQquIARZjY&4{#DCcBnYgbO`TdO_$$8N4y%O-E?lUaq}11- z@a6P2tX>Un0H3_rjG#RNn{Q%i^_o8mbL}yh$z(~Ra9$q50~Ks&%s?itHY_@bU@wKF z8s6mIqf#k3Zdn6dk}qF9=-&VM%N_HGxv+H~+IO0FIPYgB4BtEM{HgKA8Ft!Hq(0AZ zI?d<4t?$ufvu)e-V%|(C9IA(@uBR%dBK_KZPECweO?bqyrfwGu5X)#E(BqT+; zrrN#&!L16&6uxFUc*Irx%l5}sfCK_p_|X-Wu!;*vA;vIn0wkDcNkgWKf@<~h8*$Wr z{u)SCb5c6mKwNWQssJg6RZkU2H3lX{$bX(~@4fWjS0*p_sF>Ay^8C3SS+jV;Tk$;G zHE#MaJf$Q&5|KL~KIiQIN^i=96AhLHOJ2VIKd9g`*3`IznDD7s83h3j0uR`MY#e`O zXE1=e%ZpQ;Z0bX*g#A#4$%BO`0d;p7jU$t@q4o>*zi3MWupb-jFjr{YNBap(?b`4KP_3>LX|B=Fw;Z|ij|oqo<0 zckL`<{q-q<9CMQX)b^8yiE{)Z5l23$_kdgu;brft~@Y{0fC4f!20%%#w{gMA5 z#ir->5dYul@kA@N8%r0S>#nTVe=>>cT5}G3lUVd(AX5b28 zrSn+ZP~~jn&e!LfbEui4PtO%>JL%fm9UPibp-RU8vrK7hl6{5BH2-xE^v{oZ1FUz;dlc0QO&bEpfT3Y>ZO6Zi7ioAZ46SIA-Up`Iq4E<#AI#}&{uFbC4PJ{ z_E8{vpGM1Pn{5D^Oq)+66y{8{z(TI5!E4c7!k=s60}V|(epF`9o;r6beck1x z;lR@`Th=ckSJ7W6Qs*WUEa$f2>HA95uO?CGEWP?vouY4BLGb-NKpaAB+KRl?_AO3%{Tuf(Yy&(H zFab$?du;x5@7%3@vy96`ukTh}l`q~e&@&DD84Z=V4Bbxp(;nAi4Q-PPz770D{W$Mj z{Dt$^4a>>Xq0FPDTFcnxrBuPi^&+VkVT6gq2d{)_10!lJ4p!DBX}zF1RM;sFg5*lu zK1p_`kBLFYm``KkhQ&7(L2F#o^IbK^o4R&>FpRD@Pt?&CUB8}co>l*9Th(Tq8nL@p zyJgK%VcAZvNM$<0c3o=P6ysMXtW4IY5a=gkTmdmttaY@h!Z|onMLPXj$qFPgod}H4 zl|gdPSRt{phi^MSHgq#iDz9k9OMEW^HY(WAl}eIK|E0qu%D%Z+PldhxQGT^593rkd za$`YTw^wDnrqllx2Wma~aFpayK^pdcf0ldM?7~W+K;qP9YKD7*6v0{KY5_?<@RSuK zq~(gHbd$sc>ULM6oc^CSX<}o-;@A$bHhMGJy3asU?2NKE_ksbZU1Ps0$L9OeEE_ zWH>^RdQ{;)pOo{wKWnR_mw0cdL?$-$3`e+nFM7JkI8&%uBNLR56;aX`WGqpoXZbPH zHpv1c{_aJ2hL=s)@6n18P2EmLdRPE~SAn_@;n#N+Yz%qZ1>?rMjZ#89sS6BKUKkn}Lh=ymGm&{%YEwgw)O_PZSm`6|3sF^0sRF9tW>sJ@Rr8G9O zU3hdK8bv=Ic4h46hSzLLg4mwfrF&js|oh7j1clh z?aWx4q=)ld?ZVcY)Ub_Tuk|#>d8&6e_8x=3k1SZdBgzM9QG_*UC1bc+O@d9&&YdES zl1U&YU9ob^Di6<^=Y5nQ3FmW0$WUN3Z488+jXEep)NKR92LOD#l}x712yE(b=-NcTI5oB~cu6X;W4#hpXITT6JyD1`}mLg)%LI$hv!)r_Eh-4_|^am zSj%E61~#|zQYqHJA=J4#@!N)VTM|-pG$EI0%xnMu$J3jKHFbS&y!)J-gd_|G2q7R~ zm_rZ@h=?dQfq(%41189zHVi5tC@3PLwkKgQ3}Qe~M6h9O2%vzV6s-*iidZWMD2_$6 zE#OeGYONi-oA2-5%RhPYkU*ZDeb!lft@VChG>#}7)uW*nTXW`v-PoF?)@FHOJz1Z3$Rve*cj{q%Ba17s4 zI4=WN|J?7)Hax~$`yA_Q1oBJ=So3gaEBgIagDMNqkz`Ba1jFM z4qAOrCOKYt;=ky^3yUw7l`fvFaJ?0J==&n8lzXcVUnwZSw)r<+@U#k)U+=%KVQ{Tm z5mCapL$zJa<|s7+Rp3zS%!(!CjCC~ZogA>XD_0;5R2~ny;GICIU*iuJTt%DW@Bf4tYk0sD95@@};4ixSEqfTa{`-P*u1Y~z{bu3!( z96iGZ9iGY7`y6|RbR}UiZ|zj>o`ugzo48;JVa((GHa^jR&YxwMxIzeE-ec`9i`XS? zUmYr2?7F4s_C=ULS@R!x6QYk67YLfIE?&)Cbks}tSqS~c!*S~Ag9 z#gI`iAM5cX;}o+ix>5QlYgbuudF>JBGX0?pA+Gf#LX!=BR!-bA40O?4G@VIIaAd+O zSHF?h9O{QMXLKK3Vuv#8DQ9naNOMECR&cZ z;uvMmBrj~Sc7Y8zbJ0>yH)PW9-;cp{Pbd0cYU6x+KONl76H^e>Q?;`RZ$?YEPrb zorM6^FacrT*SvE>MJ|%^P`p4U(;HZ!EqwWX4Lrrb^mL+Y3*^U;^3J~Xy!veaBJZ@b zdA}_l|5biX{N2N+pYG3UGit8B2*FgvYC-CncH!{0UI;&dajbIoYG7MS_WySorb7Lf zE=D}wF=~FR!bH;6;K0f>_P5MYTQfG&maZI;T`2ToxQA=~grNMTuUodk17DKQs zd7+ICK!=)%lao!b;$begH6KmZ0Rwj;4!4;1ZI7zB9v^q{^d65peq~Er=*BlRVY0dV zwCw7D$!}&n@jZ<+zAJBywWT=($@kkOFAi+Ms6(N@RqxL{eJg^RIcQah-BB%W_fu~@B2GRITv=+ zJ1u;H`E{n{kyUd?y!JJ>Um;Xye8 zr>8w%xNDN`oWI$#S^is4_#UN$*1uI#yJwZ%?A|Xji|SL)&TZaau*sr(B8C&s)8pkd zi}H$qMTMXh zaSkhg5Hma-Yc7u@Vmbnu_+iZ9Pq&KVZ^Z8Z$#(W|ds1?3>2}MCF+#geV<=XrwF}lM zy*&6aB_ic|^XpHQ%|BL~Oe(GIDtP)kj3|1I@%_9L&%ej=+zJp2ZxBymRX5>}^1U)m*k$=gpXnRPjT^ z4tn1THz7$(qAUPa!e8TERgm;?ME{lVjf}3>^VKOYs@HzGs$c4A!DoY#yyg%iuqX!1)lGALeidCYnWHS6DCt9d&IcnGrxwdBZ{p*7EZ$DqW`OWz!po^kM{t+7 z8K0f2AvXt&-gVQkkGdubdD^rHIP}T$*Vk#87!9*%V_@CQ%>X28{0+IU6e|h|oJ84QCAoXLCfPREuRebE!rAg6Oh9DWor*PosK^tn?Oo*0$6^Zk6r@V*oGz6b*e zA>w)mtC{+Szf(fM|0o|_Q;|p5asgu{ahCb?@;HJMI6E81SvWC za;+~1g%=^)LvkW68kV;)pp7%VG#Iv&QN)%@{7uF&H~1mM{+5Pf3$DP0sgXto)8Bk` zY0Lck3!j%Hy%7HU)5N&%*E{b2zH%ZXbX8XFyW)g&r!7;STnjQkZj8X}Z1jHtuASI5 zVQoQ^;Wnx53Oz^d@DStP-^JRTV4fYr)Bva0LN8$>uSZ7_W`%z5kuS75$V#>Pj7+63 zP_L==ggXl5$8jIU(AOG@$PK!SdF~(Ekt-;>HA{CaF}vIWjz5)!>i)MM+TJGJs*U-I z0|9ClXO}@!QV;L9%5&dL_w4+i?co6IWdwM{jOjq-{3LEwJ#e?8FSzD3tA=CZt7p+B ze~@_k<4zeS;fwgTa*D*3Up>hgGxEAF2XO zsOgQuNh_^JyCh*cW>~V)o)c!YYSGSn_ujp{UkW2O$NTY_>dgO^<{41FI>NLt!0&!J zGHP&I^>8G$YGJ>D+AIP@#*hjMUTxp}>T|}_g`Yn5d_Br@DGwY|pZw$4i^LZJ*S*sn zDTPCIPmA7jutAL^^+N`r~{BNZ5TH<_g73hf`xS#$=iQ#{_54* zZ&u&6oxj<#JL17;cw5BXy`w8u137(2Fk!(cbYjc;2+z0fVLn>1=#=C~P3EfGvF9VL zhqx2NW!G}uTh;lp4(l{W#tDR$FeQIeDWKn0!koxsz3F^tH{0%(i9aR{e~N+>x3d;O zEM5K1pjjC=|7E47z66F*m=%o2R+uCXbSpoN=A#qD#Vj6)`zC4X!}~|7j%M?ig;!KW z==^62>3rdp&`U>km z{hPcusl=HIHpQ-xk(4(qzth;&AP(h4PTTGF?6>sRV{EU==i0hA6Piw?2#9)Q<}U7i zqR7#%5UM?vwAzS_k*Bp8y$XWxC@ z)0qTg5^xN7H0S$TP|i^{#YhPl7pxQcVAST_jbmNraLI69I_Zf}zmvGeWcKP0--Le0 zIQNjOzntP>^7NOVFK#@Wm*Xsb5lZES_r&NHTP=>i`#LbN>BzG!h65Sot6kf7x0m+} zat9v{-lzOlUx)gNhCLg~JfrmTs7THvH{7KRXT^z}4+dG1N4{eW7<`*}$&p>ykj{VP z$FF@I_VVSaI{#2cqFZ{Pt=ir8!E1_|rJ04^PsWP-87MFC{mUpT@o{7Z^NWXNII`l! zRi@g6n?=*lCFrfJ&O<6N-6kk<4YEZla=&`uS)Zi!bpQRjYKao}yjbVUO|LQ%_-6?*{``5WqDPa+%F! zNbH4;CV=MuQuFKLA{0mgOFi8xC)YV>$e`?Lq}d2L=jusmrA}r;(pp~}t0hl-bMd0b zvaA=Qa$b;<;ZRzPw8v}SDGT=jJlRDwqO0WX@9`P{s(p}VPaATY5jYc2|Ay9-d={`< z?P*}GFx(<7SHRdr|x8~rez!B&JuWU>9-Z4m*u1xJP!>LF%xh-McNpeCUo#IQTNcg@)ow#4y)1Bj!vQ|L zCWEVyz>~C^UGSuMEol4@ivJgl?;l4Sx5&TRT_x zLcK9-VTf?|HYiEST$Z|q+teOG0FPE{)d_26_O2K5``!fGSWNQ!+F_6Lv~vs{@i)g| zIYd(zLFDm8E661aSr=N#j_WpKNF*r^Hi`)ky%zK42OY+*2R>#WrrpbV*}yL~=xL;f zS2Rz9Mcztg!cyW z0sc~eB#heEc~7_qAWPQQD4rmt*$r5;=tPff23-*JtqkMs!v<3I*hYpvC@Z9VuCx%x z@K%;vM-ULz{OSn;J>dGVc)9a?$msRBm#npS0ZFx+EG4U;?8-XVh{u0Ft{tGt{EQdb zAc+}7kOA9<;7peO^1S?4kv^XXM;faxU%C8ZM1-93X8ioQ6h4E?cKZS#JhDqH{}4>R zw5W$H?VMgk{#6S#5T-~9=C-i=)Npdqwjztqa~l<>B(H2m<+C`eP=>-%U^1J`cJN|l zo+iVOreU)xlO=}mQwk=4n*@HDUQyRQV|`91*BjJ%X2%846vD*3s!&_nfUH>;)X!c! zJKjg$HpEG3z=b`=v_|1=iYjpCzEd7FRTCduPVOg@Xb*OxP;#G$An4Fv{J`oEk?|2+TKrp>BMT^#1LCrp<%D z?YtbF`IM0v-GAioFZI6uzmm?BDbQlfOVydwy}D_-($2EI+-f+~?}|Y^+$rdV%Y}U} zs6f5%T^Ot4B>RV~gU*tKt7jp(2d)!D?@zj*06H59z!dV!if?y0KGLgVCErZfAk9Gv z`*?ZM=5JbOl)gdMO0=uSph=G>S;t95Bd2_B-QvamTfsX}=aEPP9$1|P zw1CZl#`N4+F)*Uo!GE@juXRMzK7%_%=pjE@W1o62>T|4V=Gn&IVlHogd98eV+`nz+ zna%JiRC<*Jg}{cB&uxoH<9-+c7|iPGoNWe6p^I>^4Vwm6@um?dGf5AjP$LC&NQ-n6 z_rb=QNmz@1H>{c4kQHica5v0rGA^Nx z?PguO9m#rc#PYVZO9nh}Eu9wklvQZ&97|?J(Ke&LH^CL-ABi^DyA<0)-~Ii`6iIA} z2UC{-iool%KghWG+0);?)^A~avwJ?7m=}6?{>?vMUe)CNZ^^=%PuKz7mr<>$j=7fj zy*er&IX+y~4wL^~d)On;8`mFltFkX73wRV&z+6LtlREAesi~d=+tdbeZQU9U{EpaU z4Jo4L)6=u>+A57M8MN%!MBU;Bo5Zil{?zaL1Q|voSGsI@a(QNwrixVDKCOysB4+We zmcy2(LvHR+e@|AVpz?01W%5>IeHtrQ)7>li78&(OC4w2U&1jY{MGrW{k{^k0^TKLG znv3hKaTNh%@h>t7DW;q}4MZ`@qF)KZahF;y|GnCmWhis8Fg{v0Cjz~Jro7Ses{`Ah z(xoev;GeC!XD`&s_%&xb2 zrl0q!lV|_4kN%5wC)IPF``>S(38%+Dz!3KZ0)Fy6@Du%4vIO37{g26(MHR3zQB zgQi(Pg#kFjBIy$mTFjdW@UoR&tS9G3>&vni{rUT<4I5s!UC(sB(0{>m$+|+?#EGrG z@lBhyl}?BGS~t>Z8Pbon9oBR{7b6`02xOvL*R*E@;|Fh%Xgn{A@pO_|Rb(f>T(kDT z%^{Xx>n@n~O(mEFm>J6Z^j3NS1*6CXvt@FjD%QwYH!MYqTNv*E-l;LxGaOz46X^Ph z_bJh-0mC0%|JcZ5eFc=rBK=^zeVeZHJmv;RWJrVTbWI2{l4AfWE(p~Mn3=0`YxB6H zY~03e-W_-fojkY%gCVe1>Z-#u1CBPTcLHH|Dx9l^R(cFwaD)UnR+0MW&-4ek{`B>@ z_2%EtRo$fXLR+7FwuSEB&QP@(6$4M~93UTy-(gTpiQTH*Mwqm?-RG`Df^NEo+JMSg zsS({CGz3-1kaHv$M!0U+Mll2ftY&8FKs#x`r{_i<(Ets=y<%;)!xs=q zpCbQt{qhT!)ej!>ytcFaolP3BSq8(3Kb2)?GK8mZQ1I}u4`+XUkl##N-g1fTzBu10 zW)+_x1e5dnIaGIp+JQj?DEnxpyQyBDalrWKBAz?+St=J*S+(IAh3(UR7zvr#LL!b( zM|waX_-OCJT&(sD;0f&s0rLWgzx^!+^fm_bEj{F?f1kVdFom;Kh zX9L;~wmvrQUxrRrROdV;`HHw}7RNTZ$YX;EU~)Kaaa1uSitd-13~boAMnPuIDdSXe zUXw_>+-7sYBAs7L=Z^@=y6Al;Vl2(p@#}IQ&?g4$=4v}9L`;*ZY!3sBml@*dtmF4X z0`no95Tri#C{3#fyu*7#y`J9HiIUyZZ|VC5cK@ml&A|x${a4q62_&&;tp^x(VsG*B zvN3}~1|||6XH;O5ptKA?A6Ny-B2X`d9}0|TGhqaQ&J#VMhKkVjCix?H3s;D5v*nEn zY-U72aw}F9MxOQsT6dO_jD{x)(9%jWN@>rXqtgddfVoy@ByCoP@N8VU${Bf3b{8DK z6reZdH+}}}C#JWaui-~DTwfV>{Lf{}sx04l9kBIT>s#~u-;nC>b^&tUvAQ!D408cV zziF#zndpZpFDtv#fn1B@@0QgGs+ehP?I=n3@b zd=tL`uEdaLtTz@_x~{AFXhy;Mk^s)YFT1Rb;#UUwQ^+6FT)} zKNhbKymce$09%%9>HROt(lsL)lSpn%xoAoiom0<5aG@U0p|mG57wD-kJZugsZE~^p z$quLEyI6U6eNvXrgYS-g?@f*#Nh*@J2&9JBoZ!K@*XJM?OEKy`&PVxL|a_<9Hq}scA>PHfP>hu`7Joam(IXR-Pc)Cn);x&8v&nD|$~C1fk_= zv=rX+wxEYCWOaN@RJEdN_s}Qv-DU!vx51~y&BAXtb}vuSC_+t$OF=f82SRMaGkRZP z9za_vh=<7)DCc^*QS`xN#8Oq3Ex}6(j7&UPcwG#Q7469D1ir?#kvv((dJ`W03M&ZE zr|GCfSb_N+ly}k5)*Av|t6~0aZ+Ep)Sc2>XE*HY9tS+ zVzPm{Bo4IyS$OpN%>En*&4boJ#gaSJG7x+H6|LLII{`dDdpSf@o z>y&O!y%_mlI460b%yLLMb0@Rt{Ss=})$27`v4+5U`P#azFvdP+KMN)w1kRLzMfY2rrA(N{sQo|17IeC zPqz*{$(nGf%eZtD{@jTre5Jb8{3fYJzx z9(r0>P0VN^KY)-V5OGMs#IMT1m3tOL^x?{qpZ@r=$-(LCTbo6d0hu*V{#~|i$FGo} zc3GQ;3v(}adK!V%=V3;30NJtWtp&{g^c?!yAHyTt(iR5&1+0ELSzIrt!m}Eyj;g36 z#ko~%&YXS`#teDYl@-dL z2Byv|bq0E2MPWhTUX*B7a(TA3dKvMw2TcSPoD(PA?@T~g(}9l+ffilr2nY@|5WWTn zxeYsrwW0=Z8Cm({Ix<3WN{G3}e&WvJNvDlTj45U;-N+#TCd?`pU(7(V{w3LIOpYFh z^XCf(!+I^RamNNSPqR2LoVybC)sLd#j|F5Nm^T7^Y_V^t7Nw5NH2YFj>xnGA|4h3H zw}YGG4~ruA6<+_-wA**x%I0UW{~W8Gn4X9C-;Zh+DoeSv{h--F>L0*$vDWVTD+^|@ z{OK;vWq%O^;DU7mxl0-IC@;OHs28!@Ws;)dKr4tyiA7328D~LB7nRlIG(B~EpFHT7 z(01jY0fnEU>sfTZoyo-Lf#8n7M3o8GreXC@>c_udwX3OksV*Z&@>{cbagLXc`>jj`yquzHo;Ssm7;$@+D;Phq)|M={JW1r~qlPYpb7F)6SoY*}?mH>zD>W=Rg;&kI`g~u_IQP3~@pGewLv;ta z&Rc&=J8V3`2)pPB9`zeQ0LRVer}{5YT)EN*dM}OXdK>U(+ZWUIHh%YM>vcJDR$VePkO$XKWXntYR{Bh`~A=X?b1#UD5So;*nA#fuCrc)G3h=30`+_ zGjqO+w-3tz=wY#B;>aHM07wfO4LK&&g)MW6QLX`I@+Qp>)S!^%Fx~ z;8HJP)g-T=(gv=rzXqUteU%(F55;dIB9XTxnG8~#4UHH_1zncSds3z`5)i>n703vxU!+I&tny z-n*A(%_zFQuB;E=R)ppcqilO0&S^IyEIJVPsb$0w^d807Sii#A9x9KpTtFt^)u3;- z_VmC}iXo5}6L?Xw3=nDGzzfS}XnA!M0s%T$k0nXUFN{Iz5TZjdChDnZP{UOzQlG8k zt(s>(JOS`DtP(@u94v?}HXaoHO)6E`L&^d$3IYt8ccH-otwevK-(xni^@oj-D-L`% z{jN4V@|so4`)_qy9De^i5I)}aC9+Tk&=$VRv{cSBp(T)6Ckd?VLY6?0|63?1zFPh) zTQ2u_ky+2`BU~uL>_MWDN$`LNhG0;jTBHjmZA`>mx4X=p7?kv##H)X28#f3oDv)#rm+^;OT(KU@4abj?DX}X3~zHbi)x@s0ttv$Ql&nC9j^! z@cXpiE?7YfXCuJQ0eUZy@Hs>4JM}#gaoGu;!xJRiu_vZr@nVpR?@Yp(OkhmK zh~n(b`bRqSCFZg;0C=0nq3lBC=dlP_C0Y&%h98vt_l*BE`tlF`J3SRYmN!j&`k+d4 zdGa#`cU!sY42ZiKMSOmW)})J}YuXpV(?n&&qZC6u+h(A3@VB4yrG;V0GP%4eU!7#a zYtI4C?t1wAaOU7xe0Ou}&Xh?wp;De6vDMmYDGdU z-`F;{R8E87?wHPw6cu@AWF_D7-#)uSL@R?|_B9fY<^ZsIo}4?tDIFNlg$ErZBV0-7 z&+ztDVGJFozyxF#_rxWTSrasOzp8(B{P!0{|Qkc&)-AKgQ7LmE~P zXNHrdG&hQ$&JVft(nR0IIT*0p0=o35tgh`mb?Z7#;`pVXS?6QMtv@2jI~W2o-QExeQghyMXf zj!&T!ul28E;M~y1u89R)$<2b*s|)q3+RVdR3z<7FDV-3UY^=43^HOhlS%|Wv(RzIY zR9M-lq$+BuZEK^y{%YIbpU#$_a)@3z{}Zk<52|k`^YP;9$~hZg>*o;jPDnv3{j-zx z1H#+ypkO9}Hb1&GO{byG+!M}h{FnF@tCikIB4cz|8cr5il7beCdVLaeZj~~1W3|5I zdz4rpHrA-{ISP)I>DvX{sW`%S#XQu=ZkMeM3uJQ&?illUSi5luU;!O8MObWq$6jbs zSVT;rU|RA1DcYq}M?I$?me<%To8V6d=!Q0cNH2RNrJwzmHZ!1RItH-6}o07TPZp=b; zbU9FlyA_5>`U*MuY&5Q{lEcDx8e6N)BioXz>VN~Pu&t}h4+#^|Xz)~F4B67GLUR%m zA}2P1GWDvbnLoZgI<9j(a07pd%B9V@DP0{-C7fj zmt9$tl*Rz7lUHpDMRUP@gXxxvN!Gk>;0C7=BYRd&=xq-dDA!V$Mjn{OWOlX~S>;Fs zT_hC&rDh?i6b{&?b%861-4*>cFEg5#47Mjf%`Un-qOtff_gLJ}X5D+I zz1&JC9-yql{z$DW4!DC!e-ddskO0QK=l1YBL$!f>JruWOFH7g|fAeT(ka} zZ=2lspy5PW6L|R@xqT+D-JB9^JC=SlKR&T{&Wlt=^QY|?T16Z`GLe0~<_RUfe$Qh) zpy@?o`#lH{4uoR`i&>m$)_kQG!U`73X5J;PI2J0jAaluJLPEn7o1~$Am|SyVz4F>x z6NSEU2O#UC%6IIF@;OXICL_vc{p`)V&DT}3P?X@Vy$JdZr;(}UEMDD_%v(#74rX9t z00sKQNHpKlUk6wTZ{08OIXO0bQB-vAVg2^yR(qDm3S74QPP_u^FEPS|ZggOow7_Mr z9-K`^VDjOO9zO=S5MN@|WU=8wu$&Z;^Ki#&$czCMcDg_z6%<^{h&TDiyY$7h?d2>v zYIJ!*APOGbZ#LZdnte>ph-nkObP|ZBy!NAwL4JhHSz(r2xP= zSy6B5vANu2Bh?OL)ne_u8<`85s1vZhH$wb125Lz%a{8GG!72fnIAsFfCjPwt57hF5+Xs`=$0i5xSVY^ zvEk=?o}6jE@%OFc2HTA)QqD)7In$i?cTHqNPzb!V#n#ChaHu$H4a`FrAN7kq62))P z;3v>p;o7$oH*%yenG{Dmwwoqk!Xqqr|N34b2{4I7w_uS7RJ3Xw<`UUV8#QFIuvIXs zaMXBx>>#ZLW#xmzQ>~wrqgd+lCmSv>#>G1-X~c@2N%o5~X-wfECOK!e^1)!E?zn@2 z+1~wsm$>Cvoeb`<44s^z*WV!~*b=TT7yOm0mph(xkTX8n0_1Ulw8e|ade>lm-QI)m z$fvSr;u}F^@gM% zjlu&66f+o-g%;d&W3O60;7-yG*z&Bkj(M<;`IV#Puz!`uq^`K?rk z$POPTRXC6jifNF^TWCq7iP~)xRV9URnvKk6lkKy@9;R5@d3nD*ap?sOnn^}B3zQ8M zJth}(*~-!y@j7OjhC9}ChSI(N)lSx$a`DR&vX21+*lMS!l80!nOyoNLzJvuQ5?J}U z4(Oo<3Gq&SSEN^E6a6 zxDEp{Fy+}r0#IgV6vu1Oh`M~rD(~+fdu2vr3!U|W3QgjLngSc2)6&<98IIZrKjVYy zr_g%tZfW`q7CRP{wFu>K0XQp1Xp z@f2EcA@H>^y?8^+e8NpT;YG7UJT$Hs8xy;g{kVrtG#vj9RchVV8q{p!EA?1Ro08B% zgsdRvhY%-v5fGF5XYJp)rB}pmslvdk=S@!@zJUu$U%Yr9VCX%y`9~|2Uu^ff!C%vo z*E@AT_)e*@DJk*snqt+ueMM&yu=pw= zSPHYRs$lS+V^s|c{rVVz&CX;f5MRH>$RYO>Scy$7z4XitSKSh?@d=i@`yoKfGz{Db z`!Teuz{ELnuw89JB+|PpsZenUf9Ym~O!w!vao`Bj#rB3hmG4Yhs^)-1af8Ojf|5C< z9m=K9^2mspZC-_j9jPSx%0E2tNJU3^6ynisZN{VqbFEG8Mjv&aybs7VIiSUuKy?vK z4;allC zq7yamVWrFO%ep!UlZSUFe?D22_-1ZUZtiiC&9t|*IhtrFYRd!`{$YNWBG^IDqnm7W zDyp<}v^pKIZb#6rRf9JqnW3e$fM+Ri(Fgk6<2a#)oDw+ zk7G9aLK2PbcJ_}?c)&I0H8Iw|G2HfAsP}WJ| z5jIv6I&o~}omU){3t&}=q`vqD7|x#PbnneSqpyGSM%ez#Kdeox+#h^;h3{v(InKG2 zZhqq-0&KHgP7m>=+s+*MDeQOxi+g~UA#6h&_$?{lZ+DAW9@rM}ldH14tAR)BWNYv# zB6mE)+<2fYMWJ4G$@x)5+Vg_B+2)sh)lE?jP+n9OhGD2RcjA)hXMK0#rEez9hKBQE zAC4U-Zg;Ccw(7;Z%MmdNiOfW$Z9$f+UG>wKyCio!YTHm!orJ=g5q_~-<%a2(X~2s~5mZWgb(lY`m;u6S|ogG$%FVw}%snQ2Mo%pCjW+aLG7 zinTbQ7b?IJZW-oab^`KvyZDBHwt|HmG-k$U%hp1ON}*~= zbWiA37Sww^D)Sw?p^_F;?ix0J9w znVW00X>p)2#?)iG#?o(W@U*8sJ|p65#%3wzJYvS`785KZhR)a{Z#S2v(<0+@!XE5$ zgoF?SR0#h9m<~B>XxOKkgr*BwygWQvqZ@|vW(~pGneOuiXO68-I_%wX^o9AEuj@8Z zbRC!MAO7@?eIb3z)feAXmizO3!Um53Xuj|cSv#DuLAe$WSs*i{%@dX9kT?>TZ=}^b zp^`lSXsL=Oc(>!_5SE9@Gl>ZOLK&PBE`vVEY@ty%)80 zePN5eHQBf^9%+g#PX1uA!gb3y8*4cQ>D%#rc6N2MFM}F&JpnO@U^H-~B=5YkLufY& zOH8u}H8BR2_~1poyCgLRI085i^O;6O`lrQgRpSW>F>bIE5@~128B3T|Mme(6FhK^n zl*UU}fCWk9vl^ThdVi&Z=U zbQ2lMubQcLTm4`atFt{{H98jQkqS?_r z2!TqmAQeaOOdMbx1#th-w||3ZO+@(WhE1ViaO}sclnh9K3;5MUe8yK=pIcz3#T)x9 zSZgsF08^~x&j9dwn4&J#uf#g$rQ|FMpdEpwNYsZ8o=n=m9PrUwUHim6|LBT~=iVgg zT*_=3*?7Tt&h|$B{T*4|&M@7Y$w@^9k>XC$kdJk%HNV@FyAD)8s{p6Z74Q;j;8ZEy zLlHy*t{&fOAx55{q9&`v6-&<)*FMo@7w?{2?;o_Sq3{7gRc8e-ga%rU%hh}n$+I}V z3D=N7C(tm2Z=KpIyTwWP%e7F$DNMa4Hz!C{@>r&W>Ydj6{bo1Hrc#yIN_~%Ble~R= zeL)09t*1GkcenqC_SUU%@8LFT{IRI>C;j%vW^NimvUjJeI3cTAD+a3K?jBO^QSikET?Ml&gM;-l@&uz%U>eA;1xC3Izm( zrGATS{ji^QR0re&3x>z*SAa*xKk^dp9TAw)VL1$DTaT>}$W2*Zu;Te@>(3uvO1BpM z`B}L$FRx<9>VH1WaK%M`er;2WRqQnzSni|p!q;whmJLF|_|62mc>&>ER<`V`1vNAe z-MpqokLutYanQb@TYVRD$ZVb5A~uf46l91?mugUsf?S7IOuCr}xE*yMABBuOO`j$X z5%X$}TbLN~v5=Q#fUZt2HUGKyqT}}JMU#4Ft(%?R%?LD^rpGKkeqV})?6xG55TU#} z=VtcxZRY1Mz2C552Pd_8BT*QaYyDNE%6Y2}O+{j=eaSov+^|fj%0;f~4f3LJyb3noxV$1zS;jO`<(P3b$ZM^8*skVCXmVFp(J#fcsDVKq8Ep z(2=H}V>hfv5>05(K&fkD`5giqh7hATSatoSt-q$RhW>?>-}O_rm-_x#_B=YXRzJyc z@Z!1-erC>ZKS08EVH94uiy->oR#Q#8JM@3>hBSw#H+0{XLD}kdE(E&&k8)H5C%}15 zsz}L*p>vZHwT}I8O^CvcEp0`1E`|68wu6SHYKkU?jm;%)B=8OCa5Dmg7L3sZmgydb zu!>DHl(e#WTg8{d|9*D8d_Ey`R1X( zl@_VTN|7*}ffcuHcGKHft=TC~avdfyVV5qKD%gLuwiM3f+F(P@KvY?Y8F|@oN5m9Z z*dd+@K;iWaUB=OMQ`-ljRzq7D60GW)tvD?|!$W2${@-Wsr<+zF0GLN;AHpl&resAZ zcQ+`rasf1WM+N_VtM6X0_W6!boKRrX zlU~G>v!!l&h?vL|h{ME#(Quvx1nZG<3N;Mm7Mt}TzE$|N}fEulS}C`8QM!#A+Ut0rk$swya?jTPqxD<*^7R#d}LOC@5Cql8Wj zlR(!11^VppZ%rH=>c&U44oOE&jL+^gN_Y&6?EnPOXvx#Z`F-MR%2w5^gA>XW zXF9VZgKsn=xv<5HG(hoUOEWZ0$Okr5e43^5dSFR3EDjUjlDgR7Lb?u($ir5=bfD%J zlwX}n`}g5>q|wM%ovJcxN%Y1a1YPI^-`wg+&c?zTQ_Bq7Lr)}{`}~v zE+gVJo`ZjYh|RC=)^QS6&?gM(9v2cfa(vW5ygkAFSs>QXBk?3aShu|DA6mYL(?wu0 z=jm3fT}SI?ts6NIHwJwg=q5EHIU6P?tp9W%U3s>YwJbjT@KpYmy6=(Kx4odJ`J={c~dU zjRnKwWNRx*!r(1kfji98#^Zj0w})JA#6|~mllml@v;BQ)k2P$}k28xl*-8zOQZ!)W zE;SWr9x}fr;>vcGlr%!ZhI=;^&jHkB|!GHkiR%|hpZoW1V@paeSFC8~VyST;R zLluq*D~c?8R+^*VY)p^(;cB-;i$|^?*_yb&t+6-iB{6ITz(~4OE^Qki%`|S)6K|5C zHuDAXEP!}$1Y<6uV$$YDHsEPF56<%H47d8y5LwxrxWk|QWzHN!1$1$4IsztKq)*cX zu{NkN&n@!>2PWiJt8;Sl5f#N`@8#UP1YofYrXTpO#o)h{-OEdNb(XwuON0}wzwb8B zFK|j-_jxRA{eq5qN`|c#ncGHF^c-?mU<&iZj-K!CfTtGlZn*%q1G@9Gxm*%Um(}NX z(9ii|rHv*Lk>4*?o-bJB+sMl7pa9qe320?=?s78B#$hqM?n^zXL^!vmyXBKpXllo3 zvWdQEj=nd?wC5EV^VnLtQ5No*im|^p^-pYi`CxC$@P(*%HdcRoQ)v52qQi#+-qEg& z=;e1=-(?E$uz{}{@L%&2(>&I?k(VMP>I*iK#|o6!QBYtg&6$5Nc~4qvR!5G}Pg6AD zM&Y8_Hswok&DQb&2H6%SU;qb-#blZOq0z|WqmwZzEi*;Bdnv$L(%p5)`fLZc4s__^ zO^}ZAAdTh$dS)f$h}_=z?VYd4%^SU5PnBO>vthfV*_X9`$+9Of&ciG%?)!HYS`xhG zeqpqGs)SNP#c1tR9ESKpw8WDL(nag|0!*Z5 zSeZxyprwh$WJ3h(cYo@-f=x^qh*(o9l z69G9TS4`88=&^D*ujr9mn!biuK+@lX|-qAyS$*BIib?# zd>b11R~_TnN;d^~Pv6Gf!3fG3jikWTp$u#vu_X(&)hQ4$HgPL=fnTSRMN^OfWlK9O zKR=FcC5?TW6p5)e5$nVg<3hpr=LeLDiKYDIxZFH$9rU8`r}H3>28@eZ3gikYyaov_r4r-0A+rvPYk04B`_~fL$ z(y0E2^76Ai>tFv_zWB}$KUWfxS3F!5J(aqbI{cdckL`-fI$0(x=Pl=Mj5xfF;sWHW zG{5>eZbpNM!lT#+nj%5l*U5K5;USO^2<%z3Zp(9Hpq1`IdAnRXZNDK*WWpHr>J<9K z@fY_qYZGe5oqu0?S9B!f@mi--e{>y6Z1B(C0dIlRK6#;ZGs;iN)XlLVDZmchRRyr#!r7oSp9?&V6Hv=?ikgZHNThwc!77GBjsV+7Pe^Z9TE`jW+KGxvP!Fdyk z^{rU$M-lfB0NeH^RN4b^LHB-R>J5s~(G_F|b6~`T8OBJU?pk(tTTnyC`m-A%UNxS5 zx>u*M(4;x#;rz#h3Rtw*3;T|GB->;U$6WnSErZ@L)ym}>ps29HS;iM}NjwU!VQcd1 zXQvWZgy87UQ8SI3|FkkX zyLHpM#DrQ=m;cfNpGvrfCN!q%L9DCE)oRKq^eyvJxCE?GyQr9VG z6v9833hvk;K^L_&cL$|M$jtp&5m@r>MPj18;yMn@yCO^)drhd)egSyN)%$-~Iv04R z_y3Q7_T9xcqir_LrJA`kw;H)s)Hb6L8a7F(xfCI(bibUhxipvLR!OOuON@l*q8pM_ zDtA(yBi)cX)u~RW)8+qhet+i?t#)R8d_M2b`}TUiGiyIo<%EOtzkQq9oWs_o=HVJ{ zJ`+lCo-)y6S^3BXqeGsg=XUUDxh;Qu;mn6OE&B}zY;(*IIiCdVG@XABb&?Wg)lu32 zY+5G6oa$^EXzNOg7&^S{@P*IXr~k|`3Qj#f<95xtsKbNX4^G>3c{aOcxkKo*CLiV` z!XNwCy~?-t9VCdMJ1WOotESO3KqL{$c*Zhn#(k>_Whqy)gPrVKlZJ(FLjfwEO5N)S z)|!}GK%+s!9GT3UF+~%}rYme#FRgE@{ImAt-_?KInPA42TslI$XBJq!r+B^DOB!e1 z)=;gVli4gxVM-@a<&I6SVrAQ(xNxk_B%u(r|D|A|13N|?+^RVl`ZNZ|E z=%wg_o6UxoDOZ`D5NQ2sK}*LyrOPT1q^y-lKYx^a9XW-|4OUMZAHb)YJJDCZo4xXE z;z6;L958_rptSr_$9CjwVs$aL=W9EF9>kM9?-ExV!l$E>Y;6E>A_`IGmZ8bl=cDR_ zo__ete8;9Hd*2Ivzg^!um>+oN>pvEBv#PAh!K$v@##X}enuiq-jEmX`X9)nIYWw;I z3$}eLP7CP8$#bZhY6Wy0YF*v(_7^0E8%wYm=Wk^f?pmgu$Ki0TGK>Zs zg;Vc5Daw#ijoeWOs-!@rW+Ix#i*pKWsmsV1MUk%U7cXbz|9x>hUFv^~!FtY{N30V( z-3XbF+{GOG9Ng4hB&7ax;lEQw?hG5=E()JE5Ohxa$)Qa+jPzV|dAnGWl-TnA;mK&~ zYdAckgC8FqwgUTlz6A3r4vx>k_vR9mvp1C#j75IlTO2Y3SAz(re?9a0@!g25T7&|F zoO$fj51GQ!Tq2nQ-<}ziaPFrZ0zf_PDQpQ?TTZupu)2iqFCCyBIy=lkhRK zYK8${%G@6FJc((&e^t{o4#Q{)&iZZL^0fLtu`t|Y`!Q#$r^mLFLKIzdvxlEf>~VXP z**wU>;c_D>cI6twiU6Dz-bObA9zwPTLNOL|VVP5{w6Y4{=^zl;;dnakzRT)0RF3;`IiwWPV zMYW$&-HsP;n0pg=#YKmi&E(Jy0v0yy4%J$qy1CCiw=!x)v`I1~PtTCpjsj0?9Rr=Q z5^zX5==u`LrbIE;WHSt^577^67UXave9HOTjXnuXP)vgE9)$SqXrWQ_K=kyMB#hw? zTxyyU4mDbT_$#y>v!eLp>sj%(S9l&HO;Ml`w0oQ|R>kc1J)v z-qc#q?zgf5>q88rqT+xziI9rOuCzy^^(1z_tufoBnDh3q!5<6D)2(CUD7WH1++j*( zn4LfM3U>E|PqJ1)c}x~{(ShQ`RR`P7nidFiD=Zd8Je1^F{74Md$$BYjhr${*iCU&H zA!_g6Df)|F>K`Kw1JV7}1*s)Ta5~b9QvI7V765~L#x(zLThiP0i~t)X_+9i!z=&yJ zj4l!w(vgWrZE@bzk3fAWZ3k7LhB@G=-);Qc`T1IhRkkMZ4x=RcHV z6H?X^sgh7CUA)4=$u1qXi{cV6i^cs%;ZxDZ5kIXZojPYdiC1DjKacWszQ(t`c716) z%c5u`G~>ome`D97-Zv+R{8gTglZ`&-AFfp+W_2Tk7DF_vvk1*ETv6-OUy$>^apj0p zx2M%<72YCcOQ+MWBb00D>-RiGtmqPdMe@d*0{H!)$|+Mrd$WOIH^|j@Fx7`q1k49y z!nTRAXmZ9a9xl^_8!VIHD>^r9e?6RjU#a&f_xjwukAITh-jc1}W`VJ_@(@OPvi$is zJ^xCnQV~l$CFTYjxW^4bOhA0WH90u>M({Bq1&C>MVfyfvGLopbNae+!&_^9QbNGa> zly>p9bvf*U>0=pPwru9lGqdUz-7gHy9QsqO_2~`c)E_FRGdr3c7XR~Y^%F_scJf15 zLgTyU@jJf7Eoz0cw->uXB2sUT47j6CZJs*no#O9PU09K{ z(PMh%5@2Gh2XMd|Vo4dXSsFz>Tqy}tB8!zWmw8BGy5>&b3v1G;;Kd8OcH`1;*7gF{gKkXMB5Vf!Q2uWG*^$uRXOx<;C&!zxU2TEM8W)`bOY-`-fgfFv(;* zTcl2rlQ>F`5V5hBtA7?F7?@y3$^Im}*Y>`oZoN}l@*wA{NqKu=4wXerpz_`y`A{L) zw=bpgKjUv~PB&VSli>4R;b6{v>O{eeCu5@xLfM+uhYL3teu^`+h0E3ANzyrWNvGgJ z!0yLQzoeAM*UxU-cdd0(Wst>}3s*h|`u`iSbJw+W8d!Dbf1>>ehYhiWLaIKHlr_t- z$?Z+GqD<&sw0d?6+a%YgAuK1S)Vs~oMb9Z5D@CX+k>#izK12}@M5|C}mFg83Tt9~h zl%>fSPOt!v^G^@~y(`KQ9PVbgf`7VCott!i^IR=YhpjK~E<4s_U6psC=yO~U!jiY< zJq_0e{grK<%7Q=o<2-$Tcn$S-EZnp5lfQukS+`k}B3kJ|j3gq*UU(r4dO9xM|7t1h z5E++hIfrC8@g1IWA8`4x;3&JUB=E>7d|im+)7#ts+F)YQ!;?;LbU^J4Yh#^U*To=6 zv64^}MGETfd=12TznyFJ!`=)6&U9upWl-o<;3>OXN2zG zd34e1bHAxm_(8I2M}a994dEIrTs?rDX8o`)-kP>wQAs3SU@^?+G}XfKriE9Rth*dl z?L|8mb4v}>JsI@C6Wq!HKCLE3=?ic8l_t=%qm>~%8gp&} z$b3drIr-x_O}m%fFw96MD9h_Yv zrlx61?Bpi|8U9#s(*v8;k}Kr+m#1vN8a?^oLTSrjv7LGxI^#ka7NGF^4OY~+) z7WxJc>spOnQ8ZtNYhbg`juZLl$M=m`aq}o)_z(-l3}8}^2AG?5ue#try^u+asNWCX z=cd|koO|Q4$fTRaAKC_jrii(NpE!jQ=Jrus#Atd`5vNe; z0V_URs0_%z`@NsUfat6pR$y))T;YHG?!D~u+A`cOn3=kn$E$Y8F{T9Uof>rl?D4ft ze-YTq5PmqL;lol{hHwT(VP*cFe&B~1*PeW%KB28S z038UzPzrKd2uj_IfLp)ZnJi-~8~6-W$iyS$=dt^^BlD)>cl|io698STZw-%BTO)Rk zJ%62bbkXgH&UX1ZTXlbI<`wX$kD;iM@#^##RIXlaEG+Eam56Ehb#zvXyo9^ zbH&H(KQKiS)RQqkumve7W{1@7jhA|~E^ZBd{H-Aq^2%^F6ZdrUu% zs(A~39&A#GhT<;nKhUiBG|9MeT~MRZFY4T3`g6~h;5&ZXGuHh<2B`b0Z*fkom=?kn ztWj{8Uv1V1oReqbQ%AE2_-_(C30U5vw$>Fw)p~}C8*?$N9zjQNlFSkfK_Y=6G-Hbt zR6mu-nk?D67C>uTqI|~Q+OM^HZfu=w8B87X3yzW&v*_0Qe7pBnW+h=J{ndU}{CWYb zdxe$kPn+pjLT+9vxfmlc4NmH)!y&lD<-1P1 zhP#(-9h;_xq6GQAl5 z=+rH=XR)baIb3u$Kq${3326vpv2n00PJ?p$`U_zI#BtaGKm1c&Y!d{ z4u!fSbEqbAfGQ&ks6sM6LSD6kc357}HQ`OkB!v-hadP?D>JZrNpQh6&H~H^2dE#s0 zRv_0|s0`zByvUWMCSqYes7&TUSe0TFjHwg~SdnvNY;mx)f^h>AFKOlZQe{_UqQFdY zVHzr&zx;6dS3fvc5xxusLt+?u#z6R z+kEqt+)93tn%Wpdpw1Ijb;=@7wnZjiYUevz6-Tq&g`h4;*t%K$*j%`}WW8LA=WU@~ z#RGYi|8EgO2<6Kw>$)vG6Z$~9{Y#JF|H=rD$VX@n*od>Xk}iJeaRN0;xxT;Hkl zR+K*x{m-7vM91Cx_pf~H=Wsmx=sIVbwq)h*{dx-m6aiATQ#6(2Lyve7Cj)wGKpcOL zUrcDze}Ei%&=MVThsBh|g6c8-N7iGxO?fG*FPY4h#)1Kf9yn20aSMJY34>pw>!S2E zHumY4-t?!5sJJF0O~!Cs*8Fv5&S%!$c-i;&kE!vGPt=3Qwhe3^YKq?Z8D~hb_BLPy zCyv(|qo2-3-G7yDcc$TD$X1I9>S9Avv1X8=>Law=*YvYzN{F2aSp^gaEIZLB9fY@9 zgtfJdno8hYHM?vhKX=_otAULRRdun7{%PT?0Hun~* zYD;%LnHdMW6GOb4dxDR&z>ssn@FvI{v|c`d;2^&%4C@x0TtvXTi&}vJ9eYi`sTE% zKwXFU*xSKPBbw~K&Lm^c^#VsdJt6CA!SB0UoE%uKg^fOe8F^nsfp|TdbNJxG3EL>v zU$|8V@UNLhL5XC8Mw2kCBz~F0B@9)UWFs~+G~9YdP1fvjBIjV|xTs|x?P@BmBm?p# zbzKrmC4D*+uME04ftiP&J%m)FHw6SOT}dxqQ)Zl&ZpX1 zx+CVF=e}d(7t+pMgNxRlx3TD-&t_YAp>y}WtuAf&oLefuN&E+^(wF6gCq5W#L=9{p zvW1B7#Btl!_v0dQ)1cWFc2g}`E@Z8qd-RX!(biwT=I!(Oc~o!hgZS}TwA2?NGAp}T zc*f@XoHs#%xSAM21|YKKHZc@*RHYi0iTZ;vv>GK@nZa_hMxUuT3RChV3PwzPw>@h5 zxAgQ=U2(fZmScZ_99+E1+&1(2j`jMXWhjkofN|n(a9F>bKvf%3WI4+y|ODXToTkK(ALxA!{q>gE#Z{# z;}0Dt7Q_dRYmM6LD*ALn@h#h3F-3HA`s|fCOd!9{Y?7^*xxw=3!7rzEeI~8$yvrQ9 zdWN_B&C;n~qP~9IBRxEQWEJCc^#}fpR*JG$|7<--!v1&J!WrxIG~@Pa92bs>`$#2|&k|~P{J=Vl2jx$DEPOeg zeBf^ivP^G>;fMU+1T~?0%Y?u0)m$x!oAms<^@hZz%pyCb88&Z6t8g(&^QPJuxF8g< zOUIxLi^E3@^VvsMxIlQGvW(nQF?RM=TZ8{V7L|E(n$b*c?`bU34VPgVcD^uR>SHh{ zP1|B$gq8ogyg2Ln_rVs%U+waBIuRMmhU1S-gV3CpS%iHnxLnxjz@WLArfjVDJ`eWgsJz`^dzZi1r6yj)7AS%jlHnMn`(OtnVvJ5& zU$ft{^J|8bokEh4&DBkW< zl+=uz9-%VchIPxs>2jZb0x`{C`X*&Gjey_(ru2(bj&Jzx@N-LF)0KNH0sHM`&^nE?-6VUkn8KPiIN;iW}= zY75bc@8ngmp0Olb@0&dGE@;^s!{O_4K=QlD>X^U3JBHE zai^WwnDC7kJmc8Ux6*HW-Y?nG_cLe1&Z&*ATjP>B%v>9%U9|dC zm7=VXHPeh>2LI^*kmzAag_Yn)yf!c6JAWUxb00>z8*u!LP4NUc-US}Ava&wp`s*$$ z(y|?<>*n+%zg^V%{N=(0`^xer{MIhz=r{ZQCm$c9;k*|Wo%NP)$JAl857rM(vneBn zTiWiPnXYG-i5=Txt1=I##0~qq!^wy-WO6tsW;(oJfEp`ZUG*f_s?w4`Mz|b}GNY>5 zYj1t9chD@$CacX^i}w%x7~qZ1YBVMHK5m=8yXcN@xO1__GxW5LJe69di^1t=h#o`7 z=aV?QyaIKyhfYndVY9+L6J7HHeAccFeiFL9BdwQxuRwp7-h~+~6)o!ML5eccsIo4GaSpOPQ16Nd!ddv$Qu z7@_|5d%J8l6`04>7|4aeSau*2=2SygHo+iUp+kYLEQ|x5X*V01A9Zv4*0+OAIa_SE zJTJR_LvtEHw|U`iNi*e5S$E1=BzP21c~&bN(dG*RMWRhQs!_O~-)999 zqcj(0H%+bkGQNawy160@dyx|>{qMJwlftoS`%hwD+?*nsAH`&q$f*dQD7l(5D9lcI53>KlPEF#{DkAju1OD!+deZ zn(ppK6S}@vLxb&^lCnq!23sa<*5%vFP?Y374q2F;<3YoU=Qc21J!naPs z6}M?Mibv0h-_9b+!+-B;6*C!O?XmtKJ1=8~mCwyY*_h%{zo$^}d2xlZIK9=kZh= zrH}Wy`JRXZP!USG>Hj)qiKcR_k+5CxBkn0V(_`di&*`(j?=XGO5q4q}wQ20mRAhkY zdTkyfE}>@jE^+wDO>1A}?Oqz;nt5c^Age+D{LZi>5N0Y@A z7Y-^47y8d2;uG^2L*MT{FnK)MnsMD+-|JF-i4uKQa3bovTQ&;HL3f_ZtY^=Se=;^c*f z4Y8%M`{!AvQWwyfhrhmJsf`Gu?g}desK|~!nH!n3Wdex@70?7sfw4y#hpY708noZMPzZ3Pt70mU!HoptCFMP2vxzBz6k~wjl=O-8D z%2i>rD3>SY#~6P0q;L^$>QaionhmIN@3#!G%?wIJrb%&A_LVPb&2i>;md$zIt)sy* zQ)cb}7sl$R|IHxBS7_NSTi{-()vc3M1K25Tx_NOI6yyPFTOM$dxCKHx5b%_+c4yc7 zQ~boq%wO&PUbfU%IlIl1?5oagChW8b)hmFTYa5$qA5$}dg}7H^h!8%jSMXm@W>d3W zh6q|&sK_9{lS>QI^YE=s56KG@DDbHqadkM&6@{I-!-5jKYE7^&#&N2W!&U|B;O%_< zWybv0Y|i^VuXE?7Oq^g|>9E@pWqY6FHEzsVedvVw`}scADQoKwol2PZIjH8@%;Us> zzLY?#fgMCt78D}cQtlDTqy-i-yk4kzzT~TnF#2CLa@)$SABknS$~(_Z0Mu%W7)#5F z_CWfa0V-WYzq?3he!jEK`piTtnshzC{={rpRsg=5KJaeC3T^Qc&d6tQ@I=y{g!J`R zz>9%xUMz!w2m2E^5Jh1g=3JrA`93$>!qJE5V3lGzP2)TPeM4$kI9pFG9SnpgN)Q!s zpI1nAV*j^MVCKao=)Z_HdS};sr*kheypA7jlv|`LhGi+uO>IXQx7h$j8w;nB9X_(R8~tvU$MTVHmc6q`|3!jV_0% zYRhLs!v!(Ox;X(!h6SEKHpQuT#;~UIQ#Y0B=+K7XS-^vDf9vkbCX7WZ%c;Bcqh&s9 z7PXLh)ZkG8qh+D}Edmip04XB}1l`0q=7IisWS|<0M$B9`PF6)tTszQP-xGHG!n@Nk z`>#0|X>R!)+{r77N(*{N^>KZ4RCng{-_tt#Gn@BDsJ>CLH|IKaDUf>djfyplyWWTW zE|-L3i!@t*^d0mOWb?c&VeFHvc^jZ} zw65zA1Rn~u0sDJA^nM0N2b{YSbW@^(ePb{Q!j_&o+FxcU)yKH3w66?LWD!}3Hu#shMFeSqf-NfG_pSI-1OD}kKS*GQw zyFPDQ8<`*CGI${@ds{)-<2Sc&<-0h9YHR(W9K3Y(??stQ7Rn0F%sm*bTt^K*7c#3-UsUNkQ=d%9t?$?QyV%0x<{g1#m;8PiZ9EZlH7 z>)H#S+??`#E7Uocgcz>qA1JwP=W@n5sVw{Xdk0q76M3z3A zDfs!W?o`%s!~4v)nv(&WQn6FTd#m9IrGBD(5;JLjmrZ3P!Sj(vCaw(ftK3_L<-x{r zdE%_%2izy_XW~Ja<4UH&bjh`(SQ%Q1|B8L$DI<3aM&qTo6kF~!Rd{6QQ!u-jIxq5y zj&=qGeaUSoI0>E|85*U7c_gv3t{OOsF_1@W|yOFJ(I7Hu>KXUTe zinZK`HKNcr_Li7Kk=xU`KbkF&)&W&|H+UhIQPA+1G7TOL&;E1XJ)6$<9Q@jMpN;3= z#d*G)46$0uXLn)ow)&BM z_J16kJ^1hE9dBHRx_vZO#V;GKEofT2V6J#?q|VuTQlpNm>@Lz${J+m}k2iGQp)?NL zW>0bh_BaeQml?V}p1o&MiXUrgoZ#kY5=Y__@oMY03(~H?TGnPMl5vqj3yqN0;^5pb zN(r_vXZT2BTfLW+8ZP6Jm~ShhGzw3>;^k(^2h8U$S0CP$MJ?g(R;=OD@5i5idgOR5D$?8=^p6b`Mz*t(t<;s3m7xq79|vR} zc$*k4K$S=_nT2F7+@NWANpz7@Xl7@ZYG{{3NC|l+fn;JGwolFzxc0DVNJI-8G>_Rt zFjs@EblP3TKZi_+s+=P?{x)-sFF#O6>BwEQ2(A^lSdh7(sNKbiocJ{(yR3V|EOZowB zkPq0nj6mW(iynX(hAxOj5;T#$dKacCuUiitx$|ypweV=jrR%q1)2zE9n`M8$ZL5ua z_B9CNH-McT7I;2EItm}u^8~z>3)uK^?2^J-BqBSN6xM8lIXCr*N9yRbhk9A%*FSD$ zRGtCRR7tE(W)RGAWpKH2JsBQgfXD;q;pSuw5JPBXJ1% z#DN1Jz3*&yYufSI%809(Tzbsk8b>r~s-bwwbL>o;)FGPGP`i>K2etHVJmRBu<#0vR zpEZ`jETf2U`g6VQ!}VJL49ek#B5E3>PZ#>Iv;f*FaCFN=KqCJ(mPNJa&Nlk=*H3br z*b$DMhMU&V5J3;Z*d8OtP@Uy#hwD4_bpV42FzY@aiAX*3nzu&R} zf+Kh)Hhdir&%%Xa9P8-vX|xcO2{Ci#a#?B{1fceSC&1y1i+Lar4!HrYN|@i1wUZSp z1i~YN`uIS^$1r7he7}P~zOjm{(s0pmaft1)71$YHqyu+c=@aF(HO2H}oPtY{lIVmK z1}VZf%DOjb;>5d~{I)RG3j!ghuM~f?a6y6B`8B|SF=G_g5nEI18crI4+GIg_QB`zr zG+aGuy*CbS4(gvoTY+dF+Zw~lZkfvm9uJY_p7-!}>0U%)4y@1kgbQILG)ZH-!PR5? zn9(pm4EXyLM3bS5dWY@g5mF$~ z2^f3Kc%e%uws=JPJ-pW4?XRNJ<)9$L!iXX=;8HPZnTtF|x-Ne3* z+eFKv9l=4lJh;U>&ptG1rW2f%g%mNFd|Uzp)`&cqz>&gddy5%-i3BIB!_AdQ0Zs%2 zG9N0;7Gnf_8qEKXXS)9VgSOPZ_~YPIi0<#9|b<7Lvgi~1%=2su4SApvrc z_%PRZMQXCoR6z4v%dBAEs!&OssG(OP^5W#7l~SD(oowJ9cI(VyT#Er{L0@$8uJkx4 z4{HI8g1x6g!d7WkXN<0+px+ny-%vKn(Tk9W1=m=l2SXYRdv*Hr!R8O%#yBXdx=sd~ zmLb6ZMa5ZmpN~3^ubO;R1^Z=u_GQ5_clZfpdgT%ht$$>@(eBsz+SKZ_@6TWLd#`x% zt&#O>)ll2#bC5F!Uwbdudk(ubTi=Ix-Ydb~=>4MqctaINg!dMwPO0QdAqjRz$O~a! zs}f2w2uYv*wZLoxBb1Um#V%X%z69s z-eg<~Wzx3TS^NtA@+wvHUZKoP%L;?BUy#e92J4HMr^4kv<}4=%8iy7@;nrZ{ai* z!08en{BCyUpcl{eea0Evd^s@?NU+yV{JUzCA~JfGsZRTsdx?K_b7?soco<3u0I8g{ zjEV7}$pm%@Jb#SX8tXjSdOrob#c$v?IlTXD7uR2L$vkFF3q_EWm6BBFJ+36ArPm3; z4&!Q{Txhr!S$dd2nWCAd#@K9FJdlO3Qd&7!evViQNR{yq35V9w(-nN!l5>HYq(9a& z@P=SwW?c>B0G4_bi&;t%9YIs@Y_Y2yB$NP;)ISj_gra*faO@mtxs-g~1;s9C_EeuN zKqqaAz^{f2so-H&whH^suV!Pw^L93rmpVg2#ZTv1QnGD2elvc#Z|}eGf%Q{m>UaI+ zzO#3#C7VxTg1hVi7+?@8Cp)l=Z(V{~d#U;M4sEI3GAXUz~doM2=Mb=0LlhLs~v%WuOku&ppH)@ zNX5+!k7;(o@ud~FpK+F2esTh^GXPG;W&1dW!{Z7YWyeY|=PqlyYlV>ZhOR)NBrHH%cNT0* zB!H8Za4qBAjsK&)kWIx4Ebl$^DatESZB8(>%H1#((D!*qi6+_g9SmPjLrlfnwOG;O z)J@2fZscS>^hR(f3}W9W0iJw@YHXSWRsyeuXv9RhOjMwHWXNy#uR+uZS*a)qhfS(9 zyB3B=OktV<1<2s{mBFe3zfuafu@sYa*CA2rF7c;Q#c#iPG!Jgt=C787(r*3XcT`NQduvI$$uN2AB=(kT3U@STKll#8C$36V&H z<;2mx983^9RE7E_eJeSOsY6y`yK~*KO=Jd-gfLRbY-+InmRz2&7!|?W1hi1A+7KvB zPIAG3-<@X#Sg&ty(4EuJpKCUM^CF+KDa?CYudd$}x-9Q{dgZz*qzqDHw{dD7*VrAE?Qy7vbDp8Rgkl8}AsJ<;(bj z%u0O`bvYA*CMO}}NVw%TTM4i5Z*ARtbWeMEVtz*B ze&kgC>Zhv3*Cqcu(G2EZmf= zFj3<`Rhj6=&ZLF_PR7I-&151tut3TMWk6yd9fAWG*_9Fnhok0za7Q4xT>q`&i~Xel zuO6}0!dlzz%G@JW1FA7Lqa-ueP7KoDsto-DTTpzY-MK{(dQGh^TN~mo-tU&J!gIk3 zDc3D;gse|=AAH}cVyz4Zl!4?Fz5t!Q@qXG)`Y}8Uusvp&;Jzc*G1Qbv*sVq-(q{hY z8z6Dp3rHw*Me3oWbc1|a7X>+b=@?87aNBeAKzj35^AtV+8;=qZl@!9R#w9R-U|ah? zz^ynj8@e{sx$s9(roE2@PC4JNrV%cWzHMEjeS66HzIAHni*S;J@0M=kgl)~QP>PoC|85+9p_E+GV-x^w>(OW{!qF5VOa7VfqR?hX zM@DyOZW}DRv|Ey9>BihkB@4N9lrjF6WuuA=q=dG&9~3v|m_daBjFV#dWA%1z_MKt= z-m1qW<H^5W*cfPfkB)%mRj^K_!l`y*qhWgoy+; zNiUz7#P-{9R)M3KPZ&Ag7`VzYoxr6gpovh{r=w<2`E76+pO9w({A{jHe>-jKvu6L{ za{Y1b0zypW%#ZT@+*FNz=ZV7pK`B4y00JcMAWUFk2$c~BZ5rXEP7Sg(8-@44O|bUE zCmh~UZ2h8lcJomdYQ=XI0Cx2=EO05RU;}oAF9pU{{=h#_K&3ML`GT`mfM{XCfevG# zhzP>1pKTc5^>5{wqvdl~2IU6G8l(3KBdL5^ilE&*=3hgUs9*~Q3Uv#!Fg*8AY#fzr zUTuKR%_>9C0@ZkJhm(T6Jb^$vjLE{3C=&O6BDN4PD4H@ne1dJP8_|L$EvEsXGfGb& z5@(4QkFNeu&u$3@>^->73^JgysL~pn-;6~AN<%9F0|wafU&?51bK z$8T|O(#;F6VQ;yt#|CYXJ9QGGBX3*Gmb7C>X&!L0ooRwmftW*Dj}cmdwUucN_$~eb z16s_xU1k@Ry_}(9LY498F3xG}rpJ&^!xFo4s9;}P6Eu?yFJqoqz;zqZf6+?(K)|rT zJoo2UPFsA4^qDT!BFYYYYKkhV8gKqU0CruqZ9SP8*I_;Bg3|P*AUDlzhx2$ZQ{5c^F(gh z7Hx!;ZJ`*ja0;i9W>FsabvRJpmsxw{$OR1W) zDaHL>J*hft5HW6Qr`Nt`j*azGV-wpIi+t zAPD8G-U{}gWD)X=E#Q!l9BH~P*ck9MJ~v*QjZ%YzlwpsiBNcj@bSGgTCka4DO1KA$ zNJC~3zxItr|7rV3S0}qY!VJU7I(*nr34!U+d%witY2{JNq^pY)7HVyQT@;`kYwx0h zo*-bDLE~@hd*su2S%{SB?TnXfx@gNC4vEE_8gH6vH~y=5*v&P=Q4@RVV*1*9RwuU% z_grJH#}8P#K89|<%4p1sjX>hGwRx@>DHLQbM8wmp=)Sm+TCuA_E1_i1w31Cgl7jT( z!Vp^@Dw8QG`!>vQ^iC>r;j;Dd_?qlAj&c~LHfT(~4-VjQ)WgbIIGcL8lFQ}n*bXq& zN;z4r)_3Q7?W~*i&a1G)o02tE#$1-So8cUNcS+wS>ZRjW7|X=)oU;@HyVw6k@R*n7 zCOH*nTcS{tlDDdPDF{VQO&u1+G(0tG5csitQJkb1gKrbI!+djv`1804VDDeuO(YQS z&Ea(o-3!}PC^H3+Gk^zh zDvmQmC(GMtbq(PX5vxc5i<&Zq&+^D3$UWbK<=c+>(;{?&X_-LZzs9j6*aqQLFaZ`Y zm{+PY$QF(rg09-fmWL^Nsr}-5G`9qkQ+xq77M?oqbn>MCd?*KRgH7i(+sDElNGSH!1?U6VevifNP6MyIwYeQ?j3+I{mgK6Ni!<&d;q-7?80hKe1P+QBU+%b zQm3<3l0As7rg*Xk3wWihuLtLIAa#0j^{vH zQT9qCYntc*i&GH1vl4+_swZuGuaP)oaw;W|VI8lKVWb5c)-06!s&lMmQ?@asUssLe>4(;q=4-f=NaPS#zix4%MVw|{dhc3iBXYpY90%1r zyj(07nLG0^Iw(%d!x@Z%D(}7p8V0H+jR8hm5!TEKK*JB1!8)7S=ThJ*V77+SXDm+t z;y;l1mHt0FYaQt>M z9COC8(g4pajz%%;vsk0#s)-7&Rk%{gsjRBh7;>!?Ry&$Vi1xRM1DCgZmxc{IJ5rwO z%c5`aJj-bNl6kyRBTN_D3aAzt{Scq^DG8VvQOCppM*j|6#KiVM(Ds?GMtq!2=mtG;*#QXF+!BpzEFrmPTE_#!px zfoXBj!5jCtN~N?WRuG?o;p3#3*ckR8U?n@MR7E;K!WR_8gBluDO0Dr*EtL%Pa*BL{ zGY_48;TtmJAWk7-<9rsm&CqD-iZw;&&1POZB6K4qE0Wqp#|i_FNDsHCmLDL@T100_ z)XIVh*T{15MSuhLEb5jLjE&0ov7R@^yEVBb5T-)SSVlW%@%e3HrrFOs^WTk9CH0PyX*BsCK*6kGPnd>y0HHhkb*PRc3pg{I%^ys1-^y~H-|cOYQe{q) z{++_JSX;L9@mY^M>p4r5dF68*ul+f>%2GjVHzN5#kex%NPprpACzHIhIfovfP*#F1 zH*q)`ka&nZYFJdCKq;ju1Sd7Cy?s}p;CcqjRfVf4UwW!C>|S~iZ%pL*@87UZ`>4kwb`XCs>W!{Wr*5}hz}I_j z{O&a z15A9}^?nq{vuN00{}yUX&c;9n`|{Yc#6QDo*Dl>YD)&2|r##4cg&fz+KW3@+GwXd5 zw1zTVvi_vLOTBt)I38i+?KLC0$<+rQg-5(xZ=w@>#V+SvGbogA>{&)WQBPaRY) zOi-iA(0~U1{4Rtm_E7^}d^bPOYL80elK6&!O3)U)hUDf9rye$rLI`6ZP{Dr8Y!OsRL_xarC0+RFk1y$02~MW)A@dI>XJgQ4?FsMfBf`aup>-&L*BlVIU&t|q^DS2>b9xn z0gomeca_>r5CZhsf>nCTWyq^b{}jP#fN}*6HK0Huk@z|plER*Z-)^$p9k50z3w*xo zrqB48TEbV{zsAT3;QRE^a5NdePQ?xyP_Z@P9vB8ASz%aO$z~VA!XJu2O1y%bU6HH^ zS68Z4!5%Vs=w#->ImL^J(P^I90wxw}?Qw2$-{fc6 zI7>ZOjI*>F=cs?Czu8RT3+Wg(>b2l?0C1;L=S1^$-lyr~B;-YovqNglcWH;Qm4|Pk zfUSDGKwLDxXX~jsJV2O(9H%C@?piCJNdxrK6mZGL02&F1O8evk0q8n4;yGO+$KRBW z1IV@gEAD-4=gzcR7mjTbufl+YR2=sqUd(bU)sCE|bP{aGXz0S)bGecr1d8un`>;0c zD-BW0|FDXPrchAhdy8hWm%)4MP|C7PrDs;F{8pLbT?;E*rnB5EHb?H^&rgu}i+uYP zGyO@6)j(x-_LC&nr7}Y%Fi!#*o>xE1KS$kstD0@2Y`??mNE8yvJ67Bhd8fZW%UClY z_raPU1h346@z*T`gF3LOL6BT&A?7JgLV{x7-XIgl(2nS1MMb~sUA`T{AJAfM z?Mzby=mjcROtuF!!I#EpFx6)V<@UZ(z6iQ$WDcV8;(Jimq_4if`WkwsxAfo)?^W|( zj^V4tiNO@_d2`)AKk0k%m+8r|WzH{r3UEZ$B5m_4I;j~W8G$h*->o!i`D%rKxrf)` zAZ9A;vDL$yo_O*gg@ckb$^S>wna4GCZEt^{lYtNdCLv%L4PgpVG$0^iu_qxwK)`?r zBBBk03J3^_NYUCu7#bpAm@MMZFd70XDByU#0l^tX1!X7}(N;k1)mE#u)4S>K^Tt1f zBAu%Q|0bXRCDb%UAACU@fSN5p;YEZ28>WpJekYn$(q{uU8n9j zEAXgyCZPYu@vCM6C+j1C?zKPx)wyss4ItnOw24}~c57<=XJ5)<)$Up^tji-t8bTNR*AYClx`?&w(9l1bNR;a?mq4fI9h_&3j z*u}C#1+BKCowVG60Qu>B3a;bpV!8o0wT_Hi840f_fpiyEU}&28)X zI#m$s@1kmpBU=Pz-ZoAQ5TOks{9S%eVlhA1r{|cT*LAA4$}BYW5i{_dYt`xFPwuv> zqJ=PCv)9CXT!SX+EENczHYXWCAl1KynKf-4sz85951f8}Ehg0Zxa8$WGv zr74vj>u3(Etyra|368Ono*+4=k)sTJrRbg*zR!@ZGnJ37-WYrIUd`2~AJ%qq-8qv; z@#chSr;czlyJC-)#n4eE#)aAS)2=PZ{Zp^p$#i>Mp7ay(((L_FY~rPF>LPFAAKzS) zn7<}9%~r2%TeW&Mi++s*EmXshQK8beA)W>SMPaUT$w3S$B_P5$+BJpT2HQP>CeVxU zfUe05Qb_RQiu)f_{AR!W2eUIdM__A#SNOz8WSDJPuh~%p7FPP~s^@>MM0?LXCe!-y z561mtPOm+kmR3;c;?n%$jU4^N$p`?nt}R_ddLo0tNO5>T-!+b*9~kCJBnX!QqPCXvD1#q2}JsO#t>R-+>-R zL)T<7*W`TT_YkLkKtY4I<8WJ8#2=MEw_m7nf46kC{D+Z*AOYYBLZQ=iZpOFfE-pb?*C5Figj25t zqbv`l*pU(Qon;iUX@X=%vzR%Zf9JVhUkNM^idxlk$#OOMqctR>Q6|5gI0FkMLJA1X zBxXX zb8_Y2y)t2##(LPXm{%Je36JV9n@VJ4W_rCg1Bw`=!zwklRLgc$@}WehEYQPpd)*ws zC#59b?3$N_-<9ece6GF#Dcd)#eh|y+^ODx_TDewdM}CtmG%Rddd@?EsJQ#|<=H~Er zC)ec6s+GrSVOxKVy3}ZUfnpx_#Zu#<>?*P7)j}ss`CAcZm6jrTPt=-f38a`Rh}wjh z?~47u?B3HA0*?<_@F)QvV!Qt9(+`^8_|NHxLuW~5+6DG$U=zZd5dT4(8T0!0@E;&a zK0XRLG*!PnntrirR`}Yl>G7&pdSQHJ#^8>7O;Kx3f0$2?yp@del=WU)=Sc*Q05571 zH>EKj->gZV&v6j7MXV7y5=Ke1vU$>d+Slvd;*btn9Y|7nnu~>r#i-A^C;~}-gV;7b zB8$XqSr~@Nu@PL(8upUG&W}6s>lwR!+5xUiiIELWjdUmoV)qth!{%{?P7;!Q!lUL& z;N~X&mhQHm2*bCDA3im~2t~Om|IDT6b8bfi5B^PDcZ2M$VUvTK%nqYIAulwdPut_T z!pkK{KEl~*cE0UPGal~c{}kYlz!Ky}S3~_R9T1q+Hx?1RleN#7Wq#rR4jA?5=G{jT z#~;3L(1QoR6%ve)2goE@OTG4M-f~_REC~Zpn2`q?hPrEREgg*5<6reE5@KiqPBqI~ z!Y)1Ve-e@-TXXt)Dq;lg#iru^7K*M#{L{#dhSop=Tkl3A zQbjiuM`N7mQ;ggMOgrRwb*eX>jiEkT3P9|uGwuc9Jzh#l31ZO7 z_n$YtAzG8;`rqSKJ=w>eyj`mpFK1%rLC=UWZGYaHX-I)K*-# zy=kMTy8|?VQM@{jDGE&amw|FH!|yeE?C8p(RmW)lj`D=fMRooQO=T&|dNj=3)jb4- z{;jnca3fYw9IS+TUDT|D&M$va(F(AO+&qy2O;RO4uc~r5PKp2bGtp`&Z>K~{&tDt+ zDcY2>?-kDrpW(@M+5(ejDD2+=+M46;n{|WyGS8iRe)(ng9k%J4k9kGov<dBJ%RSY(SOHQ`s!J*3- zP?3UG>>0eq_1`b z$U8~{^~%nP>)EtoHUj(d@wjLaCgM%9hq(9lA1G{ZXVotFb|yC{%PNOiWLJy4xY(ywhvj`4p*#0 z^AI+hR}pkPP~EcFedG`wu2kk}+Jl9hD}2~FI(~cW$e&3eo7c_-sOk5nz0W#9Ghb6FHFo%F#?<_bba&l1{mu5h>TC0 zedusLp)keM`=V$4%Vj4& z)jx9?+fBx#g`@>71rDp%Bt-_u5hBvg=-ik_sV(R7`3((RGb&mvr3}aFj@+vSieB8o@7h}hoBbON$ zhLYEw*c?85DQiy?Y37J7+qI6u`i98D`tBMhCfdTCUZL74K1V2|dr;h5JmRM)^$!5w zPSKH!A=C90z+Sby$3y)#08&N%bN9lwgXO94PIEhE@1J!nf_HV3X|rB-0wL!c3Fsg@ z3U4ZPIGYl|ae~9fIoa|W-K;Vlxt0Fv{`4pR#8KCmM^}I0;3G4+T|23Iyv=x$Fz$Ea z-kxS_Kh2H8Go_)!Wx*ZnW{-_f(+qib&)+?5@>%~LpO?vFedKYp;bJPBVeQU`Y}~#4 zzb}9F)tL7M+T1nz(9THjCniyA&Y;b$Zr-HM0}W#psKUH$7EA@gE+8z6-noj}owq40 zayJXc;Q{l93^0tdfW;+!?Q~LAzI6`VP!X-A#QoHRi9=h3ecRmR?tu^%0SC!Z`|LOS zm8XNBH@BY734f7#&uWUX{KjXM1>!{u8y`;o*h4s+~ztP|}RHr{~x>_Y~ zmnTt34T_NCzFg88#7f z*;|ImVi$;U?Z~%}`ke?>Ghy=2SDgEGSHR*IkNqQQK%{R-4hr3r-`Op^Z1F}V;^WrQ zi}CnclA-dX_jWr_SgN#EDF?Rhmdd^$blEflklJlc^>xuj?cm`Lny6D*>ksW@1XZ4j z{dz8X>-yHNzm`Ya`1uJknXQHgTf$LCMtD5cw&T!X#O2NMSG~4pmyj-L&m-Kdpu0D^ z>&i67bYmwAn1Z(P<^o?!JT)i)UB3~A`|A-^6u*2D`bx40A~Raffs|tV@W(J=n%O+@ z4xCHe*;uF6W{b(yG-EG(4M{W-n9w%a^KYc(zQ6(kvqnNgE=|0DpP5k`zUl2>3+|9p z>yLCDnSA*)?p&+Q5C4?h02@lqv^?lr<8>^YvYd_Bu;GldOq~aLgmvWSJIL0P1P-); zYYXXbP6bGo!VK$ZpdAe!1EuXPD$;hyf``k|un=^{2*gk&1!H+_{Pnx#kClbJks~WD z;>O~=J=>P1T$)|4Ms16c^QFn0DgHlCqErkm|Cn1rJ%~RklebbYo_R6rrKU+Jl1bCY z>+@P!><-Lw`^v>(P97l+u9%OO#Hw1`l@~X|hI_q!!=vR*AUnW2v(Vxu>1vLov%#G* zPJci(dGdvcIfFVsd4W?khxN6~iY=66(#$G7o{h*1FQ+K#g8A35Q;V*AGf1x4`s&ok z^>tnvznjl&`pKcsd~#e*f9^bNR(I;=vr8AB9t=ZuL6QHpKB)bsH`y!NT`-TV+gbpY zL_LWcF`5@e4F#ues(}j4*SE*t-MV}4)9okY*;mFNT2=`QnC<3$pVtY`Zzybk-_XKt z&6RtfTnZX=gG3Ag4Dc#Ct4mGg_>frU0|~HdQB`^x6Gju(o6>C3m}ac!aLyMpV**F>qu zpBS#`M9-~_^?Z(hg;SN?I^4wYyVTzze62XJo8H#T{9#UPZYqU^Z`hou=EO@jl`q=X z7)rUA??*zbLAlljvv@euU)Q*?Yn66H4Y%FL&b{q%DOT+BQ2=@>j9uxJRSTBAw7<)F^JMdjzv zJ=zgENlNNC+%hu9Dfvl|fQPeSmNkn=I4ZsL?vRhh*8g&^|M6O*WefOb={w2-BchTV zqyFfY{I=s&$d65}2eP+@W1vmz-dcp4xWBn|p3qw#dso+3Y;^3xH(=$%aMzO;TVR42 zR{bOHMSG^Dthq*7=wuVyef2sY7G5#Js)jN0;#6Xmaf9f!SdLtDPv(UbJ|a0ga_TDt zzH@Vt7oUFcaadYfxfBio=VZpjRiY*Fk2AsW)a*KiFMZRBUAnx0S0}Npw5vf*Y=c?_ z@M$jsbDuS0_Nwkrxs~>jbF6Z2fnHxhPg(hPw_{eO>_z6Ql6Y{7tB-WG4_V|qS$onL z);D^Sdqa+$3X_FWj3KbD7C~&19lKA(!cg?Y$ID7nch|V6$O8TMlw7-2DUrP!#Qwzv zZt7rw^>*2mo0T^NNqemsi?!7GCJ=aU;H?~fbSFhU*g^5}VA0!3sI)td2M->~8-cER z8+^V$Ih@>fEa$PlWzXk@w;DLk1pkz}o9fmxghIuC(E81J@0(}>+U(@2CqEtL%eqQU zhpNM>D|dav+U>T${sL&lKlY1l#jr&sVWZED!bl_{&cl!)imaG3E?hn0=yVwUiXMNN zuCN*Lu(l4TpC!DP7D?_!bFw)FTd7_{Cnb@5aeO1uSVSVji)F&o^Kr@GPt;^;+>_7c ztu6=8-MI6dD@vOB<V<9|_WPjKVy^Z}6rXxS`cfFpZ{D&$=kho(=Wnurse&^rzKhlYYft>-8YZ>;O7Kb74V?R;V=YaazDK>c}ND;rJ5fjQX9j(4!i zR=A`lf%fxk8o2gy?CflXQZGJW;bOl4{w9=Z6dop6&3QQwt1%=cTWCz3B__FoWr{|^ zKjO0)My&lo0}k$mdkGxEN^j0e59|6CMcq}z3QTzvYNdsvm(=AZuI zVaKLNPW{`+-?6P|*7She9rXEt%jnV4V4IAXFv_##ZvC*ME?@-OtyBYSgsfomK)Fu< zpv!ED9jy>l2V_E1b7*G#uoodNwj>E=fAu}-b9wy6gFvrS4-a3Wlt@`4nux`bMQTPM zhg8lgvkXZSIrOnX()05wcbd3i*2i-NG~g6p4j=LnMKg|wi&KYWJ70ft`c?Crc#6n{Wbh?$bFg2}E3?8B!1oTSj>upHpri$f&|qnFLhk%9!~=N1t#X zYY5e@TZ&vHT!A&U{^P|N-GAR@&uQRK1GjzBLwU@EwIGk3|IUOKCE8Sy-Z3g6hVXj>3aNZ*qw9}q(Tituc{o~?4^2aN!& zWp@z$$SmODT2LGrY{8HMq!7BL42KZm(NQW11YPZGHrSfM+#rQPdZhC^X2yLZAKIG@ zl$@}x0t4`gLi6LMYMUN5Hr(Iv_;pc9znYH|{Q?_?a5Ao2asB!;8lFT`AFu|BZh6Rw zhmeM>6;xmt3?*%Y%nN{`Ni%0vKMv@;coryKY_7-w<3)J+q=N!Fb*sh2dLqT-M7fInfsQ8v*E(I%_J^c@IUJ9|G+1pMMm zDCp+e!6bf_SLdg{4-P;7>x(<&_@|aR3Ge?}w$J;^zZOH4p?JeuB0ib;`f%T8NE{{8 zcja}1X#u=jm(mr?Vd#D9;0-7Z7vfg5QJ8OvM!Hb2yW_Be?PCGYIP}sau}m1=9gD@Y zh?r1Lv;af<7v-IQZ4^+Q+3Ft3rp28sd&b!kw|KaVExoL-aZuIA3ku`820XAajl_m4+Y7 zwMFrsU{*Ltdo$z;(SfdGsiEJwu(eXb_v;)! zDww5#2#_`!HR`n1ba1sBO<2DGP;_b@TdxD47*`qdRJx}+9Ht6T>`B}inZpUazFQY) zab{oJX|9Hn9d+V;Af-f{kbm45(W>}S`E=LN(Ajrl4YSp1E@I3iVNrF`7GgQbIlTm6 zA&%Ph0c62gg#kCW039|nUYllofQTpIVb$O?bd_*5L>pzPhmgybl)?NC=2|az@r_FJ z!g@~pJ{r6L*w&wgU8G1S%h!;IcB&AzH4(=izAn+*TWo-R#JN^U2NoGV8t&TE4VD3B zs02;ED7x2zfUep6wV-{7#Dng@HCbQu$DZ6la>>^4;13gx^|9x_o}X(v z*&47^Gm||LLD|bZA0qJe3O3j-fp+L3WtldMPP3>0994=gA)iU2%b|S@>4-6pR~rM4 zG^Qv~t)3HAV%)+3K&`HF0ky^OW9vTIn{66xbvU(t@@R-fGsD5dtvNI*wjh!n6vXn@ zSXx_0i0-|sr}y-Cv(A`ml}W}vrnCN@R|NugsK({B+CEjSH*gY|>?MUV6T5U48$7H1 zSO^#nM4WjLy@N-7MrNT6vU~PQE@k953eX&(g^k-{P8wk!g|$QDXzWf%pHL4<;evLri4Gh1HK8s5 z356?V1G~k}aNo;<-Ve*B-MU7;k_TrKhr4wWB*(|3X3g%s`u1&v$>Pyn%Xc%Aq> zN4QMBqfD)rklc_kwv9RJY!;ud)gx9kX0N)YwO5nk#d*BvLy6aRO_!A{I zKX~0B5wTajO(mU4GN6ZjovAW&($HBrT~eqL9earZ-lZ-YqDOvbA?EScM=P1yO&G=g z0HGwYfbEK+!gt9kmvn#u;@ik6bgIh27u_FYTF_tJ^77;lOnvP6Ckk(Kmy2DK%*Q)C z=FQM`Q7aG!?&rEgBtRK08!a)qTG-*7*@^hLKI;@15vmlq4u+pR?ZTARxHp&mI_9N1 zbj21Mz9oZkb4>6S%&AZmEl#lpsY;;CkFVntkBfl?CXBSvaVhW|#c2VmRyNAPzioK^ z?S$j6zucGbzBJ&ObekXCC<(fu<=hsoDkAlO0ZQplCGv^Iwhf-$x7!TQ7`&TwcR1}(5{EkM6ugWC?lR$|pGCx^v&@@IUr}UVv6ogK2(-#1|C3rnp+0(7PU) zYb?W*PcLA2z-ytPiHJpcUt_mvwNwgTQk784Q>#3J0uh)W>xFD{*0ya1uQ)k|$PHo^ zwr0y%!FToteu%=>EQrec;ccI6`h2sjs4jw7Y;RsBufIO90f4gePxFLZZ(fs4CaEeM zYhQfD8!OHa5gd!)H=9Lbn8*rXTFu9&q<3a6_J)dN3JkC^y{xy@L*MsGW(jrFsV+CV}C5B$?>>V7V3u)FsQ=U=@m8rok0vC4=ZKO()^RzZVW}VGgcy z{QA#lE4%70|NMp55jU?2@9CH4cIr}p+3%`9*8?<+MJ#VCW4!P`{o^ZRTnhh#y}C)g z%27Opy5Hr2g2DwZy+i7?d}q;ew$NkzWV)SXT_;Xn>Oa3gApAmOrt`~j0<}@kwWG*urmQgY$T=6JYaY4NI{exl-z}>Drg2$E2`MS zJDg|gbto4R6C=dz>1n9ar*l??d7;CVXu~>LFy7$Ckt90;BHmZa7O2k(n9Vy41={DtZrwpE&3;R@`;WWxQVgZb+~zI6_?NTK*^;Jt~2Ck4P($wjLK=DQYmI^ zdub#g;H2u7N)L;CK&2n(;1^yvZhzsts?{Lysy#H+S$8)I=%qys%RR>Fg(b%LCv2GP z5C$s{Nlu31`T*Lb=q@Jg579g>bR#Q*NlY*OoX<8|OC*tEyWnKLu)!vK0-gqxY*#P( z0cVgI2P;`V;)BX|qH*a}B485%&mK^7k=0*rvVTei2K55Oz_Hlelu)Wj4+8F3E zh}z&GMAbzqcd^C+(6ltmRyY}UhS}nFR9yz33~`nd;Q<{se2Nk^vb+}coC93Foz%Tt z!;fnajI^2!m8!b*+Sxx-H-pBm}+zC2Q~DMchR3a4xE~yi15<&@m#ncoCPi` zTnq5RK__;3$kKg z8?4`Xi`aeWz`9mUP+G6w9qJ%mQh(qX25v=^Y8?;Dbq`LVErqYUCS$0aCHj~XR%@z4 z`28VE^p&7=MzPE9QHx!RN$tm&F$g(Rhn}MbQcd%LeXf~A+c;i53*zJCYFcA%4CxX|iY|dBvf<4-8CkP-akAFY1mu$}A#l2~(C!9HdcQO8@4(czxmow)3rI)H zzxiWX)Pd_8A^broN0^!p8@QOoTN*+s9gD}V6+nUDW{Tiu{EeMc z*2T5LNpR5nP(HuuVZ`C#&oVt%d3(Iw`TdV!-#1$GHXJUE+b!pJS8aM;Y;N6{mb}4I z??MJrTQX}K!iGMYL`FU#-k4r~4f%_?l4OV}L2rmG#0zP60xa-SxXW;DNMlN+p; z5=#mq7$=xC~V`~Jq88nxL4D71gZ$@V>WQu5ML%@(_t8+A8d&JWm5fInOVqp^oY z;K;LFnypK3=34HAWv>Q$)Pp%0b`C*x-(^!gM|&UHAc*~KJ;_o{qSn2GwQ$QDxjO7;HZGitddYbF?Ju@ji&VC znMw@s=noosk|}D=smI${_YFc_SGcQ%D8F!&?gA2xjgkJKY1{%VUQg&pvnq7JLCVWx zg|6+OYgAkCAaqbQ^bqDjWJXXaLdpt4112y(5(5P*^YL6&5f!KYZDi_sykkS~j(-AE zm6xwA6FOz4MLijFQ1%CyQF&VJ{C`Q=0H{0S^sT<2>Jn zn=SPmZO3MZ97U$iE`;H-96)>b2Zz3UaEnzmmwu~(*yS%&4*WS%T^*sOU1y6DrBX7@ z&O{)U)7Owk@+s*0l>8)Zep!LwEuE3z2^2*o;|>PBvCuuPTTg^InkhO~zT)ETh+5qi z-~>KWi4R=}-*YJBl_`M8Zp-^Im$CE!#i^ZHng#?|pI%t+0WL$!VxY{TgtC_zfWjmo zZHr24!OhG0Hq-$Z+7fw`GHduxEpeqiF3GUnffT}xQuCwoTL1mh7U1-5|D7aTD59 z?Pc(Pf=Xov_!*{uS}hXG0^I@wPvX`>kAyNFh05>jt#2X7M))m zj)Pigl3S~$D#pVY9;9Bn9P(>IF39(;+_@{pgB`x^dgz424?&r?*xptkepQ;j!@U%F zUf%#3FRpJ5Cqu@s7t6Y9$dZ1|nP!Tm0mL`HABfZPqZQM3143=+IrM%V#ks2CCqE2(&G zPGqkPF+5kyWc=8%GhLI99LcSIqKP=*u89hD*C(9fS!+am^f1>?F1vR;`~t%9;xrLq zYvUTPfV@;m)KMpD+sIZz_y<&-sh1vWaSU&}@~q^k-$arb>)NdHpxt;k6;LQqgW&;RgK@xy02 zVk|)s);+YuM#a6)S$&_PdP1o??r#zalgTB8zSh7JXp^~F9%Mknnd7z5I0W91>0~U_ zD3BOkz$4d5>dz9%X~uY}u97=$R>B7w$v%k$e#9KULqVYPd?rfKcWWLpvJt=9pS6A` zu^h&1H$m|lMEYq8F^m8OQPE(GPU(|h6(T4NzTYX;mI9{E+$7A;wegyon*q8-fySw` zPwaP|&1rW1Qu<$u)`7kASf2t_bq(Z^cW!pMS133FRuF4_2+)DqmH-#Et+(Dn9#W+Y za4JdtX>BN#=aQy3MrvNrZ~S;Sqa+_yPaeg? zpG3yRj)*?&S)au-16`s3oVT13zBK{v<|6RWGs9=7~Ly2Q3$Stg2us_%Isw8BU@ym6(qL&t%uNuy_A6@!b6?^%K_`0su z4as#3<-Q~(?EL~{xlk-?mo}|N)22|>N=v2kEr}U+VbHSoyxGsSEKN1Hr>-W$fh`o1 zSS$ozWqd>73A9v7eIb>Ze6{M=U#du%&h3C6#95=VmJc}de&7fQ| z#k;m+D}mgHVdg>RzM#+#NqQO;`f*r z0R++v8r2lfzBzWMJNK)CM@NsvTzDP5x+M1Ul@d?>`$NW(MZBB8*n+~3q|(ki9*{rG zjMI`nQo>d<4KU2l4ZxqL!Nf)8;Fik=EqYZ*(}7+)`4P=Vhoa&37n*4E1C7a@JSv`# zg3)l|0aQf_jzs8kVSlQ1Lib`+%P&R~ zT<n^})_!cY>6E58H(UgviJCk@~Hr+TOVc@G!7W<>=NrEXn4|On$CjZ<& zF^j0sxME67{qF$durQJ~c;cc}*JOmy1ba6liz0#5qhup{$>3PU@#Rlvbpy}dM;g5r z-yZ1tC3|@Kt;?;ks$T=ihV(tbvKT_O zz$2VYpb==~!PItdJbU-wFXip_l@OnGwZvuj>$Kkv9E{kCr3lalFoO~)x@}9AkZMiEp1D$?+M)V#dkYyT*{&Kbi@vgTzz_@b}NzY_E>Rd0KKnWkFW}# z)U5m!$F&pXkyO9;pwQve&RT4DDIoBc_A5+06#{U-BWgYepUD{*jra1n0q8?HHh@ZZ zvR0Z}g3LC6WC9&Z!84R-%Bo29&QfMV2a&CbRI(F^;EhUb3&@38VQ4%8Dtr4EC#--=of z`0SRi4)no1MTuG4dCY1)uhw4&m1NtLiu^CMMwO=Xsr}C~Gwdi3kh|tqp4S@7HW+F+ zuLH7?dB}KRzaA8)B*d7qv{%??zD}6g9#nO*kDJ_ns9e&xCNeGFiCWRcik3F8R5sQY zg(&%1p;-doL_nh1LTTTLt(4i9-hdcS$+do!bYv!{!o7QD^JmebWDaa*QmvJ_q!I+8 z{*uVgV7hBu8Bt>aMSNCzX*2PIF<@Iv5pb}HLL+yCdu3VNd)gi1rNoB-s1>`bpvZKR zH4GtOl${N107RIWIW1iGSyi$s9TXT#9dMeNf~pf)%#Ia*rHf2ophLCqUNPiIQhhe^ z|HVkR;Vugw&pzM23ogl^>vv1%7$_j(LkZEm0Lc?N8?As+BOfSBn*Yw_U$-Ooe@&BY z;WGmGsyF<@g^oyW(EVsJ6eP|2A-Th^?BU;BC}DE>$L3#KB|H0>JHHkkUcTwFb64#7 znJTlfnv$8N#}iH!y$ol4nU{kaj+A;nykp#Nswlnb!y9#iMZPDrFi1MvSG#j(o>JK* zAC36-7i3YXu(ZI#W2LoNdQ^IIbEMF-w=MqMD1_}1rM8g+2xBNSrKxz|?{hCL*67pw z>W+yLevE##c}rNGDhUKT`HDhz81Fsg8CEjqQ#!sYvuu|qC5v}|@fPj`=lPQc$6<77 za@$X_$`)7!jxG6&%wAh^NAeeeIQRY!4 zRjk7n!Ym!zt3CFnMkhOoBoP!CtyHm`0`Lr2H+$kbxQ$s<`-asR+jM%ZAKk?-p)Xh$ z_z5O@_i3!ow4k8PZp%vZzA&W?nrXRqBRuX`&67lFA<#TomiFM6wQpibO&Qj!%_T>5 zC4PSD0dXJ{c$`#Caloy>KiY$v(1_LjdpQLtg{A zK*JPUpbC`eYi|=3!1O>n5K64KgQ*G~O(G5%BYi&Fk3{t!T;cd}hdLgNwYm8e8sO;v zfT<2!jbooQ_s*{Pw9-NQm{2-3FtM>-8WjXYby!>2bN#bEgh3F%U zSyt{v#Gn0N{NnyH>41WL5%xU|W&9_FUwB(wlfAbMZ8^vS2$uiKMEMo?7>@$v3ez zFF8>wXD@O{K4xtuNnYA#WNaVmAYZ8h%=iI9ads)tBD}CLx`!cn=A$@)=tEa(qVGpy zu_qoHC%_mNe21Xld43Uq(D{`?HRW8Q|Eg*}k)#cX%myr`UY?!DEqqY#<>2816!?@m z^o>VWLtQu|hB9Bo?Kk4tg~H1fIM9JX8Uop?3+>KOV_Ytti-C!^z4wu3yvF?Y^~2lW z=FS)PZYX63@gBQNrqr!yoVKWU+W-3hMJ%m86Izar2!_JmOg}I5Udd~TSrQGANni=z zC7K9*MHztrlSZ0j^*(QY-M2(IyT@I=K7(`p<>Gf+QZ79^962O3p??3XChZ&A;*t2r z_0f+>KRzX=c`A}h^|2+A(BKW()Ear1>zRh)+E;_hKDE_4rzKRjw?2e$Dq>Wd=Vh!! zXXu~r%jf}$hKbhIXBJP|MkEH0n93l%T=731P;&$op7+9Yr7Dq#rU+Z^G%-0cUm1$t^CoK}?a@12_{Q|< zaDwZvmc;@~7!;%>f8eU~-*T;y4s&VSk*~~HX76SqU3)oyMc3Uu^U#S)pvwqJSQICI zLY4xiVhtCf*j!QtHJ`{iB8hS4R5*n1ri2mXK#*3`{2^0O6(O~3hAw=H${p?%&+ zT0--mQ}CPLAHs&1TFNkyl5i~JXJaPL4f(v^5%QBrnuW7rxb+n&skSE@l zqc{FssSgRvbE}+gwWP<|xQ#Wsgn31gtk^xrFbnhxUY`S7@-G;QYpQhnW5<4ckU2HQMyy3J}+xC55nLBQ=7;dfp zh&8w%EkSLciOSS9>P+LYRYY2y{mO zX8@%tU=k^jKuP6Fq=2W10|Z&7AY9IpLe;({DR4kf=8t|ahSw;CrmHc5WwG*34sLA; z#0Yk>Q;l0QlsnUT^2d2e$st9=krQ2cHrS#>({{&;DSOA%p?0d&zD2V4ZB3T%E&!-8* z0Ah&^u9@QxH72v2tx@Oa)nEEDhuX9D&8G#ILVY@;u9#mux9ywwOT90@t4$&fM^ob*kYN+24x^##)|~Yy zq>LbFl3lGMa`$a0K4>EL6rzUVK8DvO<0USIoy!V%`k+o;LyPs{S`N2CL0qiVbAw84 zUa5IWBqIKbu~Rq~(ZE&X1%6bjN=H%1$~Y9=NJl+Rvn@`swN5>`t0y_yl^~V2)jc8|>hEVazi zus$cI$Dj-mk+BGgZ%9&d9N^&jl33OIrG)*)H$Z?in3X4M=8`Z#Wp-kW);XLL(BMQ~ z1zPsS@{CSAJNVWWW@p>YpX9E$QPbr$p}!0NITrae_U}~lOZ%jw zXP+v*+$K98@q61>`D_Fz?wUz$v1Jcy4D+^2(nmo%r)*CXV@@+DyCEsGArn^v!~A&B zTnar%qN{Bo1uG4buZGN!25PYhR0A|r(&h?HaGeI#xk1Mz8!gUG6poChNg-$(bg~oV zh=oiFNZv699hG0KjQ4o06iGixS!W&V!@rC8M2(sxo?2N!EM!Nle#-UlnWRMb6q~5) zmnS=Wd2g;i;x)FbedgN@;~t3G#FrqmTa=u&BUuhO5)F?mvNEJ$qW<_qdQfMHm?#l2 zn<_X|h>@k^)xo9!Oil=S29i#A0*fu%cj!SE_c0_E1oG{(vT)JeFnc ziNwdzqJ-@GYwVo1-zoRAlL;+CA8zyNC=5fxMuW~tPxzFQ4_yqLb*iJCzu;kH>Lnt+ zTf!r|Ev+a-mxv$!l*+}p^lt4CZ+tQ1L#x1l~~vguK?520R+}Xp@mb0 zB&`9bP?B@jDRlrr4O5KZd{(zKC|^hV$$G<1bdV z?vEQCor=x-t02y~YUXN(`P^XRXop|(`pVBMN|`A?EqPN|SX+p`52g2npQ?(^okcs$j56-?})I$3*H`L)yno{aFK@m>zpMj}wfgwLC>X-{r*k8kilT4E~c9@&o3&>d1iUZQP z#gL0-Mp{_^q?$7SV(Eo?1oQLPkIZtv&%pdPNdfk-5nT<@K>e$eRyAMoKajrpzz3hK zw%D3wYgajc{nA^xXWz6TgZahKlw~B%%7kDNl$JBpAPLdLlGI1oG)~T!KX)V3MFddPd z^x)}L2qvaq@>MlFSY*FMZWDd^QswW{9m5BX!*>6-9*QMGqnx4^wf_&xB#K6Ir}9#X zV~Z0tz^`9p<|sMfB;Z78mI7(YUP~eQdhj!vNV4F|Bfjv);-q}kL}aob`fl`t`EC)t ziXssF$(Ow+0;7^3gbr|^a-q?{q)1(AairGQ!MJ00&_Oc?K=q|0F#+OVeetSgrNOx2 zE!pHL5mdoUJ$#b1`Mi8swCG{^&xa%HWAl3QH{K4tbN^@Ef`jVEznt9!8KR8p8kE_& z`OrMoVH`Z7Yjq)a7}!qNFU+;=#`ClSY=I;Ru4zzlPLv|B7(>;~LOveS?>!Abbf=>t z0pJwA3Z}Rt35Xn#vchgVL$d!_UkXmbWWo*|_}KA&@J!W2RmP0smasy8sdN?2df?a6 z>wMKxCBZ!76OK+6cCh2=bWbG>Z%*U6{SozID4o?}6(w#7z7byg^DBperN@lbRD%m4 ziIjCi;R*6fm2=go0^?~ocR9&>(q8890jcb%XL`Z1uvBkYRS?^zUEgFLU0*k%CSuj8 z^TS7@2UGAnCW(9OKHO(u`C)!kC@jizE*?pi5>*v--stgGMyK?CvlpbUBxsD#k|Gom`+A&lC&8 z?yLRNt9+h7Qq!x^wmn50+nC-VUXV|pyDi5ss1gZGHHapx7DOhy#aGq*ctu~7jBI`@ zw&;_QJRHCUb|zsOHPY;4HWVJ$v7$=6@|f;ee+BOv)nVI$=`A!s*7)p86Cl;*nGj}K z`mCYnfc#tiP)-3$%c+R@cQtFsVoKjww;r|IK?0c{t&FI=2j+t-DO_cIS{Xf zs|A4NhvUJ6KT-#8gv@;H8MWrahhS6Bii}rI?{@?hZJ+(yrLuyu`%J$DlQZW68Y8Xu ziedtk4L*#6#L8#0q`aHN5U}pEBUma7ER@PD)wzlE)2GVKh0Yg^PS&Y%tK@rY>5 zl%m$E5<(e~47mk~jtxi+8L?qB5({z#fyHodCXh)nXkII4SS0lIqy?V7l6L;aZwjfy zYLmU5#uu_{N+!3_Z1XzXPFb~uKRC7c*3WYiQzP<=2Z>=DchwI!sS99+teW`XQg&Mb zvqW~)5`-JcfwJGcTNpzgEz;{VT(#@?v(bn#W|Ltp^h+FCq0J!#fhmstqrZGL_SGmL zVAE`^)?9FC)eIRVeS>MO*f5(bTaoU%UDaqK^|yh`)r2YdJJ?it7{C z16Do8X{#)sHV5c6A0nIDzoGKS^`V}k2Fa^!AwHMdBv}pYbz7Isd~xoZCd5UXfK@CW z2GY#R3~lSpu4AG3vWF)re2Io}G@swms_to8$43Zng|>LUp7FsZ%;wx%8|N8VIH>pO zyWxqNuk~EJrj3}FgA`_E0eGs)dzakn`*q>Hr};y2PGE)I{+3X}P+rFU*ynUkNa0WyH~yCOOYXeb7% zfvqU68sMu`e6<~oCPo09R77O)|D)+#;F)g!|9^cxJDAxtvoXhpVGh*@>7aXK6GEF) zQo3gjAxb56cewA5IW&iaC@JoRG;@g1x$ZfYO5KE#BAxD#x^v&1@6+$n_y4cQqaJN* z^SE{$-q-v6em!5gY6ZL20!>-i`FS8sFJxz%>#2jxT@AtL;S8UtCw(`#dJl8Xg@>AY z`*gkJj|*p9J(hY6@K5Rv6&ctxAzm3nEtj!O>tq(*eJs$srSb(u)xs=(E$`sjzeAh- z>8!%EIvsA{PJu60rMTDNdAqVs5Yi+PkukB)-pH4i1IVRYd=Qd66OaHObZa5})sr@! zbvHKwjL1-?XGGz^=M#U9C!G$t6bV55UYH0EbB`b# zB6)+Qhs(&`-^QV5U<-f-nb`O!;9l$|GXwK-=#j zOSh(#{PX^O|3dtb{~ub0ky6kkgk6aE}vm;ipU*09U&>z&Tk z@2|E*M{-udBMp`ga%7m#PVjoaXK8lVhzTR*ulrI02@*<(dFzv^|*2AViA}k}ShJc*r)DDIPBrF$5t8m7q4Ey$+E1 zW|#2>cCQ_YENHfgSkp(?kjqRdypgPx5^== zX+@)aw=_>$^iZu0(2WzRYJ(>~?g-+2Pi21)ch|i4H$7{vFV%^mlNOhq(fd09_ATu^d%UyBP?C%$e%WpEudynfKT@yF$`2AKH z?AF|JKC9mCa`jjTO_IlC>d|^!nBB70hmOat4GxE$k@dc8in?gYT$@(U@Hifl;9rou z5&B)}fa|Q8QxxprRoz~!mx4biwB2hvz!Iy~HmWV@CREEJAGX3qyad$XxL&lwT$sff zo0Z_?AcLK{*Tv^>OuQQ*+aR6$Wgbn;#`~cCX~{pVZPJN177xEkTR&C_ktoUS$$O1A zf})^$m^4J=a9(*UjrVW}>1;)woXuB0Nq!XeD+;iq_bNxA?)lbC)BD%I=7+s5IJ2n5 zB%<`#OyI76`r_9=`25udTBO9RTYt=IGW}5O_F)v_Ws+#i1;D`WiNnDE)R%^|;W_W( z;MvO`?1`83iY@Fdcj{>*)44r5x#ejRE&;cV5jrPoq76x!S&%)?yn4r1T4* zm)l!#7>HSgK9A_5%}Jh2wvCfT)Z82fw9L$$Zr!iEDF|8Hlz(E$)Yh zwL|m{g5@j9lYD1hsH2>qj<*Q!p7~jAz_Z9ld>FZk&%*j@g|RHyS41NzLw_Nu^tBbT zmhxQG-aAAhXvj4#m}V1YP9gAg9F8MdR;4*LBrf3(Nr2!V*$d4cVQysK>e5nS_ljjW zCmF}K&;Pcuz4khMi)6JY`g_)9mXhtONMFY0$8xcZkLr$wrftXU3j|c?NZ-gen_Za7Y zA%`YqYv)eX1i|AJ{&Kaj;;NzqrTIz&W=Ib&R8ka^7gm1HTjd_E^KpY+oaExirncA9 z0@pWHeD))}BFiy0GVCR^CTuV|I-BkImC0tP zHdEc)KeI_#ZUIV?UUTZB9W=CnKPZ3TV-mPF5?XqzwP#)m@*G}NnhB$)&j@4MtYO(enQA1NgB>C7=zpePz) ztFl%0wLL)GB_So^2_!UI-7~Gk5?Gd~L0;&L0YCtai6o^B%DLepNpwERk|Yx|T;;MQ z4N3(LRZPeF%nZK>vddYg*WG=(s?3VM$n*3%lwO-f2&U<6kDgbo6E9k}39%$%(DG&q&E&VwiGw}Y zT6{KSVR7A5}@rZ+U~Hx z%_-dyo)oa`u4Fs4prfq`rFbQdp>)Zwn#tg1s8yPeN8xQ5#u6n5%bkkf@~^RFvEIRR&Ehyq4V5&M2vjgq`ny zsmhNX3%r;1b$uyT*aHs7vwc^t&KBaOneyM_&hQIIx?@+fuzjtILGAnepAmlsZ=f5u zDLT27UQ!8IfI*qZ2S+DUnap8D&)VDWTj8fx>C)#3#{BGff}hA_h;l}-*JO#^GXE2} zOUc2>@CCqxPTqKd`sI2_-079q9H#p(9@+ThiQ8$na@XY_W+NpB;$9bSoI@GymKK(@ zPWf@>^2$IImyFo%yrjM}w+3+@HTOetaN7dTs-O^_J_T>w!)RWfK`u~YD9BamMfd2L zC*y2J%9?w*=EDPDuQX`^g{ek3eKBxhZ6Dg! z-S9yixH=hw&<}+1C7p|T)h)!DCQl9rVC-?-xmN|j@|!tiG4~p0S6r%$8=?&#UHOyp z{#nb-y}SO{UM|5kE!zKYjvn}-He#sTYBGab<5|&2p35v38m-g!ce-i2);qw{dybW5 zGooQze3?Uz8Z0PN-EwO>E*hq7j--i9O&N5^4vV2E>|7E5cCMTZGKZSWCkD)sB-TPfzKlZD@XZRp^hoheSSim2Tb}u=**<#=QLfeg zx}=N1Xd=JjSMF>Y;vFeaU@!_F* zWgf(15uJ2Q!Xd^Xe-y7h$1jo=(bV;H64?fzqH@cLnX-7AVrfK2O0Uvhmy1O>nK6M_ zEMS7mp>Nzoz$<{^m<{{=MUBu;3hw`s?nI_&8)P+8`97zPe2v_d_Qc~&Ntnm{kjGy6 z#`7+n!XIx-*f8~5@tCf|olhFSSFcjH8NmLBbFD%bIt z`SV_ubHTRa4aW!gRBoOWe`0Yl^No>ju1;->4Vc()YYWw>gsfU>vrzBRF~YM1UcCOo4tB zti_)Q2<8KgOEjClG)lx`Al*&e=CWH~p8s^|pR^}?=Rewe&9!FFa@T;ZCw>e(M2L^A zwEmgZj97)4p&2go$76GE*;v~6A?>f6bFXH3thHK0^#t$O@9taKnwdJA3cW#o^KmSClAIY(99m_wo>(EKu zQ0J@T+!)OLcI!0kLLsQKELnclE$SOmIZjDRTkr2%v7wzZ7fML2e2|#PVJ*3Q>hjYd zi@cA!zZmW?DB40ewYd0B$UZSw+!oWFaxacuR$vG2Z|vhW05%k^l2xwEE?-+~Nj3$a z!@w8$hyvi^z`F>*Hcv;8$_QbE%chM&O?J%0K!@KHG(|$ZV`sApVLi!QUh}109AIhbrgMLAR|j?@Kz7 zU9r&E+XSf!-=)NIR$%~j?f%#v?gD8L3v9zWX%69<1h%4dGD9ZKP(~7!$d8xEF1N$h z!|}qbL!IHwD)l>@X8Y61^x z40fjSXnaRhzcM|0jN zr1Aau(wogkx`Na$k-0X(x>WgAhL_*0v7pmcs6^M-k2(|nQHg`w^b zpCViRtQ$O_lwL%=VAJ%IC0-ThKXg~26=e4?oT-_+M`t8<`X=r82CJJp5HlFV(7e1- zkw3P%e{$5}%B}b5QD*c|d4iX}ttrjYssoSb!x}LZMmVaNIsi;4>J$lG+yvXEm8Qqe zz4`l{?Cz50op(bn-$;sBesr^vs_bb70iqUHvuGK($tjq+Hsf?a)D+j#ZPgMNsyo3+ z^r857mQ}xs6Q`N@TBh$E*-y_o_@SQzGv{$v$EaA5Kf^fnsHk}v0 zmz0~B+J|e48xuTB`(G4_o`~0^tzTE_$`zg_^k-2vVFlu#oPI4rjxXa;0U6-jH}=9| zI~NlFyIDESX)<9!1wvoY+Gpy2)|MQcW;g8>anOg_qGPdReyfii zoKnZ~IuH#dP0Ov>r=lr8QCsg@82S}**x){2`)|q8q?L~J%kD;o$4dS_9R8EnjpMWi zg*82dYO2k`2r!6(-w!GuY0j~;m)8;H&}$?pL{!{v?=27wxljbIPKt7MwpyynQQnIi z*()h6+M`Q5f)sSG+Ka`K-4l|+dq&vca8M!My?s&d6yMgqro)ABxkrF^YRraj;a<+R%w{@m!)pYh^dYHu|9+#(wySKfeR}cY z)54!(d((^`x;td`|L&~%DdKD3qwl?f+g0aolsja-4|=hkQSx#0q1L?yyCWRv2YuY8 zgftv8QOv^;)|8%)a>^PfKBx5y8<$$V9`w>)Rl*YH5%n+`!VaxyF4nSQ12!RQYZ8HN zHq*`Z&(`X?w*NWkvEb82JoFNcO(q{s(cn&15x8ce_Roy7WTXNsOs7HUdDudvbICbl z%{I@uq1o&OB*f3(W~ZS7NSxV3@0XN5k{9tUxV8McCAu+YD+NsE`*U2=k16P8V`Y(25EZ-Hz?s*mULHLF$$wv!=vd)F>ltXC9<+g=rp*#M6*BOwLaZmAg z%sjDHp_!=#hMz!HJ9n8Oqm>X73=U2|1mmCDLf7nC-2V6NFNWO-L0vJQoRWtZM+PqV z>7DJ6`<_VsOjz!nhlsH12hxib@+enkkAHri z(Ifv(tEO@Sj4QibVD|hh!Vf|Cl6G8SS!P}B4lUIvlJ%!kOUKbQ|9-k9O_3b@oLidP z;2^r|{p|B6*EMfiCM%Ao4gB(P&)4J+^FRwS6tP%zwcl^CxkbJAIF2|NuEE}*nnhn; zG&@hn#RvXN{_aEd@$|7}sgzXr43o9m5n=Bz6kHcvd9H6$wI88$kMd>o(PvANCK{ib z63?z*?jy4EwLQfxIds@4%lvj2+$-BgYjL`Za?g-U{A@W=wnGfMbjMb&Gl#dnZEJ+_ zr?_-l@7gO$(we%dw0-Y>o-nrg^!6B)zSw`s^jC|4%5vo{nV_#=CTQE(tsdZdI#HzFu(cWAvdkceY07}j z_;{G)B?B8vY%Gtpm(ihUR|2xJzM%VAxg`|sSaQL#U%rH1*f@NL{L{73XAWkKcY94Y zzD;{#KZyhJo=KRvRy$%}{Lx&!VZ$4fhrreAF7pc`yT^3s)-g+-KNmEe zuk%uFmGLp>-15=gQl@wGxwv%5dvsIIGYLHH$PuKR zdq02Scah6HjvQIp8tD+~N?G@Q|1(i|Er;) z`8%9Hp74biqTKC?4WANAXLoQ&(kHydlRUx%P=mK9q} z$nbTLUttc1N{95Qcm5O3kxMoOyI%FFwMBt{y!Miv+*~|9x7;*}ShxFa>2^u{P6$>r zHkey%G#`tVRPuGeznOR7MYujW!K$iO-*>m1V+SxmG8jyBHEUiU%naR0gFUx1(BdWG z<*LRN5r0hV95S65k=V&L#i~e8&t-|au=}++3)?T`H`S+&J*pwxEAclWOy9AIwwiZa zkpzxUt+TqAZd3*i7LB_59r5Qo38;!Fma5M@^5a6HbFsEns3nE`olB8LZaERQX|X5M z&H+X?(57pPUX=vZDA!8^hAxCdiH^TkW;PNoZ8#$Y{MBzcxb4!Qw%a2YQAykN~T@LAGGa0#1FjlTDWJTslH~{nglyNi|~lQ zUwj|dM6h2W0VOAmU19E%Y<6d(j0_WZBbY*qe*cnM>)WM;T3>GftD~{|w^Y?N9P|Fm zP~1ZkS?7tWe-!Xt5Ev^7TqUN_xY4HqWqfSFr|PAG^Qj<`LgwcS~eFTkk7;Y{v~@Dt5HnC!y|{` zjy<(F_{ZaKE)U(f)B4XZH+BF{sf)}eu?MXja77NbyHTa1-5K<{^fJJB2Vmzm*KJi- z2`3b2@tGm%-r|tgGWEjI8f=Kcn68~?zb#>TlWJDEbAO&@%%4h$I#hVS3u4tOFK;N% zmDN5;@Tw5=tTJTB5+)0`v^H#h;~@T&`X=FwrsDNu!X3<@^K`!JusQn&|2UpIjqm@= z&7_J_g;oW;I-zs^A+==MTIG{J^o;U;#!U@_Z9hn1%I^E#s;hSs&Uj|!?)7OI$-grg z6}YA|-?~gGxl1Y!w1plZUu^q(DgA(7qWtX97t9Ru<&wYi{_8&J8z8o^!MJBt>(7;h zOefs|!QnVsP$&%(Bt{OS-+-8&i914pey3Qyue<(P=7g5kjWxWJPAe%tqc4qbPOX76^t4gag*>QG?Aqk*=a>ry=* zu5)6SG?ya*+LU`Vnz*hF8ChFRYwyMpWi@AR9 zZ>~%>dYC@f^(oVXXJsB4q(Nj{NJ}+4J0gVIrN?N`wM>catvHpCxz;{ZvHr2?$9Mlu zXFvGy!Jd~{8?>!*-|9a$R+!8H*S84mNva5DeKRrNvyPv zj@n62PhZ`aw8C2a5z5>EP4Ej2w_y=CEhL=&Q{rB~ZZvdz!J49)7ln78W~~H(eXsie zt9_CikZaUT4W3pGI8Z;Bu*`1gWukIjdVxx&X5{b;DuUJW8E(vThG#G4h{=zjon59^0h%ofXyzD)#!R`>8Weyf9RQJF8^cPCvevOE~B%NpVwA;-L^L| zct?Oo^veM@OSP^@r*QMeufxip0uQnDmNj0q-O%`H{4qyZ9{&reaMQdT%hYJ6nk@4} z1KOZwL@)FPEV}T=wfF!$Rq{DvpSJIwWYJP{d3O6Rv0r%~qfWXh$aay2O=dQgEFD5F z+81W;MY%LI>xiy8gBJ8r^wh`2hXS#eauA<< zhzqAw%_DT>0ZIrpD6MnZB6J9Ubz4t=G0-vm?{HE`S8q4PCq{It!DL=djBr2=YMT-5 z8)XmXycJ-^uh6|=P&;b(r=jGnsr#y2h}u05UY!o^&0Bw%(AtiaWv2uCh&FDnOZkyw zks7=(*%E@)IcltXug~K@K6x~(s<*8$Enbth#{9Q^=STiIdTFsMKuQi~Yc^=y9YXr~ zzD%zVZz8dWXU09KP`$)?|IBqbV$v4NVCw`vy7n)=JZOYx`Fk;@{JLJc%v8wu~!GLdAR2Yq5 zGjC2i_Sg6o*|3t<{zc( zQ8pRs+n|M^KOB12pS8uY9;c+B&F6=_Eu&4+Y?jPq;9wiPBu)BiC~JuIbY}`%mBhT=|E3(H8HczuJ9> zSd_l^P>Gv;d4#OG-%oZRi;BLtG0Du;F^oEpzO6-9QQTAGeBFt<$MDbm#S1R}q5W&R zlUHb!4f#XOuSfc_=?DIJbofL1WaW!-X&Hr}M8I}?m==is(S%B)y=LFfd2En^zoxN& z@bmAngEq+5%&$K`_fehS`CZzpfnS!rKOSfeS8Hj=X+7n~$t0_Q+C#z)!^Ee;{LN1$ z?7r_B5Tb%Qcq5{Efbk_Eg+#l{N6t7&ynMz7f?PUd7dHm$QP+08m`fmQ5d%(D$NK5f zQX2Ld&n>SmZJ2Opp-|}jIq_0mrNzNDd#%8@j;b}3*HCr1oYarW#rC#;^!DCg(B*b+wTvT6b@0IO0#~^mrP2%gOqH#Pw8k`?kF? ze!mvg=lW6~f6Z2SQyKl)H8^jp=**qf-VSHTzif*+g`x1L|4`}T5suAkGTf)fXK+3F<1gN$wOg`NZ?G(Fh z{Ppb%%C;S6HUwAZDHvq>vzw;dm|N(d8w(55t&M907ufrJIHhH~JyY`a3NI7`iQRxo zuNJt$yIz0u+wE7AkN2NtuXJM<>0B2#O7-rVX4~Xvebha;8Q<+VbWq-_AZ5vE&1Te| zjBhIphT&GjNw_FBqj)z*T=S#T35-P0(KUVU&+}_>dhv%#q+^>u&1BwLQ+aZzYKs*d z$NR{Tce`OqfpOhAdi+n{UEQzf>yHbe^$q+Qp7l$4Yi;oBAFglv;roYGy8K}sk01vlJV`x-B z)R;E%;BW6(q`#8ng)49TE0ZU3Ec=@Od_xd-_NepY1$T>EElvmd-Y2Ap669B(p0#8@ zbLKIS?^gudTTxE!uMP2L`R%Q)We*0Gcq)SnRIK&McUq5XYpd6)+=|Kqs~hcA=N{cx ziN=l37=CLzi324-vmtJrv_cd#OX6OUh$Q-)yDqEt~e)@WyIMh#I7n+|K&v;L~4Sx3zyS zTNB{@Mre?e?>yajKG54+eh6gQ14^zAE0#&yB$r}a-B&}2J4_sJ_0e41$s}TLxeV18@j|sn38y z3Wk@6&|{l(V+roT!cxmq_?8EIXqpJGr3hDia{HA1;oa0u;oO(sl3v#B1t_1c6_)bo zo7Ncs=P(whT;<5OV=t@leBfAJ;3b9kV5V{U1ZJ>^DxM1C1N1p2r000V7bPin${eF% zTkMpC4?TRPKx27V^0IQpfoHm zL?w*eQJ1b985{m%`O;q3AKG)q#B~jQZ<~sr-0Wz&Sr1#Z-wA5^M)v^ap=apFvb&I$ z&~Q>0Y+-3O@^|>pN2Jhj?>ibGo_Ic`P0sH11O1JuR+5=+j*uY|;=Af!OP%a$?YQa~ znwbBFh>|hP6$81J-0);KCX+|ik>^?hd&@L`F%8f}W+4RH+z=j@0}PYPTt(y$X0ca7 zwte0c(ap}OmCV;;^p^N&MBaW71U}QiP;AMqDlcvIx8#b7-^v`!K+$5zEx(8R zfotnM!h**m(5_&?iv~)Aos9x$h;^C{Xq#}C$QU}h7{YG+tkWQ#FeGF$pdn04E{Z~N8XM)RdUz6{AcO!f1b6}s+H^Bz=b+nORBVdCM|-jmDKzlmTMqQwu143;0!SDl#qj}O%JyO8y}A4TG&I33 z)MeKMt}RH2q!jW_LW-?;j2M3jepw@ata)&9LLT7lKdLv`nj=t1@TWDx%QOa0myqzF zH}Hf^_YTJxX7&M38%7{!`LKz5WAB}H2MZoI9@%OuSn&8iuPxUTUHS?>Jd)^q`iTHE zi{NWz9_Q%%y908V?ULwVCZpIA2!nZH3JtD4Yc_%#gZhk2OMQUZ1HDi}iR`Wp@CoY` z;}{xA0KymO)mOpnyCR}T2*P93Ag9iKpv z-LaSG(mO>Oc>CYo1EIFOOjzH|1&k1CXtT_)t1qz%kgGsqS1nMhEY(=JDH2KxMfCBM zdIF=T*$8NA-oI&F_1xQLh5woz?$rl3pSl=0&$G8iIpjw;Z=bmfx>fM*St9QU)??!# zWj5}0oZD3~B@aDB$pE~#5SOkO)#{&MS$@I1)0-pH)}VYT{m{I*Mt-GGh5)}c>E}Aw zHs&}tDR!Ri8GmSWz^#~QtQ7%HE$qR-phYiSu)&am z0`zUW88kj@r?={w(>ysr(dXgl$Jz7Ndid$?y&6^+RKNIvpD!i3hN=;pD<07EAMxli)|@HY@a zI+9|keso-2X@;O+OGYXgtc<@il2iFYHnfCl9g_FJF#b+fRzi6G-xk^ro_&Dt{5eM6 zFoXjc+n2U39pzc{;V)Q#Gtt&qSv2O$yJ7*h7SFBJ2B0y~z8c--7-F4AR&!OH1b-l* ztb$b{TGtVdO0GJY3$jO(xUdxlmMgvJgQzhk1HC zd-y12n<*c+ObRF0^Jog20xb2scxJW=DGpLQJUmIOY>)~xlrK2sO^z*;+qf065KNDO zHSzxjkY=Ftk#qMP-$;+9!1V}^&3J;37JAPPR``#7vQPLAXU785-?uD_S?g2Vb>kR>n>)Z$15@ll054!Be<%Nhwww?*sI}xhGXI4= zZ#Eq0z%4Etf8y{U1dmoJ=zy9i(!Q^h341y)(dAxiTWgA4DiU6<`!mNp)2M3OuT;FHue&$s+$WA1+ifFc zd868lbLq`8S9K>Uuv4*4PKv>XnDWI$Q?33bI|h=a#`%f-Vb=mY2GzYacnL_U1q`;} z88D);0Nc&H_xI%#Is&3I345UAhgKMiNR)a*X9Yp-my-ZcQGf@+**NCoWr8 z-5T+Y*jkzN`uaEes13V*u?X}K9An*Xzmt9MSc?cHh(zG8C4$0r0y01zt+%`H%2 zfDRYtIDi3e@%*0rRsZfjT`}&pdX1f6%MXuyclZ@Fz2yo1rf zs54R!$l4T@-T_YXaT=p!m??^3Ql8A)2J*?@BfN8q8ViMvG!`X=3V?m%O6di>Mp{_( zoW3k~MNslQ639^G!AOsPzInkMY^Pa2{9^xphAQgo*IJxk)w(0AKQ+cQY5!r9z2c{* z3FvN|-p*Ri}zfXA!)yle!c#Bfv`<;xAuVBv^E2)A+YtUCT;ebLF@m|%zFYUiSu zcE@}=O~iHdRn=-Wr^8b(6QV`L_DlZY^7-=}p}7Nj;PmPgO9a5k%E#T(hzAPI2_c67 zAT|h}BLGLD2`t0vN~6nm=eH10-}i%nmx+Q6`Xg)3`AFfL0k#C53x)Rm2>935tc|W; z@$SvR@|y2|P7N1Ne$L#wwKhWeL}>KtwH^3On&?D9SW;W-Zi+u?vkFXPyY<>!B=_nw z^5@MELe9NavTwa@i3q$Gk(1g&8lS#p>4cpag1tb_EKlF08{)5)a3XNAYp~T`~X-Ssqh2&}e4iMqDu5x~V!- z&YX{8RPcV%001+X7am`7hmcjU?p^9{%WgdX5YQS{<$Q6%_qT`|DAfBFtv!SBMkv2h z`>Ek1a`(myQ*FrXBN)81X<8t+fXhh?oQtR1;s-k4kL1>;b>ZI;-f`Izi2ofU2F>cB z80dksa0UaZ4;kC-_qx>EIrNv!_z#gcQ)_lktx~ThpCr3ni!ix?9Ne>1%tT!o79f`Y zmV9I#WWImuUD{uBG%E1)FK4ms+{S)q|+aRp|(y1!nZ9slZKq zN0^N@v&jm1U_@wd`ZFgCyimNtkNgdqFnh6blYKX80S|XmDzvV3}R;fc)Tw2Tx@+QX-EEEc+A2lq*@>ZDB#87Ex+|`W)TCrE%+c-o1 z68@5wP~z=PKHA%vPBDOn0bBtm-x#byCO?u!S|J4<;6Y{qtBXuxzdaKVa9F7rSGCm3 z65dAv*4_OGo`#XwLJZK-_WkcMeD6gs9mXOYhWOXpV8jA`mn}Th`2%=AJD<}!@TR~i zfE&ry^!qR@GrV&^Puig7c2BCefv8Afqfh#z8H5SNkmfAdbvNNuV}*8xNAF7@6HpY#5L$ zt7PTHM`fSZXw5p<|Gm$UUGkiS|OxJVqYR4S~! zy9wJkTvoGFnSDDQkZ2FPSKSjHDR;Enc`umZa|=kF#CI%EN5Cr-E3G-+&O{5KDCM8z z`t2;VpHwPIs?_!3l#}5Vm63I*1kiqFX~RVj@_8ZLru{hPz>go=HdcGr=2NK;HyV~y zUqf#7cgYGKm>)=)(y-e&RA8+}?n zuUDxy?{PjK{nu1BVd?dx?Vg`GH)r2p|9BV@x+WsD&7#CZ5kw8Se{ruU5$GT;!kj~GaM`-Ul9e{p!cMl$m#?v4%Hm`T! zbGQQ?c!tkP_*Guxo8se0!>M?HB^tOdTTYF?6bi595E#hH+Nx#MOfN0MyHo@+mI12I zU;?mc*lm=V{B$HU$F_};d9LHY1-O2J%KlwC`UnBb>ah0Ea@CggbZhO=Eo9P9URnI| zKz&d-8Jf|3^UsX8&m~FW3$BfNonhL9RnAYHe@NDqI6E9DypJu5&2gachit$MVa9n( zzY~Sh8vR)xcF*B&qC3QYf$6%nXr5AQ52@8pd=`s1;)eQu+I^vwJ-{>yA;b00{Z&_kl?Rl7gL8-ej2?VKlCA#=-D5n=?j?Hi84b>} z`5l5md!QU_eQ!FB83JfV$p^@#vAJ=2bJz3_voCdy=hjsWI%KVRZy!}XudCpz*x+)* z-Ko;fU-)DI%qP>6aaSa9hAjU=q}kg?vCOEg*-$+Df&fLX?(s?@2*w9|%H+KjbvvGN zS`f9(6=#F*MH#_8ik^L1K&2Rt>mb|L=8)|bQRi6(BH({H2ZRAhdm>(MC|pA$Kr(m_ zUP#e$4Z#bCRIZkoC^-G3?_$JHM16iqF?e5)b0dul3adU=p z2M&+BE@$v-aTkgdop_JIl!-+NnB|oBSr0M8S*Zb#1z9 zz~bMD>Ut1VVGf&K-cPordrqBW>@&FTzVa>%9enx^QDER+%AMJtnu-BSvWJ;mSk@%8uQnj+Em7wLA|B8z?xfJ z7b##1@n-30oL0%X;6iJq(2F9q0#`XfHv^T8iJ=c;yD z=ZWST35ZM@QFl1TaO^GL_=4z=Q|{Wss;C$4><0l<egT&d5x{x$jXj?7QKjwlG$87JUW=Ohn zq$FK}XncR&?jI0bCDz0fDFZ$-U`j$lkm%(bNfd<9odGwf)K0`w>E%YnoJjQR#MGn! z!RZAsQXtWzW0do``6ViPQRad-AmF?$=*J$wsCDuoonBap=RJy)O;Cr<2J zK!`DeS|B;m9>C^a2tVk&;J>}8RPWWP%BhIxIz9-c>Gh=W8KF9=1h9@~mxUS|fxD6_ zrF!?ag3G|z5YRRg-aX`^s_W2f>e|z+w)DGy_V)YG%)JU7 zpS4FzqH-G#>Jz(;2ft>&Yg(mSrJXI$mjL*4D6bz!Q9zi>y)_7Qzb^s{eDD^!r{C zsb)9K%oH5LX&^6Z)vxwocrnSqW?_`)dK=oAx#KEMj4(5LDu!3WyKi^QR zm%kGc!$gl1l+bV+FT8xy30G$Cyx0~&``<~p^D&dhqOVn(w2nwGceGZN37A923Fa)` ze#HmpNBU5{uMAj0_nG6e^r`}Q0#w5|gufvEMjV-adq0yQHaZ?I=#fbVQ>kZAlwDMw zZO=KbW^Wrr_!I(vSijq4Q#8?Rd9oG90VDR3!>;)?g^>$cx>3yc~|vYIoxcBW!Im zx1GEGwXi2cEz=Y44UVk}N>o(I*`p!iP{w9Fy!gr$q#=`Jd0npkGX+jTDm-_-G?FRz z82YaE)v1^#SxGN^I2*T1jgTlSZRPJ4x&p1+or6b+@q2c}>_jttaP}*5{lvj#1Gj6F zbrKd{jP^Uf&2>Tl=xXYzxJ!Va*^NMG{k0n9RGOE)RI$sFXh8~%m_qoB%%}Q38q#d` zJQT-DQgml|x;eAv>HDx#3MYB+ro;v^{aYB@!;a$~vC|kZoLAy`h1(zpSw5|Y;sd*9 zrL3n60MApHH{3%8=I+!+&)YAB|8o7V9C`a`Yk7;#e%|52Up&Zlr~aC&yzxzvbo`E7 zvh^|1z*yBjXE$D2aNL2aY{1X4ew11q`DZ^VELU1!WT}BZ#ccmN5!=C@Zesd}GOu#@1BmtBJg>wvMGaEytA^dzNl1e@ybtfsvfJ}0uiEu>4hW{#OeWN@muYx>m^eZ_B z8;YIzp_chiQlhZdqr1-ZCq9-|LmZzXWgo z10&IRmh@;mHx-l=mzXn~Yi1M5@D`6Z@P$)gk^GQuA@J~w7@0m^X-LHSwLu}=$=P=; z!23Msti0NL2wmJ8o?auk_t<-slP?3q)i5vX;-OQyJnI>3|zLASg{m*~iJj-oi&gx~C zavM~3mU^Jb(m5ap6MzpQGn<1UBEiWzhy{AWVhWkWGKV`l+W|r)z#T1h@s9i4_v{GA zukfLcL(t)yWkf1xmR7?8TVuU!x5mYIHtPr+P#XZM>XG~RgV!m(Ip7NX828|*s} zlITl?oqri$cl2%(1RedWu)qH#5`netPOwpgj8_09%us(B2Nod}MqDuN+*D*YS0Mi9 zUU+`=*Q2* zp{*4u^wSYFy3;NnG94(8ODzhxxz!*Qs>#+yr}kpEU+YQhx%YBtq20P}WW1q3bvfrW zk#ldDueLMgb60P-k8S(1+w&5#+3cC(F*wByx?58xO#e_<$dEgxphR?8p4m1h&P{5FjAtmAbo$Tsb*iG;ot z1bVOofqGIw2+QCy6tIZ5=)MBbc>)s7n;{(Rdo_o9w@X*k@MmRe4A`aQAyK;O;n5pzjA>6m+fY#i&29k|Y*p`7BPxoU zRYbX_kPfh&pn7up47{Jh(+Ja{aC$z4jCMt_VJkNlYlGX?zkjP*FAiGRx|nPJa@LiV zR&`#Ee70P5c&{ZlY7mRvY1CB6?4?bX#RcAD>7GdQk3B@*AF>M!8N$ z3#oxkLVPY1PIhL#L%lDLu9NRvb373kR@8MlW^>#QmJ-e#bXz@NK2&PUG*b;L(HT^D zPcv2zD-BUNWI?J6nzw3ng9rLlOc8bO0$&1kJ4ngb2IdC78B%(io=?Bx`ihJ~9&2K=|M_Q8k{EQF3Z40X@U6(PcVVJs(isd@YHFph%2PZIz z&OWH%I`*30`_CUtN1V!iyoqy99A-=lqit;HL@D0HA!LB~OYoDsQNR37MZIvVqd8dc z{RBAn1wS8R(k3ITJrKRG{6r|@dCczxC{hi}*^;1{aQXQPZjqk}x>g=M1!4|p12&KI zo;{0b%***pHMLq-A=w%g4|kJ9Hom--d529~OW1{eLUE2a(S8q@5TI+EOjJ8kKHle+ z>4ha$rZVIlvveBcVNWQV3y*s!L?)XN+yy&q!m#!lK?rKP_pzTq+3QhKn$3;j&S|O5 zO{<>!2ijW?e@V*;d0^_ZRjcLLHRF7saj*(HiRIW5Iy$x4DzsEaQKXYt0f3(na&8o# zi2@uBO)Na@P(>Vq4Dfb5aWH4>rEau_B9@|x1}z&_TXaA1ynvPq!1tDILjIKn6Z1bM z?9eT{!giPj7Q9hA{aD$>A<}bSShY?yF5wE_(xM_xy(lIi8UuV7jf6lVg<#K|h{+;| zZq1OGyN`s5to9E#jGMo-d~XG#iSvh)H^&|X1r{SVs1nc{hEnID0zB2i!sYHo2HYG; zhq|L!!)y7890YxCC35UR%7Yi;47>~IGk}l{TO{;4YkTF&#=HPjojY8>MN-C-Ak*yo zgAJBNQc7(QvYZfx02c*Z7V&Zl43vNPBgIi?Kdc6P67{w|{j8nh+}rN6Q2*^)Qh4L4 z)}H^lFc2Kq*&*cdl2b#m08hRKa~0@iHC=nXMvQj`yZGiXA;5_pXkkP9nKmmGHu>a?`_rg~BGt!@4=B84@6@;#nj0o}T3n^TO>_q5ft0_$QWrzA=XJ zpJF#V?HWTHH$3`S%<^&Z3adfj_em<0xH$d7H>GuUIEl%^4kUH}53%*JCBF-a!sT=f z{--`UdLNc(K<8z(yfOaY9X^?muy=XvW*};bM1-vC`Z42CJlg!wC8gxd_j)$q^q4G1 zO@Jkt%ilNII`erd>dAfE6OW(TVNJaoLT|5Lo}#yGJ@G~+27!Wg@&a*^hIKv(K)G$s z?z}-&$S$$GKOj@_ZK+Nz2A!?ZNT+@jPe^cfCADY@?R;ExMUbHi$J8p8Uy}ke+sd(Z<| ztu~8IUO(oTG}$&)UA(nz2OkCWf6pwx=Q zzL()x9-m3)ljd8{O1w$r$~$P9!_x>MeUwV2yLfFRZS4cy#?B%9pc>g`4Uh*)nrd?K z2JdTKVDS_SlH2fvid>@cP|wKC1jmIg*>FMC=LMk30K|W8t$7`}zA0~ZM)$@IMm%?C zgJrM(r33pX(vk(2-r`|Frhmz2_F}r7SK7H24X#WR0@w&5EIndEXToKYN$INoUr}hF znAE9a6>$Ajc6iI-E6O{fB?#00iYHf?=YS9wC*(fy;4M1yW;7W{w!=JA<>SVxQ) z3i8m?btBT1qi|+Nc!h`>c?Z zBT7y=z6Ld*PXQh-Dh7h&%Go7XJad_fgWyTn=cPaFLewQ0Ai>K~Ha#+J5wA^A7q?$H zqc}Qi`^$~~IJd?UPoOPwA&Dy!g78&=Tsid(@!N`B)$=r_WKs}YkK5}>U-(#jK@sFl;Ps`@n;aXtposy!9HxnB{0fDw>hkZYpl>+;;NHV~s@8$gK>RJU^| z4g7Eoj96$lO>|cw*s{_u1V{HztQwyjZQA1+XGuPjIol)94L#~)W zwom6bemJOtDy|4>VJb+h5PEvy)3K36HcJi(+Ny0P;_@J0A1hdjft*{2(|Fy9uU|JO z$~|lBy-M6lb8aRMe>}dL_Zc&Jxv8+5#lIT-0`A$6K|ODm;g~k7g+671+a^gZ1Rn8R zAQSbc7yGm&PC?6*i$xJhbUi$d=D~oZ$mbrHOV&R*gE=ocBWTpZn|YH}`gK|Usf_ax zuVq&aqDpF|PHpG*gYHm0fW)1{loVpPTAxq`{ePT_O)+>}295y{sgA;Sk;2;0=%m%+ zhr5xxUwtZlj=7R4@a%RJB&41~|okpEua zzNePYr%JOben^dEAq|E#WQ-!DQD&Q41@838jb@wY)CiZaHROih)+z24+4bNh9Z%09hTi5yo8G6) zimr?4D;4&Q$6wD5>dk!WdeN8H{^t#ImdQTuT%5<8C1MaVXhM%>m03Cw5_!POVkj3T z68WCxbjHJZMaYtE2N8|?H-o_#|79>Ohd4 z0cyvA0|8)gjb(%PpLG!E;6VBh9=_QHY=eveWyl)X|5yW(&}Kj~qJG!-ZUDZMeI=tD zX#qnZqwiW~uCCxx1;2D_#-jF5uR~H;=2!3k*T^sO`EWxuW_*Lq6^M6l{1?TTy zir*4`TPE$!F&=11j2Z-V#yx}(gY{vHtMpz3&Po||ZwEp!E*-i(a0oP3Cr2L#vq zF~LAa0Rc#q5O##^I zi^BO>QC?&;48XEfwUmJRzy5vSfADTY03qjjssXvm$R#@}#`;k;`_b*;LC*KdxL&7! zm}B+zbGLKfpfX#$hH*zarAcS1ZLTh7xREwthoj7{#s_XaN1DH`tIVx&@xY)mF*v=p z6jUDsiNE%`#a^tZCTi2R8&L?c3>Atsfk<(^>Rf{FPqDPwzCs0~45E-H{b5$!zg+P+ z;-cv~9@hqAxu65&C5(L0>%C0JCCZK=E+j!Zg3hmuGxODd{o+&B^X$HwptF>5Wx4R@ zdw$5q!+(D>$|e{@&y*$eF}b|vtag{nKvD@rE64}@GY+9SI)G0kjca_D4N_dTuJ%)lgkgJc1O}3nSuc=ILo$g~RmBpi0 zgaGE?{@T`0&sSoMH--@tZD> zJC{$V4xo!~_s1Y7?9MWhT)40zBfBu?0OB-i6-|OnFuct7B+Y>;Q(l8H&p}G1BY9t# zK~Qe#0!K|vHY>gT2=vTf4#rVklVL1H0Jm!J#B(X~1qMFT)LR~qLZm~S7{toOpJ+Pe zoEgTIo2_4d5!CdI{Pq1L09e~Z8J~Du5?b3D(|v;sBrL3tMQ~)YFQYu2^Cdf4eP&gK zC>e>cSO?GvVVP(E$;MjUasx9Fg=)@reQgBJfCecBPGt{PG&KnqPUS)Zk&Reyq2qvf zddv&uGX-(~D$2Y3Hv7`o%8ymQsZ-vSJV@#^3_eSryLza2=eLfPtdO2sgJ+L2*M|D~ z6q#|SXPWa|EFClC@MH1AH#0~kOx=;hec@uv^i!Vcv6tdu$;?`akbseI{~U5o&#SXY z@O+EmwW_J_k3qPRO;vhU7=CAWE}|+hhi?24`3r=y&eIHp*X?)-4nQ~Jrkqyon z2*Q2ho!mDT7dAKFScACAfRO6IgzdE{&2;*e}@;n0Q<;-~PNV&iAVTrZw zT5`c}Z`W0JYK)cFzIZXUoZhSW{^Jf6T_^S2h3IX?QW`6QBVRtC!7~&2Hdq=R4c#Sz z;c_BS`Rc3r!Euggd*pm{*muD@+;!#{$7c7SUU)^p-fLk1Fh>WTPMvP~^^H_fFhFU~ zfSRlzY*=)=h8l=2p)Pk%EgZdGG&R|B-z@G{xqRHKm72y5jwTJa`7|e29MWp*tl&7O zUh5=wa4+zaFN;L{KbO~a3>{;?N4iTRy+&@d0?bt!TZ zxP2@*cZW-QNzFKH9}CT(r6M?qkMnwv!)EQ2K7MeZb30IlarrT5_%#<~`>DndjOuec z438{ABr%zAsImRF^T5ms(4fVE@ME>Hxh#vg&CgzZ{i!ng!;L>{w)Bo$j{T9ksb?Z; zm3nD&q7$8c+2JF5+xX4l$3d56@)VoqwCDQtUYu$A26}EdyK#5?4}H}s>)lc>i(=&~ z>JbS4dnZj2o{bsJ5t+8;2q33Q0dN-31+>+c?nl9Z#fzWBt&DSN$&x0KSV&uejO+!j z9K29Zl}tB1_UZ4H7m{_Ad6lJQ3Ok$H;|j9t!w1vm5vb?a3d{*JA5>(=wqi3?><5-CqiP}AJ{vF<9Q{fZeOxvr)k-0pb{>N95&QI`AhAMmu zXGwIuUoc7ewG!Z7L#4@a@kwYVCOn$DzP2a`&8>p(=u-88-UM1WMK1IRQQaxrh~KYip@+=g^1SxrIC^SFugRP-yqBNKBMRrB3@wzOYBq7{Vp&1H)t zyCh-zKcpV88`^egSz2BiAnl|;?ZK5HK4(rgOylh2iVJ(A&?(;f zXtA6S+I$zH9@pm4MCq1Ri3ly!FqQW#Q?|QC+Fm#R_Z8u)i)feEKQ{j!zW%r;eB{E^ zqV}UY&wrk;PfQTwMxoI&ZW4}R>Mpp@w$w{_^EPpb7c0(t{D%H08%IIlx+v|P@18So-?P;1) zeC~r?et|6^)cF;a!D{weltM^7bsS-x0Xj0UbNJIl-;*hh5bAUApO5tzdkj5Nt9Zxn z#;y$)LSAzAg!3=|#>>?Ur%ZHR19rOTD76T|Tl19eW6TnBJOYWLyQUhDs{rx*)Ql-z zGPI|Qp`&F%m)#azLJvZZ@3YPCS*%TeaQ?Qj4mp@ytajYj`@PROqtDgdUVMo9_50jkzk7B{j`+h= zlME_fXH^T1X{+-;m1eENl0)|m@AqxqON5$pSt_@|IW&`1PKm@EAG(6AlW>ppU8%^w zVM0CNA>4ac(zEp2yiHtw1BsV)O5f5Z)0dHMxnW<5)6H%1>kd5UTy#8O$r;PsGQ%!b z!B8vis@Ujpgt1FhBRz#S$k1s~lWS?oS5iDnsmefb zQ$26}G!)wZ{fXpwOUpNUk^8nWI2*flEBrkt<7|cS7zmfVNoMLZwm|7p9&%wK z?JPZjx{eZ6R`O6Ffcqq5l&K3bRIB$FnW?L&!E0R=tb|Qyo?HG=Ax3T0pygx6Ea*Cnf=!#x2JTTFVK~7QkqrcXoQRxSw1Oub9F#L?PRV3)oIKiFWv7V(*t$=#?eAZ$*^D! zA|gac12KyB2&4G!BmQR6Tgor7pF|AZSijBV;6M5=heu!+YYnvi`;^cAPWzLFpGtPIjZ~w-4vLR?26SR&13-s!NqLT)J7Us4?GN zLfaJGybQ~th`vu@$h?yKGA(0et(eeKpw9dGz;w)xoN4wkvaP{z8vEL;f(VgkrHI@&$?rer~yd>&iAS;0wwFoyklR5Rj{Z8uz&;9*cN(5r3AP-88en zJ?yW4CwR+|&-bn-T%8zo25vR`GIbkfEP0H@$-?X!cXb3NSYn2DMp)zOF#3*%6pfAM z1OR2J;IXY;d#^5DoTkJ~S|~Q?))1yvdpN|A8B6ORc);aFA2<~VQuU%7vVpo7-i4{L z+{gh`vz{a&8>%n7M@?!HX1?SRmjaz-JK3;Q{_!h9w?~k}`?TDch0fG#+b{a2>D?|! z*6Rg!zu;~qMP@j;=i35ROU?1@Gr>RB6~VZ4M}|y_$&~cDD9G35jE{jBXGb&>$)TZ* zys*vMzFPz3T>B)ZLYJYAJGo74^4a^9E9U2HbNVpxyG}XNZ#`_Q`8TcN@{ZpRY^{76 zthcRrE_PDvb;u;{-hxO+@!xA*!l-Km8~TG(OCkF0I>^1Xv%5qn`BG7u7r6L`x{H!B zClX}as5R}&edR%P1105=Ew}MGrjL{;KBu-OaOZj`MHgr|@&69Z4+&4Ug3A-xnMPSe zAqy~6CFS+S_SHoEBM6}?C&3W~ftyiNhXMfz8d!aBBTE_%aKOmaJHQt%c5w2;%hZ1k zAj*qzUKgyHHij>(Kg8%rof3U@d}7<-y{?_2oLl2+dF^dRJe&yvQIPyYzw*BY1#~Q) z9=YHu_9-oOYDbiR*6-gt5uDGiQXu6zP@!N@qLXXBt4c~#QEAhKAby5WP%H2ld+AEf zt42sVOLTsvXtAG5$L{idxCf9ICLj>P^{ z1NAY)IFmlbJe7{-`5wNGugtv2;}p^jeYGu|2w}205!AMjQV(mP=Dcix#}?`fN0941 zzJyf#wi$X)A$ojTqbd&Ke%!VI(;@xq@K=$3DYfJRFO+xw+3Br&7f2nCpd9h)1fYSb z%jS;HHN=Utqm5a_8qGwj?}w{?twNA4#Ox=p^Y>dx4oj%LysENvJkcOVHivWrYvyCY zjZD2<0U`NMGH*zdo>h8DRvO#yJA3kDmBQ-D!&_}jJ2pZd_~}!82dbb#VK&?=I2z=x zfY%qO>@J6drP(|O`^IQ5zA3n=p_!r_gcuhtE?5y#gHS}wv)O`!=I*l-DfqJO5m&pL zSI__D+^f^{&xt7tkFR6B$D=~UqDpwN3d)UlLOxpYe)QL0!q&a^@>vL|p}6?KklE!C zN8_E$gCi>nzsN(Q+Kq0DDhU*3to1wJ)JD1iZ3`>cL)_En^c%TR&E9mrguM|S$)=yZ z-u{3I_Gz0(txEHlnz+JyW9l`ZR$FrEkAJD+o|TZgqcu3P3&41f*>h_&sEFY+CilIu z6`i(PtUgF`Gy9PDoqgXROwW1~smS&EzHQ^Gwf+ZUfPc>{l*yKtZPZP{U=PYx=-~d) zyv|;*oN)KB+Hi=?&l!~9(Q>F}1q{EzmpX_P(}c5j6(Sm?0YTY=zHExk4JDF^WNCq( z(x9))F$}K)BU+kWq*?rQ;(EYwyVU<3djDmX;~5&>)w=#Ze3PQJX%5>ck6mQw-*M}D zN;EaKZgD%3s+O7ACce>R6Qa(W%qQJ3ew*lcbvs_nxmE)qpy9|*2XBPhA`3(MRebNP z>R!llUqtl8(RhC?2{Qcd1!{smM$_y0^oO%w)OkAwJ4SuV+Y$!0yfegv*go)^XXluM zp%MPBxd-TO_$nWYei~5|B41*^x8P6e3xgXLi`}!HIzFSLD&z5ufd}v!p15hoZQ-n~ zBM?O8;rznC{-0h9(6~MhxW{*141V7w{&VAjf+zW;em$?+ymVi-3*n4bpO_y6BJcCA z%zh>)j!4-~DjV-cjso@kHZd(BcHZ<&bNoe@Z~xo#H8VMC-70co`O*b;{G^`g8A9Xc zdFDqZjyZp^vshhS{o6ljUfLyvo_A1m>8Hu&mC#e+G{WUIUYSzg_!(@%`Ecbk6kWx> z4?;7F#YEpL-Uc#f+yq@pK;+_5hHMWnU7@cly}Ee{ILU#IDVW4L2<&Eyz<+jRWw*v6hg zfIB7^Oqmw78Kuh#(4WeS|BHWQ%BM1v0|oL#Z}-2fd!Kf$inUtf4-3mG=zVWA1UU#1 zPkfOoT#2;bE5}K6fhxh9%|ZPW%$AqKmhHI7+C3v}DIXBPP@5lrb_>ay(v zLSFWp7G<7KnC{7$8k-kMv!*u;o>@2)aw{JN>@YoW9zqk@!!0_CgHe$YlbTCM^(K)a z9@sE?rPm{ATCS8vQmvp(;g0QkEUjFgU(Rb)|ud`oxraf=DEPPIm z8x(qN{t#in^d-LJHmpBQB|B&~1%o~!e7i(C`+s^Z+#eOE>~sg5i387Y`j+2aD#~gq zT$MIo6Aqlobpa@V$^)(kV*=yNL9PMhObkdCEhFhfGP&*$YPusGq4s(D{p%A~bCWw~ zJbykB`fK7EYqco;W6=Bt3#LgV8)43P?eF}n32Ddodm%?`v6gpwDyp-j3!xBUpM&~{ zLh~sLt5oUFI~nf*g!4} z-NK8Lzpp7$77u+>PuF-?{ZyQjR9E63cFkX<>)AdWIArOq z;r0WgL5kC6n@&95HaEMA_&E3IgN!?V|6WTS*H5lOhb`jy)PPx4^V>qZ{Y^;TO;9*Z z=Bx+(dP(|r5E+81>HD^7e@W;km)ct*zAqC6l<@#4P@Mgg#|JnWCS4h&B6pLyPY+sv zXlDO&?DkPO-*JR{e9xtyub&9sY1^ZtYOzII?a&;#k>aXXBz2aUmF^#X(&1nniN0gq z_-EDUmFAR-wj=S+?$lu2pgqy0@uxASd3Qvudd_KDCDJxe2h=Dee)kxn$M8;3HE>GB z<$e`qaXk_m%r@@J4m7tvc2|j>qr+3$$RXV_a`Xbpj!mPELi)pRGxaq3x~GJO)oWFM zZ9u?v0mRbO<#is2qz+F2SQ|&)*va0K-+Mm$p2=+s+w|vTgz=}cQFwiKZk z=?j_Gw$?-|_tD|V&pl_&FFCyNYdjsWrN4E6J5CnIFWW~|oJo5;G4^avo#DCFKg7E< zPnAopG_;SqhYq#AF%85+k$6%-Te!C$i<|IpZh+*!BaH4kEZNqJ!v{|I*YP(GJjLGB zKctyUY#;DXH{CEKpg|b!?CbL`>t48r<&k3> zH6yp?n}Rmeq|Hv=LO|Z0qmHM!+>K{e@BC@~o5I5o?FT*|&)mdlon*-7*e%T)n+ZI) z(f6{}u7^v-Y3T9I9qG>4xPoM#_+MI+<+*z4E`g)s%{oB@OmdeI&t#Oh{XBbn7179k z)&b}UezZ5gWAv%*@7Q}3X7Y?4!X_2B$3RhIGwUU01xy9Q3|qpR`bEnvDen5uEzpF z_rXH+t8T*WG9bX7kBK711

jL_d=Wu?2Y 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

1P-+*N}BU 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

@|aQPq_LTu^CRUXq)wL{jW2 zF?WN_F(NiwU8IhxqQ5MtPw;+L1@?8$CbkOtx`5eVY~ZE|gQF^~P}lt;HuG1vhj@w) z#3!7};?&FPY+yFU4QR_Hg&61^OC*y&ML!6f_Z>CUk* z%oGN|8t(o0Wl^_7zV6s!Fr0Jf7#2IJ#pnBqG=_)OL%fi(`0_A4s*hiNid!Llf?h#5 zq)Lu4DY5dS3G(SZx5+LA`jWxe@-L@E_9U}}=o!i@3??pPoga)tE{Eq;=uM0ykkSq= zDk$${p9F59GQX_Ujf7_(?=$$T?BRuZapxUW@3}-0QIE3~0g;Un@Jn<>Sw=cIzuNi= zmaYrhnRc`0OX&7^oku}?Us?_P8=GK+byj-TllG4n5my0bKEU8YyVdFe!+i^*Xg>81 zNBPd(x*1h9Cc&##{8Wh|e!Z5c>0_pSXV$;v+LN4PqtuP3p03foe{f^561#U1gx*1{ zRH++G`QvB|0sle@(Tj&?aPlv<#cOu$U)S){`2Bc_`=5X9c*lGCy+%#aJkR-`xhIv1 zM;Un1Sq?zn&p06Vh-LhUg{cY`;ricdGv4diW|1k0jbJM~<1(t0)(;ID_%6SChuw`f zQ!N?-E@t->QYo)#Km^aCjzA=1-Z6X_D>|pyu3px>m#m4kj@u0cm_g;Ady+`TnEp_; z)BUZT;L1ab!h5m*)RE?o`uD!He^7qh0F{C*f2@b$09|tT`V?CcsTz1;KI(dWen*rH zq~9wnPpdEisj<^LAuz288$rPg_N6UZjP&3q#QSus~*yG zzsMiZ$@NGQf3Rt|wc|G8JC}JQ);;Ye@`UGgCHw2mT5gD;wD#tO6)OH$KCihBR$nco z6-yqHixnAn-`Gc-)1F!dreEmDDUo8Xi{}Pvzsc3R?ziC=nPnBuCI)XNy!2x>DL;4X z*g4WFTjtg=UlkU1s%nMd@(}lVy@A~fMopyexnKzqxQf`@Q3+8l(*xzQ**umRue!Xj@MF-#0B&J{tu;NMlDHy`J!$cYY$9 z_HR}9^ZdJ>S1oqG3*GEayQ~yi)S?v9^qAF%XduFrVtwZp5-u1cJyMMTO93nu^PRcY zQ2=bm8$1K{-z%?QnCH!JnDpKAW&7|~&+a1)Bj?^)U9d3N`7_f%U7ty3u?%Vg;=r(U zdPWE-3|Z>B6^{7EIxPgxqfl@vTy7JfTe;yOV}`4IjtG3HR22sb#U8Za?Ep#DP^OEE3y6(MCX%k(6N4vbII&msWwvfI?+RnHIyZ3Q#Ek+LfQQ#9`PR85&3 zuhPnbBQW+LNq>DkZx2?+dmMQ9N{bR&8(a4g>p6b7u$_clL@z~5UjcHrzV-FHu6S|W zshGREZ&YWS|I_KUsm4czD?a$^4{y2J5*K!8Is1kQkRHJbN5%kKt8swvfz=EGf!+?1 zDWZWT2Bfno2H=5jG9n{=5@_~BTts^jdf{yvA_8vRiXyfuLyuNTuA#Ca@NX&y z_S%-^b;r$NW4wcFBi8Pj&@`}<8;V1b<%oVNllMus#elwuC1$2^-y%+ zFVFK%zXblKH)D?-S4#@jPDMnr&(?xwaTj}hnvDpYj3&o$xA&7lv%=p9=!x6i>Dmhz ztCI2H)|i%_(zd@tN|QeH&)8%dcdB++xj&E%D%!HTJm^=u$FytXrvOx3yIdH^_8&z_ z2B;XH-%dV?3&u+KtI!&ofRv>tkVRh_BL>ewPd;9;Qs|&!Rt!RMRD1ZBqaW_X9To@R zc_A2)Rkju%Kh#`_!ZC{wwNvn0_0T6p*huGZ4|GGf=@Y4y$7M`nvPdjg_nj%cGyEsJ*O?Wqslve>&$mV>?@n zgN$>6UEo9Jr{&+huG3+%qd^jA+`qi}=$RCaRMKoPO$;#D~Hc*><3G8kV@@r2gR9tUvE zB$QH%K~07eM?Icu#B2`G*84r1)gbe5_8%M^AciL|HJ?eA@=*8IG`h+%1IiOf}#i4f}#GIi$BcQ752hYEkk!S?-un zzG~-o;qgtH63cVOkM?)z705Ip`#x_8N(;2~-zr~dax_Q*Pz;j?cRI}Fa0Q}_Y z_%p~C1NLY!0$Sjl3zYB2wVuO(N$NyS!Yo? z!KDOPnE@^Z;X{}eQuq9nb9{9ZCeB&puhTMP%6=oC47kgCga68p|MNNl^#)>>l378-xPZ6vp{9=Ghra-xIzJ z*L!8g>^E%+8Qfk3!+bK>m9na_3=8*GDGq2Klo#o)dXRf?uCI7s*@uEK>}8$(J?T#r zJ#JqA39Amy{Yz!YHiWzCGGLEZ2vwyaH^{NlQ{Z)-)F1{&k5C~ru0`Im8lM3@5jo#e z6G89==p%JDm+iJTA90z-(3NB;LkS5OYEOtV!cl<@tOy?0Z2)kVFb9(IE+Uk3IE06A zAuWhq>e`%>xA4CW$10vKKfL@x?h6;)mZI*Lnmf#jgW~;`8Jp@7ylCkaEtxL%Cll*k zCgptlN}YRLv0%<%_3ObHeXP#POXec>ZgvZuQ-dYVcG-tao9a0145b9C6}QG6hJY=B z_DQ)@psOJ5UoMU1(APE_&RVpTVWbaz14m!=PGn+*qbNq9cg;0IJ7Bw2SOJ3e!M?%X zCv)Z6({;OIoIm+5dr?hhI><AU)dn*gFJrxi z>y33hK+a?JMvfxVSkmqVwJ~vmWniorK`$X1vfz>}W;99(iK%{@#%EtrP(UR@ItCgsF3%o;DlQO~V2{KB zjxN?a+giQ{y#FBkd_hxypeV)#>l_`u zZzYy;8Ic%*xNWixYFJ82Xn+%fPmq1q0ve5aM^UiJPrjsbdt7(zY3^$GF|`%{TvqpT z+J0Z_yN^Rn-Sgwn!RlVt?Z-RWHIM&C!hg5}=>m1Q7*X}%&KKJ8 zpe^RJv%H{D>aRjt=cSES?_IkcOyJxM6Z<~|GI*kDMD=lLKp)`p90K& zeJPrY2R=HAI3&N1FHlkd>>{Yw#|2z!T22KR&&9EED(+DDf+f1=G3p7{1gbc&`JRC1 zi9o8lfI)`heXJ-9T1g`dE68YtgwBl0Iy3RH%~$=x<)HW0)$26N&-!+0obOeUY+vSo z-D<>fl;zC7Esq?j?srAXYm2;x%)_0DVMw;y3_yE{p80y|20owyH6_Mj!8jeFqYe~x zwuNo&4Cdnx4ua0VqF|5+BhIUbhWgc>B(Q;l}!MudjxqyLq+I zz5<6oCOrV|l_NWuI+1FUMh_6k$(~F%Fnk0+gs5Cf<1$fo6!)CXHmXfPehNgh!NX5{ z$)LpkI3CcE68ffix%}X-6HSHPoZUrPgYpv5xhyYJ%^ZF39dM@=5tIsk%e07U2nt;XFdhu!HC7U9>-q^Xq-X6)0%a=;||9=1(i8*#~prbu(BOQdjNQ$=>}koh@(ZpfznTBNw`_lW5RDQj#_Kn>9WH z!~_7H5PJX1EF<3>d+NF+0eRMe*DJ$N;*faVqlgC(g~9fu{msSeD%gw8xbj+bCuK5` zhEYIz^qUdNrsY}?#F(a+N!osR?Q;7o$f8I4kC${U^Xq$SjW<1Avd&LH$aRGnFZ&ft zkuQN;2;RD&FYBZ!xj0bMs4v)#$7w>@GH~#N2;eAqTZGF?!9!`_5H46z4jlJ7A##Sw zhy#Soxm=#-9&0SK!5s%oGMEyk1OReYg|(z$^^10|v70s*`8N){@6Xpdx-lT$Q?k15 z!qdX%;=Jb35aqciYsXyj=?ilq?-Juj?$gcp5{WT-%3Z7t__<4iu9eSO_Nr|pJF|QN zQ#8~Y;1=`$czP3fsMq&>{CUr2W-JY6n5<)MY&C?W)C^+{*~XTfv6VeaDlO-Y!B|5? zDvhyZO9)BJ8C%h6PfAHE?WN_^>74)L^ZmX4yo`*gW}bQ8_jBLZeO=c*kx3}cq8+l| zzwp}vl86{IfT!EC<2HD#-G5gO_?F-rq`|?*+rDQq0AoM`uKVI9f7L-_cw{#PJ1;I)BXf#lLokKghnwn?)i1)te{Erx30+z z*_w<3L`~3_nr)jDV8hfaWN|v9+ri3lY$@Nu)Pmq?UREhjmwHMDDEnaJ6+XcL&&s_g zKa`}+PAg3_1l1^5z`p|^sfe=^P9raMWv?DWH#b7#1^>)EwcwKcHdV(={8g#_Idt4C|H`suyLv{+P|7BMg3j!s_2ic46aH zIMK~Pwdel9;8TXSV0hiDm3EK=PA@9Qjpph-SO*W+YzRVLdv%*EmAY1$v~(+bgJd&yFO z(#WQrLNXxA+*qIH8!@n62^h#WV(>W7Igo{8A5%DO>j9aekZwXTeUl8h99UlX$j|`6 z%kQG4i7REJX;~~y*I9Y8q)c!_vV)Lue=&_|0XeKT6=bnDp8L&dDs5c-*4An z-ZMDsf-1=fWC}wk=pQ|3g5ESq3uBWOooJ9}WKZzd{8m^})$@22zX)n624t?AuVXBt zN)0OVWW7l(_FktdQAS>?uARUkHf_KOpc&i!L{1s*spQi+m_TWs0AXpHwvFnu9|QKG zX4s#8<#WRBqMCqLys#*U(*C}lW*lO)qOY?!sQRu@_uBz=cEGk3l#A$?Kep}$uFwMb zEW*_AAX0uFbL{_8L;fx>&13f=t;tGLci$gJoF)SySqXnWXa59t?wuTvD0xFEiqK{_ z6GW!FA#4P;dDy2rtT1dbj6HDRs3mCKP)>$~Fj#qrl)Rfnl_IaL_>+vDD_v_>uAfQl z33c1U>s0kG&td-Z-3l&RBN8= zv_D&U<{;2aH}mp^rWw1mOgAaESsh#XIw2u^A@e70e{Q08?W0q-P1en(b$gmeH+E~e zM|$SmDJuPHo`YehN#NEg>kwRD<4^o&MSBpBQ&=XGkt+R1QtE$EhbPOdbttDHJ!HV8 z1#`?5L?g@uno_GWyT=T^@&p)>m0?8Ig%MdB@v*v5ivy(^N3^!YM%Si}~+>RW0ssYc`lgs0d|N$`i=+0G@pGb2I+R+lJR~R*3jT zAxQs-n{-~H{V5gYE5wdw~Cu(+LQD<`s0Kr+eLuA7?M2`KX`^AX3YQ5ZgqKwRM zk@J7YZaqu0KYs5P0zzv)DF9(0brj<-1E&UKyKv8&P(eOeUY+I2v=@QJ=FQwY%vyTq z$~ys)Xw&?(!mDIq;n|FiP`c^u}rfFZ*`J#m6{ zOw8pMggoGGZw1*o36tQM#wZhyOanlgkAvIhhR+FstkkD^ z{aa0Dy77jBZHnK)kPrs`~ z!Ebq<2gmqAHlVPvN-hTzf18aYcwk{In&i~(#d04iQ~zo-(bXlF9#Hm}X1KUvoExGR z^z5JJW~Zy}4zkgBc??UT+D9(s)WNMgz*k&8ro8NZk7c7R>-*F8;&|EphL+U4-}WXp z+%wO$-oBeyrO-IgdZlVe29pTQv~wq3?P$M8c>u~8PHL=8=EjeM3VmWm6Alv^6&Y6N zEz(VaZ{Gm7`G7D43q~P82_9d3Udugim2g&nd{Vlw`_C=GE=w+If(sS5pm=e<(y!3$ zu3u_539W0v8p$Cr=IFv&{YxoOUB0?jA;st6xsEP)L_b=p;GKV*R}652di4xZCd#gi zkUI2HY}sGn1d|}o3S&StKq0vUj)NvT-Er=h5QHegzzCVzAhS!uS<_YeTkGTT96c3{ zYd<5CHk{7d*6;P~oXvHo3^w9hwY#9tBiFSSO)MVR=KPzYYH#wx6#>GBhnE%b4cwfx@-G*v ztgnTQFy$*ONNtCNIib#7L~^K=5J%R78ivT-vhviJaAl~CgK^o1UD22>5`*PXOm^Dn zZ}cO{!)9Vf_+;G0(W=f-w$x;S+NJ>2*f-NZ=hV21W-m|eOs+lQ=@P7}kBp0>d%<0c zPv-7K6F?@0J2}kR6m{Els4^%vr>~%;5-NM9xf@~Jq3O(P*Djs7I(m64seohEOF88o zTlKC$M;;ATOox$&tL=#}kKOOces5H!MD*{!;^|;(n}5}FRu1@-;z6)qM=E+MW4~9C zYJ(!iQ+-q)7apn|R6cd-xC-IZBg}axrZ|}4;CLROD%4RdlsCgleJ`yXmg%^2wwP}? zQIiD4vc@9SYs-(gq?}hvp4wMYW>M9Si!luO>mIw_xQH@PPxypaImM#ke4wq}d`)U2 zW;x?|)PW%{QenkTWM-yerW#j^Aiay3Q;*?od^)8V{Z-Y^U9+L9@6y=g#Wr}J5x;NL zBTnvLxwfR&{faH3nv$H_bdfrLstKoOeshcK`etYD4Z>E|nN9v$in?NYX@>k>o?AfV z3>#Jw9lsloF|rfF-kw=I+B*QcV51m3z4Kv555u?Zj7+|YB!ba}-JCINy|os>*UJ8`tu zDcxs?CxVL+=L%5=IaG*}h|tY6t$s$8ii@q&2L9*j(u7bK!z^cLqu3PV_dmqn#Iu`^ z8%CQxyP-rr#?!4l?qWY~wDeW(-UaQa)0P~fLRh4N?7Vda7U8IUc1?WF(#G6SorYMImJ(r=@U_YpdK23KOp z1R%-I2JE3b_kP9ws%!MmO$<}ntzjN82#N;R0g5sm0oNR5PGmh=webpl5=Z=3m|DPk z4cQG_WK-v^+&w^^@W#(urrx&TdkkPo+Z6mI!DtIcp#YWw)%O4KuN zS%lpQXXts#7EYiOP#pnbuKoio>*U% zQ%@(0!4ADw>FIV}vAol+bz{{W4Y$D{zpFoUYSptMM4?}6Q+el{!tVvFigI|TEmpe` zKgMs+@8vV(qP5oQc+zghe$t9&`$^~z* zJtMv*`}YaE-kZPQ(-Y*G3x1u)sx{Y3%aEQ$P@IrdNsgwR%}q1Vxvnmzq8BZawgH(VU{(wNu2pO||AmCxH~ z5EmP=l97a_!0g@xS3q^?PYI(3?y7y~B2hEIN^wB6=Ql zsP}-DA@Wf!@E$|JXf&kk+wFtn8ao@14bhyOdSHl-QI$stR0^I}ny%?*qxnMK#6k1u z`pdJsAWo;D|DpjJ-c4>K+FvSpoIGpX?zGQS+Ut4X5lpZVetaNQA>zcuJ8|awx54cK zeh-c_8m8k}8K|Y2&LW~#rS@f4Zkw$>!9eC~oi4>@Xa~C+-4dd7>ynr@(d2}J)@^eLk%GHtxHsRR*!68w^+0(z` zu{J46l>ax2$ah(C@qcm`CHP(1sA|g}P{CrvvNGj5|F;r;szSMn3KXp@%UX2cts0cL z82qRFKRJsw96Y21Wi6Ue3!@2tuMR~mCh$+%mPV^>Z5`m_m{9Pd2Onh!{|y!R8;$?; zuPLd`SaQ-hQ)ymjbzm)%VfJb-PLP5j2D%Y|?p3)VI)2GTBxUu=+X~fx zT7DYl?!#yEcsCk}6>;a~@It_>#~?1@UzOx}EL}H(2O%_cjrUodTP*|eH}u+*UW9%a zZfP~Ic^B7a(wzK!wrYzmg+kC5!Gu_b^UEfgD+5HS@rBg#mxsv=c+8&bt z0a1&s1q@juEA508eQ9EZ8PW_~_T3bG?0aPibpP3I6`?DGj7W1eD^|Eos&NQxOoF1{ zKL23tpb*!G;Q`nic}{ zr`nF{S;Jt5ww?Dkt$*Ah_jcEH{7<1O(Ai0qrh2jCwn=&mf+f9?_Xk zY>Q=)nsT`As?KLJ7y+Z+JlYGuP;R{WH6}I4gLxrnU(+flYPw07;AR3Hqk1wTfHjyv z9aAxJTJpia0C3`z_B`gI=Q&}w#FJ!?lMWqXS6>h8q~MaA8H&4J2blC3+AzeMhv#f9 z5Eo6g39grdV$>A3Gho0|1C1aG9!#hGh9*rX{aY@qs>kom2V^-waZI9$)cps(O|D4_&lXdQYcl`?e?0%rx=9K!@>Ik*(T6H;0Z9Ci-J7d**dTst6N6N1^%JUp~{ZyPM z%X6HKA8i(k_37kruBY)L(ShShp$$eiG69My2N*Ox6@tX|{0phj2|_H?mIF`{tu-N{ zr!{+IZzJRzKf(pa@+rjTry+mg>9ipi)ljMR`oSN}Sq*WSlSe zEI=y~cLb||{*CzaWrKwKc^Za-hBtALqiIR2?rnz5S|uJdD$!fnhlCyAb1WveDokr2F`Bb z9169D$v^a0S+I?}m-}f{=3!`iRw}i4%f!pQA@TQfKYd&IH0WM2wfHjWZLrpfb|t`k zLlRzx(5Rk3M6Y zzqd5bRR82st>9y^cg;YP2tBG@t^}x5BL-Z-Oi0(HrfKK+uJZwQ&{)uu4ZGhH&>F)7 z%5~AeW;_ImCscU$5X5R8G=$IuglB>8`dX*JukQ6vf8G^~ZrpU8y0m?Luk$ zGudmENnp3b!d3uAvD224NxX!xbQLiHFHO* zxab3fAvHR%ee_LkygiwON<7VTOheQ}6d8KLdOny@&&hePds@3bD(J3E$Oi$Y6+RCT zj<`^H&0_~0r|T@_+`?LA;eGCucO)G6H%ono;qUgp=ua$+zvBFvEtCy&((vcVGio7c zqp#a0?hJ*-Q$t^o0Yv{N0FyGn_;_Cf7D$?~sBGjXX_2htij<_u1l&dwXe>~#0=R{X zp=z@7cy`Tx)o2(f#C5Yi@{`R#tSf~(_tk<)gu<(o=y+BcMp5nd>Cegq_n7EOx-i> zz=}M+y#tQG4#N-#PC!W_x*iBl4uv_Ra0ml?y%)yPg5*pB47=+!JkEvDtStc{{=vD>! z76p+GlMIC#vsYY>z&JC~!>td3WkSzZh|~*lQdr*$aL&VHcjz=m#LNxC<$!$xdC*Gt zMc`1L38ASHB(8IsGx2cXeF^QIG4W8&JD1CSpY|UZ437&MYiik;ln@Y`wp8AI^T6}( z3&~7|Jcf-+RC5XmH&%NfFegyyx7-eA{b1@YSb&fmT({YUgf*IWe~V!4q`Fr-yrB6 z!r!d`Th#pcn7RiCoseAUEanZpa+Oo_$e0|q5@nYU!2fVVU`b}$tc?+-G0RaBbo|2X5KE#i$p zWyFxc0(|MGPfu<5eB4w32-Aj>n(Duu)C4Se{h;!F+0Xt8KFfP}4k-BpZJ$t?7TpR& z2B2XIn|px{oU$NlS z1P-oJIy5i==erPS!(liKQI|p*V4i|b93K~97{(A#Ba=zm|jE1a(st{_2 z(fTS888{`lwHX-N*nVX0{#Q(32Vz0DG=#(1Z!_T_BBno-)7T{e4gjVOc_Ls)te-{f z5Ws?`DKOq~d-XjUVeGF5Dwixa$2lH7-|;hB=U0JKYfQ&kS+!=L;cOWPx-HpeVtQbJ&x%%s;`ox9|41?d9BL=7;JiF_2A_Cec@5w>uTGqLD zN32I5X&el?WzM^6Lo`xrYP?u(et*%#J0t22CyjKtxt7Y1AgS$A(u$b5W6JpO``w5{ zi{V3NjkkLhdnHkli1Ugjz9)(uU4quwkDU&7bXWcMpmv)P{99D@OD6ErJUD}i+cs2c z%Eh94s_GBi4KePUJV3v9mhjbBi&>f7sRysNIJO$UPl`f92PZ^tFd!(v2f#pde4R*2 zaz!?w6OYOgJIMavy%z}8J~`E%4iB;QVJUeoaIjDFNuQiK9YoSA4(7z9J)g(sIl%Uh zXq^lZ3ZEd_lqQU_&W6D1w5c1OVh`}+R1O6wLPH@OZWn;}x2L>K*psmH!_IZzZGOf6 z{<%}xZ>)dZot5yx<&PEj<84yD>#Q2@EU_%toe zn&a(2*9x&Pr|qt1$I_Q5=p?9nv-S$k{-n^T(4#^@YJ_=tZ^L_qd0EEtYEg(c?8KAt zHpL8ZVtDQmK|^Y`(1}%f`rx$y*KcgT*I%4I7h!d8xf-lp@XUVbHV&xy(Nd9(Gx*l2XkFwbov50wX-Zsxq{@!Lp0aA?|~*6--*ZJQJQzUPGKoVCA~JKpRU_(k=_pm;5gPI`78UVsd{qyYWgF&LEV$}V6LHjzy! z;~fyZj?|*75j>scU-O&R!edK;rv?Qu5GDtdvhRpGG0rQkFtO@+yVYU!w};1Q|2KD+C+<#5}f`w8i#$A1=RrMq{`PhL>FukoHNbU40YiY|GY_K^X?%=Ci( z{-#$Yld9i$LA}K4MROl<*R7{Lh20vlcov(0HF)&Alv+xBN49hBFkJ7Ax>g~kE(sm? z;oC~wlo7jn0X#aZ`Fh{!m`NRyniIrC83h?&4<~mbxjv+ae+eQ>I(;8=kqgZC){GpMXyxaAmCXGW@PUTWDU(3UE ztc3&TSKbYQE9R*W z_}$TO41FK_((A?2TjCvq4BPv7AUGXJ12_TU8TTS-L+>cCOg5i_R}x#-X+#k&JHU#5 za24PY3LfUD?-C~sof#9jHt0{oqUQ9J#M%Mp}Kh;BQZHC0>83=Viin{^bw! zU3yvdl`Q?KwQX=f*ivZ+V)_#cCddHqLq1CYbBlnF4GacxU>-XcEe%vD@T3P8gkc7= z-ly6?Or=nbQKA^QRL&ms1_t{FjN}nEptLqrF@$Nv`cx({&3_X1Rlq#D0GUaEzwR7# zh2ewHWrlV%ycPgO*Q?QKa$CE7N5LOC2X$YjEbKJ8r`+j{yOrsqZ=CKUJTE=0;FR4M zdHhm$O}IphNXJpgPWGt=4-DT@goGgiN$f6D;?}n%N6A(WK@~_|Fqg}J#Bl-E#p!9C z_j!s?uC%7N+cs;HjTZ%my9E#a?7gZ|>4FjBZkb6rJ1BiDQzPiWD0F3iTZ?1%ZHuh> ztXr4X-W|-X)zH)Zc3PzQMT4PVn7*8}Xmnrgn^8;XXvaC(gpiK;yt23yK_2R!>xFdPc)2%x5) zDB?#F*a*n~zS9>EjgIzu$$G%-8V_yDJi{iQ-)YxstHv5>pVYWmbE>jZyY@L*u}$P) zu??$KPUQyX<(h(b!=iy?p6ZNcJ_QpGoU(NXfC5U|QfHr26!V%8>g?bYsQ|3F4Nr=p z7>V;t?P{X0#(LwzhWh#9o8iJX7}&B01fK|Sw*buKT2~lSaiRfN>tFP|z52L*dSnJ2 z#=$~0=YMc02;QeAlDi&gel)l~g!;r}&qQyXQvc-&!qb%N<@;YDvC@SX7|!6)(d)92 z-t7DpsP{BF*MuSjEugiMC(&E1NTz zdiYZb>S{QO2Zim5$HNI58z3VREzc~+VCsqFWO+|$hc!WsqWIY3N-9k7I4Z6%(Bf_7 zz3aY)o%V4mJ}sYPv$Em{N~HwxjeWk>meY+r&e!=8dWbIcB~2YLIvc`}R+O<#8QXXG z9d4UxZO|kAnBK1KqxQtz!TQ>*`7Ujg0}3Q~LT$Pnm63QXPrA`OHR;0EP4lkvrU-$A z^`!P-b}A_DN(|X4EyYTTCMS~JyttR;`=7Qb>^RCYf@VY*Gmyxus>$N9Y4e`OA`O7WNVG%5 ziPzzK3&^!8x_K96P!^%jiMzr?3hVHs_S$)~kfNUi3Q;0SD3YTZfM7>80U`4M{e|c$ zcjc=QD@Qd9{IUF<=;`#zvm^Uo9%irR0GY$sGz=NPT^c0pg%F|1A;cJ+SCsfkEr()= zeNC9?8;WwEr4*Y~n9+j}!?i>jp0m-=bdWPa!ol+ZN{+Z(3la`TWykTofjthV=3~!Y zzMlVtG-UBrFwn37cozIdjHAvac0bRLt72!Vks^_VG~18-nqd>@%htw`dCm~5Zd zpZnL#T-XvmOG;MzYIfPGbXnj``nJn8cJ}AdZX1#I$>$Y6_-EM0h-6#v(M18M z7RCdv{4o^Wf!ktGLF1J&o?|o+&^CW;k^&EKD6s;Z!5#JXFny6{y;XwbMo5k2AfBXe z6V~$~+3}tQA7<`0WwBaTw3DR#V1p5RSOc!Vh&zCDbm&9kXv^eL>3u|8t2mp}~ zjunCnL}s2}p){7ArEO;0J0dT@IF|2kQnvl`|o5qs~lEW5de@0`XSydFg_=J$n4vLrTO-f5Pvn8 zXywh1^{`Vhn;g|@2-mOCHP##N)$+Ke^D-kf?vIYo^&yR0vOk~LuL9UDD;RQxOR}%M z8#qKz*+-Ds1UlYEFQ4UyAP)BSu^_LEf;k?W=!M_Q8y4gB!Y6dJoDA|RjGaDhVxI7t z&^Emc;dE$1!$hOjC7L6y@`xwT1Lx{Fuvic2OKADaXTQteKmRx!bNNo&q~GCZbHs~= zwU=YFR*lu4X`#Go-`HzyWAQq?&@i9x5wBCLl`NZs+((htd=W{IaVpXl>#wb>vF9YI zeY|xhG@-L@XC6@1`&e;V-3t;3w;JFtl}PkwrA1Sgt!-MxCWNr)ifX%WKUwo* zCIm-NW$9`tW+B*Vh7TuIqe#G)5Yi)~nm$(MUms(J6=^BtKdd@Z)_8mm?Bw2#!iKqZ z^Qtr1f$MIs#Wt99{}5#|tWFv6U9qGgJtrU{e8s%>Z1{q+%8-412^OOKRgy_dV9B2a zu4SQLE`_j;)-tA~UsInuedF{t+8!^&4|U-gLS?3&qNcEQWH7*&-G|=Yyz@27<a(t2q^? za$?$!Mi=fBL~~JXiW9~uuia(P@Sb6rUJg!q*QcuOl&_PFfQGI;w@bvujc;c##fUT- zetPOK`Aj&ptN?cOeg3*$g6MgU49Z4DFaFxRb!boZMWe-{Uegasmv$F7j=h`-T;-$s zYITeR5G14W)^JB@NZqzeb&Bh&BHQOQcjB|0NFAgs2S^m-Vdd4U&gjlY>ocp3$E7vFA z%}g@VR;t1i(3_t~GMGZ7qQ$O2klW3T1F^2e^5{fjZI+Md`W{s_fo+?Z_zCbSgdqTR zD;LK}2%fn@({*Sw|8&zcReMuQx|)6^zc;C=ZlAOd<8=}b$ZV2QL*+6n5>94Ra1+&8 zTh(PopFU8vz|AW@!Hit6l5jWN`~kYHLH9Ah8e9gSiD!YJMgK0sNf ziBrG31HY!(izp#j{R$zb0H1>Y=|TyWI0(q}ic2#s1|w6a5B&N)`+Tk9&Md|@KFEC< zrFrE0EfV&?-tN;OK8og6Q^=PQj^&0sIwvnx>gBv5dlei2yR+@zptUb|oJ~kp;6Q(k zM*y7uH2Y-q`ss$pZogL#-#DE_m3JLN%hCv;7ZChA#ftfiBkrHx(I-KmEA zFB*eW8R?^#vh0QAqLT-N@r$N~gK(lbBucjXGJflvTK63RV7bct$E>zqBWqJ>jMKvEJh zG57uZ?ClR|EIR0a{czLHcUNEK{z)=O%M62ZNN0c4r}9aL*NPxz(l@f{htpWJNG+|4l{3aMi}`kD~%a zulhvctS`$4^3H4XT_4N2KWS;4KX%;axXT}JyL{g82s&q{J5vtdbRRd$4*z89J-MT8 zJQEX9NG!KqXZ}LvVbaExYlubHCCs}?``k{uSC49K;C*G&lB)Dos^!7%brII98&b|z z%M~l)whyd4VevDQ&2{4++g_1Ns1KRAVcXgfzQw^X#%RD{8<*1guJCDCY?utN+FAYd zDj%@W{$88Fz#lf_rf-BuIemU;NqwUS)nsJ(TIj#E z4<22DJ;K)Qhkx)No*Bv8JAjd(=L9Vl%WFkEI@D5dvF=Vt-9jH zS4tZ`-fU^wYS~&Jbf5wEtaNN$Y5IfJA%V9p4ep%kPJ6pxk^1yPcz|Wk76*JqY6?;( zAWWs{dLxEw<((S{-iV1U$jiGW?@_lmr7m?LXKO5@T!F>qk2ij%?P@5Lfv!-F-3hGx z2-TV>ykK(?tgVR6q5m9z8H=ncF=o?aBS(_$x_Z%!Oii;NyHy)cR{H@AYbe{aP77F7 zP!!rEuqXVRzoKJX)KbVnYAT2D&~`_W9k;EQs8b`*6#UG5x%pHCOxSuoEI`*c)jqkc zSEC*&e5D9aeN(+IQ~6!)Xt>V`g^51^`nEG!->umhFb)o@wrW-HC113syrIV9Ma766 z!##NV_QKKsSi1Ml%6^gUWcqs9N1b?iEE(Z30cGD`r%NB-c+PI{JL^~Y_bcoZ^XA6S zi7$KAUM}WMQmt7{TE)sc1fD?*n$D=*23kb;qQz?954oFa+N(My@{R&ETT#AIReLNpn0{+Q%?+@LPT1tw$ zu=Lh^9jjP$gdpRu<5hm={Ar!TJUnyq!n`pg&%zcDunmF_igG`nzSI1a482u0^cB^4@$;fQa&(7%AZ)&|} zJFfBWb2d@$5#J6>VPmrY?>1I7y|@`z`41qDZQO-Ar}_^(q@}TOvF^^&-^qn**2jRi z>};u7B#*n zT}tC=Y~KCay-mS*ALO>HS9_LJ^NHvu{n*Fj6#L!+`)-O-`Jb!9XeGu4EzTA;joWUf zlkBj9WNXGIb4#lbW1oxCa~rf&b|rXjAC-DcSn}_TzO9B=$AM)6`4|hK3>x#?Y{i-+4mJAS!V@0d0VrNRh%LkP+g| zRpqAqgCl2h@*O5sL3&;ldj5{g={ zbWc>z--~P6{I_|jW4j9@ujC;h__g{#e)8y_V~2eAm^|qzaZF9feT+OflZ!WfGTGO4 zd9OiKYQifTIBSt@wZyPIh!-gli+z+q>vSpV)OrH{C}<^nih#PQf>v^h!~v5G)i_b% zoI&G@TcCbIYW#RD5l=xpWu`Fniuz6%Ynb(9xnwCGPLP>Nr2u&!P!WU3PefZUYfXUA zy295U$BHW`K$+SPe>-itY*OIoF89FCig(g~zPRT8E$dbFW^|cM9OA`%3Q9B7Gad9~ z1|mDyEqn>eRTtIkauYp4U_W5d+L?!dL3$CO0RJeWygp)p$l3%Lb%1{ws@|wGz$S|p zKo;Hb-7WDnHocQu{7=!@gLi3QF4s^}sRJ+y`PTy&)17=3%3f{w#I8->8FG2@!|}w2 z2Ys6lz3~smKQ~EU+rHc3zmdmR?GL$}(>X*f+~;iveOlOsY!h@kRyNRC&4kfm25wdm zp=rby-fO*95|Fq^z{xo5%cfQo!omsP->*KOvL&u^k#=x1@Ni&*m`Z!ZBNd3rDKmd0Qw|&*n2{b#NbO2idM2lF1SmgKPp#MF-Gr&!eLNR@Z zf&b62mg%fv>0+Cm7uNJEOqUc0k@*JsRAgeAe78jQkocUCx}Fsw$Zs@`nVG{lHBH*=sS#$Mrs<)c9~!zl%rRFOu_Z_Sr~T z$V()v&S8ihg|c)kltJIA=(}`k^ZS!WKW<&%ktWL-t88!d-bkfj^=6EhP{<&XD9F* z1VoO)kZ_2O<&+qPkHwwz(L)F-9x{L}9F0!Xg(seEFu`Spw_)sx&1?dEbtol)0u6 zxj6t;vw)MQA`kFpqKfK=TckbW8ZouZl>j)q3blZ6`&A%7DCyztSB+E8!V=>R@(~=2GxoMAYkc~znAT}f!8O;j(2&$Z z__Fbp?b~s}fPTet-w2>wg?#+;FPgrOoBoy?fLPU{E>xk{X<+u(xnRXbT=Bt$053VeOZp%L@V-)wXa}&DQK18&L1zEW~Xe@r?>*5y6?=uvXvwwD#ShnV{o-E!w&1 za#(ZJ%T}k{ca9fcKpijG{h*?*=nW7Cxw zj5N;XJW@a5Hc%xC1z)H&X8tzjxeJ!PofMmlHaCr6Vt)dZ2T!;__Gg1wI27mDbdK0x z-WZe@6ePoo3dm20QDw)(k~Af@hX-QsX$qK1co>t|%}S0~yhpCp@^Xpzin$nOX7!*U zV2B_BE3uk%%(~=Ui_rAt4*`Ir=R{t73 zs5!s&+MdS_){_KkVZkjRcmpRhISqUQxH(FJ>NQ7oed*X3#{&}y{^v*)>DY$!o{=>( z1-m~zZ4Fd3mpZc?gzP}TeMUN?s1pxKLVdtH%OKN`rx{xF5z3>6h^Q)rI1keuT`FiK(Lo1!2h1%#kZ-IFcj z*hYk^0w!9oMPRp@8#iwp^hw;HerebJv9Ydwxw%UTKhnvQP4OWq+v{gcEtD>1ye!O< zwtYHMVtkx2km^k#w)Ur;5u{-dL5!X514sT3YQ%n?q$fE%Y7p5Y>4XnwstGQfJfyh%VZ z7f?H=49U>Zp0McSVpSge$Kri0y~YX zxXytPMWM2-ZL4}iT6ZYgYPDZJL7cs2+N-L7W0eJA%!^J>O8WM5b$q1JfjsFX2x;l! z{8k7yfAHKe5oNPO3UN%=~KHs=~_ljsk@wp}*!b)k&ke!tV^b157=sdQ(Zmo?~DAP)WGT@+~y z*nMBT37F9et%Lv)DDWddRk9jt(41O;@n&C58MTRYV4{NDtOy%;3!G z-Pq9d0mkxMQdG`R^4~DMbTZyB)yXHhN~X@mna;T<+fVp^>JkFSZOk33*UIAw5LF?WoHB|MLk6)+jX@NJ+xabYVgRs*6iG+GQL-v`Y_N$p#=u z7vT6N8fqs9WQFYIbq2nNLbWlyo{R(C4;i4QIt0fC3*C|t%nT}2ya8K--__(4WZvI{($D`(`;@G zpH+R>Yzv(EC|-VsqH-ovIP)$U52K{9tWnNts~<^n=k2$uyt=ooV(M}KQ0?V!&j``i zEUnzPXgrL&O3#fR|8SLGcl#K@0Cra~=34R&(=VAN{%$WCVbK)boFQ;uf9CJ-^}ih0 zVI@(0;$c}l$heZ~8?O673cvTkitFITeS}S~*#0}DM16Kp%3@Uw?`xL~C<$%?Y~sr| zuks%d63X}I!3(nTyV@B3YIAz>t$EP|<-xvtPsM%78XZ~6QopSgx|e0+Gt>J?j2P5v z1}ODMM*!|&0QFUPB0x+rD(2A5se*LQZql+pWlHyk~k&ufR=l_3kYSNQ}< zPe!#Kw0qgob$+U&NxmV(E>6Yj2)F<8daM)HH$)%d)~Tjtnx50=_kH|Fu7j7?;pRT? z`@Ost&39Aug@%pp)$X{Krx7L4W!8X0I(U`$)Dqx~cMFR5oFj_s*jQA;;*tUzwcje5 z_WSqGY#`@9c^6j?*63cC8mMDs;VSv;BVC#~7;-l)dI$s*`wQhM zD7u~R{l{}Lc%*iId z{GGNw8fV0T=kqb8FSqOuna)nL;5(oj{POXr)u0dC5OpSP00Zhc*LYMTtmJ zAz1jq{($9?f1P)Pb$v{3&-1Fl-Dmu^d1=P(|ElgByS??xl4sbYu=lFt>j*_h?2kex zt7UO=+IX5R(&>XqXM-*O(|i>PY2z#)v&1ng>iM`KcRRGIyDmm|Xz?u@eYe1x-cgrk z`oNSgH5&G+3xm}u!NWk{-WX<463jh)$!mOFzuIht72 zg8|2z9r>qrd0V?VFe?_I&p*%7{e z!TI?>g`dEs8)ZgBIatykIyS_G*zARISl##G>hPsAlYQN9|2pdTbYRJ@6Cb*k-cNkv zn4~Y-7XR<5*Hw@9-Q=&l8yKNl1|ChjpvrouJ?Moth(Cli3cd$7F(tGAspVMx|EeeA zMUA0R{-F~3oCA0_9M)n!- ziYbi;77bD+)1A<}PAw{|#KaOY^mgQ3%1CrWK>nlAYiD8?^n^SbD|}aH(KUZMqE^VD zZmL^cyC*M0f6-;VWn1U-P&RvelJ)C(?!mKY0|Wkvp!L#?3{d2UB(fK6^6)+;v zv8XB&(|TinyaYH}t2J*i8Pg~D8+tj+{^|duP+-1MJL~sx$EJXA?95WB)mLxeLJONx z(vu(r0i#Y@50Lp?Uk|nppsxpM#bruE5?e763dqz$`F=N=-}K0y_9v~|^78B_*+9X0 zHd;qgQyfipe_wtJcF)T$EE%+$s?>#^`oidva=o180(w81QxM9swsxmq zwr?z0xjukMr*x>#l(}B59x4hLi1ovEFe4w49a|LukfSyM1SJ3R@4Nd3Pd40{YTRZW zGqK&yoR6ml$z!x7@O~{HPbzVBf-pVYtL?(mZ?+ehjm;OX-bb*ioOxztNXqh0!TS%c ziTbB60#kg2Zv9O`@>+2zE(wKQ!I+fkcrA432&T4dLjq|@1pf&TnfxOTdj+rY0-8Op zDPykAOMxJ$rOvFl#4>D1_MJ&zg#wTi_x&@OY-iDNHk-sIjgE;AHCvS?)BQ$a0UySA zD2NwOspL3*z|7}gAB|65sOStbkrCzivPGw{tr}^ zlG;A&Z1>h>-!EkN4b@leKgFDvwCww5m%q>J4b$$wDXOV8QhJ#trLnx=6? zu>}qjGMzXz3^=1`Ic6>92v+-50!)0zbprG^)EBuHGNkQ#MO_PEV8WfFD_2Xi&-3F- zlTX}+VT2hnx~oeutjUKk;Gv47(%XpXH*xU>=WoZpHjWBbhcJawf>4Nv4fwdOo5%gm zy_w^A{_y03$(GDM59-N-=h~=0Ic7I3xwo{YX_=30M*TaN4UepFp2pI=(--qRV~?0# ze}MNQEuiFE&iUSbkONrVJ8SN`^!OTVSS#7^kxypeZ4qhdOfib5C;{Oyb?!eI!vU2U z=`%TEDti5tZ(}h)?KoIb_1_Zvp{njT!Py7z-Prx-4f2Taa;sT8eDkd)sbJlsu|U)M z^v5e8Fp077&fySop;G}UZNvihaUfcPi!=`6Kx-wb_gm~H+F?$!nnO`N9ucp!IMsl2 zqePh4s$-5^oGXPv2w}ufKdDmOrF!U#wF(MWUiU{9lETDoIxV&;Tx}gUKyT@dDag^0 z5I#*BGt#+a>Dj}N=l`lJs(Ri!?|aXO4s-r^o!M%mW8V6+uPHiI*c0bcA#lz;bx<+TU&qf~%%K5KTZ^h#jNf{s<3D)LbcX*kNAKpV26r8qg9;db-7`G$qlD<9;P z6N^0Jom78rnImvSdg6HD)>jNA{O)wkr@9G6GoHOCk`0vo=PzT;&G@UA;O{04-O_|r z+x)h2#$|qejBU*Avle>z?e$vH7pB;E6RT^RaE9-U@!#a%+0Lu6ZaCJ|oTj0NJt5*6 zD%J#+V||5h(pLDP5KQ#RZDxp6C|FHoPnbT%hmGXR%~;yNvg4IZ#$+q54M3| zF@eC#auOBVi>akpk%g(CS>Xw7aUuO$49tmwal~%u&G?hUskgV?mW*$C>At_|UAk4EqBem9Pyqcg{};uh0?;*LaO|T;D653sYIPP;b;;5uC*R zSTzTaR^9@B(8rk`(-XZ5Pih>&{Xpog64%$VGZA4_1m^Z-lcAzqXCgWaJ%J^qJiV(e z$kD*xlyUF;HWFyz*k-r5oYw$CgOUk6F8rQcS!3 zst+VcB4c_)*6dMNw9Dgv0@VK}{QB$?KobmAfIoe&z~ifaC7&*?buuFqKmQ#@MpG#m zIR~3C_-W!zwN@}+2>7wn=*{1@lp2%f>V}H0(?@=D7Aa`Zt@uGuLc;S#kT` z>DKuJV@cjOKRp;bKHBwnLE@-mokr0KA07(X;usSS1ieZP8x{zB@M;?Sl0W;Tl$PXi z{bdcV%4(q?`meMIn@V1$2JUe%Vuj+awOjbap2{l2tr~*vDNW8L-u81j)kp!=7OvRw z%GU@jisdMfsvK^`@(fESCOP1qQ{LvI#tOV1@&%?A*&XOzhFhLp6!mPNh1ng%_Gqm}K#NnIQ zJ}$6Ryf_sM#()i%aCfDkp1?`Sh=a|S!^q)9k!^a}v1WayB_HE1!CrdZ*md3@R)7fk zE_r=#VrZ@wv=mUXwgLFD~!)d-LP`K~jHymFn&rS-5Ipgh8#EkG-$TyMdIACqrdGl#C9EM{&OkmP|5xNkG8r5HfO`;;pGn- zmmYJlU=C9|(n|Z4Vz==w=nZEIs;A!t!smb|XM9KOz?B^s=y%IjL1oZl z*$HG_$`FB<>)+wcP0@uW9$*7oK;O&9w9HMeUL-9k;APjoZG47i;I0Ww#LC0*>ANYH zgNLxg4fkh+;7_bm!Zl;xh{yZyLB%C7n}Qu~wqP1EKEtd{Ok@VfGQcA!#M#xZeg|sKrD^S z@EO~B-IMnGzCCe`xwWWuNnG0Yingf-muJ`fMITPSURJz4KGA-0x9yzJ52898OeCKm zBK_u5w7S4!U5?G6ZQon`leu45%U#mgc76!RF1&qyV=a;Q%xEaDfDqF>;T!ed4;^wa}$eZh4GIRXK1T%cuPsid3zpwpLv zyicFU&;PMK;b4ws<>#Gd7RwFL=z-I7wl7>`-z(+6Xbbj?_3HCWmpgrdlZwXSozcl7 zCfIOcVa|0W2YA!hg&aP7b$KQ>Hi*oUoQ}!ZS(u*5)~2X1^#GM(PFqTR2x2$T^McLA zrhAhUPuLY6W!n>@;-csMS1R4^Ib+cs{mtl2TbdGP6wFQ37W(xviF=0}Rc&L95E(BE zc{tv0k-$Q&d}X$~a?9Z3sVk6+{xD~8p>pkgV%mfv2`6CSjR=xM_@(fH6V+^vR&bGM zK!1O6-tY1cG09w`V^tl`pHd<(L+>OgSI!ktg{gfa*ZC;1*v!f?dL~xtA^-R+B><7G+;WVa_>)5yf44NPNSy@&W6wt09eTg&JZ%oOPf<4nC>t zRfS1f82sMvWsVZhJ+ZIcmv{Y#$*q#r|DE&2IzvSdXBL>G9sKF-j`=gj>ThR#4YUe# z+&qW#w}<=+_Ze|=H_HF%8}0en>W&8efJT{P=lyM?H#V0-emEmP+F%~l z)Y;swFIKS1zQh}g)#H(PW{3nxJwv5bN(=7>3P@Uvp>j1lPbdIVKf5*=J*2&^cpPiZ zf>Bqi5e373IF(zgtFu|Cm+M9XasZniaHzJ~*wTD(hogElCboIx(A)X3{aEk9D+g{% zI*TSp;V3{5{B{F^SJr;v1&;UO_K!9;7o_G(e(C{m=2L46xsc(SZHsIe zgNWNRn<4fplfihhMgIg_-OFZS?P{VAhC6w3^}?l7D)Y}VGp7p;e&Lv9(%)wHBa&`x z-*Bnr$4q<9Oys{aIPRsui2jIFnp30b7bwP!bO(Qfk%^H{DGM0?uWdcuOdFTR8=>^f zvut7yW_qY6rF0>7qmt3T(tDt9>22>h>9^~%#RHIbd_ zj>|3jul!YT$^9dX}edIBLw;@9SHLWiYL%zzlnrEWW&bk2KIxWI0Q?Y1n-eFgeA z*OxBzyv!gk?op3cR6j^Lm>x)!JMnyEl|gn<^M3~{qr2_xmIr0}h?4%U@GZ@{C@wWc z2KgeSJ^buS?Bu8L7vgcV%6o};#^c99#%Pm(yIknj6TiP(pq8=z39$(gAuHnTihZnY zz`Z5*!}N7Y8#7P8JHGXNU{jO$$xnF~LVAF9-eA+5-H&gQ?Tdo`H?hM;Lf8PPnk12oD2vu(bKd-7Yg){|zT^oKC!g{PwS;dCA^He@utZCpK7r z5m~m;yf!!rDwG$;TBLSmtqF|tF4kOfTHpvvIOGufrMt_^Cz~Il8Btl(3O~#+_vS$b zlq2*%xn`pB;D%Ei{Lrh9cueaV%=LfGA~~l7y8`9)fFdmBgxROiXQdpRu_N=@;^V~` zj<@(v(b7@rwAX`}thpn8k(7)3Z-SVHA80Un6sPiwBO-p`LD!En5Ns5VbP#1twC*E8 zoNs7150>m09)nBb%z)m1S?b>3dulS*631LA5n>@9q+0f~1a@{i?Wvd+f}}@BU!~?| z;`6BM2qBgN0o13hGy4{tI~}p5Q4DmJxTA$72~ zk!L-qeD8SYlkE+`kk{uhds)e;S4}O)GM~L{kFHyJ>zinKKt4)8ESLv}6ri}272r@C zA>Kj$a`M&O=!P$vKox#*S_hHj?-ENjJS-%G|~kUoJ{I1l^OdWGL$ zytrNE=K&}x1v~Vx4EU+MLlH4XoGY!9seBHOWuD(?w#DzNe1UHjqvi0A`hwkkRh+Qa z!^{A>up%z}L*1Utcj6~md#vK_+}Z@yR zNmCjhS9uFlxEaO1DhJWkW5T5ViuYG0*B{DLiWGmvZ0E}lzvS-ly8NiaPsn&1+Up5I zn)eIsa493Z!6*@DAznfRUM(_9q2j6+c5HnC{#n@Oc>?X7!l06sD8BM^R)O^#hbF`F znX9%S7p){SU0v`eAxq~xCU^zV%pdQTCJbmvBq_kE&||myA#rOXXYLjVKtMJ3zOJ7q zh+5aLz;2vmWk+k(x>}85#WRYbC#_6I4Vh%C!cuv`J7q~&(D1Y38ZxOfXb6&LSR)_> zS+DEyX&J90y4vkp*3gry1PQ1Ag~<v;-cUyyV-D5`eIE)1xs^OMD zwpOMA!1LDy!Nvm+rEz&rnAOR#C6&)iY;&LsCg3~Dy z_T@-Y;s`N#KkRluq>B{lx-m2u<4KV6`E*IWq$hgCqqBb(UZ{}Hcz!O{V7>1oV}slL z=>B;->23s$A0%dx@J{O)71!-I}M;-4~iWbiPQa8VuJsv-aJ!TnDXl*1!uO9 zT23HcvBI24(C>@@soN7L$vdoK^S5R!h1KG;V{?`vyKSRlW(+veh9h)fC}7Lx4ewt8 zckge-C^lowCI7a(bpBdt;T@oYm?8O-djOyCIKa8w%iE=-Hg> z+wrugFX42uyLV<-y|@YulH+cLvVu#H^MhCm%I1m;*K|ZsoEH(D@x*4=HjiZjtfW+p zsh*w9ud*>L?8BvFs{h2(ekSyXh%ngVhpkSGAPwPSkMbc-fLv@k*jSOdjm|kLY*+CQq(o(ag$crGe$&*&7{>yhYw0y8W+VJdpAB z_mJ&9r0?=Be6Gwo_w=)$;N@n5Qmx%jokYZ1zbD(%aG4mf2ul+ajG^Wjt{sa(k;$`7 z{~xM7;*9S7&x@>51zvH&$H%@gE0J5DDm*6JWQ&p4*t4%8nZ-HZ7=47>^lA5QcIw(c1X0-$X#QR1+L64%vz;A+a_9M@O*qONwAR>0`sXkdu4 zSJZ&VnB6A!N{3k~F^^sD{EPe>C@T0{gZCOfl9If?W7Ff4(QmpROTneKnWp^_oo3$< zr7k$orfaRtk~#km??J$dEmX?GAjt#_lI%4B4u}>!32zI2F6i9fLjTod z+3K6lZZGd{%a|=*Hda#Fsk~ib)^fUy9Ksoa>=Rhd6h3wq8lEZ|$#BrF9#e-cW*f9w zU6;G@Gm`)~<8jFLM{;9~bz_hSCLQINV&Eg0^$UVK2jRayH32k++-B^Yxv*fnD={d^ z%=vd;pmDA(C8Cj>?3E)_KJr~Ff)(u_9(IPED9D-R&=BSq&iMHHV#bc;PkPRAyK^NL z9Qn0YxI-1;N8hd-j<@EIVkrhTOHQ)pi%oN;Jv#rF1W|VXn7k99b@(E6*Uj%k3X^rA z6&ER3uRgeC%7sXW*0|dDmD!Da;s+7z~84Up~6V_ z%Ft$J<+<(g($v{b4GS=5rMAO+ANp)e_C4bE^J?I$$GMgrWY>3CRh&!*!{C`D*tjCn&U)%;7x~vW@~>o9rME7xIV9GedU>E zpX*?1!r|6dQO9Ek)@}Oy(88drP4iGY{7F2iLzjHQNvFFDsx118!i$tK+9Qao&5Tgy zah`;ATWRKba5$~Q=hp91>$9Gonc{I=aVU>PN#bGr`94G?)CiAUZYE~tLDgUj`2DUT8;s?pf~8;p4PF5r@$=0 z;>>2SQ0pHqG8m(5)8-!R>2~2=%-Rz--_>u($;-@jokGvjv$TWi0iESCEh*ENDfFPi zmVT0*p7anwjL)r$^adHY7c1?99mFq7=_6nIR@ke*`&b6)B5~sZ05YT zb_iN2UtpZ`|G)SrUj8%gUWY$g*^Ov+^Os$meJJuo_u&ZtJ#gcVOX4tI$eI+cRjD4e z^ot4+duK9Zq=odD9fc})7RnVw`Y!h;6%PAl<`>}vd8@e!L2w4ikufV7@edz>+tu7* zRlbQpko2xBh^}k769;awpb}OHH>ml+L*2f_`s3T#+?f9D-mHsi%MNBZtC)qyJZT1S zM4sxuVfkh26Zd*fT4Y&IA@Ms+sKlJDEEEEU5);vF#qirF!_f{l=)@+7t-0eX?o{Q> zXCcHP$+aL#_5SkJfF%Xyn=W!2_0Q?3SaMCI!5@`?2`*T^*OG@zF*z+i>hGBY_nYP8 z|8$nEOz!^!%xgO9d2%fyXU^gm5BbL-v)~*_*mPXv-gu#J`_ULGT^h~^?=?;;Gcdj) z!lYxd66VGDRnwgp9g$tMityc)g7n7Z&MVgkfnZ=Ni*zywoWSJO2ZI7Xjj zWC#LWzZTYIa~}l!&AgYrq@Hb7xY#H z^PbJ!HLvsesf8#+cQc}~*PB)~lHYFuUS!|~de~c5-3YG&Jd%xxxl7EpCtxflk8?v~lW8j%7luvNyTJPYqTUJ;Fr^ok9^wb4qZgg^QTFKGh zX*!M*pIV^x&E5JvoS_tFg{igTw`&@1zboJkmoP&b2^`l-ScGfj3ChZ7z`t>l2r0*U z>`B7Q(>2sxsCemN2?p+}RC&ju;w^B1jpw z{=gci@sI@9p!-WCG2C4JOfhsjmjt$A2-W?U-#OvlLmSW^c0UtBS7`6S*VN>V=%!Us zT}lyW4*7{46n&2|Zuipa{(_o}Qkg1YO{tQ|#6e2I>yy#kF^eBnEh zhCh_+Atl+~JRKyjdAlah!vEmxeeZbZ6HN#;l!u#OB^&l1Q;}&93tq67i2N~!=27!s z0m*j`kw+S^M%ax7l2(N2>$!|?MdX#F+RUE#85lWg0SdIw{RQ+!$vdtxR`HY$if!4R z0Ef2N@JQ2a2QN8p0RhDf(^#zZ8CVBq?^ri@Ph6!q>fgE!nx_5!?Ex`C)@Hh}tNr`D z`%l2xxSXxGHL?KzH@p=LW&9}9WWb=u>vfIAGN$yf+g>Zn)G}2}>kS*rNN=$rr5>kX zd*BolbqtP<3e9=?ktTjUU-N-a#AD6;6pNrLHYYeyhVT||@!^LwrBJOsPDyxh588Dl z-nKS>!@AAkLL=f83zQYUqvvo<+9#1j9z=4#IWts;8xlg!jduS~0y=6^_2F`N#O7@iie_yPYe5Q|SdRfRG?DjaNfyY!%d1ie(~Y zF%*vya-6Chche0Z#pY>*y}E{bbA+xvq*ugud1HlvEQbZLKvu*FJ%=k0)h0k?|l%WqfHEIbx(rdB-{X%4ct57lnZAE zo+nqY+Mvs#D^m_;A8U*Ywx@>et=Cgj1BP3X7HuT7UDsZ|KdVVCvb>+Jl><|OH)6Kk z7zA)f-BpCX(jW$TMGU<^R0a&BAdx^GQP6onE|AeBr3ecS?T3b)p6`x8-@4wn@ZPtT zdSrylwWLH-SumsS-ijtpEPa|6i57uI(TO`X5yr=nt(xpFYrqUNB4p=&`U+5~YLx*P zh}IDeF!sqvU>no|Gy$gAwd4jEo05f1B5dWN_&vozzyr)fUeV>9cSV+1Pq3&F3K}|K zic--UBj~dM3oqAdpf`k6^p{i11j2)bbUYvGjZ^j;!J91gT@#D5V zh+S6xlIQW#>53G3OgkFm89FBO9^fI7ZET#vB93l^kqF;WO%|O*iTJUs^3)pYn`fao zo)lu(TtfN9j>JWs`q&bb)eyjEIScYGl^hGV4>_T574CNwx`*W1YOCgXKaS>@v@W9v z4h2OvxbP})y+=Z2sg-5ky7lZdNY=@_dpuU0!*b#8*wx8np&qHQLaYzWTBf0B_4w`? z0NIx*(2Mn1^Fpc=e9OrmfXhnXLV^^9R0Cuxu5KyC$w05L5)%@_EW0$YJpH`vcNW(Br};EH=WN&3~|EA-Xm-B%{&&cVgV6=oPM!Unr&^6yu|SLVMMWrBqH zZ@6H@3n%P4>#HS3p}>d}Ux{DwU&+|J-~QV5fA860|AUE! zzQ%Jh|5po$aWlp*zh$L{?a3N=5QHl?xtz=>yLQ0Go>Z*5%QLt#=7`;dXDrNI6_gg~ z^Gw;sUh95IYrJ8vE4TO%h8t0#9+_oYO8e;rBQ2u6?8O`AlWg)w!)z?I&F>3pDsf$Wd0=6L&!{Hi(A=bB zTcozGuKm?w?>3vu6+a`4FV*|)rCwznIC zPbZ#qCU+3|1Oa{O7Ntrs7{FMSobxKFJkvuQb!`^VJRstqff2(yMR0 zPkw%H>7dM~==THNcOyIQ+OQ%OjsbyzlOV;SwdjI@&2^njKM@c(UZ72;##bH|t;;yw zD2;A36F9x_he;~mn~Osjg#slD=?#cc$W>n4Dj#olQ;T{z6%cV0eDRUj<(JWc9T1yK6*Eu9i8(5&9=~Z@cWmd5X3%@2PpF{OxSFd z4&$xoBP@GJb0?Us5$%W*n2PSK0Ag%rvGB8Bjv5C|?EMlr+QbJR7U~ek3xP4$z~Rfd zKw4{0%>(a8bs43a1&3aNoou0(qS>};I=?TR*VErAO0u`*tx-Vk2bGyxz+qlh2p* zTzzj5xi2`sz*!DYy-ydrlu(WYf|=tE^iY=V9#ZWrGlcCH^HkPGQ6a>T^rRK z1(rXnO~YNG{YCug`I4Pvo;k1Qt0RHDG_=cPx-sqdzYe{!C1R9}^H+C;^BSl*2Mfb_ zaF@ponIx<8Mhp@*PoJW*DUPDrqIY>Tp=E2bTJ6DBiy1VW_>t0EZV%KYDL~avmLCnj z#4m}P>1bN%{qr+HLOIkl5L{S4))z5bmd@&7@YoFDvfNy2s`0xv3+RS9xyG2+7g;YLX1cU~|AG?KH201xdK@@2 z`l0w({MO9Ri*5PU^!@=y>Q?^Q*u8kssRcV@fpQ2;6k=Yt0G;VsW`5n#V;^%UNO~YF zAsvTqJb4c5seP{1L4OgSuS}Arul)^|huW6y&7uiD$B)M?3tG+|s=hMM!F2KZzP-~C zV6!P2&YK@O&=tZ9rS-Lq7S}zMB|Kp12Eafre@*fDOf}`WD-$E|Zt(y#91fM~aikUs zThoFb5D2dMa#|BCPy3T=c$$^Am5+YDlzu>TU|H{auR0=MMiVUFPGqNsG4hIH!>0&Y zJ3>*d4Uok|d2%+zJvRMaeD^rsogk;hCQinKa42J*-T`~h-ynxsBBwAB}5t=PKAGS&1QcBl|7Krg2k`OzSjBs z7GXgyUIfw@p)d>D7%8>q9b;YT~ zejWn&;!)FLdr4H66AG*(;(no!+J_M6Fh6~X@0ecQ;^|&+UMcE*6|AI-Q1Mv)jln=1 zF*SyQ$VhnPP(lGPHH+br3^?nagBVY>}Rxs=N6U_|yYF%Fx#br*64;=pj_pPb5L;Q@Z0@F32It+!RzGud1>yHy57<{;D0j zF}`391`J0D;3js2z}$t1;?+oO5H%D5Xh>ubUWr3<)tL^MMyKC}Lc_cQvkxmz;4Jws zWDc*kT_Bazj554VI3jb|y&?%Jg>#g$4v$%RsWxK-uO8A}Spg zK)#Kt=q^QA`^a0#At!J$609*muqUQKeSu=3vige>yU&%+1QReA2d`8m7Qo@ofUszS z@Y(R{e7<*#4!kqAf$f0^jxvYeq|87QHNHB)hIcVHvxq z>QYJo62`QP9EnR_WN;^;HvSAx!FL# zh%+kJO$0jHFuX4S5!;1NG(l|8o_MZkqTup=-y}2+0&Z%7&#RE2JP12$RtWL^rh{pd zzkc!2LX(74#aBA}vtbg45AC0SYyAh>Ox~l1xfKw$NBT~7tzf|Ub_1CMzWqHtxdx8B zNzboM*N+t^cQw{oA(7ra5F~A-c<3?rX-%;>w>oG_GS{;3k*n@_STpkglSoKdkxE|I z%p4XyEXty%^5Nw8`~;D#BV+>pmjtKlSFwk298n#g^qh$MiTuQdh#*|cmetp0&DXZ5+82C=8_ z-%Yc#SDyQRsQ?+3bhL>0%(Q#E9ByA+n04?Wej8|7adG8k4(kOtu^B0=awW!y9sjY( zI%Em^wx-d8?ZsZ<+XN-dJ}o)`G5JDj2u$~CakuK1btLEP&~_)@p<5E1;m}No<|rtR zKqJi>2WW>gr+yzT(_WZ~>_=c6nHMBzDEg=C_#I|VrX^5uD&#yM2SOZLcWA?x72EgQ zgoMjm!U(l`hHKeuk`Z^iv7TSahbAHMSdl_3dYhh*A&(tuSqv3{I^H^K1DIGJwHmPT z-0KLQ4~>PFu4db16^KwErWt815LqP9MV|nhU^_P$i!OB^bb!OoW!htH1k+vpq$eh~ z!7o|y7S8O2L&Ogbrne%D@|z6}sc7F?R{!@h8`k!4-XBnOG!{jS*L#YSL%haE+dBdS zWOTTFZ?WqQEOoVvX``fgs7uHcwMq?9KyGhN6BBhc%OFun2CtZ<_)OjI~ zd_5O&pQP*Z_i+2Q!Ht$UZlfQQNJZP5VL85Vvho3NW|LmAb39VY@)Ld^tbTxm;-F;g zOBYF?kODo%_8-6l#vA+@2w~ril|aqIPp%&Wu~RrTR{FSO`KPO#pae$e*mVFnvd<4- zHq;0BCrmV$ABcUpJLohcZ4Dqmx!7Q8@ma+O(_s=KI z^8B^X<5TtWT8d0=bjlWuCCrZ8n+Oy8(Udf#;Z39N>|$ zkcwwml8hkDWXK3f>;Vz%A~1B5wn^}_woo8`Ib$*=#OHJ zJ7w8QGPWoW@C-JfVJbIR=t4Sin?Xvubg2Zq6u7OCvw0qMHB8Il#r)3;;>PIO*kX`#M*Gqc23Jk<=L|+Hzy5+U-wt6{Vv1D6_xt-<1pX+o z3@k!inJZ(K#YUNMXM!9Ym5n#9Ex7?1amkZjpavHhMfk<5d@`6%#DHmR6vG!lkl-3+ zb45!5tO2H2tM}NGmyB{TU`am>sZx z4PAN3{P1aT;E$}9L%4cv%f4w<;od^scr_hw(GOxIbU;6xO#Z_}PxEG5=N%30ICZ34 z&4lAbDI*?KpU`onk)`dA*7k1deAQH=w)5k--7O2fZN6}7X{A~ma$tLqG?*Tdt4$d_ zy!~Y7_4k!d2%8sL2gfvx<>S=K{&7I!$5mwqVeR~D&+Y~Z4q9F!QAw&O4T&(;SSQ5u zgREHmeoki(1{AV~0~J8o6U`C;6d{o&*IC-5qJmsH7^2X4g?Mzx8yktwGlROb#_~}K zW>cn;15Jhn`1y3628+N=@~`>N`1pQ&0{$zlbGrA!t%--pmtLopYG{vd>CNK@ZxFrDvyXTM_;B(!F!QDx1{p@A?~2HJMn?Xa1(YovM!gD zc;k#0f^ZCh?Tq#t4Q!$p6)1mjLG9}Mw9tHCjF|%%$ndK{eOQxD1c=*9*lZ>*?34o= z?<7cv*^uu7^~+VkH~;~3E|8Ie3Vi@4J#fW^q9>3LvyWRx;)5K)-_Y{U?=<*-*|b+T ze_rqe{Z~*w@wJj*t!j&*PFQ&*_^fJ=a0pnn8ap$ytCyK59GxMq+Mf8RDTyZsreIBA3j$w(aM1Lisx6p^Kkt zqr1kAm*#%*Lqe;7AfSJH4WRmvsKsg{|KKYNTiDUP&_F*>+t?_g*RMEy^C#{C(~O`P zqLFNH|;t5;Eq95SjrDtk?AyMV*z+C-CS+NIgCtHP`Q9Y6XoP_|aQzbY`i`r$8J zAD5s}X=KVCXHmP(_aCOi4iK<0(3)Acta~We1(R@WfI2BUa)&4%FUWd{({T88Aj%pS& z&Mv|iORCw3OAyZ&sdHJ5prDZ9H}zYHkjG7qbh3({@PlKcPO(wSlReP{DC@g^wwtSK zjNCFcZ^@56WIDDo-mp!%H}+dKSQ=Rp7OX|wR#uyUU581Liqvt`rh z-JTCC3jwkfp7(nSWggy4-M?VAaY&Pvj(#*+1>%XQAX|br{ZWsav6f+{3O& z>9E=D+fMGQtT14;(0Wk!$pr}-B8!(`_6%-V=7SXoiR&DL_bbSxc_g>fgA28xc*u3;e951Pmtyf zs$@+I4KJNP_pX9dzj#5^R=~5qQs6yLnAHwk{Vyr6xm6DEad#Xq1;_J$wvTM@AdSYs zOv4*S6tMdt$dyQr5!Q?q&C8(R5YkL1hXb(ttW&}o9CMtT5IQsjG0@gmIJ`UmB1~S# zEyW4@4mIy=FB?Ac$UQ~6Vc*c+jkygMKb+H0PH9K{w}5*MCkHe%4|-tJlVL}BFfSp{ zQ~C>9NzG{Lv4Gr&^qdOcxa1qbG2I4vTZjsAsSxqCIy~_eTA?#hv=x91hZf3-YPnjO zFMer3Q@lKUE;9{^u-MQ9>&n}cxvlLEy*MY1tgy9#TNs`tSd1zS<2wH4RiD-y*?8YSyDRV03YTYXb?YK2w5s`-}t!C>+Vl=|rs%Rj?5O zfE1aC9KBH8UEI5`%!L#t`0(@l6c5FP>qOtABeIGGC8TZeb;;O+&UsW%+y?cM#% z{b1MN?SnS1ut7%_p=iXm-NpTSu^-3vc4#0+6mx2N#ET?R`?|CHL&vcTl(a8Q?Zvpi zH;au$Nnf@TAfc6t?g&Z&wk_#$B3mVvlL(HuRYW6KTGEt3Dbe)G`-t)8FG(NeWFI-( zmU65$rIuD*H9pe0H~h7=gm*J;IfM1=UI?3;&mJwb>d$g@eR?j-y|((REepRFjvTPX zo~h;1Gys?+3#h-*z4J%jhcHrHUwr?EKd|>hv+o}@0UKUEi-7B%hnFj_d?_?INT34F zX3vKaaFqq<2WNHUE=qPZK7F*;%f0`*lB7keOpSWM zKSAQZ^~Sq!&Pbw8&*(W_l$P)qZlLKbrFa7^cBC*^*l@+Q(?8s$r{dAvBQf28qTQKa zsECe9bfOorLoFghP`E*=Cf;T)}D9KqCK{h=!Ns`G;qwO|#ni4)Zr1S-lCE5{+YL3KMfNR6r0@T4U> z0Z=^t1T=IXwQ-;8u)L=$`cYR!#!0`r%OSB*=z=r2q03>Ma29ydjhz4yCYiX zQV!BI)|1~BnDs=7Fk{}R9KBa>JiB_uvmdzgb+8CVk9>yoYq$}!;QQw@PHa~TpP{${ z!k2&qY(t4)tuVd4HG&8@l8x6BX+VBkN`7`11i&a{FK}-Dey6vY437;1&rz9`qzj&$_$Bb7DY63qzcj{gu ziyrFfd%#^2lu{BUXm@3_aoV^mk_k$Lt{m&G=+IQKFO7=FMI3S3gD*B*gOh6ly|~yR zV33JovnMDpxOLNks49ga>)f5y)3pNm`5?mOEy8!)^ey`56xcD^Pa;3Anttl#8Lil_ z50Cxx`L#{VpouG>?CZXqto%h;pL&3l+n4SsToF{{8y+s^Tw#K)t2}ru;QtUTx?YJzi@(;4a%ww-ZA2rLu%ETx*20Q${liPjtw zfgQ|>KBX}8J6e`44p)%q2BJ*TEqTxX$J0c|w#yd5(}iubeZR0Dvn%vNKBXF8E3E4M zC375j3tjHZ>!mT$Rhp((!6bLwPH%9iY95X_p5L=J z?mA5OmmaR#UiTYEu~~6+5G>J%H)i^FHw+xElNI@PQ)um6F5+WJB9mOSXE+u@W57^; z=C<_<_K=4+Bq+jP=yDjU3z2-+E^=dhZa<f(h?XqpZu);)<_$V*7*`RRX#!^NJ~g*-T+K0$H;gt;eDd-ip4a#fub z6;?QLk>Yv@Qr^c|Y$YN=*vV=lYtBmAHX_A=1$G!X`js(7)H}}&qfhfr?4*>-*l_}j ztl}vt=t~J!A{iiqRRuv*FTQ8fW=y!$)q^VdA?t>zH&pZC`iS2zHLYtCfISN@;)IBE zch^WITplfPW%&1Vh>|ttw=o0VM+&Mm z^jX?}WbcENU-AHsZ&?8LI{vCbzjKJOkM4w5RWwRy#6Mrk+ljf$){{&DmdNXI(q1Mf zWkO@v=+Ky;o0xIEoJ%nv#(2PGfRj?qhr)|-Jyi@6w{l{Ifd$7iF{DZxAVsNJB+I=7 zhK;6NY3oj09W6lwubW9q7fNSFm6xk$VjY!Ly?ikud$&7jdddft$=Yne+5UN+M$YWs zAg+stTw3-*(f2|AT8}7VT1`H4%P-7~*3jA6oesyCSKZd0%jCzKtsW|MWVs0cYX>*9 z*ET#9dWiz{z*AU9S{bdo*ANiFWcu-ufAco3sr(p|xQxsy*_`G2eS;XE;`adZKkZJ~ zTnMg^9H)6-3wuhO|AAk+T~$~4o%=TQ)Aw8gr-Z|Qnq`>0!yOtHbwxQv1mag1mM1-y zmRRDjZqG%q50eo6lbS<>M?=Zz*M_xask>;RT&L&N8r3FAN}fONzDaCgu*NWkJ(q({ z9u40!A`Oxd@1+=HFe%=?Ebc}!t5}ll#-vo|w8|8_n5PT^*?i(Bc^frP-|Pz%XfvOH z{MH4Cj4BiBHBBAcuaq+sLw*?pwiw^K=W-4G-DPVn@y3n;N7&SUFpFqw&z-FDrTQiq zC7>`!ahn8?-G12x^QibiuGB26yN*siljQ4i=s|$^pAe@;T`xp~1KU9eK73I0l-@8~ z=oTBdF7GZD!u`OM<>~t&tO6ZisqXY5bA2M$Py^cE>}sDiVA~9Kw)p89({L07O>`caF zUwQz>OfSsI7m5)Rrh}O)cB}V10T}!a?|B(r?-V@DL94XMHqLN&(9^_&eyf9rYL@KV@KVe zy&EsBVsKn3EuFG7n4xgo^}0=s+I94~K# zx0I5?2D8L@lPC_HcWpf&lr+JJ98XF{_FgN>cDU|5WXY;c{%iHg*hQKh%9vw*+`+Gk z%PWb&5fy$5oBUnx&g}aqTrTiwrqjxd&ot~y6^+`WQ&Qi)RP~tKV0U^@BAcNMQ<0Q| za;aQ=Vj%Iduv+z8(s%55Pb_{pheb+#)UWtta zcMY%PU19Q##D;?G{bKLOwK`yF;8MwrrF*~nbslioen&A4T>~%SnK-oUy=)uZZ7Enp z-$!?Cj!ZFR|2i^t$|>sNna7YCE#UP&LYMyb_JhrxuTVG{Y5eS~oWI;(J~W=A9mW|C zfX5YNU&_}Rq4doz0>dCMp($s^A(drv{d;gJvP#AK^50g+hsCW6ylZ4%^&A-d)Z8fe zF{t|sZ~3otsNC%0a_KX8*zy93i%n7H2!O`!98?L*v zSP7m1afil4u9AeP{#Xo!YQO;+Pgl z7A$`!A&8A5r+%ng_Y<`|VQJts>u$$>KJGSgDb z8dooIg+AnrwZ&OOb3M=$4aCRV&DElg<;qcAw6ar;r67a7oC;hQAu>;8)3iaUjCrZ* zerwsp|Guq_UzS5st2YtDv}&vXW2+ogAmsqN?1~`W5kfFadHe(NXv*L|&BNXmuDfTa z$E|Yv=&?CBYK=5YpxqI3ET#QUeOKZ%m8tNX!b;lSi+{7Xk6VU}0s`@e6F*McubP`? zQ2{Vwge-cmb4pRktO!4E8`m-8M7nI{ZT+`nUw>evksdiu0OuyzbO%s*SB$Jl<{zTN zZ`U>&x)uUoEYb!CujOXBQ$Iw%m}LzPjti#8i5F+_d}Wp+OVSoO?2ea9Pp;AwA^8(F z-L<(Ze<`MB=$zh>dQZl~6xWtUtV|E}_+ViUiy*CJgt%{RH{_)E@F|I_)R|L6p*9MO zZc2^!k_d&UrLhdk?B;~1QUc1TLZPWFI%S+6uI@2&%dBSZ+@om@lk}EWhS;5}K@tSX z>ib8DrLIofmKRsni}bw%(fpK}@p>IMlpjO}d7icY@dFR9c{ogW&GxpEOAzi+&RqAV z6Pu@)M6%>9&u^n=0=g4qtwEGB(2W(|RZn~URO9E3&BPzT#)}WN-W(|p4woTIN)8o> ziH^Y$$9AKX70H9=TQ-KJ!+Y>zJ@9sPwNu{c-pZXWRgxUF#HWtmyM)nyETJ)o(TUV6 zop8n@?oK=4aaz6EG(Z;QX^d^R555#PVC`H`+xC+>P$T2`RA|=9eccOAP*V~4;OF<` zo1dFZ{Ij60i*qqOPi9DEcjXXJQ5nT#qTm@p>Oi1#l6a2MTzi0}HNyZi;t3YXj&w!P za01HB93awjdR1)S^CH2v+Ao*2k1fBY`{r;3lmAe(xW|Eiu)1IK3x8=b*WBm5WcTxM zC6C&Elee~QBr#{*Tua9Fpw9U6PHL*1n7AenN@mP_keZ>PV#bs? zOjL^>wK?RMAS1TpCB$97Ou3(Bp7DiuaF4wz{2!Ke-<0$_<4M2AH+DOXwhTKgS#VF9 zX#3OXCJ=-XKHna{;z%djFhC~each5?wt9;p$b?Rrka%-wrNktX{)&vS&A^Z*4I0y><+V2$9&N!DuYGoyd_?E%#TvSncH(rVc;$ubr07EO9;=b8>}0u+S7m^D!@apU~QOpT@_=x ze$P+ZC&%7vJSwV4b0Lz>*Zz>rM}pwAl}u}M_{yMXZ<_AbgJ;xW=e61UlIjt@Yq_9}GU}>KDMkd9zQiNH=EGwk>Pv zjQ6$iKWvL#{Yvx!(RSHuWQT2DZp=^k%hMkjkM`mcYJl@n#DCL#JH=(W{fb=+2$0wUOO61qo^pZ>Z4KEz zYba#JCF9dA{p2M4ul`*zxtzL(cMHdGjntrG=xBS zg~0g5zCu)>ymdZ3@bB}Bxa6ve2hp7<*_yhHvEO5rO+<iYa0QgRG9F-x=Q7pqFl;c1DkbuT|kvVildwz${W$Uch-QySU9OLfpUGczw#{?{`x~$7!X?jEpfn^n3v7-BYY${}eov7X#ys<~yEI|xa4!etn#{m4MlayG`$)Kt z;hYpYq3YpBV#>Mnrm7Q>eYUm&X!nmhre|UyIm@~F1 zn8yY_S<_=%eA0GSrIr(Sd8XB*vUCB9`nkdHRkR!Vk9g9j6=Q&sX`4r(ms}!w6X{`= z5*vl?*u~`#%Selhi++60lvM!{)oow6cRtnlt2@p5-6tlu^Eth+I%_~tGI45Y( z9c5w0HvE6b#|1j3tHeuaV0rJ%xw@H1|yARkjE zI5;q(UZNZ;ED`5|hzg!}WI&m12kW=-_*?5UIOr;#I119oxaF!Ji0loc15&y&Ca#-ds}rer3H_w=c}d1 z8l8bEIN}O;hmoRhaCdJ!%bc3oAkdB;P}0tSxVlBp^a3!T$HAxk_Q7RQ>~cYkvE2|@8Qpn5jE(fMDO|NikW_0NB)e?t&G2B#8mA?)4*{s(M0y#V`{ zGLwN*uFQ_8t=i69a4pPEe1p!di%yz4Nk01-joZ=aLGe8ubfm7kIGP#0(zj%0C#Jy& zU^5JojAdiC-VFCK&!+jq?(=ZX_=63^B71zWp)r~bZey$>OwH~@Cm}ehA`+NVRqD7E ztV>!{$&Z?|tG1?fK9@>#CZhzynGmvsrV$;9I2VL5DXc=ho;M$r z?YhNG4J^(i#_X!z$5rSXt0W*ic;w{%W5?Shzl@!J&|0|q8h4dNcMJJfs1bMTcv0W{ zotV9wC2_%@I;x%(ro%>@_12Eafp)Q;NQy)Zk@*o5!Zn1LmQ@EJ^9#bI;R&`=_dZD6 zMcnkh`wqQe_k*H*@^y#rYc|w9+${a^4v8E50vap|&4FTaZcCWzOov#cGN)e6cQ7Ep zhBRl=x({b>3;({T%kl0@meN&(Sp$B|mTd}x#*QY|^!=I+u?AeM4hxFV+#e>u_~w^FW4^K-gJ4em?hqF|>d= zywVp|a1o-UD>qLwlxueP44|}U=sMaPXgbx(WH~lXvu;^gNg}A(i*TGfDYRB-qMR*f*f`5g zCS9}MCd~$G>C1GxR?BeYps2a%t9K;0B!st@;=fJtQ+<{90soD^l-zo56Ai(=$Us8L&Nwn%~eUd+JJgVhcuMQ$raO-0@6Nm_JwK|01EZj01{005DvaCCR|KA z`8ZPezPSHS6Rc02X(U|A*w9`!lZ0jvic`L{IuS{k6OvhF%4RYtQ!WutWGC;mxRo`S z%xB4G(zRBDmEz1b;D+>Zt-Fr5BP{XKNlIA@7v)>rbtYcg82n;+J#h6@`C^_7UzRJsR? zHIHrSCVSR#jO#t5mqy;@bwY>bJKl;ceG#T1|6YvLO?2I@4WaxuS$thFb&{F>_u@(- zZ~fELh@&)Kr)%0af#cPt&Bi-a+W!KalCj8UcqWpMq`exekN)}H)F;2hWK5Goz8;g$ zr4v2bVIC!-o~vW+EG`?7A|!@VMO4i*SqAw!1c&$+AoolFMKOzsLnw(%iMz}sKhc~| z_d)f%OVXiDzjZOGnMqE;!E(H67)n_vGPF}-J*6tWGxY;eF=u1uiJjqo+LuwIEizWG zNwpl}O14C&o> z)E`63s3AB;89tjyB$cgq%m&8gEY)ScSx6qNJLGQB+D(?Q+;NJt#oP`6ZN&oBAR~w! z1`>$4Tog^U?KoJ#h|UYbLn+$d8Rpmb-^bAO%}PU{>$&Qz0J~U5PSIn+wJEr^6Eh#~Rh{hH4sJBlDlymF@VYdEdE*PJ66T?I)t< z9QZ8K?OfT(3S~;-?dIaM8{1}%0m_;)rA+zbfz81v`Q}Xra`wd>5WCXle{qY!0ixwK zG_;tJ|1S4)=LCef0soEDy*cfBTlR+h&`y{`YtEc>pD9q&i7WnV1%7&7!~}%Mn|Hjl z7VJ|wMX}UpSUsuL8g{=*&FH)gkTkAxENSr@r-SphiFN(|p=E!a2v(ahe7=Mo9Yu`Ye|8)- zf$TGnl77=WDGQP8ShSu)dAHG|((+8gZ=4ahGG{*ku(y}*%oW=@Uqvohvee|E*GWh9|?BHtc#;N_v543 zM~i*4T7KNK+&i_Nwa%=QF(eH70F&^~8 zOzb|?U0fQyXTYSXYD~S<>zHa!xN`8RP-K{57rE3#2>Gc}gUPT!t#o0y5D`0Mjsd04uB8XJ zxJ1c4=mUz`v*;R%O{d>Rq@!&+`jnro88UN-WSRf`JBQOY=Kpww@BeB1K3#!k%=VMC zWc$m12t3f`Wm*jcRS zM-@55*gt~m&hQNtoGR&x7&W`Y-xS`-tw>8Gc}B}ILiD%@y5Sws{R*|5zX-PiuEREg zo7Qk5^#-{l;IqC_Q<86FyYcH|Epx?K;r za5G4_58f8H=ysmmYSZ7p8ckjrC zV)}0}B&p$iMfmC1(_|-)w633~_4yI0OQlpXb;$6jmJ$(OdRE$BRf&Fo%2FZ38)&BT z#Ju=oD%X!;{j90`zW0*kgSnQXuQ?qHD*|=;LOt~ax!#7}Qo#AIoI7>ZPCUEjTywpc zyo~v`Vh-OR!L?cWQVMTEkTq2SAQDDiCE2B&l`*eMrV0==$NFL3s?u1lgezwJeXW@{ z8$!DM!(B!tx*zyZb=m#_4hihO>) z_;OZM^CHpTe~)%=jUe`aOdNy`qCafipVb;F7i9I^-%5n~_uR^luh8q1mQ5MGTd7K6 z$@cWPh>jw67IpS5cNQH{S8-i8o$#~oNgb4Q_4BqkHE08MCQF5-Kx-fuJ5@v#yga5j zSQ#=li8{)dJ{jfRHa`gwlkHQ`2R4-K;}b`ToNff;7&3ai=JXH9aN50wEzvE4$)>KI z6qeLtP9|+9Iu0l_QMx`QKNa&=74lbgeE-Eays6(-fAc0;t2V9>-tnWm5GI0LIi9yR z&j?`w$kTlxAaJ!}BbR=xJA+Pi2L^`8vBP@_HxWToX2HN1+q(D9>g+@Ue85M0ebSTR z6JK0V>t7t7^6k}hBiPWmuql;U(^I6|ZJT-7b7AAblHRHn*XN{i#6wP6&%1oo6Lston_cZ225Aw!l1g3#csIcM7JM-=n#rbV3v5W47F^D zhx>Z91MEO+sLW#O>wt;Yg$fipGhZ5-<@4kLn4t9Kb)ypQ#0lA_P z&;N4YZwECiSkWGvi{=yW>ldc4sEAKHn779VIT5}i;|ZQRE6VvWEXzoe{~o|!=Zdvg zluXaHo>}=L&*L?V@&`C#=O9Tn#AB*wusZG<(05w1{3JrgKRT#+k>Y~+W`u+sS4Ti| z_1$fl(OrHXDx~CPbNNB{@dPxG-mamcU6wDh$|o+F9ziX|%_)$iSO^S{j* z6pk1K+ZiGIs)rY0^{GPRiv#yROFbQPq*4@DCp_-{Xd6FBL6pMb8&()|5S6!b2sF@w z3iwpnbnVAH3QE3rPrcS}LF^{4*IJ6f&XI%ze6$1wPkolYfNv9XvK{$lcefm8fgdYH zjJB?7^I0HV-@Y0>Tqyp5lcfD`D2z_jOChguP;$oxa(McOdN zLT(}Pm`S#ndzp7gTy5i{KKJ54XIyb~R)DI^)>m$tyJFjccUU;W;Y9&5^+LHRtv+TK z`($BPNvo=41M};`;QqKph8JEVeTkt z-Gw5^+5^9DI_Lc!1O7P&`C_l6vU#j+UY8=G{JUhojJ~TSS|+ikd`ExHxS)U4ed)Z0 zY?e<$?uqsBx=CY+;HMgCmwY+g#CL(=Gu0%{U|-8lA9^>yu4EA5{`!LG0QPu9-mE z9&-O37H|8J4DJh-c82YOaVFuPRVVtlW0br%?~^w$gPYnUOHT-z>`lu#Eb2-p5hP$P z%IM#6NmTYAFY<9>3dyDa-e~WtF{=~xNOh%_(h{G~$}_*!oUSPsUf^mfpvqy zkLT2^_s$;GbVYtj`rNMgm{NeCBtP&x&~A0Xbb`^_zZAY-p2||IQjQnwKF=dw)+G)! z;FpkIRrIp0(FfI+e+?Je_B}`(S~Yg|Qoh`J70n`;e4>F3;1$jo=q62CF+KLHYl>4k z>9_S0!+Ym;-dh#9gq_ayqCplu*m3n(wi5;(CeM%F1dz!;Hyk=s$`6V9{PZ`e3{<|^ za^Rfnh(NZkGrwn#%&#Bw>q@#J;KXKjsk?esB^SQ<$&1}%zLPk_?u>k#Elml~q_-Je z;-WJdLIbtc^?YJV+_B)?Me-Xrn{J4*(rhv^yT-^9r_TRq(UO_fKC3i~Fh7+_ zbFuD~)q2C!$2!(Y8>aO2MH;5gIHN?b!;AV@ME5<9zYjU_W&Y32t}jxqCImya{zzlC zD(LTV-34n&Ql~ptwRS!J<`*7x5svSUBB6U8*DT5YGXFE$^&5@X<@4itU_MozaE`h1 z#Xm21wtd^x-L8y2KHZynY1vOFXQKtnHwaT-eprkYs*jTDPhRZ=XXAd#x+2`_p7H(- zq{&6BU1DT)}+t7>NJn*ECSHQTb0zX|EjeP5BEIemX) zjmw+(FZ64Xf|8G0{U$%|h~b3;wI%2+{-zIByLW!||uqODm5Gc^M8J&sqLYq=NE#0|KF!go3v`vJVL8W|nc4 zzMSL^??)$PNbnWu)Z0^HkOCpwcH&#P57ii?!EnA)zFrQj&b8$k^J*L5kPix7@(bN~ zlmvn`bDf9Ci2ssBUaM~eCkW6XD7$h+DP!S%fJmnE=Tnk1k`o_Xv@)7UW>l&CxQbHtKM5YB(0< zz~p5XL+@_pzNZOBj1?Alnh8|UC^%JA9G6kA;6!s!6*;fd=)7Tr{O*4)J7sLUo4TV^?`%4;jfK^E@@@XZ7%iP4#<~%hfq3>L?v8&d&944{{f5w`cHt75s{LB zr4bM^kHVCjQDYMbedL;b!3lgx8dX4&ksj%PM6uD{ARs>n!T8gor%R2memBh2lOyJ9 z;m@@bu22}{pd7U$ugK?ibe0nhUJ;YupnhAQ@wOnt4L5tlrSErx7|hj1xb4EKnl;?) zP0Y;iorr#wHlF_~ckY%jF%~;}up8f`#UTLGLBfL5Ex?(y#1ueMVoG}0SSY}trfrYi z&pRlL$xB$iSj5WAGiJI(P>@yeT)thx#Kl8oYVoDAp+B?l@6zUWDpo>08_mO(`-}zQK#NPxwFs zY?3^g8-O@m)Cvnnws;Oq-RPh;!m;S&t9t|xFNCv0>+u+b4shnNh8u_AP4M#;nlot& z9Mji$@S;P6jl3Xr-Z13~!83mjfl#%JNYw-dzRRmArX2wbdi#6JS0W$kbZ^VHFW!8Z z$V)uqp6b!gS-Qbq`KYk4+r+P_DGNKL*~yQ#J+OJWNdpZg3N2b<3$Lg{Brw@U5CVdo ziKL)3oKFK~8iRxH03{+@hM=k|Qh>Vh@&f?xI{HBWz>JXX} zkx7yECdM+WI?iE`KVwvczUBPJwzEGGyxm1VrAJ2mr9_FRgawusXD@+mj~PG}PGk@u zPkF8c3a-Gd>I^XaXpW%$!a*V6cmNp*_nE*X^WcpQ*%!^V%8_?3Q9w3SLJ+~E?t57F z9k(??#u%VzklAY zDz-`JXo(CP(HNz|&<0lkiQ89-vI0|Oi&*fQUhe136=Nu#KL981**w7-mxH4WIs#o zX-&C1cZ){n{$F26KU#6l!e(+G>g0JiOP(Q;X`lh=rmgz+L%kjF&mu!HEtE@&HVUJ zv)a2w@zFBgRQ!6EV2m5Jrz?K#g5B>F2npc_)hcnRWVCR#Z{O=J3l-7FH+C9V?Dp+& zC@+WK!v~)aKwoO?82{iN%w^_*Vz(xk1LveJ5|4j~n%g^PJ!S7iQASa8x#)0RZu36FWiEF?xS@uD? zhHTNTBs>spQW%AgbgrD{qi5LvNI;sDBMA{Nq1?}}IleCrKt zW?bfLXZLRjlX|JtQpV;`r4+EF%Ijq-l8cxusRVi1?H3SmKOMhkIT)d#dN%?yMzV%1oqN*tJJ&McVYqP$tyMZ0ZV|3$*t0pKEg`RK?mzwB?31UT@vOg&W z$S47MjM=kruIa-pZA_TEZk{#PM?vJ!0VHlNdGXatIkN{4f+a5`ml(IQfmsKN`(@=) z+`45Jf&vI9f;$Gljt9{Wn**lUbF^(f44w_DG@0~5VHh{1*n3HQ*b)gay`q9BUuUQ< zbZuNt>MM5oXVpo+c{V2)tGjN96>qz=sAyr+;skgE{QBP*(;W_Q$IR^=;q=bz+y|#K zZgI^br=--zgN$D(hss^T`wKoV)E_Ra{G#4QDQ0sXTxn3Ql`-5(++|ocWA6T{JM^Bm zN@?BNZDeMeNsLq(*+Wiv5a4Dl3TF&+M};?5_Y}N1v_DP?*`-Px8KyEzY`77T4%mg+ z^<15}k&|Tu%zv!W*;#KUKnL{EY4$<=%k#t}JAknS&XmGBn14Qms&bhWxCDfV;^^ir z52ksgr~+zb;3A3iorN~G{Z^|Z1vDoipilojVef-+Q_0Aus$Q?juU_SjNPn*!a)y~o zFEjr=SI9=3>Jj_QNdxmJj*}N*EiC^)#1HbSOl$WOXSDxQ!Te80Qga?totgWW2QWKAK=9KKK=2Vk%}s zh0x-1>PNUkb^?xoXR8p~To~`Hdr>4u-Z?n`zV(7PTk`%S{%=sXTldSfwA{sH(O+dq z(}COlf^0|t>K7OuKFw~4vs~9kKJFdgu%OzHbS%{BA1*~;fXR?E#EC8pY~01=IEZy2 zRH$!u^{RRAu;Wx;Ld=fIU4%M>BH`DAhrhphch6K%B=HV~|1)y36ZsNnCEAMkbNzW5f|FK9f9XuFpDD!a^ z@xA~z|2rf`SG6>?vz+#fP(=)Tnn}9g@Ak!7bN0gIpU@??dC&`ZMO-f8a?Bfa8Ge-1 z?o!J(H2DBY8B)g^U7PT$7#_nY8}Tx zW9&~nrEgCFL&59xZ>hEMd}1w_h!^v0ZPXNp@o@_ z(lr-hp6>jNLOa6iN7K8gHnR9_1|Yg@g*F~)EM-HR9tpe<7%nH^Kmy45i^=J?e@!td z1>_?D4ZSTv&L=L$VRiv@yWm+_GqM=`Lvwvz-%h!ju;H6|X_n+hzAyx~hIL#^YaXFs z*?_t2z~&EO%yhAQQ>7_!+f3{jWv}4Uas>_Z`=xnYO$WVafudwk&Km~Fr?_0Lp#|cf zIIa;S@@1*kHTpw zDh-z><5C2_%d7fIJkA8Mr$?DGEj7zVq{{B4kn1^FZV1p9QV@=F|KL{O@2ivuH}7vZ z=8d+u!X>g_jsucww>%+dr*9X)xX;?EM^F7HX=N?0TXO)|v%|p}ST{!lm=7VXzoSnIWrJXAv^J$*&Wfo_zBEyZ$#V`7+ zbva=oU`U5RxyACulv3I8+MOi+fL-7xt&&(ok%5@}!RD4gUys$X`)*RRN<5ELUY%{Uq>8&*W9K5a8r8BtZPKl&@64*ZS(Lg_*Jvx%j~m zSKCWBaP&fv9QKQTu8Dz=xA2{tY?KMoO|OoOgj4%VoAHbq*Iw1(*Zz58yAQb8yl#f- z_Jjc-W%PfXbxlEcuCAD;+HDoY%*eQ5<4?=jgcH;Z*62-pwZ)$ zV1=Kv{tAaR(*EvPr2#=SE%N*qk3FE2UM-OsUcZGv>vpN`kpvr8o%3wsu{)A{lpL7? z5+KQVXRYJ2OYUWnR6s5^EYs|CCg9E>ewG2HJ!>Hmmw?-;L5rkx)CQDVNYR>U59{z5>eJ#c z@T{ZjG(GWPf}8U=V9^>*l|H7Tkpt{{(~jASHEk`jV?@3AdGR>z)c5$Q{DE+A3UF zfj3SBsesA_>&9^t-=Nh<8EjRGR}YQ~)ACbD^1+-QAI)JsRQNGV1=19WFlgOzTKh&x zqOun}VSj`a)JijL3OUD3CQjoTmMP!!{51x4IO2Dt&-#F^)<0jt8jyOHUzHG}o2K*y zhhQ2(S+)nqU2P<=^)1Z2a2~=tl59Fp1OD@AH~@}#b`y~me-6)9CV0XH$=XBFNQV#* zxuoYb1JU>jVq(BtV1_oA0;ZsF=Y^tfX}n|oqU4ncE7D%wnRLE0U;gA~OwpjAbP2Pa zjW1*h2@4-2PiUwpbMoP^`dJ2qleRh`#Ke^u49J@7?~XfAJ`r?H;NM(1hKRQXx2LaB zwoX*2RR_-VE7Cy!2H21j8q7jb8O?02DO;-o(O!e9Xi`)(D>~ZAB|2JN%AXXw2g%!5 z!xw+6)5xRp8(!5!CQ`JctBiF)Me^(dMlTj3yodC*f zxFm-CvPXC6@T#oHm0nxCOQ>Y#r%vIp%e1C@jvicss{p4Q%;CEf3pY~$)d{W=uu-LW z(FdiIrro~^0qDY^eFeU97nG_TKaC*Z{uYSAfg&+ak=F{ROvn_AHxqsWJKM^FhL^Zz zd6aF$G!G+P0uiF2a^_WC=tAL+LD=7?G_`)Lbvoa zR;-MDFS~B{f>W8OrNpIH$Z^kcO=c(^%K(i`YJXiwxbj? zl~hCzRa~J?hzBGXQas)CCDKJWx>=(@l8QLiggrSBqt;@r3vN0$1BIe%q59KvYapdJ;Dda=8U z`}A)q_hbVTNw-~uh@+-kBYeu|@n^5wo!L!grCO=&$4_H7xj- zj{@4f+xl{$@B*+0|9NzPe94oVzooeeYd<7c&e&W|Yw9KC5p&FrXP#wUCvqxc)pWt@ z3H*ytH%;~d5lTB@zh7h3s7WMZkB=EQ?+6gltR_gs>^})?`aoo0r~vO$f-9L^eKyy$ z602$(3DEe4E6-4lI9KbDgfd$D(nrxH(joKzA?nTJnz-7(|1*!zx-A5U{xQMzpPK ztF5-)ZNK$*==b?O5ByIViBfA^UN*HX==&E2U?U$nJ<`X`z5>L#HMV*79QTP`B0@MSHf}2;0n+{4h8BkeE za#hZP(66G}!XGn1Ozvv$4@mWGuhVr$E!}{eQh;gysXy?#(~yfiq}{l}dr;pC0p=Ot zSL*n@n3RP3(2J{7A63U;lGehfNL9|C2|9IViH{c|zPRn5TFrA-BNRuo3@u@1vSWE2 zRB^|0hiq+3Pu7vQ{^}$$RdJt0y5!xC^wqU zV#-{4UZS%)FdeuEX_zvuP{nKfG+5g(dOk>Q;-Cta@IM|bR(2d z&5_(V=+~yyTs`+`U#idH78jfC?yY-~AOKa%)+Iguc`z`}1)!Ga%3V2=&B*%mfRtSi zmt8?33jY&8$t)jc!-hBU+PS@s;K+6w33q=<;O{44D`{cxFkL?R^8LPT>OT>h_}tt8 zB_TR7bQ@UJ%0dnd>vVQD8IJ4C0SIplrRX^NaUQJROhSx@~6{t;%c+;oVw0Gp#dN!GU-JvX2$s z99)j*XL7RGJKv?t-rNrQeHYd%4gdZ@-E@6WOduNdWp1 zD|#C10HL5_gVGZSo@Z{JPiPWehR9OB{Zfxgh7Ya)k5Ugy4FN4$$82@z&+TwMU3a#} z&IXean1i5%>zj&n_I!Y-m&1CFs2BYog1Ma!RR!>4T6_&Bqu~3PxPtVzEQliq5Jk>_ z_;C-Yrgnbo3L)h#P+9E^Kj{!)jzC>C0>2i&^@loaFZf-7@T-~d*O_mfpz<1p-{T7Z zObAitE^ob|8k_x=|MwGE-}+}%f%lIrtMgp>mmPocsbroC`RJyhJbz)Ge}D2n{^umH z`x|)qnVBq<+xd?vzR_~d=Sfz~(a-(PZ90Th+?bp&Pe`mfxkk>jE9FjcT0W-KJ}*Nh ztNm|fHl3c}mZM4H)KuGJ~#IQ0qzQ!ZGowxT|{ZSq|6WGd+{SM)>% z!M!tCgt-`x@2Nt+K#1~SzsKE#ijw^NwK*et5dUep(14gdrbc zCHC?$Eb>m3hui6WRY(54_6r7-laA$;FNmm+FxM*BypEcAWPnNUj|NnT3;_lMWrN|b zqlUt##TWgfA{%1Rg@j&@---Z!HJx`1A=pqACR9x-bq_9?>Z;zb|Es)BcGls6to@GB zFI>si;sk%=!4uy9le)t6&YzVVr&5g657@| zq5zE+%#F@n4EitnppBrt{-Iz&cEojo8&zpkQ+B|ddf;R^kt2OMeH9+1fdh`o+u5id zjhp}bUb_H8>D52&#Zmvu-89xllvBAd2C}nIolH(XV{_lg7 zAPhCg`C1PD{8a*G1+ptw@q+oj;>04&6A5&y{o7wNEIQSB?}pFMrO9i3JkpIz}mtBc?>H->6zagI?L zkk_&@{nxt!l3Ebaatw1_x}9jGUlA^bL;$(&4~w}@-h=6ou{i$E?a6w{vEDTX|LBp* z1;<*J*V*$_r4Jc-$tySmX&o3(E=@|I6Ua6Y-DN7rtq1Q@R#QOBl6caHgf||qNovAP zi7?bJC22rcf_R(0dU1J1ji$`FkB86v_Q5=l*{%H)hSo`xx;# z{OV+H2?H|BE-yo)67i*k8E!f%Ejp8}V*NbncxPx?`&fK54=b=HI##RJSVWgtWx@(u z`U2=|l?Yh5qsb)|fXo|chr2onJgx$n#Gp75TNy1{$m2{O>55t9%c=aNTfE z-qYwGYkCi=?l<$!Hx?!Ktd6g%E7D^6oF!L}EL^+hl&wkmgFtie zFkUz}Kz@743gM1=g^uTcrn7OJP3q{fmgvnTM6;8XKgqs7xA)^A!f~@lFXbP+Y-OwQ zFpeX>!Cyq3|G+~5WFpvV<)>Ok)i#igLPDl&vF@SMi^cxv@r#>RfqR-e`SRM+`2}@z z+}y=n2Z>xDP}?4138R`b&qDzi4$VK~Hegh^Z(NWpOWfCznf$@cr@ZYQW<9v@9<|lv zbp$I{QnEo=pHt53XK8SE8JaMPK*LTBa^qV1_7>mC!7X9Sk@NG44_KLJ-#>03m8YtX zqq6$tpIEsR_9**u4(mx1fYw9AUDf)@7VV72NuYzyRm;w??z~yk_Cu?Dm1evs>8Nnf zd(drTL+!tZW1tv>l{FH&P_TUHQkkB#=)#CDBA$E(}dAzM=B zrS#Nt%imy}m@2xCS9N$7md)SX_`2DQs$OH{wraZr$f2ZgsmL6@-#0Lj+*Dt&a-vj& zJ-UTDn1yhZumZ6rdPN3@D7nVt@Moa%U=A9(xRS3dkyehK``Vg$_f)#x&A7bv+OL&v zgHi9Ndm*4%9JOlPA#Em@feyRa!u;Ei_DEP193K8za&?4^i@(`cy8l3slE&mIU7Wmi_%uGxa{rfDw;%|-bA_D+{{CVbd6K z;qK8mzIoy1gJqLnl_xS=B(t}Q^Go+!`oxC;tlWup)02AA%Ja16Dk1 z_}OCm`C&u~tU{f*Ys-+7j)bpG{hw>7B=KCfi&c=z$CQa6PxblJvA^>5S{ ze~&S)M1DDL_I(tQ#YEY__w09`mx9-MXC8<)rOFO1$rZpc(!8C!N0#yu8pz^^M>$1_ zEzPulZb!-HMrmy3^{wy}#p37yJ$HaS_#D)$+ZWNy5@$BN8sZF3$YWYrVxFJooQJO7 zxNM8(KKBSKbNl-m91UBZ#sX{B@?7L-aFFA?lx44}am1cUtL(pUEQ8_V0j@x+3t3~{ zW|(%X_FF4(*AelW+8DZ$9(_)6m{s;DesznW9l_z@M%V!1LZ=flX^?0dewUv%JD_ZW z&l$^VDr)l90WQCBGR@qb*X)t9r;*#hc8ix}OO<^iEaWP~$rTnAxhHab( ziTrC&*I6sGUiv$;%qPX0UDnjims_XeuQr!%l71)rJv)|BBCOJWk|<(KNb42;kjivW z)(jS*o&MrSw-AZgM9V+kJb}YBM0yaVcS6RSWu@e2yV}R076RzvnQVBt3k`tO%PWxP z_DR?KWos#iE9=^Q$@}LMhCBF_NwXayJZrCY2k6%m0NL@)Q|y#}T0ffMw-1_qAhIis zJ-hl^%~l3vFqJ&M`QoT&3MN%1sn6GLL?`-rby@x*>mJlXp*okqtocV>wVdE!S?TCk ze;0~UQj(%~w)FeW$SN&b5(~|J&6)HpERZt#EPL$FYLosvXXVcm)jMZ+%$5q2vKd~y zR^o+|MTNtIaEZfKIsyj!h3Xi5M&q~Ha<`8=PVQGHoRY5#dAuhU9@C~ay~0|C2qHlg zTpqihlePEXPUH*cl-y@Yg&;KdK7T}&MX#E+bBT>7ZaeNU@2l-(aP8$~bZMy*R9+sPwgCE0*vV7Le#YRuf4k{xiI(|~ z4Xd1_oTURlJpyI)L>F~@2$ATHmuWdN86P|18VKz#Sq5qqLZ^>8zu?sc%^e`?MWU*V_1IxCXFMm%H6T ze_@A`cj!nrRNO?GR}5R2{+eB}SO|3#ow;+ef6gml^}TneVeN?qNZ^|OAR3izxhmIZ zDmM^S(M>bYi?C-ZBTFlC8$Z3q;)Q+d*r+Sd#}jJ zN^S31#JtFS&bpGb6L7~HX;JL%k(J{PYr8D+wX(0h-z4sGJn z@iHp2Ns`>A2K?+o^<4x_kIrca`^WWlbjp7s%jxTinpWldW@? zBieMi<$+?$k`Kj$sh(`cLwaiaxgFt0C^N{GS<sirV_Wlj|w^3MJMt^%W+1lwHktEajAzWh8ZL+pyaJ@irC?g17N&C<^ z3J*ba*p(S~YupUtqJLgrw|gEIsX z$1nn$_@eXrdv?viO-q;9)&@x?>Q#Gwz1?ZeP}JhCF5;y2grHi(r(V%?I_RR{QI{)+ zfXhW=wJ#b$1_ZRU7-(dpb6Rj>mx;_;DmT;J*K@d%r#ECNQ43XpY$M@noJ43;d`Qp* zUXOtJSgslFeD9L+WqA*gz|w!U^{3OG`9{)EsbrputjV(b&vBDD@w8DGa^lCy&gMs< zF)2;;!TL>yU_l-pe)UMPp^-?qyC|X0iGfndeEQB_k9mr%sBn7q^-tP{tajh6V^>)A z>&8cp@|Scnke;X|f|8%Gp%zB;U_{SFKz}VQU&@z+Vsb36%8m`k1k4*Hx)*-hl z^rmUnqnzI(xy9nIkt*6t?~s*do`??#TOwED8y0;UUy1=B`s zU{{o9c&`2SIY(i&72*~h$yj-4{n)D#Yl+fjpqC5oZHk7&1nU80@t@DTlslK_8eBz84vz0 zFU1XcV@~#2@%mAgJA@sCw@*O#)HH{OePkQ#R*5o`C_QGZ;vLgUB~SA#eXM7eo(FaH zPg;R)nR`~&6+ibfwg|#yQh+*fFJg+Q6vj4~49&g)YWFm)Pu0d=l|WT7DLo>)aV#>? zd;F2DrPyC>DE!f^G^28z#jeA9eD9C`((6$2?Sd<_pB0Pze3KRZq`Pye?P*cd4O}6( zd;c5e#CZ@)DHGi29{io|tN%U<^F&S&|H$01@ zrU%KfxT_QDn^t?s3(}@<81mcMtMBYoI$Uu`H204ed5<8!A}->B8J(jJQ#tr-U&yzE z6Gh7EW7(!fp@T5IQzd@C0b0!U2M;E7X1C_W@0(w@zcY{CGTC@Du!t}3G*x6&4iM+j z_85R5{aG!OCVfkpK^HAkn^l_A+0a#+`?7oruT_a(zKT?28fCrcvry-K6JD7mOH#7+ z)xYg``Dp14zw5sLO)JgyJH|KrbA6qO7=gOZoLe8EWcM<%tB#ILdc>k6n_tkoIX#j` zS8Vpn*C$+et;RO*dEiTlR;g3?mQqIkbvS-kx2|*K&hAXIVUJMrB?4s3U;QXy-qjKQ zw7H(5nH)ZQn$%fx68fk=Irkm9Q1I(KDXp5@-BG%JW*EqATbBR?Q7y6XRxo$!UAf2q z*H6ko{imjjYZ^(a5Z5}#2`F%*K9^(*{XhxyQwLFl`!mM9XZCN`JT)%t;2^J6Pk$+ zYV?nMQ)=~o%;q+~XlW9WrP4<)N;P?S`5i%-16lEF9o9$Y-xj5+4$nNgePNf&nc<=@ z>srWV_qc1gTaC|itxql1toQThP}j5_u;pHV>YlTFrh1_*fmP^8anW@9AzIQ$-p(ac z`S27Oy!suTR?j%RqQ~mpGXV;-Sae!O3E8|PA{x2lb! zxIIGmoKj~(+|-D(ueUmV9blGULPFkGc%NrFFY=&T81l3waNjTLphFhQ${i}l8NX`s z1aEI0yYHs_?8Wd;39EuX+l3wVI&$u{e(hRa=;Z?sa~3sjhN{X&k?Ap960WZ8jTI(W;$W*XvaV+jsQrwbe*#)zTrq~(18E4G$ z7Zb{1QS0(}TKgJN=S~p(*-V*g&iFak<`t}wLX^n*u<7(kNomD_C>oQ|<%Us+%h~Vf zxjsQJ%ct3A)=hNzXh7#wmJGyh_Q%MVhXtnvR~P*ItH1*|4uEtlX_1;5i# z09^Ytq#%X2&AUt@GbyK@LwN5_CgAC7ZWi1oFLntY3Q~%p zo|W;bFaq`9EFW3kFO&0V&GDw3Oakz;r-o-SwJ>6A-s^j(=VdBx!GoBF>SF;d#Q`NQ z46XtglW9(%8@vu2ejOr%2~y5tG8t#@78{fv{PdA@qB^oESJ{flY#*}-F>5M%M=asA zhAdnO4=WT7wdgx$Jp%-Q-Zl)Nt>kwwVnWf7cF;a8QRRS$ZGc$(bPW_RBkK&G-&|7e z{D^i9d;3KoVHs*_5+Qq1FAS`Q%A#90PA~n1Lm_jp$+Mn`hWitVwNT$(#mQ!;rDRt* zef@C>t}3F(B;AQ+wK}#?w6qj8kRlLDEy_D##SJma6ikhGJa3UZ4J@x+1cQjcxY^=e z%fOe_s0fKajPOVT-*GdmwMZ4XFWPRUJ`8ID#*>45d;F7 zypFPLqlPwR7W6<^O2niE41++^L#`A+0Tgx|r5*Qh5CHJ-EM*5Db^|qiHPms!BWjSHGHQptJRZATQiDn69!ZRJYOru8@Le|J`2|V+) z|DOFj^iwe0Cf1?SiW7u>N|ECt@eM93 zL@evyNAYg&a%hW%A`6u1?IE8eUlMj)Rw&c0vmkF0dcuHKetpv+a#cc0oh!)g*a6kw zbKvdx**D{zv@D10xRA?l^OyBGo7}5BFGgDFdpwUYq>nA%=bq%y=ceJ?Pc{Wug?NQkVlxB)s{ywFOIhZ4|INUSF5=|=_1i8b zXaq86fB$=ujpsKzE&#;vE!y|XO^FQO6#SO39CK`|3D_@2NIOVYavUZrEh^T2XSDP&Cm}c(+5L-5xibrDh<)q~xmB4@X$Tc`q z*C{m3hb5g%IR}1qC)IE)z0F#ZICtl7p&gljZTOn8&AyoZ!@N0pg1=|5ppS34So-sk zn{-)*pKSNYmNzlz-n!>d{I;$(yM0;+&qyiZY#6U{I;LkPG#qg*a$~zLDW^>30S&o6 zcq1Or^e{s$N5H~4RaszB=#AorF5)PIEi?+tI4V`bESADl$yZ1@EOE{gO$v{%*dc4y zbmv>f@s`K1(-iQ;+=e-xW$x>q+;3bJI>#Ge8cXO`M_W446=Iy8PVx@>fJrtMvQ`e##n?AxWLA|X zYB8Xd`8orc1L?9bl(MEDDkGq#>E1aOJ@bZ>)1cL|_EE_|Jx1^a^dzbHSMt z@0Y~d7um~m>fd%4)4py`q{P1*4R=(DowrtR*J<9|^0){eG`4Tg3lViR5$eV}4<{Wd zVh+~J+hWW|%37AP6iqZb*$ zFE)YIUo-IJ$j52Q$6US33<&sAKc*;myPabPKZH;~nyEle!WF6*1G$k=M{&w#Mpio( zK~IVc|>$4Fn}`9*dBus+w52`c?}>nDwXv>lq{y&cH-mH z0XFJkkLy}Ar$mjXWc8upwM_X#+T7CjsHTxi94Y?jY*VQBw_3QKF}rx%aUc(s zW6P<3^Js;VT2cx9e2{@`mydyDLI>-Tr-qYAv-^Q>wxJqHRH{1C07+dG?i?x z;Ln}gv4**HZyEpNKVNs2nBS$BkbjpqWPnoBmQDILx&1w#>&J4=@4+4v&104&?#0WB z%#(cWd)#u*qp|VfCk(B>1){;s8~pOAivC?h+Kk@j1$%yaRUtdZzb`8fo@Jy@B;sgk zv})la&YnPt_sTuBt^b}Wv-Aqn)$cY6oTQDpisgl9X7<6eL=_u^Fk{M5`Hp#8a)sxQ z;T5U-iJ2}9Jq)8xnn}9rRQs@s{++nHRKbsOSJ&Hy4;vK0a2qmPu2*cUpzMsL+XO&; z38b&DK(XPXg>zt|!31gNipE_laH*1J1luKo&_-l;gMNQsI@yM4q#Nz1i`B-Uw7(57fNN^_baz`($+d;8(@jxmWoMBOJml2HKL)gnnJ9=--Mmg z?eYrRx-90l!6Uv=GOI|b-B5qlQO;%xBA#=o$vO9p|~el#rFf@ zuKhkIyG&*1H_lu)0BzxfE24gv(j~P(vk^!R#iM8OVr#lw2K7}z)O)Q?n-NMzdm%$s z0Rc@?FzcZNb(z`@rytkLSiiah_TtKhv#^eDHGJSYy8wnF{eb-^pFZz{lq3~iyjHjM zm)-VK02h}`*b4p-8vs7&^y*558!yW&A0j`ZZ$8)ylSA;BVsmGV8+!Q`N6^U` zUN-+Qp1V*ufgBGs%|t7P3%gD0AAfc~ee_b>`j2tGEmxjMRI+24vV?6b)c70s^|M&H zGgZleUbv((&#k87^c?__&K%-_!YvM`l`t zz3)}fO5)AyV`7w={q9x6XX1)J=+`E8SsM>)g~7*CU#9e$ral}@i>CHvdV3gxoZdx~ z2!kmvY%~;AWHw`aj4zJ+rN(%yi)m#oToS+gl9*e++_Yu|Y2Hcid(`M$aig6BIVM|9 zDWW|~O~>Z__=lIQpW6Pq{1x0XJt-}atsD%>KTM~|3FVttGfAF z-tNkcy>?Oj3ZrHh>|4M<%sDXmDM~3qli^pPQ31w07u`S{X99Kn8Pnl9JD?P_o-bKG z70UPYno89TnBUVn8_2Xp({jL-J8IvR+TY%uzAUtS>g`UJ!F;OWm*dQhqKiLl|DgH~ zi~_&wE=SsN#WU9`T5`z9%ZT6UE(4f0y2A}`z~os0=eJ~tZg(8ZgCxwj6j{(}=%>s{ zx-lJ!VT=G<=rAMa)n{G?qX9Wi9Kx3pHYXhvUdn*Yr= zMB=A{stfpsjcK95P*86=7RzsQFvf?*!i{F@od6A#GFoY8okINx)*}%|1^RD+d)CyW zg&B1CT$HO~!5lhiYr}9LmE9@dEm}359f;OjmNeV_s9wcW=ukQka8~!_d{nDx%6zUT;1*bGbrHV&??m{sYS(@x z`&8TRSiil2Eo4Pdd$jpaj7w>#Oj(ki;{BUtzNAOw#Un@B(u9%0N!Y* z_E)Mi2^ecUzrx@}j~_1s0`VV?Qp`iL5u|vB%_4N_Q>x+hDgMPM#z5{5Q`lnnKMp+I zHXRGU@x_nDo;Bbjn)_e7=>Ow2xf^Q?>C4-b-P}84wBq+^KkL$J=uoIisVvbRWt3Sb z@_fTarzkhG>2Ud!+tmX8#+m?&#Zvn)fR#27QCo^=W5#}XI<$@ba)>m`Z~aon(#s8< z=FN}02j^zRqolh%^?M1GPqL7qh7JtWIiuE-QR_00=pkPwImaY|QCyk13+B{r$9sth z5MdI#RX*6(w_M&*ewmWt^pPN$g+(VOmqIRzo#o;b?O!oR-k2)^i4r@?9b|wMFj@Zu zx>1^um^B~Qy#Aw9F5_92m6_ETAfn=kan(48=c=Pt(J@(8 zfQ=Mgml!6H5MbS{3RUYI5y3F6XAq*YQX_iP&q_rNcxQ^qiB5RdpMH)=x*!kqezffD zNbc2PW|>olVmmwJd!4nCEO3WIf^sum=c8T2oy7zW9W=9F56F3kMk-cx^)bz7^Or>x z;{go-wLyjqoXrXtiiGQcibje=6cB#{J8j3uH^pG!;$OAel4dibWs06$(sf8^O zoOs=40Ov?X0S@!iW0g;#(Xq14iY7|`b!p4rYrA-1vgFPWc9+ffi~qr1u`?uU=^Hwl z_>r!-5$mJ<{45S>KSbil2h!vjNT zhnt+ZvX51wQUnr80P42yv!~*q>B--l055@>;tl{iz;ntfv7d??Nr8M&0l@oQ5Z8$q z-*1Ecog||nmD+K*{mzM2Yb&5S1K?=q#T_eLlD#_kE72cynSQEAS*PkHRD|Vuj#BZv zyaBImYDs@okQJK!OXB_c;wgvW{1@4O zy_^{wjv~V>MjzYRZe#)6-OLRh=|7{n^BjqRXNUVFj7wni3KI>Ifv1+H+s=~NCbz9t3Usf_Hd7E^w85p8da zp(Z2$G~+@e#lU28`bI{84#FsAORVduMw?a8P8n`wO?C00ksR>7b$a2;wT~}xAMV_t z)|Ch`c4meQ4}TiK7VMFC-Zjj1B`Xa#xDgVFr0|A`2Phx*y(R~I(B>i$%3bys&IZaH zSy#EEo&q3IF!w?4s;G}Osi<5%8-SDOi%=jroD6V1k1Lsj?-6|6?ita{W_TZwsP9=@ zTUUSqoJLIr?VT@_hedJu1nG=SmT|!xZ_3(QT=-4+tl5kE0SVwvoFzrKtQw(16=;!F z|I55a_X{gJMBvS~ohm&fqgvsr0uKB9D@%aE8%ozzlx*QA*z zuGwTukePE&dJCnVRZ1(5k-3XaC)=z`@2Nwh{ezO?dVoMGR*#*`~2JF?ZjOe~+3kOERIkIU zixyV1TnnrV3dIK z;C7v^{70YgGm3rRX9i^GgwLuSOelXhkD(`$(SBHp)r;c!!gb z@C~5W8Wgo&ZGvy_)p)di4LvgZF*^N-#L69-q@xl#U^8;KZ6MXt?1BLCEVyDxfV;r; zx~tW2G79Mw12yVcjgUfD9RSB5Zgn$hhoW`Hed+4U=0_uF3SDtMS)wH+&@J`%?S>rs zLr0GnXNu^{kpH3%f4!f`5gH<`v-Kw82Ya6TxfRa;qIG=#Y%$yxuDyJ8Z#>bf`e@*G zd*05U9`3YQx;jo(*r4$=3%V2NK-)pYGP0lamWxsr1T-%tt-3ecrOjPVt;S^I+B@i; z+6(GQfT76Q0uDqm*lX!>h1zr@NZYh>nVuv`-)kYxx;sNle4KtV|Jfrkb4gH@qzQ3$ zd5;}pO|Y#vdc&&O=kf)_h6S%=;m3E_>ClD=s8aff(%WjWb!#}~yTX731JND~ob9wo zG|K@*0BL~^1j){<+p!?2yTm9Q(gE2VKvHyq#xoum&-rL(J#?=Nsg}_bFiw2t4Uhj{ zz(4T+1pMv*fROETc*%c4wZ8NJKoLIkt>4>#x3eKEeI}IPPfPP1p|l?&(cjXbyx$4R z_uZjv-yMqj1#da<(-Hoz!(06CzoEFF{TBT8?8Q&N{Oa}R_)6MC2bkafna_X7=@;*E zeHlY88-BT+e90XRs(XX6^@3b3DBM%Oa(0cOz!G-#BKh!H^5!0K+w<6k2isq5 zlr@N;nXy^A8zz)Ttkz{;5gKKuBG=QKLE|te2yWJN+>xY|L+=&q5_t4_t1tI5M5H5wtoC3!m zlTRla)ZSr9NrTey8@VY;9uLDbNrW6B8uZ(lB}W@o8?(xY4rPwZoy5H1;c>BM{B_aM z-@2DK+!h3QxlQ1+ys>Xdc&N1Sd&04xzUE*0p3W9l!6g3Zx4kD$nT5&6<)=$QB_^=z zTK_v9a>So2KHR>J&tnn@&37?Z62DEUA%3`Rr{e+k9|?=ixCt(@X5L;C#`H3C1#Aif zBH!;Q4tRtX@&Ph_Vh2z$q!G!Jr`pe2#WIrZ86Z&b_hs%-1_O%1T=8S(*2gH+?@l3s zh<(LGI2;FuDIMPEo&J6MOYeo`=em-gq42u)w$(Fz6H=usK7RCtLk38*Fn*H{XJ!<@ z>CB6~qgHzMp6?=WJN04pXL+Ni%I_N?8`iO6y*(8k9wV%e!6I}gt6Wku^-zf(>8oEKS@h0Gr5hjGyh0I3q! ze|@ONxz4UoP|bAyGw+(fvRG^0VYIpUl{Iv;dw#Jjh6g75gNN3FIp_+uU-;~U|S)fqGwTQ?foi$lp&Q2ZPFWQ4&0Q9(}|?qW+n*BL&z*>R53{kI+a zPj==XL4uENQJkker@ntkXC&_32v>vo{>Mt<30u3hL}v?S$6Hq%F_EV6O@gw<^0X9t zAyLi`mdDUXrNLPJ>k7`kqTe=t5$G?MoD_bDT-3(-VV?_K1^F6YulgOA4~aA^-mJo z)XoN%$&%fSUppvF@!FdD#mK8i0R~stg-9v(l^WQ%1_D25H4ReVPNvOWI_{4kY2bL@ zx@cJ3B}vy)za4%QU_q6;coIlN@PIbm@rSTwnyAU3KHt5;#35#MdY=Msy}9npZ@Njf zA==BjUCMuN6C6TG$1lOET(q9o;n_j_EBmxLr_Ue|rQZlRd@Mdj4S7;n%0gv~piIb; z6UNM3BKK5BngVhl_8!N<1HAaPIXptfnP@a?@7CUr_{MYLniJ3RVwxa>7CPRm~AJ8B^O1oix+F09{dl3yhJ{U|Gn=|=q)0^Rm zG%+;UFpG=ab4@E;zPnLfH^g(x?OtVUUEk!ZZL=NP(jhzZU^; zqny$g#5oG~8y+9%g#dsbxBE~R?3hb0?>c5Lg%nrF1>kryWZHXc%JO=6yy(hPafL_b z32tW1_tf(E7@dtFutR~*YA6;KSRtr(on01SWmV_Rv=c-iYS2@*hplP83(whd1}Dan zSRpy1M~<-gHwCTr%Ew~IATtT{GmO_o%P+jx{gXTUCmorxq0&FXfOEB|gDfF85E@l6uD$!oEqx*{+ovg4CtqqkO{=>1?gG;wje>r`Nd_uF=cjE8@1RKL&E@dAV0J*Vp2+PIIyY|C2~K;rWG*sE7$sAfYOVr zMPVcMiTypF#L8h5S@dpUEs@tjYkp^!SHF|x$A|x<*gF|q=N$ON$$Y9tDolK-(p4Op zHvIHcVJb3ghi+zkEt@4?uTt%jC3N7ZD6A4_+z^bpbC?`Vg6;>8|44&TB5A%R^o zk}D>kEL<$Phq3JCalnk&QL@&GuxgK?VSy;u_!1uElcg>2iL$KoQ=cQk4NA{-1l)_- zyx>t9tTT|?x6O(^hQjQ@Jj30LqliA*gzR`1Y$Mcut-4rBXUcUDTuyGoa20 zHIxY9!zXK$b$-rkbp(<*m<)#29a;*!D#w+yD_C-S*-+(pUJJ4o@mm`GFe+C1Tz_io zX{Rnz& z;LWm>VW=!P0{hxnDf1Oyeh{9W!{zE_vK`x*&p#qE;1k;~W}&p4b>H?ai)m=<^I+O3 zqY@f_meMLr^z%SsMadS@>Xv1tgiwi$(Y5x@${1|Gn4%Xkh34ozJylX-%V96S1#U-Z zMx7r|j&aB;U@AZS?hc>qbm_7da8oR4&QyCsk*C*%|53|F1>R{W=t z%l0P%(x;Z}5AEB~8)5bGtOq!b?d$c(!b>f(nb>AQ5(Q{LKopD&%VaZo-u`lNiawAT zw^fA8fG%shlcS8-pDb^`??gQ*q~N#;q?W~LwEg70cQ-h02!`~+tG@pfTc`8Mc%R?Bz72+`*~DNa24 z#n`=K>%@QtiIX3{TCr>?Cvn9(x{M=QMkx767@0R_3J9QV6EM?$DWCUFe~on`ee(Y6 z=e9elihulLQYA{@wF#$sl>}i; zCPZDc_WMGZ&36-kj7*@dx`QrU4DTs2mtk&qWWh(P0EZp^YYXic#!spw1^4qiudO9b z?q|K7m~WjnzP*K+)uOxyWj*Zh^v2q|(~yl|pPFr36oQhH5^XCoI%ZqXd-_3T-Pjz-Y0naeiUW(v)Rqcr@c8L<#& zxNDxPV*j?!4sV)~zyxxOCG^R6LMkO3P7@iX5Ua% zRlZC_5yyXjH7AONZf5L|c|&jfy(h+Nu8P6n^0<7$f`WcWxL83%AS7P(W40M|@47X~ zzpVSJtWh>VyOOwj!KKgHuTDG6o-wbk)40;Kj_(d+;Kk=J1ICC=V_9xLURW zf-H{SbJKp1fp^5pUgD7v1B0*_jezZaJ+h-J@Uu?WA(|b z2fcfv_N1y!925LS5hvheVMa=ED;3DG1M2S2vzPzU6VbVqR|7v243)s^pg zlqhQEJz~&V$jU(k*xWN@>EY01!^reqSD@MkC*z=+Hob~iX}=(DsyFM-IB%1E2QA%i zwK<~MOhW$9gSpYz_qZw~mpH|=2fWV=^fmh9Dm%W#rxS|&)n~$|bS>e}LaGn&t6KE? zv>J1yt3zK(ObS~WoL2$^)9r*Ts9hVwOW~Z#2x0}GB*?Roq_KgwM+f@pZqmH1`A!~AK#WbVto8&RctI-^ ze=~z2)h60!>FD!UM*rnxfnkV1c4r=>>B3OJ;Dxk#*Hyn{op26S{jgRStNLZJm5{4l z_fT4r76b#;MjAGS-{&&*`+ zHSw0F_(6x^QD6-ax$|W9qbnN%EOb_-x)R%)XdO)2)=geqrA4iK{*E_$|AKpU2KjP0^%i z<4kL2{IYOQy9306*-V6*4@W1|tdb`qu;zEs)_6U`*$XjFbN4HAz);4 z62cZy0|FveI|*SGFhM|E8x|E15EQLd+YVt1tAMD8OT!|D01AqVOZy9JaV@AQ;!?z= zxV5!a>rcD9m;V3nd)|1CCy;PXa_7#y&wZZf`}wZDvtKf2?~6f;!Cl%=5FC0hM!OXw zZR&iNxa{8C{Hs34pCC6~Sr!kY{#*+1`u=^^{dAJ>OYrpeEOz~fL(#3K%?2cx=hl?c z!{yxI4jt@RJ?Y0P&^7CIxHf`ra=wrnh&?sJ4(6Nk(x6^I% z8rev$PVVUdTOl8gi-l1kIkna@Jle02nvt;{iKYJe!CcoC0UhnX@GFx^Ac%`sbYdmwmpKIPavBxBK z6Ph7RFr3zh32@A52);h)px6MP!in zdprea-)H59#1tnX469Omo%liolnHQL#NkH#Y;k?@jmW@Ll;ns}e?sc^n3i)F=v!+J z2ETs-Mwd=)rJ!C)oBf~qk_HBqPNx&1GawcL{rT_(@`gKDbQc;;R;~#<{>j|8=$|K7 z1(b82)x8;;yL66e-e;p*%qy;B3uaj_YCkd4lMR(|OL<9i-GshJF0MhVn)3_dc5fIc zm<5E!FfSW3v)}`PeX0dG+0!NLr*(Y$oR?55^5w^t6Qu!G($JVg(Eox1?CCi>(}a@Q?To)N&bMVug9qW&>30vCI22K< zQ*n!ml-fa;^)f&2-P7&X^UK~=xYXUqX6Dd8+&`WE)&sycT?D$g8;}&&RRfwoOeWl^Y*? zW&W-!H`LPq!OdIPU#Z;|TV>DW-yayO)&E#n(I_c4&~(A(fZ^0Or5uw3M$w^F`%77F zQwEe}l8TBgF;h;t7kC|7`Q-JIkz-P+Slpd?BBT3MiDC4Wv5FVS@npB?ii=r9y*`c; z(1)315lF}WCgDw?98+^+$bJ{CF79PQO+hY_uz~}Ab$nPhm}Ow4@4AFiux^;kD(yxz z_eL}7Y#R-ZTB-HZj2w7GrlB*T+7lq$tvBs&8&)H)Ab(-Bxz~cT; zfa{4IIz!YmzcBjO!7Hz`Jd0sdIy}Ac0w*S%!-?xSNOlx8G~l%Q*7bur z$<*+rc&ATW^l?iPZHZ<4lOkL3##{7z$i>61NSH%pSUb}FeXW1n=_eQ&WLG$c-s)051 zxU;VQm~|kh1g4-b(xW??n+;0^d!hIek4G%R3|>LN zWl_5X43%j74xgq*(!TeqG zB1uhfe#FGE>5n;dR`hDC&jpJTxcxo}>b{}pHk30m9DQy$Z28=u>bGAl`x}T!ABQaO zZS5ikC$S{b8rXlcbpy9-nrP~?LGJ{!HRkW2Cgk#DSMxFE&QqEt+1#gV-`$J8E%~k` z|5Yn(bP?)e>_g)eE~NLS};xhoL+LSBec_Sf&L1-g+sc*9&mtPV?Mn($c&$p~F3493+E%)aCr^cMRpX}{lK6ld{8C|?|_qtLk>#5h; zvN-SA#kkf@>er>sO>jGQ6@8tD3vNg;I;^}w1_Yvp3ipIy?y2RVRS4_2!Z?UWQ_I^M zG%GOcnu}Gk2Emc2{dFtdE3F@$4ROyHYwtAK47RG=LYC}RxIX9d25!6bS3Jtac{E(s zz2!%z{?R)<0uDlVTiAdVn#HuDv(K-N_CG?osU0$sA39}4_tdBcr^BStG zoAuq*EYFAzeJai|-;>ZW-5`z)lym6kn^`!nH^jxzeMVFQ!2-R|x5QZ2BsIpWK@O8y z8IPuALOh}@(=l?gh$uF{%LowRN=ed*kkEBu{O#eC;OLh976L`yz-Na`mjgy_eR-Cm z^y6o>P?+Xasx#vh zez#eaOK=&nL^VumZH=7pSX?4*8+FRt`XpnZ&ly^%G1!_b&mQ{sz0|t^aW+L%VrrkF z!%Zu}{n)h(GfxR?c}2xx*3i;T$}2-d4P#;O0N)Io%WmC&eC{T_Is^9}#~C2Fg?w?l zsi?k4!cdNL5f_rX(QInW>Rx5Tpk*W(eQf?Re89cvz}wWD$ZLdF{va{F!P4n2*fX|_ zKBUL-Q5Y#c`B$$DMeKI}4urZP%F6D#KI2&b?$m4jAjWX>@M_O*x5>kc=pqAP)yGBj z!bUmP_G0}#PKNfOe@St2y+L0r*5wu({I=DtzVocPDyWgx7;L@goNbY-ZQ_#`+05Ev zqx*HAfL$3qf!kXTRFUGj$NA!C71fR_+$)a7!B$gnhX3MS@^$x^yopekNTT5&ujsM# z$UV_eOGxMz`9SiZ$&5mikJFBEZQf3VP?~W|2)QQx8a5K`~^(z58DHB*MqRj|O z(=qwqYlTki#m>5uX>d67RjXb=$?97J@*B*_z4fgZm$((UOlx;q)H5mO1pQNeV!PvFUDpMzXG3{rOd;r*Ji=sb+tE|?e_w{B1&?S1Z02#gP6jZgd?UF@%j>FwX_^88%eJeqxJDEWDDe{plw~HX#;;a!naak z?ny=4?HHJq#@3uRb5zq_mwX=5ATeFV-~`8OxZxb1<(Am^K+(Q$iMDBR--@`SdVb3? zP{`-fx)iLj%v~{f!Jy1)YVs#X{}9uj+_&DH+dLDXNEoPI0$bDU%Qhe(xEFlAB6$mB zXZp0$exq4<6*E6eTb9chv>as?{t^%yP+^#fZnxWoQ9g}cU-%!%+*ZRmxdgK%NMeTz1YgCD@|6T&9+y zo@qcrjSaV>L8D`$5h;T)MO8}!BY7>swfSi;BOi#0VAmnRAJ~3xd!Ey*x!?R6D)$Ml zpnDSI7RSc>LWFE|X{|+lNNEV}A>$s|l;34Lw{iEph-Hc#>siT&6r3E|JNaXBMoMRqp>Pofzt-1x=cl#@qOPEEb;)IS}DV}1DGjGD~qzN=q3 z%t!w;Q4Nxx148!aDSXC|6`ReS0;KdQi*N?kngjNPAWvGx{=G5YXp&a@z-NpGs(VHC z##dW|*%#b6+M6#>3yXD9jlfPyvguaS1OhI`rS*1-wS-i-0ds1~ZKhIiLX7JAvFP+B z-N>D2`Ar6q++|ojjd!>15$Noctsz~o+$8aJeu+rHPrtXr=lg^WU(S9wo&GAcd1CYO z@%$I}kA=#Hx6K!z9?EB}y&;j3qsu?jw=0j@=3LJW^KjxMCfnJEYM6 ztTEB^q~Y9CKcG}K*6LOhJ4&(9A)BH97gxYdgUyTSb~6lnN#^q*s4}f77b!?lTZw7J z9p%ZAc(tXliH762K_hI^CX7ae_j{)&=;G8d(69)Ms$*KkK~#uD+eu?9POs974hGl1 zL-{&(Y1Jp0euUM+B!1{NrFD4W%E)lw+c7Yn5D8PJBO*-g|4&6Io4ES-ux=oNuO4FN zFSQ1izSMIdDQH0h$=9&N3m+t9#d_ykr=go5sd~D78l{4cA}P_8U40!{LZC^^ykMGo z*PF#_K9;R23Bz2vPCXbrWl(CgAHgdQu_XT5KpHHkv_o5PCI+qHO%QQ1b#lYX%YFNb zg$Z+qn)(=O?uo128C@0z-HKNQT7SRVrs7&RVU4t2FHTLMjLVe~{mXgQEl^d|Q%6H5 zB(2`-1;pj$<%^ROwE**WK%?3w2M)*9>N;{mod8>_Au(qYNl zJ5vxqo*Iix)Qh$rtp|tjQB-K;978Up6)&+rlzM9FM3BZaJ8T!3iTcb)UNGJ@@U+0` zaD73yUuO2F$|h`in^k(qQ9P)N9&!ExAm+1uRjVqmv#is^>W*+*luA+OHo@2~>)j1x~B_ z%RAzcY4}-!z_S>GA;S^d+%KA1N#Hm%4w!8IHMhLnEWC&0cRd-8Jff%_e7D@DJhYq0 z$rrnMmjCy~@Rw&2R{;MbTYt>H<$X}?JCNm03OjGS@`mz^5br~?HN5pO7(cS%%K-CC zcW$WynEU!=0|Ry6lUjyOegBXPP{sGI50!ql;`_$ub@<=QGbO>)J|@%auR=FGbTb%iO>Smh=DyyQ%7mKYf>U9D2F zOM+v<*)Y8K3AFA_7}_zC6~sax#dCzuNnTFKXV#AE-tN^Ne0%y%m2~0$yz>d_*-d=I zT%rN}J^r@@(=nlks7|RZ?oLs%bfPA*{g*NH#rjHmbF3RUNxRU32I zMBw%O7)@b(D7Lu0D58|wKAd)*P5yHF0F4}63{1z#E|%~u(TqiGW9OC*DKd<1HY!K zJ%>B=^ncJ{c9Y%c)KK85ZF)j_dR~gG55Vrre&~X=Y!$3|(8<;&G_voJ;hMdCj|(gt zsm>d<4b5ZO+jpe4oU3onu-B6pxg|AyE4<93mTyz1QentMN}ejHuBa4~Up5b7bu(^b zBD^|)+_^JbzkB~dmd~4lR=J0$@{{ivF>%5?WOwEE-uX59=G429Ltk>gE9&649Jyi{+=N%8`+H|DecsvKqLGmWDunbJ&7vGo(?%K~OJHs2 z?G!dl$V}~7e%#eH^S_9bJmNiUgpazJbXAdhe>WNLwP(ppd*7j;|KaL&GZ+Prtr$=* zkbBC;XW+|gYv+>I62G_(|CD{$0{!!Gacr4gv33Oq>ws*p08$wqji|zTNViJf?4e*8 zysV1}8^}O3Id(2h{d}>XD)-1Y%0IUre-p*9t>iN0T^|xE2bLd-DlY+wpz&na0~xkO z;=rni!Y!Fv6Ol>q1AbfSf4D_1wGLTwL~KDkI+)^2Wy>Xj8@%j-Yse57>;NFpV|7TT zW5oCpDlHQoBI(nUDSqE2!VWmVRao-Xn!9h48CT3p+0(zAb-RICF-Io8S+R@Ssy)2s zKzn_>Pg^Ej`A!{sPJ?I2avrp@(R%ugz0^9i*j~I=b}Pxu%1YMmI_7N5(Z^xd$)x9r zT$Y9>(7#giR-a1#{031v)^o}8HOOnJRNWcCQ^W^kech|eio>@Bi9N9CJ#>?Vm#h)} z>Gw-aRTLBbK2eP_f3?4u@~kKdZ%&Q2c-t@+E#;9C`=?jFSd{Yl?7Zk_%O!q^7T!0n zlL_QG0e$4bW?JDR`qbI67!pnp5|B`ThJyDrF4|tA;nQ>A*L)&?SAWQA(Tg(Wt}vWk zF}dzr-djQ>BSqOWP7t&ctH$w>$Qo zXwS3Doz>Gv+0hEPX_*No&95v`TnVJdzYDIBF>)I;zg~;k7kgkJ=4j!ZWrvVlywSz9&3CMecr_*0v$jLH85Mxa=j z%Qvxn2&s8;1BSST+)WCXZee=J2Jcz}z3|}&@6*w2Rd?!!zAYqUj!i?YB7{$puh8Ne z8*7VR@^nh>4)Gk#e(NM|BI4oNn6J;I64rUbm5FU0$JH`0Ph6ES#6oHypy+Zf;hK;p z$;}kTwrp=y?jeo&yBCff538rVAqwKmgLAYILf(8#v-d6I>)!U>?Q_pDJ&vt)_Z$Hg z0f4lNq2Sd8{OuLrA|@Mh=c%5HOLM->IfS5tF=#9fpu!d?{OQmbJh?0kuVyn>x6P}c zpFv1xN$bIwljg&hacze}IUAfGHvR_p^89$(;z}zo=D>LJnMe2?@wJOVn=-ux{draP zOE=t0S}riDU_p$dCRcg4O7}{(j~)!*6{GVbE5>JCs&pi*QHh~46(;nKY6fk zdYXcc^Gn^{9DU;>5T6Y@dvrc+`48WI_Wr|$6~8d#g7x|{Wm4b^Oapcb7fa8yK!Gp0 zFCC|PdlNt&@+JyyF8LXV1XDmEiQtgVF-3m&4*XSr7|b~bB_jj61< z!Vml*axNDYS0IUrFJ*_cfmnoj(ikky1^xi@@EXLkOq9osl_|8~u}!Dh0cL!9>uK9O zr+~^ji=W?rJL8IxB?t_Sd&G0>4s>COBzs<*Sdi3dD{0i(?)Z>DFwx!^6iE z-F>QFw>Ev>!KF`s9v_>0?lZ@0<|p(2nF9&$Q_bN__&*98z!AuOM}C7n;0XND1tQ$1 z!++NB4MNy8&i#k?H>AIVzv1u1uy5QMzQTmCcT301Tap>?0gt8lXUr#=IW^Qnj?*6x^$9ebw_oPecC(M$Gc6pn_Yoj)0B5qn?Z1jkFB$rtr zq9_9z#~Dt}za+#P^zUu54?6#FjyKbdA=43U^gKzZ36p-~#q5o7j8@5%SJT_11IDfgF8qE(V+>1@ zJ=Byoi%nc6D>8uFIGoOwTes`pNadk<9oP`E$!vW{L+9~KJOew;ZB2|UI?MiZzE#$5 z#Z-2n#l|4qBUG5lSsuY#u0KpOD>D%p-2s#31<_O8oaC`0|SYBcrZ zK&3T2y%KxKQ89*&6v3UK-0G{l5t&Q^>^yTH+Y3e%Spix{GRvhLXu9oHo9}EGqBYc_y6j0*)|Temrp(G*a|)cf1b%n|HZ{&`X=`G zajtGT#Se{EVqtDW13g&Y*3BQ*3yT%2=@hF7JE1;wxOm&aNzKl1TOWHnnjEcs{@DS3 zU{G__;klRGqAT{s788||ydL57cnoh8gCb^7MM#Lnyn(9ibK`Y(h4UG|q+f9egD`X0 zq!Pj%S~hfp!w_hTLht!4Q0`BCm)Z23J5$AgZJSI7!3Nw&GtS)@RHz#RtPuN=6Yj;Kfn-i7oyUpKG zKtEH3gNmz{y&-$MeAzXo$+|IkSFw%48{P#Q1)?FZR~Hi7OU z*s=aU`4SrE!u8pYZxPdz$G>z+t-cf$dMffr(+W%Sl=RM((BCh4+PB=$hjgW`<+B50 zT6KwKA@{Z>GZRaNcJ;el!j8nmbhcKX6NCl^%wKq9R?Io;8!^9~;SFxZJ@7=0yvCZV z`D7FD3Vaxp$TYn`+K=gKcwF8;Ll>XvV}F8pa7 z&YT4;PA{jQ9~HjGZ|s`?k5u@>v9GB&1s9@j`&UgMCa?-U2g5BI5U(D$=4fQ=Y9!(r zK00q-si!t&M$n}6OF`rMX;DW6>$a7^RlAM0^T*To1OI5d{iVYZ{}|lTfX$x!rA=8~ z??~ba-N4CcP9CU!601fh@W5%g1FSacEKJ>7aT-$1zzU=cV z5!)0Nyl3I)%s*NmTx@T!wf&FfIm>;SYfjFKUcPbhy?^$+O}b^j;V(zEoF|)~6+e-- z#1u*dR`D~t66`{*OP+Q9vG{j1XV^l%7ss>jngYJN%dr0~*tx{3TV<21wQ`8bwO_vO z?`2CrdwK7BylvhlpPsc_QpDa#tDVh%@qQs)zU}DU&g)fbxxRd2GB4K{dpCBA9M-6( zS$Q{S#N<3b{mM?Vt~uij%Xsd-SLy3NKI9#zty*dXH5lQLCeF`HhaeI`_7!vjSA&)WZd3u9^n^h>+d|XH-|Qk1=ztyQ)Do@lg?9` z{Bq@$zOI~x6gAJTV0Xf3tFI)i6Yr`rQh^bODuxD88ayC~mU~3j8udU|yjmFu)0=9~ zm-VRf7x5301eEOuik-aCnL!L?;?dFO>2n>|QS{wy1<;pEWUS2tS ze|~Gs_9mwz+(DsP2Xk!>9cXxcqMIJQ?{Nj(&`*)HPPC7vp_ah4yo6HfBAhFg&{g3w zgoYr`I*D{wg7VaOxayQKTQ9Gz#_$|u$_kqh0*H49q%NdKX8p6_U`U@AgN-IRmooNt z0CJe)FePyAH_$vX4-dNiCvH}dgC^&9Wzc_Db6zR~Z4mCy%f~cfv!H5MnubCU(hlUR zNlGkH$reH1<8&1_;grxoOAR=1^wAe~yg;leAs^d9M$1?AB^Zk9YovezItor?1B^54 zS;bP|Mre!0qkUn}<%i50srYeK#F^Z@4iUqS9aNCS-!#}rO5&aK;s`mZP@egKarp|j zoCfi1ow5{qtQFT!KCkmDzZoFo;tN~cSJUz{_5kWVcmOE<`o%e?ox&t_0Ww@R=m%*% z1e<(|S2)7RcN}Au(is@#VCTxkt%A6NA)qS;yeC*-BY;Z91#11tmgd9G&@`Djl^1nL zwtz~PkyXeQj=kT`Q)?n@OrL0e%zW=?e)kvi0=wI(6oki1u^sw1ud8OpH* z56`$i9U@J5E=+U(8awU}b37X|{a~=Hp_I)2uDM0IT!6mX!+<7rl;v(dH+x6H1^0yu z+yD^T@BlbTP6KPq_lD)VZ}hknfAur-TVeU|=@|0Q1^R}JP_5VZZ!+K0(m`$tCwyv> zNWOn7V|qEX+1$X|{dM2EGkfop8zphpOMPfmZR~=2z0P1n4RK(CKj0sWA(b_RV3P)f zrL6+Tb{)%W=?khOulp*JrsvPHYq3kL_*KenjyfcF|KJ{2FzL*oBzfIMm(CQc>&s~- zpdrH~voY?P#=pW|NnV_LLX3yh`x1~k8JMS>;F|?#LJ4)s`D!$q-=*id88VW1R8z%YCn{YrAsn{+uy|+fR*Bd@_W#PcXRl$=51X4>wY_ zB$r`&-MN=05H%V;0?aZ<4Ms;tTJ(tjx14 z!RjzH9v3(tie)xk+hGyJbz#diiKS&gG4Y7DSU6Ggv;`b25)A{=2pDOmzF_UV#xH#=@bYd^$?vJ)rh#40)vk zb_QD7KT0Xl;0z^uAVHDY@4fq`R_l`yQG|$%Tde?s-DE)t8V*t`2UCq82sK{qiRyY)+6^OE8&KOksFi;lSctuHmO6~ATa@j{fu{$CtIX;CPF3w8tY6z6+_lGj1K$K)FT0KSeDJA z0k*XTByD_z<|bFn?=ihT+&L~X*Q^Ua zbD4@V^-NZM>W;J!ELhdPT-;mMfaoPCa2O^y-ZVp8&v^!1g^Kb?w{ zwd!*8GDm(e6Uhwl`Xh>0T+zDqVT;;<%?)17VZEm7;lVb@_ez6Oi`HcO!r6|_{r%jTwvvpw zjl$x1b?@K<`UNSAiuVEXKtO^8hHBZZy@}G?wJW(Igz>VE&Zm%^f}tMHQ2EkJ$08eD z3gQ&>rh}{IT&SF*XN-P3+ft(4u=E7~gmxQyH57y^8&d(|Yl90m9?%?GIe4wn`+kOq z7dUi&=kP;*Hvl@t*aiw(ZjbW_iQXS)lp=(j>u>K?Y6cPkH;=g%-j(ObsaqgSs0G#N z_S5oPF9{0(i6bnmhqDTRRe?0_u`Mg<;XC0G1iVS3QA&ibv{xi(4G)!}PR4fVGvi znl2Nlp|^Sh-%6^!>r!hFKCno2sG>hiN?01Ef~qE}HBV$iR6ffHFTiPx+=xP|8@Nf3 z9QU)lXM9T)g^4MT;wP5ZQ=z8k#~ zp<~xJe{QL|WyMWiE90rb(>i$Lw1Dt3K}*CeJ)xrq$~_A1V{|TE{JOksmu7*y)=3_u z*7_46lVGJBcng(3T|X4IR;&1L=V@<0l_!r#(n2vVB*cjtQXTVY-&-ltV%sT2|&9}=#848so zJ8?H-%cMB>Pz9a&%iPc1<-UsmK*&FxtK_ zlSry7k=$zUmV7s`0=D7+azBt7p1)(O!hV=drvq*wLNT^s6YvsiCIB!}89#&&N7tVr zk((m`)dOep69IPQC^^Wr6w0Qi1_HYDUqH5l_0B@RrHs~jeD&2B$_!#ArtBDRR!={L z=@ivpB$TzEu9}C9uULttM{Ot}lnojOrE}7y8PV2)qZ@h&mQLpY>@8+!n#b^C%v3`O z!VMgG$!D0~Ef7wq;_~u$S4b+IMZ!U47(bVTV`|;m9KKuFmK_71rf(TZ$DF~a#C8vd zab=}s-N^i;pO!TShw32vhf~=#l)rZ!w9Q@%;YHpIz9W%N3sn-T?Wy;2QcsOEs8B$} zD*+>T@6$m*iC+T{?LN|c+Nj*zU`|!LBjsF6ZUCW5*^yVa^biBi5LXh6*BpUu!sdG) zV^2O!o=XOO`Vnf0t!K#4q&FMAa`U2>uE9)K9uH)fQ|{l1kR8Bd0pw9_>pgqJrkg96 zg(Y?#-FxL=Xbk7PQ*lZFPwo^RsG=jv4q7q5QGyC-RP5y1F7L?o;U5n^|_A8nQSf%5@39Vb446k@La*pHy zjcX|aFu_RfuKO{oqTzDj5)B5&HM`*n08GTuV7{FWIfww99`Xl=Kfcw#j(KP-|M$w{ z0Zt~%OOflovs70hMm1aJx+4Yi`yzl6EV0x+%-Q@Rp08{lHiin*&a8N+9*odZ{oM(+ zu|Tapg%HQS@WbK{szLd+ke+sHbfJIG1X1t*`-@9vsXA6}V% zs5Qx|`6d;R(GQ$%$26Td|CtN$dlLXMS{AYk*y7EyX#1j_GK(D9N z>TB`dy1??7K%b)1uTJxoQ7Pxc>YYBaIR%?`wgLIlsC>Zk_)885(AXt3n?F$@bPxA_ zo!5aE60+A`sBW6=J#uE|f4HE1BAq)*diySV5Jg3pCSmruBCEZd+=GEG-!YGe`4_${ z3D~xfe7}*UxG)5zn$}6Q4Ho&oU(s&BcfV}eTgfS1F1R+={Fo@bewlma9xVvGBz_t~ zt&jY}8`l&CqX+-5M>_dD`(IrVcX7C2eZJ&GisW=75F53;262=B8;6)YZY9019)C_W zp{UVCs>d}oMC$M5Mk!%@?q(q^P61kGeT|V&wFod9rQ*)hl2=yzGHoV@i{HD%^?;`z ztR&MEXFX=6UG1f>QgLhhsGQjzMu(8I=KC_t1}gBP1SjotxtmEo!SwVKXiA+EqVMTd z&+yioiLLdBhD52@{dtGF1WQo zL5E7unQ?AHk5bot=$yXiN#~yUkc0_EG`X4K_3!Q;o<+Jqhj4<*##qPB|5Op9bz``e zT5@S$osDKTu3r*J3|go=Vdpj?@Wi)IdESqk9_gxq~t4_I%~Y`ru0x99OCA<;I9 zq~Ba%pEg`_NkHpmkn(3+bLTeKeGMA#!tFPD7Y0GpkFi0!(gk)S5|^w~p9Pl_Ppu7=fWeXidD7i!OcpTTKC5sTJfvx#gV`(K#_Q3nZIG#eRA zmVydHh8M^?%(N@S5!cdPo|+0XFtQb%%|W>tOjc}7MqhHqF7DmT|JwYW275^xbGZ6b z-ain*z`bM$CKs%lhv;J!J=L?fILlxgTfis$@&6V4o`M#vu%^G~gdwo4>&^#11M+;h zYav2AFmD9&;YIjH_pN{yld>Rlbzon6a|2bZEyjyiV<7O=sDR|jk(*P^(NS{SgEgyU zJrVUGYZq_d$vxog8Fk?V;QRJiOLFf!PcC)iZ%OOCpL}$;XEDcSI7B??$91tgf8*jE zV03M);cAjSa6o!H=--3!$A>F9R0mh0v}h1R^UNM)b*$ID0v3$2=|p)t+an>v!V*g$eL?0l)us1%HhbJa32?aLMze+=yFaKS#5Il8uvk($nL06#kr7_Tq~4#3wiM#lIW&rRkn}2d~Y=B$kr14 zU8Xwj^4o_FRjb2_BDq;j=1h=>0Yn^I$tE8qn*kPNI#oaBJVeMF@8IvZpGL@|O5v4= z8x7`e;MxNimjlw?wyq+R2Kwv(0*2Bd%Khz5vw3qku2aJ2b=`+&$ZuSh+}odUaQB7p z$>TrfF1O0r3=%?bn|n0<3OOC{wt2KyV1$H@JY9~TP+0J6@^S0Mx>NOftR%JmD$Gg* zmlek~pkiq>C-Rnnw74G1U%JE|l2CJ0J$ah?Xmf8m;e!b8=6N%zJS?Zu)%9fKkzc7I z5)>rF-;%s}H@WhGXo2Wi>>kvs2sUTto?Osbsq&{Wlwwbjf;_j{1fiBzbMoZ(GX}Dz zju(;?pR^MV_YHstDEdIw%ah6qa%)ereGp?2h(1GO>B*zeDV*Pp@|9Mn)-Ha2nm*DX zU~xVD=l49NQ9q3Y1p*%>48H|E=;R51hr3?Kl}AIwp;Q7 zy=jw}C*jt3ocQYU5xE~0(9=b7YwTz#b=TD->)xo!ljbl0_Y%Ei_lQHY-QX&uucEKH{8nk!XYTD6_FL-N!!_ifSBC_wg)K| zct@|DRS@pOczk@Nh0T9Mth8<(N$ew#%`RnJLR2A3BP0TcX;Lsm9p{}uM8s^lhmbl0LVmD;$t)7Ocr&tm<4Y&3LNygw z_wcMhU}d_B1(^4(&1B@6iuwk$@e*jv#)oxtLcgAV7&=)q+&}eB46;Ake((7A=9)!< z^dS2q+jiwV%c(q?6m*&G=soBU;*Pb*a8?rxOU%#mg;4R?KEF1hqdqnzbN14$b_t-i zf4F!U7kcLM1TAiQDsBYcpP7!G=6bYPO7Q0f3Iw|y_lSnepYTbQc}r_OiyI1*cXe#Z z7uk#Bt&W&TLYXLATL&(Vjw%#F%bD#S9{M36*L?+phRmMdSh}#PqsVf?Lu9I<`1pye zotPIci;~{nUEJ+Q<8k|(eftd2iY=@s^b@a%|0os^`1r)}{9pK+2&9{sxjP&UGs6Ir z3d;jSXGDK}zEnVvUN#jQ(X_C}PxBVR3?B>bHjru#PxM0#*eBUwDV~}hl?QA+yqQf!xvP(E;;QLOZ?3UQr_Mo3 zt~LW9rmW@G3s`u)#+GiXFHT^Q2?q=SJlFUEp^IBO_x7(tAkf%WdDh?Q_s}&WZ($BJ zQ`a-(k6A_b{9a+KDS7A1ZWgx9#`SZ*RcCq!c^8WibGz`7`DKhmri3do;@9VuH?%Bk zVg3Afeh?$8>kHcSRU2kl=nrQ9?71ACY8?QK#z^l-^7^#}i*_GQ8=OAFc0b7lA1WT> z7${<70kG>|Q*SoNf_f5Y95OPa%qH{Ay7P|SAs?KE`Q_hP8nL2_n}W1iiz$WjX=jhS zz1{|w?K_TbhXfXakc*a~C3;Qiio|G)_S=il`=&QKR*^;My1jkhHEUDl;Rl#RY^y2)swSZ<)1xB~Rs*=sqoW8_Ywp)JvWOHSf%gQoU?)!4lEH@8aq!s2p z)5`|Aq#G8QQ2GBx+pT51L0Pf9K@*DD&QH-^?X$?Ohx^K<&ebn?j^-?K_yWW)^^UN2IIq){mEKs zuehS9EW+Fv-yh>J3i;_4{l{!PP|-FI(Y%4T%hk-!1{6q7jl}JakSA2M1{H9*J;FFH zP`=r>%=^dhF6d{*Y&VGA)?Z8iqwI!FqgA!{J@qtEG!yN8j8@koGeG)P1hAp!9_6ochn@m02!!^~|$#i~jY^ZV+_5+2{x^j4#s~Qr{ zmTv^}WN7(@n^Udw8;WavEB=shJ%fjn*4lcjXc`0DJZqX2JFOY8Wir7*Za8 zqH2Hini6E7h-g@b=h4LvJaIwKjIup%l4Eiv{H&SP6(j+yzLA*>#d|aM zC|tei;>mi{aA_pn3$gXKk8vx^|AOm5GOes!?dm_$$lAjMAb-Gc!)Xv3p1@~STs`n& z@rvZ>TwgZacYV6f_6F&0LtU=}L;-Bc#8S3Kf85_3I`&{I=O8$l`{nx7s@UA0WJ}#X zW`~__O#ZF@hXjRiuCu7mbw8Ha@ZD&=IXE9B0^w{<;5I|ma+-o>8 zsIiu`$r$!~L=&pYH)+nNj4^pVBb_0V1y~w7Yu1J87?$(ZU*saeiR!iP98ENrvJ0!k z>h7XSN{?YVi48Wz-!tx|Jqgk35;zRf@29pO%RO26LgU?tUFB#B;O^!4`Nn&^MYG0E z>yz$a1mU3b1{^jH3VXxDvfYp*AJwgZ&o2dF@B%lkd^Y?@R)-L+QbZct@Z9h`|6I&{ zv>s+viR&2{)^QQIm!aBj+Xo(8z@Embt_bl7FpJanf)s6@feGrgl21sf3r0%->8hZZK3fLa1j-_nIMdlm)0A6SSVW4 zM5hP5)HRpub*rsapl#cswGu;Q2VsmQ`!8e~K#0H*18xcl|Cg|3zW1k1xKWNsp9%PL$o^lmIy?hvNER%-!v3@D^YB=k zl$()pDcALm-=jZMzb!}}x*BnQTh$@2Yrmvw?k;Ci(&al?4iW$3$UI82CLbFebD6Wj zIQUf?*Z3mbQ<{!A zz`kK5D5`eqBZ4L^f*TrashoISARUx2(LDkEeB0~M^`0X%ye-*{)=_i`<(8Mpbju?` z4`n0@4m{rejYcMeOysvD&Y*eq(7cd75ioTzNA4@$IWYsYTu_?T^xcmiyHB(n)!6hm z;nCZ1d+A5K=#ejj;G2P-*gy7c{DXg0_<7Q|2Z|k>N!YXdn2nqU{w!76<)YJ>?t5V^ zlO=(rJA428AHG50Nf)_DIBx|GjOlhz*P?Tf5Zfu3;)Z4E-NYC+}XIRKfQu$d(cjHCB>xPeZ-TOINpZu z+BA=oR9uhZMw}c^SJTCUT}jk7YQT`Q+}}wG!?KO4cQid1D|Jjtx_~gHoGRs{gf{!? zG$AWyyZ@k5s-2Ud zR>vY*>gJQ2fzHh_*k$+z!W2Dg-PM{7%D2WZ;yvGFUEqC4+H{3luq(2XQe$HY)qe+6Nop7jzP+)1*_4yN>QAHnzeREcJ+Gu)u+8OH>?+0O` z+7`2qm%Cnzn#`NUu-L7q)LM#a#bRS^y0Ikfj8O}<1ri+*i)Rbn!ZBvX{I!GMnDlAU zNKTD@`$6>?r>#d_JGtD1S4$(7bt~xaeQ`{S728G(2nW5Yz6$vtRhCCG^COtZdi)1^r3YAJ@38rs?^ zC!Ox6v$sw}*~0Hj49cZ58gOSqlkZoQ?dYrj-r1x%zOO6heZK6Ed$d2la8U11t@Qkl z)BBp^|6}hNQjf!U+u5cW*LsIdq&tm6xu*CCfFX#r zb0De%C^j!yb6*SX7hAsU|<7Zt`gfL5gemr#h_Al^FzrU)^{8ThH z_%r`Ao91~XFLf0H7(sEpLGipVaJB!^`7#zR8SXvTy;tnd{?{$Go)Fd!tVf>>|6#gA zR&MnLNXMOZpEiy-7^3|77j#h{pdz>|a3BHg8dk7&TolKFCCKR=w54ANzbZ_hRb)4~ zN&vq-k{Q1C|H8#Z5b6ORGjMSTZ2&!2qt2-y2AmGD;C64B@QeP|4I;mt;osRpL^u8$W!S}FU|NGTj%0EztTnK+o{MG^f21TE!!AO%SXFbqQ*~ zKg@$`Z1E1t=TNJ`i}+{8L$Gqf#?f7_HziOX&%UW|NG>6D!62-#`Wq-MS5#&C55=@h z4F*$h9{4cPk4H_)F&BiD;3%3N?}efbUiesdaS0u-1!o`TGW_&K#Ld&kB+kByZXX8^ zW<%yz#r)Bj<8wKC`%%`bWbm_-2Oo|8B=dCDXSD8`p_3#?%&&u%Bf zyD7SR$>K~qJXbCgc?C3b7H4|vp7a5ZaljZFO?3ZyvdU4RpV_M9NDIa7E)+MN5t&av zSC>itMY8YLU&E=Z%pYN(9kiQw?qKdKHy&vHe=NhB;nI)EXo)6RPqlsc?1m0Np?~#C zN@weMmjD|Gjz=6jEp+|(Mhg`g=n}w@ZP6gc@v}JfBcPs6Xnoet(QfZ%RK~ANe4I&5 zK3>j`h=puz>Glx35^C2~b-Dx)wSg z>8Epaji!L@x7$6jAEqk&*CX4fiCy$X>hwL771J{2cvOy*;Wv}y0rlfBgxmkYajNEI zx1mKc@Ge19`WYQ2l6jLZ}DSuaLQTeyJ z7XoY8SGB_1-#wu0+qzG>jiQVmJt4W_da|uG1fr~xn@T^uEAy?4I;%p#Y<{jlb==4a z+s>>JFl09LNdWD+VPJ~++Ub*jzcSh&nugrJ?tQXk3ZXyMHT@ESY53h6{0xwBE#Fk# zhMGH&*_bG&`BoA#b9bxNGc+xFR=b(n^rTVPYeG#vMZr7A{8F%$%gxH2etPHHiKKD4 zyRE722$dDj;XsPdjiR(#vp9_vk)|BaYOUa0cE#7X)4tOFREEVR#V0f< zhgylEg&DEU<|LU)+L^Q2sGBL3;f{whuIt(bi#x0vX4uz|ZJE0|GlN>Jil7amg5C$a zxicYp_+thnpA4YG_F;z;D_8zIIFtI=X6W*f%FkUgzxSRU^;vX_6gYWrI~jwE1^qN9 zZ%Z3*Mvfw{WA`#;+rah?+mhNMp_jl*tzH(_(MoF3C%`Mr(r64&a!Z+3x2gzixI{NP z@u2$A?*fH_$Nz=`b`L?XyP-mtF{eg0?n4b}CtV5%lB6%=yYDxj4dDFi7&ji1 z3AkFgn1S(2VqI_VN7B;0AA5c@uc$6U5;)u&X~M@}y+|uS@Pp=uTE5b`dtNYoD$meR zFlCs!3P!{)6&#=W2gnn|ji#9;Pl7x*-OyK8bu!@+5^xA`-G_*LP`r!WpFC4Y`EhMv z@6`z1GIM$R-_QA`z%32$=>1(9O}1Z7SKo3K6rx${lhY{ZErK+Q5`MBEP-ZO~heSoH zL|7J|)G26pMpsnbpm_;Ol0F*@)!qxbNvjn<DL(%yDObzfu<7r0TaZ*tw@B?())VWth$r^U%4w=R}ju{)OVH@&eWfM%E5BG@tIZF91In*eyV{gHjC4O zH$8s&b-w4Q^oH=n>#`&NgbFwC0-JUnxCX6@x9$*}fmT$XdTEEt)pYYic1ZEp&b-CV zm8I4dg-HWmw{-sVm!#D?b{8sch{iwLRQTkfGH=hWCW3Bx=Ix$6+b`RR(-(M~%L&Bj z2W+e3CS-nOuRf3O61hwk;ZaMwzQ(tC^94^WG~(M877-IEY(07}D}lAh7}w;l8}awJ zbjjHT5U;Yma|%tWGi~v7&AP!k=(jQ~B?QEeOsf!{$C^f_Nf?qMExa-j_TmaG^;n~F z-vXF#<@mPtI2y(_=;H)bcs1wI$BZg?Zc<-Hn5%I0n?-n8iqpSq|-=)4V( zKIfPCzUiC#5IqY%`KiVTSydn4g1^tKV>sg$za`uV^H;&TvDr;+H!^;L{eU7Jp3{){m!OM zxto3W?pLod+LvGIgIgWwBV`Uh9+?w^+R;myTKzRH^_M4wtJczlp?4F+>WH zKcJA0XkNZi@VN`dwC12%MZ2qSl@A#)Sd=wb98W0PEAi$P1O2NG#`l=V{4u0VCs$`; z*Gv4P2d?=kC?VDJYmHJVX;m8xEt`;=Q^xZ-iO1-`qp+BJRtKU(&EIR!3RdX3I1c!q z;vsoEnsQiLq}W$~`0sfP{2EF=I0E-8lx1!Jz3{% zYsn#el8rq4tg(=sc%b8gfT5vrCV`CPois|p%DrF?+wHEjk^Xr6bc=-AO`yGqAP!t{=% z_qs@D^c9~I??{EEs-KrTIpW{CzjE#LD$fY|e!Jihyr7Vtyc*CLY4!Bn%axsxH~$_^ zndRwU+kF2l)n!xPz(#PI5E6m+ahCQ;vVEgxkt{qivV7rJQ@aXG`dgsljfBtH=90}F z5}|4^+fcCEh2l(k3~=Dth0F$hVmhw|#tNxmR>d0(A74N+9l6D}QW!mA__lo<55hfw z3kVmiY-eU&Dil&(m6ip8q?MB&bU-Y}iXp+s6DI`|jz% zU)j2I-rqXxJrnozXhYs+-*ch+YTdkgb7Q#!d2msTb}jG~(CsCPbQV#IiXP462Av*vry>|Lxw6^LWf?dAwHP2h_2nub*n3jCNH}-SyFH z)Hj`&=e?P%y#(%%U!ES}v7Q%2DcI1l9z4{-@g3llACT(VYn~hj_X?qO9Es-DyH&d- zbpV^RcW8}W{*%8Bjl65sYToEUM#3~d{9X?rLzYMcL?ki=`zz4$Vs|ezPy2IX!6P5@ z?%qrW@6Ss;q^N4O%S3eJX!71F^_D%52vU!&HbWO2q24nFTtE(b{n%2w*)ce7nay?y zJ%#m+aNvZPY~@8LoE+p-0tCyYh#IB_vmKDdHE4$9m@_aI#;78X`wY@S3`arl#fu{+ zd35<#&*u3ZY#jTn232vFG`Q%Z^*PP%CTq^MOCM+KM4YJH<%Y{;k&OthaK+K>5daYpWl7n^vmF-A*u*RUHo;&dYI2p|B|C!x#&hgKt#AZ@S^b>)(> z4hP(-b02kJ_43r204k~hjb7B1BQ(f}f!PR9cQ~*~48N%a=};wU!`=deeJ%U1Q)?|j z^gqZ^>s#qf5fUG_Ip7yXmILX@^s=A#b#vehm@%j#7W(sY%66I%TW#@vww+UTwqq%B zKb|!t7%X5u?4RK1OPLOx8?y2mF`m=Jd|Rd1b~(-OPJ+Jj(7MyyWY9O{mg~l37L>9* zVv?ZTD8HyL`5hV%85q0)^ps|@;>eG;o+rJcYbv{jI*W$@iU?deS2zRfMFmF$zSxx0 z?#<>$zJlwK`+4b&0MQ&J=iA_=Y+FFh|{E3PWZSHb%Dybr0|npH!zKco^bbAhwtT*kSLtQ0RbVzt0d(7G%ZcBBc9VGrXyA`WaQWm3JirO0>_>N?7~KW7SPceOd5y+@B0Zoc}W_VJ86cmI;4H-rT1Y;}CvQ#M`sQ&MME zZ!H9+9n7E?m3HO=r}2FSI?G5Xs97CUv{7c<%wk`P|3bR zdJ;>WSF;Rh1XO+&iys<_J`}bX+t!Xeor`4E!maPteXrs8G7Q|`k)ty;L@B#|^ug_K==W~8I z)~I~M+hc+by3Ml+`fvTD-@-}XqMPd76FE{A5qFIrnc)`i%V&M9qFiw^r_sqUwL zCMqD&xG_)xEm zQL3m7J3oLYXyf;anT@XoLmILph;Bho|GHz^6xcpBXc6Xpo5xyycY ztooqJ)=JC+3@|_y0z;lp<1|c~BryV%$(+(M)sC)1u#ZY~3tRUCVD}K<*ja=#!P;&` zAg^b8JcShH7>~nc!y8#_>uSqW$E8p#tXyI!V*GRaRASc5i;KP=x0lfMoZ*k`C6`%k zW2ZHpJi7QsuSl>zS~T+n{R|6CArjV>^+8#^C7mr1zt$8OlfIz2M-`e{Ky3@E5RIN4 ziBFt0Je(37khgobCW;=Pa5K5D$PQu9sVCNc*u$ac@3w}}>1n*A@th{6eAZY6in7EC z4v!bTyel(#laDBL>>sAn6Rh!Fs`V|?=?dS`5JkDzmJ@NSnkuib&bcG0;%BHOhr{Y0^?WZm z@@=fP*3L_6>^Ym%%grwGe4!vXpK8aSrP1g*7#TzTIlfWoEoQr;+m87qUStgx!GX$2KP*!mI9;Vj8I1Uy@A0 z1b|my9I%?nKbXzyi4`!j!@k)ENsLJwFbyJ}#=#Gpk~88nq0K# z(s_^P!V|HEa``GY^3{$x-+*U_z<-X$;JmO9t_*v~R zfJ7W&t%$NM(U&-O+aC1Va{4o|sfBb8*yiXhNCvUd8y*+oxekc}F@*_*+QN+tz%xi` zT<2R_L$6a9YM6p(Vrh15XsYFWgNoW1tvGNn3QL&Uwb=4cDEm;3gDo!n}J-E>JG!(BFsA!{f0+`V(ofqkNY78lV#WdnCEL0^8}aMTAS&Nr-hLjXsr@neK6 zS#jJJ$iBvM`k-9&Fd6WiMyI`OA3=cyA?n%C>DT&tz#rH zn-{Va3uIEyFp_&J&<%{}Mlf=V=a#|8IrlAvd$GsJ2ij9fw$Oy3f@6}hICMtP3ulvpbb9x%;0$U>U($hMr1jcJJ@K@lqqH3T;>*)Ynkic=HK2_FCq*yPl)qqNVVl%{AnMf^A8*{`R$$A86mL zw^^*QHinUv-Ox>vXJz(*f$Oj|x4$f!Awpnss%zZnNM;y!6>C{`ZE_;NtS*^`iY-i< z)>2!GTC^5s7HSFUS4Es~*Za_k*tpSwIXD{qvj4O#I?@Rto7?P;~0f zMkK0J2G-9O;q+8l@QTy4nxi>yu5O9@dcN3^B#PC1D0pGY7d6iRWhC5PE1B<3fS?$+ z-0%68j7*%e5=4rdHyr>zPD;}RDFtf&tZi`MGDVl$190%^8`!wZU`>d8>OSyqI4b3i z=uw(Yy(d69;#l(9y|PCXiU8upiqmfc@F5o>sO~>GmW*DbTtolWcF4kz*h_5xnrki~ zubDipan1vls+_`iIUwpU;IsHP{9x*IIgLuBk6X@+w<5r z4`TW>N&s6v2qDOrl`oCFDUWl}`ars5D;+l)RR*F*GAhp)0CpHiGg#fJBe9lH&*_kO zQ?5`~5ciGBZ4&~}AU_kgdW9_MKukq~MD58Ei6l(N@n zdrVzaYs&#pUYjDwP3IJ^q#x>8X762&0#3c47&bZ+L?`D05_ku6lAt=ub4h+zy#AAD ztYn1-MNWdC}M8T-~~2wsNVb1b&Z-e;J_Z-O7G0r^4%iymVoksWR5;z z`I94)hID9ovUB_if)P1lb*FcF7>SqVG^X_7caF}fS1K#p_riDz88v`i_tEQ^U5^g&QM zS8dKyVh@BLFhC>p<%Ly(Ok_!<2gSWt2os5iYAOKdTMaR@0D(uCU|m|h^#(pgp+7=F z2OyV&Ns0?}Mb@MF&7Nm%{qAjbM8UnI@p0gN-549(|FdwW&iIP<-A{*n990)5v!8!# z*d!In0uDP&RA0BgRJ~zST3p|Qh52*I_q*@VsG6Fl66eT|@sBRXJ1_s@XcGS&V^LkL zlL}LmIqDkcyzfXqK3*caQg2H+++Tq1%JFe$()dL zTm~J^F@Es}zk3!u^uH`v56hl1`AxMaXVm`)_pD;ouz?cn30cK)!?CP%&)=o6+y%#WP|7x>4v60@O(kL9VUom7tfR(G8e9>5$g~wR&>Ar_j{@{`;<7qrRr=1O!aMoE;Np7kjE6bKXy=8fjcZWoLuMaV{uaK&!hyIKZsT5C z_OD`B7_gfvgu}XN#gJSK4!f0+<36~#6&D*VMvLkJD~zE@U$2|omT`W1SCT58TCS{X z>^(7dH~GunPghkdoAbrZ+q8;lLk#edHZS9^mu0e}@AQPzrF-`tc-r;LK_}I}_veuq z(6M&J$|63O(B{$ogaA-PWrrM{$;P*mW)Seb_1 z54|VJ=;|G=TPch(LP!G$!&8r1pZSKPkSnyI1AWKHem=O>yB*kzt5*GUvSrgV%P^g3 z+)HDqyYp71u5fGdI|}pe-TjMB?u+Iqs;+zKDRuik_8HYDiCQg&!QP|mLlRqUQ;mp= zwlP&%ql&CF-OZClC|zg*pwqF^i@#ChPIhSKY%kZ@8tm^nzm7lwl~w@U8F85sr!2#X z#Y-r~AmW2q_k(D`X6e!XPbBZ3Y&r(P-25b|T52i|7y>*EE~-0AOioQH_WG$Y8n*IA z6i3NIcSl(@JV#)b!^^{@ePLp+Y{v36b~1mzZzsu{pZex44d6xvh*4AB;_6O{9{gc zF|qM>31=eK_UO0cHhn+ab@NGmgvZ0q6 zl-gs)pVx}cJu5mH^SzKmtK=0A(lY?d3(@;bMF|sRt{_UL%u5v)e)jJ3)tR7x+>L;P z7_L9CGCt2jB~07N915U&LKYGod|vYJL%!gD;W8VSqw{*dU~mWqqp2g5zbU7|LV&*ymqp504?AfHx<5a^e&DMzq!jcZv;7 zt=s<4#`^GbDS(F7S5@zP1e+A81FCCLoNr?DPn20|S7(wt6Ql!tW#`6-)^^eiWn7$v zP^wLmm+61<4yTBX92P5w8j1Aqb}xeL?Xzosk)F-TBTRdGS972XjU5szZgs!6)uE`v zAj&!5$@A=(+HoW{)9UwA@e-$wkPcLk_C?x?&QtFjjRaE?igVP68zy7lUO&mJwqqD> zN+s-YowJDi8lVM8(&2*}cMs5}IujtdFwc90s#K_w&g_Gj1&MoS(a$ibn^}EoV0MSR zYiutHddf%%g0GBdI;*6?00#K>bU@mF7XtqIbHiSn;CBla_3rsQ@L0i>PowH5KduOt zVzMJn718pTvmXk|CbMbbdm_MV5cVnb`F>DTdK_+)GVd)NmWOi&yyeYzk8C!KR98Bi z>~>+jAXp`(Vw@X<9OFx)vjtS?@kRPeIo--uJLtZQYfvg#M)llkMgZ%)K%=~kNGe3|UcyW_Py($l)a_0$had#L^p>^Es^ zY-HkAobTm+E?_)wk2VSc16~F?boQC^4-QBUf7T#SI*&XHaqOt)>0|&WeTdxaC}|Hc zQdA8>sJ{0B51^2w?hm$ZfGDDie->V$Ki33Uzx>~ex3z<@BFS9q#@o}AkBdSZvJ12? zib{WieT$C6lbN%EF3(%m^VEED+7hXh4-f`5sh_}|b=x}`6%OgXHp5PYOw)L01tNR6 z;ARG4?W3MrJo{qQuhlZ1+T(H9=fYL5vW-5N;?>l_sCc|Lu{LYRFJ3;aD+;u6!UyN`h&COSWea&DF?s|EkzS__RdzD7znV8UmXIG$ApCf ztOuiEpErJFbDL}O2S>_ajplo<U^fpSFH4XaZn#6Pw~T=y#autSe)Yf~MT zCEegEStIW80f{2F&rzSH9sFP-Ga9;vD{7w53JLygHME;#Bw@BujgQ+5BOiH0dRDu& zFSf}Ssl2`Y@G>t02e%j!#<|M{)K@>Z=Qu9mF{MD(n5V-M1@~cxs;;OdJ<%tjJXI1_nxNcY~|?BQf)9 z8l+%$E^pp!gT}$9$c|mR?$uatu&B(0~H`K8ozl==FgIzUHr) z|Mc6LXYE|@&jOPdL$Rtn#wZT7HjwwPZM-WAO>}y1=8jxA{)3u_4LPs3`lM&mdqw;K zQK0;cTXZMcM3oE(lP+tS1UEp>jth;i;dK(ErR+pY+$f$I`l}Yu%h?@3BP|*v86RUw z)3=!VKJ$Ej1zv`00tmQw=a-a{*WFE1P8cHN6fp>h>mPY3<}}`(%ZMn`Vd(1!Wu~*8 zXvY_!p5Jbzr11KZP3D&cWb!hz0VoC{S#(4^cEY6ENdYp_W4i({yiHBi-n6B>D^Vm+ z^Nzdr8eC>`l$K4bQ1VHTQV8<9A^{n?mjOH)K#~XQ>Wt|&@QRg5WAd`sP#(yn% zP$yc`z490!-a!QN_VAlI<3l>r=t82kCnwrOVdv-lbeqZtd}n;UE5YDfW46N)s@E?c z{Q@WJD(d=dYT-JVIy*|Khj%$oODt)btG{$N<2T|w=0pXv-rB5kQDCz(0+-EQ@x$ZC ze76Hw<)i;NOs8cXb~mqsa?NGE>GA+HC7}G|V32%{-yOy2maKrA>m6(YdQByCbub}~ zRdu!*vqD)aj^}*iq#VUXJh4}n-k)>?I=wECUQr9OB{X>t#n<136PQ8rX(V;P2g7se zeJMM%01F}ZwxcKaugxepq7XURo-hjMSkA32OQ zQLzpa$9ami3fK9%01Q_sz{jgqD~*YfNr*u~lCU8O9vgjtrNm;_tcx`ztxPLuI=eV^ zA*P}s(003yb<7s1?s~+2RK_1G^}&6a7$-6>oO=Jxv0aq3ZC;NuN*?}|d?73ozjl4& z&#_K_d~67&qM0@aKN_R$K6u&ozc$l5|8&N)0@X5TZHVMP&U=r(UO$~8mC8!Jj`9yX z1!QmU=OuRRZqtt6maE1Am7;22H$Xt<22f$r02EHwr39xxtCNmvlabbsXEW6u1UO`Py*D}efr`h3!?_u#(Aa-ZI2KxPNxBX_CN`n~m^w2ek zO?-KCe0{L-az4?~;ujSMJWAp@SR3$(ijzwve!DnIZlra8Bu5cz>)XXC6yoz(6^-(T zuBk&_2;Py+;?Q%0kFCIl_1p}wX;$dew$wBzE+O4p#?!~3%Ry3dQ)PLkz3o~u3+w3x z5Bt90ZYto4=X+K6ib?#w`oT}?&(Y$6*#%q>!vR3~2{xZ(8GT4+#SWtbr@ zlq^HnWQNb?$Eq9j=^%Dhzk5q@$=E~&Q58JD=mt%>5ERcYjw!y0BxRY!E#AhWJ6t*B z0W#@8EH;6V#P}xElto~2;%OE&-hngky~$G!7$s%;RsV{99G&PBDBlmPBcE1+7H zZDt>)4-+?|<~pag&02Llmj!l8o?4){1TWcNqAn~k-iRoHay1efCGSQMr+E>fwjN9? zWHWl#HOk+=}2uBd{?A$r-`O=VvgDHnc&R!YZxI` z9oRa3aPeyd&h%mHV&|K=~&`MGlYTAFOPV z7PMpF$m;*uO&jQSCovjCsF&>@C6nq#IdfZAaZi*7M6Lnyo46?}sa!AiF*zYhDyP0g z?BlNW(Wl(>K}GbRpgSDS?+Ys%C=te}H4)1dMq|XFplW0&c^Ue0n)p1r?=dH-kd%qg z3~_ZrgBaD>XAN;aRj`~Cig3q5+1+P|C}qPRomwLfQ*h6rKvl^YH@Cla%RDy$1sv4V zmGLqHH3Q|_$(nng8V=W_<3<@gkfj*9B&L?9|CuSB>D4T=l}(BkHB^y zXxNIZdqVBS+?Vi&_M@JcL|=B7ex#%QP4_U|v{m;4FjoXtO3#JpJryhqLyI-|8h zR=?G=sK%H38K1{MQaEHlP-z<50qg3eA4FDm3@uBmIkBI2I`t9_QIo^GZL#DLYl?a{ zs{^!?^6aYTRF(`d=A;}YNFo>+HAe zi%&M}qW-u6eY5h5YbPf^j|FdGub!NmS9^Q`xUsJ?`_m(pQUbk|uNl-mhopBo2YwO| zX_!(PuZ%1glwOkdrVnoHlx2h!{{+&}NJ-^GbbmSp^QcA5gC{L|0a+q6hO|Mq$(yQr ztpHW)NuMG#D4Cv?nGyXmma27#4uLXw!%$s;3{2x+n}zfSCeZKfJhY@xROTmpfLM!* zht?YzoGJ6~Sx83RM8L7*{V82ocp)HU zEH&&z3alawJV2uDI#0C0P<0Lg=aa&!t-h%89*qx1UbDbI=N)4xyGh!`TmFgR^cR3C z+I}WSbA#ob+1_uQk;hofQC{R_rp?^={?`8z+XuSCk>~(v@XlnGz5aoPjyNi@YPyPF zT|1jlMkWpLbuCxsTj=JJdwFsze{^73wNbl0wtfA2ZINZauB23pg}ji)O^lndTBR^} z`Kza+rn9PRt0hCM5V7vB4|aUk{NBJ{wfmGo3eMVfvRM_=NEAZ}~Zy zkuSwbcKc{w%k3I~o>(|*hi$$)`A!}IP!i6j9O=K#yLBS$6AECQ zBxqpi>!+@#xhluxA+m6u37LVS!bem+n$`N54K9O4jslPOXHm1XEe7}W6nz)QBL(yXL7V~|JkpK&5$w+TY9s>8_|&l z>fRuH$!ZQs_AG;acgF$NbIomc(MPA&UEaz0i;sg}vi>xxxaMQzJP>Q`J95oeGsr8r z?iX}!?;I$U!pB57x=YqnK#8qwXsE-YkOyEZ|N zGEt)#1+iU4XmC6S3ECXAi7E%(yDu>Gh#=J4%m=6ql`f@YqfrkEtm>=&1>DS>GULjj ztLb!@6b?t$d&>yg>MPa)k6WRWTv%ohaInWnL0(z!jIdI0m#_`rbndgUT^VWcNg8`i z_U#(kHV`^Lwtp|=x4{+bASY}Y{30H<1v)p19aw_)N_^Fz+ABR{pxY}iCKth-oxTJj)=wd z{4L=D3=x-iIzocG*F-QF&n&p4ux7l4G z7^ME}$FVenYmCjQij|xpjh{^hJ6+Exil8}J1AAz(mT84p+UC{e??XZ1MYA+zs;%gz z57R<7Ra{j1>h@-r380A9ANPJ5|4dAvh#K~z2^72V#V>7pcX<+YG+x3@-@u^o{|sAW0?nOD}=8?Y!bWWgMj>H1)Hy-))nYPUi-CQx;`85M7Z-7iIX@0NM&HtGT-`<(pv!e2 z7YyB8?Nws^RQRJamm#9%kEf(TdOc6 zxC59|`~o=HMWhdo7U`2>BO~P;s-v$v86;1-+v=WfsY?~jV#`PDdZ9^=j=C<8$4NdZSkHLeH^d?7txsN4Q*|$PD8B9BMlz;@j#(leMnoR@ z=1jn#lb!pzc|9$i>N4BK$3<`R3W0Ch8do)blQxoU50n)0iK^7#AmKR7T0oIi{%~&0 zn={`Sj5*VA$&U|?u5NjspfEG@oxsH>$6nKi4@50CGv2JcaMKO>V=U7q7WVk4iLt6RFD%lNznV!w*O{MpEr^hFkLQN-PsnmxRo4m9LVOtnDBAw;JDAW20EuteT(mutMTcnV1`V&!9MgZt73&Jd>UUX-z{O&lGTGT7~&HBnYqJf54U z2qZ=9T7jKYq9lhdC_+iC8BL#cqf4+QGIGGo<=m9FL-iH9IvqDBvEm1$Cax=8<6L7> z*&JJp#cw}0{896m>{L(dLDgz*n>)}%O9XvrLGGmNg;$;Jxw}nGsot2E(?-9!W=;ws zC7XcAjbZqzGo>bmI8#dF1s$n{P2{GJ%N_-gN>0de@%wz=# z`GxfSs^dTWF1%R)cJKz?kqQuI+=`W_K}&}wGX1!(LpKB3hlaIlz^WNmvc{-JeM_YB zij3$h6OP$-vZk9(E9>u(yF-)(pU7MtdxJPssDmuYq4{JbD%;ZIlOp8+>ovRIN@+4r z8%doKSZsMO`;+-O-xhaBt(7Vs7`QhGUL={vV4Q zbZQ`4yML&w;Eg;$S3#hk@9f9LtasuA+UXu)$LxAUJDg^TWR9Q#iu=U6)g7Nb@>M1A2>U?ZdsH2z;z0FmfV*&HM(i9wc%fdke&Z0kBza!=C#?b{FFt)4a2!aYS z#WA6XnDck%v(N$_RR$M_Xo|Cei*t*9{he#;F0A@=+fTDrI|Tg}xaa$g_2MrVoZiY| zTnXfvbl2)WvTX-fA5X`;Bx_itcee4sz>1ZdR>kH52?d3&T_+rF+CVqf_RSV^yhLjw zRox7^*~Dns*inyrd8updaQBv0kn9*sb%+E|vrKC)NQ-}3P$S~bdus6p@oX$S-)=$ zwQXoCH=5AVNLEakjD?b0=NZM~yzsS-@SkEm$P>&=yQxCAu`4)dL67e+Q@^h(kUntX zj#E2ou7T z7Nd4Pz)O&ono~;)*(r}}hY)oKjIi=c-6sZBv9a=i*hunh5G}n*PnJDp259IJY5c@O z$Kh8T5vOv+)1qLW6~%}!FFV816Al52?>wUTVa-_3M5kTzwS+&N_WfZhUS_hhlA4zC zE5D9L4boT>0dijPzxpLRzx%Yuf=|ag`b}yWFB@^|g6Nc2BR`Nw!^bfIDzjeZb=bOG zETTJFr3_>v80Q*&j2^_6J#v_&1CHIp2)Da65DL+6#oqT@=|eTxJ2>pMUozoT`cA#* zKW3~tc2~uJ=wGoN8fjJo)Y{?L)EB73OhJN>Weel6giCed>Cti!PYsS^MNlQNHe81Q zKPPTCZql;hFwKwdu8)CkqjEUTnU^M7mmFkxS}CRkxpX|bQCQJTc7?|<%fC{qTIV-6 zegQF%N7NO>ed5jsTbT~gBwkIZFV@^@y6Y7gudQk8&kd{Hv-s-YDbnsP;WW4Pm;T9> zw}ZPT$*jdPWA8qYJI#4?>cbZ<}vr%9X2fXNWPe%;B zFZyOWlsNweKw25c7aE7@c^( zou3gnSU*9`ZT+uHYsmg&sj(!iwyY#;MF^{D?6JyK{F|L%V9egf{|wpmJ2+hJXO~#b2?oyN z;_VN~Irf@H5nApQAeVJ$z)0ZjHC^!%lC^&#{vkaz(iEMy+?N?%o_XOBYcDTv4Lg^! z$+(XenPjpTK(FIjGcsd9(UzYlDZ>6;>%$yHGMPvW;i^NsTw@oad0n0}E7qu|`~w$) z^2U0E!8`xWg6|hwZH8b|ZAnkg=*9;OtG3s5Lqm37n#X2g{HDZ5_dPELI>dt3R|%{{bAbv ztMt+0;8`M=-mc}a+4ugfD|8~G(?0O_ViuL+m*eB$k!>@3pwa0w z2CUsV4tun-9o8|;uLce)b_xUMyI-qv3}V%! zW1O}5&hn!2<;O%}p#6V&{8{iNhZU5dYT_mNV*5GT9hRX|OltFZMJmneliB1%6&rrP z>sRU*e-w41m;c_O3HagI^fC9=_qoWG3~}51 zFJJ;`?RL%*H;0t=Y^*RS>R>=k>^!cV9R`n-=ZI29rL&#v(a;zvV2a5Rr0)7zOSj6` z{`ysEQaZI;;XiCK>L%p}v(8x#j!V!*b({+#8U6V#X*m$q$w`z4SDQ*Zv& z9riAOYN&!^9+$rnbb^3pDp4|PM(#j+HREAuF&$w8yGv-8#xK2f%>aCLK$hMHDqa5K z+YB~17PNodxhI$De3SY0+yg>X75Unt()TEyco63WyXv8`{?ay;Nz@STRlQP0tKt? z*wh;pX;J$80H2|KQCA~R9N%fx!5Ckd-(9HnH$6xZ<(J{clJE8^N-prrc$*a&T&oJ9 zDdj_|Ft@Vgyn}hW>bUXGD;6#)(_?R#8+19-9wW$qQiVe|+NIEsgsGvDrF=zJ&Ich{ zPi(V4Vx^1_z*5?!7|+2_jN)LSm|g|)(D(+o{LnCIe}XyU)1UG!Sw0M2shmfwjI=de z!p|IgbfJn|N$grD6&Ly5L^O}QU{o~&zNC8doqfVG^&Mt=WYXFVE8xc(h@{Z;;v0PXlD@cv=%DDKd_BTkDZN4|Jcr{lb{Twmp- zj2yAXeb7Z~nSL|6S%yw#PzKl61iT^k32)_L5kWDrRtuG0nGzOD!y@7dpn63yATeo% z>*<2FtsDAGacv-!ze$JkC3w**7zP@Err`=pT9MP%HESmKCqs%(T~t)ZP6o<+jNIrc zMmr0-mI)v!dsXqdSbMH0=IGeDy!Tf9xVNnS1FJqUXt$4@tN*puDEkdEeo75~!aUs4B}Q@@z=oRRY&k{2c$d zgp@YZcP~q`g$*g4L9tcfglGgQe$Hv2FhTXbDk{Ey&S+c`w@Br{D)D!!!%tw1GX$c< zp8J~06f3ZcmVNzIeU&f9t+|l*Gb#J!;=ym`r8E9QHFLH8=CPn9V^M(7K_}wioH)Po zfGcCbzkln)th&FsG7DW=5r&gJZ79dxUhW6ueKw>| zTq{R1rBxxp1B5Kj7@!W7a6O3Rp1t&S2N)QkKk{1kW3?7)5|3W+h|WdqlGzG!ES=%0 zU?e&OT)@VLn*~x{=JoqZp2!?EmUlHA9oNgPmM)J+_fD1hOq~9yr}JFZqif*@Y@d14 zC?R_@(Qbhstnh6B=`URVgs$dFwO#Hb73VmT&nT{p!P))~qHy-xr+3H0W&@zAnKAX8 zKViH^TwshyWI32=ApQ&+@}?X!mFNNp?tJFT8rjQ^nw+=~@J-uP{G~SD%id#rykbn( zHJQnM6Pi10wkriVbBVVqM(Pxz7`I-~Z(3fBkRKVIO&8fe}+UlroL z>w;@fr`Vb!3Tcug2hEo4u0i#K!?8XLM$bSnB9A)U)U3f7*-tVnvA5-Iq~=CQ$b5D> zkUs)Rzp=uTvE5b%c>S3t0EWjX?9Ts1`T3&?N=N(p&bi}%-w_eJ#)5BVQ*Q<|)%qRq zxeEb72E~ZgIyH%7LmTJujvo|eZnW9lR~aNhxHk6wvGQoRq{Xhpcz3vw*nB^hv>?n4 z)0J@6rk9{RX;)I*UfP?}mR!Hh;j8o^D8e|P#jG_Q+B61g=i+B^b)y9LGV=8FWlgoy zW;vuP)sBp)g|Qzhy@^MZj5C*yDM&QD3R^mgAfyp^mfOBNxGq95;n25h?CakhM}G)E zsCi~WO$j#_m^_xmqm+III5xTe%JYQJg0UxJHKfo!6v;(EaU1LEN|owi>_{zqxPL?b z{)0E^W)pxEoLHZ{A{TeG{;v5$Px=K!{@6}{#{JG~eNflL#202%3>WsqgD}Hd{W6=K z$@A~octacC`EyG~f_l3!FryIHlWLxFDCI1d+jML_67O%drs&Oj9s$QS#o&ZUI0NDG zZ(em&8{@@(`#i&lv?>H%G+j@I;mBzmU8}ZbfH0iRccci^LL6s=5_0m<;pgLn1Gs{B z+beYO`h>p0!8^ZW!`9|hY);tEUk(2p)IRcXgsyaF6`hWrjy5iDiUV?d6G@s?vlh%x zXCsd?bJRKG48!Hm=mQ2ACc)?fq;UkUVtG)k*!>&(`nTZqfAZUdG~=n@{i%&!=1l5p z`s*k3bY!RZFIs1dCfTxl!T*I=Td|0oV46exx<%=Oq8o@R`fylOt)PL$=a#KQ<^XGl$Y1PE zTkxfL`diz&FAVA*|Dl0r(7?o7uZd5cdO z#Iqs1vn9L^vr=`ls@IT`u*94$ycUh8Ceix{ZK-lCAJ_>bU90w7%RA2T3GB~odt?7|3l=83)cqYzgJ}El z;<9hIkNr~9p?4X*`{~Xk=c>wiC*7PFEU9A{Hje^9N(}$ok^>kW5JUS781MP&{$Mgl zPwJ|{p76sn1Qw)dfB0B-Vc|$JI0veKgk$mncz8YNK0~|bF4A#)ZQmaJy~tf;{5)&f zY3*q((dRkod|cgBqArAUCi#2 zS7r?x`w2!;Y2bq|j$qQFM3Z?r)u$%3@QJBX5z27czE(TfM?KzAV)kBas{_q=V7Z7j z5>RN3aIHU2frl&=QeRR^PwUzjip@#+L&#KCSp%>O=6*JJ&Pmp?FCBkb|I&3sTTwS!#A#$iY&Ltq5Kb5Vz2B4m`neVx@zMhJ3s}l zU%>6&eHVzC|BDY7ty3RgtAL9ZoWMP+6|3d6tuFe@-&o^D#=UP`_20L`mkE=)Xc}fA zf5^bNJ0>y?d@y42!ZQm!aVd%hnKSGCPsau%T;1xACc7y}Afu-?v8y#0!!=MZeh|iG zmi$;jD|$o?*BffAueTKnjXPURnF?%l-P-!1s9gK-u%Cq1hAKwo+EayyjZD}`6s!@- z{`4>y&T{K305wV0nAOqLB-GNtn@01r&4&ge2lxoYm*DB zYF^Bvx`SbEo_bm{+{z1|V}RHJMX1An!G0>d&|A0uU7eTeE!m4vg>~?rsqb`7+wujG z=H>QGm-(FTNnmVk>^m8cmwK7-lg}IYZrM&sntT{;MOP|=+DLz_tGiVKNPD#T&1fWd zp5Vl42aKX2tClGvztkCONLQVJdm(`NFmQ93SGNun$(Dr_ zto+@c;f$7yX3y>Qnf~DBeY?2S+Lv?0U-vbiJ80hBK5>{oCLJk`(8Du*#*Lu#Qs4|8`mSCX5N{Y+jNQVf3`-aY`bbehxgSr5Za)LkW$uReb~8oq&V zcWr})Zc~958&-;=79~BF@r%BVS+y*#{6`DTQM(9zRAslEOF@e9PUE_=t6{d{ZzfNQ z@=94VP3&s%tMs;pKlvXUlm$Bf>2P})cp@rqVf}x9-l6?4dLw7RFt}EG(46 zH~O|u0B$#!WS>$|!DMv0EBjXMlNe2~Y}%1a>oyy{X=Q(QcvZ+5WZ)x?GuOmL_DjKm zIe^sMI>dN5%De7>q``t~UC*gloMZi6dKaY#lBAOP%$<@?a|$`${u^O#dX1TvEGe~@ zFvOfYv0?17D;WkpJ>gF7&;=u_!Ps8ny4c7_v=fB2Z2E3^R7*7=ee~T%j*jHacK=_F z2DT!k^d5q-gC^?{s572FnMf)O6xay9dJ^q4Gn-Xts3L$Lna1yW_WD(}n9CVh`K@K_ z%|}Z|@BVcD*M%h)h=v4$v+G0ps4RGM2EDtRYM17!95&SIaK-IiRJ|g?v!C!PJ+$QN z(<}dJs}PV01^WO#_VTNepGyywauw7;8VP{gRCVp9hEMN$`1I2Mtu2$R_b)Q(_BVr9 z2jk!SOh1{lfZlGNep9Y&?@BqDEM(dRJ4!u&*3~E8S7NQk=a#zS<>|8{OT=dsogUf*9OnXsIzBWH9eWNMfpBM+T6a@5T}c^ z*X?nNGZhCmZaMqerRT<{bo-?qJ7B7TAv6BLS3Zo2Dmfy@*$KH@crJ{ghWjImzek*b zuY}?-LAmznHA zb4rY!;KfW}RmGgW86AdqEe1`u^^F3bo`UQCYquo{^x^yWbaf$WN6RqK+Bhj$ zAb}w5r?R0-98_g!+JJdrvVcDCf?6tSZIfGpI!+U>$K-0o`$Oy zej2#D@PMbS-NmnL#qGWYMD6Gw^lxeEF$Zw_LaKY9`atq|4)$Q~t!T$_Yp)@sOo@Mg zmj548nb4;vp${2BbhY5wNZC?%R_N+{>0 zj%^X1I6VvUGZYmcf4|3TZA83(hD9KX1~ck?EUs^LX*OoqHb_lm775EI9lFT z9u}Rn*~;t7xt^r%tZdl?8qN+L=cibsfH^E$qqXr_2}_`90wx z#jtAK>-+JsMC_{nQvN)~`IDM9Hu1A~%xU|oh#+IJzE0p_m<>4@WMF4N722PzvR$KE zm`VP<*47fmy}L|2PS1PLbu4cCgRT>CKbVe1%Ic2u)7O0~%3N{2-n$})-xI@CTumNx z>dX9Q>6z8x@n^p|VK$%ho3?Vx^E2V+rWLH~^m?<6HvR4Fqz>n|C^L)7naGVx1LelZ?(Y3+gN@ zhlK7btPp}nTvHeLcMW=G7fu4~ms;!h1juD-bx5JUjC0B^UJ%WPttsNP+dhSeN+4xAhUmsH zIr7Z#;N}GS{l6co-Mn+Pe-iF;!pVcS6^7q zB@k}HgcAO|#&e?KjwQB?x~S{oCoOQ1mr;HDhAGom?cC37qE!dBJRdl7D?Z75CzNTl zg5_(&aU?(u&o>=V?VYct1*a&M*kSmeb8PaC_vdNJ(=ri&5zPBjZ4dC1p-LZ%3QT|- zndcqjcK`uIjY_CX2jR@NJemUwVE{e#Ss|5#ZCpq?!YzbiuJ9~C*DuDjQcIho^oq#ejt^S$!9Yyf^pN` zuEi4}6ItwcTDVEUl9SqapVF0qPde;dm`cBlSfDyl480MsIjM@4Q_UV%+keh=M+8R% z2U+nn#^4Ty&eHCcrsp(vUF@I7D5Oy=4%@xH%^!TH6Qf9ox5mpFZs>@awWFjjd#0{R zqCo>l;rbOjG4E1O^y<~Mp{@`-H^WMtiBgwW0loLhV(FzNk@gJWSw(|8_&s1JmjEEa zjRHjPvI-;bLi7sk0no>|I;2@{@!s@UbG7e@6j^mFY9U-;G6UX$@+(*Xz&J z`9gUr{lC<+QbHu8EEb?U)mp6Tm&d+ref-uZJM~ZZAw1K;Sj5Z}RSMRGn!B?i0Lpyt&!ID%N zq)vEE5`_)^x&YkTf2rBmWhN@@`RURO^Ikx`NYX+E(g~z47TRx)N=~vrd+;W3;gUrJCT` zz?u3`yNW}YNJ*)~Xn+ggIu9c_Hy+L234KmhCTs^Vn<-PSgfwJC+BE*%R=_%~IwE5)on&n)$d{o~wSk(M^VVn!{g zd^D;I11fM?%Q7*|29el&rn;to_)Hw%Rj*2>wurk)d;WBMxucp&msp`%(Ys`#=lXHw zg-j|QdPbwVqRrg)aO)92jfP7ww#M7}s}CE}HY~~={_D*^k0|DRQQYWNHQSE&A7bM0 z^JC9m1h#6HYUYt~mk@XiqW;#qe{HrNb)v&7@A8Ct0dfv8oj||=2?Y*S$yPVn>%qgv zl_J7KH?Wox6t$HURJKM9W~`*qa4Qo5{0( zDG6swsiI`JgaPiDR?Jww6a!8N&fHl*$Jn1RtQTQYJ>{@dXAO_)(Z_5pEKNF*DV{XQ zVmdp9?YY#I$Tc*!Y~2YQS`DZ)6<3O=*eiM5Xh-;5V*W8oB4MIv^p#{et^v``v_wG5 z@Z7#5MRlUaGAHo?-#!W69R$@eTlkKQtye1S70{>!bFqf

1z|1 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 z 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 z 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 z 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

;R5{W?{gUj-1*^qev$ktE5=!JGk$5U|&; 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

*S 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

~v|=j==BsF+qsqHCvZomk7K1Ax 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%0D!Nvky*KY-c` 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
%t3&n|a(&{=fNl!nVCz2Hj>p+5 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

)ji9>mwQ-2O!Q-XNACJ974o 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

?eODHzRxqovIf`i3&&*z}J*wHjmyVwa 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⪚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%0AG=3n1d%K7hSjwkgZ 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

wMMJtPvcSHi7)!oOY$fRSGosD_l_m#R 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

SntIm4jRb#{YgJsBAN44zv21ztl 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�N>h1K1`bjwAi9+M?b4T7G$D7xy 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