[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] = {config = {}} G.GAME.cry_voucher_centers[k].config = copy_table(v.config) end end ''' match_indent = true # when voucher is redeemed, save ability to center copy [[patches]] [patches.pattern] target = "card.lua" pattern = "if self.shop_voucher then G.GAME.current_round.voucher = nil end" position = "after" payload = ''' G.GAME.cry_voucher_centers[self.config.center_key].config.extra = self.ability.extra if self.ability.extra_disp then G.GAME.cry_voucher_centers[self.config.center_key].config.extra_disp = self.ability.extra_disp end ''' match_indent = true # extra override [[patches]] [patches.pattern] target = "card.lua" pattern = "extra = center and center.config.extra or self and self.ability.extra" position = "at" payload = ''' extra = self and 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