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

RuneQuest:Roleplaying in Gloranthaのダイスボット作成 #637

Merged
merged 3 commits into from
Aug 6, 2023

Conversation

FredGreenfield
Copy link
Contributor

1.背景

 ルーンクエストの新版であるRuneQuest: Roleplaying in Glorantha(以下、RQG)日本語版の2023年秋発売を受け、当該システムのダイスボットを作成する。
 https://ci-en.net/creator/11464/article/798357
 先行して「ルーンクエスト」ダイスボットが存在するが、このダイスボットは旧システムを対象にしており、非推奨のxDyの動作を修正するスタイルとなっていることから、RQG用に新規作成するものとする。


2.方針

  •  用語について
      日本語版が発売されていないため、用語はクイックスタート日本語版を参照する。
      https://www.chaosium.com/runequest-roleplaying-in-glorantha-quickstart/
      RQG日本語版が発売されたときに、採用した用語と異なる場合は可能な限り速やかに修正を行う事とする。
  •  コマンド書式について
      同種の処理はクトゥルフ神話TRPGダイスボットの書式を参考にする。

3.ダイスボット名

 日本語版ユーザが発見しやすく、馴染みやすいようにカタカナ日本語の「ルーンクエスト:ロールプレイング イン グローランサ」とする。「2.方針」の用語ルールに従い、RQG日本語版発売後に異なる名称だった時は変更を行う。
 RQGはケイオシアム社公式で4版となっているため、命名ルールに従った読み仮名は「るうんくえすと4」とする。今後、RuneQuestの4版と呼ばれる別システムが出版され、ダイスボットを作成する際は、新たに作成されるダイスボットの方で対応されたい。


4.コマンド

  •  技能判定コマンド
      RQG<=xx
      ⇒ 結果表示例:RQG<=55
      (1D100<=55) > 01 > クリティカル/スペシャル
      (1D100<=55) > 11 > スペシャル
      (1D100<=55) > 55 > 成功
      (1D100<=55) > 89 > 失敗
      (1D100<=55) > 00 > ファンブル

 上記のコマンドで1d100の結果を技能値(xx)と比較、判定する。
 結果はクリティカル(1あるいは技能の1/20以下)、スペシャル(技能の1/5以下)、成功(01-05あるいは技能以下)、失敗(96-00あるいは、技能を上回る)、ファンブル(00あるいは00-失敗確率の1/20以上)の5種類。各計算はRQGルールブック p143,Ability Results Tableの通りとなる。端数は四捨五入。
 ただし、技能値0はStarter Set,Book1,p5において成功確率がないと記述されているため、xxに0が指定された場合は必ず失敗の判定を返す。

  RQG
  ⇒ 結果表示例:RQG
  (1D100) > 19

 クトゥルフ神話TRPGダイスボットと同じように1d100のエイリアスとして機能する。

  •  抵抗判定コマンド
      抵抗判定(RESistance roll)RQG, p145
      RES(x-y)Mz
      ⇒ 結果表示例:RES(10-10)M5
      (1D100<=55) > 01 > クリティカル/スペシャル
      (1D100<=55) > 11 > スペシャル
      (1D100<=55) > 55 > 成功
      (1D100<=55) > 89 > 失敗
      (1D100<=55) > 00 > ファンブル

 クトゥルフ神話TRPGと同じ書式の上記のコマンドで、能力値xで対抗する能力値yとの差分x5%+50%を1d100判定を行う(参考:RQG Resistance Table p147)。判定の結果は、RQGコマンドと同じとする。xのみを指定した場合は差分計算後として処理する。zは省略可能で、増強などにより直接成功率に影響する修正(%単位)を指定する(参考:RQG p146)。

  •  能動側抵抗判定コマンド(ReSistance Active characteristic roll)RQG, p145
      RSAxMz
      ⇒ 結果表示例:RSA(10)M5
      (1D100<=55) > 01 > 成功
    クリティカル/スペシャル、ファンブルは未処理。必要なら確認すること。
      (1D100<=55) > 02 > 成功
    クリティカル/スペシャル、ファンブルは未処理。必要なら確認すること。
      (1D100<=55) > 55 > 成功 > 相手側能力値10まで成功
    クリティカル/スペシャル、ファンブルは未処理。必要なら確認すること。
      (1D100<=55) > 99 > 失敗
    クリティカル/スペシャル、ファンブルは未処理。必要なら確認すること。
      (1D100<=55) > 00 > 失敗
    クリティカル/スペシャル、ファンブルは未処理。必要なら確認すること。

 クトゥルフ神話TRPGには無いコマンド。受動側の能力値が不明の時などのために、能動側の能力値のみで判定し、いくつの受動側能力値まで成功できるかを表示する。判定の結果にはクリティカル/スペシャル、ファンブルは判定しない。zは省略可能で、増強などにより直接成功率に影響する修正(%単位)を指定する(参考:RQG p146)。
 判定結果は対抗相手の能力に対してどの値まで成功なのかを表記する。ただし、01-05は無条件成功、96-00は無条件失敗となる。

@codecov
Copy link

codecov bot commented Aug 5, 2023

Codecov Report

Patch coverage: 91.78% and project coverage change: -0.01% ⚠️

Comparison is base (adb0727) 95.58% compared to head (a14be31) 95.58%.
Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #637      +/-   ##
==========================================
- Coverage   95.58%   95.58%   -0.01%     
==========================================
  Files         336      337       +1     
  Lines       19302    19416     +114     
  Branches     5023     5067      +44     
==========================================
+ Hits        18450    18558     +108     
- Misses        852      858       +6     
Files Changed Coverage Δ
...ice/game_system/RuneQuestRoleplayingInGlorantha.rb 91.66% <91.66%> (ø)
lib/bcdice/game_system.rb 100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

return "(1D100) > #{roll_value}"
end

ability_value = Arithmetic.eval(m[3], :round)
Copy link
Member

Choose a reason for hiding this comment

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

:round でなく RoundType::ROUND を用いてください。もしくは、 #initialize@round_type を設定しておいて、 @round_type を参照するようにしてください。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

了解しました。

when /RSA/i
return do_resistance_active_characteristic_roll(command)
end
Result.nothing
Copy link
Member

@ysakasin ysakasin Aug 5, 2023

Choose a reason for hiding this comment

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

Result.nothing が返されると汎用コマンドが動作しなくなってしまう可能性があるので、 nil を返すようにしてください。 Result.nothing は基本的にBase#result_2d6 などで使われることを想定しているもので、専用コマンドでは使わないほうが良いです。

Copy link
Contributor Author

Choose a reason for hiding this comment

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

こちらも了解しました。

@ysakasin ysakasin added the new dicebot 新システムの対応 label Aug 5, 2023
@ysakasin ysakasin merged commit c3d292b into bcdice:master Aug 6, 2023
@ysakasin
Copy link
Member

ysakasin commented Aug 6, 2023

@FredGreenfield ありがとうございます! マージしました。

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.

2 participants