protected override long EvaluateInternal(RollData data, DiceAST root, int depth) { long rolls = Expression.Evaluate(data, root, depth + 1); rolls += Critical?.Evaluate(data, root, depth + 1) ?? 0; rolls += Fumble?.Evaluate(data, root, depth + 1) ?? 0; MarkCrits(); return(rolls); }