raa0121 / GoBCDice

GoBCDice is BCDice reimplemented by Go.
BSD 3-Clause "New" or "Revised" License
9 stars 2 forks source link

個数振り足しロール(RRoll)を実装する #16

Closed ochaochaocha3 closed 5 years ago

ochaochaocha3 commented 5 years ago

ダイスをバラバラにロールして、その成功数の個数分さらにロールして成功度を加算するロール(天羅万象など)にも対応しました。振り足し回数はゲーム設定で対応になっています。(デフォルトは無限) BのかわりにRを使うことで使用できます。条件式は必須で、ダイスの括弧内前処理も使えます。

例)

3r6>=4   3R6=6   3r6+2r6<=2   (3+2)r6>=5

個数振り足しの最大個数は10,000(Ruby版ではDiceBotクラスで定義)。

https://github.com/bcdice/BCDice/issues/65 も参照。

再定義

READMEの記述と直感的に期待される挙動から、仕様を再定義する。

  • ダイスの指定はnRxのようにし、+で複数繋げられる
  • ダイス指定の直後に成功条件式を >=6<2 のように記述する
  • 指定された条件式を用いて各ダイスの成否判定が行われる
  • 成功したダイスは振り直される
  • 成功した回数をカウントし、成功数とする
  • []をつかった2R3+4R5[6]のような式は2R3+4R5>=6 の糖衣構文とする
  • 式中の数値は、0以上のみ受け付ける

抽象構文木の例

結果の型

成功数

object.Integer

結果のメッセージの例