Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

サンサーラ・バラッドのダイスボット追加 #203

Merged
merged 14 commits into from
May 25, 2020

Conversation

h-mikisato
Copy link
Contributor

サンサーラ・バラッドというシステム http://r-r.arclight.co.jp/rpg/samsara のダイスボットを作成いたしましたので、レビューをお願いいたします。

以下、該当システムの判定の仕様(実装内容)となります。

  • 基本的には(CoC等と同様に)1d100の下方ロールで判定を行う
  • ただし、特定の条件を満たした場合、1d100の結果における10の位と1の位を比較して、小さい方を10の位、大きい方を1の位とした数字を出目として扱える(スワップロール)
  • 特定の判定にはF値とC値という概念があり、1の位がF値以下の場合はファンブル、1の位がC値以上の場合はクリティカルとなる(スワップロールの場合、交換後の出目で判定する)

@codecov-commenter
Copy link

codecov-commenter commented May 20, 2020

Codecov Report

Merging #203 into master will increase coverage by 0.02%.
The diff coverage is 96.82%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #203      +/-   ##
==========================================
+ Coverage   86.94%   86.97%   +0.02%     
==========================================
  Files         210      211       +1     
  Lines       22073    22136      +63     
==========================================
+ Hits        19192    19253      +61     
- Misses       2881     2883       +2     
Impacted Files Coverage Δ
src/configBcDice.rb 100.00% <ø> (ø)
src/diceBot/DiceBotLoaderList.rb 100.00% <ø> (ø)
src/diceBot/SamsaraBallad.rb 96.82% <96.82%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8ee5f70...44aa916. Read the comment docs.

@ysakasin
Copy link
Member

@h-mikisato
寄稿ありがとうございます。
クリティカル値を@で追記するシステムが多いので、SBS@7#3<=80 というような表記が良いと思ったのですがどうですか。

@ochaochaocha3
今後@, #で統一するのが良さそうと思いますが意見あったらお願いします

Ref. #175

@ysakasin ysakasin added the new dicebot 新システムの対応 label May 21, 2020
@ochaochaocha3
Copy link
Member

@ysakasin 私も @# での統一が良いと思います。

@h-mikisato
Copy link
Contributor Author

承知しました。該当の構文に書き換えます。

@h-mikisato
Copy link
Contributor Author

すみません、PR出した後にいくつか修正点が見つかってしまったので修正しました。

@h-mikisato
Copy link
Contributor Author

h-mikisato commented May 21, 2020

コマンドの表記について1点ご相談させていただきたいのですが、
実はルールブックにおけるデータでは、「F値→C値」の順番で記述されていまして、この順番どおりにダイスコマンドを表記するようにした方がユーザフレンドリーではないかと考えました。
つまり、 SB#3@8<=80 といった形式です。
こちら、他のシステムの表記との互換性という面で問題ありませんでしょうか。

@ysakasin
Copy link
Member

@h-mikisato

実はルールブックにおけるデータでは、「F値→C値」の順番で記述されていまして、この順番どおりにダイスコマンドを表記するようにした方がユーザフレンドリーではないかと考えました。

良いと思います。

ただ、今回のコマンド形式は汎用的に使えるので、共通のコマンド読み込みの仕組みを作って、@ #は前後しても問題ないようにするつもりです。この際、@だけや#だけもサポートします。

@ysakasin
Copy link
Member

ysakasin commented May 21, 2020

ダイスロールについてですが、スワップ無しの時には1D100を1回、スワップありの時には1D10を2回振るようにすると良いと思ったのですがどうですか。

こうすると、オンセツール側でダイスの表示をする時に区別することができます。
たとえば入れ替えない場合 90 と 8 で98、入れ替えの場合 9 と 8 で89というような表示になります。

ルールブックの書き方によるとは思いますが、どのように書いてありますか?
「1d100を振って入れ替える」などと書いてある場合には現状で良いとは思います。

