Closed ysakasin closed 6 years ago
~if
の中に __last_match_n
が生成されていて、 else
で参照できなくなっている~
elsif
中に __last_match_n
が生成されていない
if (/CC(B)?(\d+)<=(\d+)/i =~ command)
__last__match__1 = $1
__last__match__2 = $2
__last__match__3 = $3
__last__match__4 = $4
__last__match__5 = $5
__last__match__6 = $6
__last__match__7 = $7
__last__match__8 = $8
__last__match__9 = $9
__last__match__10 = $10
__last__match__11 = $11
__last__match__12 = $12
__last__match__13 = $13
__last__match__14 = $14
__last__match__15 = $15
__last__match__16 = $16
__last__match__17 = $17
__last__match__18 = $18
__last__match__19 = $19
__last__match__20 = $20
# /\(\d+\)/の()はpattern-killerにカイシャクされるらしい
broken_num = __last__match__2.to_i
diff = __last__match__3.to_i
elsif (/CC(B)?<=(\d+)/i =~ command)
diff = __last__match__2.to_i
end
クトゥルフ神話TRPGにおいて技能判定でよく用いる
cc<=80
のような大小比較ができない。どどんとふやBCDice-APIではできているため、bcdice-js固有の問題だと思われる。ねこ卓でも同様の問題が発生している。
問題が起きるサンプルコード
出力
期待するダイス結果の例
BCDice-APIの場合
https://bcdice.herokuapp.com/v1/diceroll?system=Cthulhu&command=cc%3C=80
参考情報
Cthulhu.rb
におけるcc
コマンドは、1d100
のエイリアスおよび追加機能になっている。この判定は Cthulhu#getCheckResultで行なっており、大小比較があるかの判断もこのメソッド内で行なっている。大小比較の存在判断は正規表現を用いて行われているが、bcdice-js経由だと、これらの判定をすり抜けてしまっているように見える。 https://github.com/torgtaitai/BCDice/blob/e52a91ffe5ad7db35c651a18e0ffe8025be266f7/src/diceBot/Cthulhu.rb#L100