summaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/lua_api/l_server.cpp')
-rw-r--r--src/script/lua_api/l_server.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp
index 7c083e652..00e849cdf 100644
--- a/src/script/lua_api/l_server.cpp
+++ b/src/script/lua_api/l_server.cpp
@@ -429,7 +429,7 @@ int ModApiServer::l_get_worldpath(lua_State *L)
return 1;
}
-// sound_play(spec, parameters)
+// sound_play(spec, parameters, [ephemeral])
int ModApiServer::l_sound_play(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
@@ -437,8 +437,14 @@ int ModApiServer::l_sound_play(lua_State *L)
read_soundspec(L, 1, spec);
ServerSoundParams params;
read_server_sound_params(L, 2, params);
- s32 handle = getServer(L)->playSound(spec, params);
- lua_pushinteger(L, handle);
+ bool ephemeral = lua_gettop(L) > 2 && readParam<bool>(L, 3);
+ if (ephemeral) {
+ getServer(L)->playSound(spec, params, true);
+ lua_pushnil(L);
+ } else {
+ s32 handle = getServer(L)->playSound(spec, params);
+ lua_pushinteger(L, handle);
+ }
return 1;
}
@@ -446,7 +452,7 @@ int ModApiServer::l_sound_play(lua_State *L)
int ModApiServer::l_sound_stop(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
- int handle = luaL_checkinteger(L, 1);
+ s32 handle = luaL_checkinteger(L, 1);
getServer(L)->stopSound(handle);
return 0;
}