diff --git a/TASKS.md b/TASKS.md index fdcab12..8c2abf4 100644 --- a/TASKS.md +++ b/TASKS.md @@ -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 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` -- 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 - Rolemaster uses expression parsing with canonical syntax: - initiative: `2d10+48` - standard percentile: `d100+4` - open-ended percentile: `d100!+85` - negative modifiers are valid only for Rolemaster, for example `d100-15` + - `15d10` e.g. for spells indicating "heals 1d10/lvl hit points". ## 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. 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. - 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.