Implement d6 wild dice/fumble skills and die-state rolls

This commit is contained in:
2026-02-26 08:26:12 +01:00
parent 0f44cc466b
commit 11ab7c959b
22 changed files with 560 additions and 50 deletions

9
FAQ.md
View File

@@ -41,3 +41,12 @@ Coverage now includes the entire backend project (`RpgRoller`), including API/ho
## Why do backend services avoid API request DTO dependencies?
Service workflows accept explicit parameters (for example, `CreateCampaign(sessionToken, name, rulesetId)`) instead of API request DTOs. This keeps the service layer independent from HTTP transport contracts while avoiding extra service-only wrapper command types.
## How do d6 wild dice and fumbles work now?
d6 skills now store two explicit options:
- `wildDice`: number of wild dice for the skill
- `allowFumble`: whether wild dice rolling `1` can trigger fumble removal
Roll responses also include per-die state flags (`crit`, `fumble`, `wild`, `removed`, `added`) so the frontend can render the full die-by-die outcome, not just the final total.