TOPSCENARIOREPLAYCAMPAIGNCHARACOLUMNDodontoFLINK

TOP > COLUMN

どどんとふダイスボット作成講座その2
2014年09月03日

今回は「ゲーム別成功度判定関数(check_nDx)」を紹介していきます。
これは不等号などで目標値を入力すると成功、失敗が表示されるあれです。
この処理や出力テキストを各ダイス種ごとにカスタマイズするための関数です。
この関数は自分でダイスコマンドを作成することなく成否判定をカスタマイズできるのでダイスボット作成入門で変更してみるにはお勧めです。

どの関数がどのダイスロールに対応してるかは見ればわかると思いますが一応補足しておきます。

check_2D6

2d6を振った時の処理です。

check_nD6

nD6(n個のD6)を振った時の処理です。2D6の時だけは「check_2D6」関数が優先されます。

check_nD10

nD10(n個のD10)を振った時の処理です。

check_1d100

1D100を振った時の処理です。

check_1d20

1D20を振った時の処理です。
D4とかnD20とかnD100とかはこの関数では対応できないので、その場合はこの関数ではなく別途コマンドを作成するようにしましょう。
また、変更しない関数は削除しちゃいましょう。

これらの関数の引数は全て共通となっています。(例には「3d6+3>=10」と入力し、ダイスロールの結果が[2,5,1]だった場合を表示します)

total_n

ダイスと修正値を足した合計です。
ex)total_n=11

dice_n

ダイスの値のみの合計です。
ex)dice_n=8

signOfInequality

式に入力されてる不等号です。
ex)sifnOfInequality="<="

diff

目標値です。
ex)diff=10

dice_cnt

振ったダイスの個数です。
ex)dice_cnt=3

dice_max

振ったダイスの最大値です。
D6なら6、D10なら10と言った感じです。
ex)dice_max=6

n1

振ったダイスの中で[1]がでた個数です。
ex)n1=1

n_max

振ったダイスの中で最大値(D6の場合は6)がでた個数です。
ex)n_max=0

これらの関数の返り値はstring型のテキストになっています。
この返り値のテキストは通常のダイスロールのテキストの後ろに挿入されます。
ex) (3d6+3>=10) → 8[2,5,1]+3 → 11【ここに挿入される】
そのため、返り値は" > "をまずつけて、" > 成功!"とかにするといいでしょう。
ちなみにどうしてそうしてるのかはよくわかりませんが、全角の「>」は「→」に自動変換されます。

これらを踏まえた上で、まず簡単に2D6を振って[6,6]が出た場合に「クリティカル!」と表示するようにしてみましょう。
2D6限定なので変更する関数は「check_2D6」関数となります。
if(dice_n>=12)
 return " > クリティカル!"
end
こんな感じになります。
これは単純にダイスの合計値が12だった場合クリティカルと表示するようにしています。
もう少しひねるとこんな感じにもできます。
if(n_max>=2)
 return " > クリティカル!"
end
これは6が出たダイス数が2個以上ならクリティカルと表示するという形です。
このような形はアリアンロッドなどのダイス数が増減するようなのに使いやすい記述方式です。
逆に全てのダイスが1だったらファンブルと表示するようにするにはこのようにします。
if(n_1>=dice_cnt)
 return " > ファンブル!"
end
こうすると「1がでた個数がダイスの個数以上のとき[ファンブル!]と表示する」という形になります。

この関数をいじるだけでもそれなりに色々なことができます。
この関数を使ってダイスボットを作成する場合、「アリアンロッド」や「ガープス」のダイスボットが参考になると思います。
それではまた次回。