UNPKG

aurinn-train-content-generator

Version:

A custom fork of the fantasy-name-content-generator specifically for Aurinn Train, a custom D&D campaign format.

151 lines (150 loc) 6.96 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = void 0; var Utils = __importStar(require("../utils")); var establishments_json_1 = __importDefault(require("./establishments.json")); var genericData_json_1 = __importDefault(require("../genericData.json")); var npcs_1 = __importDefault(require("../npcs")); var _establishmentSecret = function () { return Utils.parseTemplate(Utils.pick(establishments_json_1.default.establishmentSecrets)); }; var getNpcStoreFrontNames = function (npcs) { var names = npcs.map(function (npc) { return npc.formattedData.lastName ? npc.formattedData.lastName : npc.formattedData.firstName; }); return names; }; var _establishmentName = function (type, npcs) { var _establishmentNameSetA = function (npcs) { var npcStoreFrontNames = Utils.pickMany(getNpcStoreFrontNames(npcs), 2); var anyItemPool = __spreadArrays(genericData_json_1.default.weapon, genericData_json_1.default.armour, genericData_json_1.default.commonItem); return Utils.parseTemplate(Utils.pick(establishments_json_1.default.establishmentNameSetA), { anyItem: Utils.pick(anyItemPool), animal: Utils.pick(genericData_json_1.default.animalSingular), sizeAdjective: Utils.pick(genericData_json_1.default.sizeAdjectives), colourAdjective: Utils.pick(genericData_json_1.default.coloursAdjective), nounPhysicalAdjective: Utils.pick(genericData_json_1.default.nounPhysicalAdjectives), positiveAdjective: Utils.pick(genericData_json_1.default.positiveAdjective), ownersLastName: npcStoreFrontNames[0], lastNameA: npcStoreFrontNames[0], lastNameB: npcStoreFrontNames[1] }); }; switch (type) { case "general_store": case "inn": case "tavern": case "armorsmith": case "weaponsmith": case "stable": case "carpenter": case "leatherworker": case "tanner": case "cobbler": default: return _establishmentNameSetA(npcs); } }; var _npcs = function (seed, establishmentType) { var poolOfOptionalVocationTypes = __spreadArrays(establishments_json_1.default.establishmentVocationsOptional, (establishments_json_1.default.establishmentVocationsOptionalPerType[establishmentType] || [])); // generate with 1 required, and 1 or 2 optional ones var workerVocations = __spreadArrays([ Utils.pick(establishments_json_1.default.establishmentVocationsRequired) ], Utils.pickMany(poolOfOptionalVocationTypes, Utils.rand(1, 2))); return workerVocations.map(function (vocation, index) { var npc = npcs_1.default.generate({ seed: "" + seed + vocation + index }); npc.vocation = vocation; npc.formattedData.vocation = Utils.titleCase(vocation); return npc; }); }; var _establishmentType = function () { return Utils.pick(establishments_json_1.default.establishments); }; var _description = function (type) { var lookAndAppearance = "This establishment " + Utils.pick(establishments_json_1.default.establishmentGeneralLookAndAppearances); var builtFrom = Utils.pick(establishments_json_1.default.establishmentBuiltFrom); var enteringAndPatrons = Utils.pick(establishments_json_1.default.establishmentEnteringAndPatrons.i) + " " + Utils.pick(establishments_json_1.default.establishmentEnteringAndPatrons.ii); // get 2 random lines from the establishment specific descriptions, and format them correctly var establishmentSpecificLines = []; switch (type) { case "inn": case "tavern": establishmentSpecificLines = Utils.pickMany(establishments_json_1.default.establishmentDescriptionsInn, 2); break; case "armoursmith": case "weaponsmith": establishmentSpecificLines = Utils.pickMany(establishments_json_1.default.establishmentDescriptionsArmoursmith, 2); break; default: establishmentSpecificLines = Utils.pickMany(establishments_json_1.default.establishmentDescriptionsDefault, 2); break; } var typeSpecificLine = establishmentSpecificLines[0] + ", and " + establishmentSpecificLines[1] + "."; return Utils.parseTemplate(lookAndAppearance + " " + builtFrom + " " + enteringAndPatrons + " " + Utils.firstCharacterUppercase(typeSpecificLine)); }; exports.generate = function (props) { if (props === void 0) { props = {}; } var type = props.type, seed = props.seed; seed = seed || Utils.FantasyContentGeneratorSeed || Utils.generateUUID(); return Utils.withSeed(seed, function () { type = type ? type : _establishmentType(); var npcs = _npcs(seed, type); var name = _establishmentName(type, npcs); var secret = _establishmentSecret(); var description = _description(type); return { seed: seed, name: name, type: type, secret: secret, npcs: npcs, description: description, formattedData: { name: Utils.titleCase(name), type: Utils.titleCase(type), secret: secret, npcs: npcs, description: description } }; }); }; var functions = { generate: exports.generate }; exports.default = functions;