186 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
| [manifest]
 | |
| version = "1.0.0"
 | |
| dump_lua = true
 | |
| priority = 0
 | |
| 
 | |
| # first we need to fix what on earth is going on with card.shop_voucher
 | |
| # for some reason it's not saved/loaded so... that's what's gonna happen
 | |
| # also adding another variable here that will be useful later
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "card.lua"
 | |
| pattern = '''ability = self.ability,'''
 | |
| position = "before"
 | |
| payload = '''
 | |
| shop_voucher = self.shop_voucher,
 | |
| shop_cry_bonusvoucher = self.shop_cry_bonusvoucher,
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # water is wet
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "card.lua"
 | |
| pattern = '''self.ability = cardTable.ability'''
 | |
| position = "before"
 | |
| payload = '''
 | |
| self.shop_voucher = cardTable.shop_voucher
 | |
| self.shop_cry_bonusvoucher = cardTable.shop_cry_bonusvoucher
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # get rid of this dumb hackfix in :redeem()
 | |
| # also track vouchers redeemed
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "card.lua"
 | |
| pattern = '''G.GAME.current_round.voucher = nil'''
 | |
| position = "at"
 | |
| payload = '''
 | |
| -- G.GAME.current_round.voucher = nil
 | |
| if self.shop_cry_bonusvoucher then G.GAME.cry_bonusvouchersused[self.shop_cry_bonusvoucher] = true end
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # create the table
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "game.lua"
 | |
| pattern = '''used_packs = {},'''
 | |
| position = "after"
 | |
| payload = '''
 | |
| cry_bonusvouchers = {},
 | |
| cry_voucher_stickers = {eternal = false, perishable = false, rental = false, pinned = false, banana = false},
 | |
| cry_voucher_edition = {},
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # initialise the other helpful variables
 | |
| # tarot/planet percrates appear here too because why not
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "game.lua"
 | |
| pattern = '''ecto_minus = 1,'''
 | |
| position = "after"
 | |
| payload = '''
 | |
| cry_bonusvouchercount = 0,
 | |
| cry_bonusvouchersused = {},
 | |
| cry_percrate = {tarot = 100, planet = 100},
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # populate the table with keys
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "functions/state_events.lua"
 | |
| pattern = '''G.GAME.current_round.voucher = get_next_voucher_key()'''
 | |
| position = "after"
 | |
| payload = '''
 | |
| G.GAME.current_round.cry_voucher_stickers = Cryptid.next_voucher_stickers()
 | |
| G.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() or {}
 | |
| G.GAME.current_round.cry_bonusvouchers = {}
 | |
| G.GAME.cry_bonusvouchersused = {}	-- i'm not sure why i'm putting these in two separate tables but it doesn't matter much
 | |
| for i = 1, G.GAME.cry_bonusvouchercount do
 | |
| 	G.GAME.current_round.cry_bonusvouchers[i] = get_next_voucher_key()
 | |
| end
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # fire is hot
 | |
| [[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 = '''
 | |
| G.GAME.current_round.cry_voucher_stickers = Cryptid.next_voucher_stickers()
 | |
| G.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() or {}
 | |
| for i = 1, self.GAME.cry_bonusvouchercount do
 | |
| 	self.GAME.current_round.cry_bonusvouchers[i] = get_next_voucher_key()
 | |
| end
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # add the vouchers to the shop. couldn't be more simple
 | |
| # use a simple regex to snipe the correct position
 | |
| [[patches]]
 | |
| [patches.regex]
 | |
| target = "game.lua"
 | |
| pattern = '''card\:start_materialize\(\)\n\s+G\.shop_vouchers\:emplace\(card\)\n\s+end'''
 | |
| position = "at"
 | |
| payload = '''
 | |
| 	for k, v in pairs(G.GAME.current_round.cry_voucher_stickers) do
 | |
| 		card.ability[k] = v
 | |
| 		card:set_cost()
 | |
| 	end
 | |
| 	if G.GAME.current_round.cry_voucher_edition then
 | |
| 		card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true)
 | |
| 	end
 | |
| 	card:start_materialize()
 | |
| 	G.shop_vouchers:emplace(card)
 | |
| end
 | |
| 
 | |
| for i = 1, #G.GAME.current_round.cry_bonusvouchers do
 | |
| 	if not G.GAME.cry_bonusvouchersused[i] then
 | |
| 		local card = Card(G.shop_vouchers.T.x + G.shop_vouchers.T.w/2,
 | |
| 			G.shop_vouchers.T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS[G.GAME.current_round.cry_bonusvouchers[i]],{bypass_discovery_center = true, bypass_discovery_ui = true})
 | |
| 		card.shop_cry_bonusvoucher = i
 | |
| 		Cryptid.misprintize(card)
 | |
| 		if G.GAME.events.ev_cry_choco2 then
 | |
| 			card.misprint_cost_fac = (card.misprint_cost_fac or 1) * 2
 | |
| 			card:set_cost()
 | |
| 		end
 | |
| 		if G.GAME.modifiers.cry_enable_flipped_in_shop and pseudorandom('cry_flip_vouch'..G.GAME.round_resets.ante) > 0.7 then
 | |
| 			card.cry_flipped = true
 | |
| 		end
 | |
| 		create_shop_card_ui(card, 'Voucher', G.shop_vouchers)
 | |
| 		card:start_materialize()
 | |
| 		if G.GAME.current_round.cry_voucher_edition then	-- eh why not
 | |
| 			card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true)
 | |
| 		end
 | |
| 		G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1	-- does this actually matter/even get reset??? i'm confused but whatever
 | |
| 		G.shop_vouchers:emplace(card)
 | |
| 	end
 | |
| end
 | |
| '''
 | |
| 
 | |
| # control the planet/tarot rates
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "functions/UI_definitions.lua"
 | |
| pattern = '''
 | |
|             {type = 'Tarot', val = G.GAME.tarot_rate},
 | |
|             {type = 'Planet', val = G.GAME.planet_rate},
 | |
| '''
 | |
| position = "at"
 | |
| payload = '''
 | |
| {type = 'Tarot', val = G.GAME.tarot_rate*(G.GAME.cry_percrate.tarot/100)},
 | |
| {type = 'Planet', val = G.GAME.planet_rate*(G.GAME.cry_percrate.planet/100)},
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # fix total rate
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "functions/UI_definitions.lua"
 | |
| pattern = '''
 | |
| total_rate = total_rate + G.GAME[v:lower()..'_rate']
 | |
| '''
 | |
| position = "at"
 | |
| payload = '''
 | |
| if not (v:lower() == 'tarot' or v:lower() == 'planet') then
 | |
| 	total_rate = total_rate + G.GAME[v:lower()..'_rate']
 | |
| else
 | |
| 	total_rate = total_rate + ( G.GAME[v:lower()..'_rate'] * (G.GAME.cry_percrate[v:lower()]/100) )
 | |
| end
 | |
| '''
 | |
| match_indent = true
 | |
| 
 | |
| # don't check voucher requirements for forced tier 3 voucher pool
 | |
| [[patches]]
 | |
| [patches.pattern]
 | |
| target = "functions/common_events.lua"
 | |
| pattern = "if v.requires then"
 | |
| position = "at"
 | |
| payload = "if v.requires and _type ~= 'Tier3' then"
 | |
| match_indent = true |