bcdice 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/i18n/BeginningIdol/ja_jp.yml +2806 -0
  4. data/i18n/BeginningIdol/ko_kr.yml +1400 -0
  5. data/i18n/KillDeathBusiness/ja_jp.yml +1 -1
  6. data/i18n/MagicaLogia/ja_jp.yml +1 -1
  7. data/i18n/MonotoneMuseum/ko_kr.yml +526 -53
  8. data/lib/bcdice/common_command/choice.rb +5 -1
  9. data/lib/bcdice/common_command/tally_dice/node.rb +135 -0
  10. data/lib/bcdice/common_command/tally_dice/parser.rb +302 -0
  11. data/lib/bcdice/common_command/tally_dice.rb +19 -0
  12. data/lib/bcdice/common_command.rb +2 -0
  13. data/lib/bcdice/dice_table/d66_table.rb +5 -1
  14. data/lib/bcdice/game_system/Aoharubaan.rb +91 -0
  15. data/lib/bcdice/game_system/AssaultEngine.rb +91 -0
  16. data/lib/bcdice/game_system/BadLife.rb +264 -289
  17. data/lib/bcdice/game_system/Bakenokawa.rb +244 -0
  18. data/lib/bcdice/game_system/BeginningIdol.rb +116 -2390
  19. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +10 -2312
  20. data/lib/bcdice/game_system/CastleInGray.rb +133 -0
  21. data/lib/bcdice/game_system/Cthulhu.rb +2 -2
  22. data/lib/bcdice/game_system/Cthulhu7th.rb +6 -6
  23. data/lib/bcdice/game_system/DoubleCross.rb +5 -0
  24. data/lib/bcdice/game_system/Emoklore.rb +1 -1
  25. data/lib/bcdice/game_system/FateCoreSystem.rb +117 -0
  26. data/lib/bcdice/game_system/Karukami.rb +84 -0
  27. data/lib/bcdice/game_system/KurayamiCrying.rb +1 -1
  28. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  29. data/lib/bcdice/game_system/{SterileLife.rb → StellarLife.rb} +162 -226
  30. data/lib/bcdice/game_system/SwordWorld.rb +6 -2
  31. data/lib/bcdice/game_system/SwordWorld2_0.rb +20 -5
  32. data/lib/bcdice/game_system/SwordWorld2_5.rb +6 -0
  33. data/lib/bcdice/game_system/TalesFromTheLoop.rb +83 -0
  34. data/lib/bcdice/game_system/YearZeroEngine.rb +40 -19
  35. data/lib/bcdice/game_system/beginning_idol/accessories_table.rb +31 -0
  36. data/lib/bcdice/game_system/beginning_idol/bad_status_table.rb +43 -0
  37. data/lib/bcdice/game_system/beginning_idol/chain_d66_table.rb +29 -0
  38. data/lib/bcdice/game_system/beginning_idol/chain_table.rb +37 -0
  39. data/lib/bcdice/game_system/beginning_idol/costume_table.rb +37 -0
  40. data/lib/bcdice/game_system/beginning_idol/d6_twice_table.rb +36 -0
  41. data/lib/bcdice/game_system/beginning_idol/item_table.rb +51 -0
  42. data/lib/bcdice/game_system/beginning_idol/my_skill_name_table.rb +44 -0
  43. data/lib/bcdice/game_system/beginning_idol/random_event_table.rb +31 -0
  44. data/lib/bcdice/game_system/beginning_idol/skill_table.rb +63 -0
  45. data/lib/bcdice/game_system/beginning_idol/table.rb +193 -0
  46. data/lib/bcdice/game_system/beginning_idol/with_abnormality.rb +74 -0
  47. data/lib/bcdice/game_system/beginning_idol/work_table.rb +57 -0
  48. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +4 -4
  49. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +46 -3
  50. data/lib/bcdice/game_system/sword_world/rating_parser.rb +147 -106
  51. data/lib/bcdice/game_system.rb +8 -1
  52. data/lib/bcdice/version.rb +1 -1
  53. metadata +28 -3
