UNPKG

rpg-table-randomizer

Version:

Module for random tables for use in roleplaying games

119 lines (98 loc) 4.62 kB
<html> <head> </head> <body> <p>Demo output...</p> <script type="module"> import generalTables from '../sample/general.js'; import colonialTables from '../sample/colonial.js'; import colonialMission from '../sample/colonial_mission.js'; import npcTables from '../sample/npc_tables.js'; import { simple as simpleSchemaData } from '../sample/schemas.js'; import { dice_roller, defaultNameGenerator, tableRoller, RandomTable, NPCSchema, npc_generator, NPC } from '../src/index.js'; const { rollDie, getDiceResult } = dice_roller; console.log(JSON.stringify( [ getDiceResult('d6'), getDiceResult('2d6+1') ] )); const printToScreen = function(any) { const p = document.createElement('p'); p.innerText = JSON.stringify(any); document.body.appendChild(p); } const tableObjs = generalTables.concat(colonialTables, colonialMission, npcTables); const testTables = {}; tableObjs.forEach((obj) => { const table = new RandomTable(obj); testTables[table.key] = table; // printToScreen(`Loaded table ${table}`); }); tableRoller.setTableKeyLookup(function(key) { return testTables[key] || null; }); printToScreen('Dice roller...'); printToScreen(rollDie('2d6+1')); printToScreen(getDiceResult('4d6+1')); printToScreen(rollDie('2d20dl1')); printToScreen('Name generator...'); printToScreen(defaultNameGenerator.generateList(4, 'flemish')); printToScreen(defaultNameGenerator.createName('french', 'female')); printToScreen(defaultNameGenerator.createName('french', 'mixed')); printToScreen('NPC generator...'); const simpleSchema = new NPCSchema(simpleSchemaData); printToScreen(JSON.stringify(simpleSchema)); npc_generator.registerSchema(simpleSchema); const npc = npc_generator.initializeNewNPC('simple', tableRoller); printToScreen( npc ); console.log(npc); console.log(npc.toJSON()); const npc2 = new NPC({}); printToScreen(npc2); npc_generator.applySchemaToNPC(simpleSchema, tableRoller, npc2); printToScreen(npc2); printToScreen('TableRoller...'); const ordResult = tableRoller.getTableResultSetByKey('ordinal'); printToScreen(ordResult); printToScreen(ordResult.niceString()); const dirResult = tableRoller.getTableResultSetByKey('directions'); printToScreen(dirResult); printToScreen(dirResult.niceString()); const companyResult = tableRoller.getTableResultSetByKey('colonial_companies'); printToScreen(companyResult); printToScreen(companyResult.niceString()); const missionResult = tableRoller.getTableResultSetByKey('mission_generator'); printToScreen(missionResult); printToScreen(missionResult.niceString()); const swampEncounter = tableRoller.getTableByKey('colonial_encounters_swamp'); printToScreen(swampEncounter); const swampEncounterResult = tableRoller.getTableResultSetByKey('colonial_encounters_swamp'); printToScreen(swampEncounterResult); printToScreen(swampEncounterResult.niceString()); printToScreen('Demon name: ' + tableRoller.getTableResultSetByKey('demon_name').niceString()); printToScreen('Holmes name: ' + tableRoller.getTableResultSetByKey('holmes_name').niceString()); // Example of too complicated tables used as tokens... and how niceString(true) really pares them down. const anotherTable = new RandomTable({ key: 'another_table', title: 'Trying something complicated', tables: { default: [ '{{table:mission_generator}} {{table:colonial_encounters_swamp}}' ] } }); printToScreen(tableRoller.getTableResult(anotherTable)); </script> </body> </html>