diff --git a/src/lua_baselib.c b/src/lua_baselib.c
index 97d2fdc243518a4d10dd4b3edee96c339397eb1d..767ab2dd32bdbcd19ac15f4e4c7c3ff017245a0e 100644
--- a/src/lua_baselib.c
+++ b/src/lua_baselib.c
@@ -2051,12 +2051,15 @@ static int lib_evCrumbleChain(lua_State *L)
 	ffloor_t *rover = NULL;
 	NOHUD
 	INLEVEL
-	if (lua_isuserdata(L, 2))
+	if (!lua_isnone(L, 2))
 	{
-		sec = *((sector_t **)luaL_checkudata(L, 1, META_SECTOR));
+		if (!lua_isnil(L, 1))
+		{
+			sec = *((sector_t **)luaL_checkudata(L, 1, META_SECTOR));
+			if (!sec)
+				return LUA_ErrInvalid(L, "sector_t");
+		}
 		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));