Skip to content

[E-IRON-1] Implement @randsum/ironsworn action and progress rolls #972

@alxjrvs

Description

@alxjrvs

Part of #944

Phase 1: Implement Ironsworn action and progress rolls

Updated 2026-03-24: Game packages now use .randsum.json specs + codegen, not the removed createGameRoll / createMultiRollGameRoll factories. See existing game packages in packages/games/ for the pattern.

Scope

Implement Ironsworn's action roll (1d6 + stat vs 2d10) and progress roll (1d10 vs progress track score) as an ironsworn.randsum.json spec in packages/games/.

Acceptance Criteria

  • ironsworn.randsum.json spec defining action roll and progress roll
  • Codegen produces src/ironsworn.generated.ts — accessible via import { roll } from '@randsum/games/ironsworn'
  • Action roll: rolls action die (1d6), two challenge dice (1d10 each)
  • Adds stat + adds to action die, caps at 10
  • Result values: STRONG_HIT (beats both), WEAK_HIT (beats one), MISS (beats neither)
  • Match flag: isMatch: true when both challenge dice show same value
  • Progress roll: progress track score vs 2d10, same hit type logic, no action die
  • Edge cases: action score exactly equals one challenge die (WEAK_HIT, not STRONG_HIT), action score cap of 10, both challenge dice tied (isMatch true)
  • Ironsworn SRD (Creative Commons) cited in spec file header

Mechanics Reference

  • Action score = d6 + stat + adds, capped at 10
  • Strong Hit: action score > both challenge dice
  • Weak Hit: action score > one challenge die
  • Miss: action score <= both challenge dice
  • Match: both challenge dice show the same value (independent of hit type)
  • Comparison is strict greater-than — ties go to the challenge dice

Out of Scope

  • Starforged (identical mechanics, reuses same spec)
  • Oracle table consultation
  • Momentum burn

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestgame-packageA game-specific dice packagephaseA phase within an epic

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions