You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updated 2026-03-24: Game packages now use .randsum.json specs + codegen, not createGameRoll. See existing games in packages/games/ for the pattern.
Scope
Ship Fate Core as a new subpath in @randsum/games — a .randsum.json spec that defines 4dF (Fudge dice) with Fate ladder labels. Codegen produces the TypeScript.
Acceptance Criteria
fate.randsum.json spec in packages/games/ defining 4dF with custom sides [-1, 0, 1]
Codegen produces src/fate.generated.ts — accessible via import { roll } from '@randsum/games/fate'
roll(4) returns a result with numeric value (-4 to +4) and Fate ladder label
Default is 4 dice; roll(n) accepts any positive integer
FATE_LADDER constant exported, mapping each integer value (-4 to +4) to its label: Terrible, Poor, Mediocre, Average, Fair, Good, Great, Superb, Legendary
Unit tests cover: default 4 dice, custom quantity, all 9 label boundary values
Property-based test with fast-check: for any quantity N, result value is always in range [-N, +N]
Bundle within game package size limit
Implementation Notes
Follow the pattern of existing game packages (e.g., blades.randsum.json, fifth.randsum.json)
Fate Accelerated uses the same dice mechanic; document in README that the Fate subpath works for FAE
Fate points / invoke bonuses are out of scope — dice-only
Part of #940
Phase 1: Implement Fate Core Fudge dice package
Scope
Ship Fate Core as a new subpath in
@randsum/games— a.randsum.jsonspec that defines 4dF (Fudge dice) with Fate ladder labels. Codegen produces the TypeScript.Acceptance Criteria
fate.randsum.jsonspec inpackages/games/defining 4dF with custom sides[-1, 0, 1]src/fate.generated.ts— accessible viaimport { roll } from '@randsum/games/fate'roll(4)returns a result with numeric value (-4 to +4) and Fate ladder labelroll(n)accepts any positive integerFATE_LADDERconstant exported, mapping each integer value (-4 to +4) to its label: Terrible, Poor, Mediocre, Average, Fair, Good, Great, Superb, LegendaryImplementation Notes
blades.randsum.json,fifth.randsum.json)Out of Scope