BCDice ported package for TypeScript/JavaScript by Opal.
$ npm install --save bcdice
JavaScript (CommonJS)
const { DynamicLoader, Version } = require('bcdice');
async function main() {
console.log('BCDice Version:', Version);
const loader = new DynamicLoader();
console.log(loader.listAvailableGameSystems().map(info => info.id));
const GameSystem = await loader.dynamicLoad('Cthulhu7th');
console.log(GameSystem.NAME);
console.log(GameSystem.HELP_MESSAGE);
const result = GameSystem.eval('CC<=54');
console.log(result && result.text);
}
main();
TypeScript
import { DynamicLoader, Version } from 'bcdice';
async function main(): Promise<void> {
console.log('BCDice Version:', Version);
const loader = new DynamicLoader();
console.log(loader.listAvailableGameSystems().map(info => info.id));
const GameSystem = await loader.dynamicLoad('Cthulhu7th');
console.log(GameSystem.NAME);
console.log(GameSystem.HELP_MESSAGE);
const result = GameSystem.eval('CC<=54');
console.log(result?.text);
}
main();
JavaScript (CommonJS)
const { UserDefinedDiceTable } = require('bcdice');
const table = new UserDefinedDiceTable(`テスト表
1D6
1:いち
2:に
3:さん
4:し
5:ご
6:ろく`);
const result = table.roll();
console.log(result && result.text);
TypeScript
import { UserDefinedDiceTable } from 'bcdice';
const table = new UserDefinedDiceTable(`テスト表
1D6
1:いち
2:に
3:さん
4:し
5:ご
6:ろく`);
console.log(table.roll()?.text);
StaticLoader
:import StaticLoader from 'bcdice/lib/loader/static_loader';
- Load all GameSystems on startup.
DynamicLoader
:import { DynamicLoader } from 'bcdice';
or extend Loader
(import Loader from 'bcdice/lib/loader/loader'
) and make your custom loader.
Since v2.x, you can get the version of internal BCDice by importing Version
from 'bcdice
'.
bcdice-js | BCDice |
---|---|
3.1.0 | Ver3.1.1 |
3.0.0 | Ver3.0.0 |
2.0.0 | Ver3.0.0 |
1.x.x | Ver2.xx.xx |
- Node.js >= v14
- Ruby >= 2.7
$ git clone https://github.com/bcdice/bcdice-js.git
$ cd bcdice-js
$ git submodule update --init
$ bundle install
$ npm install
$ npm run build
$ npm test
Loader.dynamicImport(className: string)
now accepts a className
instead of a path
. Custom loaders need to search for GameSystem
from known path. See also DynamicLoader
.