rpg-table-randomizer
Version:
Module for random tables for use in roleplaying games
119 lines (98 loc) • 4.62 kB
HTML
<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>