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
JavaScript
;
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;