@@ -44,24 +44,7 @@ module BCDice
44
44
  register_prefix('\d?(BAD|BL|GL)', '[TDGKSB]RN', 'SKL')
45
45
 
46
46
  def eval_game_system_specific_command(command)
47
- command = command.upcase
48
-
49
- result = judgeDice(command)
50
- return result unless result.nil?
51
-
52
- output =
53
- case command
54
-
55
- when /([TDGKSB])RN/i
56
- initials = Regexp.last_match(1)
57
- get_name_table(initials)
58
-
59
- when 'SKL'
60
- get_skill_table
61
-
62
- end
63
-
64
- return output
47
+ judgeDice(command) || roll_tables(command, TABLES)
65
48
  end
66
49
 
67
50
  def judgeDice(command)
@@ -153,283 +136,275 @@ module BCDice
153
136
  return result
154
137
  end
155
138
 
156
- def get_name_table(initials)
157
- case initials
158
- when 'T' # Thief
159
- name = '怪盗コードネーム表'
160
- table = [
161
- [1, 'フォックス'],
162
- [2, 'フォックス'],
163
- [3, 'ラット'],
164
- [4, 'ラット'],
165
- [5, 'キャット'],
166
- [6, 'キャット'],
167
- [7, 'タイガー'],
168
- [8, 'タイガー'],
169
- [9, 'シャーク'],
170
- [10, 'シャーク'],
171
- [11, 'コンドル'],
172
- [12, 'コンドル'],
173
- [13, 'スパイダー'],
174
- [14, 'スパイダー'],
175
- [15, 'ウルフ'],
176
- [16, 'ウルフ'],
177
- [17, 'コヨーテ'],
178
- [18, 'コヨーテ'],
179
- [19, 'ジャガー'],
180
- [20, 'ジャガー']
139
+ def get_value(text)
140
+ text ||= ""
141
+ return ArithmeticEvaluator.eval(text)
142
+ end
143
+
144
+ TABLES = {
145
+ "SKL" => DiceTable::Table.new(
146
+ "スキル表",
147
+ "1D100",
148
+ [
149
+ "一撃離脱",
150
+ "一撃離脱",
151
+ "チェイサー",
152
+ "チェイサー",
153
+ "影の外套",
154
+ "影の外套",
155
+ "二段ジャンプ",
156
+ "二段ジャンプ",
157
+ "韋駄天",
158
+ "韋駄天",
159
+ "手練",
160
+ "手練",
161
+ "ハニーテイスト",
162
+ "ハニーテイスト",
163
+ "先見の明",
164
+ "先見の明",
165
+ "ベテラン",
166
+ "ベテラン",
167
+ "応急手当",
168
+ "応急手当",
169
+ "セラピー",
170
+ "セラピー",
171
+ "緊急治療",
172
+ "緊急治療",
173
+ "ゴールドディガー",
174
+ "ゴールドディガー",
175
+ "デイリーミッション",
176
+ "デイリーミッション",
177
+ "見切り",
178
+ "見切り",
179
+ "鷹の目",
180
+ "鷹の目",
181
+ "しびれ罠",
182
+ "しびれ罠",
183
+ "大逆転",
184
+ "大逆転",
185
+ "武器習熟:○○",
186
+ "武器習熟:○○",
187
+ "百発百中",
188
+ "百発百中",
189
+ "屈強な肉体",
190
+ "屈強な肉体",
191
+ "二刀流",
192
+ "二刀流",
193
+ "クイックリカバリー",
194
+ "クイックリカバリー",
195
+ "体験主義",
196
+ "体験主義",
197
+ "破釜沈船",
198
+ "破釜沈船",
199
+ "想定の範囲内",
200
+ "想定の範囲内",
201
+ "セカンドチャンス",
202
+ "セカンドチャンス",
203
+ "優秀な子分",
204
+ "優秀な子分",
205
+ "時間管理術",
206
+ "時間管理術",
207
+ "連撃術",
208
+ "連撃術",
209
+ "罵詈雑言",
210
+ "罵詈雑言",
211
+ "ケセラセラ",
212
+ "ケセラセラ",
213
+ "ダンス&ミュージック",
214
+ "ダンス&ミュージック",
215
+ "フェイント",
216
+ "フェイント",
217
+ "ヘイトコントロール",
218
+ "ヘイトコントロール",
219
+ "惜別",
220
+ "惜別",
221
+ "戦闘マシーン",
222
+ "戦闘マシーン",
223
+ "戦闘マシーン",
224
+ "名医",
225
+ "名医",
226
+ "名医",
227
+ "忍者",
228
+ "忍者",
229
+ "忍者",
230
+ "観察眼",
231
+ "観察眼",
232
+ "観察眼",
233
+ "クレバー",
234
+ "クレバー",
235
+ "クレバー",
236
+ "フェイスマン",
237
+ "フェイスマン",
238
+ "フェイスマン",
239
+ "スポーツマン",
240
+ "スポーツマン",
241
+ "スポーツマン",
242
+ "不屈",
243
+ "不屈",
244
+ "不屈",
245
+ "慎重",
246
+ "慎重",
247
+ "慎重",
248
+ "この表を2回振る",
181
249
  ]
182
- when 'D' # Doctor
183
- name = '闇医者コードネーム表'
184
- table = [
185
- [1, 'キャンサー'],
186
- [2, 'キャンサー'],
187
- [3, 'ヘッドエイク'],
188
- [4, 'ヘッドエイク'],
189
- [5, 'ブラッド'],
190
- [6, 'ブラッド'],
191
- [7, 'ウーンズ'],
192
- [8, 'ウーンズ'],
193
- [9, 'ポイズン'],
194
- [10, 'ポイズン'],
195
- [11, 'ペイン'],
196
- [12, 'ペイン'],
197
- [13, 'スリープ'],
198
- [14, 'スリープ'],
199
- [15, 'キュア'],
200
- [16, 'キュア'],
201
- [17, 'デス'],
202
- [18, 'デス'],
203
- [19, 'リーンカーネイション'],
204
- [20, 'リーンカーネイション']
250
+ ),
251
+ "TRN" => DiceTable::Table.new(
252
+ "怪盗コードネーム表",
253
+ "1D20",
254
+ [
255
+ "フォックス",
256
+ "フォックス",
257
+ "ラット",
258
+ "ラット",
259
+ "キャット",
260
+ "キャット",
261
+ "タイガー",
262
+ "タイガー",
263
+ "シャーク",
264
+ "シャーク",
265
+ "コンドル",
266
+ "コンドル",
267
+ "スパイダー",
268
+ "スパイダー",
269
+ "ウルフ",
270
+ "ウルフ",
271
+ "コヨーテ",
272
+ "コヨーテ",
273
+ "ジャガー",
274
+ "ジャガー",
205
275
  ]
206
- when 'G' # Gambler
207
- name = '博徒コードネーム表'
208
- table = [
209
- [1, 'リトルダイス'],
210
- [2, 'リトルダイス'],
211
- [3, 'プラチナム'],
212
- [4, 'プラチナム'],
213
- [5, 'プレジデント'],
214
- [6, 'プレジデント'],
215
- [7, 'ドリーム'],
216
- [8, 'ドリーム'],
217
- [9, 'アクシデント'],
218
- [10, 'アクシデント'],
219
- [11, 'グリード'],
220
- [12, 'グリード'],
221
- [13, 'フォーチュン'],
222
- [14, 'フォーチュン'],
223
- [15, 'ミラクル'],
224
- [16, 'ミラクル'],
225
- [17, 'ホープ'],
226
- [18, 'ホープ'],
227
- [19, 'ビッグヒット'],
228
- [20, 'ビッグヒット']
276
+ ),
277
+ "DRN" => DiceTable::Table.new(
278
+ "闇医者コードネーム表",
279
+ "1D20",
280
+ [
281
+ "キャンサー",
282
+ "キャンサー",
283
+ "ヘッドエイク",
284
+ "ヘッドエイク",
285
+ "ブラッド",
286
+ "ブラッド",
287
+ "ウーンズ",
288
+ "ウーンズ",
289
+ "ポイズン",
290
+ "ポイズン",
291
+ "ペイン",
292
+ "ペイン",
293
+ "スリープ",
294
+ "スリープ",
295
+ "キュア",
296
+ "キュア",
297
+ "デス",
298
+ "デス",
299
+ "リーンカーネイション",
300
+ "リーンカーネイション",
229
301
  ]
230
- when 'K' # Killer
231
- name = '殺シ屋コードネーム表'
232
- table = [
233
- [1, 'ハンマー'],
234
- [2, 'ハンマー'],
235
- [3, 'アロー'],
236
- [4, 'アロー'],
237
- [5, 'ボマー'],
238
- [6, 'ボマー'],
239
- [7, 'キャノン'],
240
- [8, 'キャノン'],
241
- [9, 'ブレード'],
242
- [10, 'ブレード'],
243
- [11, 'スティング'],
244
- [12, 'スティング'],
245
- [13, 'ガロット'],
246
- [14, 'ガロット'],
247
- [15, 'パイルバンカー'],
248
- [16, 'パイルバンカー'],
249
- [17, 'レイザー'],
250
- [18, 'レイザー'],
251
- [19, 'カタナ'],
252
- [20, 'カタナ']
302
+ ),
303
+ "GRN" => DiceTable::Table.new(
304
+ "博徒コードネーム表",
305
+ "1D20",
306
+ [
307
+ "リトルダイス",
308
+ "リトルダイス",
309
+ "プラチナム",
310
+ "プラチナム",
311
+ "プレジデント",
312
+ "プレジデント",
313
+ "ドリーム",
314
+ "ドリーム",
315
+ "アクシデント",
316
+ "アクシデント",
317
+ "グリード",
318
+ "グリード",
319
+ "フォーチュン",
320
+ "フォーチュン",
321
+ "ミラクル",
322
+ "ミラクル",
323
+ "ホープ",
324
+ "ホープ",
325
+ "ビッグヒット",
326
+ "ビッグヒット",
253
327
  ]
254
- when 'S' # Schemer
255
- name = '業師コードネーム表'
256
- table = [
257
- [1, 'ローズ'],
258
- [2, 'ローズ'],
259
- [3, 'サクラ'],
260
- [4, 'サクラ'],
261
- [5, 'ライラック'],
262
- [6, 'ライラック'],
263
- [7, 'ダンデライオン'],
264
- [8, 'ダンデライオン'],
265
- [9, 'フリージア'],
266
- [10, 'フリージア'],
267
- [11, 'カクタス'],
268
- [12, 'カクタス'],
269
- [13, 'ロータス'],
270
- [14, 'ロータス'],
271
- [15, 'リリィ'],
272
- [16, 'リリィ'],
273
- [17, 'ラフレシア'],
274
- [18, 'ラフレシア'],
275
- [19, 'ヒヤシンス'],
276
- [20, 'ヒヤシンス']
328
+ ),
329
+ "KRN" => DiceTable::Table.new(
330
+ "殺シ屋コードネーム表",
331
+ "1D20",
332
+ [
333
+ "ハンマー",
334
+ "ハンマー",
335
+ "アロー",
336
+ "アロー",
337
+ "ボマー",
338
+ "ボマー",
339
+ "キャノン",
340
+ "キャノン",
341
+ "ブレード",
342
+ "ブレード",
343
+ "スティング",
344
+ "スティング",
345
+ "ガロット",
346
+ "ガロット",
347
+ "パイルバンカー",
348
+ "パイルバンカー",
349
+ "レイザー",
350
+ "レイザー",
351
+ "カタナ",
352
+ "カタナ",
277
353
  ]
278
- when 'B' # Bum
279
- name = '遊ビ人コードネーム表'
280
- table = [
281
- [1, 'モノポリー'],
282
- [2, 'モノポリー'],
283
- [3, 'ブリッジ'],
284
- [4, 'ブリッジ'],
285
- [5, 'チェッカー'],
286
- [6, 'チェッカー'],
287
- [7, 'アクワイア'],
288
- [8, 'アクワイア'],
289
- [9, 'ジャンケン'],
290
- [10, 'ジャンケン'],
291
- [11, 'トランプ'],
292
- [12, 'トランプ'],
293
- [13, 'ケイドロ'],
294
- [14, 'ケイドロ'],
295
- [15, 'パンデミック'],
296
- [16, 'パンデミック'],
297
- [17, 'スゴロク'],
298
- [18, 'スゴロク'],
299
- [19, 'キャベツカンテイ'],
300
- [20, 'キャベツカンテイ']
354
+ ),
355
+ "SRN" => DiceTable::Table.new(
356
+ "業師コードネーム表",
357
+ "1D20",
358
+ [
359
+ "ローズ",
360
+ "ローズ",
361
+ "サクラ",
362
+ "サクラ",
363
+ "ライラック",
364
+ "ライラック",
365
+ "ダンデライオン",
366
+ "ダンデライオン",
367
+ "フリージア",
368
+ "フリージア",
369
+ "カクタス",
370
+ "カクタス",
371
+ "ロータス",
372
+ "ロータス",
373
+ "リリィ",
374
+ "リリィ",
375
+ "ラフレシア",
376
+ "ラフレシア",
377
+ "ヒヤシンス",
378
+ "ヒヤシンス",
301
379
  ]
302
- else
303
- return nil
304
- end
305
-
306
- return get_badlife_1d20_table_result(name, table)
307
- end
308
-
309
- def get_skill_table
310
- name = 'スキル表'
311
- table = [
312
- [1, '一撃離脱'],
313
- [2, '一撃離脱'],
314
- [3, 'チェイサー'],
315
- [4, 'チェイサー'],
316
- [5, '影の外套'],
317
- [6, '影の外套'],
318
- [7, '二段ジャンプ'],
319
- [8, '二段ジャンプ'],
320
- [9, '韋駄天'],
321
- [10, '韋駄天'],
322
- [11, '手練'],
323
- [12, '手練'],
324
- [13, 'ハニーテイスト'],
325
- [14, 'ハニーテイスト'],
326
- [15, '先見の明'],
327
- [16, '先見の明'],
328
- [17, 'ベテラン'],
329
- [18, 'ベテラン'],
330
- [19, '応急手当'],
331
- [20, '応急手当'],
332
- [21, 'セラピー'],
333
- [22, 'セラピー'],
334
- [23, '緊急治療'],
335
- [24, '緊急治療'],
336
- [25, 'ゴールドディガー'],
337
- [26, 'ゴールドディガー'],
338
- [27, 'デイリーミッション'],
339
- [28, 'デイリーミッション'],
340
- [29, '見切り'],
341
- [30, '見切り'],
342
- [31, '鷹の目'],
343
- [32, '鷹の目'],
344
- [33, 'しびれ罠'],
345
- [34, 'しびれ罠'],
346
- [35, '大逆転'],
347
- [36, '大逆転'],
348
- [37, '武器習熟:○○'],
349
- [38, '武器習熟:○○'],
350
- [39, '百発百中'],
351
- [40, '百発百中'],
352
- [41, '屈強な肉体'],
353
- [42, '屈強な肉体'],
354
- [43, '二刀流'],
355
- [44, '二刀流'],
356
- [45, 'クイックリカバリー'],
357
- [46, 'クイックリカバリー'],
358
- [47, '体験主義'],
359
- [48, '体験主義'],
360
- [49, '破釜沈船'],
361
- [50, '破釜沈船'],
362
- [51, '想定の範囲内'],
363
- [52, '想定の範囲内'],
364
- [53, 'セカンドチャンス'],
365
- [54, 'セカンドチャンス'],
366
- [55, '優秀な子分'],
367
- [56, '優秀な子分'],
368
- [57, '時間管理術'],
369
- [58, '時間管理術'],
370
- [59, '連撃術'],
371
- [60, '連撃術'],
372
- [61, '罵詈雑言'],
373
- [62, '罵詈雑言'],
374
- [63, 'ケセラセラ'],
375
- [64, 'ケセラセラ'],
376
- [65, 'ダンス&ミュージック'],
377
- [66, 'ダンス&ミュージック'],
378
- [67, 'フェイント'],
379
- [68, 'フェイント'],
380
- [69, 'ヘイトコントロール'],
381
- [70, 'ヘイトコントロール'],
382
- [71, '惜別'],
383
- [72, '惜別'],
384
- [73, '戦闘マシーン'],
385
- [74, '戦闘マシーン'],
386
- [75, '戦闘マシーン'],
387
- [76, '名医'],
388
- [77, '名医'],
389
- [78, '名医'],
390
- [79, '忍者'],
391
- [80, '忍者'],
392
- [81, '忍者'],
393
- [82, '観察眼'],
394
- [83, '観察眼'],
395
- [84, '観察眼'],
396
- [85, 'クレバー'],
397
- [86, 'クレバー'],
398
- [87, 'クレバー'],
399
- [88, 'フェイスマン'],
400
- [89, 'フェイスマン'],
401
- [90, 'フェイスマン'],
402
- [91, 'スポーツマン'],
403
- [92, 'スポーツマン'],
404
- [93, 'スポーツマン'],
405
- [94, '不屈'],
406
- [95, '不屈'],
407
- [96, '不屈'],
408
- [97, '慎重'],
409
- [98, '慎重'],
410
- [99, '慎重'],
411
- [100, 'この表を2回振る']
412
- ]
413
- dice = @randomizer.roll_once(100)
414
- result = get_table_by_number(dice, table)
415
-
416
- return get_badlife_table_result(name, dice, result)
417
- end
418
-
419
- def get_badlife_1d20_table_result(name, table)
420
- dice = @randomizer.roll_once(20)
421
- output = get_table_by_number(dice, table)
422
- return get_badlife_table_result(name, dice, output)
423
- end
424
-
425
- def get_badlife_table_result(name, dice, output)
426
- return "#{name}(#{dice}) > #{output}"
427
- end
428
-
429
- def get_value(text)
430
- text ||= ""
431
- return ArithmeticEvaluator.eval(text)
432
- end
380
+ ),
381
+ "BRN" => DiceTable::Table.new(
382
+ "遊ビ人コードネーム表",
383
+ "1D20",
384
+ [
385
+ "モノポリー",
386
+ "モノポリー",
387
+ "ブリッジ",
388
+ "ブリッジ",
389
+ "チェッカー",
390
+ "チェッカー",
391
+ "アクワイア",
392
+ "アクワイア",
393
+ "ジャンケン",
394
+ "ジャンケン",
395
+ "トランプ",
396
+ "トランプ",
397
+ "ケイドロ",
398
+ "ケイドロ",
399
+ "パンデミック",
400
+ "パンデミック",
401
+ "スゴロク",
402
+ "スゴロク",
403
+ "キャベツカンテイ",
404
+ "キャベツカンテイ",
405
+ ]
406
+ ),
407
+ }.freeze
433
408
  end
434
409
  end
435
410
  end