UNPKG

la-cosa-nostra

Version:

A Mafia bot designed to run in Discord - beware the traitors and the lies!

77 lines (47 loc) 1.75 kB
var fs = require("fs"); var expansions = require("./expansions.js"); var auxils = require("./auxils.js"); var attributes_dir = __dirname + "/../attributes"; var attributes = fs.readdirSync(attributes_dir).map(x => "lcn/" + x); var rules = new Array(); // Add expansions for (var i = 0; i < expansions.length; i++) { attributes = attributes.concat(expansions[i].additions.attributes.map(x => expansions[i].identifier + "/" + x)); rules = rules.concat(expansions[i].expansion.overrides.attributes); }; attributes = auxils.ruleFilter(attributes, rules); var ret = new Object(); for (var i = 0; i < attributes.length; i++) { var attribute_info = attributes[i].split("/"); var expansion_identifier = attribute_info[0]; var attribute = attribute_info[1]; if (expansion_identifier === "lcn") { var directory = attributes_dir + "/" + attribute; } else { var expansion = expansions.find(x => x.identifier === expansion_identifier); var directory = expansion.expansion_directory + "/attributes/" + attribute; }; var usable = new Object(); usable.directory = directory; usable.attribute = attemptGetting(directory + "/attribute.json"); usable.start = attemptRequiring(directory + "/general/start.js"); usable.routines = attemptRequiring(directory + "/general/routines.js"); ret[attribute] = usable; }; module.exports = ret; function attemptRequiring (directory) { var available = fs.existsSync(directory); if (available) { return require(directory); } else { return undefined; }; }; function attemptGetting (directory) { var available = fs.existsSync(directory); if (available) { return JSON.parse(fs.readFileSync(directory)); } else { return undefined; }; };