UNPKG

@randsum/roller

Version:

A flexible, type-safe dice roller for tabletop RPGs, game development, and probability simulations

24 lines (21 loc) 851 B
import { coreSpreadRolls } from '../../lib/random' import type { RollParams, RollRecord } from '../../types' import { generateHistory } from './generateHistory' export function generateRollRecord<T>(parameters: RollParams<T>): RollRecord<T> { const { sides, quantity = 1, faces, arithmetic, description } = parameters const initialRolls = coreSpreadRolls(quantity, sides) const isNegative = arithmetic === 'subtract' const customResults = faces ? { customResults: initialRolls.map(roll => faces[roll - 1] as T) } : {} const modifierHistory = generateHistory(parameters, initialRolls) return { ...customResults, parameters, description, modifierHistory, rolls: modifierHistory.modifiedRolls, appliedTotal: isNegative ? -modifierHistory.total : modifierHistory.total, total: modifierHistory.total } }