├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .vscode ├── npc-generator.code-workspace └── tasks.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── index.d.ts ├── package-lock.json ├── package.json ├── prettier.config.mjs ├── scripts └── gen.js ├── src ├── __tests__ │ ├── __snapshots__ │ │ └── generate.spec.ts.snap │ ├── generate.spec.ts │ └── tables.spec.ts ├── generate.ts ├── groups.ts ├── index.ts ├── operators.ts ├── schema.json ├── staticAnalysis.ts ├── tables.data.gen.ts ├── tables.ts ├── tables │ ├── aasimarevilquirk.json │ ├── aasimargoodorevil.json │ ├── aasimargoodquirk.json │ ├── abstractword.json │ ├── age.json │ ├── ageBonus.json │ ├── alignment.json │ ├── aliment.json │ ├── amonster.json │ ├── animaltat.json │ ├── archdevil.json │ ├── atattooadj.json │ ├── attractiveness.json │ ├── badfacemod.json │ ├── badlooking.json │ ├── badsmell.json │ ├── beard.json │ ├── beardlength.json │ ├── beardshape.json │ ├── bodypart.json │ ├── bodypart1.json │ ├── bodypart2.json │ ├── bodyparttat.json │ ├── brand.json │ ├── class.json │ ├── collection.json │ ├── color.json │ ├── contest.json │ ├── degree.json │ ├── degree2.json │ ├── demongod.json │ ├── devilgod.json │ ├── dragonborngender.json │ ├── dragonbornname.json │ ├── dragongod.json │ ├── dragonhair.json │ ├── dragonquirks.json │ ├── dragons.json │ ├── dragonskin.json │ ├── drowgod.json │ ├── drowquirks.json │ ├── dwarfgender.json │ ├── dwarfgod.json │ ├── dwarfquirks.json │ ├── dwarfsurname.json │ ├── elfgender.json │ ├── elfgod.json │ ├── elfquirks.json │ ├── elfskin.json │ ├── elfsurname.json │ ├── entertainer.json │ ├── evilgod.json │ ├── evilworship.json │ ├── extrafinger.json │ ├── eyecolor.json │ ├── face.json │ ├── faceshape.json │ ├── feathertexture.json │ ├── female.json │ ├── femaledwarfname.json │ ├── femaleelfname.json │ ├── femalegnomename1.json │ ├── femalegnomename2.json │ ├── femalegnomename3.json │ ├── femalegnomename4.json │ ├── femalehalflingname.json │ ├── femalehumanname.json │ ├── femaleorcname.json │ ├── femaletritonname.json │ ├── firbolgquirk.json │ ├── firbolgskin.json │ ├── forcealign.json │ ├── frequency.json │ ├── furniture.json │ ├── gender.json │ ├── getevilgod.json │ ├── gnomegender.json │ ├── gnomegod.json │ ├── gnomequirks.json │ ├── goblinname.json │ ├── goliathadj.json │ ├── goliathanimalaction.json │ ├── goliathanimalnoun.json │ ├── goliathcraftaction.json │ ├── goliathcraftnoun.json │ ├── goliathfightingaction.json │ ├── goliathfightingnoun.json │ ├── goliathhair.json │ ├── goliathmysticaction.json │ ├── goliathmysticnoun.json │ ├── goliathname.json │ ├── goliathnoun.json │ ├── goliathquirks.json │ ├── goliathtraits1.json │ ├── goodface.json │ ├── goodfacemod.json │ ├── goodgod.json │ ├── goodlooking.json │ ├── goodorevil.json │ ├── goodsmell.json │ ├── hair.json │ ├── hairColor.json │ ├── hairLength.json │ ├── hairType.json │ ├── halfelfgender.json │ ├── halfelfskin.json │ ├── halflinggender.json │ ├── halflinggod.json │ ├── halflingsurname.json │ ├── halforcgender.json │ ├── halforcskin.json │ ├── halfquirks.json │ ├── head.json │ ├── height.json │ ├── hiCha.json │ ├── hiCon.json │ ├── hiDex.json │ ├── hiInt.json │ ├── hiStr.json │ ├── hiWis.json │ ├── highattractiveness.json │ ├── hooks.json │ ├── hooks1.json │ ├── hooks2.json │ ├── humangender.json │ ├── humangod.json │ ├── humanskin.json │ ├── humansurname.json │ ├── inheritance.json │ ├── kenkucolor.json │ ├── kenkuname.json │ ├── kenkunameanimal.json │ ├── kenkunamefighting.json │ ├── kenkunamemetal.json │ ├── kenkunamequiet.json │ ├── kenkuquirks.json │ ├── kenkuskin.json │ ├── language.json │ ├── learned.json │ ├── lesserNobility.json │ ├── lightweight.json │ ├── lizardcolors.json │ ├── lizardgender.json │ ├── lizardquirks.json │ ├── lizardskin.json │ ├── lizardtraits1.json │ ├── longbeard.json │ ├── longbeard1.json │ ├── lowCha.json │ ├── lowCon.json │ ├── lowDex.json │ ├── lowInt.json │ ├── lowStr.json │ ├── lowWis.json │ ├── male.json │ ├── maledwarfname.json │ ├── maleelfname.json │ ├── malegnomename1.json │ ├── malegnomename2.json │ ├── malegnomename3.json │ ├── malegnomename4.json │ ├── malehalflingname.json │ ├── malehumanname.json │ ├── maleorcname.json │ ├── maletritonname.json │ ├── martial.json │ ├── martialfinesse.json │ ├── martialranged.json │ ├── martialweapon.json │ ├── medCha.json │ ├── medCon.json │ ├── medDex.json │ ├── medInt.json │ ├── medStr.json │ ├── medWis.json │ ├── medusahair.json │ ├── medusaname.json │ ├── medusaveil.json │ ├── militaryquirk.json │ ├── missingeye.json │ ├── missingfingers.json │ ├── missinglimb.json │ ├── mod.json │ ├── monster.json │ ├── monster1.json │ ├── monster2.json │ ├── mundaneobject.json │ ├── naturequirk.json │ ├── nonhumanskin.json │ ├── normallooking.json │ ├── occupation.json │ ├── orcgender.json │ ├── orcgod.json │ ├── orcskin.json │ ├── orcsurname.json │ ├── organisation.json │ ├── orientation.json │ ├── personality.json │ ├── petanimal.json │ ├── petname.json │ ├── petname1.json │ ├── piercingnumber.json │ ├── poorquirk.json │ ├── precious.json │ ├── preciousitem.json │ ├── profession.json │ ├── professional.json │ ├── quirks.json │ ├── race.json │ ├── raceallergy.json │ ├── racedwarf.json │ ├── raceelf.json │ ├── racegnome.json │ ├── racehalfling.json │ ├── randomquirks.json │ ├── randomtraits1.json │ ├── randomtraits2.json │ ├── relationship.json │ ├── relationshipstatus.json │ ├── religiousquirk.json │ ├── richquirk.json │ ├── rl.json │ ├── rlb.json │ ├── scaletexture.json │ ├── simplefinesse.json │ ├── simpleranged.json │ ├── simpleweapon.json │ ├── size.json │ ├── skin.json │ ├── skinTexture.json │ ├── skinTone.json │ ├── snakecolor.json │ ├── specialphysical.json │ ├── specialphysical1.json │ ├── specialphysical2.json │ ├── strongweight.json │ ├── tabaxifirstname.json │ ├── tabaxilastname.json │ ├── tabaxiname.json │ ├── tabaxinounname.json │ ├── tabaxinumbername.json │ ├── tabaxiobsession.json │ ├── tabaxiquirks.json │ ├── tabaxiskin.json │ ├── tabaxiskincolor.json │ ├── tabaxiskinpattern.json │ ├── tabaxiskintexture.json │ ├── tattoo.json │ ├── tattooadj.json │ ├── tendencies.json │ ├── texttat.json │ ├── tieflingevilname.json │ ├── tieflinggoodname.json │ ├── tieflinggoodorevil.json │ ├── tieflingname.json │ ├── tieflingneutralname.json │ ├── tieflingskin.json │ ├── traits.json │ ├── tritongender.json │ ├── tritonhair.json │ ├── tritonhaircolor.json │ ├── tritonquirks.json │ ├── tritonskin.json │ ├── tritonsurname.json │ ├── underclass.json │ ├── weapon.json │ ├── weight.json │ ├── weirdQuirk.json │ ├── werebeast.json │ ├── whitehair.json │ ├── workClass.json │ └── worship.json ├── types.d.ts └── utils.ts ├── tsconfig.json └── tsconfig.test.json /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Build and Test 2 | 3 | on: 4 | push: 5 | branches: ["master"] 6 | pull_request: 7 | branches: ["master"] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [14.x, 16.x, 18.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v3 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | 25 | - name: install 26 | run: | 27 | npm install 28 | 29 | - name: test 30 | run: | 31 | npm test 32 | 33 | - name: build 34 | run: | 35 | npm run build -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | .github/ 3 | scripts/ 4 | src/ 5 | tsconfig.json 6 | tsconfig.test.json 7 | jest.*.js 8 | .prettierrc.js -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.gen.* -------------------------------------------------------------------------------- /.vscode/npc-generator.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".." 5 | } 6 | ], 7 | "settings": { 8 | "editor.formatOnSave": true, 9 | "jestrunner.runOptions": ["--config", "jest.config.js"], 10 | "jestrunner.debugOptions": { 11 | "env": { 12 | "JEST_TIMEOUT": "999999" 13 | }, 14 | "console": "integratedTerminal", 15 | "internalConsoleOptions": "neverOpen", 16 | "disableOptimisticBPs": true, 17 | "sourceMaps": true, 18 | "skipFiles": ["${workspaceFolder}/node_modules/**/*", "/**/*"] 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "typescript", 8 | "label": "tsc", 9 | "tsconfig": "tsconfig.json", 10 | "option": "watch", 11 | "problemMatcher": ["$tsc-watch"], 12 | "runOptions": { 13 | "runOn": "folderOpen" 14 | } 15 | }, 16 | { 17 | "type": "npm", 18 | "script": "test-watch", 19 | "problemMatcher": [] 20 | }, 21 | { 22 | "type": "npm", 23 | "script": "gen", 24 | "problemMatcher": [] 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.0.2 (2022-11-13) 4 | Fix gender attribution in some hooks [#6](https://github.com/Cellule/npc-generator/pull/6) 5 | Medusas will now be a bit shorter like all other female characters [#6](https://github.com/Cellule/npc-generator/pull/6) 6 | 7 | ## 1.0.1 (2022-10-23) 8 | Add repository to package.json 9 | 10 | ## 1.0.0 (2022-10-22) 11 | Initial version of the library to generate a NPC 12 | See https://www.npcgenerator.com/ for example usage of the library -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Étienne Ponton-Bouchard 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Non-Player Character generator 2 | Generator of randomized Non-Player Characters (NPCs) with attributes, in-depth and unique descriptions as well as a plot hook 3 | 4 | ## Usage 5 | 6 | ### Installation 7 | 8 | ```bash 9 | $ npm install npc-generator 10 | ``` 11 | 12 | ### Usage 13 | 14 | ```typescript 15 | import { generate } from "npc-generator"; 16 | 17 | const { npc } = generate(); 18 | ``` 19 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "npc-generator", 3 | "version": "1.0.2", 4 | "description": "Generator of randomized Non-Player Characters (NPCs) with attributes, in-depth and unique descriptions as well as a plot hook", 5 | "keywords": [ 6 | "npc", 7 | "generator" 8 | ], 9 | "homepage": "https://www.npcgenerator.com", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/Cellule/npc-generator.git" 13 | }, 14 | "contributors": [ 15 | { 16 | "name": "Michael Ferris" 17 | }, 18 | { 19 | "name": "Étienne Ponton-Bouchard" 20 | } 21 | ], 22 | "license": "MIT", 23 | "main": "dist/index.js", 24 | "types": "index.d.ts", 25 | "scripts": { 26 | "prepublish": "npm run build & npm test run", 27 | "test": "vitest", 28 | "gen": "node scripts/gen.js", 29 | "clean": "rm -rf dist", 30 | "build": "npm run gen & npm run clean & tsc" 31 | }, 32 | "devDependencies": { 33 | "@types/node": "^20.8.3", 34 | "prettier": "^3.0.3", 35 | "prettier-plugin-organize-imports": "^3.1.1", 36 | "vitest": "^0.34.6", 37 | "typescript": "^5.0.2" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /prettier.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | printWidth: 160, 3 | trailingComma: "all", 4 | overrides: [ 5 | { 6 | files: ["*.ts"], 7 | options: { 8 | parser: "typescript", 9 | plugins: ["prettier-plugin-organize-imports"], 10 | }, 11 | }, 12 | ], 13 | }; 14 | -------------------------------------------------------------------------------- /scripts/gen.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("path"); 3 | 4 | const tables = fs 5 | .readdirSync(path.join(__dirname, "../src/tables")) 6 | .filter((file) => file.endsWith(".json")) 7 | .map((table) => { 8 | const name = table.replace(".json", ""); 9 | // Alias reserved javascript keywords 10 | const alias = name === "class" ? "class_" : name; 11 | return { 12 | alias, 13 | file: table, 14 | exported: name, 15 | }; 16 | }); 17 | 18 | const tableImports = tables.map(({ alias, file }) => `import ${alias} from "./tables/${file}"`).join("\n"); 19 | const tableExports = tables.map(({ alias, exported }) => (alias === exported ? exported : `${exported}: ${alias}`)).join(",\n "); 20 | 21 | const content = `// This file is generated automatically. Do not edit it manually. 22 | ${tableImports} 23 | 24 | export default { 25 | ${tableExports} 26 | }; 27 | `; 28 | 29 | fs.writeFileSync(path.join(__dirname, "../src/tables.data.gen.ts"), content); 30 | -------------------------------------------------------------------------------- /src/groups.ts: -------------------------------------------------------------------------------- 1 | import { operators } from "./operators"; 2 | import { Group } from "./types"; 3 | 4 | function mapGroup(g: string): Group { 5 | //todo: replace escaped \{ and \} 6 | if (g[0] === "{") { 7 | for (const op of operators) { 8 | const m = g.match(op.regex); 9 | if (m) { 10 | return op.makeOperator(m); 11 | } 12 | } 13 | return () => {}; 14 | } 15 | return g; 16 | } 17 | 18 | export const reGroup = /{((\\{|\\}|[^{}])*)}|((\\{|\\}|[^{}])+)/g; 19 | export function getGroups(val: string): Group[] { 20 | if (typeof val !== "string" || val.length === 0) { 21 | throw new Error("Empty value to get group"); 22 | } 23 | val = val.replace("{\\n}", "\n"); 24 | const r = (val.match(reGroup) || []).map((g) => { 25 | const r = mapGroup(g); 26 | if (typeof r !== "string") { 27 | r.original = g; 28 | } 29 | return r; 30 | }); 31 | return r; 32 | } 33 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { generate, getNpcOptionsValues } from "./generate"; 2 | export { debugNodeToString } from "./utils"; 3 | -------------------------------------------------------------------------------- /src/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "options": { 3 | "initialisation": "{$lizardtraits=}{$goliathtraits=}{$kenkuname=}{$beard=}{$sphy1=}{$sphy2=}{$quirks=}{%str=9}{%dex=9}{%con=9}{%int=9}{%wis=9}{%cha=9}{height}{weight}{worship}{hair}{eyecolor}{tendencies}{skin}{face}{race}{occupation}{hooks}{traits}{specialphysical}{quirks}{forcealign}" 4 | }, 5 | "output": { 6 | "description": { 7 | "name": "{$name}", 8 | "kenkuname": "{$kenkuname}", 9 | "age": "{%age}", 10 | "gender": "{$gender}", 11 | "race": "{$race}", 12 | "occupation": "{$occupation}", 13 | "pronounMinus": "{$minPro}", 14 | "pronounCapit": "{$majPro}" 15 | }, 16 | "physical": { 17 | "hair": "{$hair}", 18 | "eyes": "{$eyecolor} eyes", 19 | "skin": "{$skin}{$skintype}", 20 | "height": "{%height}", 21 | "build": "{$build} build", 22 | "face": "{$face} face{$beard}", 23 | "special1": "{$sphy1}", 24 | "special2": "{$sphy2}" 25 | }, 26 | "alignment": { 27 | "good": "{%good}", 28 | "moralneutral": "{%moralneutral}", 29 | "evil": "{%evil}", 30 | "lawful": "{%lawful}", 31 | "ethicalneutral": "{%ethicalneutral}", 32 | "chaotic": "{%chaotic}" 33 | }, 34 | "relationship": { 35 | "orientation": "{orientation}", 36 | "status": "{relationshipstatus}" 37 | }, 38 | "religion": { 39 | "description": [ 40 | { "w": 8, "v": "{$majPro}{$worship} worships {$god}{$goddescr}" }, 41 | { "w": 1, "v": "{$majPro}doesn't worship any god." } 42 | ] 43 | }, 44 | "ptraits": { 45 | "traitslizards": "{$lizardtraits}", 46 | "traitsgoliaths": "{$goliathtraits}", 47 | "traits1": "{$traits1}", 48 | "traits2": "{$traits2}" 49 | }, 50 | "pquirks": { 51 | "description": "{$quirks}" 52 | }, 53 | "hook": { 54 | "description": "{$hook}" 55 | }, 56 | "abilities": { 57 | "charisma": "{%cha}", 58 | "constitution": "{%con}", 59 | "dexterity": "{%dex}", 60 | "intelligence": "{%int}", 61 | "strength": "{%str}", 62 | "wisdom": "{%wis}" 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/staticAnalysis.ts: -------------------------------------------------------------------------------- 1 | export class AnalysisNode { 2 | name: string; 3 | type: string; 4 | constructor(name: string, type: string) { 5 | this.name = name; 6 | this.type = type; 7 | } 8 | } 9 | 10 | export class Definition extends AnalysisNode {} 11 | export class Use extends AnalysisNode {} 12 | 13 | export class StringDef extends Definition { 14 | constructor(name: string) { 15 | super(name, "string"); 16 | } 17 | } 18 | 19 | export class NumberDef extends Definition { 20 | constructor(name: string) { 21 | super(name, "number"); 22 | } 23 | } 24 | 25 | export class StringUse extends Use { 26 | constructor(name: string) { 27 | super(name, "string"); 28 | } 29 | } 30 | 31 | export class NumberUse extends Use { 32 | constructor(name: string) { 33 | super(name, "number"); 34 | } 35 | } 36 | 37 | export interface StaticAnalysis { 38 | def?: Definition[]; 39 | use?: Use[]; 40 | table?: string; 41 | } 42 | -------------------------------------------------------------------------------- /src/tables.ts: -------------------------------------------------------------------------------- 1 | import { GenerateOptionValueSimple } from "../index.d"; 2 | import { getGroups } from "./groups"; 3 | import data from "./tables.data.gen"; 4 | import { Option } from "./types"; 5 | 6 | interface TableEntry { 7 | w: number; 8 | options: Option[]; 9 | } 10 | 11 | interface Tables { 12 | [name: string]: TableEntry; 13 | } 14 | const tables = {} as Tables; 15 | 16 | // We can't initialize synchronously because of cyclic imports between tables and utils 17 | let lazyInitializeTables: (() => void) | undefined = () => { 18 | lazyInitializeTables = undefined; 19 | for (const [name, table] of Object.entries(data)) { 20 | let totalWeight = 0; 21 | const options = table.map((row) => { 22 | const w = row.w > 0 ? row.w : 0; 23 | totalWeight += w; 24 | return { 25 | ...row, 26 | w, 27 | v: getGroups(row.v) || [], 28 | original: row.v, 29 | }; 30 | }); 31 | setTable(name, { w: totalWeight, options }); 32 | } 33 | }; 34 | 35 | export function getTableNames() { 36 | lazyInitializeTables?.(); 37 | return Object.keys(tables); 38 | } 39 | 40 | export function setTable(name: string, table: TableEntry) { 41 | tables[name] = table; 42 | } 43 | 44 | export function getTable(tableName: string) { 45 | lazyInitializeTables?.(); 46 | if (!(tableName in tables)) { 47 | throw new Error(`Unable to find table [${tableName}]`); 48 | } 49 | return tables[tableName]; 50 | } 51 | 52 | interface NamedOption extends Option { 53 | name?: string; 54 | } 55 | interface TableReferenceOption extends NamedOption { 56 | table?: string; 57 | } 58 | 59 | export function getNamedTableOptions(tableName: string): GenerateOptionValueSimple { 60 | const options = getTable(tableName).options as NamedOption[]; 61 | return options.map((o, i) => ({ name: o.name!, value: i })).filter((o) => !!o.name); 62 | } 63 | 64 | export function getTableReferenceOptions(tableName: string): { name: string; table: string; value: number }[] { 65 | const options = getTable(tableName).options as TableReferenceOption[]; 66 | for (const opt of options) { 67 | if (!("table" in opt)) { 68 | throw new Error(`Missing "table" property in table ${tableName} option ${opt.original}`); 69 | } 70 | } 71 | return options 72 | .map((o, i) => ({ 73 | name: o.name!, 74 | value: i, 75 | table: o.table!, 76 | })) 77 | .filter((o) => !!o.name); 78 | } 79 | 80 | export function getTableWeight(tableName: string) { 81 | return getTable(tableName).w; 82 | } 83 | 84 | export function getTableOptions(tableName: string) { 85 | return getTable(tableName).options; 86 | } 87 | -------------------------------------------------------------------------------- /src/tables/aasimarevilquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread misery and despair. }" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread lies and fear. }{%int+3}" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread sadness and sorrow. }" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to raise an army of followers. }{%cha+2}" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to eradicate good aasimars. }" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to eradicate followers of good gods. }" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks mindless destruction }{%chaotic+3}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/aasimargoodorevil.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{%good+3}{%moralneutral-2}{%evil-3}{aasimargoodquirk}" }, 3 | { "w": 2, "v": "{%good-3}{%moralneutral-2}{%evil+3}{getevilgod}{aasimarevilquirk}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/aasimargoodquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread compassion and hope. }{%good+2}" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread knowledge and wisdom. }{%int+2}{%wis+2}" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to spread humor and joy. }{%cha+2}" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to teach people how to fight against evil. }{%int+2}" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to forgive and reform evil creatures. }{%good+2}" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to eradicate evil in all its forms. }{%chaotic+2}" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to destroy fallen aasimars. }{%chaotic+2}" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to punish wrongdoers. }{%lawful+2}" }, 10 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to nurture }{$quirks+$minPoss}{$quirks+community and help it grow.}" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+seeks to undo all of evil's misdeeds. }" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/abstractword.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$aword=bravery}" }, 3 | { "w": 1, "v": "{$aword=fear}" }, 4 | { "w": 1, "v": "{$aword=pain}" }, 5 | { "w": 1, "v": "{$aword=freedom}" }, 6 | { "w": 1, "v": "{$aword=happiness}" }, 7 | { "w": 1, "v": "{$aword=joy}" }, 8 | { "w": 1, "v": "{$aword=death}" }, 9 | { "w": 1, "v": "{$aword=life}" }, 10 | { "w": 1, "v": "{$aword=daylight}" }, 11 | { "w": 1, "v": "{$aword=night}" }, 12 | { "w": 1, "v": "{$aword=philosophy}" }, 13 | { "w": 1, "v": "{$aword=music}" }, 14 | { "w": 1, "v": "{$aword=love}" } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tables/age.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%age=14}{%dex+2}{%height-25}{$beard=}" }, 3 | { "w": 1, "v": "{%age=15}{%dex+2}{%height-8}{$beard=}" }, 4 | { "w": 1, "v": "{%age=16}{%dex+1}{%height-5}{$beard=}" }, 5 | { "w": 2, "v": "{%age=18}{%str+1}{%con+1}{%height-2}{$beard=}" }, 6 | { "w": 2, "v": "{%age=20}{%str+2}{%con+2}" }, 7 | { "w": 2, "v": "{%age=23}{%str+2}{%con+2}" }, 8 | { "w": 2, "v": "{%age=26}{%str+2}{%con+2}" }, 9 | { "w": 2, "v": "{%age=29}{%str+1}{%con+1}" }, 10 | { "w": 2, "v": "{%age=32}{%str+1}{%con+1}" }, 11 | { "w": 2, "v": "{%age=35}" }, 12 | { "w": 2, "v": "{%age=38}{%int+1}{%wis+1}{%dex-1}" }, 13 | { "w": 2, "v": "{%age=41}{%int+1}{%wis+1}{%dex-1}" }, 14 | { "w": 2, "v": "{%age=44}{%int+1}{%wis+1}{%dex-1}" }, 15 | { "w": 2, "v": "{%age=47}{%int+1}{%wis+1}{%str-1}{%con-1}{%dex-1}" }, 16 | { "w": 2, "v": "{%age=50}{%int+1}{%wis+1}{%str-1}{%con-1}{%dex-1}" }, 17 | { "w": 2, "v": "{%age=53}{%int+1}{%wis+2}{%str-1}{%con-1}{%dex-1}" }, 18 | { "w": 1, "v": "{%age=56}{%int+1}{%wis+2}{%str-1}{%con-1}{%dex-1}{%height-3}" }, 19 | { "w": 1, "v": "{%age=59}{%int+1}{%wis+2}{%str-1}{%con-1}{%dex-1}{%height-3}" }, 20 | { "w": 1, "v": "{%age=62}{%int+2}{%wis+3}{%str-2}{%con-2}{%dex-2}{%height-3}" }, 21 | { "w": 1, "v": "{%age=65}{%int+2}{%wis+3}{%str-2}{%con-2}{%dex-2}{%height-3}" }, 22 | { "w": 1, "v": "{%age=70}{%int+2}{%wis+3}{%str-2}{%con-2}{%dex-2}{%height-3}" }, 23 | { "w": 1, "v": "{%age=75}{%int+1}{%wis+3}{%str-2}{%con-2}{%dex-2}{%height-3}" }, 24 | { "w": 1, "v": "{%age=80}{%int+1}{%wis+3}{%str-2}{%con-3}{%dex-3}{%height-5}" }, 25 | { "w": 1, "v": "{%age=90}{%wis+4}{%str-3}{%con-3}{%dex-4}{%height-5}" } 26 | ] 27 | -------------------------------------------------------------------------------- /src/tables/ageBonus.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%age+%age}{%age+%age}" }, 3 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+1}" }, 4 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+2}" }, 5 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+3}" }, 6 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+4}" }, 7 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+5}" }, 8 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+6}" }, 9 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+7}" }, 10 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+8}" }, 11 | { "w": 1, "v": "{%age+%age}{%age+%age}{%age+9}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/alignment.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%align=0}" }, 3 | { "w": 3, "v": "{%align=1}" }, 4 | { "w": 4, "v": "{%align=2}" }, 5 | { "w": 3, "v": "{%align=3}" }, 6 | { "w": 2, "v": "{%align=4}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/aliment.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$sphy2+nuts}" }, 3 | { "w": 1, "v": "{$sphy2+bread}" }, 4 | { "w": 4, "v": "{$sphy2+gluten}" }, 5 | { "w": 1, "v": "{$sphy2+rice}" }, 6 | { "w": 1, "v": "{$sphy2+carrots}" }, 7 | { "w": 1, "v": "{$sphy2+fruits}" }, 8 | { "w": 1, "v": "{$sphy2+apples}" }, 9 | { "w": 1, "v": "{$sphy2+berries}" }, 10 | { "w": 1, "v": "{$sphy2+tomatoes}" }, 11 | { "w": 1, "v": "{$sphy2+strawberries}" }, 12 | { "w": 1, "v": "{$sphy2+blueberries}" }, 13 | { "w": 1, "v": "{$sphy2+milk}" }, 14 | { "w": 1, "v": "{$sphy2+eggs}" }, 15 | { "w": 1, "v": "{$sphy2+sheep}" }, 16 | { "w": 1, "v": "{$sphy2+chicken}" }, 17 | { "w": 1, "v": "{$sphy2+peanuts}" }, 18 | { "w": 1, "v": "{$sphy2+beef}" }, 19 | { "w": 1, "v": "{$sphy2+meat}" }, 20 | { "w": 1, "v": "{$sphy2+red meat}" }, 21 | { "w": 1, "v": "{$sphy2+salmon}" }, 22 | { "w": 1, "v": "{$sphy2+fish}" }, 23 | { "w": 1, "v": "{$sphy2+crab}" }, 24 | { "w": 1, "v": "{$sphy2+scallops}" }, 25 | { "w": 1, "v": "{$sphy2+sea fruits}" }, 26 | { "w": 1, "v": "{$sphy2+lobster}" } 27 | ] 28 | -------------------------------------------------------------------------------- /src/tables/amonster.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 13, "v": "{$monster=a }{monster1}" }, 3 | { "w": 2, "v": "{$monster=an }{monster2}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/archdevil.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$devil=the archdevil Bel}" }, 3 | { "w": 1, "v": "{$devil=the archdevil Dispater}" }, 4 | { "w": 1, "v": "{$devil=the archdevil Mammon}" }, 5 | { "w": 1, "v": "{$devil=the archdevil Fierna}" }, 6 | { "w": 1, "v": "{$devil=the archdevil Belial}" }, 7 | { "w": 1, "v": "{$devil=the archdevil Prince Levistus}" }, 8 | { "w": 1, "v": "{$devil=the archdevil Glasya}" }, 9 | { "w": 1, "v": "{$devil=the archdevil Baalzebul}" }, 10 | { "w": 1, "v": "{$devil=the archdevil Mephistopheles}" }, 11 | { "w": 1, "v": "{$devil=the archdevil Asmodeus}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/atattooadj.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 10, "v": "{$tadj=a }" }, 3 | { "w": 4, "v": "{$tadj=an unfinished }" }, 4 | { "w": 2, "v": "{$tadj=a small }" }, 5 | { "w": 2, "v": "{$tadj=a large }" }, 6 | { "w": 2, "v": "{$tadj=a tiny }" }, 7 | { "w": 1, "v": "{$tadj=an elaborate }" }, 8 | { "w": 1, "v": "{$tadj=a beautiful }" }, 9 | { "w": 1, "v": "{$tadj=a badly done }" }, 10 | { "w": 1, "v": "{$tadj=a colorful }" }, 11 | { "w": 1, "v": "{$tadj=a complicated }" }, 12 | { "w": 1, "v": "{$tadj=a shocking }" }, 13 | { "w": 1, "v": "{$tadj=a provocative }" }, 14 | { "w": 1, "v": "{$tadj=a bland }" }, 15 | { "w": 1, "v": "{$tadj=an exceptional }" } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/attractiveness.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 6, "v": "{goodfacemod}{goodlooking}{$faceshape+$mod}" }, 3 | { "w": 14, "v": "{goodlooking}" }, 4 | { "w": 4, "v": "{badfacemod}{badlooking}{$faceshape+$mod}" }, 5 | { "w": 10, "v": "{badlooking}" }, 6 | { "w": 8, "v": "{mod}{normallooking}{$faceshape+$mod}" }, 7 | { "w": 30, "v": "{normallooking}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/badfacemod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$mod=slightly }{%cha-1}" }, 3 | { "w": 2, "v": "{$mod=very }{%cha-2}" }, 4 | { "w": 1, "v": "{$mod=incredibly }{%cha-3}" }, 5 | { "w": 1, "v": "{$mod=extremely }{%cha-4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/badlooking.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$attractiveness=asymmetrical}" }, 3 | { "w": 1, "v": "{$attractiveness=ugly}" }, 4 | { "w": 1, "v": "{$attractiveness=repulsive}" }, 5 | { "w": 1, "v": "{$attractiveness=pockmarked}" }, 6 | { "w": 1, "v": "{$attractiveness=hideous}" }, 7 | { "w": 1, "v": "{$attractiveness=repugnant}" }, 8 | { "w": 1, "v": "{$attractiveness=bulbous}" }, 9 | { "w": 1, "v": "{$attractiveness=awful}" }, 10 | { "w": 1, "v": "{$attractiveness=disfigured}" }, 11 | { "w": 1, "v": "{$attractiveness=revolting}" }, 12 | { "w": 1, "v": "{$attractiveness=disgusting}" }, 13 | { "w": 2, "v": "{$attractiveness=creepy}" }, 14 | { "w": 3, "v": "{$attractiveness=mediocre}" } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tables/badsmell.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 8, "v": "{$sphy1+of sweat}" }, 3 | { "w": 2, "v": "{$sphy1+of dogs}" }, 4 | { "w": 2, "v": "{$sphy1+of garbage}" }, 5 | { "w": 2, "v": "{$sphy1+of horses}" }, 6 | { "w": 2, "v": "{$sphy1+of sewage}" }, 7 | { "w": 1, "v": "{$sphy1+of cabbage}" }, 8 | { "w": 1, "v": "{$sphy1+of sour milk}" }, 9 | { "w": 2, "v": "{$sphy1+of dirt}" }, 10 | { "w": 4, "v": "{$sphy1+of unwashed clothes}" }, 11 | { "w": 4, "v": "{$sphy1+of tobacco}" }, 12 | { "w": 4, "v": "{$sphy1+of alcohol}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/beard.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{beardlength}{beardshape}" }, 3 | { "w": 3, "v": "{$beard=}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/beardlength.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 6, "v": "{$beard= with a very short}" }, 3 | { "w": 8, "v": "{$beard= with a short}" }, 4 | { "w": 6, "v": "{$beard= with a medium}" }, 5 | { "w": 3, "v": "{$beard= with a long}" }, 6 | { "w": 2, "v": "{$beard= with a long, braided}" }, 7 | { "w": 1, "v": "{$beard= with a very long}" }, 8 | { "w": 1, "v": "{$beard= with a very long, braided}" }, 9 | { "w": 1, "v": "{$beard= with a gigantic}" }, 10 | { "w": 1, "v": "{$beard= with a gigantic, braided}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/beardshape.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$beard+ chinstrap beard}" }, 3 | { "w": 1, "v": "{$beard+ neckbeard}" }, 4 | { "w": 12, "v": "{$beard+ beard}" }, 5 | { "w": 2, "v": "{$beard+ squared beard}" }, 6 | { "w": 2, "v": "{$beard+ goatee}" }, 7 | { "w": 2, "v": "{$beard+ spotty beard}" }, 8 | { "w": 2, "v": "{$beard+ sideburns}" }, 9 | { "w": 1, "v": "{$beard+ goat patch beard}" }, 10 | { "w": 1, "v": "{$beard+ soul patch}" }, 11 | { "w": 1, "v": "{$beard+ german goatee}" }, 12 | { "w": 1, "v": "{$beard+ mutton chops beard}" }, 13 | { "w": 1, "v": "{$beard+ chin strap}" }, 14 | { "w": 1, "v": "{$beard+ van dyke beard}" }, 15 | { "w": 1, "v": "{$beard+ handlebar moustache}" }, 16 | { "w": 1, "v": "{$beard+ pencil moustache}" }, 17 | { "w": 1, "v": "{$beard+ fu manchu moustache}" }, 18 | { "w": 5, "v": "{$beard+ moustache}" } 19 | ] 20 | -------------------------------------------------------------------------------- /src/tables/bodypart.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{rl}{$bp=$rl}{bodypart1}" }, 3 | { "w": 1, "v": "{bodypart2}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/bodypart1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$bp+arm}" }, 3 | { "w": 5, "v": "{$bp+hand}" }, 4 | { "w": 1, "v": "{$bp+leg}" }, 5 | { "w": 2, "v": "{$bp+foot}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/bodypart2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$bp=neck}" }, 3 | { "w": 3, "v": "{$bp=chest}" }, 4 | { "w": 4, "v": "{head}" }, 5 | { "w": 3, "v": "{$bp=back}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/bodyparttat.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{rl}{$bp=$rl}{bodypart1}" }, 3 | { "w": 1, "v": "{bodypart2}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/brand.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 8, "v": "{$sphy1+slave}" }, 3 | { "w": 2, "v": "{$sphy1+felon}" }, 4 | { "w": 5, "v": "{$sphy1+prisoner}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/class.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "name": "Artificier", "v": "{$occupation=artificier}{medStr}{medDex}{medCon}{hiInt}{medWis}{medCha}{richquirk}{weirdQuirk}{kenkunamemetal}" }, 3 | { 4 | "w": 3, 5 | "name": "Barbarian", 6 | "v": "{$occupation=barbarian}{hiStr}{medDex}{hiCon}{lowInt}{lowWis}{medCha}{%moralneutral+2}{%chaotic+2}{%lawful-1}{poorquirk}{militaryquirk}{kenkunamefighting}" 7 | }, 8 | { "w": 4, "name": "Bard", "v": "{$occupation=bard}{medStr}{hiDex}{medCon}{hiInt}{lowWis}{hiCha}{richquirk}{kenkuname}" }, 9 | { "w": 9, "name": "Cleric", "v": "{$occupation=cleric}{medStr}{lowDex}{hiCon}{medInt}{hiWis}{medCha}{religiousquirk}{kenkuname}" }, 10 | { 11 | "w": 2, 12 | "name": "Druid", 13 | "v": "{$occupation=druid}{lowStr}{medDex}{medCon}{medInt}{hiWis}{medCha}{%good-2}{%evil-2}{%lawful-2}{%chaotic-2}{%moralneutral+2}{%ethicalneutral+2}{religiousquirk}{naturequirk}{kenkunameanimal}" 14 | }, 15 | { "w": 12, "name": "Fighter", "v": "{$occupation=fighter}{hiStr}{medDex}{hiCon}{lowInt}{medWis}{medCha}{militaryquirk}{kenkunamefighting}" }, 16 | { 17 | "w": 6, 18 | "name": "Monk", 19 | "v": "{$occupation=monk}{hiStr}{hiDex}{hiCon}{medInt}{hiWis}{medCha}{%ethicalneutral-2}{%chaotic-2}{%lawful+2}{militaryquirk}{kenkunamequiet}" 20 | }, 21 | { "w": 3, "name": "Mystic", "v": "{$occupation=mystic}{lowStr}{medDex}{lowCon}{hiInt}{hiWis}{medCha}{weirdQuirk}{kenkunamequiet}" }, 22 | { 23 | "w": 8, 24 | "name": "Paladin", 25 | "v": "{$occupation=paladin}{hiStr}{lowDex}{hiCon}{lowInt}{medWis}{hiCha}{%evil-3}{%chaotic-1}{%lawful+3}{%good+3}{religiousquirk}{militaryquirk}{kenkuname}" 26 | }, 27 | { 28 | "w": 3, 29 | "name": "Ranger", 30 | "v": "{$occupation=ranger}{medStr}{hiDex}{hiCon}{lowInt}{medWis}{medCha}{%moralneutral+2}{%chaotic+2}{naturequirk}{kenkunameanimal}" 31 | }, 32 | { "w": 5, "name": "Rogue", "v": "{$occupation=rogue}{lowStr}{hiDex}{medCon}{hiInt}{lowWis}{medCha}{%chaotic+3}{%evil+1}{poorquirk}{kenkuname}" }, 33 | { "w": 2, "name": "Sorcerer", "v": "{$occupation=sorcerer}{lowStr}{medDex}{medCon}{medInt}{medWis}{hiCha}{weirdQuirk}{kenkunamequiet}" }, 34 | { "w": 2, "name": "Warlock", "v": "{$occupation=warlock}{lowStr}{medDex}{medCon}{medInt}{lowWis}{hiCha}{%evil+1}{weirdQuirk}{kenkuname}" }, 35 | { "w": 3, "name": "Wizard", "v": "{$occupation=wizard}{lowStr}{medDex}{medCon}{hiInt}{medWis}{lowCha}{richquirk}{weirdQuirk}{kenkunamequiet}" } 36 | ] 37 | -------------------------------------------------------------------------------- /src/tables/collection.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$quirks+old pennies. }" }, 3 | { "w": 1, "v": "{$quirks+teeth from cadavers. }{%evil+1}" }, 4 | { "w": 2, "v": "{$quirks+cute rocks. }" }, 5 | { "w": 2, "v": "{$quirks+weird bones. }" }, 6 | { "w": 2, "v": "{$quirks+bottle corks. }" }, 7 | { "w": 2, "v": "{$quirks+iridescent feathers. }" }, 8 | { "w": 2, "v": "{$quirks+sea shells. }" }, 9 | { "w": 2, "v": "{$quirks+dried rose petals. }" }, 10 | { "w": 1, "v": "{$quirks+tiny animal skulls. }{%evil+1}" }, 11 | { "w": 2, "v": "{$quirks+handkerchiefs. }" }, 12 | { "w": 2, "v": "{$quirks+buttons. }" }, 13 | { "w": 2, "v": "{$quirks+thimbles. }" }, 14 | { "w": 2, "v": "{$quirks+labels. }" } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tables/color.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$color=blue}" }, 3 | { "w": 1, "v": "{$color=red}" }, 4 | { "w": 1, "v": "{$color=green}" }, 5 | { "w": 1, "v": "{$color=yellow}" }, 6 | { "w": 1, "v": "{$color=pink}" }, 7 | { "w": 1, "v": "{$color=brown}" }, 8 | { "w": 2, "v": "{$color=black}" }, 9 | { "w": 2, "v": "{$color=white}" }, 10 | { "w": 1, "v": "{$color=gray}" }, 11 | { "w": 1, "v": "{$color=purple}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/contest.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$hook+horse riding contest}" }, 3 | { "w": 2, "v": "{$hook+drinking competition}" }, 4 | { "w": 2, "v": "{$hook+hunting competition}" }, 5 | { "w": 2, "v": "{$hook+monster slaying tournament}" }, 6 | { "w": 2, "v": "{$hook+shooting contest}" }, 7 | { "w": 4, "v": "{$hook+fighting competition}" }, 8 | { "w": 2, "v": "{$hook+hot coals race}" }, 9 | { "w": 2, "v": "{$hook+book reading competition}" }, 10 | { "w": 2, "v": "{$hook+grand melee tournament}" }, 11 | { "w": 2, "v": "{$hook+pie eating competition}" }, 12 | { "w": 3, "v": "{$hook+race}" }, 13 | { "w": 2, "v": "{$hook+pumpkin tossing contest}" }, 14 | { "w": 2, "v": "{$hook+rock throwing competition}" }, 15 | { "w": 2, "v": "{$hook+tree trunk tossing contest}" } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/degree.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$degree=a slight }" }, 3 | { "w": 2, "v": "{$degree=a light }" }, 4 | { "w": 5, "v": "{$degree=a }" }, 5 | { "w": 2, "v": "{$degree=an impressive }" }, 6 | { "w": 2, "v": "{$degree=a heavy }" }, 7 | { "w": 1, "v": "{$degree=a severe }" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/degree2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$degree=lightly }" }, 3 | { "w": 2, "v": "{$degree=slightly }" }, 4 | { "w": 5, "v": "{$degree=}" }, 5 | { "w": 3, "v": "{$degree=heavily }" }, 6 | { "w": 2, "v": "{$degree=severely }" }, 7 | { "w": 1, "v": "{$degree=mightily }" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/demongod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$god=the demon prince Baphomet}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of minotaurs, beasts, vengeance. (Chaotic Evil)}" }, 3 | { "w": 1, "v": "{$god=the demon prince Demogorgon, the Iron Duke}{%chaotic+3}{%evil+3}{$goddescr=, Prince of Demons. (Chaotic Evil)}" }, 4 | { "w": 1, "v": "{$god=the demon prince Eltab}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of hatred, retribution. (Chaotic Evil)}" }, 5 | { "w": 1, "v": "{$god=the demon prince Graz'zt}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of darkness, seduction, guilde, debauchery. (Chaotic Evil)}" }, 6 | { "w": 1, "v": "{$god=the demon prince Kostchtchie}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of frost giants, wrath, rage. (Chaotic Evil)}" }, 7 | { "w": 1, "v": "{$god=the demon prince Orcus}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of undeath. (Chaotic Evil)}" }, 8 | { 9 | "w": 1, 10 | "v": "{$god=the demon prince Pazrael, the Archduchess }{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of evil flying creatures, corruption. (Chaotic Evil)}" 11 | }, 12 | { 13 | "w": 1, 14 | "v": "{$god=the demon prince Sess'Innek, the Slug Archduke}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of khaastas, lizard kings, civilization, domination. (Chaotic Evil)}" 15 | }, 16 | { "w": 1, "v": "{$god=the demon prince Yeenoghu}{%chaotic+3}{%evil+3}{$goddescr=, Demon lord of gnolls. (Chaotic Evil)}" } 17 | ] 18 | -------------------------------------------------------------------------------- /src/tables/devilgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$god=the archdevil Bel}{%lawful+2}{%evil+3}{$goddescr=, Lord of the First. (Lawful Evil)}" }, 3 | { "w": 1, "v": "{$god=the archdevil Dispater, the Iron Duke}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Second. (Lawful Evil)}" }, 4 | { "w": 1, "v": "{$god=the archdevil Mammon}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Third. (Lawful Evil)}" }, 5 | { "w": 1, "v": "{$god=the archdevil Fierna}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Fourth. (Lawful Evil)}" }, 6 | { "w": 1, "v": "{$god=the archdevil Belial}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Fourth. (Lawful Evil)}" }, 7 | { "w": 1, "v": "{$god=the archdevil Prince Levistus}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Fifth. (Lawful Evil)}" }, 8 | { "w": 1, "v": "{$god=the archdevil Glasya, the Archduchess}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Sixth. (Lawful Evil)}" }, 9 | { "w": 1, "v": "{$god=the archdevil Baalzebul, the Slug Archduke}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Seventh. (Lawful Evil)}" }, 10 | { "w": 1, "v": "{$god=the archdevil Mephistopheles}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Eighth. (Lawful Evil)}" }, 11 | { "w": 1, "v": "{$god=the archdevil Asmodeus}{%lawful+2}{%evil+3}{$goddescr=, Lord of the Ninth. (Lawful Evil)}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/dragonborngender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{dragonbornname}" }, 3 | { "w": 1, "v": "{female}{dragonbornname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/dragongod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$god=Asgorath}{$goddescr=, the Ninefold Dragon, head deity of dragonkind.(All alignments)}" }, 3 | { "w": 1, "v": "{$god=Astilabor}{%moralneutral+2}{%lawful+2}{$goddescr=, Goddess of acquisitiveness, status, wealth. (Lawful Neutral)}" }, 4 | { "w": 1, "v": "{$god=Bahamut}{%lawful+2}{%good+2}{$goddescr=, God of good dragons, wind, wisdom, justice. (Lawful Good)}" }, 5 | { "w": 1, "v": "{$god=Faluzure}{%chaotic+2}{%evil+2}{$goddescr=, God of decay, undeath, exhaustion. (Chaotic Evil)}" }, 6 | { "w": 1, "v": "{$god=Garyx}{%chaotic+2}{%evil+2}{$goddescr=, God of fire, destruction, renewal. (Chaotic Evil)}" }, 7 | { "w": 1, "v": "{$god=Hlal}{%chaotic+2}{%moralneutral+2}{$goddescr=, Goddess of humor, tricks, messages. (Chaotic Neutral)}" }, 8 | { "w": 1, "v": "{$god=Kereska}{%good+2}{%ethicalneutral+2}{$goddescr=, Goddess of dragon magic and magical creativity. (Neutral Good)}" }, 9 | { "w": 1, "v": "{$god=Lendys}{%moralneutral+2}{%lawful+2}{$goddescr=, God of balance, justice. (Lawful Neutral)}" }, 10 | { "w": 1, "v": "{$god=Tamara}{%lawful+2}{%good+2}{$goddescr=, Goddess of life, light, mercy. (Lawful Good)}" }, 11 | { "w": 1, "v": "{$god=Task}{%chaotic+2}{%moralneutral+2}{$goddescr=, God of greed, selfishness. (Chaotic Neutral)}" }, 12 | { "w": 4, "v": "{$god=Zorquan}{$goddescr=, God of the essence of dragons.(All alignments)}" }, 13 | { "w": 15, "v": "{humangod}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/dragonhair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$hair=a spiked head and }" }, 3 | { "w": 3, "v": "{$hair=a ridged head and }" }, 4 | { "w": 3, "v": "{$hair=a crested head and }" }, 5 | { "w": 3, "v": "{$hair=a bumpy head and }" }, 6 | { "w": 3, "v": "{$hair=a plated head and }" }, 7 | { "w": 1, "v": "{$hair=a bright frill and }" }, 8 | { "w": 1, "v": "{$hair=a colorful frill and }" }, 9 | { "w": 1, "v": "{$hair=a dark frill and }" }, 10 | { "w": 1, "v": "{$hair=a bony frill and }" }, 11 | { "w": 8, "v": "{$hair=a smooth head and }" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/dragonquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 18, "v": "{$quirks+}" }, 3 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+never asks for help. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+seeks extreme mastery of what }{$quirks+$minPro}{$quirks+does. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+sees other races as inferior. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+keeps all of }{$quirks+$minPoss}{$quirks+promises. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+despises fear and cowardice. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+treats adversaries with respect. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+values honor above all. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+cannot use }{$quirks+$minPoss}{$quirks+breath weapon. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a secret dragon master. }" }, 12 | { "w": 6, "v": "{$quirks+$majPro}{$quirks+values }{$quirks+$minPoss}{$quirks+clan above anything else. }" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/dragons.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$dragon=black}" }, 3 | { "w": 1, "v": "{$dragon=blue}" }, 4 | { "w": 1, "v": "{$dragon=brass}" }, 5 | { "w": 1, "v": "{$dragon=bronze}" }, 6 | { "w": 1, "v": "{$dragon=copper}" }, 7 | { "w": 1, "v": "{$dragon=gold}" }, 8 | { "w": 1, "v": "{$dragon=green}" }, 9 | { "w": 1, "v": "{$dragon=red}" }, 10 | { "w": 1, "v": "{$dragon=silver}" }, 11 | { "w": 1, "v": "{$dragon=white}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/dragonskin.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{dragons}{scaletexture}{$skin=$scaletexture}{$skin+ }{$skin+$dragon}{$skintype= scales}" }] 2 | -------------------------------------------------------------------------------- /src/tables/drowgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$god=Lolth}{%chaotic+2}{%evil+2}{$goddescr=, Goddess of drows, spiders, darkness, chaos, evil, assassination. (Chaotic Evil)}" }, 3 | { 4 | "w": 1, 5 | "v": "{$god=Ghaunadaur}{%chaotic+2}{%evil+2}{$goddescr=, Patron of abominations, oozes, slimes, jellies, outcasts, ropers and rebels. (Chaotic Evil)}" 6 | }, 7 | { "w": 4, "v": "{humangod}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/drowquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 30, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is disgusted by human architecture. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't understand patriarchal society. }" }, 5 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+feels more comfortable when away from the sun. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is secretly captivated by humans. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a deep knowledge of ancient secrets. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a deep knowledge of ancient magic. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+knows all the best ways to torture someone. }{%evil+3}" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+enjoys torturing small animals. }{%evil+2}" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will only speak common if absolutely forced to. }" }, 12 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+never knows the current time and date. }" }, 13 | { "w": 3, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ uses terms from a different language as }{$quirks+$minPro}{$quirks+speaks. }" }, 14 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+is always late. }" }, 15 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is deeply xenophobic. }" } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/dwarfgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{maledwarfname}{dwarfsurname}" }, 3 | { "w": 1, "v": "{female}{femaledwarfname}{dwarfsurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/dwarfgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$god=Moradin}{$goddescr=, God of dwarves, creation, smithing, protection, metalcraft, stonework. (Lawful Good)}" }, 3 | { "w": 2, "v": "{humangod}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/dwarfquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 40, "v": "{$quirks+}" }, 3 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always has a good ale at hand. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+feels ill at ease in open spaces. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is more comfortable underground. }" }, 6 | { "w": 4, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ hums old dwarven songs. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+misses the world as }{$quirks+$minPro}{$quirks+used to know it. }" }, 8 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+is strongly rooted within tradition. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will take on any bet while drinking. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is always covered in dirt. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has almost never been above ground. }" }, 12 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+doesn't feel comfortable when away from }{$quirks+$minPoss}{$quirks+axe. }" }, 13 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is always seen sharpening }{$quirks+$minPoss}{$quirks+axe. }" }, 14 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+cannot take a halfling seriously. }" }, 15 | { "w": 5, "v": "{$quirks+$majPro}{$quirks+harbours a deep hatred of orcs and goblins. }" }, 16 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has gemcutting as a hobby. }" }, 17 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is secretly captivated by elves. }" } 18 | ] 19 | -------------------------------------------------------------------------------- /src/tables/dwarfsurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Strongmaster}" }, 3 | { "w": 1, "v": "{$name+ Brightmaker}" }, 4 | { "w": 1, "v": "{$name+ Minebreaker}" }, 5 | { "w": 1, "v": "{$name+ Earthdelver}" }, 6 | { "w": 1, "v": "{$name+ Brightmaster}" }, 7 | { "w": 1, "v": "{$name+ Forgemaul}" }, 8 | { "w": 1, "v": "{$name+ Bonegrip}" }, 9 | { "w": 1, "v": "{$name+ Forgegrog}" }, 10 | { "w": 1, "v": "{$name+ Brickbrow}" }, 11 | { "w": 1, "v": "{$name+ Frostmail}" }, 12 | { "w": 1, "v": "{$name+ Metalbreaker}" }, 13 | { "w": 1, "v": "{$name+ Sapphirebraids}" }, 14 | { "w": 1, "v": "{$name+ Magmabrew}" }, 15 | { "w": 1, "v": "{$name+ Hammermail}" }, 16 | { "w": 1, "v": "{$name+ Underfury}" }, 17 | { "w": 1, "v": "{$name+ Kegshaper}" }, 18 | { "w": 1, "v": "{$name+ Mountainriver}" }, 19 | { "w": 1, "v": "{$name+ Merrybringer}" }, 20 | { "w": 1, "v": "{$name+ Goldback}" }, 21 | { "w": 1, "v": "{$name+ Drakegut}" }, 22 | { "w": 1, "v": "{$name+ Steelback}" }, 23 | { "w": 1, "v": "{$name+ Wraithmail}" }, 24 | { "w": 1, "v": "{$name+ Noblebringer}" }, 25 | { "w": 1, "v": "{$name+ Reddigger}" }, 26 | { "w": 1, "v": "{$name+ Wyvernflayer}" }, 27 | { "w": 1, "v": "{$name+ Hardhelm}" }, 28 | { "w": 1, "v": "{$name+ Bottlehelm}" }, 29 | { "w": 1, "v": "{$name+ Smeltmaster}" }, 30 | { "w": 1, "v": "{$name+ Coalgrog}" }, 31 | { "w": 1, "v": "{$name+ Thunderhead}" }, 32 | { "w": 1, "v": "{$name+ Lavashield}" }, 33 | { "w": 1, "v": "{$name+ Bittershaper}" }, 34 | { "w": 1, "v": "{$name+ Thunderdelver}" }, 35 | { "w": 1, "v": "{$name+ Largegut}" }, 36 | { "w": 1, "v": "{$name+ Whitestone}" }, 37 | { "w": 1, "v": "{$name+ Hardcloak}" }, 38 | { "w": 1, "v": "{$name+ Rubyminer}" }, 39 | { "w": 1, "v": "{$name+ Frosthand}" }, 40 | { "w": 1, "v": "{$name+ Pebbleback}" }, 41 | { "w": 1, "v": "{$name+ Blackbender}" }, 42 | { "w": 1, "v": "{$name+ Flintmace}" }, 43 | { "w": 1, "v": "{$name+ Shadowhand}" }, 44 | { "w": 1, "v": "{$name+ Mudbelt}" }, 45 | { "w": 1, "v": "{$name+ Flintgranite}" }, 46 | { "w": 1, "v": "{$name+ Graybelt}" }, 47 | { "w": 1, "v": "{$name+ Barrelchin}" }, 48 | { "w": 1, "v": "{$name+ Bronzehide}" }, 49 | { "w": 1, "v": "{$name+ Bloodgrip}" }, 50 | { "w": 1, "v": "{$name+ Bluntchin}" }, 51 | { "w": 1, "v": "{$name+ Brightbeard}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/elfgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{maleelfname}{elfsurname}" }, 3 | { "w": 1, "v": "{female}{femaleelfname}{elfsurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/elfgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$god=Angharradh}{$goddescr=, Goddess of spring, fertility, planting, birth, defense, wisdom. (Chaotic Good)}" }, 3 | { "w": 3, "v": "{$god=Corellon Larethian}{$goddescr=, God of elves, magic, music, arts, crafts, war, poetry, bards, warriors. (Chaotic Good)}" }, 4 | { "w": 3, "v": "{humangod}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/elfquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 35, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is disgusted by human architecture. }" }, 4 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+feels more comfortable while surrounded by nature. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is secretly captivated by dwarves. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a deep knowledge of ancient secrets. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a deep knowledge of ancient magic. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+knows the name of all the local plants. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will only speak common if absolutely forced to. }" }, 10 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+never knows the current time and date. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+paints }{goodlooking}{$quirks+$attractiveness}{$quirks+ paintings in }{$quirks+$minPoss}{$quirks+spare time. }" }, 12 | { "w": 3, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ uses terms from a different language as }{$quirks+$minPro}{$quirks+speaks. }" }, 13 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+is always late. }" }, 14 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has never declared himself an adult. }" }, 15 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is deeply xenophobic. }" } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/elfskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$skin+blueish}" }, 3 | { "w": 2, "v": "{$skin+pink}" }, 4 | { "w": 2, "v": "{$skin+golden}" }, 5 | { "w": 2, "v": "{$skin+silver}" }, 6 | { "w": 3, "v": "{$skin+green}" }, 7 | { "w": 2, "v": "{$skin+copper}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/elfsurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Aeraagamae}" }, 3 | { "w": 1, "v": "{$name+ Aerabriniel}" }, 4 | { "w": 1, "v": "{$name+ Aldarina}" }, 5 | { "w": 1, "v": "{$name+ Aldaviel}" }, 6 | { "w": 1, "v": "{$name+ Bertanonel}" }, 7 | { "w": 1, "v": "{$name+ Birdiir}" }, 8 | { "w": 1, "v": "{$name+ Birlond}" }, 9 | { "w": 1, "v": "{$name+ Cromelon}" }, 10 | { "w": 1, "v": "{$name+ Cromviel}" }, 11 | { "w": 1, "v": "{$name+ Dlaralthor}" }, 12 | { "w": 1, "v": "{$name+ Dlarraithar}" }, 13 | { "w": 1, "v": "{$name+ Elendiir}" }, 14 | { "w": 1, "v": "{$name+ Eleneth}" }, 15 | { "w": 1, "v": "{$name+ Elervir}" }, 16 | { "w": 1, "v": "{$name+ Falavaul}" }, 17 | { "w": 1, "v": "{$name+ Gadilinion}" }, 18 | { "w": 1, "v": "{$name+ Galamin}" }, 19 | { "w": 1, "v": "{$name+ Galarina}" }, 20 | { "w": 1, "v": "{$name+ Galathaniel}" }, 21 | { "w": 1, "v": "{$name+ Garaitinu}" }, 22 | { "w": 1, "v": "{$name+ Gwamiel}" }, 23 | { "w": 1, "v": "{$name+ Haelond}" }, 24 | { "w": 1, "v": "{$name+ Isilielenion}" }, 25 | { "w": 1, "v": "{$name+ Kevadirtinu}" }, 26 | { "w": 1, "v": "{$name+ Kithollal}" }, 27 | { "w": 1, "v": "{$name+ Lantaththar}" }, 28 | { "w": 1, "v": "{$name+ Laranonel}" }, 29 | { "w": 1, "v": "{$name+ Larentansel}" }, 30 | { "w": 1, "v": "{$name+ Lithtaur}" }, 31 | { "w": 1, "v": "{$name+ Maerethar}" }, 32 | { "w": 1, "v": "{$name+ Maltanthir}" }, 33 | { "w": 1, "v": "{$name+ Mithanmae}" }, 34 | { "w": 1, "v": "{$name+ Mithanmyr}" }, 35 | { "w": 1, "v": "{$name+ Mithmirelen}" }, 36 | { "w": 1, "v": "{$name+ Nalllithe}" }, 37 | { "w": 1, "v": "{$name+ Nellynnthar}" }, 38 | { "w": 1, "v": "{$name+ Nhaendrin}" }, 39 | { "w": 1, "v": "{$name+ Noroelwa}" }, 40 | { "w": 1, "v": "{$name+ Orren}" }, 41 | { "w": 1, "v": "{$name+ Orrina}" }, 42 | { "w": 1, "v": "{$name+ Rhuivaul}" }, 43 | { "w": 1, "v": "{$name+ Runelenrin}" }, 44 | { "w": 1, "v": "{$name+ Runlithmae}" }, 45 | { "w": 1, "v": "{$name+ Sharondalan}" }, 46 | { "w": 1, "v": "{$name+ Taldilindar}" }, 47 | { "w": 1, "v": "{$name+ Talraidal}" }, 48 | { "w": 1, "v": "{$name+ Talthanryl}" }, 49 | { "w": 1, "v": "{$name+ Tathviel}" }, 50 | { "w": 1, "v": "{$name+ Wervanion}" }, 51 | { "w": 1, "v": "{$name+ Yraudhen}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/entertainer.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Acrobat", "v": "{$occupation=acrobat}{%dex+2}{kenkuname}" }, 3 | { "w": 1, "name": "Actor", "v": "{$occupation=actor}{%cha+2}{kenkuname}" }, 4 | { "w": 1, "name": "Clown", "v": "{$occupation=clown}{%cha+2}{kenkuname}" }, 5 | { "w": 1, "name": "Dancer", "v": "{$occupation=dancer}{%dex+2}{%con+2}{kenkuname}" }, 6 | { "w": 1, "name": "Fortune-Teller", "v": "{$occupation=fortune-teller}{%int+3}{%wis+5}{%cha+1}{kenkuname}" }, 7 | { "w": 1, "name": "Juggler", "v": "{$occupation=juggler}{%dex+2}{kenkuname}" }, 8 | { "w": 1, "name": "Prestidigitator", "v": "{$occupation=prestidigitator}{%int+4}{%dex+1}{kenkuname}" }, 9 | { "w": 1, "name": "Funambulist", "v": "{$occupation=funambulist}{%dex+3}{kenkuname}" }, 10 | { "w": 1, "name": "Storyteller", "v": "{$occupation=storyteller}{%int+2}{%wis+2}{%cha+2}{kenkuname}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/evilgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$god=Talos}{%evil+2}{%chaotic+2}{$goddescr=, God of storms, destruction, rebellion, conflagration, earthquakes, vortices. (Chaotic Evil)}" }, 3 | { "w": 1, "v": "{$god=Asmodeus}{%lawful+2}{%evil+2}{$goddescr=, God of sin, King of the Nine Hells. (Lawful Evil)}" }, 4 | { "w": 1, "v": "{$god=Bane}{%lawful+2}{%evil+2}{$goddescr=, God of hatred, fear and tiranny. (Lawful Evil)}" }, 5 | { "w": 1, "v": "{$god=Cyric}{%chaotic+2}{%evil+2}{$goddescr=, God of murder, lies, intrigue, strife, deception, illusion. (Chaotic Evil)}" }, 6 | { "w": 1, "v": "{$god=Lolth}{%chaotic+2}{%evil+2}{$goddescr=, Goddess of drows, spiders, darkness, chaos, evil, assassination. (Chaotic Evil)}" }, 7 | { 8 | "w": 1, 9 | "v": "{$god=Shar}{%evil+2}{%ethicalneutral+2}{$goddescr=, Goddess of dark, night, loss, forgetfulness, unrevealed secrets, caverns, dungeons, the Underdark.(NE)}" 10 | }, 11 | { "w": 2, "v": "{demongod}" }, 12 | { "w": 2, "v": "{devilgod}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/evilworship.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{$worship+ claims to worship }{$worship+$god}{$worship+, but secretly}" }] 2 | -------------------------------------------------------------------------------- /src/tables/extrafinger.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$sphy2+has an extra finger on }" }, 3 | { "w": 1, "v": "{$sphy2+has two extra fingers on }" }, 4 | { "w": 4, "v": "{$sphy2+has an extra thumb on }" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/eyecolor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 8, "v": "{$eyecolor=brown}" }, 3 | { "w": 4, "v": "{$eyecolor=blue}" }, 4 | { "w": 4, "v": "{$eyecolor=green}" }, 5 | { "w": 2, "v": "{$eyecolor=golden}" }, 6 | { "w": 1, "v": "{$eyecolor=cyan}" }, 7 | { "w": 2, "v": "{$eyecolor=gray}" }, 8 | { "w": 2, "v": "{$eyecolor=black}" }, 9 | { "w": 1, "v": "{$eyecolor=red}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/face.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{faceshape}{attractiveness}{$face=$faceshape}{$face+$attractiveness}" }] 2 | -------------------------------------------------------------------------------- /src/tables/faceshape.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$faceshape=a sharp, }" }, 3 | { "w": 3, "v": "{$faceshape=a round, }" }, 4 | { "w": 4, "v": "{$faceshape=an oval, }" }, 5 | { "w": 1, "v": "{$faceshape=a soft, }" }, 6 | { "w": 1, "v": "{$faceshape=a diamond-shaped, }" }, 7 | { "w": 1, "v": "{$faceshape=a triangular, }" }, 8 | { "w": 2, "v": "{$faceshape=an oblong, }" }, 9 | { "w": 2, "v": "{$faceshape=an edgy, }" }, 10 | { "w": 3, "v": "{$faceshape=a square, }" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/feathertexture.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$feathertexture=rough}" }, 3 | { "w": 1, "v": "{$feathertexture=smooth}" }, 4 | { "w": 1, "v": "{$feathertexture=shiny}" }, 5 | { "w": 1, "v": "{$feathertexture=lustrous}" }, 6 | { "w": 1, "v": "{$feathertexture=soft}" }, 7 | { "w": 1, "v": "{$feathertexture=fluffy}" }, 8 | { "w": 1, "v": "{$feathertexture=fuzzy}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/female.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 1, 4 | "v": "{$gender=female}{%str-1}{%dex+1}{%con-1}{%wis+1}{%cha+1}{$majPoss=Her }{$minPoss=her }{$majPro=She }{$minPro=she }{%height-10}{$workGender=woman}{$minHim=her}{$beard=}" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/femaledwarfname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Ahan}" }, 3 | { "w": 1, "v": "{$name=Akag}" }, 4 | { "w": 1, "v": "{$name=Alin}" }, 5 | { "w": 1, "v": "{$name=Anzin}" }, 6 | { "w": 1, "v": "{$name=Askad}" }, 7 | { "w": 1, "v": "{$name=Aznar}" }, 8 | { "w": 1, "v": "{$name=Bali}" }, 9 | { "w": 1, "v": "{$name=Bifund}" }, 10 | { "w": 1, "v": "{$name=Bori}" }, 11 | { "w": 1, "v": "{$name=Dainan}" }, 12 | { "w": 1, "v": "{$name=Disanz}" }, 13 | { "w": 1, "v": "{$name=Duli}" }, 14 | { "w": 1, "v": "{$name=Dwali}" }, 15 | { "w": 1, "v": "{$name=Fari}" }, 16 | { "w": 1, "v": "{$name=Frasanz}" }, 17 | { "w": 1, "v": "{$name=Gili}" }, 18 | { "w": 1, "v": "{$name=Gimli}" }, 19 | { "w": 1, "v": "{$name=Kada}" }, 20 | { "w": 1, "v": "{$name=Kali}" }, 21 | { "w": 1, "v": "{$name=Khainan}" }, 22 | { "w": 1, "v": "{$name=Kilmul}" }, 23 | { "w": 1, "v": "{$name=Latelch}" }, 24 | { "w": 1, "v": "{$name=Latur}" }, 25 | { "w": 1, "v": "{$name=Luri}" }, 26 | { "w": 1, "v": "{$name=Mili}" }, 27 | { "w": 1, "v": "{$name=Orin}" }, 28 | { "w": 1, "v": "{$name=Rainan}" }, 29 | { "w": 1, "v": "{$name=Rinarv}" }, 30 | { "w": 1, "v": "{$name=Sanzir}" }, 31 | { "w": 1, "v": "{$name=Shari}" }, 32 | { "w": 1, "v": "{$name=Telchal}" }, 33 | { "w": 1, "v": "{$name=Telchar}" }, 34 | { "w": 1, "v": "{$name=Tharkar}" }, 35 | { "w": 1, "v": "{$name=Thori}" }, 36 | { "w": 1, "v": "{$name=Thrinain}" }, 37 | { "w": 1, "v": "{$name=Thrinan}" }, 38 | { "w": 1, "v": "{$name=Thrinarv}" }, 39 | { "w": 1, "v": "{$name=Throri}" }, 40 | { "w": 1, "v": "{$name=Turi}" }, 41 | { "w": 1, "v": "{$name=Ukhund}" }, 42 | { "w": 1, "v": "{$name=Umrag}" }, 43 | { "w": 1, "v": "{$name=Umund}" }, 44 | { "w": 1, "v": "{$name=Urdul}" }, 45 | { "w": 1, "v": "{$name=Urin}" }, 46 | { "w": 1, "v": "{$name=Urun}" }, 47 | { "w": 1, "v": "{$name=Zaghak}" }, 48 | { "w": 1, "v": "{$name=Zigam}" }, 49 | { "w": 1, "v": "{$name=Zigil}" }, 50 | { "w": 1, "v": "{$name=Zigiml}" }, 51 | { "w": 1, "v": "{$name=Zuri}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/femaleelfname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Adriel}" }, 3 | { "w": 1, "v": "{$name=Alotel}" }, 4 | { "w": 1, "v": "{$name=Aloth}" }, 5 | { "w": 1, "v": "{$name=Altalas}" }, 6 | { "w": 1, "v": "{$name=Alwel}" }, 7 | { "w": 1, "v": "{$name=Amas}" }, 8 | { "w": 1, "v": "{$name=Anelyen}" }, 9 | { "w": 1, "v": "{$name=Anen}" }, 10 | { "w": 1, "v": "{$name=Aninyel}" }, 11 | { "w": 1, "v": "{$name=Anithren}" }, 12 | { "w": 1, "v": "{$name=Aredhel}" }, 13 | { "w": 1, "v": "{$name=Arelel}" }, 14 | { "w": 1, "v": "{$name=Arelen}" }, 15 | { "w": 1, "v": "{$name=Arwel}" }, 16 | { "w": 1, "v": "{$name=Atiel}" }, 17 | { "w": 1, "v": "{$name=Celaser}" }, 18 | { "w": 1, "v": "{$name=Earwenen}" }, 19 | { "w": 1, "v": "{$name=Ellaloth}" }, 20 | { "w": 1, "v": "{$name=Elwindith}" }, 21 | { "w": 1, "v": "{$name=Elyel}" }, 22 | { "w": 1, "v": "{$name=Enwenen}" }, 23 | { "w": 1, "v": "{$name=Eris}" }, 24 | { "w": 1, "v": "{$name=Erwel}" }, 25 | { "w": 1, "v": "{$name=Finde}" }, 26 | { "w": 1, "v": "{$name=Findelye}" }, 27 | { "w": 1, "v": "{$name=Finduilye}" }, 28 | { "w": 1, "v": "{$name=Galaser}" }, 29 | { "w": 1, "v": "{$name=Gilme}" }, 30 | { "w": 1, "v": "{$name=Gilmirie}" }, 31 | { "w": 1, "v": "{$name=Idrinden}" }, 32 | { "w": 1, "v": "{$name=Ilmindel}" }, 33 | { "w": 1, "v": "{$name=Iming}" }, 34 | { "w": 1, "v": "{$name=Imithren}" }, 35 | { "w": 1, "v": "{$name=Imrodel}" }, 36 | { "w": 1, "v": "{$name=Inding}" }, 37 | { "w": 1, "v": "{$name=Inyelyen}" }, 38 | { "w": 1, "v": "{$name=Iririen}" }, 39 | { "w": 1, "v": "{$name=Ladrilye}" }, 40 | { "w": 1, "v": "{$name=Laserie}" }, 41 | { "w": 1, "v": "{$name=Minimrie}" }, 42 | { "w": 1, "v": "{$name=Neladrie}" }, 43 | { "w": 1, "v": "{$name=Nelalwe}" }, 44 | { "w": 1, "v": "{$name=Nelaser}" }, 45 | { "w": 1, "v": "{$name=Nerduilye}" }, 46 | { "w": 1, "v": "{$name=Nimlalwe}" }, 47 | { "w": 1, "v": "{$name=Nimlenwe}" }, 48 | { "w": 1, "v": "{$name=Serilye}" }, 49 | { "w": 1, "v": "{$name=Serode}" }, 50 | { "w": 1, "v": "{$name=Tanye}" }, 51 | { "w": 1, "v": "{$name=Tarielye}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/femalegnomename1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Galmiphi}" }, 3 | { "w": 1, "v": "{$name=Galssa}" }, 4 | { "w": 1, "v": "{$name=Grenceli}" }, 5 | { "w": 1, "v": "{$name=Heswyse}" }, 6 | { "w": 1, "v": "{$name=Inahani}" }, 7 | { "w": 1, "v": "{$name=Selmyn}" }, 8 | { "w": 1, "v": "{$name=Tifaceli}" }, 9 | { "w": 1, "v": "{$name=Trigani}" }, 10 | { "w": 1, "v": "{$name=Carzyre}" }, 11 | { "w": 1, "v": "{$name=Celgyra}" }, 12 | { "w": 1, "v": "{$name=Celniana}" }, 13 | { "w": 1, "v": "{$name=Celwyn}" }, 14 | { "w": 1, "v": "{$name=Celza}" }, 15 | { "w": 1, "v": "{$name=Xyrowyn}" }, 16 | { "w": 1, "v": "{$name=Banmila}" }, 17 | { "w": 1, "v": "{$name=Xamyra}" }, 18 | { "w": 1, "v": "{$name=Xaphina}" }, 19 | { "w": 1, "v": "{$name=Xyroli}" }, 20 | { "w": 1, "v": "{$name=Xyronoa}" }, 21 | { "w": 1, "v": "{$name=Fenkasys}" }, 22 | { "w": 1, "v": "{$name=Fenna}" }, 23 | { "w": 1, "v": "{$name=Fenphina}" } 24 | ] 25 | -------------------------------------------------------------------------------- /src/tables/femalegnomename2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Fensys}" }, 3 | { "w": 1, "v": "{$name+ Lilfyx}" }, 4 | { "w": 1, "v": "{$name+ Mybys}" }, 5 | { "w": 1, "v": "{$name+ Mydira}" }, 6 | { "w": 1, "v": "{$name+ Niniana}" }, 7 | { "w": 1, "v": "{$name+ Odagyra}" }, 8 | { "w": 1, "v": "{$name+ Inaxi}" }, 9 | { "w": 1, "v": "{$name+ Isodira}" }, 10 | { "w": 1, "v": "{$name+ Isona}" }, 11 | { "w": 1, "v": "{$name+ Isowyse}" }, 12 | { "w": 1, "v": "{$name+ Jolin}" }, 13 | { "w": 1, "v": "{$name+ Jomila}" }, 14 | { "w": 1, "v": "{$name+ Jonove}" }, 15 | { "w": 1, "v": "{$name+ Kriceli}" }, 16 | { "w": 1, "v": "{$name+ Lilbys}" }, 17 | { "w": 1, "v": "{$name+ Ylodysa}" }, 18 | { "w": 1, "v": "{$name+ Ylofyx}" }, 19 | { "w": 1, "v": "{$name+ Yohani}" }, 20 | { "w": 1, "v": "{$name+ Yowyse}" }, 21 | { "w": 1, "v": "{$name+ Yoxis}" }, 22 | { "w": 1, "v": "{$name+ Odakini}" }, 23 | { "w": 1, "v": "{$name+ Odawyn}" }, 24 | { "w": 1, "v": "{$name+ Orwyse}" }, 25 | { "w": 1, "v": "{$name+ Pritra}" } 26 | ] 27 | -------------------------------------------------------------------------------- /src/tables/femalegnomename3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Qihani}" }, 3 | { "w": 1, "v": "{$name+ Qili}" }, 4 | { "w": 1, "v": "{$name+ Qimyra}" }, 5 | { "w": 1, "v": "{$name+ Qitra}" }, 6 | { "w": 1, "v": "{$name+ Receli}" }, 7 | { "w": 1, "v": "{$name+ Remyra}" }, 8 | { "w": 1, "v": "{$name+ Rosikini}" }, 9 | { "w": 1, "v": "{$name+ Sakini}" }, 10 | { "w": 1, "v": "{$name+ Zanikini}" }, 11 | { "w": 1, "v": "{$name+ Zinlin}" }, 12 | { "w": 1, "v": "{$name+ Daphikini}" }, 13 | { "w": 1, "v": "{$name+ Trimyra}" }, 14 | { "w": 1, "v": "{$name+ Trina}" }, 15 | { "w": 1, "v": "{$name+ Triniana}" }, 16 | { "w": 1, "v": "{$name+ Urikini}" }, 17 | { "w": 1, "v": "{$name+ Venzyre}" }, 18 | { "w": 1, "v": "{$name+ Voci}" }, 19 | { "w": 1, "v": "{$name+ Wropine}" }, 20 | { "w": 1, "v": "{$name+ Xahana}" }, 21 | { "w": 1, "v": "{$name+ Elkini}" }, 22 | { "w": 1, "v": "{$name+ Elsys}" }, 23 | { "w": 1, "v": "{$name+ Elwyse}" }, 24 | { "w": 1, "v": "{$name+ Faeza}" } 25 | ] 26 | -------------------------------------------------------------------------------- /src/tables/femalegnomename4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Xyroqys}" }, 3 | { "w": 1, "v": "{$name+ Wrossa}" }, 4 | { "w": 1, "v": "{$name+ Klorhana}" }, 5 | { "w": 1, "v": "{$name+ Elphina}" }, 6 | { "w": 1, "v": "{$name+ Daphici}" }, 7 | { "w": 1, "v": "{$name+ Carkasys}" }, 8 | { "w": 1, "v": "{$name+ Carnove}" }, 9 | { "w": 1, "v": "{$name+ Carnove}" }, 10 | { "w": 1, "v": "{$name+ Carwyse}" }, 11 | { "w": 1, "v": "{$name+ Zinnove}" }, 12 | { "w": 1, "v": "{$name+ Zinyaris}" }, 13 | { "w": 1, "v": "{$name+ Qiqaryn}" }, 14 | { "w": 1, "v": "{$name+ Satina}" }, 15 | { "w": 1, "v": "{$name+ Helmyn}" }, 16 | { "w": 1, "v": "{$name+ Aluroe}" }, 17 | { "w": 1, "v": "{$name+ Banceli}" }, 18 | { "w": 1, "v": "{$name+ Banfyx}" }, 19 | { "w": 1, "v": "{$name+ Trinove}" }, 20 | { "w": 1, "v": "{$name+ Nyhani}" }, 21 | { "w": 1, "v": "{$name+ Queyore}" }, 22 | { "w": 1, "v": "{$name+ Spiqys}" } 23 | ] 24 | -------------------------------------------------------------------------------- /src/tables/femalehalflingname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Amilly}" }, 3 | { "w": 1, "v": "{$name=Amuby}" }, 4 | { "w": 1, "v": "{$name=Apphine}" }, 5 | { "w": 1, "v": "{$name=Ararl}" }, 6 | { "w": 1, "v": "{$name=Arget}" }, 7 | { "w": 1, "v": "{$name=Audreyn}" }, 8 | { "w": 1, "v": "{$name=Belba}" }, 9 | { "w": 1, "v": "{$name=Benne}" }, 10 | { "w": 1, "v": "{$name=Cecie}" }, 11 | { "w": 1, "v": "{$name=Cilia}" }, 12 | { "w": 1, "v": "{$name=Cora}" }, 13 | { "w": 1, "v": "{$name=Damay}" }, 14 | { "w": 1, "v": "{$name=Dora}" }, 15 | { "w": 1, "v": "{$name=Dralda}" }, 16 | { "w": 1, "v": "{$name=Drigold}" }, 17 | { "w": 1, "v": "{$name=Ecil}" }, 18 | { "w": 1, "v": "{$name=Ecin}" }, 19 | { "w": 1, "v": "{$name=Elanth}" }, 20 | { "w": 1, "v": "{$name=Elix}" }, 21 | { "w": 1, "v": "{$name=Endell}" }, 22 | { "w": 1, "v": "{$name=Ervina}" }, 23 | { "w": 1, "v": "{$name=Eryn}" }, 24 | { "w": 1, "v": "{$name=Esmell}" }, 25 | { "w": 1, "v": "{$name=Fira}" }, 26 | { "w": 1, "v": "{$name=Gilla}" }, 27 | { "w": 1, "v": "{$name=Hily}" }, 28 | { "w": 1, "v": "{$name=Ilian}" }, 29 | { "w": 1, "v": "{$name=Ilin}" }, 30 | { "w": 1, "v": "{$name=Jane}" }, 31 | { "w": 1, "v": "{$name=Joane}" }, 32 | { "w": 1, "v": "{$name=Kater}" }, 33 | { "w": 1, "v": "{$name=Lalia}" }, 34 | { "w": 1, "v": "{$name=Maly}" }, 35 | { "w": 1, "v": "{$name=Mara}" }, 36 | { "w": 1, "v": "{$name=Marger}" }, 37 | { "w": 1, "v": "{$name=Mary}" }, 38 | { "w": 1, "v": "{$name=Mentha}" }, 39 | { "w": 1, "v": "{$name=Merey}" }, 40 | { "w": 1, "v": "{$name=Metha}" }, 41 | { "w": 1, "v": "{$name=Mimay}" }, 42 | { "w": 1, "v": "{$name=Mira}" }, 43 | { "w": 1, "v": "{$name=Munda}" }, 44 | { "w": 1, "v": "{$name=Negerd}" }, 45 | { "w": 1, "v": "{$name=Peony}" }, 46 | { "w": 1, "v": "{$name=Prantha}" }, 47 | { "w": 1, "v": "{$name=Prose}" }, 48 | { "w": 1, "v": "{$name=Rimay}" }, 49 | { "w": 1, "v": "{$name=Rine}" }, 50 | { "w": 1, "v": "{$name=Rose}" }, 51 | { "w": 1, "v": "{$name=Sybeatr}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/femaleorcname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Atub}" }, 3 | { "w": 1, "v": "{$name=Bagrak}" }, 4 | { "w": 1, "v": "{$name=Bagrak}" }, 5 | { "w": 1, "v": "{$name=Bogdub}" }, 6 | { "w": 1, "v": "{$name=Bolar}" }, 7 | { "w": 1, "v": "{$name=Borba}" }, 8 | { "w": 1, "v": "{$name=Bugdurash}" }, 9 | { "w": 1, "v": "{$name=Bula}" }, 10 | { "w": 1, "v": "{$name=Bulak}" }, 11 | { "w": 1, "v": "{$name=Bum}" }, 12 | { "w": 1, "v": "{$name=Durgat}" }, 13 | { "w": 1, "v": "{$name=Durgat}" }, 14 | { "w": 1, "v": "{$name=Durz}" }, 15 | { "w": 1, "v": "{$name=Gashnakh}" }, 16 | { "w": 1, "v": "{$name=Ghak}" }, 17 | { "w": 1, "v": "{$name=Gharol}" }, 18 | { "w": 1, "v": "{$name=Ghob}" }, 19 | { "w": 1, "v": "{$name=Glasha}" }, 20 | { "w": 1, "v": "{$name=Gluronk}" }, 21 | { "w": 1, "v": "{$name=Gonk}" }, 22 | { "w": 1, "v": "{$name=Kharzug}" }, 23 | { "w": 1, "v": "{$name=Lambug}" }, 24 | { "w": 1, "v": "{$name=Lash}" }, 25 | { "w": 1, "v": "{$name=Lazgar}" }, 26 | { "w": 1, "v": "{$name=Mor}" }, 27 | { "w": 1, "v": "{$name=Murbol}" }, 28 | { "w": 1, "v": "{$name=Nargol}" }, 29 | { "w": 1, "v": "{$name=Nargol}" }, 30 | { "w": 1, "v": "{$name=Orbul}" }, 31 | { "w": 1, "v": "{$name=Ragash}" }, 32 | { "w": 1, "v": "{$name=Rolfish}" }, 33 | { "w": 1, "v": "{$name=Rulfim}" }, 34 | { "w": 1, "v": "{$name=Sharn}" }, 35 | { "w": 1, "v": "{$name=Shazgob}" }, 36 | { "w": 1, "v": "{$name=Snak}" }, 37 | { "w": 1, "v": "{$name=Snak}" }, 38 | { "w": 1, "v": "{$name=Ugor}" }, 39 | { "w": 1, "v": "{$name=Ulumpha}" }, 40 | { "w": 1, "v": "{$name=Umog}" }, 41 | { "w": 1, "v": "{$name=Urzoth}" }, 42 | { "w": 1, "v": "{$name=Urzul}" }, 43 | { "w": 1, "v": "{$name=Ushat}" }, 44 | { "w": 1, "v": "{$name=Ushug}" } 45 | ] 46 | -------------------------------------------------------------------------------- /src/tables/femaletritonname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Uslyn}" }, 3 | { "w": 1, "v": "{$name=Onryn}" }, 4 | { "w": 1, "v": "{$name=Laddyn}" }, 5 | { "w": 1, "v": "{$name=Shirryn}" }, 6 | { "w": 1, "v": "{$name=Bhaltyn}" }, 7 | { "w": 1, "v": "{$name=Eddanyn}" }, 8 | { "w": 1, "v": "{$name=Othedyn}" }, 9 | { "w": 1, "v": "{$name=Lonthilyn}" }, 10 | { "w": 1, "v": "{$name=Otlunen}" }, 11 | { "w": 1, "v": "{$name=Yahnohyn}" }, 12 | { "w": 1, "v": "{$name=Orryn}" }, 13 | { "w": 1, "v": "{$name=Floslyn}" }, 14 | { "w": 1, "v": "{$name=Yesnen}" }, 15 | { "w": 1, "v": "{$name=Bhotlyn}" }, 16 | { "w": 1, "v": "{$name=Ethryn}" }, 17 | { "w": 1, "v": "{$name=Dhuthinyn}" }, 18 | { "w": 1, "v": "{$name=Etlolen}" }, 19 | { "w": 1, "v": "{$name=Atredyn}" }, 20 | { "w": 1, "v": "{$name=Hustelyn}" }, 21 | { "w": 1, "v": "{$name=Dathodyn}" }, 22 | { "w": 1, "v": "{$name=Orlyn}" }, 23 | { "w": 1, "v": "{$name=Hunryn}" }, 24 | { "w": 1, "v": "{$name=Funryn}" }, 25 | { "w": 1, "v": "{$name=Bodyn}" }, 26 | { "w": 1, "v": "{$name=Bhahnyn}" }, 27 | { "w": 1, "v": "{$name=Yathlomyn}" }, 28 | { "w": 1, "v": "{$name=Monlanyn}" }, 29 | { "w": 1, "v": "{$name=Noddehyn}" }, 30 | { "w": 1, "v": "{$name=Mostamyn}" }, 31 | { "w": 1, "v": "{$name=Uromyn}" }, 32 | { "w": 1, "v": "{$name=Danryn}" }, 33 | { "w": 1, "v": "{$name=Vleshyn}" }, 34 | { "w": 1, "v": "{$name=Alyn}" }, 35 | { "w": 1, "v": "{$name=Moltyn}" }, 36 | { "w": 1, "v": "{$name=Dhethyn}" }, 37 | { "w": 1, "v": "{$name=Birnahyn}" }, 38 | { "w": 1, "v": "{$name=Alrohyn}" }, 39 | { "w": 1, "v": "{$name=Bhinlalyn}" }, 40 | { "w": 1, "v": "{$name=Yalamyn}" }, 41 | { "w": 1, "v": "{$name=Welrilyn}" } 42 | ] 43 | -------------------------------------------------------------------------------- /src/tables/firbolgquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has been outcast for a murder }{$quirks+$minPro}{$quirks+was forced to commit. }" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has been outcast for a murder }{$quirks+$minPro}{$quirks+committed. }{%evil+2}" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+got lost years ago and could never find }{$quirks+$minPoss}{$quirks+home. }{%int-2}" }, 5 | { "w": 2, "v": "{$quirks+$majPoss}{$quirks+clan was slain by }{raceallergy}{$quirks+$racea}{$quirks+. }" }, 6 | { "w": 1, "v": "{$quirks+$majPoss}{$quirks+homeland was destroyed by an earthquake. }" }, 7 | { "w": 1, "v": "{$quirks+$majPoss}{$quirks+homeland was destroyed by a tsunami. }" }, 8 | { "w": 1, "v": "{$quirks+$majPoss}{$quirks+homeland was destroyed by a viscious storm. }" }, 9 | { "w": 1, "v": "{$quirks+$majPoss}{$quirks+can sit for hours watching plants grow. }" }, 10 | { "w": 1, "v": "{$quirks+$majPoss}{$quirks+tries to keep away from crowds. }" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+follows omens to determine }{$quirks+$minPoss}{$quirks+ daily actions. }{%good+1}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/firbolgskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$skin+gray}" }, 3 | { "w": 1, "v": "{$skin+brown}" }, 4 | { "w": 1, "v": "{$skin+green}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/forcealign.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 1, 4 | "v": "{$do nothing=}" 5 | }, 6 | { 7 | "w": 0, 8 | "name": "Good", 9 | "v": "{%good+3}{%evil-5}{goodgod}" 10 | }, 11 | { 12 | "w": 0, 13 | "name": "Evil", 14 | "v": "{%good-5}{%evil+3}{evilgod}" 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/frequency.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$fr=sporadically}" }, 3 | { "w": 2, "v": "{$fr=occasionally}" }, 4 | { "w": 2, "v": "{$fr=intermittently}" }, 5 | { "w": 2, "v": "{$fr=frequently}" }, 6 | { "w": 1, "v": "{$fr=constantly}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/furniture.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$furniture=desk}" }, 3 | { "w": 1, "v": "{$furniture=table}" }, 4 | { "w": 1, "v": "{$furniture=chair}" }, 5 | { "w": 1, "v": "{$furniture=ladder}" }, 6 | { "w": 1, "v": "{$furniture=couch}" }, 7 | { "w": 1, "v": "{$furniture=bed}" }, 8 | { "w": 1, "v": "{$furniture=rocking chair}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/gender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Male", "v": "{male}" }, 3 | { "w": 1, "name": "Female", "v": "{female}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/getevilgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{%good-3}{evilgod}{evilworship}" }, 3 | { "w": 1, "v": "{$god=}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/gnomegender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename2}{malegnomename3}{malegnomename4}" }, 3 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename2}{femalegnomename3}{femalegnomename4}" }, 4 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename2}{malegnomename4}{malegnomename3}" }, 5 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename3}{malegnomename2}{malegnomename4}" }, 6 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename3}{malegnomename4}{malegnomename2}" }, 7 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename4}{malegnomename2}{malegnomename3}" }, 8 | { "w": 1, "v": "{male}{malegnomename1}{malegnomename4}{malegnomename3}{malegnomename2}" }, 9 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename2}{femalegnomename4}{femalegnomename3}" }, 10 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename3}{femalegnomename2}{femalegnomename4}" }, 11 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename3}{femalegnomename4}{femalegnomename2}" }, 12 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename4}{femalegnomename2}{femalegnomename3}" }, 13 | { "w": 1, "v": "{female}{femalegnomename1}{femalegnomename4}{femalegnomename3}{femalegnomename2}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/gnomegod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$god=Garl Glittergold}{$goddescr=, God of gnomes, protection, humour, trickery, gem cutting. (Neutral Good)}" }, 3 | { "w": 2, "v": "{humangod}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/gnomequirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 6, "v": "{$quirks+}" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+makes the best out of any situation. }" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is always tinkering in }{$quirks+$minPoss}{$quirks+ free time. }" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has a solution for everything. }" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+explains everything in great detail. }" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has a fascination with explosions. }" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never stops talking. }" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+complicates simple situations. }" }, 10 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is always scribbling notes. }" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+keeps a very precise journal. }" }, 12 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always has plans for a new invention. }" }, 13 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has a detailed map of everywhere }{$quirks+$minPro}{$quirks+has been to. }" }, 14 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+loves shiny objects. }" }, 15 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has a fascination with alchemy. }" }, 16 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is fascinated by magic and its history. }" }, 17 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is way too curious. }" }, 18 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+talks so fast that }{$quirks+$minPro}{$quirks+is very difficult to understand. }" } 19 | ] 20 | -------------------------------------------------------------------------------- /src/tables/goblinname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Roxeek}" }, 3 | { "w": 1, "v": "{$name=Rolee}" }, 4 | { "w": 1, "v": "{$name=Kwyixle}" }, 5 | { "w": 1, "v": "{$name=Zotinkle}" }, 6 | { "w": 1, "v": "{$name=Greexuek}" }, 7 | { "w": 1, "v": "{$name=Kaidink}" }, 8 | { "w": 1, "v": "{$name=Nixgail}" }, 9 | { "w": 1, "v": "{$name=Zixgeez}" }, 10 | { "w": 1, "v": "{$name=Greerax}" }, 11 | { "w": 1, "v": "{$name=Zerex}" }, 12 | { "w": 1, "v": "{$name=Zotdizeel}" }, 13 | { "w": 1, "v": "{$name=Qiard}" }, 14 | { "w": 1, "v": "{$name=Baeek}" }, 15 | { "w": 1, "v": "{$name=Greenimax}" }, 16 | { "w": 1, "v": "{$name=Zeeaz}" }, 17 | { "w": 1, "v": "{$name=Zexez}" }, 18 | { "w": 1, "v": "{$name=Zeeaz}" }, 19 | { "w": 1, "v": "{$name=Zexteex}" }, 20 | { "w": 1, "v": "{$name=Soxegxaz}" }, 21 | { "w": 1, "v": "{$name=Wixlee}" }, 22 | { "w": 1, "v": "{$name=Kazeqxik}" }, 23 | { "w": 1, "v": "{$name=Zexink}" }, 24 | { "w": 1, "v": "{$name=Greexold}" }, 25 | { "w": 1, "v": "{$name=Zotlee}" }, 26 | { "w": 1, "v": "{$name=Rizkiold}" }, 27 | { "w": 1, "v": "{$name=Kixxiz}" }, 28 | { "w": 1, "v": "{$name=Greeqemax}" }, 29 | { "w": 1, "v": "{$name=Rezto}" }, 30 | { "w": 1, "v": "{$name=Jizelex}" }, 31 | { "w": 1, "v": "{$name=Giet}" } 32 | ] 33 | -------------------------------------------------------------------------------- /src/tables/goliathadj.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Keen}{%wis+2}" }, 3 | { "w": 1, "v": "{$name=Strong}{%str+2}" }, 4 | { "w": 1, "v": "{$name=Lone}{%con+2}" }, 5 | { "w": 1, "v": "{$name=Wise}{%wis+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/goliathanimalaction.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+killer}" }, 3 | { "w": 1, "v": "{$name+tamer}{%wis+1}" }, 4 | { "w": 1, "v": "{$name+hunter}" }, 5 | { "w": 1, "v": "{$name+stalker}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/goliathanimalnoun.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Dragon}" }, 3 | { "w": 1, "v": "{$name=Bear}" }, 4 | { "w": 1, "v": "{$name=Lion}" }, 5 | { "w": 1, "v": "{$name=Tiger}" }, 6 | { "w": 1, "v": "{$name=Snake}" }, 7 | { "w": 1, "v": "{$name=Wolf}" }, 8 | { "w": 1, "v": "{$name=Eagle}" }, 9 | { "w": 1, "v": "{$name=Elephant}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/goliathcraftaction.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+carver}" }, 3 | { "w": 1, "v": "{$name+maker}" }, 4 | { "w": 1, "v": "{$name+finder}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/goliathcraftnoun.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=House}" }, 3 | { "w": 1, "v": "{$name=Flint}" }, 4 | { "w": 1, "v": "{$name=Gold}" }, 5 | { "w": 1, "v": "{$name=Diamond}" }, 6 | { "w": 1, "v": "{$name=Tool}" }, 7 | { "w": 1, "v": "{$name=Fort}" }, 8 | { "w": 1, "v": "{$name=Horn}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/goliathfightingaction.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+shaker}" }, 3 | { "w": 1, "v": "{$name+breaker}" }, 4 | { "w": 1, "v": "{$name+crusher}" }, 5 | { "w": 1, "v": "{$name+smasher}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/goliathfightingnoun.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Heart}" }, 3 | { "w": 1, "v": "{$name=Bone}" }, 4 | { "w": 1, "v": "{$name=Skull}" }, 5 | { "w": 1, "v": "{$name=Fort}" }, 6 | { "w": 1, "v": "{$name=Earth}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/goliathhair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 8, "v": "{$hair=a bald head and }" }, 3 | { "w": 5, "v": "{$hair=a bald head with tribal tatoos and }" }, 4 | { "w": 2, "v": "{$hair=a bald head with abstract tatoos and }" }, 5 | { "w": 2, "v": "{$hair=a bald head with fancy tatoos and }" }, 6 | { "w": 2, "v": "{$hair=a bald head with vivid tatoos and }" }, 7 | { "w": 2, "v": "{$hair=a bald head with bulky tatoos and }" }, 8 | { "w": 2, "v": "{$hair=a bald head with gorgeous tatoos and }" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/goliathmysticaction.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+caller}" }, 3 | { "w": 1, "v": "{$name+watcher}" }, 4 | { "w": 1, "v": "{$name+seer}" }, 5 | { "w": 1, "v": "{$name+walker}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/goliathmysticnoun.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Sky}" }, 3 | { "w": 1, "v": "{$name=Sun}" }, 4 | { "w": 1, "v": "{$name=Moon}" }, 5 | { "w": 1, "v": "{$name=Fire}" }, 6 | { "w": 1, "v": "{$name=Water}" }, 7 | { "w": 1, "v": "{$name=Air}" }, 8 | { "w": 1, "v": "{$name=Earth}" }, 9 | { "w": 1, "v": "{$name=Night}" }, 10 | { "w": 1, "v": "{$name=Light}" }, 11 | { "w": 1, "v": "{$name=Dark}" }, 12 | { "w": 1, "v": "{$name=Word}{%cha+2}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/goliathname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{goliathmysticnoun}{goliathmysticaction}{%int+2}{%wis+2}" }, 3 | { "w": 3, "v": "{goliathfightingnoun}{goliathfightingaction}{%str+2}{%con+2}" }, 4 | { "w": 2, "v": "{goliathcraftnoun}{goliathcraftaction}{%dex+2}{%int+1}" }, 5 | { "w": 3, "v": "{goliathanimalnoun}{goliathanimalaction}{%str+2}{%wis+2}" }, 6 | { "w": 3, "v": "{goliathadj}{goliathnoun}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/goliathnoun.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+killer}" }, 3 | { "w": 1, "v": "{$name+eye}" }, 4 | { "w": 1, "v": "{$name+hunter}" }, 5 | { "w": 1, "v": "{$name+stalker}" }, 6 | { "w": 1, "v": "{$name+wolf}" }, 7 | { "w": 1, "v": "{$name+bear}" }, 8 | { "w": 1, "v": "{$name+dragon}" }, 9 | { "w": 1, "v": "{$name+fighter}" }, 10 | { "w": 1, "v": "{$name+arm}" }, 11 | { "w": 1, "v": "{$name+heart}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/goliathquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 15, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+only respects powerful and competent leaders. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+openly mocks human society's structure. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ challenges others to duels to the death. }{%chaotic+2}" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+feels at home in high altitude. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+enjoys winter and cold temperatures. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will turn anything into an opportunity for training. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+enjoys messing with other humanoids with }{$quirks+$minPoss}{$quirks+stature. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+dislikes depending on others. }" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+maintains a friendly relationships with nearby giants. }" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/goliathtraits1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+is very competitive. }" }, 3 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+sees everything as a challenge. }" }, 4 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+values skill and talent over all else. }" }, 5 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+always keeps score. }" }, 6 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+is constantly trying to outdo }{$goliathtraits+$minHim}{$goliathtraits+self. }" }, 7 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+is always fair play. }" }, 8 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+is very dedicated. }" }, 9 | { "w": 2, "v": "{$goliathtraits=$majPro}{$goliathtraits+will always give a fighting chance to }{$goliathtraits+$minPoss}{$goliathtraits+opponents. }" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/goodface.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{faceshape}{highattractiveness}{$face=$faceshape}{$face+$attractiveness}" }, 3 | { "w": 1, "v": "{face}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/goodfacemod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$mod=slightly }{%cha+1}" }, 3 | { "w": 4, "v": "{$mod=very }{%cha+2}" }, 4 | { "w": 2, "v": "{$mod=incredibly }{%cha+3}" }, 5 | { "w": 1, "v": "{$mod=extremely }{%cha+5}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/goodgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$god=Akadi}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, Goddess of air, movement and speed. (True Neutral)}" }, 3 | { "w": 1, "v": "{$god=Chauntea}{%good+2}{%ethicalneutral+2}{$goddescr=, Goddess of agriculture, farmers, gardeners and summer. (Neutral Good)}" }, 4 | { "w": 1, "v": "{$god=Grumbar}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of earth, solidity, changelessness, oaths. (True Neutral)}" }, 5 | { "w": 1, "v": "{$god=Istishia}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of water, purification, wetness. (True Neutral)}" }, 6 | { "w": 1, "v": "{$god=Kelemvor}{%moralneutral+2}{%lawful+2}{$goddescr=, God of death and the dead. (Lawful Neutral)}" }, 7 | { "w": 1, "v": "{$god=Kossuth}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of fire, purification through fire. (True Neutral)}" }, 8 | { "w": 1, "v": "{$god=Lathander}{%good+2}{%ethicalneutral+2}{$goddescr=, God of spring, dawn, birth, youth, vitality, athletics. (Neutral Good)}" }, 9 | { "w": 1, "v": "{$god=Mystra}{%good+2}{%ethicalneutral+2}{$goddescr=, Goddess of magic, spells, the Weave. (Neutral Good)}" }, 10 | { "w": 1, "v": "{$god=Oghma}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of knowledge, invention, inspiration, bards. (True Neutral)}" }, 11 | { 12 | "w": 1, 13 | "v": "{$god=Selune}{%good+2}{%ethicalneutral+2}{$goddescr=, Goddess of the moon, stars, navigation, prophecy, questers, lycanthropes. (Neutral Good)}" 14 | }, 15 | { "w": 1, "v": "{$god=Silvanus}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of wild nature, druids. (True Neutral)}" }, 16 | { "w": 1, "v": "{$god=Sune}{%chaotic+2}{%good+2}{$goddescr=, Goddess of beauty, love, passion. (Chaotic Good)}" }, 17 | { "w": 1, "v": "{$god=Tempus}{%moralneutral+2}{%chaotic+2}{$goddescr=, God of war, battle, warriors. (Chaotic Neutral)}" }, 18 | { "w": 1, "v": "{$god=Torm}{%lawful+2}{%good+2}{$goddescr=, God of duty, loyalty, obedience, paladins. (Lawful Good)}" }, 19 | { "w": 1, "v": "{$god=Tyr}{%lawful+2}{%good+2}{$goddescr=, God of justice. (Lawful Good)}" }, 20 | { "w": 1, "v": "{$god=Ubtao}{%moralneutral+2}{%ethicalneutral+2}{$goddescr=, God of creation, jungles, Chult, the Chultans, dinosaurs. (True Neutral)}" } 21 | ] 22 | -------------------------------------------------------------------------------- /src/tables/goodlooking.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$attractiveness=cute}" }, 3 | { "w": 5, "v": "{$attractiveness=attractive}" }, 4 | { "w": 5, "v": "{$attractiveness=beautiful}" }, 5 | { "w": 3, "v": "{$attractiveness=glamorous}" }, 6 | { "w": 3, "v": "{$attractiveness=innocent}" }, 7 | { "w": 2, "v": "{$attractiveness=stunning}" }, 8 | { "w": 3, "v": "{$attractiveness=fanciable}" }, 9 | { "w": 3, "v": "{$attractiveness=pretty}" }, 10 | { "w": 2, "v": "{$attractiveness=magnificent}" }, 11 | { "w": 3, "v": "{$attractiveness=sightly}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/goodorevil.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%good+3}{%moralneutral-2}{%evil-3}" }, 3 | { "w": 1, "v": "{%good-3}{%moralneutral-2}{%evil+3}{getevilgod}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/goodsmell.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$sphy1+of cheap cologne}" }, 3 | { "w": 3, "v": "{$sphy1+of cologne}" }, 4 | { "w": 2, "v": "{$sphy1+of expensive cologne}" }, 5 | { "w": 3, "v": "{$sphy1+of cedar wood}" }, 6 | { "w": 3, "v": "{$sphy1+of lavender}" }, 7 | { "w": 3, "v": "{$sphy1+of honey}" }, 8 | { "w": 3, "v": "{$sphy1+of flowers}" }, 9 | { "w": 3, "v": "{$sphy1+of incense}" }, 10 | { "w": 3, "v": "{$sphy1+of baking}" }, 11 | { "w": 3, "v": "{$sphy1+like rain}" }, 12 | { "w": 3, "v": "{$sphy1+like a forest}" }, 13 | { "w": 3, "v": "{$sphy1+of the sea}" }, 14 | { "w": 3, "v": "{$sphy1+of cookies}" }, 15 | { "w": 3, "v": "{$sphy1+of spices}" }, 16 | { "w": 3, "v": "{$sphy1+of autumn leaves}" }, 17 | { "w": 4, "v": "{$sphy1+of soap}" }, 18 | { "w": 4, "v": "{$sphy1+of roses}" } 19 | ] 20 | -------------------------------------------------------------------------------- /src/tables/hair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 35, "v": "{hairLength}{$hair+, }{hairType}{$hair+, }{hairColor}{$hair+hair and }" }, 3 | { "w": 4, "v": "{hairLength}{$hair+, }{hairType}{$hair+, }{hairColor}{$hair+hair shaved on }{rlb}{$hair+$rl}{$hair+side and }" }, 4 | { "w": 3, "v": "{hairLength}{$hair+, }{hairColor}{$hair+mohawk and }" }, 5 | { "w": 8, "v": "{$hair=a bald head and }" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hairColor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 25, "v": "{$hair+brown }" }, 3 | { "w": 20, "v": "{$hair+auburn }" }, 4 | { "w": 12, "v": "{$hair+blond }" }, 5 | { "w": 14, "v": "{$hair+red }" }, 6 | { "w": 8, "v": "{$hair+golden }" }, 7 | { "w": 5, "v": "{$hair+silver }" }, 8 | { "w": 16, "v": "{$hair+gray }" }, 9 | { "w": 8, "v": "{$hair+white }" }, 10 | { "w": 20, "v": "{$hair+black }" }, 11 | { "w": 5, "v": "{$hair+dyed black }" }, 12 | { "w": 1, "v": "{$hair+dyed blue }" }, 13 | { "w": 1, "v": "{$hair+dyed purple }" }, 14 | { "w": 1, "v": "{$hair+dyed pink }" }, 15 | { "w": 1, "v": "{$hair+dyed yellow }" }, 16 | { "w": 1, "v": "{$hair+dyed red }" }, 17 | { "w": 1, "v": "{$hair+dyed orange }" }, 18 | { "w": 1, "v": "{$hair+dyed green }" }, 19 | { "w": 1, "v": "{$hair+dyed teal }" } 20 | ] 21 | -------------------------------------------------------------------------------- /src/tables/hairLength.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$hair=cropped}" }, 3 | { "w": 5, "v": "{$hair=short}" }, 4 | { "w": 5, "v": "{$hair=long}" }, 5 | { "w": 3, "v": "{$hair=very long}" }, 6 | { "w": 1, "v": "{$hair=extremely long}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/hairType.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$hair+straight}" }, 3 | { "w": 3, "v": "{$hair+wavy}" }, 4 | { "w": 3, "v": "{$hair+curled}" }, 5 | { "w": 1, "v": "{$hair+braided}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/halfelfgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{malehumanname}{humansurname}" }, 3 | { "w": 1, "v": "{female}{femalehumanname}{humansurname}" }, 4 | { "w": 1, "v": "{male}{maleelfname}{elfsurname}" }, 5 | { "w": 1, "v": "{female}{femaleelfname}{elfsurname}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/halfelfskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{humanskin}" }, 3 | { "w": 1, "v": "{elfskin}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/halflinggender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{malehalflingname}{halflingsurname}" }, 3 | { "w": 1, "v": "{female}{femalehalflingname}{halflingsurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/halflinggod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 3, 4 | "v": "{$god=Yondalla}{$goddescr=, Goddess of halflings, bounty, protection, children, security, leadership, wisdom, creation and family. (Lawful Good)}" 5 | }, 6 | { "w": 2, "v": "{humangod}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/halflingsurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Ater}" }, 3 | { "w": 1, "v": "{$name+ Banksi}" }, 4 | { "w": 1, "v": "{$name+ Beddye}" }, 5 | { "w": 1, "v": "{$name+ Bolge}" }, 6 | { "w": 1, "v": "{$name+ Bophill}" }, 7 | { "w": 1, "v": "{$name+ Bophubb}" }, 8 | { "w": 1, "v": "{$name+ Bophubb}" }, 9 | { "w": 1, "v": "{$name+ Borne}" }, 10 | { "w": 1, "v": "{$name+ Buck}" }, 11 | { "w": 1, "v": "{$name+ Burrow}" }, 12 | { "w": 1, "v": "{$name+ Chilly}" }, 13 | { "w": 1, "v": "{$name+ Chilly}" }, 14 | { "w": 1, "v": "{$name+ Chinell}" }, 15 | { "w": 1, "v": "{$name+ Chylle}" }, 16 | { "w": 1, "v": "{$name+ Dane}" }, 17 | { "w": 1, "v": "{$name+ Derhubb}" }, 18 | { "w": 1, "v": "{$name+ Finchey}" }, 19 | { "w": 1, "v": "{$name+ Fordye}" }, 20 | { "w": 1, "v": "{$name+ Galbolg}" }, 21 | { "w": 1, "v": "{$name+ Geddye}" }, 22 | { "w": 1, "v": "{$name+ Gelnne}" }, 23 | { "w": 1, "v": "{$name+ Gerop}" }, 24 | { "w": 1, "v": "{$name+ Gerubb}" }, 25 | { "w": 1, "v": "{$name+ Growort}" }, 26 | { "w": 1, "v": "{$name+ Hawe}" }, 27 | { "w": 1, "v": "{$name+ Lacey}" }, 28 | { "w": 1, "v": "{$name+ Maycey}" }, 29 | { "w": 1, "v": "{$name+ Midgee}" }, 30 | { "w": 1, "v": "{$name+ Mugwes}" }, 31 | { "w": 1, "v": "{$name+ Mugwort}" }, 32 | { "w": 1, "v": "{$name+ Mynge}" }, 33 | { "w": 1, "v": "{$name+ Nete}" }, 34 | { "w": 1, "v": "{$name+ Ophirn}" }, 35 | { "w": 1, "v": "{$name+ Rowich}" }, 36 | { "w": 1, "v": "{$name+ Tunnell}" }, 37 | { "w": 1, "v": "{$name+ Urrort}" }, 38 | { "w": 1, "v": "{$name+ Wake}" }, 39 | { "w": 1, "v": "{$name+ Oldbuck}" }, 40 | { "w": 1, "v": "{$name+ Twofoot}" }, 41 | { "w": 1, "v": "{$name+ Longfoot}" }, 42 | { "w": 1, "v": "{$name+ Goold}" }, 43 | { "w": 1, "v": "{$name+ Hornblower}" }, 44 | { "w": 1, "v": "{$name+ Bottomhill}" }, 45 | { "w": 1, "v": "{$name+ Featherbottom}" }, 46 | { "w": 1, "v": "{$name+ Cotton}" }, 47 | { "w": 1, "v": "{$name+ Smallburrow}" }, 48 | { "w": 1, "v": "{$name+ Greenhill}" }, 49 | { "w": 1, "v": "{$name+ Headstrong}" }, 50 | { "w": 1, "v": "{$name+ Barrowes}" }, 51 | { "w": 1, "v": "{$name+ Brandywood}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/halforcgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{malehumanname}{humansurname}" }, 3 | { "w": 1, "v": "{female}{femalehumanname}{humansurname}" }, 4 | { "w": 1, "v": "{male}{maleorcname}{orcsurname}" }, 5 | { "w": 1, "v": "{female}{femaleorcname}{orcsurname}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/halforcskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{orcskin}" }, 3 | { "w": 2, "v": "{humanskin}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/halfquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 12, "v": "{$quirks+}" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+tries to stay home as much as possible. }" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+usually tries not to get noticed. }" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is very shy. }{%cha-1}" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+has several pet animals. }" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+rides a pony everywhere. }" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always has a good joke to tell. }{%cha+2}" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+knows all there is to know about farms. }" }, 10 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+lived }{$quirks+$minPoss}{$quirks+early years in a caravan. }" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never goes anywhere without }{$quirks+$minPoss}{$quirks+best friend. }" }, 12 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+smiles constantly. }{%cha+1}" }, 13 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+values }{$quirks+$minPoss}{$quirks+community very highly. }" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/head.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$bp=lip}" }, 3 | { "w": 1, "v": "{rl}{$bp=$rl}{$bp+cheek}" }, 4 | { "w": 1, "v": "{$bp=forehead}" }, 5 | { "w": 2, "v": "{$bp=nose}" }, 6 | { "w": 3, "v": "{rl}{$bp=$rl}{$bp+eyebrow}" }, 7 | { "w": 5, "v": "{rl}{$bp=$rl}{$bp+ear}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/height.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%height=142}{%str-2}{%dex+2}{%con-2}" }, 3 | { "w": 1, "v": "{%height=147}{%str-2}{%dex+2}{%con-2}" }, 4 | { "w": 3, "v": "{%height=152}{%str-1}{%dex+1}{%con-1}" }, 5 | { "w": 3, "v": "{%height=157}{%str-1}{%dex+1}{%con-1}" }, 6 | { "w": 3, "v": "{%height=162}" }, 7 | { "w": 5, "v": "{%height=167}" }, 8 | { "w": 5, "v": "{%height=172}" }, 9 | { "w": 5, "v": "{%height=177}" }, 10 | { "w": 5, "v": "{%height=182}{%str+1}{%dex-1}{%con+1}" }, 11 | { "w": 2, "v": "{%height=187}{%str+1}{%dex-1}{%con+1}" }, 12 | { "w": 2, "v": "{%height=192}{%str+2}{%dex-2}{%con+2}" }, 13 | { "w": 1, "v": "{%height=197}{%str+2}{%dex-2}{%con+2}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/hiCha.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%cha+2}" }, 3 | { "w": 2, "v": "{%cha+4}" }, 4 | { "w": 2, "v": "{%cha+5}{goodface}" }, 5 | { "w": 1, "v": "{%cha+6}{goodface}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hiCon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%con+2}" }, 3 | { "w": 2, "v": "{%con+4}" }, 4 | { "w": 2, "v": "{%con+5}" }, 5 | { "w": 1, "v": "{%con+6}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hiDex.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%dex+2}" }, 3 | { "w": 2, "v": "{%dex+4}" }, 4 | { "w": 2, "v": "{%dex+5}" }, 5 | { "w": 1, "v": "{%dex+6}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hiInt.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%int+2}" }, 3 | { "w": 2, "v": "{%int+4}" }, 4 | { "w": 2, "v": "{%int+5}" }, 5 | { "w": 1, "v": "{%int+6}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hiStr.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%str+2}" }, 3 | { "w": 2, "v": "{%str+4}" }, 4 | { "w": 2, "v": "{%str+5}" }, 5 | { "w": 1, "v": "{%str+6}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/hiWis.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%wis+2}" }, 3 | { "w": 2, "v": "{%wis+4}" }, 4 | { "w": 2, "v": "{%wis+5}" }, 5 | { "w": 1, "v": "{%wis+6}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/highattractiveness.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{goodfacemod}{goodlooking}{$faceshape+$mod}" }, 3 | { "w": 2, "v": "{goodlooking}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/hooks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "name": "Classic", "v": "{hooks1}" }, 3 | { "w": 2, "name": "Funky", "v": "{hooks2}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/humangender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{malehumanname}{humansurname}" }, 3 | { "w": 1, "v": "{female}{femalehumanname}{humansurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/humangod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 70, "v": "{goodgod}" }, 3 | { "w": 5, "v": "{evilgod}" }, 4 | { "w": 1, "v": "{dragongod}" }, 5 | { "w": 1, "v": "{drowgod}" }, 6 | { "w": 1, "v": "{dwarfgod}" }, 7 | { "w": 2, "v": "{elfgod}" }, 8 | { "w": 1, "v": "{gnomegod}" }, 9 | { "w": 1, "v": "{halflinggod}" }, 10 | { "w": 1, "v": "{orcgod}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/humanskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$skin+white}" }, 3 | { "w": 1, "v": "{$skin+pink}" }, 4 | { "w": 1, "v": "{$skin+red}" }, 5 | { "w": 1, "v": "{$skin+brown}" }, 6 | { "w": 1, "v": "{$skin+black}" }, 7 | { "w": 1, "v": "{$skin+golden}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/humansurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Cartwright}" }, 3 | { "w": 1, "v": "{$name+ de Bolbec}" }, 4 | { "w": 1, "v": "{$name+ Fenwick}" }, 5 | { "w": 1, "v": "{$name+ Cromwell}" }, 6 | { "w": 1, "v": "{$name+ McKinnon}" }, 7 | { "w": 1, "v": "{$name+ Writingham}" }, 8 | { "w": 1, "v": "{$name+ deGrey}" }, 9 | { "w": 1, "v": "{$name+ de Mowbray}" }, 10 | { "w": 1, "v": "{$name+ Rowntree}" }, 11 | { "w": 1, "v": "{$name+ Chaucer}" }, 12 | { "w": 1, "v": "{$name+ Cornwallis}" }, 13 | { "w": 1, "v": "{$name+ Drake}" }, 14 | { "w": 1, "v": "{$name+ Crewe}" }, 15 | { "w": 1, "v": "{$name+ Montagu}" }, 16 | { "w": 1, "v": "{$name+ Cleves}" }, 17 | { "w": 1, "v": "{$name+ Woodleaf}" }, 18 | { "w": 1, "v": "{$name+ Serpentwind}" }, 19 | { "w": 1, "v": "{$name+ Hillless}" }, 20 | { "w": 1, "v": "{$name+ Mournhell}" }, 21 | { "w": 1, "v": "{$name+ Farlight}" }, 22 | { "w": 1, "v": "{$name+ Bladewalker}" }, 23 | { "w": 1, "v": "{$name+ Ashglade}" }, 24 | { "w": 1, "v": "{$name+ Wheatflow}" }, 25 | { "w": 1, "v": "{$name+ Morningfall}" }, 26 | { "w": 1, "v": "{$name+ Glorybluff}" }, 27 | { "w": 1, "v": "{$name+ Redstream}" }, 28 | { "w": 1, "v": "{$name+ Commonbrook}" }, 29 | { "w": 1, "v": "{$name+ Cloudfang}" }, 30 | { "w": 1, "v": "{$name+ Darkdraft}" }, 31 | { "w": 1, "v": "{$name+ Mistsplitter}" }, 32 | { "w": 1, "v": "{$name+ Lunadream}" }, 33 | { "w": 1, "v": "{$name+ Truegust}" }, 34 | { "w": 1, "v": "{$name+ Twoorb}" }, 35 | { "w": 1, "v": "{$name+ Duststone}" }, 36 | { "w": 1, "v": "{$name+ Caskbow}" }, 37 | { "w": 1, "v": "{$name+ Keenseeker}" }, 38 | { "w": 1, "v": "{$name+ Boulderdown}" }, 39 | { "w": 1, "v": "{$name+ Laughingsteel}" }, 40 | { "w": 1, "v": "{$name+ Stonesworn}" } 41 | ] 42 | -------------------------------------------------------------------------------- /src/tables/inheritance.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$quirks+castle}" }, 3 | { "w": 4, "v": "{$quirks+farm}" }, 4 | { "w": 2, "v": "{$quirks+manor}" }, 5 | { "w": 2, "v": "{$quirks+small forest}" }, 6 | { "w": 2, "v": "{$quirks+creepy house}" }, 7 | { "w": 1, "v": "{$quirks+palace}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/kenkucolor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$kenkucolor=black}" }, 3 | { "w": 1, "v": "{$kenkucolor=dark blue}" }, 4 | { "w": 1, "v": "{$kenkucolor=dark gray}" }, 5 | { "w": 1, "v": "{$kenkucolor=dark brown}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/kenkuname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$kenkuname=Wind}" }, 3 | { "w": 3, "v": "{$kenkuname=Gust}" }, 4 | { "w": 3, "v": "{$kenkuname=Stream}" }, 5 | { "w": 3, "v": "{$kenkuname=Coins}" }, 6 | { "w": 3, "v": "{$kenkuname=Keys}" }, 7 | { "w": 3, "v": "{$kenkuname=Laugh}" }, 8 | { "w": 3, "v": "{$kenkuname=Thunder}" }, 9 | { "w": 3, "v": "{$kenkuname=Door Slam}" }, 10 | { "w": 3, "v": "{$kenkuname=Knock Knock}" }, 11 | { "w": 3, "v": "{$kenkuname=Small Bell}" }, 12 | { "w": 3, "v": "{$kenkuname=Big Bell}" }, 13 | { "w": 3, "v": "{$kenkuname=Yawn}" }, 14 | { "w": 3, "v": "{$kenkuname=Waterfall}" }, 15 | { "w": 3, "v": "{$kenkuname=Applause}" }, 16 | { "w": 3, "v": "{$kenkuname=Clap}" }, 17 | { "w": 3, "v": "{$kenkuname=Shatter}" }, 18 | { "w": 1, "v": "{$kenkuname=Fog Horn}" }, 19 | { "w": 3, "v": "{$kenkuname=Crickets}" }, 20 | { "w": 2, "v": "{$kenkuname=Fart}" }, 21 | { "w": 3, "v": "{$kenkuname=Tap Tap}" }, 22 | { "w": 3, "v": "{$kenkuname=Whirr}" }, 23 | { "w": 3, "v": "{$kenkuname=Grill}" }, 24 | { "w": 3, "v": "{$kenkuname=Bubble}" }, 25 | { "w": 3, "v": "{$kenkuname=Steam}" }, 26 | { "w": 3, "v": "{$kenkuname=Crash}" }, 27 | { "w": 3, "v": "{$kenkuname=Cough}" }, 28 | { "w": 3, "v": "{$kenkuname=Rattle}" } 29 | ] 30 | -------------------------------------------------------------------------------- /src/tables/kenkunameanimal.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 30, "v": "{$kenkuname+}" }, 3 | { "w": 1, "v": "{$kenkuname=Meow}" }, 4 | { "w": 1, "v": "{$kenkuname=Purr}" }, 5 | { "w": 1, "v": "{$kenkuname=Rat Scratch}" }, 6 | { "w": 1, "v": "{$kenkuname=Hoot}" }, 7 | { "w": 1, "v": "{$kenkuname=Raven}" }, 8 | { "w": 1, "v": "{$kenkuname=Bark}" }, 9 | { "w": 1, "v": "{$kenkuname=Growl}" }, 10 | { "w": 1, "v": "{$kenkuname=Squeak}" }, 11 | { "w": 1, "v": "{$kenkuname=Batwing}" }, 12 | { "w": 1, "v": "{$kenkuname=Howl}" }, 13 | { "w": 1, "v": "{$kenkuname=Falcon}" }, 14 | { "w": 1, "v": "{$kenkuname=Eagle}" }, 15 | { "w": 1, "v": "{$kenkuname=Bleat}" }, 16 | { "w": 1, "v": "{$kenkuname=Squawk}" }, 17 | { "w": 1, "v": "{$kenkuname=Cluck}" }, 18 | { "w": 1, "v": "{$kenkuname=Moo}" }, 19 | { "w": 1, "v": "{$kenkuname=Hiss}" }, 20 | { "w": 1, "v": "{$kenkuname=Fox}" } 21 | ] 22 | -------------------------------------------------------------------------------- /src/tables/kenkunamefighting.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 30, "v": "{$kenkuname+}" }, 3 | { "w": 1, "v": "{$kenkuname=Cut}" }, 4 | { "w": 1, "v": "{$kenkuname=Scream}" }, 5 | { "w": 1, "v": "{$kenkuname=Shout}" }, 6 | { "w": 1, "v": "{$kenkuname=Battle}" }, 7 | { "w": 1, "v": "{$kenkuname=Stab}" }, 8 | { "w": 1, "v": "{$kenkuname=Blades Clashing}" }, 9 | { "w": 1, "v": "{$kenkuname=Arrow}" }, 10 | { "w": 1, "v": "{$kenkuname=Crossbow}" }, 11 | { "w": 1, "v": "{$kenkuname=Unsheathing}" }, 12 | { "w": 1, "v": "{$kenkuname=Groan}" }, 13 | { "w": 1, "v": "{$kenkuname=Punch}" }, 14 | { "w": 1, "v": "{$kenkuname=Slap}" }, 15 | { "w": 1, "v": "{$kenkuname=Boom}" }, 16 | { "w": 1, "v": "{$kenkuname=Catapult}" }, 17 | { "w": 1, "v": "{$kenkuname=Trebuchet}" } 18 | ] 19 | -------------------------------------------------------------------------------- /src/tables/kenkunamemetal.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 12, "v": "{$kenkuname+}" }, 3 | { "w": 1, "v": "{$kenkuname=Bang}" }, 4 | { "w": 1, "v": "{$kenkuname=Clang}" }, 5 | { "w": 1, "v": "{$kenkuname=Scissor}" }, 6 | { "w": 1, "v": "{$kenkuname=Hammer}" }, 7 | { "w": 1, "v": "{$kenkuname=Click}" }, 8 | { "w": 1, "v": "{$kenkuname=Anvil}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/kenkunamequiet.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 20, "v": "{$kenkuname+}" }, 3 | { "w": 1, "v": "{$kenkuname=Whisper}" }, 4 | { "w": 1, "v": "{$kenkuname=Breeze}" }, 5 | { "w": 1, "v": "{$kenkuname=Light Step}" }, 6 | { "w": 1, "v": "{$kenkuname=Breath}" }, 7 | { "w": 1, "v": "{$kenkuname=Rustling Leaves}" }, 8 | { "w": 1, "v": "{$kenkuname=Page Turning}" }, 9 | { "w": 1, "v": "{$kenkuname=Murmur}" }, 10 | { "w": 1, "v": "{$kenkuname=Pitter-Patter}" }, 11 | { "w": 1, "v": "{$kenkuname=Flutter}" }, 12 | { "w": 1, "v": "{$kenkuname=Quill Scratch}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/kenkuquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 18, "v": "{$quirks+}" }, 3 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+will always try to perch }{$quirks+$minHim}{$quirks+self on furniture. }" }, 4 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+spends most of }{$quirks+$minPoss}{$quirks+free time on the top of buildings. }" }, 5 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+finds repetitive tasks soothing. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+enjoys drawing copies of other drawings. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+excels at sculpting wooden replicas of objects. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+highly values }{$quirks+$minPoss}{$quirks+flock's teachings. }" }, 9 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+enjoys mimicking the voice of }{$quirks+$minPoss}{$quirks+non-kenku friends. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+uses a different voice for every word }{$quirks+$minPro}{$quirks+speaks. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is often found staring at the sky. }" }, 12 | { "w": 3, "v": "{$quirks+$majPoss}{$quirks+sentences are always ponctuated with seemingly random sounds. }" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/kenkuskin.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{dragons}{feathertexture}{kenkucolor}{$skin=$feathertexture}{$skin+ }{$skin+$kenkucolor}{$skintype= feathers}" }] 2 | -------------------------------------------------------------------------------- /src/tables/language.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 8, "v": "{$lang=elvish}" }, 3 | { "w": 2, "v": "{$lang=celestial}" }, 4 | { "w": 5, "v": "{$lang=draconic}" }, 5 | { "w": 6, "v": "{$lang=dwarvish}" }, 6 | { "w": 2, "v": "{$lang=infernal}" }, 7 | { "w": 2, "v": "{$lang=sylvan}" }, 8 | { "w": 2, "v": "{$lang=orcish}" }, 9 | { "w": 2, "v": "{$lang=deep speech}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/learned.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Astrologer", "v": "{$occupation=astrologer}{kenkunamequiet}" }, 3 | { "w": 1, "name": "Cartographer", "v": "{$occupation=cartographer}{kenkunamequiet}" }, 4 | { "w": 1, "name": "Historian", "v": "{$occupation=historian}{kenkunamequiet}" }, 5 | { "w": 1, "name": "Poet", "v": "{$occupation=poet}{%cha+1}{kenkuname}" }, 6 | { "w": 1, "name": "Philosopher", "v": "{$occupation=philosopher}{%wis+1}{%moralneutral+1}{religiousquirk}{kenkunamequiet}" }, 7 | { "w": 1, "name": "Hermit", "v": "{$occupation=hermit}{%wis+1}{religiousquirk}{kenkunameanimal}" }, 8 | { "w": 1, "name": "Wandering Pilgrim", "v": "{$occupation=wandering pilgrim}{%wis+1}{%good+3}{%evil-1}{religiousquirk}{kenkunamequiet}" }, 9 | { "w": 2, "name": "Barber", "v": "{$occupation=barber}{%dex+3}{kenkuname}" }, 10 | { "w": 1, "name": "Doctor", "v": "{$occupation=doctor}{%dex+2}{%int+2}{kenkuname}" }, 11 | { "w": 1, "name": "Medic", "v": "{$occupation=medic}{%dex+1}{kenkuname}" }, 12 | { "w": 1, "name": "Barrister", "v": "{$occupation=barrister}{%cha+2}{%lawful+3}{kenkuname}" }, 13 | { "w": 1, "name": "Herald", "v": "{$occupation=herald}{%cha+3}{kenkuname}" }, 14 | { "w": 2, "name": "Scribe", "v": "{$occupation=scribe}{%dex+1}{religiousquirk}{kenkunamequiet}" }, 15 | { "w": 2, "name": "Acolyte", "v": "{$occupation=acolyte}{%wis+1}{religiousquirk}{kenkunamequiet}" }, 16 | { "w": 2, "name": "Neophyte", "v": "{$occupation=neophyte}{religiousquirk}{kenkunamequiet}" } 17 | ] 18 | -------------------------------------------------------------------------------- /src/tables/lesserNobility.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Explorer", "v": "{$occupation=explorer}{%wis+1}{%dex+1}{%con+1}{kenkuname}" }, 3 | { "w": 2, "name": "Diplomat", "v": "{$occupation=diplomat}{%cha+1}{%int+1}{kenkunamequiet}" }, 4 | { "w": 2, "name": "Knight", "v": "{$occupation=knight}{%dex+1}{%str+2}{%con+2}{militaryquirk}{kenkunamefighting}" }, 5 | { "w": 1, "name": "Minister", "v": "{$occupation=minister}{%cha+1}{religiousquirk}{kenkunamequiet}" }, 6 | { "w": 1, "name": "Page", "v": "{$occupation=page}{%dex+1}{%str+1}{%int-1}{militaryquirk}{kenkunamequiet}" }, 7 | { "w": 2, "name": "Squire", "v": "{$occupation=squire}{%str+1}{%dex+1}{militaryquirk}{kenkunamefighting}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/lightweight.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$build=an anorexic}{%str-3}{%con-2}" }, 3 | { "w": 30, "v": "{$build=a skinny}{%str-2}{%dex+1}{%con-2}" }, 4 | { "w": 40, "v": "{$build=a lean}{%str-1}{%dex+1}" }, 5 | { "w": 30, "v": "{$build=an athletic}{%str+1}{%dex+1}{%con+1}" }, 6 | { "w": 16, "v": "{$build=a muscular}{%str+2}{%con+1}" }, 7 | { "w": 20, "v": "{$build=a regular}" }, 8 | { "w": 5, "v": "{$build=a beefy}{%str+2}{%dex-1}{%con+2}{%height+3}" }, 9 | { "w": 2, "v": "{$build=a massive}{%str+3}{%dex-2}{%con+3}{%height+5}" }, 10 | { "w": 10, "v": "{$build=a round}{%dex-1}{%con+1}" }, 11 | { "w": 3, "v": "{$build=a fat}{%dex-1}{%str+1}" }, 12 | { "w": 2, "v": "{$build=an overweight}{%str+1}{%dex-2}{%con-1}{%cha-1}" }, 13 | { "w": 1, "v": "{$build=an obese}{%dex-4}{%str+1}{%con-2}{%cha-2}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/lizardcolors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$lizardcolor=black}" }, 3 | { "w": 2, "v": "{$lizardcolor=gray}" }, 4 | { "w": 2, "v": "{$lizardcolor=brown}" }, 5 | { "w": 3, "v": "{$lizardcolor=emerald}" }, 6 | { "w": 3, "v": "{$lizardcolor=dark green}" }, 7 | { "w": 3, "v": "{$lizardcolor=green}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/lizardgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{dragonbornname}{$race=lizardman}" }, 3 | { "w": 1, "v": "{female}{dragonbornname}{$race=lizardwoman}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/lizardquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 12, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has no respect for creatures without scales. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+pities creatures without armor, natural or made. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a hard time taking clothes seriously. }" }, 6 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+considers dead bodies as food, no matter who they were while alive. }" }, 7 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+loves making small knives and tools out of bones. }" }, 8 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+longs for a life in the marshes. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+sleeps best when mostly underwater. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+prefers swimming to walking. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't understand the concept of money. }" }, 12 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has learned to laugh by observation. }{$quirks+$majPro}{$quirks+ still doesn't understand humor.}" }, 13 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a preference for live food. }" }, 14 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't understand sarcasm. }" }, 15 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a hard time understanding and remembering names that aren't descriptive. }" } 16 | ] 17 | -------------------------------------------------------------------------------- /src/tables/lizardskin.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{lizardcolors}{scaletexture}{$skin=$scaletexture}{$skin+ }{$skin+$lizardcolor}{$skintype= scales}" }] 2 | -------------------------------------------------------------------------------- /src/tables/lizardtraits1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+never acts on impulse. }{%wis+1}" }, 3 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+is very detached from }{$lizardtraits+$minPoss}{$lizardtraits+emotions. }" }, 4 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+has a hard time understanding other humanoids' emotions. }" }, 5 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+has no concept of empathy. }" }, 6 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+seems emotionally distant. }" }, 7 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+is always cold and calculating. }" }, 8 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+feels no attachment to the past. }" }, 9 | { "w": 2, "v": "{$lizardtraits=$majPro}{$lizardtraits+values }{$lizardtraits+$minPoss}{$lizardtraits+survival above everything else. }" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/longbeard.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 100, "v": "{longbeard1}{beardshape}" }, 3 | { "w": 1, "v": "{$beard=}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/longbeard1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$beard= with a medium}" }, 3 | { "w": 3, "v": "{$beard= with a long}" }, 4 | { "w": 2, "v": "{$beard= with a long, braided}" }, 5 | { "w": 3, "v": "{$beard= with a very long}" }, 6 | { "w": 2, "v": "{$beard= with a very long, braided}" }, 7 | { "w": 3, "v": "{$beard= with a gigantic}" }, 8 | { "w": 2, "v": "{$beard= with a gigantic, braided}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/lowCha.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%cha-4}" }, 3 | { "w": 2, "v": "{%cha-2}" }, 4 | { "w": 1, "v": "{%cha+0}" }, 5 | { "w": 1, "v": "{%cha+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/lowCon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%con-4}" }, 3 | { "w": 2, "v": "{%con-2}" }, 4 | { "w": 1, "v": "{%con+0}" }, 5 | { "w": 1, "v": "{%con+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/lowDex.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%dex-4}" }, 3 | { "w": 2, "v": "{%dex-2}" }, 4 | { "w": 1, "v": "{%dex+0}" }, 5 | { "w": 1, "v": "{%dex+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/lowInt.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%int-4}" }, 3 | { "w": 2, "v": "{%int-2}" }, 4 | { "w": 1, "v": "{%int+0}" }, 5 | { "w": 1, "v": "{%int+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/lowStr.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%str-4}" }, 3 | { "w": 2, "v": "{%str-2}" }, 4 | { "w": 1, "v": "{%str+0}" }, 5 | { "w": 1, "v": "{%str+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/lowWis.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{%wis-4}" }, 3 | { "w": 2, "v": "{%wis-2}" }, 4 | { "w": 1, "v": "{%wis+0}" }, 5 | { "w": 1, "v": "{%wis+2}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/male.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{$gender=male}{$majPro=He }{$minPro=he }{$workGender=man}{$majPoss=His }{$minPoss=his }{$minHim=him}" }] 2 | -------------------------------------------------------------------------------- /src/tables/maledwarfname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Akan}" }, 3 | { "w": 1, "v": "{$name=Arin}" }, 4 | { "w": 1, "v": "{$name=Arkud}" }, 5 | { "w": 1, "v": "{$name=Arvin}" }, 6 | { "w": 1, "v": "{$name=Atur}" }, 7 | { "w": 1, "v": "{$name=Azal}" }, 8 | { "w": 1, "v": "{$name=Bali}" }, 9 | { "w": 1, "v": "{$name=Banain}" }, 10 | { "w": 1, "v": "{$name=Bifund}" }, 11 | { "w": 1, "v": "{$name=Bori}" }, 12 | { "w": 1, "v": "{$name=Dinain}" }, 13 | { "w": 1, "v": "{$name=Disanz}" }, 14 | { "w": 1, "v": "{$name=Duli}" }, 15 | { "w": 1, "v": "{$name=Dwali}" }, 16 | { "w": 1, "v": "{$name=Fari}" }, 17 | { "w": 1, "v": "{$name=Funda}" }, 18 | { "w": 1, "v": "{$name=Gamah}" }, 19 | { "w": 1, "v": "{$name=Gamal}" }, 20 | { "w": 1, "v": "{$name=Gamin}" }, 21 | { "w": 1, "v": "{$name=Geda}" }, 22 | { "w": 1, "v": "{$name=Gili}" }, 23 | { "w": 1, "v": "{$name=Glatur}" }, 24 | { "w": 1, "v": "{$name=Gluri}" }, 25 | { "w": 1, "v": "{$name=Grakilm}" }, 26 | { "w": 1, "v": "{$name=Iklal}" }, 27 | { "w": 1, "v": "{$name=Irim}" }, 28 | { "w": 1, "v": "{$name=Kari}" }, 29 | { "w": 1, "v": "{$name=Khali}" }, 30 | { "w": 1, "v": "{$name=Kurdu}" }, 31 | { "w": 1, "v": "{$name=Loinarv}" }, 32 | { "w": 1, "v": "{$name=Lukhal}" }, 33 | { "w": 1, "v": "{$name=Nainarv}" }, 34 | { "w": 1, "v": "{$name=Orim}" }, 35 | { "w": 1, "v": "{$name=Rainan}" }, 36 | { "w": 1, "v": "{$name=Thainarv}" }, 37 | { "w": 1, "v": "{$name=Thali}" }, 38 | { "w": 1, "v": "{$name=Thori}" }, 39 | { "w": 1, "v": "{$name=Thrari}" }, 40 | { "w": 1, "v": "{$name=Thrasanz}" }, 41 | { "w": 1, "v": "{$name=Thrimal}" }, 42 | { "w": 1, "v": "{$name=Throri}" }, 43 | { "w": 1, "v": "{$name=Thrukurd}" }, 44 | { "w": 1, "v": "{$name=Thunda}" }, 45 | { "w": 1, "v": "{$name=Thundu}" }, 46 | { "w": 1, "v": "{$name=Ukhur}" }, 47 | { "w": 1, "v": "{$name=Undil}" }, 48 | { "w": 1, "v": "{$name=Urdur}" }, 49 | { "w": 1, "v": "{$name=Uril}" }, 50 | { "w": 1, "v": "{$name=Urin}" }, 51 | { "w": 1, "v": "{$name=Zaghain}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/maleelfname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Annaeleth}" }, 3 | { "w": 1, "v": "{$name=Caresta}" }, 4 | { "w": 1, "v": "{$name=Celenwe}" }, 5 | { "w": 1, "v": "{$name=Celorfin}" }, 6 | { "w": 1, "v": "{$name=Cirdaere}" }, 7 | { "w": 1, "v": "{$name=Cirdire}" }, 8 | { "w": 1, "v": "{$name=Cirdore}" }, 9 | { "w": 1, "v": "{$name=Danore}" }, 10 | { "w": 1, "v": "{$name=Delemmak}" }, 11 | { "w": 1, "v": "{$name=Dirinor}" }, 12 | { "w": 1, "v": "{$name=Dorophil}" }, 13 | { "w": 1, "v": "{$name=Eahtadan}" }, 14 | { "w": 1, "v": "{$name=Egoron}" }, 15 | { "w": 1, "v": "{$name=Egos}" }, 16 | { "w": 1, "v": "{$name=Elegnos}" }, 17 | { "w": 1, "v": "{$name=Elel}" }, 18 | { "w": 1, "v": "{$name=Elered}" }, 19 | { "w": 1, "v": "{$name=Ellas}" }, 20 | { "w": 1, "v": "{$name=Elromior}" }, 21 | { "w": 1, "v": "{$name=Elurir}" }, 22 | { "w": 1, "v": "{$name=Endinwel}" }, 23 | { "w": 1, "v": "{$name=Enengod}" }, 24 | { "w": 1, "v": "{$name=Enereg}" }, 25 | { "w": 1, "v": "{$name=Erelmil}" }, 26 | { "w": 1, "v": "{$name=Erodh}" }, 27 | { "w": 1, "v": "{$name=Finaeli}" }, 28 | { "w": 1, "v": "{$name=Finare}" }, 29 | { "w": 1, "v": "{$name=Finasaer}" }, 30 | { "w": 1, "v": "{$name=Findire}" }, 31 | { "w": 1, "v": "{$name=Finerdhil}" }, 32 | { "w": 1, "v": "{$name=Finethil}" }, 33 | { "w": 1, "v": "{$name=Galadher}" }, 34 | { "w": 1, "v": "{$name=Galebre}" }, 35 | { "w": 1, "v": "{$name=Galegal}" }, 36 | { "w": 1, "v": "{$name=Galure}" }, 37 | { "w": 1, "v": "{$name=Golemmoth}" }, 38 | { "w": 1, "v": "{$name=Golineth}" }, 39 | { "w": 1, "v": "{$name=Gonethin}" }, 40 | { "w": 1, "v": "{$name=Hilore}" }, 41 | { "w": 1, "v": "{$name=Ingon}" }, 42 | { "w": 1, "v": "{$name=Ladore}" }, 43 | { "w": 1, "v": "{$name=Lemmaegli}" }, 44 | { "w": 1, "v": "{$name=Lionerdhon}" }, 45 | { "w": 1, "v": "{$name=Mironwe}" }, 46 | { "w": 1, "v": "{$name=Olond}" }, 47 | { "w": 1, "v": "{$name=Ophin}" }, 48 | { "w": 1, "v": "{$name=Oron}" }, 49 | { "w": 1, "v": "{$name=Penlador}" }, 50 | { "w": 1, "v": "{$name=Thilenwe}" } 51 | ] 52 | -------------------------------------------------------------------------------- /src/tables/malegnomename1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Bilbar}" }, 3 | { "w": 1, "v": "{$name=Bilcorin}" }, 4 | { "w": 1, "v": "{$name=Bilgrim}" }, 5 | { "w": 1, "v": "{$name=Briwor}" }, 6 | { "w": 1, "v": "{$name=Orpip}" }, 7 | { "w": 1, "v": "{$name=Orros}" }, 8 | { "w": 1, "v": "{$name=Panaziver}" }, 9 | { "w": 1, "v": "{$name=Podon}" }, 10 | { "w": 1, "v": "{$name=Quoji}" }, 11 | { "w": 1, "v": "{$name=Wrezu}" }, 12 | { "w": 1, "v": "{$name=Orutor}" }, 13 | { "w": 1, "v": "{$name=Oruver}" }, 14 | { "w": 1, "v": "{$name=Yexim}" }, 15 | { "w": 1, "v": "{$name=Yosston}" }, 16 | { "w": 1, "v": "{$name=Enitix}" }, 17 | { "w": 1, "v": "{$name=Felver}" }, 18 | { "w": 1, "v": "{$name=Grapip}" }, 19 | { "w": 1, "v": "{$name=Hisni}" }, 20 | { "w": 1, "v": "{$name=Histix}" }, 21 | { "w": 1, "v": "{$name=Horhik}" }, 22 | { "w": 1, "v": "{$name=Ianlin}" } 23 | ] 24 | -------------------------------------------------------------------------------- /src/tables/malegnomename2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Ianxim}" }, 3 | { "w": 1, "v": "{$name+ Jegim}" }, 4 | { "w": 1, "v": "{$name+ Jelen}" }, 5 | { "w": 1, "v": "{$name+ Jorros}" }, 6 | { "w": 1, "v": "{$name+ Nibis}" }, 7 | { "w": 1, "v": "{$name+ Orlin}" }, 8 | { "w": 1, "v": "{$name+ Yosvyn}" }, 9 | { "w": 1, "v": "{$name+ Zanybar}" }, 10 | { "w": 1, "v": "{$name+ Davgim}" }, 11 | { "w": 1, "v": "{$name+ Caldri}" }, 12 | { "w": 1, "v": "{$name+ Caltix}" }, 13 | { "w": 1, "v": "{$name+ Dorrug}" }, 14 | { "w": 1, "v": "{$name+ Enidon}" }, 15 | { "w": 1, "v": "{$name+ Enimorn}" }, 16 | { "w": 1, "v": "{$name+ Lokas}" }, 17 | { "w": 1, "v": "{$name+ Yegim}" }, 18 | { "w": 1, "v": "{$name+ Davlin}" }, 19 | { "w": 1, "v": "{$name+ Yeben}" }, 20 | { "w": 1, "v": "{$name+ Quomop}" }, 21 | { "w": 1, "v": "{$name+ Rasji}" }, 22 | { "w": 1, "v": "{$name+ Salben}" }, 23 | { "w": 1, "v": "{$name+ Salgim}" }, 24 | { "w": 1, "v": "{$name+ Saljin}" }, 25 | { "w": 1, "v": "{$name+ Tover}" }, 26 | { "w": 1, "v": "{$name+ Traser}" } 27 | ] 28 | -------------------------------------------------------------------------------- /src/tables/malegnomename3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Traziver}" }, 3 | { "w": 1, "v": "{$name+ Ummop}" }, 4 | { "w": 1, "v": "{$name+ Uricorin}" }, 5 | { "w": 1, "v": "{$name+ Urigrim}" }, 6 | { "w": 1, "v": "{$name+ Uriros}" }, 7 | { "w": 1, "v": "{$name+ Vormop}" }, 8 | { "w": 1, "v": "{$name+ Gadri}" }, 9 | { "w": 1, "v": "{$name+ Gamop}" }, 10 | { "w": 1, "v": "{$name+ Gaxif}" }, 11 | { "w": 1, "v": "{$name+ Jorxif}" }, 12 | { "w": 1, "v": "{$name+ Kelbar}" }, 13 | { "w": 1, "v": "{$name+ Kelfiz}" }, 14 | { "w": 1, "v": "{$name+ Lanvyn}" }, 15 | { "w": 1, "v": "{$name+ Merwor}" }, 16 | { "w": 1, "v": "{$name+ Warmorn}" }, 17 | { "w": 1, "v": "{$name+ Warryn}" }, 18 | { "w": 1, "v": "{$name+ Wilbis}" }, 19 | { "w": 1, "v": "{$name+ Wrefan}" }, 20 | { "w": 1, "v": "{$name+ Yetix}" }, 21 | { "w": 1, "v": "{$name+ Oruben}" }, 22 | { "w": 1, "v": "{$name+ Orujin}" }, 23 | { "w": 1, "v": "{$name+ Jorkur}" }, 24 | { "w": 1, "v": "{$name+ Quorug}" }, 25 | { "w": 1, "v": "{$name+ Yosser}" } 26 | ] 27 | -------------------------------------------------------------------------------- /src/tables/malegnomename4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Calser}" }, 3 | { "w": 1, "v": "{$name+ Lanfan}" }, 4 | { "w": 1, "v": "{$name+ Warrug}" }, 5 | { "w": 1, "v": "{$name+ Xalbis}" }, 6 | { "w": 1, "v": "{$name+ Xaltor}" }, 7 | { "w": 1, "v": "{$name+ Sayur}" }, 8 | { "w": 1, "v": "{$name+ Sinkur}" }, 9 | { "w": 1, "v": "{$name+ Tohim}" }, 10 | { "w": 1, "v": "{$name+ Toryn}" }, 11 | { "w": 1, "v": "{$name+ Xopip}" }, 12 | { "w": 1, "v": "{$name+ Erben}" }, 13 | { "w": 1, "v": "{$name+ Erfan}" }, 14 | { "w": 1, "v": "{$name+ Ertix}" }, 15 | { "w": 1, "v": "{$name+ Fargrim}" }, 16 | { "w": 1, "v": "{$name+ Felben}" }, 17 | { "w": 1, "v": "{$name+ Felcorin}" }, 18 | { "w": 1, "v": "{$name+ Bilver}" }, 19 | { "w": 1, "v": "{$name+ Brijin}" }, 20 | { "w": 1, "v": "{$name+ Briros}" }, 21 | { "w": 1, "v": "{$name+ Felhim}" } 22 | ] 23 | -------------------------------------------------------------------------------- /src/tables/malehalflingname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Adald}" }, 3 | { "w": 1, "v": "{$name=Algast}" }, 4 | { "w": 1, "v": "{$name=Ancin}" }, 5 | { "w": 1, "v": "{$name=Ardic}" }, 6 | { "w": 1, "v": "{$name=Arryn}" }, 7 | { "w": 1, "v": "{$name=Artin}" }, 8 | { "w": 1, "v": "{$name=Baldo}" }, 9 | { "w": 1, "v": "{$name=Cottolm}" }, 10 | { "w": 1, "v": "{$name=Daso}" }, 11 | { "w": 1, "v": "{$name=Falco}" }, 12 | { "w": 1, "v": "{$name=Fastinbr}" }, 13 | { "w": 1, "v": "{$name=Fastolph}" }, 14 | { "w": 1, "v": "{$name=Fastrard}" }, 15 | { "w": 1, "v": "{$name=Feric}" }, 16 | { "w": 1, "v": "{$name=Ferim}" }, 17 | { "w": 1, "v": "{$name=Fosco}" }, 18 | { "w": 1, "v": "{$name=Gariad}" }, 19 | { "w": 1, "v": "{$name=Gauwis}" }, 20 | { "w": 1, "v": "{$name=George}" }, 21 | { "w": 1, "v": "{$name=Gery}" }, 22 | { "w": 1, "v": "{$name=Giles}" }, 23 | { "w": 1, "v": "{$name=Gorme}" }, 24 | { "w": 1, "v": "{$name=Griffin}" }, 25 | { "w": 1, "v": "{$name=Gyleon}" }, 26 | { "w": 1, "v": "{$name=Halfo}" }, 27 | { "w": 1, "v": "{$name=Halfroc}" }, 28 | { "w": 1, "v": "{$name=Hamfo}" }, 29 | { "w": 1, "v": "{$name=Harand}" }, 30 | { "w": 1, "v": "{$name=Hardo}" }, 31 | { "w": 1, "v": "{$name=Herim}" }, 32 | { "w": 1, "v": "{$name=Hildo}" }, 33 | { "w": 1, "v": "{$name=Holfo}" }, 34 | { "w": 1, "v": "{$name=Holme}" }, 35 | { "w": 1, "v": "{$name=Igoc}" }, 36 | { "w": 1, "v": "{$name=Johny}" }, 37 | { "w": 1, "v": "{$name=Lasym}" }, 38 | { "w": 1, "v": "{$name=Mado}" }, 39 | { "w": 1, "v": "{$name=Perin}" }, 40 | { "w": 1, "v": "{$name=Phames}" }, 41 | { "w": 1, "v": "{$name=Phomas}" }, 42 | { "w": 1, "v": "{$name=Pinas}" }, 43 | { "w": 1, "v": "{$name=Reward}" }, 44 | { "w": 1, "v": "{$name=Rewilh}" }, 45 | { "w": 1, "v": "{$name=Rime}" }, 46 | { "w": 1, "v": "{$name=Sengras}" }, 47 | { "w": 1, "v": "{$name=Tinbrand}" }, 48 | { "w": 1, "v": "{$name=Tiny}" }, 49 | { "w": 1, "v": "{$name=Tolme}" }, 50 | { "w": 1, "v": "{$name=Vigo}" }, 51 | { "w": 1, "v": "{$name=Wilhye}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/malehumanname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Althalos}" }, 3 | { "w": 1, "v": "{$name=Arthur}" }, 4 | { "w": 1, "v": "{$name=Asher}" }, 5 | { "w": 1, "v": "{$name=Barda}" }, 6 | { "w": 1, "v": "{$name=Benedict}" }, 7 | { "w": 1, "v": "{$name=Berinon}" }, 8 | { "w": 1, "v": "{$name=Borin}" }, 9 | { "w": 1, "v": "{$name=Brom}" }, 10 | { "w": 1, "v": "{$name=Bryce}" }, 11 | { "w": 1, "v": "{$name=Carac}" }, 12 | { "w": 1, "v": "{$name=Cassius}" }, 13 | { "w": 1, "v": "{$name=Cedric}" }, 14 | { "w": 1, "v": "{$name=Charles}" }, 15 | { "w": 1, "v": "{$name=Clifton}" }, 16 | { "w": 1, "v": "{$name=Dain}" }, 17 | { "w": 1, "v": "{$name=Destrian}" }, 18 | { "w": 1, "v": "{$name=Donald}" }, 19 | { "w": 1, "v": "{$name=Doran}" }, 20 | { "w": 1, "v": "{$name=Edmund}" }, 21 | { "w": 1, "v": "{$name=Falk}" }, 22 | { "w": 1, "v": "{$name=Favian}" }, 23 | { "w": 1, "v": "{$name=Fendrel}" }, 24 | { "w": 1, "v": "{$name=Forthwind}" }, 25 | { "w": 1, "v": "{$name=Francis}" }, 26 | { "w": 1, "v": "{$name=Frederick}" }, 27 | { "w": 1, "v": "{$name=Gavin}" }, 28 | { "w": 1, "v": "{$name=Gavin}" }, 29 | { "w": 1, "v": "{$name=Geoffrey}" }, 30 | { "w": 1, "v": "{$name=Gorvenal}" }, 31 | { "w": 1, "v": "{$name=Gregory}" }, 32 | { "w": 1, "v": "{$name=Hadrian}" }, 33 | { "w": 1, "v": "{$name=Henry}" }, 34 | { "w": 1, "v": "{$name=Janshai}" }, 35 | { "w": 1, "v": "{$name=Jarin}" }, 36 | { "w": 1, "v": "{$name=John}" }, 37 | { "w": 1, "v": "{$name=Joseph}" }, 38 | { "w": 1, "v": "{$name=Justice}" }, 39 | { "w": 1, "v": "{$name=Kelvin}" }, 40 | { "w": 1, "v": "{$name=Leo}" }, 41 | { "w": 1, "v": "{$name=Leofrick}" }, 42 | { "w": 1, "v": "{$name=Letholdus}" }, 43 | { "w": 1, "v": "{$name=Lief}" }, 44 | { "w": 1, "v": "{$name=Merek}" }, 45 | { "w": 1, "v": "{$name=Oliver}" }, 46 | { "w": 1, "v": "{$name=Peter}" }, 47 | { "w": 1, "v": "{$name=Peyton}" }, 48 | { "w": 1, "v": "{$name=Quinn}" }, 49 | { "w": 1, "v": "{$name=Robin}" }, 50 | { "w": 1, "v": "{$name=Roger}" }, 51 | { "w": 1, "v": "{$name=Ronald}" }, 52 | { "w": 1, "v": "{$name=Rowan}" }, 53 | { "w": 1, "v": "{$name=Rulf}" }, 54 | { "w": 1, "v": "{$name=Sadon}" }, 55 | { "w": 1, "v": "{$name=Simon}" }, 56 | { "w": 1, "v": "{$name=Terrowin}" }, 57 | { "w": 1, "v": "{$name=Terryn}" }, 58 | { "w": 1, "v": "{$name=Thomas}" }, 59 | { "w": 1, "v": "{$name=Tristan}" }, 60 | { "w": 1, "v": "{$name=Ulric}" }, 61 | { "w": 1, "v": "{$name=Walter}" }, 62 | { "w": 1, "v": "{$name=William}" }, 63 | { "w": 1, "v": "{$name=Xalvador}" }, 64 | { "w": 1, "v": "{$name=Zane}" } 65 | ] 66 | -------------------------------------------------------------------------------- /src/tables/maleorcname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Dalthu}" }, 3 | { "w": 1, "v": "{$name=Derthag}" }, 4 | { "w": 1, "v": "{$name=Eghuglat}" }, 5 | { "w": 1, "v": "{$name=Fozhug}" }, 6 | { "w": 1, "v": "{$name=Gelub}" }, 7 | { "w": 1, "v": "{$name=Glush}" }, 8 | { "w": 1, "v": "{$name=Gomatug}" }, 9 | { "w": 1, "v": "{$name=Hugmug}" }, 10 | { "w": 1, "v": "{$name=Jorgagu}" }, 11 | { "w": 1, "v": "{$name=Jughragh}" }, 12 | { "w": 1, "v": "{$name=Kebub}" }, 13 | { "w": 1, "v": "{$name=Kurbag}" }, 14 | { "w": 1, "v": "{$name=Maknok}" }, 15 | { "w": 1, "v": "{$name=Nofhug}" }, 16 | { "w": 1, "v": "{$name=Oakgu}" }, 17 | { "w": 1, "v": "{$name=Oogorim}" }, 18 | { "w": 1, "v": "{$name=Orgug}" }, 19 | { "w": 1, "v": "{$name=Ortguth}" }, 20 | { "w": 1, "v": "{$name=Pofhug}" }, 21 | { "w": 1, "v": "{$name=Poogugh}" }, 22 | { "w": 1, "v": "{$name=Puiltag}" }, 23 | { "w": 1, "v": "{$name=Quomaugh}" }, 24 | { "w": 1, "v": "{$name=Rurigig}" }, 25 | { "w": 1, "v": "{$name=Sargulg}" }, 26 | { "w": 1, "v": "{$name=Sarod}" }, 27 | { "w": 1, "v": "{$name=Shamar}" }, 28 | { "w": 1, "v": "{$name=Smegugh}" }, 29 | { "w": 1, "v": "{$name=Zog}" }, 30 | { "w": 1, "v": "{$name=Sogugh}" }, 31 | { "w": 1, "v": "{$name=Sugorim}" }, 32 | { "w": 1, "v": "{$name=Tozhug}" }, 33 | { "w": 1, "v": "{$name=Trugagh}" }, 34 | { "w": 1, "v": "{$name=Tulgan}" }, 35 | { "w": 1, "v": "{$name=Ulmragha}" }, 36 | { "w": 1, "v": "{$name=Urg}" }, 37 | { "w": 1, "v": "{$name=Vakmu}" }, 38 | { "w": 1, "v": "{$name=Varthurg}" }, 39 | { "w": 1, "v": "{$name=Vitgurat}" }, 40 | { "w": 1, "v": "{$name=Vlorg}" }, 41 | { "w": 1, "v": "{$name=Woglug}" }, 42 | { "w": 1, "v": "{$name=Xarlug}" }, 43 | { "w": 1, "v": "{$name=Xepug}" }, 44 | { "w": 1, "v": "{$name=Xig}" }, 45 | { "w": 1, "v": "{$name=Xug}" }, 46 | { "w": 1, "v": "{$name=Xugha}" }, 47 | { "w": 1, "v": "{$name=Xugor}" }, 48 | { "w": 1, "v": "{$name=Xuk}" }, 49 | { "w": 1, "v": "{$name=Yambagorn}" }, 50 | { "w": 1, "v": "{$name=Zarod}" }, 51 | { "w": 1, "v": "{$name=Zonagh}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/maletritonname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Zumnus}" }, 3 | { "w": 1, "v": "{$name=Dheldes}" }, 4 | { "w": 1, "v": "{$name=Jhelmes}" }, 5 | { "w": 1, "v": "{$name=Kurlus}" }, 6 | { "w": 1, "v": "{$name=Migis}" }, 7 | { "w": 1, "v": "{$name=Nenles}" }, 8 | { "w": 1, "v": "{$name=Dhomnos}" }, 9 | { "w": 1, "v": "{$name=Khorlos}" }, 10 | { "w": 1, "v": "{$name=Kaldas}" }, 11 | { "w": 1, "v": "{$name=Kuhlus}" }, 12 | { "w": 1, "v": "{$name=Julgus}" }, 13 | { "w": 1, "v": "{$name=Kinris}" }, 14 | { "w": 1, "v": "{$name=Vunnus}" }, 15 | { "w": 1, "v": "{$name=Minvis}" }, 16 | { "w": 1, "v": "{$name=Dhohlos}" }, 17 | { "w": 1, "v": "{$name=Cerzes}" }, 18 | { "w": 1, "v": "{$name=Mavnas}" }, 19 | { "w": 1, "v": "{$name=Ciglis}" }, 20 | { "w": 1, "v": "{$name=Zunrus}" }, 21 | { "w": 1, "v": "{$name=Dhulmus}" }, 22 | { "w": 1, "v": "{$name=Junus}" }, 23 | { "w": 1, "v": "{$name=Vurzus}" }, 24 | { "w": 1, "v": "{$name=Dhilis}" }, 25 | { "w": 1, "v": "{$name=Cinvis}" }, 26 | { "w": 1, "v": "{$name=Jilnis}" }, 27 | { "w": 1, "v": "{$name=Jannas}" }, 28 | { "w": 1, "v": "{$name=Jarlas}" }, 29 | { "w": 1, "v": "{$name=Nalas}" }, 30 | { "w": 1, "v": "{$name=Khinnis}" }, 31 | { "w": 1, "v": "{$name=Malzas}" }, 32 | { "w": 1, "v": "{$name=Marzas}" }, 33 | { "w": 1, "v": "{$name=Cendes}" }, 34 | { "w": 1, "v": "{$name=Kondos}" }, 35 | { "w": 1, "v": "{$name=Mivnis}" }, 36 | { "w": 1, "v": "{$name=Zonlos}" }, 37 | { "w": 1, "v": "{$name=Jhindis}" }, 38 | { "w": 1, "v": "{$name=Dhinlis}" }, 39 | { "w": 1, "v": "{$name=Vunrus}" }, 40 | { "w": 1, "v": "{$name=Minlis}" }, 41 | { "w": 1, "v": "{$name=Jhihris}" } 42 | ] 43 | -------------------------------------------------------------------------------- /src/tables/martial.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "name": "Bodyguard", "v": "{$occupation=bodyguard}{%wis+2}{militaryquirk}{kenkunamefighting}" }, 3 | { "w": 1, "name": "Bounty Hunter", "v": "{$occupation=bounty hunter}{%int+3}{militaryquirk}{kenkunamefighting}" }, 4 | { "w": 1, "name": "Forester", "v": "{$occupation=forester}{%wis+2}{%dex+1}{naturequirk}{kenkunameanimal}" }, 5 | { "w": 1, "name": "Gladiator", "v": "{$occupation=gladiator}{%str+2}{%dex+1}{%con+1}{militaryquirk}{kenkunamefighting}" }, 6 | { "w": 1, "name": "Jailer", "v": "{$occupation=jailer}{kenkuname}" }, 7 | { "w": 3, "name": "Soldier", "v": "{$occupation=soldier}{%dex+1}{%str+1}{%con+1}{militaryquirk}{kenkunamefighting}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/martialfinesse.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=rapier}" }, 3 | { "w": 1, "v": "{$weapon=scimitar}" }, 4 | { "w": 1, "v": "{$weapon=short sword}" }, 5 | { "w": 1, "v": "{$weapon=whip}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/martialranged.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=blowgun}" }, 3 | { "w": 3, "v": "{$weapon=crossbow}" }, 4 | { "w": 1, "v": "{$weapon=net}" }, 5 | { "w": 3, "v": "{$weapon=longbow}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/martialweapon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=battleaxe}" }, 3 | { "w": 1, "v": "{$weapon=flail}" }, 4 | { "w": 1, "v": "{$weapon=greataxe}" }, 5 | { "w": 1, "v": "{$weapon=glaive}" }, 6 | { "w": 1, "v": "{$weapon=greatsword}" }, 7 | { "w": 1, "v": "{$weapon=lance}" }, 8 | { "w": 1, "v": "{$weapon=longsword}" }, 9 | { "w": 1, "v": "{$weapon=maul}" }, 10 | { "w": 1, "v": "{$weapon=morningstar}" }, 11 | { "w": 1, "v": "{$weapon=pike}" }, 12 | { "w": 1, "v": "{$weapon=trident}" }, 13 | { "w": 1, "v": "{$weapon=warhammer}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/medCha.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%cha-2}" }, 3 | { "w": 6, "v": "{%cha+0}" }, 4 | { "w": 2, "v": "{%cha+2}" }, 5 | { "w": 1, "v": "{%cha+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medCon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%con-2}" }, 3 | { "w": 6, "v": "{%con+0}" }, 4 | { "w": 2, "v": "{%con+2}" }, 5 | { "w": 1, "v": "{%con+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medDex.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%dex-2}" }, 3 | { "w": 6, "v": "{%dex+0}" }, 4 | { "w": 2, "v": "{%dex+2}" }, 5 | { "w": 1, "v": "{%dex+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medInt.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%int-2}" }, 3 | { "w": 6, "v": "{%int+0}" }, 4 | { "w": 2, "v": "{%int+2}" }, 5 | { "w": 1, "v": "{%int+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medStr.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%str-2}" }, 3 | { "w": 6, "v": "{%str+0}" }, 4 | { "w": 2, "v": "{%str+2}" }, 5 | { "w": 1, "v": "{%str+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medWis.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{%wis-2}" }, 3 | { "w": 6, "v": "{%wis+0}" }, 4 | { "w": 2, "v": "{%wis+2}" }, 5 | { "w": 1, "v": "{%wis+4}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/medusahair.json: -------------------------------------------------------------------------------- 1 | [{ "w": 19, "v": "{$hair=hair made of }{snakecolor}{$hair+snakes and }" }] 2 | -------------------------------------------------------------------------------- /src/tables/medusaname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{femaleelfname}{elfsurname}" }, 3 | { "w": 1, "v": "{femalehumanname}{humansurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/medusaveil.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+always wears a veil to mask her eyes. }" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+always wears a hood to mask her eyes. }" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never opens her eyes. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+always wears dark glasses to mask her eyes. }" }, 6 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always wears a mask to hide her gaze. }" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/militaryquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 7, "v": "{$quirks+}" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+spends every morning training. }{%str+2}{%con+2}{%dex+2}" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+will never say no to a duel. }" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+can see an opening in any defense. }" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never surrenders. }" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+loves training people. }" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+compares everything to a fight. }" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+sees fighting as a solution to any problem. }{%wis-2}" }, 10 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+judges people on their fighting skills. }" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+used to be bullied as a child and learned to fight so that it wouldn't happen again. }" }, 12 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always obeys }{$quirks+$minPoss}{$quirks+ superiors. }" }, 13 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always has a battle story to tell. }" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/missingeye.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$sphy2+wears an eyepatch on }{$sphy1+$minPoss}" }, 3 | { "w": 1, "v": "{$sphy2+has a glass }" }, 4 | { "w": 1, "v": "{$sphy2+is blind from }{$sphy1+$minPoss}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/missingfingers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$sphy2+is missing a single finger from }{%dex-1}" }, 3 | { "w": 3, "v": "{$sphy2+is missing two fingers from }{%dex-1}" }, 4 | { "w": 3, "v": "{$sphy2+is missing three fingers from }{%dex-2}" }, 5 | { "w": 1, "v": "{$sphy2+is missing four fingers from }{%dex-2}" }, 6 | { "w": 1, "v": "{$sphy2+is missing all the fingers from }{%dex-4}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/missinglimb.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$sphy2+hand}" }, 3 | { "w": 1, "v": "{$sphy2+arm}" }, 4 | { "w": 1, "v": "{$sphy2+foot}" }, 5 | { "w": 1, "v": "{$sphy2+leg}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/mod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 6, "v": "{$mod=slightly }" }, 3 | { "w": 3, "v": "{$mod=very }" }, 4 | { "w": 1, "v": "{$mod=incredibly }" }, 5 | { "w": 1, "v": "{$mod=extremely }" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/monster.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 13, "v": "{$monster=}{monster1}" }, 3 | { "w": 2, "v": "{$monster=}{monster2}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/monster1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$monster+vampire}" }, 3 | { "w": 2, "v": "{$monster+dragon}" }, 4 | { "w": 2, "v": "{$monster+troll}" }, 5 | { "w": 2, "v": "{$monster+lycanthrope}" }, 6 | { "w": 2, "v": "{$monster+basilisk}" }, 7 | { "w": 2, "v": "{$monster+medusa}" }, 8 | { "w": 2, "v": "{$monster+beholder}" }, 9 | { "w": 2, "v": "{$monster+chimera}" }, 10 | { "w": 2, "v": "{$monster+cloaker}" }, 11 | { "w": 2, "v": "{$monster+doppelganger}" }, 12 | { "w": 2, "v": "{$monster+gnoll}" }, 13 | { "w": 2, "v": "{$monster+griffon}" }, 14 | { "w": 2, "v": "{$monster+cockatrice}" }, 15 | { "w": 2, "v": "{$monster+demon}" }, 16 | { "w": 2, "v": "{$monster+devil}" }, 17 | { "w": 2, "v": "{$monster+golem}" }, 18 | { "w": 1, "v": "{$monster+water elemental}" }, 19 | { "w": 1, "v": "{$monster+fire elemental}" }, 20 | { "w": 1, "v": "{$monster+earth elemental}" }, 21 | { "w": 1, "v": "{$monster+air elemental}" }, 22 | { "w": 2, "v": "{$monster+hydra}" }, 23 | { "w": 2, "v": "{$monster+minotaur}" }, 24 | { "w": 2, "v": "{$monster+naga}" } 25 | ] 26 | -------------------------------------------------------------------------------- /src/tables/monster2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$monster+ankheg}" }, 3 | { "w": 1, "v": "{$monster+angel}" }, 4 | { "w": 1, "v": "{$monster+unicorn}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/mundaneobject.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+gloves. }" }, 3 | { "w": 1, "v": "{$quirks+hats. }" }, 4 | { "w": 1, "v": "{$quirks+belts. }" }, 5 | { "w": 1, "v": "{$quirks+feathers. }" }, 6 | { "w": 1, "v": "{$quirks+fruits. }" }, 7 | { "w": 1, "v": "{$quirks+leaves. }" }, 8 | { "w": 1, "v": "{$quirks+branches. }" }, 9 | { "w": 1, "v": "{$quirks+coins. }" }, 10 | { "w": 1, "v": "{$quirks+rocks. }" }, 11 | { "w": 1, "v": "{$quirks+pens. }" }, 12 | { "w": 1, "v": "{$quirks+scarves. }" }, 13 | { "w": 1, "v": "{$quirks+weapons. }" }, 14 | { "w": 1, "v": "{$quirks+small animals. }" }, 15 | { "w": 1, "v": "{$quirks+books. }" }, 16 | { "w": 1, "v": "{$quirks+kitchenware. }" }, 17 | { "w": 1, "v": "{$quirks+grass. }" }, 18 | { "w": 1, "v": "{$quirks+weird clothes. }" } 19 | ] 20 | -------------------------------------------------------------------------------- /src/tables/naturequirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 16, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+spends every morning training. }{%str+2}{%con+2}{%dex+2}" }, 4 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+spends every morning meditating. }{%int+2}{%wis+2}{%chaotic-3}" }, 5 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+likes animals more than people. }{%chaotic+2}" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is a vocal vegetarian. }{%good+1}" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is a vegetarian. }{%good+1}" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is a secret vegetarian. }{%good+1}" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is a vegan. }{%good+1}" }, 10 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is a vocal vegan. }{%good+1}" }, 11 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+is a secret vegan. }{%good+1}" }, 12 | { "w": 3, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ talks to plants. }" }, 13 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+feels uncomfortable in a urban setting. }" }, 14 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+is a very proficient herbalist. }" }, 15 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+can make a potion out of anything. }" }, 16 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+sleeps best in a tree. }" }, 17 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+can always find }{$quirks+$minPoss}{$quirks+way in the woods. }" }, 18 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+loves eating fresh aliments. }" }, 19 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+can tame any animal. }{%wis+1}" }, 20 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+will never take a life if given the choice. }{%good+2}{%evil-2}" } 21 | ] 22 | -------------------------------------------------------------------------------- /src/tables/nonhumanskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$skin+white}" }, 3 | { "w": 1, "v": "{$skin+pink}" }, 4 | { "w": 1, "v": "{$skin+brown}" }, 5 | { "w": 1, "v": "{$skin+gray}" }, 6 | { "w": 1, "v": "{$skin+golden}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/normallooking.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$attractiveness=average}" }, 3 | { "w": 1, "v": "{$attractiveness=bland}" }, 4 | { "w": 1, "v": "{$attractiveness=unremarkable}" }, 5 | { "w": 1, "v": "{$attractiveness=forgettable}" }, 6 | { "w": 1, "v": "{$attractiveness=typical}" }, 7 | { "w": 1, "v": "{$attractiveness=common}" }, 8 | { "w": 1, "v": "{$attractiveness=ordinary}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/occupation.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{class}", "name": "Class", "table": "class" }, 3 | { "w": 4, "v": "{profession}", "name": "Profession", "table": "profession" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/orcgender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{maleorcname}{orcsurname}" }, 3 | { "w": 1, "v": "{female}{femaleorcname}{orcsurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/orcgod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$god=Gruumsh}{$goddescr=, God of orcs, conquest, survival, strength, territory. (Chaotic Evil)}" }, 3 | { "w": 2, "v": "{humangod}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/orcskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 6, "v": "{$skin+green}" }, 3 | { "w": 2, "v": "{$skin+brown}" }, 4 | { "w": 1, "v": "{$skin+red}" }, 5 | { "w": 4, "v": "{$skin+gray}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/orcsurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Axeblade}" }, 3 | { "w": 1, "v": "{$name+ Battlefury}" }, 4 | { "w": 1, "v": "{$name+ Blackarm}" }, 5 | { "w": 1, "v": "{$name+ Blackblade}" }, 6 | { "w": 1, "v": "{$name+ Bloodbasher}" }, 7 | { "w": 1, "v": "{$name+ Burningarm}" }, 8 | { "w": 1, "v": "{$name+ Burningsong}" }, 9 | { "w": 1, "v": "{$name+ Clanfang}" }, 10 | { "w": 1, "v": "{$name+ Clanripper}" }, 11 | { "w": 1, "v": "{$name+ Clansword}" }, 12 | { "w": 1, "v": "{$name+ Darkhorn}" }, 13 | { "w": 1, "v": "{$name+ Deathhammer}" }, 14 | { "w": 1, "v": "{$name+ Deathsong}" }, 15 | { "w": 1, "v": "{$name+ Doomhorn}" }, 16 | { "w": 1, "v": "{$name+ Doommaul}" }, 17 | { "w": 1, "v": "{$name+ Dreamslayer}" }, 18 | { "w": 1, "v": "{$name+ Forebinder}" }, 19 | { "w": 1, "v": "{$name+ Foreeye}" }, 20 | { "w": 1, "v": "{$name+ Gorecleaver}" }, 21 | { "w": 1, "v": "{$name+ Gorefang}" }, 22 | { "w": 1, "v": "{$name+ Hellaxe}" }, 23 | { "w": 1, "v": "{$name+ Hellfang}" }, 24 | { "w": 1, "v": "{$name+ Ironfury}" }, 25 | { "w": 1, "v": "{$name+ Ironscream}" }, 26 | { "w": 1, "v": "{$name+ Ironseeker}" }, 27 | { "w": 1, "v": "{$name+ Laughingfang}" }, 28 | { "w": 1, "v": "{$name+ Laughingseeker}" }, 29 | { "w": 1, "v": "{$name+ Ragemaw}" }, 30 | { "w": 1, "v": "{$name+ Redbleeder}" }, 31 | { "w": 1, "v": "{$name+ Redrage}" }, 32 | { "w": 1, "v": "{$name+ Rockbasher}" }, 33 | { "w": 1, "v": "{$name+ Shadowslayer}" }, 34 | { "w": 1, "v": "{$name+ Skullbinder}" }, 35 | { "w": 1, "v": "{$name+ Steelfang}" }, 36 | { "w": 1, "v": "{$name+ Steelslayer}" }, 37 | { "w": 1, "v": "{$name+ Steelsplitter}" }, 38 | { "w": 1, "v": "{$name+ Stonesplitter}" }, 39 | { "w": 1, "v": "{$name+ Thunderbasher}" }, 40 | { "w": 1, "v": "{$name+ Thundersword}" }, 41 | { "w": 1, "v": "{$name+ Tuskhorn}" }, 42 | { "w": 1, "v": "{$name+ Tusksnarl}" }, 43 | { "w": 1, "v": "{$name+ Tuskwolf}" }, 44 | { "w": 1, "v": "{$name+ Wareye}" }, 45 | { "w": 1, "v": "{$name+ Warmaw}" }, 46 | { "w": 1, "v": "{$name+ Wolfripper}" } 47 | ] 48 | -------------------------------------------------------------------------------- /src/tables/organisation.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$org=wizards' guild}" }, 3 | { "w": 3, "v": "{$org=fighters' club}" }, 4 | { "w": 3, "v": "{$org=thiefs' guild}" }, 5 | { "w": 3, "v": "{$org=witchs' coven}" }, 6 | { "w": 2, "v": "{$org=assassins' guild}" }, 7 | { "w": 1, "v": "{$org=cult's hideout}" }, 8 | { "w": 3, "v": "{$org=clergy}" }, 9 | { "w": 3, "v": "{$org=monks' monastery}" }, 10 | { "w": 3, "v": "{$org=traders' guild}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/orientation.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 80, "v": "Straight" }, 3 | { "w": 5, "v": "Gay" }, 4 | { "w": 3, "v": "Bisexual" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/personality.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$personality=an annoying}" }, 3 | { "w": 1, "v": "{$personality=a patronizing}" }, 4 | { "w": 1, "v": "{$personality=a sarcastic}" }, 5 | { "w": 1, "v": "{$personality=an impetuous}" }, 6 | { "w": 1, "v": "{$personality=a sardonic}" }, 7 | { "w": 1, "v": "{$personality=a stoic}" }, 8 | { "w": 1, "v": "{$personality=a fabulous}" }, 9 | { "w": 1, "v": "{$personality=a critical}" }, 10 | { "w": 1, "v": "{$personality=a seductive}" }, 11 | { "w": 1, "v": "{$personality=an inquisitive}" }, 12 | { "w": 1, "v": "{$personality=a lascivious}" }, 13 | { "w": 1, "v": "{$personality=an ironic}" }, 14 | { "w": 1, "v": "{$personality=a shy}" }, 15 | { "w": 1, "v": "{$personality=an aggressive}" }, 16 | { "w": 1, "v": "{$personality=a passive aggressive}" }, 17 | { "w": 1, "v": "{$personality=a confrontational}" }, 18 | { "w": 1, "v": "{$personality=an apathetic}" }, 19 | { "w": 1, "v": "{$personality=a sailor-mouthed}" } 20 | ] 21 | -------------------------------------------------------------------------------- /src/tables/petanimal.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+a pet zombie }" }, 3 | { "w": 1, "v": "{$quirks+a pet dragon hatchling }" }, 4 | { "w": 1, "v": "{$quirks+a pet kobold }" }, 5 | { "w": 1, "v": "{$quirks+a tiny pet golem }" }, 6 | { "w": 1, "v": "{$quirks+a tiny pet ooze }" }, 7 | { "w": 4, "v": "{$quirks+a pet pidgeon }" }, 8 | { "w": 4, "v": "{$quirks+a pet mouse }" }, 9 | { "w": 18, "v": "{$quirks+a pet dog }" }, 10 | { "w": 14, "v": "{$quirks+a pet cat }" }, 11 | { "w": 4, "v": "{$quirks+a pet fox }" }, 12 | { "w": 4, "v": "{$quirks+a pet turtle }" }, 13 | { "w": 4, "v": "{$quirks+a pet rat }" }, 14 | { "w": 4, "v": "{$quirks+a pet rock }" }, 15 | { "w": 4, "v": "{$quirks+a pet falcon }" }, 16 | { "w": 4, "v": "{$quirks+a pet guinea pig }" }, 17 | { "w": 4, "v": "{$quirks+a pet hamster }" }, 18 | { "w": 4, "v": "{$quirks+a pet gecko }" }, 19 | { "w": 5, "v": "{$quirks+a pet rabbit }" }, 20 | { "w": 6, "v": "{$quirks+a pet parrot }" }, 21 | { "w": 4, "v": "{$quirks+a pet ferret }" }, 22 | { "w": 2, "v": "{$quirks+a pet pseudodragon }" } 23 | ] 24 | -------------------------------------------------------------------------------- /src/tables/petname.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{petname1}{$quirks+. }" }] 2 | -------------------------------------------------------------------------------- /src/tables/petname1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$quirks+Max}" }, 3 | { "w": 1, "v": "{$quirks+Jack}" }, 4 | { "w": 1, "v": "{$quirks+Mister Man}" }, 5 | { "w": 1, "v": "{$quirks+Lady}" }, 6 | { "w": 1, "v": "{$quirks+Bear}" }, 7 | { "w": 1, "v": "{$quirks+Smokey}" }, 8 | { "w": 1, "v": "{$quirks+Jacky}" }, 9 | { "w": 1, "v": "{$quirks+Puddle}" }, 10 | { "w": 1, "v": "{$quirks+Kitty}" }, 11 | { "w": 1, "v": "{$quirks+Molly}" }, 12 | { "w": 1, "v": "{$quirks+Buddy}" }, 13 | { "w": 1, "v": "{$quirks+Brandy}" }, 14 | { "w": 1, "v": "{$quirks+Charlie}" }, 15 | { "w": 1, "v": "{$quirks+Bailey}" }, 16 | { "w": 1, "v": "{$quirks+Ninja}" }, 17 | { "w": 1, "v": "{$quirks+Daisy}" }, 18 | { "w": 1, "v": "{$quirks+Rexy}" }, 19 | { "w": 1, "v": "{$quirks+Bella}" }, 20 | { "w": 1, "v": "{$quirks+Buddy}" }, 21 | { "w": 1, "v": "{$quirks+Peanut}" }, 22 | { "w": 1, "v": "{$quirks+Cooper}" }, 23 | { "w": 1, "v": "{$quirks+Snickers}" }, 24 | { "w": 1, "v": "{$quirks+Stella}" }, 25 | { "w": 1, "v": "{$quirks+Teddy}" }, 26 | { "w": 1, "v": "{$quirks+Maggie}" }, 27 | { "w": 1, "v": "{$quirks+Lucy}" }, 28 | { "w": 1, "v": "{$quirks+Lily}" }, 29 | { "w": 1, "v": "{$quirks+Tiger}" }, 30 | { "w": 1, "v": "{$quirks+Sunny}" }, 31 | { "w": 1, "v": "{$quirks+Coco}" }, 32 | { "w": 1, "v": "{$quirks+Rocky}" }, 33 | { "w": 1, "v": "{$quirks+Bandit}" }, 34 | { "w": 1, "v": "{$quirks+Fuzzy}" }, 35 | { "w": 1, "v": "{$quirks+Bagel}" }, 36 | { "w": 1, "v": "{$quirks+Biscuit}" }, 37 | { "w": 1, "v": "{$quirks+Bobby}" }, 38 | { "w": 1, "v": "{$quirks+Bubbles}" }, 39 | { "w": 1, "v": "{$quirks+Button}" }, 40 | { "w": 1, "v": "{$quirks+Cupcake}" }, 41 | { "w": 1, "v": "{$quirks+Goofy}" }, 42 | { "w": 1, "v": "{$quirks+Marshmellow}" }, 43 | { "w": 1, "v": "{$quirks+Monkey}" }, 44 | { "w": 1, "v": "{$quirks+Mister Big}" }, 45 | { "w": 1, "v": "{$quirks+Mooshie}" }, 46 | { "w": 1, "v": "{$quirks+Noodle}" }, 47 | { "w": 1, "v": "{$quirks+Nugget}" }, 48 | { "w": 1, "v": "{$quirks+Paddington}" }, 49 | { "w": 1, "v": "{$quirks+Peanut}" }, 50 | { "w": 1, "v": "{$quirks+Roxie}" }, 51 | { "w": 1, "v": "{$quirks+Pixie}" }, 52 | { "w": 1, "v": "{$quirks+Rufus}" }, 53 | { "w": 1, "v": "{$quirks+Spark}" }, 54 | { "w": 1, "v": "{$quirks+Stitch}" } 55 | ] 56 | -------------------------------------------------------------------------------- /src/tables/piercingnumber.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$sphy1+2 }" }, 3 | { "w": 2, "v": "{$sphy1+3 }" }, 4 | { "w": 1, "v": "{$sphy1+4 }" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/poorquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 20, "v": "{$quirks+}" }, 3 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+feels uncomfortable in a rich setting. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ misuses long words to sound smarter. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is totally oblivious to etiquette and social expectations. }{%cha-1}" }, 6 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+enjoys tavern brawls. }{%chaotic+1}" }, 7 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+has no concept of propriety. }{%chaotic+2}" }, 8 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always has time to help others. }{%good+2}" }, 9 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+despises the aristocracy. }{%chaotic+2}" }, 10 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+sleeps fully dressed, ready to run. }" }, 11 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always knows where to hide. }" }, 12 | { "w": 3, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ asks for help. }" }, 13 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always eat like it's }{$quirks+$minPoss}{$quirks+ last meal. }" }, 14 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+shares everything }{$quirks+$minPro}{$quirks+ owns. }{%good+2}" }, 15 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+uses very foul language. }{%chaotic+2}" }, 16 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't bathe. }{%cha-2}" } 17 | ] 18 | -------------------------------------------------------------------------------- /src/tables/precious.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$precious+pendant}" }, 3 | { "w": 1, "v": "{$precious+ring}" }, 4 | { "w": 1, "v": "{$precious+robe}" }, 5 | { "w": 1, "v": "{$precious+trinket}" }, 6 | { "w": 1, "v": "{$precious+bracelet}" }, 7 | { "w": 1, "v": "{$precious+watch}" }, 8 | { "w": 1, "v": "{$precious+amulet}" }, 9 | { "w": 1, "v": "{$precious+tiara}" }, 10 | { "w": 1, "v": "{$precious+gem}" }, 11 | { "w": 1, "v": "{$precious+coin}" }, 12 | { "w": 2, "v": "{weapon}{$precious+$weapon}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/preciousitem.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$precious=precious }{precious}" }, 3 | { "w": 2, "v": "{$precious=magical }{precious}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/profession.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Learned", "table": "learned", "v": "{learned}{%int+4}{%wis+3}{%str-2}{%moralneutral+2}{richquirk}" }, 3 | { "w": 2, "name": "Lesser Nobility", "table": "lesserNobility", "v": "{lesserNobility}{%int+2}{%cha+2}{%lawful+2}{%good+2}{richquirk}" }, 4 | { "w": 3, "name": "Professional", "table": "professional", "v": "{professional}{%str+1}{%dex+1}{richquirk}" }, 5 | { "w": 5, "name": "Working Class", "table": "workClass", "v": "{workClass}{%str+2}{%con+2}{%int-1}{%cha-1}{%moralneutral+2}{poorquirk}" }, 6 | { "w": 3, "name": "Martial", "table": "martial", "v": "{martial}{%str+3}{%con+3}{%int-1}{%cha+1}{%lawful+3}" }, 7 | { "w": 3, "name": "Underclass", "table": "underclass", "v": "{underclass}{%str+1}{%dex+2}{%int-1}{%cha-1}{%chaotic+3}{%lawful-1}{poorquirk}" }, 8 | { "w": 1, "name": "Entertainer", "table": "entertainer", "v": "{entertainer}{%dex+2}{%cha+2}{%chaotic+3}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/professional.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "name": "Armorer", "v": "{$occupation=armorer}{kenkunamemetal}" }, 3 | { "w": 1, "name": "Painter", "v": "{$occupation=painter}{%dex+1}{kenkunamequiet}" }, 4 | { "w": 1, "name": "Baker", "v": "{$occupation=baker}{kenkuname}" }, 5 | { "w": 1, "name": "Banker", "v": "{$occupation=banker}{kenkunamequiet}" }, 6 | { "w": 3, "name": "Blacksmith", "v": "{$occupation=blacksmith}{kenkunamemetal}" }, 7 | { "w": 1, "name": "Bowyer", "v": "{$occupation=bowyer}{kenkuname}" }, 8 | { "w": 2, "name": "Brewer", "v": "{$occupation=brewer}{kenkuname}" }, 9 | { "w": 2, "name": "Butcher", "v": "{$occupation=butcher}{kenkunameanimal}" }, 10 | { "w": 3, "name": "Carpenter", "v": "{$occupation=carpenter}{%int+1}{kenkuname}" }, 11 | { "w": 1, "name": "Clothier", "v": "{$occupation=clothier}{kenkuname}" }, 12 | { "w": 2, "name": "Cook", "v": "{$occupation=cook}{kenkuname}" }, 13 | { "w": 1, "name": "Furrier", "v": "{$occupation=furrier}{kenkunameanimal}" }, 14 | { "w": 1, "name": "Goldsmith", "v": "{$occupation=goldsmith}{kenkunamemetal}" }, 15 | { "w": 4, "name": "Innkeeper", "v": "{$occupation=innkeeper}{%cha+2}{kenkuname}" }, 16 | { "w": 2, "name": "Jeweler", "v": "{$occupation=jeweler}{%int+1}{%dex+1}{kenkuname}" }, 17 | { "w": 3, "name": "Leatherworker", "v": "{$occupation=leatherworker}{kenkuname}" }, 18 | { "w": 2, "name": "Locksmith", "v": "{$occupation=locksmith}{%dex+1}{kenkunamemetal}" }, 19 | { "w": 2, "name": "Mason", "v": "{$occupation=mason}{kenkuname}" }, 20 | { "w": 3, "name": "Merchant", "v": "{$occupation=merchant}{%cha+2}{kenkuname}" }, 21 | { "w": 3, "name": "Musician", "v": "{$occupation=musician}{%cha+4}{%dex+2}{kenkuname}" }, 22 | { "w": 1, "name": "Tinker", "v": "{$occupation=tinker}{%int+3}{%dex+2}{kenkunamemetal}" }, 23 | { "w": 1, "name": "Torturer", "v": "{$occupation=torturer}{%cha+2}{%str+2}{%dex+1}{%evil+2}{getevilgod}{kenkunamefighting}" }, 24 | { "w": 2, "name": "Trader", "v": "{$occupation=trader}{%cha+2}{%int+3}{kenkuname}" }, 25 | { "w": 3, "name": "Weaver", "v": "{$occupation=weaver}{%dex+1}{kenkuname}" } 26 | ] 27 | -------------------------------------------------------------------------------- /src/tables/quirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 10, "v": "{randomquirks}" }, 3 | { "w": 1, "v": "{randomquirks}{randomquirks}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/raceallergy.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$racea=dwarves}" }, 3 | { "w": 2, "v": "{$racea=elves}" }, 4 | { "w": 2, "v": "{$racea=tieflings}" }, 5 | { "w": 2, "v": "{$racea=dragonborns}" }, 6 | { "w": 1, "v": "{$racea=demons}" }, 7 | { "w": 1, "v": "{$racea=dragons}" }, 8 | { "w": 2, "v": "{$racea=gnomes}" }, 9 | { "w": 2, "v": "{$racea=halflings}" }, 10 | { "w": 1, "v": "{$racea=orcs}" }, 11 | { "w": 1, "v": "{$racea=goblins}" }, 12 | { "w": 1, "v": "{$racea=kobolds}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/racedwarf.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 5, 4 | "name": "Mountain Dwarf", 5 | "v": "{$race=mountain dwarf}{%con+3}{%str+4}{%dex-2}{%int-1}{%wis+1}{%lawful+2}{%chaotic-2}{%evil-2}" 6 | }, 7 | { 8 | "w": 6, 9 | "name": "Hill Dwarf", 10 | "v": "{$race=hill dwarf}{%con+4}{%str+2}{%dex-2}{%int-1}{%wis+3}{%lawful+2}{%chaotic-2}{%evil-2}" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/raceelf.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 2, 4 | "name": "Drow", 5 | "v": "{$race=drow}{%str-1}{%dex+2}{%con-2}{%wis+2}{%int+2}{%cha+4}{%chaotic+3}{%evil+3}{drowgod}{$skin+black}{whitehair}{drowquirks}" 6 | }, 7 | { 8 | "w": 6, 9 | "name": "High Elf", 10 | "v": "{$race=high elf}{%str-1}{%dex+2}{%con-2}{%wis+2}{%int+2}{%cha+2}{%chaotic+3}{%good+2}{elfgod}{elfskin}{elfquirks}" 11 | }, 12 | { 13 | "w": 8, 14 | "name": "Wood Elf", 15 | "v": "{$race=wood elf}{%str-1}{%dex+4}{%con-2}{%wis+4}{%int+4}{%cha+2}{%chaotic+3}{%good+2}{elfgod}{elfskin}{elfquirks}" 16 | } 17 | ] 18 | -------------------------------------------------------------------------------- /src/tables/racegnome.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 4, 4 | "name": "Forest Gnome", 5 | "v": "{$race=forest gnome}{%str-2}{%dex+3}{%con-1}{%int+4}{%wis-1}{%good+3}{%evil-1}" 6 | }, 7 | { 8 | "w": 3, 9 | "name": "Rock Gnome", 10 | "v": "{$race=rock gnome}{%str-2}{%dex+1}{%con+2}{%int+4}{%wis-1}{%good+3}{%evil-1}" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/racehalfling.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 4, 4 | "name": "Lightfoot Halfling", 5 | "v": "{$race=lightfoot halfling}{%str-2}{%dex+4}{%con-1}{%cha+2}{%lawful+3}{%good+3}" 6 | }, 7 | { 8 | "w": 4, 9 | "name": "Stout Halfling", 10 | "v": "{$race=stout halfling}{%str-2}{%dex+4}{%con+1}{%lawful+3}{%good+3}{%chaotic-1}{%evil-1}" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/randomtraits2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very quick to trust other people. }" }, 3 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very slow to trust other people. }" }, 4 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very obstinate. }" }, 5 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is not very obstinate. }" }, 6 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very optimistic. }" }, 7 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very pessimistic. }" }, 8 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is an example of modesty. }" }, 9 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is }{mod}{$traits2+$mod}{$traits2+conceited. }" }, 10 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very self-confident. }{%cha+1}" }, 11 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+has no self-confidence. }{%cha-1}" }, 12 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+rarely speaks. }" }, 13 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very talkative. }" }, 14 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+only talks in whispers. }" }, 15 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+only talks loudly. }" }, 16 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very generous. }{%good+2}" }, 17 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very greedy. }{%evil+2}" }, 18 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is materialistic. }" }, 19 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is non-materialistic. }{%chaotic+1}" }, 20 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very cowardly. }" }, 21 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very courageous, to a fault. }" }, 22 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+doesn't care about risks or odds. }" }, 23 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+judges people by their actions, not their words. }" }, 24 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+takes everything at face-value. }" }, 25 | { "w": 2, "v": "{$traits2=$majPro}{$traits2+constantly looks for the loophole. }{%lawful-2}{%chaotic+2}{%int+1}" }, 26 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is a perfectionist. }{%str+1}{%dex+1}{%con+1}{%int+1}{%wis+1}{%cha+1}" }, 27 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is }{mod}{$traits2+$mod}{$traits2+lazy. }" }, 28 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+can't stand laziness. }{%lawful+2}" }, 29 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+can't keep a secret. }{%wis-1}" }, 30 | { "w": 1, "v": "{$traits2=$majPro}{$traits2+is very good at keeping secrets. }{%wis-1}" } 31 | ] 32 | -------------------------------------------------------------------------------- /src/tables/relationship.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$rela=brother}" }, 3 | { "w": 1, "v": "{$rela=sister}" }, 4 | { "w": 1, "v": "{$rela=daughter}" }, 5 | { "w": 1, "v": "{$rela=son}" }, 6 | { "w": 1, "v": "{$rela=cousin}" }, 7 | { "w": 1, "v": "{$rela=friend}" }, 8 | { "w": 1, "v": "{$rela=childhood friend}" }, 9 | { "w": 1, "v": "{$rela=partner}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/relationshipstatus.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 20, "v": "Single" }, 3 | { "w": 17, "v": "In a relationship{%lawful+1}" }, 4 | { "w": 15, "v": "Married{%lawful+2}" }, 5 | { "w": 3, "v": "Divorced" }, 6 | { "w": 3, "v": "Widowed" }, 7 | { "w": 2, "v": "Recently broke up{%chaotic+1}" }, 8 | { "w": 2, "v": "Recently divorced{%chaotic+1}" }, 9 | { "w": 2, "v": "Recently widowed{%chaotic+1}" }, 10 | { "w": 3, "v": "Seeing someone who is married{%chaotic+1}{%evil+1}" }, 11 | { "w": 4, "v": "Married and having an affair{%chaotic+2}{%evil+2}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/religiousquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 22, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+sees divine omens in everything. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ talks aloud to }{$quirks+$minPoss}{$quirks+god. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ quotes sacred texts. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ misquotes sacred texts. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is very intolerant towards other faiths. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+carries blessed water everywhere. }" }, 9 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+spends a lot of time studying other religions. }{%int+1}" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has story about }{$quirks+$minPoss}{$quirks+god for every occasion. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will share }{$quirks+$minPoss}{$quirks+god's wisdom when appropriate. }{%wis+1}" }, 12 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+keeps everything about }{$quirks+$minPoss}{$quirks+god a secret. }" }, 13 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+carries out a complicated religious ritual every morning. }" }, 14 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will }{frequency}{$quirks+$fr}{$quirks+ pray at inopportune moments. }" }, 15 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+tries to convert everyone }{$quirks+$minPro}{$quirks+meets. }" }, 16 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+idolizes a religious hero. }" } 17 | ] 18 | -------------------------------------------------------------------------------- /src/tables/richquirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 20, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+cannot tolerate rough living conditions. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ uses long words to sound smart. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ gives money to the poor. }{%good+1}" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+disregards poorer people. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+inherited a }{inheritance}{$quirks+. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+only dresses in very expensive clothes. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+always wears a fancy hat. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+loves partying. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+uses a beautiful walking cane. }" }, 12 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+wears a lot of cheap jewelry. }" }, 13 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+wears a lot of beautiful jewelry. }" }, 14 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+wears fancy spectacles. }" }, 15 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+wears cheap spectacles. }" }, 16 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is always accompanied by }{$quirks+$minPoss}{$quirks+servants. }" }, 17 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+likes to know how things work. }{%int+2}" }, 18 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't like parting with }{$quirks+$minPoss}{$quirks+money or possessions. } {%evil+1}" }, 19 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a very regal look. }{%cha+1}" }, 20 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+considers everyone else as idiots. }{%int+1}" }, 21 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has very little practical experience. }" } 22 | ] 23 | -------------------------------------------------------------------------------- /src/tables/rl.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$rl=left }" }, 3 | { "w": 1, "v": "{$rl=right }" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/rlb.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$rl=the left }" }, 3 | { "w": 5, "v": "{$rl=the right }" }, 4 | { "w": 2, "v": "{$rl=both }" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/scaletexture.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$scaletexture=rough}" }, 3 | { "w": 1, "v": "{$scaletexture=smooth}" }, 4 | { "w": 1, "v": "{$scaletexture=shiny}" }, 5 | { "w": 1, "v": "{$scaletexture=rugged}" }, 6 | { "w": 1, "v": "{$scaletexture=dirty}" }, 7 | { "w": 1, "v": "{$scaletexture=pointy}" }, 8 | { "w": 1, "v": "{$scaletexture=broad}" }, 9 | { "w": 1, "v": "{$scaletexture=ridged}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/simplefinesse.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=dagger}" }, 3 | { "w": 1, "v": "{$weapon=shortsword}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/simpleranged.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=light crossbow}" }, 3 | { "w": 1, "v": "{$weapon=shortbow}" }, 4 | { "w": 1, "v": "{$weapon=sling}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/simpleweapon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$weapon=club}" }, 3 | { "w": 1, "v": "{$weapon=greatclub}" }, 4 | { "w": 1, "v": "{$weapon=javelin}" }, 5 | { "w": 1, "v": "{$weapon=light hammer}" }, 6 | { "w": 1, "v": "{$weapon=mace}" }, 7 | { "w": 1, "v": "{$weapon=quarterstaff}" }, 8 | { "w": 1, "v": "{$weapon=spear}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/size.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$size=a very small }" }, 3 | { "w": 3, "v": "{$size=a small }" }, 4 | { "w": 10, "v": "{$size=a }" }, 5 | { "w": 3, "v": "{$size=a large }" }, 6 | { "w": 1, "v": "{$size=a very large }" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/skin.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{skinTone}{skinTexture}{$skin=$skintexture}{$skin+$skintone}{$skintype= skin}" }] 2 | -------------------------------------------------------------------------------- /src/tables/skinTexture.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$skintexture=smooth}" }, 3 | { "w": 4, "v": "{$skintexture=soft}" }, 4 | { "w": 5, "v": "{$skintexture=rough}" }, 5 | { "w": 3, "v": "{$skintexture=rugged}" }, 6 | { "w": 2, "v": "{$skintexture=silky}" }, 7 | { "w": 1, "v": "{$skintexture=veiny}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/skinTone.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 20, "v": "{$skintone= }" }, 3 | { "w": 3, "v": "{$skintone=, sunburned, }" }, 4 | { "w": 1, "v": "{$skintone=, dirty, }" }, 5 | { "w": 3, "v": "{$skintone=, pockmarked, }" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/snakecolor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$hair+dark green }" }, 3 | { "w": 2, "v": "{$hair+light green }" }, 4 | { "w": 3, "v": "{$hair+black }" }, 5 | { "w": 3, "v": "{$hair+brown }" }, 6 | { "w": 1, "v": "{$hair+white }" }, 7 | { "w": 2, "v": "{$hair+green }" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/specialphysical.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$sphy1+$majPro}{specialphysical1}{$sphy1+.}" }, 3 | { "w": 2, "v": "{$sphy2+$majPro}{specialphysical2}{$sphy2+.}" }, 4 | { "w": 1, "v": "{$sphy1+$majPro}{specialphysical1}{$sphy2+$majPro}{specialphysical2}{$sphy1+.}{$sphy2+.}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/specialphysical2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$sphy2+twitches }{frequency}{$sphy2+$fr}{$sphy2+ from }{$sphy2+$minPoss}{bodypart}{$sphy2+$bp}" }, 3 | { "w": 2, "v": "{$sphy2+fidgets }{frequency}{$sphy2+$fr}" }, 4 | { "w": 2, "v": "{$sphy2+smokes the pipe }{frequency}{$sphy2+$fr}{%con-1}" }, 5 | { "w": 1, "v": "{$sphy2+is }{mod}{$sphy2+$mod}{$sphy2+bow-legged}{%dex-1}" }, 6 | { "w": 1, "v": "{$sphy2+is missing }{$sphy2+$minPoss}{rl}{$sphy2+$rl}{$sphy2+ear}" }, 7 | { "w": 1, "v": "{$sphy2+is deaf from }{rlb}{$sphy2+$rl}{$sphy2+ear}" }, 8 | { "w": 1, "v": "{missingfingers}{$sphy2+$minPoss}{rl}{$sphy2+$rl}{$sphy2+hand}" }, 9 | { "w": 1, "v": "{missingeye}{rl}{$sphy2+$rl}{$sphy2+eye}" }, 10 | { "w": 1, "v": "{$sphy2+is blind}" }, 11 | { "w": 1, "v": "{$sphy2+is mute}" }, 12 | { "w": 1, "v": "{$sphy2+rolls }{$sphy2+$minPoss}{$sphy2+\"R\"s profusely}" }, 13 | { "w": 2, "v": "{frequency}{$sphy2+$fr}{$sphy2+ squints}" }, 14 | { "w": 1, "v": "{$sphy2+has }{degree}{$sphy2+$degree}{$sphy2+lisp}{%cha-2}" }, 15 | { "w": 1, "v": "{$sphy2+is missing }{$sphy2+$minPoss}{rl}{$sphy2+$rl}{missinglimb}{%dex-3}{%str-2}" }, 16 | { "w": 1, "v": "{$sphy2+is }{mod}{$sphy2+$mod}{$sphy2+colorblind}" }, 17 | { "w": 1, "v": "{$sphy2+is }{mod}{$sphy2+$mod}{$sphy2+cross-eyed}" }, 18 | { "w": 1, "v": "{$sphy2+has }{mod}{$sphy2+$mod}{$sphy2+webbed fingers}" }, 19 | { "w": 2, "v": "{$sphy2+has }{mod}{$sphy2+$mod}{$sphy2+long nails}" }, 20 | { "w": 1, "v": "{$sphy2+has }{mod}{$sphy2+$mod}{$sphy2+long fingers}" }, 21 | { "w": 1, "v": "{extrafinger}{$sphy2+$minPoss}{rl}{$sphy2+$rl}{$sphy2+hand}" }, 22 | { "w": 1, "v": "{$sphy2+can't feel pain}{%con+2}" }, 23 | { "w": 2, "v": "{$sphy2+is }{degree2}{$sphy2+$degree}{$sphy2+allergic to }{aliment}" }, 24 | { "w": 2, "v": "{$sphy2+is }{degree2}{$sphy2+$degree}{$sphy2+allergic to }{raceallergy}{$sphy2+$racea}" }, 25 | { "w": 1, "v": "{$sphy2+is albino}{whitehair}{$eyecolor=red}{$skin=$skintexture}{$skin+, ghostly, white}" } 26 | ] 27 | -------------------------------------------------------------------------------- /src/tables/strongweight.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$build=a skinny}{%str-2}{%dex+1}{%con-2}" }, 3 | { "w": 2, "v": "{$build=a lean}{%str-1}{%dex+1}" }, 4 | { "w": 4, "v": "{$build=an athletic}{%str+1}{%dex+1}{%con+1}" }, 5 | { "w": 12, "v": "{$build=a muscular}{%str+2}{%con+1}" }, 6 | { "w": 6, "v": "{$build=a regular}" }, 7 | { "w": 16, "v": "{$build=a beefy}{%str+2}{%dex-1}{%con+2}{%height+3}" }, 8 | { "w": 8, "v": "{$build=a massive}{%str+3}{%dex-2}{%con+3}{%height+5}" }, 9 | { "w": 4, "v": "{$build=a round}{%dex-1}{%con+1}" }, 10 | { "w": 3, "v": "{$build=a fat}{%dex-1}{%str+1}" }, 11 | { "w": 1, "v": "{$build=an overweight}{%str+1}{%dex-2}{%con-1}{%cha-1}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/tabaxifirstname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$name+Swift}" }, 3 | { "w": 3, "v": "{$name+Wandering}" }, 4 | { "w": 2, "v": "{$name+Jade}" }, 5 | { "w": 2, "v": "{$name+Iron}" }, 6 | { "w": 2, "v": "{$name+Steel}" }, 7 | { "w": 2, "v": "{$name+Wooden}" }, 8 | { "w": 2, "v": "{$name+Left-Handed}" }, 9 | { "w": 2, "v": "{$name+Right-Handed}" }, 10 | { "w": 3, "v": "{$name+Quick}" }, 11 | { "w": 2, "v": "{$name+Wise}" }, 12 | { "w": 2, "v": "{$name+Keen}" }, 13 | { "w": 2, "v": "{$name+Bright}" }, 14 | { "w": 2, "v": "{$name+Shining}" }, 15 | { "w": 2, "v": "{$name+Vivid}" }, 16 | { "w": 2, "v": "{$name+Noble}" }, 17 | { "w": 2, "v": "{$name+Strong}" }, 18 | { "w": 2, "v": "{$name+Fair}" }, 19 | { "w": 2, "v": "{$name+Distant}" }, 20 | { "w": 2, "v": "{$name+Lone}" }, 21 | { "w": 2, "v": "{$name+Brave}" }, 22 | { "w": 2, "v": "{$name+Ancient}" }, 23 | { "w": 1, "v": "{$name+Doomed}" }, 24 | { "w": 2, "v": "{$name+Discreet}" }, 25 | { "w": 2, "v": "{$name+Fiery}" }, 26 | { "w": 2, "v": "{$name+Blazing}" }, 27 | { "w": 2, "v": "{$name+Frozen}" }, 28 | { "w": 2, "v": "{$name+Lost}" }, 29 | { "w": 2, "v": "{$name+Magical}" }, 30 | { "w": 3, "v": "{$name+Mystic}" }, 31 | { "w": 2, "v": "{$name+Secret}" }, 32 | { "w": 2, "v": "{$name+Hidden}" }, 33 | { "w": 2, "v": "{$name+Fleeting}" }, 34 | { "w": 2, "v": "{$name+Valorous}" }, 35 | { "w": 3, "v": "{$name+Curious}" }, 36 | { "w": 2, "v": "{$name+Thieving}" } 37 | ] 38 | -------------------------------------------------------------------------------- /src/tables/tabaxilastname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$name+on the Mountaintop}" }, 3 | { "w": 2, "v": "{$name+in the Wind}" }, 4 | { "w": 2, "v": "{$name+under the Earth}" }, 5 | { "w": 2, "v": "{$name+in the Night}" }, 6 | { "w": 2, "v": "{$name+in the Rain}" }, 7 | { "w": 2, "v": "{$name+in the Forest}" }, 8 | { "w": 2, "v": "{$name+by the Lake}" }, 9 | { "w": 2, "v": "{$name+by the River}" }, 10 | { "w": 2, "v": "{$name+in the Darkness}" }, 11 | { "w": 1, "v": "{$name+Dancing in the Rain}" }, 12 | { "w": 1, "v": "{$name+Running like the Wind}" }, 13 | { "w": 1, "v": "{$name+Walking on Water}" }, 14 | { "w": 1, "v": "{$name+Shadowed by the Clouds}" }, 15 | { "w": 1, "v": "{$name+Lost in Song}" }, 16 | { "w": 1, "v": "{$name+Blessed by the Fire}" }, 17 | { "w": 1, "v": "{$name+Embraced by the Gods}" }, 18 | { "w": 1, "v": "{$name+Comforted by the Winds}" }, 19 | { "w": 1, "v": "{$name+Forever at Peace}" }, 20 | { "w": 1, "v": "{$name+Smiling in the Face of Death}" }, 21 | { "w": 1, "v": "{$name+Fighting the Tide}" } 22 | ] 23 | -------------------------------------------------------------------------------- /src/tables/tabaxiname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 10, "v": "{tabaxifirstname}{$name+ }{tabaxinounname}" }, 3 | { "w": 4, "v": "{tabaxinounname}{$name+ }{tabaxilastname}" }, 4 | { "w": 8, "v": "{tabaxinounname}{$name+s }{tabaxilastname}" }, 5 | { "w": 6, "v": "{tabaxinumbername}{$name+ }{tabaxinounname}{$name+s}" }, 6 | { "w": 4, "v": "{tabaxinumbername}{$name+ }{tabaxinounname}{$name+s }{tabaxilastname}" }, 7 | { "w": 4, "v": "{tabaxinumbername}{$name+ }{tabaxifirstname}{$name+ }{tabaxinounname}{$name+s}" }, 8 | { "w": 1, "v": "{tabaxinumbername}{$name+ }{tabaxifirstname}{$name+ }{tabaxinounname}{$name+s}{tabaxilastname}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/tables/tabaxinounname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+Star}" }, 3 | { "w": 1, "v": "{$name+Light}" }, 4 | { "w": 1, "v": "{$name+Mirror}" }, 5 | { "w": 1, "v": "{$name+Blade}" }, 6 | { "w": 1, "v": "{$name+Spider}" }, 7 | { "w": 1, "v": "{$name+Hummingbird}" }, 8 | { "w": 1, "v": "{$name+Falcon}" }, 9 | { "w": 1, "v": "{$name+Snake}" }, 10 | { "w": 1, "v": "{$name+Bat}" }, 11 | { "w": 1, "v": "{$name+Fang}" }, 12 | { "w": 1, "v": "{$name+Thundercloud}" }, 13 | { "w": 1, "v": "{$name+Tree}" }, 14 | { "w": 1, "v": "{$name+Root}" }, 15 | { "w": 1, "v": "{$name+Tail}" }, 16 | { "w": 1, "v": "{$name+Wisp}" }, 17 | { "w": 1, "v": "{$name+Harp}" }, 18 | { "w": 1, "v": "{$name+Whisper}" }, 19 | { "w": 1, "v": "{$name+Flame}" }, 20 | { "w": 1, "v": "{$name+Howl}" }, 21 | { "w": 1, "v": "{$name+Relic}" }, 22 | { "w": 1, "v": "{$name+Paw}" }, 23 | { "w": 1, "v": "{$name+Claw}" }, 24 | { "w": 1, "v": "{$name+Eagle}" }, 25 | { "w": 1, "v": "{$name+Bull}" }, 26 | { "w": 1, "v": "{$name+Guardian}" }, 27 | { "w": 1, "v": "{$name+Seer}" }, 28 | { "w": 1, "v": "{$name+Magpie}" }, 29 | { "w": 1, "v": "{$name+Dragon}" }, 30 | { "w": 1, "v": "{$name+Eye}" }, 31 | { "w": 1, "v": "{$name+Heart}" }, 32 | { "w": 1, "v": "{$name+Mind}" }, 33 | { "w": 1, "v": "{$name+Lord}" } 34 | ] 35 | -------------------------------------------------------------------------------- /src/tables/tabaxinumbername.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{$name+Two}" }, 3 | { "w": 5, "v": "{$name+Three}" }, 4 | { "w": 4, "v": "{$name+Four}" }, 5 | { "w": 5, "v": "{$name+Five}" }, 6 | { "w": 3, "v": "{$name+Six}" }, 7 | { "w": 5, "v": "{$name+Seven}" }, 8 | { "w": 5, "v": "{$name+Eight}" }, 9 | { "w": 5, "v": "{$name+Nine}" }, 10 | { "w": 5, "v": "{$name+Eleven}" }, 11 | { "w": 5, "v": "{$name+Twelve}" }, 12 | { "w": 5, "v": "{$name+Fourteen}" }, 13 | { "w": 5, "v": "{$name+Eighteen}" }, 14 | { "w": 4, "v": "{$name+Twenty}" }, 15 | { "w": 3, "v": "{$name+Fourty}" }, 16 | { "w": 2, "v": "{$name+A Hundred}" }, 17 | { "w": 1, "v": "{$name+One Thousand}" } 18 | ] 19 | -------------------------------------------------------------------------------- /src/tables/tabaxiobsession.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$quirks+$majPro}{$monster=}{monster1}{$quirks+is currently obsessed by }{$quirks+$monster}{$quirks+s. }" }, 3 | { "w": 5, "v": "{$quirks+$majPro}{raceallergy}{$quirks+is currently obsessed by }{$quirks+$racea}{$quirks+. }" }, 4 | { "w": 5, "v": "{$quirks+$majPro}{preciousitem}{$quirks+is currently obsessed by a }{$quirks+$precious}{$quirks+. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by the current town. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by a nearby house. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by the nearest castle. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by a nearby cave. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by a forgotten legend. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is currently obsessed by a local legend. }" }, 11 | { "w": 3, "v": "{$quirks+$majPro}{abstractword}{$quirks+is currently obsessed by a song about }{$quirks+$aword}{$quirks+. }" }, 12 | { "w": 3, "v": "{$quirks+$majPro}{abstractword}{$quirks+is currently obsessed by a poem about }{$quirks+$aword}{$quirks+. }" }, 13 | { "w": 3, "v": "{$quirks+$majPro}{abstractword}{$quirks+is currently obsessed by a book about }{$quirks+$aword}{$quirks+. }" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/tabaxiquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 14, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is curious to a fault. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ complains about how cold the weather is. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+dislikes water. }" }, 6 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ wags }{$quirks+$minPoss}{$quirks+tail. }" }, 7 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is constantly talking about }{$quirks+$minPoss}{$quirks+newest obsession. }" }, 8 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+can often be found purring when happy. }" }, 9 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a very deep knowledge of unusual facts and events. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has a tendency to steal curious items to study them. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+knows everything there is to know about old prophecies. }" }, 12 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+spends all of }{$quirks+$minPoss}{$quirks+money on old baubles. }" }, 13 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+can often be found narrating ongoing events. }" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/tabaxiskin.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{$skintexture=}{$skintone=}{tabaxiskintexture}{tabaxiskinpattern}{$skin=$skintexture}{$skin+$skintone}{tabaxiskincolor}{$skintype= fur}" }] 2 | -------------------------------------------------------------------------------- /src/tables/tabaxiskincolor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$skin+ golden}" }, 3 | { "w": 3, "v": "{$skin+ black}" }, 4 | { "w": 3, "v": "{$skin+ gray}" }, 5 | { "w": 4, "v": "{$skin+ dark gray}" }, 6 | { "w": 2, "v": "{$skin+ orange}" }, 7 | { "w": 1, "v": "{$skin+ red}" }, 8 | { "w": 2, "v": "{$skin+ chestnut}" }, 9 | { "w": 2, "v": "{$skin+ yellow}" }, 10 | { "w": 3, "v": "{$skin+ white}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/tabaxiskinpattern.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 5, "v": "{$skintexture+}" }, 3 | { "w": 1, "v": "{$skintexture+, spotted,}" }, 4 | { "w": 1, "v": "{$skintexture+, patterned,}" }, 5 | { "w": 1, "v": "{$skintexture+, striped,}" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/tabaxiskintexture.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 2, "v": "{$skintexture=lustrous}" }, 3 | { "w": 6, "v": "{$skintexture=soft}" }, 4 | { "w": 1, "v": "{$skintexture=dirty}" }, 5 | { "w": 1, "v": "{$skintexture=rough}" }, 6 | { "w": 3, "v": "{$skintexture=fluffy}" }, 7 | { "w": 5, "v": "{$skintexture=short}" }, 8 | { "w": 3, "v": "{$skintexture=long}" }, 9 | { "w": 3, "v": "{$skintexture=shiny}" }, 10 | { "w": 1, "v": "{$skintexture=luxurious}" }, 11 | { "w": 2, "v": "{$skintexture=dense}" } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tables/tattoo.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{texttat}" }, 3 | { "w": 4, "v": "{animaltat}" }, 4 | { "w": 1, "v": "{$sphy1+tattoo of a }{weapon}{$sphy1+$weapon}" }, 5 | { "w": 2, "v": "{$sphy1+abstract tattoo}" }, 6 | { "w": 3, "v": "{$sphy1+tribal tattoo}" } 7 | ] 8 | -------------------------------------------------------------------------------- /src/tables/tattooadj.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 12, "v": "{$tadj=}" }, 3 | { "w": 1, "v": "{$tadj=fresh }" }, 4 | { "w": 1, "v": "{$tadj=small }" }, 5 | { "w": 1, "v": "{$tadj=large }" }, 6 | { "w": 1, "v": "{$tadj=tiny }" }, 7 | { "w": 1, "v": "{$tadj=elaborate }" }, 8 | { "w": 1, "v": "{$tadj=badly done }" }, 9 | { "w": 1, "v": "{$tadj=complicated }" }, 10 | { "w": 1, "v": "{$tadj=shocking }" }, 11 | { "w": 1, "v": "{$tadj=provocative }" }, 12 | { "w": 1, "v": "{$tadj=bland }" }, 13 | { "w": 1, "v": "{$tadj=exceptional }" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/tendencies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "w": 1, 4 | "v": "{alignment}{%good=%align}{alignment}{%moralneutral=%align}{alignment}{%evil=%align}{alignment}{%lawful=%align}{alignment}{%ethicalneutral=%align}{alignment}{%chaotic=%align}" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/texttat.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 10, "v": "{$sphy1+tattoo of the word }{abstractword}{$sphy1+$aword}" }, 3 | { "w": 4, "v": "{$sphy1+tattoo of a poem about }{abstractword}{$sphy1+$aword}" }, 4 | { "w": 4, "v": "{$sphy1+tattoo of the lyrics of a song quote about }{abstractword}{$sphy1+$aword}" }, 5 | { "w": 6, "v": "{$sphy1+tattoo of an inspirational quote about }{abstractword}{$sphy1+$aword}" }, 6 | { "w": 4, "v": "{$sphy1+tattoo of the word }{abstractword}{$sphy1+$aword}{$sphy1+ translated into }{language}{$sphy1+$lang}" }, 7 | { "w": 2, "v": "{$sphy1+tattoo of a poem about }{abstractword}{$sphy1+$aword}{$sphy1+ translated into }{language}{$sphy1+$lang}" }, 8 | { "w": 3, "v": "{$sphy1+tattoo of an inspirational quote about }{abstractword}{$sphy1+$aword}{$sphy1+ translated into }{language}{$sphy1+$lang}" }, 9 | { "w": 3, "v": "{$sphy1+tattoo of the lyrics of a song quote about }{abstractword}{$sphy1+$aword}{$sphy1+ written in }{language}{$sphy1+$lang}" }, 10 | { "w": 3, "v": "{$sphy1+tattoo of the name of }{$sphy1+$minPoss}{relationship}{$sphy1+$rela}{$sphy1+.}" } 11 | ] 12 | -------------------------------------------------------------------------------- /src/tables/tieflingevilname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Abomination}" }, 3 | { "w": 1, "v": "{$name=Agony}" }, 4 | { "w": 1, "v": "{$name=Barbary}" }, 5 | { "w": 1, "v": "{$name=Battle}" }, 6 | { "w": 1, "v": "{$name=Conflict}" }, 7 | { "w": 1, "v": "{$name=Corruption}" }, 8 | { "w": 1, "v": "{$name=Death}" }, 9 | { "w": 1, "v": "{$name=Defiance}" }, 10 | { "w": 1, "v": "{$name=Demise}" }, 11 | { "w": 1, "v": "{$name=Destruction}" }, 12 | { "w": 1, "v": "{$name=Dissenssion}" }, 13 | { "w": 1, "v": "{$name=Distress}" }, 14 | { "w": 1, "v": "{$name=Fear}" }, 15 | { "w": 1, "v": "{$name=Filth}" }, 16 | { "w": 1, "v": "{$name=Fright}" }, 17 | { "w": 1, "v": "{$name=Hate}" }, 18 | { "w": 1, "v": "{$name=Hatred}" }, 19 | { "w": 1, "v": "{$name=Horror}" }, 20 | { "w": 1, "v": "{$name=Hurt}" }, 21 | { "w": 1, "v": "{$name=Misery}" }, 22 | { "w": 1, "v": "{$name=Pain}" }, 23 | { "w": 1, "v": "{$name=Panic}" }, 24 | { "w": 1, "v": "{$name=Ruination}" }, 25 | { "w": 1, "v": "{$name=Stifle}" }, 26 | { "w": 1, "v": "{$name=Strife}" }, 27 | { "w": 1, "v": "{$name=Terror}" }, 28 | { "w": 1, "v": "{$name=Trouble}" }, 29 | { "w": 1, "v": "{$name=War}" }, 30 | { "w": 1, "v": "{$name=Torment}" }, 31 | { "w": 1, "v": "{$name=Grief}" }, 32 | { "w": 1, "v": "{$name=Despair}" }, 33 | { "w": 1, "v": "{$name=Anguish}" }, 34 | { "w": 1, "v": "{$name=Gloom}" }, 35 | { "w": 1, "v": "{$name=Melancholy}" }, 36 | { "w": 1, "v": "{$name=Woe}" }, 37 | { "w": 1, "v": "{$name=Sorrow}" }, 38 | { "w": 1, "v": "{$name=Misfortune}" }, 39 | { "w": 1, "v": "{$name=Deceit}" }, 40 | { "w": 1, "v": "{$name=Extreme}" }, 41 | { "w": 1, "v": "{$name=End}" }, 42 | { "w": 1, "v": "{$name=Trickery}" } 43 | ] 44 | -------------------------------------------------------------------------------- /src/tables/tieflinggoodname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Acceptance}" }, 3 | { "w": 1, "v": "{$name=Beauty}" }, 4 | { "w": 1, "v": "{$name=Benevolence}" }, 5 | { "w": 1, "v": "{$name=Bravery}" }, 6 | { "w": 1, "v": "{$name=Caring}" }, 7 | { "w": 1, "v": "{$name=Caution}" }, 8 | { "w": 1, "v": "{$name=Charity}" }, 9 | { "w": 1, "v": "{$name=Compassion}" }, 10 | { "w": 1, "v": "{$name=Cooperation}" }, 11 | { "w": 1, "v": "{$name=Courage}" }, 12 | { "w": 1, "v": "{$name=Creativity}" }, 13 | { "w": 1, "v": "{$name=Curiosity}" }, 14 | { "w": 1, "v": "{$name=Eloquence}" }, 15 | { "w": 1, "v": "{$name=Empathy}" }, 16 | { "w": 1, "v": "{$name=Enthusiasm}" }, 17 | { "w": 1, "v": "{$name=Faithfulness}" }, 18 | { "w": 1, "v": "{$name=Flexibility}" }, 19 | { "w": 1, "v": "{$name=Forbearance}" }, 20 | { "w": 1, "v": "{$name=Forgiveness}" }, 21 | { "w": 1, "v": "{$name=Friendliness}" }, 22 | { "w": 1, "v": "{$name=Frugality}" }, 23 | { "w": 1, "v": "{$name=Generosity}" }, 24 | { "w": 1, "v": "{$name=Gentleness}" }, 25 | { "w": 1, "v": "{$name=Gratitude}" }, 26 | { "w": 1, "v": "{$name=Helpfulness}" }, 27 | { "w": 1, "v": "{$name=Honesty}" }, 28 | { "w": 1, "v": "{$name=Hope}" }, 29 | { "w": 1, "v": "{$name=Humbleness}" }, 30 | { "w": 1, "v": "{$name=Humility}" }, 31 | { "w": 1, "v": "{$name=Humor}" }, 32 | { "w": 1, "v": "{$name=Innocence}" }, 33 | { "w": 1, "v": "{$name=Integrity}" }, 34 | { "w": 1, "v": "{$name=Joyfulness}" }, 35 | { "w": 1, "v": "{$name=Life}" }, 36 | { "w": 1, "v": "{$name=Love}" }, 37 | { "w": 1, "v": "{$name=Meekness}" }, 38 | { "w": 1, "v": "{$name=Mercy}" }, 39 | { "w": 1, "v": "{$name=Moderation}" }, 40 | { "w": 1, "v": "{$name=Modesty}" }, 41 | { "w": 1, "v": "{$name=Peace}" }, 42 | { "w": 1, "v": "{$name=Piety}" }, 43 | { "w": 1, "v": "{$name=Purity}" }, 44 | { "w": 1, "v": "{$name=Restraint}" }, 45 | { "w": 1, "v": "{$name=Reverance}" }, 46 | { "w": 1, "v": "{$name=Righteousness}" }, 47 | { "w": 1, "v": "{$name=Simplicity}" }, 48 | { "w": 1, "v": "{$name=Sincerity}" }, 49 | { "w": 1, "v": "{$name=Sobriety}" }, 50 | { "w": 1, "v": "{$name=Temperance}" }, 51 | { "w": 1, "v": "{$name=Tolerance}" }, 52 | { "w": 1, "v": "{$name=Tranquility}" }, 53 | { "w": 1, "v": "{$name=Trust}" }, 54 | { "w": 1, "v": "{$name=Glee}" }, 55 | { "w": 1, "v": "{$name=Sanctity}" }, 56 | { "w": 1, "v": "{$name=Bliss}" }, 57 | { "w": 1, "v": "{$name=Cherish}" } 58 | ] 59 | -------------------------------------------------------------------------------- /src/tables/tieflinggoodorevil.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "v": "{%good+3}{%moralneutral-2}{%evil-3}{tieflinggoodname}" }, 3 | { "w": 2, "v": "{%good+3}{%moralneutral-2}{%evil-3}{tieflingneutralname}" }, 4 | { "w": 5, "v": "{%good+3}{%moralneutral-2}{%evil-3}{tieflingname}" }, 5 | { "w": 3, "v": "{%good-3}{%moralneutral-2}{%evil+3}{getevilgod}{tieflingevilname}" }, 6 | { "w": 2, "v": "{%good-3}{%moralneutral-2}{%evil+3}{getevilgod}{tieflingneutralname}" }, 7 | { "w": 5, "v": "{%good-3}{%moralneutral-2}{%evil+3}{getevilgod}{tieflingname}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/tieflingname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Akchar}" }, 3 | { "w": 1, "v": "{$name=Ammeros}" }, 4 | { "w": 1, "v": "{$name=Andlech}" }, 5 | { "w": 1, "v": "{$name=Aradani}" }, 6 | { "w": 1, "v": "{$name=Arkzer}" }, 7 | { "w": 1, "v": "{$name=Arrias}" }, 8 | { "w": 1, "v": "{$name=Ashes}" }, 9 | { "w": 1, "v": "{$name=Beldani}" }, 10 | { "w": 1, "v": "{$name=Damthos}" }, 11 | { "w": 1, "v": "{$name=Dharxes}" }, 12 | { "w": 1, "v": "{$name=Dibis}" }, 13 | { "w": 1, "v": "{$name=Dimwure}" }, 14 | { "w": 1, "v": "{$name=Ekthor}" }, 15 | { "w": 1, "v": "{$name=Euphoria}" }, 16 | { "w": 1, "v": "{$name=Grilia}" }, 17 | { "w": 1, "v": "{$name=Iathor}" }, 18 | { "w": 1, "v": "{$name=Karzire}" }, 19 | { "w": 1, "v": "{$name=Kosus}" }, 20 | { "w": 1, "v": "{$name=Kyris}" }, 21 | { "w": 1, "v": "{$name=Lokeus}" }, 22 | { "w": 1, "v": "{$name=Magoria}" }, 23 | { "w": 1, "v": "{$name=Maledos}" }, 24 | { "w": 1, "v": "{$name=Maloth}" }, 25 | { "w": 1, "v": "{$name=Mavrakas}" }, 26 | { "w": 1, "v": "{$name=Natari}" }, 27 | { "w": 1, "v": "{$name=Nephira}" }, 28 | { "w": 1, "v": "{$name=Nithyis}" }, 29 | { "w": 1, "v": "{$name=Pescyra}" }, 30 | { "w": 1, "v": "{$name=Reakas}" }, 31 | { "w": 1, "v": "{$name=Royola}" }, 32 | { "w": 1, "v": "{$name=Salthor}" }, 33 | { "w": 1, "v": "{$name=Seirilypsis}" }, 34 | { "w": 1, "v": "{$name=Shalech}" }, 35 | { "w": 1, "v": "{$name=Shazer}" }, 36 | { "w": 1, "v": "{$name=Skaros}" }, 37 | { "w": 1, "v": "{$name=Urakos}" }, 38 | { "w": 1, "v": "{$name=Uricis}" }, 39 | { "w": 1, "v": "{$name=Urixikas}" }, 40 | { "w": 1, "v": "{$name=Valshoon}" }, 41 | { "w": 1, "v": "{$name=Yorazis}" }, 42 | { "w": 1, "v": "{$name=Yuzis}" }, 43 | { "w": 1, "v": "{$name=Zorcius}" }, 44 | { "w": 1, "v": "{$name=Zorris}" }, 45 | { "w": 1, "v": "{$name=Zorrut}" } 46 | ] 47 | -------------------------------------------------------------------------------- /src/tables/tieflingneutralname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name=Ambition}" }, 3 | { "w": 1, "v": "{$name=Confidence}" }, 4 | { "w": 1, "v": "{$name=Diligence}" }, 5 | { "w": 1, "v": "{$name=Detachment}" }, 6 | { "w": 1, "v": "{$name=Determination}" }, 7 | { "w": 1, "v": "{$name=Devotion}" }, 8 | { "w": 1, "v": "{$name=Discernment}" }, 9 | { "w": 1, "v": "{$name=Discretion}{%dex+1}" }, 10 | { "w": 1, "v": "{$name=Discipline}{%wis+1}" }, 11 | { "w": 1, "v": "{$name=Faith}" }, 12 | { "w": 1, "v": "{$name=Chaos}{%chaotic+2}" }, 13 | { "w": 1, "v": "{$name=Fortitude}" }, 14 | { "w": 1, "v": "{$name=Focus}" }, 15 | { "w": 1, "v": "{$name=Grace}" }, 16 | { "w": 1, "v": "{$name=Idealism}" }, 17 | { "w": 1, "v": "{$name=Honor}" }, 18 | { "w": 1, "v": "{$name=Impartiality}{%moralneutral+5}{%ethicalneutral+5}" }, 19 | { "w": 1, "v": "{$name=Justice}{%lawful+2}" }, 20 | { "w": 1, "v": "{$name=Knowledge}{%int+2}" }, 21 | { "w": 1, "v": "{$name=Liberality}" }, 22 | { "w": 1, "v": "{$name=Loyalty}" }, 23 | { "w": 1, "v": "{$name=Magnanimity}" }, 24 | { "w": 1, "v": "{$name=Majesty}" }, 25 | { "w": 1, "v": "{$name=Obedience}" }, 26 | { "w": 1, "v": "{$name=Perseverance}" }, 27 | { "w": 1, "v": "{$name=Persistence}" }, 28 | { "w": 1, "v": "{$name=Patience}" }, 29 | { "w": 1, "v": "{$name=Reliability}" }, 30 | { "w": 1, "v": "{$name=Resolution}" }, 31 | { "w": 1, "v": "{$name=Silence}" }, 32 | { "w": 1, "v": "{$name=Toughness}{%con+2}" }, 33 | { "w": 1, "v": "{$name=Strength}{%str+2}" }, 34 | { "w": 1, "v": "{$name=Truth}" }, 35 | { "w": 1, "v": "{$name=Unity}" }, 36 | { "w": 1, "v": "{$name=Vigor}{%con+2}" }, 37 | { "w": 1, "v": "{$name=Vitality}{%con+2}" }, 38 | { "w": 1, "v": "{$name=Wisdom}{%wis+2}" }, 39 | { "w": 1, "v": "{$name=Wonder}" }, 40 | { "w": 1, "v": "{$name=Zeal}" }, 41 | { "w": 1, "v": "{$name=Desire}" }, 42 | { "w": 1, "v": "{$name=Possession}" }, 43 | { "w": 1, "v": "{$name=Reverence}" }, 44 | { "w": 1, "v": "{$name=Song}" }, 45 | { "w": 1, "v": "{$name=Atonement}" }, 46 | { "w": 1, "v": "{$name=Art}" }, 47 | { "w": 1, "v": "{$name=Skilled}" }, 48 | { "w": 1, "v": "{$name=Order}{%lawful+2}" }, 49 | { "w": 1, "v": "{$name=Prudence}{%wis+2}" }, 50 | { "w": 1, "v": "{$name=Wit}{%int+2}" } 51 | ] 52 | -------------------------------------------------------------------------------- /src/tables/tieflingskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 4, "v": "{$skin+red}" }, 3 | { "w": 2, "v": "{$skin+purple}" }, 4 | { "w": 1, "v": "{humanskin}" } 5 | ] 6 | -------------------------------------------------------------------------------- /src/tables/traits.json: -------------------------------------------------------------------------------- 1 | [{ "w": 1, "v": "{randomtraits1}{randomtraits2}" }] 2 | -------------------------------------------------------------------------------- /src/tables/tritongender.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{male}{maletritonname}{tritonsurname}" }, 3 | { "w": 1, "v": "{female}{femaletritonname}{tritonsurname}" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/tritonhair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 35, "v": "{hairLength}{$hair+, }{hairType}{$hair+, }{tritonhaircolor}{$hair+hair and }" }, 3 | { "w": 8, "v": "{$hair=a bald head and }" } 4 | ] 5 | -------------------------------------------------------------------------------- /src/tables/tritonhaircolor.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 25, "v": "{$hair+green }" }, 3 | { "w": 25, "v": "{$hair+blue }" }, 4 | { "w": 25, "v": "{$hair+teal }" }, 5 | { "w": 10, "v": "{$hair+brown }" }, 6 | { "w": 10, "v": "{$hair+gray }" }, 7 | { "w": 16, "v": "{$hair+white }" }, 8 | { "w": 16, "v": "{$hair+black }" }, 9 | { "w": 1, "v": "{$hair+dyed black }" }, 10 | { "w": 1, "v": "{$hair+dyed blue }" }, 11 | { "w": 1, "v": "{$hair+dyed purple }" }, 12 | { "w": 1, "v": "{$hair+dyed pink }" }, 13 | { "w": 1, "v": "{$hair+dyed yellow }" }, 14 | { "w": 1, "v": "{$hair+dyed red }" }, 15 | { "w": 1, "v": "{$hair+dyed orange }" }, 16 | { "w": 1, "v": "{$hair+dyed green }" }, 17 | { "w": 1, "v": "{$hair+dyed teal }" } 18 | ] 19 | -------------------------------------------------------------------------------- /src/tables/tritonquirks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 25, "v": "{$quirks+}" }, 3 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is disgusted by human architecture. }" }, 4 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+feels more comfortable underwater. }" }, 5 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+will boast the greatness of Triton civilization at every opportunity. }" }, 6 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+speaks an antiquated version of common. }" }, 7 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+has a hard time understanding sarcasm. }" }, 8 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+is fascinated by the surface world, and can often be seen scribbling notes or drawings. }" }, 9 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+is surprised when people don't know everything about Triton culture. }" }, 10 | { "w": 4, "v": "{$quirks+$majPro}{$quirks+is still struggling to understand the surface's culture. }" }, 11 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+always knows if it's going to rain. }" }, 12 | { "w": 3, "v": "{$quirks+$majPro}{$quirks+goes swimming every day. }" }, 13 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+views other cultures as barbaric. }" }, 14 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+is deeply xenophobic. }" } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tables/tritonskin.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$skin+light blue}" }, 3 | { "w": 1, "v": "{$skin+dark blue}" }, 4 | { "w": 1, "v": "{$skin+blue}" }, 5 | { "w": 1, "v": "{$skin+green}" }, 6 | { "w": 1, "v": "{$skin+cyan}" }, 7 | { "w": 1, "v": "{$skin+aqua}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/tritonsurname.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$name+ Dhugozath}" }, 3 | { "w": 1, "v": "{$name+ Ousath}" }, 4 | { "w": 1, "v": "{$name+ Gomurath}" }, 5 | { "w": 1, "v": "{$name+ Galaxath}" }, 6 | { "w": 1, "v": "{$name+ Muledath}" }, 7 | { "w": 1, "v": "{$name+ Vuhrellath}" }, 8 | { "w": 1, "v": "{$name+ Muhnosnath}" }, 9 | { "w": 1, "v": "{$name+ Valesnath}" }, 10 | { "w": 1, "v": "{$name+ Dhodomath}" }, 11 | { "w": 1, "v": "{$name+ Jamaxath}" }, 12 | { "w": 1, "v": "{$name+ Zahmonzath}" }, 13 | { "w": 1, "v": "{$name+ Uuhrenzath}" }, 14 | { "w": 1, "v": "{$name+ Agasath}" }, 15 | { "w": 1, "v": "{$name+ Uhmalvath}" }, 16 | { "w": 1, "v": "{$name+ Ubuzath}" }, 17 | { "w": 1, "v": "{$name+ Naghusnath}" }, 18 | { "w": 1, "v": "{$name+ Bhubadath}" }, 19 | { "w": 1, "v": "{$name+ Parallath}" }, 20 | { "w": 1, "v": "{$name+ Nahnonzath}" }, 21 | { "w": 1, "v": "{$name+ Ehralnath}" }, 22 | { "w": 1, "v": "{$name+ Zanonsath}" }, 23 | { "w": 1, "v": "{$name+ Jahnanzath}" }, 24 | { "w": 1, "v": "{$name+ Pogenath}" }, 25 | { "w": 1, "v": "{$name+ Lamanath}" }, 26 | { "w": 1, "v": "{$name+ Omasath}" }, 27 | { "w": 1, "v": "{$name+ Jubelath}" }, 28 | { "w": 1, "v": "{$name+ Dhuromath}" }, 29 | { "w": 1, "v": "{$name+ Judemath}" }, 30 | { "w": 1, "v": "{$name+ Lamaxath}" }, 31 | { "w": 1, "v": "{$name+ Dhuvelnath}" }, 32 | { "w": 1, "v": "{$name+ Avegath}" }, 33 | { "w": 1, "v": "{$name+ Bhemoxath}" }, 34 | { "w": 1, "v": "{$name+ Ahnosath}" }, 35 | { "w": 1, "v": "{$name+ Abolath}" }, 36 | { "w": 1, "v": "{$name+ Zeghalmath}" }, 37 | { "w": 1, "v": "{$name+ Jarolmath}" }, 38 | { "w": 1, "v": "{$name+ Bahlelvath}" }, 39 | { "w": 1, "v": "{$name+ Uhrolvath}" }, 40 | { "w": 1, "v": "{$name+ Ughazath}" }, 41 | { "w": 1, "v": "{$name+ Nolamnath}" }, 42 | { "w": 1, "v": "{$name+ Muhrogath}" }, 43 | { "w": 1, "v": "{$name+ Dunallath}" }, 44 | { "w": 1, "v": "{$name+ Nuhnozath}" }, 45 | { "w": 1, "v": "{$name+ Bhaghollath}" }, 46 | { "w": 1, "v": "{$name+ Doghorath}" }, 47 | { "w": 1, "v": "{$name+ Rumegath}" }, 48 | { "w": 1, "v": "{$name+ Vahrollath}" }, 49 | { "w": 1, "v": "{$name+ Vagolvath}" }, 50 | { "w": 1, "v": "{$name+ Molomnath}" }, 51 | { "w": 1, "v": "{$name+ Dhugosath}" } 52 | ] 53 | -------------------------------------------------------------------------------- /src/tables/underclass.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 3, "name": "Bandit", "v": "{$occupation=bandit}{%str+1}{%con+1}{%evil+2}{getevilgod}{militaryquirk}{kenkunamefighting}" }, 3 | { "w": 3, "name": "Beggar", "v": "{$occupation=beggar}{%str-2}{%dex-2}{%con-2}{%int-2}{%wis-2}{%cha-2}{kenkuname}" }, 4 | { "w": 1, "name": "Fence", "v": "{$occupation=fence}{%cha+4}{kenkuname}" }, 5 | { "w": 2, "name": "Pickpocket", "v": "{$occupation=pickpocket}{%dex+3}{%evil+2}{kenkuname}" }, 6 | { "w": 1, "name": "Procurer", "v": "{$occupation=procurer}{%int+3}{%cha+3}{kenkuname}" }, 7 | { "w": 2, "name": "Prostitute", "v": "{$occupation=prostitute}{%cha+4}{kenkuname}" }, 8 | { "w": 1, "name": "Slaver", "v": "{$occupation=slaver}{%int+3}{%evil+1}{getevilgod}{kenkuname}" }, 9 | { "w": 1, "name": "Smuggler", "v": "{$occupation=smuggler}{%int+3}{kenkuname}" } 10 | ] 11 | -------------------------------------------------------------------------------- /src/tables/weapon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{simpleweapon}" }, 3 | { "w": 1, "v": "{simplefinesse}" }, 4 | { "w": 1, "v": "{simpleranged}" }, 5 | { "w": 3, "v": "{martialweapon}" }, 6 | { "w": 1, "v": "{martialfinesse}" }, 7 | { "w": 1, "v": "{martialranged}" } 8 | ] 9 | -------------------------------------------------------------------------------- /src/tables/weight.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "v": "{$build=an anorexic}{%str-3}{%con-2}" }, 3 | { "w": 5, "v": "{$build=a skinny}{%str-2}{%dex+1}{%con-2}" }, 4 | { "w": 12, "v": "{$build=a lean}{%str-1}{%dex+1}" }, 5 | { "w": 10, "v": "{$build=an athletic}{%str+1}{%dex+1}{%con+1}" }, 6 | { "w": 12, "v": "{$build=a muscular}{%str+2}{%con+1}" }, 7 | { "w": 18, "v": "{$build=a regular}" }, 8 | { "w": 10, "v": "{$build=a beefy}{%str+2}{%dex-1}{%con+2}{%height+3}" }, 9 | { "w": 4, "v": "{$build=a massive}{%str+3}{%dex-2}{%con+3}{%height+5}" }, 10 | { "w": 18, "v": "{$build=a round}{%dex-1}{%con+1}" }, 11 | { "w": 4, "v": "{$build=a fat}{%dex-1}{%str+1}" }, 12 | { "w": 2, "v": "{$build=an overweight}{%str+1}{%dex-2}{%con-1}{%cha-1}" }, 13 | { "w": 1, "v": "{$build=an obese}{%dex-4}{%str+1}{%con-2}{%cha-2}" } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tables/weirdQuirk.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 30, "v": "{$quirks+}" }, 3 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+mostly wears }{color}{$quirks+$color}{$quirks+ clothes. }" }, 4 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never wears }{color}{$quirks+$color}{$quirks+ clothes. }" }, 5 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+only wears }{color}{$quirks+$color}{$quirks+ clothes. }" }, 6 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never takes off }{$quirks+$minPoss}{$quirks+footwear. }" }, 7 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+never wears footwear. }" }, 8 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always wears a mask. }" }, 9 | { "w": 1, "v": "{$quirks+$majPro}{$quirks+always wears a veil. }" }, 10 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+never sleeps in a bed. }" }, 11 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+refuses to light fires. }" }, 12 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+refuses to write. }" }, 13 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+never sits on a chair. }" }, 14 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+speaks only in riddles. }" }, 15 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+doesn't tolerate nicknames. }" }, 16 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+keeps a list of all }{$quirks+$minPoss}{$quirks+fallen enemies. }" }, 17 | { "w": 2, "v": "{$quirks+$majPro}{$quirks+has an imaginary friend. }" }, 18 | { "w": 2, "v": "{$quirks+$majPro}{frequency}{$quirks+$fr}{$quirks+ changes name. }" } 19 | ] 20 | -------------------------------------------------------------------------------- /src/tables/werebeast.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 15, "v": "{$wb=wolf}" }, 3 | { "w": 1, "v": "{$wb=bear}" }, 4 | { "w": 1, "v": "{$wb=rat}" }, 5 | { "w": 1, "v": "{$wb=boar}" }, 6 | { "w": 1, "v": "{$wb=bat}" }, 7 | { "w": 1, "v": "{$wb=cat}" }, 8 | { "w": 1, "v": "{$wb=owl}" }, 9 | { "w": 1, "v": "{$wb=pig}" }, 10 | { "w": 1, "v": "{$wb=badger}" }, 11 | { "w": 1, "v": "{$wb=eagle}" }, 12 | { "w": 1, "v": "{$wb=tiger}" } 13 | ] 14 | -------------------------------------------------------------------------------- /src/tables/whitehair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 30, "v": "{hairLength}{$hair+, }{hairType}{$hair+, white }{$hair+hair and }" }, 3 | { "w": 3, "v": "{hairLength}{$hair+, }{hairType}{$hair+, white }{$hair+hair shaved on }{rlb}{$hair+$rl}{$hair+side and }" }, 4 | { "w": 2, "v": "{hairLength}{$hair+, white }{$hair+mohawk and }" }, 5 | { "w": 8, "v": "{$hair=a bald head and }" } 6 | ] 7 | -------------------------------------------------------------------------------- /src/tables/workClass.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 1, "name": "Boat", "v": "{$occupation=boat}{$occupation+$workGender}{kenkuname}" }, 3 | { "w": 1, "name": "Coach", "v": "{$occupation=coach}{$occupation+$workGender}{kenkuname}" }, 4 | { "w": 3, "name": "Farmer", "v": "{$occupation=farmer}{naturequirk}{kenkunameanimal}" }, 5 | { "w": 3, "name": "Fisher", "v": "{$occupation=fisher}{$occupation+$workGender}{%wis+1}{kenkuname}" }, 6 | { "w": 1, "name": "Gravedigger", "v": "{$occupation=gravedigger}{kenkuname}" }, 7 | { "w": 1, "name": "Sheppard", "v": "{$occupation=sheppard}{%wis+1}{kenkunameanimal}" }, 8 | { "w": 2, "name": "Trapper", "v": "{$occupation=trapper}{kenkunameanimal}" }, 9 | { "w": 1, "name": "Messenger", "v": "{$occupation=messenger}{kenkuname}" }, 10 | { "w": 2, "name": "Miller", "v": "{$occupation=miller}{kenkuname}" }, 11 | { "w": 2, "name": "Miner", "v": "{$occupation=miner}{%str+2}{%con+2}{kenkunamemetal}" }, 12 | { "w": 1, "name": "Peddler", "v": "{$occupation=peddler}{%cha+2}{kenkuname}" }, 13 | { "w": 1, "name": "Ratcatcher", "v": "{$occupation=ratcatcher}{%dex+2}{kenkunameanimal}" }, 14 | { "w": 3, "name": "Sailor", "v": "{$occupation=sailor}{%dex+2}{%str+1}{kenkuname}" } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tables/worship.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "w": 7, "v": "{$worship=discretely}" }, 3 | { "w": 4, "v": "{$worship=quietly}" }, 4 | { "w": 3, "v": "{$worship=openly}" }, 5 | { "w": 2, "v": "{$worship=proudly}" }, 6 | { "w": 1, "v": "{$worship=loudly}" }, 7 | { "w": 1, "v": "{$worship=zealously}" }, 8 | { "w": 1, "v": "{$worship=fervently}" } 9 | ] 10 | -------------------------------------------------------------------------------- /src/types.d.ts: -------------------------------------------------------------------------------- 1 | import type { NpcGenerateOptions } from "../index.d"; 2 | 3 | export type Primitives = string | number; 4 | export interface WeightedValue { 5 | w: number; 6 | v: string; 7 | } 8 | 9 | export interface Option { 10 | w: number; 11 | v: Group[]; 12 | original: string; 13 | } 14 | 15 | export type Operator = ((context: { vars: { [key: string]: Primitives } }, options: NpcGenerateOptions) => Primitives | Group[] | void) & { 16 | original?: string; 17 | }; 18 | export type Group = Operator | string; 19 | 20 | export type SchemaElement = string | WeightedValue[]; 21 | export type SchemaDescriptor = { [name: string]: SchemaElement | SchemaDescriptor }; 22 | export type SchemaResult = { 23 | [element: string]: SchemaResult | string; 24 | }; 25 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import type { DebugNode } from "../index.d"; 2 | 3 | export function chooseRandomWithWeight( 4 | arr: { 5 | w: number; 6 | v: T; 7 | }[], 8 | totalWeight: number, 9 | ): T { 10 | let rnum = (Math.random() * totalWeight + 1) | 0; 11 | let i = 0; 12 | while (rnum > 0) { 13 | rnum -= arr[i++].w; 14 | } 15 | return arr[i - 1].v; 16 | } 17 | 18 | export function debugNodeToString(debugNode: DebugNode | undefined): string | undefined { 19 | if (!debugNode) { 20 | return undefined; 21 | } 22 | let depth = 0; 23 | const lines: string[] = []; 24 | const indent = () => " ".repeat(depth); 25 | const processNode = (node: DebugNode | string) => { 26 | if (typeof node === "string") { 27 | lines.push(indent() + `-> ${node}`); 28 | } else { 29 | lines.push(indent() + `-> ${node.o}`); 30 | depth++; 31 | for (const child of node.childs) { 32 | processNode(child); 33 | } 34 | depth--; 35 | } 36 | }; 37 | processNode(debugNode); 38 | return lines.join("\n"); 39 | } 40 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "CommonJS", 5 | "moduleResolution": "node", 6 | "outDir": "dist", 7 | "sourceMap": false, 8 | 9 | "allowJs": true, 10 | "skipLibCheck": false, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "strictNullChecks": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "resolveJsonModule": true, 17 | "isolatedModules": true, 18 | "noFallthroughCasesInSwitch": true, 19 | "types": [], 20 | "lib": ["es2022"] 21 | }, 22 | "include": ["src"], 23 | "exclude": ["src/**/*.spec.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["jest"], 5 | "noEmit": true, 6 | "sourceMap": true, 7 | "target": "ES2022", 8 | "moduleResolution": "Node16" 9 | }, 10 | "include": ["src"], 11 | "exclude": [] 12 | } 13 | --------------------------------------------------------------------------------