上方無限ロール
上方無限ロールnUx
はダイスの振り足しを行うことで、何個のダイスグループが条件を満たすことができるか調べるコマンドです。
コマンドの形式は以下の通りです。
aUx+nUm+...+xUy[振り足し]+修正値>=目標値
aUx+nUm+...+xUy+修正値>=目標値@振り足し
nUx
と記述した場合、ダイスグループをn
個作成し、それらのダイスグループにはx
面ダイスが1つずつ割り当てられます。
処理はダイスグループごとに行われます。まず、最初に割り当てられたダイスを1つをダイスロールします。
その出目が振り足し
より大きければもう一回ダイスロールを行ってダイスグループに値を追加します。
追加の出目についても振り足し
との比較を行い、条件を満たす限り追加のダイスロールを繰り返します。
全ての振り足しが完了したら、ダイスグループごとに出目の合計値を求めて目標値と比較します。 目標の条件を満たしら成功とし、成功したダイスグループの数を最終結果として表示します。
実行例
[DiceBot]> 2U4+1U6[4]>=6
(2U4+1U6[4]>=6) > 5[4,1],15[4,4,4,3],3 > 成功数1
上記コマンドでは4面ダイスのダイスグループが2つ、6面ダイスのダイスグループが1つで、振り足しの条件は4以上、成功の条件は6以上となっています。わかりやすくするために、4面ダイスのダイスグループをそれぞれ4面a
と4面b
、6面ダイスのダイスグループを6面
と書くことにします。
各ダイスグループごとの動きは以下の通りです。
4面a: 4 -(振り足し)-> 1 (終了) : 5[4,1]
4面b: 4 -(振り足し)-> 4 -(振り足し)-> 4 -(振り足し)-> 3 (終了) : 15[4,4,4,3]
6面: 3 (終了) : 3[3]
4面a
は1回目の出目が4以上だったので振り足しが行われ、2回目は1だったのでそこで終了し、合計5となりました。
4面b
は1回目の出目が4以上だったので振り足しが行われ、その後も4が続き、合計15となりました。
6面
は出目が3で振り足し条件を満たさなかったため、振り足しが行われませんでした。
各ダイスグループの合計と成功条件>=6
を比較すると、条件に合致するのは4面b
1つであるため、成功数1と表示されました。
振り足しの閾値
ダイス目が[]
か@
で指定された数以上であればダイスの振り足しが行われます。
[]
はダイスの末尾に書きます
2U6[4]>=10
@
は式の末尾に書きます
2U6>=10@4
閾値が明示されていない場合、ゲームシステムに設定されたデフォルト値を参照します。
2U6>=10
閾値の制限
閾値は2以上としてください。1以下だと常に振り足し条件を満たしてしまい、無限ループ防止のためエラーとなります。
[DiceBot]> 2U4[1]>=6
(2U4[1]>=6) > 無限ロールの条件がまちがっています
修正値
修正値は各ダイスグループに1回のみ加算されます。
[DiceBot]> 2U4+1U6[4]+2>=6
(2U4+1U6[4]>=6) > 5[4,1],15[4,4,4,3],3+2 > 成功数2
修正値の適用過程
4面a: 5[4,1]+2 -> 7 -> 成功
4面b: 15[4,4,4,3]+2 -> 17 -> 成功
6面: 3+2 -> 5 -> 失敗
比較記号
比較は他のコマンドと同様に以下の記号を指定できます
記号 | 意味 |
---|---|
>= |
以上 |
> |
より大きい |
< |
未満 |
<= |
以下 |
== , = |
等しい |
!= , <> |
異なる |
目標値の省略
比較記号と目標値を省略した場合、ダイスの最大値と、全てのダイスの合計値が出力されます。 合計値の算出では修正値は全体で一回のみ加算されます。
[DiceBot]> 2U4+1U6[4]+10
(2U4+1U6[4]+10) > 9[4,4,1],1,13[4,6,3]+10 > 23/33(最大/合計)
最大値の算出過程
9[4,4,1]+10 -> 19
1+10 -> 11
13[4,6,3]+10 -> 23 -> 最大値
合計値の算出過程
[4,4,1] + 1 + [4,6,3] + 10 -> 33