150 lines
5 KiB
TOML
150 lines
5 KiB
TOML
[manifest]
|
|
version = "1.0.0"
|
|
dump_lua = true
|
|
priority = -10
|
|
|
|
### Sticker API
|
|
|
|
# generate_UIBox_ability_table()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "card.lua"
|
|
pattern = "if self.sticker or ((self.sticker_run and self.sticker_run~='NONE') and G.SETTINGS.run_stake_stickers) then loc_vars = loc_vars or {}; loc_vars.sticker=(self.sticker or self.sticker_run) end"
|
|
position = "before"
|
|
match_indent = true
|
|
payload = '''
|
|
for k, v in ipairs(SMODS.Sticker.obj_buffer) do
|
|
if self.ability[v] and not SMODS.Stickers[v].hide_badge then
|
|
badges[#badges+1] = v
|
|
end
|
|
end'''
|
|
|
|
# generate_card_ui()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "if v == 'eternal' then*"
|
|
match_indent = true
|
|
position = "before"
|
|
payload = '''
|
|
local sticker = SMODS.Stickers[v]
|
|
if sticker then
|
|
local t = { key = v, set = 'Other' }
|
|
local res = {}
|
|
if sticker.loc_vars and type(sticker.loc_vars) == 'function' then
|
|
res = sticker:loc_vars(info_queue, card) or {}
|
|
t.vars = res.vars or {}
|
|
t.key = res.key or t.key
|
|
t.set = res.set or t.set
|
|
end
|
|
info_queue[#info_queue+1] = t
|
|
else'''
|
|
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "if v == 'rental' then*"
|
|
match_indent = true
|
|
position = "after"
|
|
payload = '''end'''
|
|
|
|
# create_card()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "if card.ability.consumeable and not skip_materialize then card:start_materialize() end"
|
|
position = "after"
|
|
match_indent = true
|
|
payload = '''
|
|
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'''
|
|
|
|
## Remove base game sticker rolls if one is added
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 then"
|
|
position = "at"
|
|
match_indent = true
|
|
payload = '''if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 and not SMODS.Stickers["eternal"].should_apply then'''
|
|
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "elseif G.GAME.modifiers.enable_perishables_in_shop and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) then"
|
|
position = "at"
|
|
match_indent = true
|
|
payload = '''elseif G.GAME.modifiers.enable_perishables_in_shop and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) and not SMODS.Stickers["perishable"].should_apply then'''
|
|
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "functions/common_events.lua"
|
|
pattern = "if G.GAME.modifiers.enable_rentals_in_shop and pseudorandom((area == G.pack_cards and 'packssjr' or 'ssjr')..G.GAME.round_resets.ante) > 0.7 then"
|
|
position = "at"
|
|
match_indent = true
|
|
payload = '''if G.GAME.modifiers.enable_rentals_in_shop and pseudorandom((area == G.pack_cards and 'packssjr' or 'ssjr')..G.GAME.round_resets.ante) > 0.7 and not SMODS.Stickers["rental"].should_apply then'''
|
|
|
|
# Card:draw()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "card.lua"
|
|
pattern = '''if self.ability.name == 'The Soul' and (self.config.center.discovered or self.bypass_discovery_center) then'''
|
|
match_indent = true
|
|
position = "before"
|
|
payload = '''
|
|
for k, v in pairs(SMODS.Stickers) do
|
|
if self.ability[v.key] then
|
|
if v and v.draw and type(v.draw) == 'function' then
|
|
v:draw(self, layer)
|
|
else
|
|
G.shared_stickers[v.key].role.draw_major = self
|
|
G.shared_stickers[v.key]:draw_shader('dissolve', nil, nil, nil, self.children.center)
|
|
G.shared_stickers[v.key]:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center)
|
|
end
|
|
end
|
|
end
|
|
'''
|
|
|
|
# Card:calculate_joker()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = "card.lua"
|
|
pattern = "function Card:calculate_joker(context)"
|
|
position = 'after'
|
|
payload = '''
|
|
for k, v in pairs(SMODS.Stickers) do
|
|
if self.ability[v.key] then
|
|
if v.calculate and type(v.calculate) == 'function' then
|
|
local override_card = v:calculate(self, context)
|
|
if override_card then return override_card end
|
|
end
|
|
end
|
|
end'''
|
|
match_indent = true
|
|
|
|
# get_badge_colour()
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/UI_definitions.lua'
|
|
pattern = 'return G.BADGE_COL[key] or {1, 0, 0, 1}'
|
|
position = 'before'
|
|
match_indent = true
|
|
payload = '''
|
|
for k, v in pairs(SMODS.Stickers) do
|
|
G.BADGE_COL[k] = v.badge_colour
|
|
end'''
|
|
|
|
## Remove Pinned effect when in Sticker collections
|
|
# CardArea:aling_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'
|
|
match_indent = true
|
|
payload = '''table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*((a.pinned and not a.ignore_pinned) and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*((b.pinned and not b.ignore_pinned) and b.sort_id or 0) end)'''
|