bcdice / BCDice

The most popular TRPG dice command engine in Japan
https://bcdice.org
BSD 3-Clause "New" or "Revised" License
140 stars 184 forks source link

特定システム用の処理を行った後、標準ダイスに処理を委譲したい #87

Closed NanasuNANA closed 2 years ago

NanasuNANA commented 5 years ago

例えばD&D5thの判定では、有利/不利が付き(D20を2つ振り、有利なら大きい方、不利なら小さい方を取る)、さらにそれに呪文の効果などで任意のダイスを増減する(ブレスの効果で+1d4など)。

D&D5thの有利/不利をDAx、DDx(xは数値)等と実装して、D20を複数振って大きい/小さい方を取ったのち、後の処理(任意のダイスの結果を増減、プラス、マイナス修正)を標準ダイスボットに委譲するようなことがしたい。

例 DA2+1d4+3 D20を2つ振って大きい方を取り、その値に1d4の結果と3を足す

ysakasin commented 5 years ago

加算ダイスをDSL化して、式の項をダイスボットで増やせるようにするという手もありそう

add_dice = AddDice.new

add_dice.unary_op("DA") do |x|
  # DAx の処理をして、結果を返す
end

add_dice.roll("DA1+1d4+3")
ochaochaocha3 commented 5 years ago

Discordより:

先日私がニンジャスレイヤーTRPGの BCDice#bdice でやったように、AddDice.new の形で加算ロールを作って実行し、結果の文字列を後ろにくっつけるようにすれば汎用性があるのかな、と ただ、現段階では AddDice#roll が、普通の加算ロールとして振ったときを想定した文字列を返すようになっているので、そこは使いにくそう

ysakasin commented 2 years ago

代わりにnDxKH類が追加されているので、クローズします。