Skip to content

Packages Overview

RANDSUM is organized as a monorepo with a core dice engine and specialized game packages. Every package is TypeScript-first, ships as ESM + CJS with full type declarations, and is published to npm under @randsum.

@randsum/roller (core engine)
|
+-- @randsum/fifth (D&D 5e)
+-- @randsum/blades (Blades in the Dark)
+-- @randsum/pbta (Powered by the Apocalypse)
+-- @randsum/daggerheart (Daggerheart)
+-- @randsum/root-rpg (Root RPG)
+-- @randsum/salvageunion (Salvage Union)

All game packages depend only on @randsum/roller — they never depend on each other.

@randsum/roller

The core dice rolling engine. Zero dependencies. Supports advanced dice notation, modifiers, and full TypeScript types.

View documentation

@randsum/fifth

D&D 5th Edition mechanics — ability checks, saving throws, advantage/disadvantage.

View documentation

@randsum/blades

Blades in the Dark action rolls — dice pools with critical, success, partial, and failure outcomes.

View documentation

@randsum/pbta

Powered by the Apocalypse — 2d6+stat rolls for Dungeon World, Monster of the Week, Apocalypse World, Masks, and more.

View documentation

@randsum/daggerheart

Daggerheart RPG — hope and fear dice mechanics with advantage/disadvantage and amplification.

View documentation

@randsum/root-rpg

Root RPG — 2d6+bonus rolls with Strong Hit, Weak Hit, and Miss outcomes.

View documentation

@randsum/salvageunion

Salvage Union — d20 table-based rolls for mech combat and salvage operations.

View documentation

Discord Bot

Roll dice directly in Discord with slash commands. Supports all game packages with rich embeds.

View documentation

  • Zero core dependencies — the roller has no runtime dependencies
  • Never throws — errors are returned in the result, not thrown
  • Game packages are thin wrappers — they use the createGameRoll factory to wrap the core roller with game-specific validation and result interpretation
  • Strict TypeScriptisolatedDeclarations, exactOptionalPropertyTypes, noUncheckedIndexedAccess
  • Bundle size enforced — roller is under 10KB, game packages under 7KB