summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/script/cpp_api/s_entity.cpp6
-rw-r--r--src/script/cpp_api/s_entity.h2
-rw-r--r--src/server/luaentity_sao.cpp4
-rw-r--r--src/server/luaentity_sao.h6
4 files changed, 9 insertions, 9 deletions
diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp
index 06337b9e8..9368bec76 100644
--- a/src/script/cpp_api/s_entity.cpp
+++ b/src/script/cpp_api/s_entity.cpp
@@ -103,7 +103,7 @@ void ScriptApiEntity::luaentity_Activate(u16 id,
lua_pop(L, 2); // Pop object and error handler
}
-void ScriptApiEntity::luaentity_Deactivate(u16 id)
+void ScriptApiEntity::luaentity_Deactivate(u16 id, bool removal)
{
SCRIPTAPI_PRECHECKHEADER
@@ -120,9 +120,9 @@ void ScriptApiEntity::luaentity_Deactivate(u16 id)
if (!lua_isnil(L, -1)) {
luaL_checktype(L, -1, LUA_TFUNCTION);
lua_pushvalue(L, object);
-
+ lua_pushboolean(L, removal);
setOriginFromTable(object);
- PCALL_RES(lua_pcall(L, 1, 0, error_handler));
+ PCALL_RES(lua_pcall(L, 2, 0, error_handler));
} else {
lua_pop(L, 1);
}
diff --git a/src/script/cpp_api/s_entity.h b/src/script/cpp_api/s_entity.h
index 7658ae922..13f3e9aa3 100644
--- a/src/script/cpp_api/s_entity.h
+++ b/src/script/cpp_api/s_entity.h
@@ -33,7 +33,7 @@ public:
bool luaentity_Add(u16 id, const char *name);
void luaentity_Activate(u16 id,
const std::string &staticdata, u32 dtime_s);
- void luaentity_Deactivate(u16 id);
+ void luaentity_Deactivate(u16 id, bool removal);
void luaentity_Remove(u16 id);
std::string luaentity_GetStaticdata(u16 id);
void luaentity_GetProperties(u16 id,
diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp
index a4b37ee09..a0a8aede0 100644
--- a/src/server/luaentity_sao.cpp
+++ b/src/server/luaentity_sao.cpp
@@ -117,13 +117,13 @@ void LuaEntitySAO::addedToEnvironment(u32 dtime_s)
}
}
-void LuaEntitySAO::dispatchScriptDeactivate()
+void LuaEntitySAO::dispatchScriptDeactivate(bool removal)
{
// Ensure that this is in fact a registered entity,
// and that it isn't already gone.
// The latter also prevents this from ever being called twice.
if (m_registered && !isGone())
- m_env->getScriptIface()->luaentity_Deactivate(m_id);
+ m_env->getScriptIface()->luaentity_Deactivate(m_id, removal);
}
void LuaEntitySAO::step(float dtime, bool send_recommended)
diff --git a/src/server/luaentity_sao.h b/src/server/luaentity_sao.h
index 5a5aea7a9..1dc72b150 100644
--- a/src/server/luaentity_sao.h
+++ b/src/server/luaentity_sao.h
@@ -80,9 +80,9 @@ public:
bool collideWithObjects() const;
protected:
- void dispatchScriptDeactivate();
- virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(); }
- virtual void onMarkedForRemoval() { dispatchScriptDeactivate(); }
+ void dispatchScriptDeactivate(bool removal);
+ virtual void onMarkedForDeactivation() { dispatchScriptDeactivate(false); }
+ virtual void onMarkedForRemoval() { dispatchScriptDeactivate(true); }
private:
std::string getPropertyPacket();