diff --git a/src/lua_baselib.c b/src/lua_baselib.c
index 712bc404582edd0e502f6fc1ec63fc3eb9ba2938..97d2fdc243518a4d10dd4b3edee96c339397eb1d 100644
--- a/src/lua_baselib.c
+++ b/src/lua_baselib.c
@@ -2047,12 +2047,19 @@ static int lib_pStartQuake(lua_State *L)
 
 static int lib_evCrumbleChain(lua_State *L)
 {
-	sector_t *sec = *((sector_t **)luaL_checkudata(L, 1, META_SECTOR));
-	ffloor_t *rover = *((ffloor_t **)luaL_checkudata(L, 2, META_FFLOOR));
+	sector_t *sec = NULL;
+	ffloor_t *rover = NULL;
 	NOHUD
 	INLEVEL
-	/*if (!sec)
-		return LUA_ErrInvalid(L, "sector_t");*/
+	if (lua_isuserdata(L, 2))
+	{
+		sec = *((sector_t **)luaL_checkudata(L, 1, META_SECTOR));
+		rover = *((ffloor_t **)luaL_checkudata(L, 2, META_FFLOOR));
+		if (!sec)
+			return LUA_ErrInvalid(L, "sector_t");
+	}
+	else
+		rover = *((ffloor_t **)luaL_checkudata(L, 1, META_FFLOOR));
 	if (!rover)
 		return LUA_ErrInvalid(L, "ffloor_t");
 	EV_CrumbleChain(sec, rover);