@h-mikisato
Copy link
Contributor Author

良いと思います。
ただ、今回のコマンド形式は汎用的に使えるので、共通のコマンド読み込みの仕組みを作って、@ #は前後しても問題ないようにするつもりです。この際、@だけや#だけもサポートします。

ありがとうございます。今回は一旦入れ替えてから再度Pushいたします。

ダイスロールについてですが、スワップ無しの時には1D100を1回、スワップありの時には1D10を2回振るようにすると良いと思ったのですがどうですか。

確かにルールブックには10面体を2個、と書かれているため、そちらの方の処理で書き直します。

@ochaochaocha3
Copy link
Member

ありがとうございます。上で私がコメントいたしました箇所については、大丈夫です!

@h-mikisato
Copy link
Contributor Author

h-mikisato commented May 22, 2020

すみません、一度レビューをOK頂いてから大変申し訳ないのですが、=を含まない不等号の対応を追加いたします。
こちら、対抗ロールにおいて、能動側が有利なシステムであるため、受動側が判定の目標を設定するにあたり、等号なしの不等号を実装する必要がありました。見落しており申し訳ありません。

input:
SBS#3@8<23 roll 23
output:
SamsaraBallad : (D100<23) > 2,3 > 23 > 失敗
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F値が3なので、ファンブルだと思うのですが、比較演算子が<の時にはこういう処理なのでしょうか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

はい。細かい仕様の話をしますと、F値C値を参照するのは「攻撃の能動判定」を行う場合で、これの判定の成否を確認するパターンは以下のようになっています

・ [失敗] → 攻撃の処理は終了
・ [成功] → 「ダメージ算出」に進む
・ 出目の1の位がC値以上で[成功] → [クリティカル]で「ダメージ算出」に進む
・ 出目の1の位がF値以下で[成功] → [ファンブル]で「ダメージ算出」に進む

比較演算子が < の場合は同値は失敗であることと、判定が失敗の場合はそもそもF値C値を参照することなく「判定に失敗」の扱いとなりますので、このような仕様になっています。

Copy link
Member

@ysakasin ysakasin May 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

能動判定 <= ではクリティカルとファンブルがあり、
対抗判定 < ではクリティカルとファンブルがない、
ということですね?

対抗判定について、ヘルプメッセージで全く言及されていないので、追記をお願いします。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ヘルプメッセージの漏れに関して申し訳ありません。追記しておきました。

また、(能動判定の場合にも)ファンブルと失敗では失敗の方が優先されるというテストケースが漏れていたので追記しておきました。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

勘違いしていたのですが、 <= の条件を満たす時に、クリティカルかファンブルかをチェックし、クリティカルでもファンブルでもないなら成功なんですね。わかりました、げんじょうで 大丈夫そうです

Copy link
Member

@ysakasin ysakasin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

よさそう!

@ysakasin ysakasin merged commit 1d33af4 into bcdice:master May 25, 2020
ysakasin pushed a commit that referenced this pull request Aug 30, 2020
* サンサーラ・バラッドのダイスボット追加

* レビュー反映: C値、F値の表記を他システムに合わせる

* メッセージ変更忘れ

* ソートキー修正

* F値のコーナーケース修正

* 通常ロールの処理にミスがあったので修正

* C値とF値のコマンド順序入れ替え、スワップロール時に1d10を2回使うように変更

* メッセージ修正

* メッセージの記述を1d100 -> D100としてルールブックに合わせる

* F値、C値、Swapフラグはインスタンス変数ではなくメソッドの引数に

* 正規表現によるパースを一度で全部処理する

* 等号を含まない不等号の対応

* 受動判定(同値が失敗)についてのヘルプメッセージを追記

* 失敗とファンブルでは失敗が優先となるテストケースを追加
@h-mikisato h-mikisato deleted the feature/add-samsara branch February 23, 2021 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new dicebot 新システムの対応
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants