Updated rolemaster tasks

This commit is contained in:
2026-04-02 01:44:07 +02:00
parent ac586b0e55
commit 31dcb0c4a9

View File

@@ -32,13 +32,13 @@ The initial scope is only roll definition, validation, execution, logging, and U
- The standard fumble range for open-ended percentile skills is `0-5`, but can be configured individually for each skill. - The standard fumble range for open-ended percentile skills is `0-5`, but can be configured individually for each skill.
- The fumble range has to be guaranteed to be less than 96. - The fumble range has to be guaranteed to be less than 96.
- Roll breakdown text format for low-ended subtraction: `12 (03) -97 -44 +15 = -114` - Roll breakdown text format for low-ended subtraction: `12 (03) -97 -44 +15 = -114`
- Initiative should be represented as a dedicated Rolemaster roll type, because UI copy and validation differ
- Skill groups need to support Rolemaster defaults for all of these fields, to stay consistent with current prototype behavior - Skill groups need to support Rolemaster defaults for all of these fields, to stay consistent with current prototype behavior
- Rolemaster uses expression parsing with canonical syntax: - Rolemaster uses expression parsing with canonical syntax:
- initiative: `2d10+48` - initiative: `2d10+48`
- standard percentile: `d100+4` - standard percentile: `d100+4`
- open-ended percentile: `d100!+85` - open-ended percentile: `d100!+85`
- negative modifiers are valid only for Rolemaster, for example `d100-15` - negative modifiers are valid only for Rolemaster, for example `d100-15`
- `15d10` e.g. for spells indicating "heals 1d10/lvl hit points".
## Architecture Guardrails ## Architecture Guardrails
@@ -84,16 +84,6 @@ The current model is D6-shaped:
That shape is not a clean fit for Rolemaster. The Rolemaster extension should still preserve expression parsing, but it needs a ruleset-aware internal definition so the app can validate, execute, and display Rolemaster rolls safely. That shape is not a clean fit for Rolemaster. The Rolemaster extension should still preserve expression parsing, but it needs a ruleset-aware internal definition so the app can validate, execute, and display Rolemaster rolls safely.
Recommended model additions: Recommended model additions:
- `SkillRollKind` enum
- `StandardExpression`
- `RolemasterInitiative`
- `RolemasterPercentile`
- `RolemasterOpenEndedPercentile`
- `RolemasterFumbleRange` nullable integer
- keep `DiceRollDefinition` as the canonical persisted expression across rulesets
- derive `SkillRollKind` and `RollModifier` from parsed expressions unless persisting them provides a concrete implementation benefit
Recommended direction:
- Keep existing fields working for D6 and D&D 5e. - Keep existing fields working for D6 and D&D 5e.
- Preserve `DiceRollDefinition` as the authoritative user-facing input for D6, D&D 5e, and Rolemaster. - Preserve `DiceRollDefinition` as the authoritative user-facing input for D6, D&D 5e, and Rolemaster.
- Add only the extra Rolemaster fields that cannot be encoded cleanly in the expression itself, specifically the fumble range. - Add only the extra Rolemaster fields that cannot be encoded cleanly in the expression itself, specifically the fumble range.