True if the die met its critical criteria — by default, rolling the
maximum face on a die with more than one side. That default never fires
on d1 or on Fate dice (sides = 0 has no maximum face), but an
explicit cs threshold does: 4dFcs>0 flags every +1.
True if the die met its fumble criteria — by default, rolling a 1 on a
die with more than one side. As with DieResult.critical, the
default never fires on d1 or Fate dice, while an explicit cf
threshold does: 4dFcf=-1 flags every -1.
OptionalinitialRaw first roll before any mutation — compound-explode accumulation, the
!p decrement, or a minN/maxN clamp. Only populated when result has
been overwritten with a computed value.
Consumers that need the original face (nat-20 / nat-1 detection) should
read initialResult ?? result.
Modifiers applied to this die
The rolled value
Number of sides on the die. Normal dice use sides >= 1. Fate/Fudge
dice use sides = 0 as a sentinel — they have no configurable sides
and always produce results in {-1, 0, +1}.
One physical die and everything the evaluator learned about it.
The same object is shared between
RollResult.rollsand therolls[]of the RollPart that produced it — there is no deep clone, so mutating a die is visible through both views.Example