[manifest]
version = "1.0.0"
dump_lua = true
priority = 5

# there's gonna be a lot of this
# init all cards with ability.cry_prob
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = "self.base_cost = center.cost or 1"
position = "before"
payload = '''
self.ability.cry_prob = 1
'''
match_indent = true

# define function in lovely
[[patches]]
[patches.pattern]
target = "functions/misc_functions.lua"
pattern = "function save_run()"
position = "before"
payload = '''
function cry_prob(owned, den, rigged)
	prob = G.GAME and G.GAME.probabilities.normal or 1
	if rigged then
		return to_number(math.min(den, 1e300))
	else
		if owned then return to_number(math.min(prob*owned, 1e300)) else return to_number(math.min(prob, 1e300)) end
	end
end
'''
match_indent = true


# wow this is a fat line
# Yellow Stake - Glass can't destroy Eternals
# Glass Stake - Any card can shatter
[[patches]]
[patches.pattern]
target = "functions/state_events.lua"
pattern = '''if SMODS.has_enhancement(scoring_hand[i], 'm_glass') and scoring_hand[i]:can_calculate() and pseudorandom('glass') < G.GAME.probabilities.normal/(scoring_hand[i].ability.name == 'Glass Card' and scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra) then'''
position = "at"
payload = '''
if (SMODS.has_enhancement(scoring_hand[i], 'm_glass')
   and not scoring_hand[i].debuff
   and SMODS.pseudorandom_probability(scoring_hand[i], 'glass', 1, scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra)
   or (G.GAME.modifiers.cry_shatter_rate
       and pseudorandom('cry_shatter') < 1 / G.GAME.modifiers.cry_shatter_rate))
   and not SMODS.is_eternal(scoring_hand[i]) then'''
match_indent = true