balatro-mods/UnStable-main/lovely/Card.toml
2025-05-20 03:22:28 +08:00

90 lines
2.9 KiB
TOML

[manifest]
version = "1.0.0"
dump_lua = true
priority = 0
# Fix the nominal sorting (Suit for high ranks)
[[patches]]
[patches.regex]
target = 'card.lua'
pattern = '''if mod == 'suit' (.*)'''
position = 'at'
payload = '''
if mod == 'suit' then mult = 30000 end'''
# Fix the nominal sorting (For low ranks)
[[patches]]
[patches.regex]
target = 'card.lua'
pattern = '''return 10\*self.base.nominal\*rank_mult(.*)'''
position = 'at'
payload = '''
--Temporary fix so the card with the lowest nominal can still be sorted properly
local nominal = self.base.nominal
if self.base.value == 'unstb_???' then
nominal = 0.3
elseif nominal < 0.4 then
nominal = 0.31 + nominal*0.1
end
--Hardcode this so it's sorted properly
if self.base.value == 'unstb_161' then
nominal = 30
end
return 10*(nominal)*rank_mult + self.base.suit_nominal*mult + (self.base.suit_nominal_original or 0)*0.0001*mult + 10*self.base.face_nominal*rank_mult + 0.000001*self.unique_val'''
# Adds ability text for decimal ranks
# function generate_card_ui()
[[patches]]
[patches.pattern]
target = "functions/common_events.lua"
pattern = "if main_end then"
position = "before"
match_indent = true
payload = """
local isCollection = (card and card.area and card.area.config.collection) or false
if not isCollection and (_c.set == 'Default' or _c.set == 'Enhanced') and card and card.base and card.base.value and SMODS.Ranks[card.base.value].is_decimal and not card.config.center.no_rank and not card.debuff then
local rank_act = SMODS.Ranks[card.base.value].rank_act or {'0', '0', '0'}
if rank_act[3] then
localize{type = 'other', key = 'decimal_rank_ability', nodes = desc_nodes, vars = {rank_act[1], rank_act[2], rank_act[3]}}
else
localize{type = 'other', key = 'decimal_rank_ability_2', nodes = desc_nodes, vars = {rank_act[1], rank_act[2]}}
end
end"""
# Adds 'No Chips' text for certain ranks
# function generate_card_ui()
[[patches]]
[patches.regex]
target = "functions/common_events.lua"
pattern = "specific_vars.nominal_chips then \n(.*)"
position = "at"
payload = """
specific_vars.nominal_chips or (specific_vars.value == 'unstb_0' or specific_vars.value == 'unstb_???') then
if (specific_vars.value == 'unstb_0' or specific_vars.value == 'unstb_???') and not specific_vars.nominal_chips then
localize{type = 'other', key = 'no_chip', nodes = desc_nodes, vars = {}}
else
localize{type = 'other', key = 'card_chips', nodes = desc_nodes, vars = {specific_vars.nominal_chips}}
end
"""
# Ranks unlocks from Booster Pack
# function generate_card_ui()
[[patches]]
[patches.pattern]
target = "functions/button_callbacks.lua"
pattern = "elseif card.ability.set == 'Enhanced' or card.ability.set == 'Default' then "
position = "after"
match_indent = true
payload = """
if G.STATE == G.STATES.STANDARD_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED then
local rank = card.base.value
--Check if it's UnStable rank, if so then flips the flag
if rank:find('unstb_') then
setPoolRankFlagEnable(rank, true);
end
end
"""