やり方
ダイス表記で振る
ダイス表記を検証し、ホールドとゲームの読み方を使います。
振る前に確認する
checkNotationでは、読み取れない理由も分かります。parseNotationは設定を返し、読み取れない場合はnullを返します。
import { checkNotation, roll, seededSource } from "@johnmorrisdotca/korokoro";
const checked = checkNotation("2d20kh1+5");
if (checked.ok) console.log(roll(checked.spec, seededSource("advantage"), 0).total);
else console.log(checked.problem, checked.message);25khは高い出目、klは低い出目を残します。1d20+1d4+3のように種類を組み合わせられます。ro<3は1回だけ振り直し、r<3は上限内で条件を満たさなくなるまで振り直します。表記の資料と仕様に詳しい規則があります。
ダイスをホールドする
import { normalizeSpec, rollFrom, rollHeld, seededSource } from "@johnmorrisdotca/korokoro";
const first = rollFrom(normalizeSpec({ count: 2, sides: 6 }), [6, 3], "first", 0, null)!;
const next = rollHeld(first, [true, false], seededSource("again"), 1);
console.log(next.faces);[ 6, 1 ]真偽値はダイスの順に指定します。規則によってはホールドできないので、canHoldで確認します。
ゲームの読み方を使う
import { getPreset, rollPreset, seededSource } from "@johnmorrisdotca/korokoro";
console.log(getPreset("Yacht")?.notation);
const turn = rollPreset("yahtzee", { source: seededSource("game-night"), at: 0 });
console.log(turn.reading.text);5d6
Chance, for 14プリセットには、使うダイスと出目の読み方が入っています。手番の管理や得点表はアプリ側で用意します。ゲームの一覧に規則と出典があります。ダイスウォーにはstartDiceWarから始める状態管理があります。
ブラウザに表示するにはトレイの埋め込みに進みます。
この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。