@randsum/roller
The core dice rolling engine. Zero dependencies. Supports advanced dice notation, modifiers, and full TypeScript types.
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.
@randsum/fifth
D&D 5th Edition mechanics — ability checks, saving throws, advantage/disadvantage.
@randsum/blades
Blades in the Dark action rolls — dice pools with critical, success, partial, and failure outcomes.
@randsum/pbta
Powered by the Apocalypse — 2d6+stat rolls for Dungeon World, Monster of the Week, Apocalypse World, Masks, and more.
@randsum/daggerheart
Daggerheart RPG — hope and fear dice mechanics with advantage/disadvantage and amplification.
@randsum/root-rpg
Root RPG — 2d6+bonus rolls with Strong Hit, Weak Hit, and Miss outcomes.
@randsum/salvageunion
Salvage Union — d20 table-based rolls for mech combat and salvage operations.
Discord Bot
Roll dice directly in Discord with slash commands. Supports all game packages with rich embeds.
createGameRoll factory to wrap the core roller with game-specific validation and result interpretationisolatedDeclarations, exactOptionalPropertyTypes, noUncheckedIndexedAccess