From 404681f39585f5a1c536cd766010fa27982c0111 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 14 Jul 2025 19:19:21 -0400 Subject: [PATCH] Begin laying infrastructure for status effect scripting --- resources/scripts/Init.lua | 3 ++- resources/scripts/effects/Effects.lua | 2 ++ resources/scripts/effects/Jog.lua | 7 +++++++ resources/scripts/effects/Sprint.lua | 9 +++++++++ src/world/connection.rs | 1 + src/world/lua.rs | 8 ++++++++ 6 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 resources/scripts/effects/Effects.lua create mode 100644 resources/scripts/effects/Jog.lua create mode 100644 resources/scripts/effects/Sprint.lua diff --git a/resources/scripts/Init.lua b/resources/scripts/Init.lua index 1d2ec60..152a9a6 100644 --- a/resources/scripts/Init.lua +++ b/resources/scripts/Init.lua @@ -1,7 +1,8 @@ BASE_DIR = "resources/scripts/" -dofile(BASE_DIR.."commands/Commands.lua") dofile(BASE_DIR.."actions/Actions.lua") +dofile(BASE_DIR.."commands/Commands.lua") +dofile(BASE_DIR.."effects/Effects.lua") dofile(BASE_DIR.."events/Events.lua") dofile(BASE_DIR.."items/Items.lua") dofile(BASE_DIR.."Global.lua") diff --git a/resources/scripts/effects/Effects.lua b/resources/scripts/effects/Effects.lua new file mode 100644 index 0000000..586d0cc --- /dev/null +++ b/resources/scripts/effects/Effects.lua @@ -0,0 +1,2 @@ +registerEffect(50, "Sprint.lua") +registerEffect(4209, "Jog.lua") diff --git a/resources/scripts/effects/Jog.lua b/resources/scripts/effects/Jog.lua new file mode 100644 index 0000000..6606ae0 --- /dev/null +++ b/resources/scripts/effects/Jog.lua @@ -0,0 +1,7 @@ +function onGain(player) + -- it does nothing +end + +function onLose(player) + -- it does nothing +end diff --git a/resources/scripts/effects/Sprint.lua b/resources/scripts/effects/Sprint.lua new file mode 100644 index 0000000..376e134 --- /dev/null +++ b/resources/scripts/effects/Sprint.lua @@ -0,0 +1,9 @@ +EFFECT_JOG = 4029 + +function onGain(player) + -- it does nothing +end + +function onLose(player) + player:gain_effect(EFFECT_JOG) +end diff --git a/src/world/connection.rs b/src/world/connection.rs index 6f14ad4..faba077 100644 --- a/src/world/connection.rs +++ b/src/world/connection.rs @@ -49,6 +49,7 @@ pub struct ExtraLuaState { pub event_scripts: HashMap, pub command_scripts: HashMap, pub gm_command_scripts: HashMap, + pub effect_scripts: HashMap, } #[derive(Debug, Default, Clone)] diff --git a/src/world/lua.rs b/src/world/lua.rs index db597ce..0a8cd7a 100644 --- a/src/world/lua.rs +++ b/src/world/lua.rs @@ -620,6 +620,13 @@ pub fn load_init_script(lua: &mut Lua) -> mlua::Result<()> { Ok(()) })?; + let register_effects_func = + lua.create_function(|lua, (command_type, status_script): (u32, String)| { + let mut state = lua.app_data_mut::().unwrap(); + let _ = state.effect_scripts.insert(command_type, status_script); + Ok(()) + })?; + let get_login_message_func = lua.create_function(|_, _: ()| { let config = get_config(); Ok(config.world.login_message) @@ -632,6 +639,7 @@ pub fn load_init_script(lua: &mut Lua) -> mlua::Result<()> { .set("registerCommand", register_command_func)?; lua.globals() .set("registerGMCommand", register_gm_command_func)?; + lua.globals().set("registerEffect", register_effects_func)?; lua.globals() .set("getLoginMessage", get_login_message_func)?;