bcdice 3.8.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d8674329cd5ca8a6efb98b170e0e3ddb5bb4a3fe527ee92fa0e3f1fefffa470
4
- data.tar.gz: 0abbe4f8973133644242a2b337138bd9297b4754dfe3be33046760836d90b4b3
3
+ metadata.gz: c6faf3616617f8dc79b147cd5d93341a8538d1aafac34809b349dafb599f3d64
4
+ data.tar.gz: a5a01580edebb96d05325a26eedcd0828549920bc96335e36161016cd0440dce
5
5
  SHA512:
6
- metadata.gz: 68c14cfcd28b29d424d37d65ae9e00e09fc3d6da8280df7f190fb18c674b838f9cbf8053f6b94e1f3540c5c981985d0d33d0466362caacbd5a253712f7dc0461
7
- data.tar.gz: 7acf5a2bb802bfffa9338a5a6a06f6070d27fcb5e62ce9d0ad51df987fae2ac818cb4acb5aba6c467f2872bf7419bc7c242a66dba08006014eddca60e9604738
6
+ metadata.gz: 2521e3a500b0a0d5f4144dfce4bdbc6b214353481af1b2a0b3ea3e24de957ca9be8bf7816cfedf6c58b22ec61a523bce912acb086273c2d8c0d3417cee61d314
7
+ data.tar.gz: 4bc0186552baaa10cd0c4d7d87b23f7573c3eddfcb8000be5a79ed8ffee859d0776940c5397e24755a14ec6f1b1ee3087de5a83a4a2c1060398f4739a5776a31
data/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.10.0 2023/07/15
4
+
5
+ ### 対応ゲームシステムの追加
6
+ - 英雄の尺度 (HeroScale): モグさんありがとうっ! ([#613](https://github.com/bcdice/BCDice/pull/613))
7
+ - Ventangle (Ventangle): 三木里 秀予さんありがとうっ! ([#626](https://github.com/bcdice/BCDice/pull/626))
8
+
9
+ ### 追加機能
10
+ - Vampire:The Masquerade5th: Hungerダイスを内数指定できるコマンドを追加。フレッド緑野さんありがとうっ! ([#615](https://github.com/bcdice/BCDice/pull/615))
11
+ - モノトーンミュージアムRPG: 目標値 `?` に対応。えいむさんありがとうっ! ([#617](https://github.com/bcdice/BCDice/pull/617))
12
+ - シノビガミ: ヘルプメッセージを修正 ([#618](https://github.com/bcdice/BCDice/pull/618))
13
+ - シノビガミ: 表を多数追加。NiSLaさんありがとうっ! ([#625](https://github.com/bcdice/BCDice/pull/625))
14
+ - 獸ノ森: 「嚙神ノ宴」の表を追加。ゆいこさんありがとうっ! ([#629](https://github.com/bcdice/BCDice/pull/629))
15
+ - SRSじゃない世界樹の迷宮TRPG: 判定の成否を表示するよう変更。ゆいこさんありがとうっ! ([#630](https://github.com/bcdice/BCDice/pull/630))
16
+
17
+ ### 変更
18
+ - SRSじゃない世界樹の迷宮TRPG: 各種表記を公式ルールの用語に合わせて変更。ゆいこさんありがとうっ! ([#630](https://github.com/bcdice/BCDice/pull/630))
19
+
20
+ ### 誤植修正
21
+ - シノビガミ: ヘルプメッセージを修正 ([#618](https://github.com/bcdice/BCDice/pull/618))
22
+ - エモクロアTRPG: ヘルプメッセージを修正。電気魚さんありがとうっ! ([#622](https://github.com/bcdice/BCDice/pull/622))
23
+
24
+ ### バグ修正
25
+ - シノビガミ: 異形表を修正。クキソージさんありがとうっ! ([#621](https://github.com/bcdice/BCDice/pull/621))
26
+
27
+ ## 3.9.0 2023/03/25
28
+
29
+ ### 対応ゲームシステムの追加
30
+ - 天下繚乱 (TenkaRyouran): 三木里 秀予さんありがとうっ! ([#604](https://github.com/bcdice/BCDice/pull/604))
31
+ - ワールドエンドフロントライン (WorldsEndFrontline): ([#611](https://github.com/bcdice/BCDice/pull/611))
32
+
33
+ ### 追加機能
34
+ - 初音ミクTRPG: 表をいくつか追加。カルメヤキさんありがとうっ! ([#602](https://github.com/bcdice/BCDice/pull/602))
35
+ - スタンダードRPGシステム系: クリティカルを `@` で、ファンブルを `#` で指定できるように。三木里 秀予さんありがとうっ! ([#605](https://github.com/bcdice/BCDice/pull/605))
36
+ - シノビガミ: 表を多数追加。NiSLaさん、hetaregirl1802さん、三木里 秀予さんありがとうっ! ([#608](https://github.com/bcdice/BCDice/pull/608))
37
+ - ダンジョンズ&ドラゴンズ第5版: 両手持ちのダメージ算出コマンドを追加。Facelessさんありがとうっ! ([#612](https://github.com/bcdice/BCDice/pull/612))
38
+ - ダンジョンズ&ドラゴンズ第5版: 攻撃ロールでクリティカル値を指定できるように。Facelessさんありがとうっ! ([#612](https://github.com/bcdice/BCDice/pull/612))
39
+
40
+ ### 変更
41
+ - シノビガミ: 変調表と戦場表の内容を改訂版に変更。NiSLaさんありがとうっ! ([#608](https://github.com/bcdice/BCDice/pull/608))
42
+
43
+ ### 誤植修正
44
+ - 歯車の塔の探空士(冒険企画局): 航行イベント表 困難系の誤植を修正。おさむさんありがとうっ! ([#607](https://github.com/bcdice/BCDice/pull/607))
45
+ - サイバーパンクRED: 判定コマンドに対するヘルプメッセージの誤りを修正。 ([#609](https://github.com/bcdice/BCDice/pull/609))
46
+
47
+ ### バグ修正
48
+ - ブラドリウム: ダイスチェックで二桁以上のダイス数を指定できない問題を修正。ゆずあずさん指摘ありがとうっ! ([#606](https://github.com/bcdice/BCDice/pull/606))
49
+
3
50
  ## 3.8.0 2023/02/18
4
51
 
5
52
  ### 対応ゲームシステムの追加
@@ -13,7 +60,7 @@
13
60
 
14
61
  ### 追加機能
15
62
  - ワールド・オブ・ダークネス: 振り足しの1で成功数の打ち消しが発生するコマンド(STB)を追加。フレッド緑野さんありがとうっ! ([#571](https://github.com/bcdice/BCDice/pull/571))
16
- - トーグ エタニティ: 高揚コマンドで修正値指定が出来るように拡張。Facelessさんありがとうっ! ([#577](https://github.com/bcdice/BCDice/pull/577))
63
+ - トーグ エタニティ: 高揚コマンドで修正値指定が出来るように拡張。Facelessさんありがとうっ! ([#580](https://github.com/bcdice/BCDice/pull/580))
17
64
  - Vampire: The Masquerade 5th Edition: 判定コマンドの難易度省略時に判定結果のヒント出力を追加。フレッド緑野さんありがとうっ! ([#581](https://github.com/bcdice/BCDice/pull/581))
18
65
  - Vampire: The Masquerade 5th Edition: 難易度指定時に成功差分を表示する機能を追加。フレッド緑野さんありがとうっ! ([#591](https://github.com/bcdice/BCDice/pull/591))
19
66
  - 歯車の塔の探空士(冒険企画局): 航行イベント表を追加。前田さんありがとうっ! ([#601](https://github.com/bcdice/BCDice/pull/601))
@@ -22,7 +69,7 @@
22
69
  - シノビガミ: ファンブル表の内容を改訂版に変更。 ([#588](https://github.com/bcdice/BCDice/pull/588))
23
70
 
24
71
  ### 誤植修正
25
- - フタリソウサ: ヘルプメッセージにイベント表の記載漏れを追記。あまねさんありがとうっ! ([#580](https://github.com/bcdice/BCDice/pull/580))
72
+ - フタリソウサ: ヘルプメッセージにイベント表の記載漏れを追記。あまねさんありがとうっ! ([#579](https://github.com/bcdice/BCDice/pull/579))
26
73
  - ウォーハンマーRPG第4版: SLの誤植を修正。Facelessさんありがとうっ! ([#585](https://github.com/bcdice/BCDice/pull/585))
27
74
  - シノビガミ: 怪変調表の誤植を修正。なす車さんありがとうっ! ([#600](https://github.com/bcdice/BCDice/pull/600))
28
75
 
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Gem Version](https://badge.fury.io/rb/bcdice.svg)](https://badge.fury.io/rb/bcdice)
5
5
  [![YARD](https://img.shields.io/badge/yard-docs-blue.svg)](https://yard.bcdice.org/)
6
6
  [![codecov](https://codecov.io/gh/bcdice/BCDice/branch/master/graph/badge.svg)](https://codecov.io/gh/bcdice/BCDice)
7
- [![Maintainability](https://api.codeclimate.com/v1/badges/15261694a7d758c4309f/maintainability)](https://codeclimate.com/github/bcdice/BCDice/maintainability)
8
7
  [![Discord](https://img.shields.io/discord/597133335243784192.svg?color=7289DA&logo=discord&logoColor=fff)][invite discord]
9
8
 
10
9
  様々なTRPGシステムの判定に対応したオンセツール用ダイスコマンドエンジン
@@ -20,7 +20,7 @@ module BCDice
20
20
   y: 結果への修正値 (省略可)
21
21
  INFO_MESSAGE_TEXT
22
22
 
23
- register_prefix('\dDC')
23
+ register_prefix('\d+DC')
24
24
 
25
25
  def eval_game_system_specific_command(command)
26
26
  dicecheck(command)
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BCDice
2
4
  module GameSystem
3
5
  class CastleInGray < Base
4
6
  # ゲームシステムの識別子
5
- ID = "CastleInGray".freeze
7
+ ID = "CastleInGray"
6
8
 
7
9
  # ゲームシステム名
8
- NAME = "灰色城綺譚".freeze
10
+ NAME = "灰色城綺譚"
9
11
 
10
12
  # ゲームシステム名の読みがな
11
- SORT_KEY = "はいいろしようきたん".freeze
13
+ SORT_KEY = "はいいろしようきたん"
12
14
 
13
- HELP_MESSAGE = <<~TEXT.freeze
15
+ HELP_MESSAGE = <<~TEXT
14
16
  ■ 色占い (BnWm)
15
17
  n: 黒
16
18
  m: 白
@@ -16,9 +16,9 @@ module BCDice
16
16
 
17
17
  # ダイスボットの使い方
18
18
  HELP_MESSAGE = <<~HELP
19
- ・判定 CPx+y>=z
19
+ ・判定 CPx+y>z
20
20
   (x=能力値と技能値の合計、y=修正値、z=難易度 or 受動側 x、y、zは省略可)
21
-  例)CP12 CP10+2>=12 CP7-1 CP8+4 CP7>=12 CP CP>=9
21
+  例)CP12 CP10+2>12 CP7-1 CP8+4 CP7>12 CP CP>9
22
22
 
23
23
  各種表
24
24
  ・致命的損傷表
@@ -14,20 +14,26 @@ module BCDice
14
14
 
15
15
  # ダイスボットの使い方
16
16
  HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
- ・攻撃ロール AT[x][>=t][y]
17
+ ・攻撃ロール AT[x][@c][>=t][y]
18
18
   x:+-修正。省略可。
19
-  y:有利(A), 不利(D)。省略可。
19
+  c:クリティカル値。省略可。
20
20
   t:敵のアーマークラス。>=を含めて省略可。
21
+  y:有利(A), 不利(D)。省略可。
21
22
   ファンブル/失敗/成功/クリティカル を自動判定。
22
23
   例)AT AT>=10 AT+5>=18 AT-3>=16 ATA AT>=10A AT+3>=18A AT-3>=16 ATD AT>=10D AT+5>=18D AT-5>=16D
23
-
24
+   AT@19 AT+5@18 AT-2@19>=15
24
25
  ・能力値判定 AR[x][>=t][y]
25
26
   攻撃ロールと同様。失敗/成功を自動判定。
26
27
   例)AR AR>=10 AR+5>=18 AR-3>=16 ARA AR>=10A AR+3>=18A AR-3>=16 ARD AR>=10D AR+5>=18D AR-5>=16D
27
-
28
+ ・両手持ちのダメージ 2HnDx[m]
29
+  n:ダイスの個数
30
+  x:ダイスの面数
31
+  m:+-修正。省略可。
32
+  パラディンとファイターの武器の両手持ちによるダメージダイスの1,2の出目の振り直しを行います。
33
+  例)2H3D6 2H1D10+3 2H2D8-1
28
34
  INFO_MESSAGE_TEXT
29
35
 
30
- register_prefix('AT([+-]\d+)?(>=\d+)?[AD]?', 'AR([+-]\d+)?(>=\d+)?[AD]?')
36
+ register_prefix('AT([+-]\d+)?(@\d+)?(>=\d+)?[AD]?', 'AR([+-]\d+)?(>=\d+)?[AD]?', '2H(\d+)D(\d+)([+-]\d+)?')
31
37
 
32
38
  def initialize(command)
33
39
  super(command)
@@ -36,7 +42,7 @@ module BCDice
36
42
  end
37
43
 
38
44
  def eval_game_system_specific_command(command)
39
- attack_roll(command) || ability_roll(command)
45
+ attack_roll(command) || ability_roll(command) || twohands_damage_roll(command)
40
46
  end
41
47
 
42
48
  def number_with_sign_from_int(number)
@@ -49,20 +55,27 @@ module BCDice
49
55
  end
50
56
  end
51
57
 
58
+ # 攻撃ロール
52
59
  def attack_roll(command)
53
- m = /^AT([-+]\d+)?(>=(\d+))?([AD]?)/.match(command)
60
+ m = /^AT([-+]\d+)?(@(\d+))?(>=(\d+))?([AD]?)/.match(command)
54
61
  unless m
55
62
  return nil
56
63
  end
57
64
 
58
65
  modify = m[1].to_i
59
- difficulty = m[3].to_i
60
- advantage = m[4]
66
+ critical_no = m[3].to_i
67
+ difficulty = m[5].to_i
68
+ advantage = m[6]
61
69
 
62
70
  usedie = 0
63
71
  roll_die = ""
64
72
 
65
73
  dice_command = "AT#{number_with_sign_from_int(modify)}"
74
+ if critical_no > 0
75
+ dice_command += "@#{critical_no}"
76
+ else
77
+ critical_no = 20
78
+ end
66
79
  if difficulty > 0
67
80
  dice_command += ">=#{difficulty}"
68
81
  end
@@ -96,7 +109,7 @@ module BCDice
96
109
  end
97
110
 
98
111
  result = Result.new
99
- if usedie == 20
112
+ if usedie >= critical_no
100
113
  result.critical = true
101
114
  result.success = true
102
115
  output.push("クリティカル")
@@ -124,6 +137,7 @@ module BCDice
124
137
  end
125
138
  end
126
139
 
140
+ # 能力値ロール
127
141
  def ability_roll(command)
128
142
  m = /^AR([-+]\d+)?(>=(\d+))?([AD]?)/.match(command)
129
143
  unless m
@@ -191,6 +205,46 @@ module BCDice
191
205
  end
192
206
  end
193
207
  end
208
+
209
+ # 武器の両手持ちダメージ
210
+ def twohands_damage_roll(command)
211
+ m = /^2H(\d+)D(\d+)([+-]\d+)?/.match(command)
212
+ unless m
213
+ return nil
214
+ end
215
+
216
+ dice_count = m[1].to_i
217
+ dice_number = m[2].to_i
218
+ modify = m[3].to_i
219
+ mod_str = number_with_sign_from_int(modify)
220
+ output = ["(2H#{dice_count}D#{dice_number}#{mod_str})"]
221
+
222
+ dice = @randomizer.roll_barabara(dice_count, dice_number)
223
+ roll_dice = "[" + dice.join(",") + "]"
224
+ output.push("#{roll_dice}#{mod_str}")
225
+
226
+ ex_dice = []
227
+ new_dice = []
228
+ sum_dice = 0
229
+ dice.each do |num|
230
+ if num.to_i > 2
231
+ sum_dice += num.to_i
232
+ ex_dice.push(num)
233
+ else
234
+ one_die = @randomizer.roll_once(dice_number)
235
+ sum_dice += one_die.to_i
236
+ new_dice.push(one_die)
237
+ end
238
+ end
239
+ unless new_dice.empty?
240
+ output.push("[" + ex_dice.join(",") + "][" + new_dice.join(",") + "]#{mod_str}")
241
+ end
242
+ output.push((sum_dice + modify).to_s)
243
+
244
+ Result.new.tap do |r|
245
+ r.text = output.join(" > ")
246
+ end
247
+ end
194
248
  end
195
249
  end
196
250
  end
@@ -22,10 +22,10 @@ module BCDice
22
22
  ダイスの個数は省略可能で、省略した場合1個になります。
23
23
  例)2DM<=5 DM<=8
24
24
  ・技能値判定(sDAa+z)
25
- "(技能レベル)DA(能力値)+(ボーナスダイス)"で指定します。
26
- ボーナスダイスの個数は省略可能で、省略した場合0になります。
25
+ "(技能レベル)DA(能力値)+(ダイスボーナス)"で指定します。
26
+ ダイスボーナスの個数は省略可能で、省略した場合0になります。
27
27
  技能レベルは1~3の数値、またはベース技能の場合"b"が入ります。
28
- ダイスの個数は技能レベルとボーナスダイスの個数により決定し、s+z個のダイスを振ります。(s="b"の場合はs=1)
28
+ ダイスの個数は技能レベルとダイスボーナスの個数により決定し、s+z個のダイスを振ります。(s="b"の場合はs=1)
29
29
  判定値はs+aとなります。(s="b"の場合はs=0)
30
30
  MESSAGETEXT
31
31
 
@@ -27,7 +27,7 @@ module BCDice
27
27
    ネイロに5(白)を取得した場合 3:失敗
28
28
  ・各種表
29
29
   ファンブル表 FT/致命傷表 CWT/休憩表 BT/目標表 TT/関係表 RT
30
-  障害表 OT/リクエスト表 RQT/情景表 ST
30
+  障害表 OT/リクエスト表 RQT/クロウル表 CLT/報酬表 RWT/悪夢表 NMT/情景表 ST
31
31
  ・キーワード表
32
32
   ダーク DKT/ホット HKT/ラブ LKT/エキセントリック EKT/メランコリー MKT
33
33
  ・名前表 NT
@@ -229,6 +229,47 @@ module BCDice
229
229
  "あなたの目の前に、あなたの死体が横たわっている。「お前を殺すものは何だ?お前は誰に殺される?」"
230
230
  ]
231
231
  ),
232
+ "CLT" => DiceTable::Table.new(
233
+ "クロウル表",
234
+ "2D6",
235
+ [
236
+ "パスワードが抜き取られていた! 所持金が無くなっている! 自分のコインを3枚失う。",
237
+ "過去に同様のオトクイと出会ったことのある人物に出会う。【技術】で判定を行う。成功すると、「特殊アプリの開発」を行うことができる(この間奏アクションには【タイム】は必要ない)。必要なコインは1枚少なくなる。",
238
+ "近所にあるパワースポットを教えてもらう。【霊力】で判定を行う。成功すると、自分の【生命力】を【活力】の値だけ回復することができる。",
239
+ "あなたのことを知る人物に出会う。どんな思い出話をしたのだろうか? この質問はリクエストとして扱う。",
240
+ "プライベートの友人からメールが届いている。【愛】で判定を行う。成功すると、好きなNPCを協力者として設定することができる。判定に失敗すると苦情のメールだった。ストレスを1点受ける。",
241
+ "ノイズメンバーから応援のメッセージをもらう。好きなネイロを1つ獲得する(この効果で。特定のネイロを7個以上にすることはできない)。",
242
+ "美味しい食べ物屋さんに関する情報を教えてもらう。【日常】で判定を行う。成功すると、自分のストレスを1点回復できる。",
243
+ "オトクイに関する情報を求めているノイズメンバーに出会う。公開されている脅威1つにつき、その情報をコイン1枚で売却できる。このイベントが2度以上起きた場合、すでに売却した脅威の情報を再び売ることはできない。",
244
+ "試作アプリの試験者を募集している。好きなアプリ1つを獲得する。ただし、このアプリを使用するときサイコロを1個振ること。1か2が出ると、そのアプリは効果を発揮しない。セッション中に、試作アプリを使用しているとセッション終了時にレポートを提出できる。【頭脳】で判定を行う。成功すると、コインを1枚獲得できる。",
245
+ "自分に関する悪口を見つける。そこには、どんな悪口が書かれていたのだろうか。 この質問は、リクエストとして扱う。",
246
+ "同じ種類のオトダマと契約しているオトダマ使いと意気投合。このセッションの間、自分のナンバー1つを、修得可能な別のナンバーに変更することができる。",
247
+ ]
248
+ ),
249
+ "RWT" => DiceTable::Table.new(
250
+ "報酬表",
251
+ "1D6",
252
+ [
253
+ "ノイズからオトクイ退治の報酬をもらうことができる。[倒したオトクイの本体のレベル]枚のコインを獲得する。",
254
+ "ノイズにオトダマの情報を売ることができる。[自分の【頭脳】のダイスの数]枚のコインを獲得する。",
255
+ "冒険を通じて因縁が芽生える。今回登場したキャラクターの中から一人を選ぶ。そのキャラクターを、自分の【想い人】にする。",
256
+ "冒険を通じて絆が結ばれる。今回登場したNPCの中から一人を選ぶ。そのキャラクターを、自分の【協力者】にする。",
257
+ "冒険の思い出が【ウタの欠片】になる。今回の冒険に登場した仲間、情景、出来事などなどから、キーワードを一つ選ぶ。そのキーワードを【ウタの欠片】のキーワード欄に追加する。",
258
+ "戦いの経験が【ウタの欠片】になる。今回の冒険に登場した敵、情景、出来事などなどから、キーワードを一つ選ぶ。そのキーワードを【ウタの欠片】のキーワード欄に追加する。",
259
+ ]
260
+ ),
261
+ "NMT" => DiceTable::Table.new(
262
+ "悪夢表",
263
+ "1D6",
264
+ [
265
+ "絶望のウタに知覚を遮断される。背後にオトクイの気配を感じたと思ったときは遅かった。卑劣な攻撃があなたを襲う。好きな能力値で判定を行う。失敗するとあなたのキャラクターは、オトナシとなり、二度と冒険に参加できない。",
266
+ "絶望のウタに混じり、悲痛な叫びが聞こえてくる。ココロダンジョンの持ち主だろうか。あなたは、救えなかったのだ。【日常】で判定を行う。失敗すると、自分の能力値一つを選ぶ。次回のセッションは、その能力値にストレスを受けた状態で始まる。",
267
+ "絶望のウタに混じり、オトクイの笑いがこだまする。それは嘲りの笑いだった。オトクイや仲間たち……何より自分への怒りがわき上がる。【日常】で判定を行う。失敗すると、自分の想い人への【想い】を一つ失う。",
268
+ "絶望のウタの中に一人取り残される。誰もあなたに気づかない。孤独に耐えながら、何とか日常へ帰還したが……そのときの恐怖がぬぐえない。【日常】で判定を行う。失敗すると、次回のセッションは、自分の【生命力】の現在値が通常の半分(端数切り上げ)の状態で始まる。",
269
+ "ココロダンジョンから帰還したあなたを待っていたのは、代わり映えのない日常だった。あなたが任務に失敗しても、世界は変わらない。なら、もう、あんな怖い目をする必要はないんじゃないか? 【日常】で判定を行う。失敗すると、自分のナンバー一つを選ぶ。次回のセッションは、そのナンバーにストレスを受けた状態で始まる。",
270
+ "絶望のウタの中を必死で逃げ出した。背後から仲間の声が聞こえた気がする。しかし、あなたは振り返ることができなかった。【日常】で判定を行う。失敗すると、自分に対して【想い】を持っているPC一人を選び、その自分に対する【想い】が失われる。",
271
+ ]
272
+ ),
232
273
  "ST" => DiceTable::D66Table.new(
233
274
  "情景表",
234
275
  D66SortType::ASC,