Skip to the content

Korokoroコロコロ

Roll mixed dice or type notation, compare exact probabilities, keep a history and replay seeded rolls.

Korokoro describes something small rolling in Japanese. About the name

Contents

Reference · Rolls and exact odds

RollSpectype

What to roll: the dice, the bonus, and the rules. A roll of one kind of die is { count, sides, modifier, keep } and whichever optional fields it uses. A roll of several kinds keeps its first kind there and the others in more, so a one-kind spec is the same object it always was.

Import it

import type { RollSpec } from "@johnmorrisdotca/korokoro";

Definition

type RollSpec = DiceGroup & {
    modifier: number;
    more?: DiceGroup[];
    times?: number;
    math?: MathNode;
    label?: string;
};

Members

NameTypeDescription
countnumber

How many dice: at least 1, and no more than MAX_DICE over the whole roll.

sidesSides

The kind of die: 2 to 1000 sides, or "F" for a Fate die.

keepKeep

Which dice count towards the total.

keepCount (optional)number | undefined

How many dice highest or lowest keep. Left out when it is one.

explode (optional)true | undefined

A die showing its highest face throws another, which may do the same. Left out when the dice do not explode.

reroll (optional)number | undefined

A die showing this face or lower is thrown again, once, and the new face stands: ro< in notation. Left out when nothing is rerolled once.

rerollUntil (optional)number | undefined

A die showing this face or lower is thrown again until it shows more, up to MAX_REROLLS times: r< in notation. Left out when nothing is rerolled until clear.

rerollWhen (optional)Compare | undefined

A die meeting this is thrown again, once: ro>=5, ro=3. For the comparisons reroll cannot say; left out otherwise.

rerollUntilWhen (optional)Compare | undefined

A die meeting this is thrown again until it does not, up to MAX_REROLLS times: r=3, r>=5. For the comparisons rerollUntil cannot say; left out otherwise.

explodeWhen (optional)Compare | undefined

With explode: the faces that explode, when they are not just the highest. !>=5 in notation. Left out when only the highest face explodes.

explodeKind (optional)ExplodeKind | undefined

With explode: how the extra dice are added up. Left out for ordinary explosions.

floor (optional)number | undefined

The least a die counts for: a face below it counts as it. min2 in notation.

ceiling (optional)number | undefined

The most a die counts for: a face above it counts as it. max5 in notation.

success (optional)Compare | undefined

The dice are counted, not added: each die meeting this is one success, and the total is how many. >=8 in notation.

failure (optional)Compare | undefined

With success: each die meeting this takes one success away. f=1 in notation.

critical (optional)Compare | undefined

Dice meeting this are marked as critical successes. Only a mark: the total is the same. cs>=19 in notation.

fumble (optional)Compare | undefined

Dice meeting this are marked as critical failures. Only a mark. cf<=2 in notation.

sort (optional)"ascending" | "descending" | undefined

The order the dice are shown in: sa ascending, sd descending. The order thrown is kept in the roll.

unique (optional)true | undefined

The dice all show different faces: each is thrown from the faces not yet showing, which comes to the same as rerolling any duplicate until there is none. u in notation.

faces (optional)CustomFace[] | undefined

A custom die: its faces, in order, and sides is how many there are. A face written twice comes up twice as often. A roll records a custom face by its place, from 1. Left out of a numbered die and a Fate die.

weights (optional)number[] | undefined

A loaded die: how heavily each face is weighted, from the lowest face up, where a fair die has every face at 1. [1, 1, 1, 1, 1, 3] is a d6 that shows its 6 three times in eight. Left out of a fair die, and never present by accident: isFair is false for any roll that has it.

modifiernumber

Added to the total, as in 1d20+5.

more (optional)DiceGroup[] | undefined

The other kinds of dice in the roll, in order. Left out when there is one kind.

times (optional)number | undefined

How many times rollMany throws the roll, as a set: 6 for 6#4d6dl1. Left out when it is once. roll throws it once whatever this says.

math (optional)MathNode | undefined

How the kinds' totals are put together, when that is not simply adding them: (2d6+3)*2, 1d20-1d4, floor(4d6/2). It names each kind of dice once, by its place. With a formula the bonus is part of it, and modifier is 0. Left out of a roll whose kinds are added.

label (optional)string | undefined

What the roll is for, in a few words: "fire damage". Text, only ever shown as text. 2d6 # fire damage in notation. Left out when there is none.

Examples

import type { RollSpec } from "@johnmorrisdotca/korokoro";
import { normalizeSpec } from "@johnmorrisdotca/korokoro";
const value: RollSpec = normalizeSpec({ count: 2, sides: 6 });
console.log(value.sides);
6

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/korokoro 1.16.0.