83 lines
2.1 KiB
TOML
83 lines
2.1 KiB
TOML
[manifest]
|
|
version = "1.0.0"
|
|
dump_lua = true
|
|
priority = -5
|
|
|
|
# Check all registered keybinds
|
|
# inserted inside Controller:key_press_update
|
|
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'engine/controller.lua'
|
|
pattern = "if not _RELEASE_MODE then"
|
|
position = "before"
|
|
payload = '''
|
|
for _, keybind in pairs(SMODS.Keybinds) do
|
|
if keybind.action and keybind.key_pressed == key and keybind.event == 'pressed' then
|
|
local execute = true
|
|
for _, other_key in pairs(keybind.held_keys) do
|
|
if not self.held_keys[other_key] then
|
|
execute = false
|
|
break
|
|
end
|
|
end
|
|
if execute then
|
|
keybind:action()
|
|
end
|
|
end
|
|
end
|
|
'''
|
|
match_indent = true
|
|
|
|
# Controller:key_release_update
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'engine/controller.lua'
|
|
pattern = "function Controller:key_release_update(key, dt)"
|
|
position = "after"
|
|
payload = '''
|
|
for _, keybind in pairs(SMODS.Keybinds) do
|
|
if keybind.action and keybind.key_pressed == key and keybind.event == 'released' then
|
|
local execute = true
|
|
for _, other_key in pairs(keybind.held_keys) do
|
|
if not self.held_keys[other_key] then
|
|
execute = false
|
|
break
|
|
end
|
|
end
|
|
if execute then
|
|
keybind:action()
|
|
end
|
|
end
|
|
end
|
|
'''
|
|
match_indent = true
|
|
|
|
[[patches]]
|
|
[patches.regex]
|
|
target = 'engine/controller.lua'
|
|
pattern = 'if key == "r"'
|
|
position = 'before'
|
|
line_prepend = '$indent'
|
|
payload = '''
|
|
for _, keybind in pairs(SMODS.Keybinds) do
|
|
if keybind.key_pressed == key and keybind.event == 'held' and keybind.held_duration then
|
|
if self.held_key_times[key] > keybind.held_duration then
|
|
local execute = true
|
|
for _, other_key in pairs(keybind.held_keys) do
|
|
if not self.held_keys[other_key] then
|
|
execute = false
|
|
break
|
|
end
|
|
end
|
|
if execute then
|
|
keybind:action()
|
|
self.held_key_times[key] = nil
|
|
end
|
|
else
|
|
self.held_key_times[key] = self.held_key_times[key] + dt
|
|
end
|
|
end
|
|
end
|
|
'''
|