Skip to content

BCDice ported package for TypeScript and JavaScript by Opal.

License

Notifications You must be signed in to change notification settings

bcdice/bcdice-js

Repository files navigation

bcdice-js

npm CI Snyk Vulnerabilities for npm package GitHub issues GitHub forks GitHub stars GitHub license Discord

BCDice ported package for TypeScript/JavaScript by Opal.

Installation

$ npm install --save bcdice

Usage

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();

UserDefinedDiceTable

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

Loaders

  • 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.

Internal BCDice Versions

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

Development

  • 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

Migration from 2.x to 3.x

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.