7HZNOHIDITNJ4EAKUYRYRIR7H53P7Q7EWBVRON2PUTQCUDHCZBRAC P3DOLIF47OAWT6VFRTASS3Q3AXUI4SVPUHT4WF7PVBKVNVYWXF5QC IJHYMJBOPNFORSDVM4RBZ5ZPLGSFSG6JRTPPYOD4YYWPT4YXNRLQC 3A5FX3Y4RPKWQEHKKXZKXZJ7RKV6RKWT7GTR4WFE5UBWKV2HT4RQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC HNXKX6ZDQJV33E7UKZOLBYWJMRZ4QLEMXVXJZNRCTOIG2KVRTIEAC QXQE7C5XDYNF4JSHGDAVMS7HYLOC6YEZFOVFJ3RD7RB6U4AJSFIQC RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC C55G5JGGSVWMU7XVEJL6YZZLDXQZGRN7JQOAALS6WIKFPX3L2U6QC GIDTM5YI3WHSH6CNS2MIQSQ3YZSNO3SZWNI4FUGSFDORFY6UDUAQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC UBQTNLYGD3SNWMUNGWUPX7EXEGQXOXCFCPWIVWBFE7ID7DJLPFWAC FQ7XALBL6NZAGBKKYIFHYQ7MUWIHR4TEU4TCS33EG4I3JTND5SQAC PELXK6IIQWIBJZ47D4UFLEFTQH4TYG5W6VOORKZOINAXYOJ5UF7AC MYOP4BDTEA4SQ3RUEGRY7PGRJ2ABSXHU42JBTR36G5XPV5YVQNMQC ZW4PORTK3G7OJDTPXTXQLXTRCEN4ES2RTS22DSLEAPJALDMRWRVQC PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC MQ6XOFL5COAWZI6LU6O7TK2DCOEAK3BEK55YGUFPKGOCGVUKZW7AC FKRLQJYHK3GB6HHSNNFQ7L57ZAR52LSTBG5B6SNJBYZ2LQ36P67AC ZWYVZW5QFM5I2F6BLMNDDTV7FROJUHOO3O2BCBG7WSCKMKXUEMTQC 2C6B6QRTOK2ZMK2ZOF3EPSFUZTKG5B3IZXWBWIUYC4ZOVGQ2OV2QC X7MFMKQTNZ2IWBFVGS6WQV7NRNKJ3DWQAW2X7IQMFQQXW24AHPZQC VTIADUZCOEIR5Q237SWWO2OHAO5RIMHD223H7DYCCHLO6HGYZQKAC SHQUW7EH2E2SGQ5ONR63MAKN2VGLKQDQ3HIC2Q6D4DFGPGIJXXJQC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC }// Returns a Lua table of filenames in the named directory. The file names// returned are unqualified. The directory must be a relative path, and will// be resolved to an absolute path if necessary using datafile_path.LUAFN(_file_datadir_files){const std::string rawdir(luaL_checkstring(ls, 1));// A filename suffix to match (such as ".des"). If empty, files// will be unfiltered.const std::string ext_filter(lua_isnoneornil(ls, 2) ? "" :luaL_checkstring(ls, 2));const std::string datadir(datafile_path(rawdir, false, false, dir_exists));if (datadir.empty())luaL_error(ls, "Cannot find data directory: '%s'", rawdir.c_str());const std::vector<std::string> files =ext_filter.empty() ? get_dir_files(datadir) :get_dir_files_ext(datadir, ext_filter);return clua_stringtable(ls, files);
{ "marshall", file_marshall },{ "marshall_meta", file_marshall_meta },{ "unmarshall_meta", file_unmarshall_meta },{ "unmarshall_number", file_unmarshall_number },{ "unmarshall_string", file_unmarshall_string },{ "unmarshall_fn", file_unmarshall_fn },{ NULL, NULL }
{ "marshall", file_marshall },{ "marshall_meta", file_marshall_meta },{ "unmarshall_meta", file_unmarshall_meta },{ "unmarshall_number", file_unmarshall_number },{ "unmarshall_string", file_unmarshall_string },{ "unmarshall_fn", file_unmarshall_fn },{ "datadir_files", _file_datadir_files },{ NULL, NULL }
std::string datafile_path(std::string basename,bool croak_on_fail = true,bool test_base_path = false);
std::string datafile_path(std::string basename,bool croak_on_fail = true,bool test_base_path = false,bool (*thing_exists)(const std::string&) = file_exists);
local des_files = {-- The dummy vaults that define global vault generation odds."dummy.des",-- Example vaults, included here so that Crawl will syntax-check them."didact.des",
local des_files = file.datadir_files("dat", ".des")
"arena.des","layout.des", "rooms.des",-- Portal vaults."bazaar.des", "bailey.des", "icecave.des", "lab.des", "ossuary.des","sewer.des", "trove.des", "shrine.des", "volcano.des", "ziggurat.des",-- Normal vaults."altar.des", "entry.des", "elf.des", "float.des", "hells.des", "hive.des","lair.des", "large.des", "mini.des", "orc.des", "pan.des", "shoals.des","temple.des", "vaults.des", "crypt.des", "zot.des"}