summaryrefslogtreecommitdiff
path: root/UserScripts.lua
diff options
context:
space:
mode:
authorJomar Milan <jomarm@jomarm.com>2025-08-23 13:02:19 -0700
committerJomar Milan <jomarm@jomarm.com>2025-08-23 13:02:19 -0700
commit98c89b9c66394281c5c7bf1f6ec38398e6bbd46b (patch)
tree3ee108059af3f578387beeb67b79b0365b2f9422 /UserScripts.lua
downloadUserScripts-98c89b9c66394281c5c7bf1f6ec38398e6bbd46b.tar.gz
UserScripts-98c89b9c66394281c5c7bf1f6ec38398e6bbd46b.zip
Initial commitHEADmaster
Diffstat (limited to 'UserScripts.lua')
-rw-r--r--UserScripts.lua55
1 files changed, 55 insertions, 0 deletions
diff --git a/UserScripts.lua b/UserScripts.lua
new file mode 100644
index 0000000..a43c472
--- /dev/null
+++ b/UserScripts.lua
@@ -0,0 +1,55 @@
+-- Press Shift+F1 to display debug output in-game
+local Menu = require "necro.menu.Menu"
+
+local UserScripts = {}
+
+UserScripts.callbacks = {}
+
+-- Other scripts can't directly modify a module member, so provide a function
+-- to do it with
+function UserScripts.add(label, callback)
+ UserScripts.callbacks[label] = callback
+end
+
+-- The menu event is an EnumSelector event, so use the key field.
+event.menu.add("pauseOptions", { key = "pause", sequence = 1 }, function(ev)
+ if not ev.menu or not ev.menu.entries then
+ return
+ end
+
+ -- 8th index: without any other mods, this is after "Customize"
+ table.insert(ev.menu.entries, 8, {
+ label = "User Scripts",
+ action = function()
+ Menu.open "scriptsList"
+ end,
+ })
+end)
+
+-- key corresponds to what is passed to Menu.open
+event.menu.add("scriptsList", { key = "scriptsList", sequence = 0 }, function(ev)
+ local entries = {}
+
+ for index, callback in pairs(UserScripts.callbacks) do
+ table.insert(entries, {
+ label = index,
+ action = callback,
+ })
+ end
+
+ table.insert(entries, {
+ id = "_done",
+ sound = "UIBack",
+ label = L "Done",
+ action = function()
+ Menu.close()
+ end,
+ })
+
+ ev.menu = {
+ label = "Script List",
+ entries = entries,
+ }
+end)
+
+return UserScripts