bcdice 3.14.0 → 3.15.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/i18n/Cthulhu/zh_hant.yml +1 -1
  4. data/i18n/CyberpunkRed/ko_kr.yml +389 -0
  5. data/i18n/DoubleCross/ja_jp.yml +53 -0
  6. data/i18n/DoubleCross/ko_kr.yml +52 -0
  7. data/i18n/FutariSousa/ja_jp.yml +138 -138
  8. data/i18n/KillDeathBusiness/ja_jp.yml +198 -0
  9. data/i18n/MagicaLogia/ko_kr.yml +2 -2
  10. data/i18n/MonotoneMuseum/ko_kr.yml +227 -0
  11. data/i18n/SkynautsBouken/ko_kr.yml +114 -0
  12. data/i18n/StratoShout/ko_kr.yml +102 -102
  13. data/i18n/zh_hant.yml +5 -0
  14. data/lib/bcdice/game_system/Aionia.rb +131 -0
  15. data/lib/bcdice/game_system/Arianrhod_Korean.rb +2 -0
  16. data/lib/bcdice/game_system/ArknightsFan.rb +245 -87
  17. data/lib/bcdice/game_system/BlackJacket_Korean.rb +244 -0
  18. data/lib/bcdice/game_system/CharonSanctions.rb +112 -0
  19. data/lib/bcdice/game_system/Cthulhu7th.rb +1 -1
  20. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/full_auto.rb +293 -0
  21. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/rollable.rb +43 -0
  22. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +470 -306
  23. data/lib/bcdice/game_system/CyberpunkRed.rb +1 -2
  24. data/lib/bcdice/game_system/CyberpunkRed_Korean.rb +66 -0
  25. data/lib/bcdice/game_system/DoubleCross.rb +18 -1
  26. data/lib/bcdice/game_system/DoubleCross_Korean.rb +5 -1
  27. data/lib/bcdice/game_system/FullFace.rb +25 -3
  28. data/lib/bcdice/game_system/FutariSousa.rb +17 -5
  29. data/lib/bcdice/game_system/Garactier.rb +479 -0
  30. data/lib/bcdice/game_system/GardenOrder.rb +390 -9
  31. data/lib/bcdice/game_system/GundogRevised.rb +8 -8
  32. data/lib/bcdice/game_system/KillDeathBusiness.rb +155 -3
  33. data/lib/bcdice/game_system/KimitoYell.rb +568 -0
  34. data/lib/bcdice/game_system/Magius.rb +125 -0
  35. data/lib/bcdice/game_system/Magius_3rdNewTokyoCity.rb +62 -0
  36. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  37. data/lib/bcdice/game_system/NSSQ.rb +17 -9
  38. data/lib/bcdice/game_system/NervWhitePaper.rb +129 -0
  39. data/lib/bcdice/game_system/RogueLikeHalf.rb +198 -0
  40. data/lib/bcdice/game_system/RuneQuestRoleplayingInGlorantha.rb +16 -13
  41. data/lib/bcdice/game_system/ShinobiGami.rb +73 -43
  42. data/lib/bcdice/game_system/SkynautsBouken.rb +4 -4
  43. data/lib/bcdice/game_system/SkynautsBouken_Korean.rb +57 -0
  44. data/lib/bcdice/game_system/StratoShout_Korean.rb +1 -1
  45. data/lib/bcdice/game_system/SwordWorld.rb +4 -0
  46. data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -2
  47. data/lib/bcdice/game_system/TensaiGunshiNiNaro.rb +51 -17
  48. data/lib/bcdice/game_system/TheIndieHack.rb +82 -0
  49. data/lib/bcdice/game_system/TorgEternity.rb +35 -6
  50. data/lib/bcdice/game_system/WoW.rb +161 -0
  51. data/lib/bcdice/game_system/YankeeMustDie.rb +192 -0
  52. data/lib/bcdice/game_system/YearZeroEngine.rb +225 -28
  53. data/lib/bcdice/game_system/YuMyoKishi.rb +141 -0
  54. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +1 -0
  55. data/lib/bcdice/game_system/sword_world/rating_options.rb +4 -1
  56. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +5 -0
  57. data/lib/bcdice/game_system/sword_world/rating_parser.rb +129 -115
  58. data/lib/bcdice/game_system.rb +15 -0
  59. data/lib/bcdice/version.rb +1 -1
  60. metadata +22 -6
@@ -38,6 +38,11 @@ module BCDice
38
38
  ・製作委員決定表 PCDT/実際どうだったのか表 OHT
39
39
  ・タスク表 ヘルライオン PCT1/ヘルクロウ PCT2/ヘルスネーク PCT3/
40
40
   ヘルドラゴン PCT4/ヘルフライ PCT5/ヘルゴート PCT6/ヘルベア PCT7
41
+ ・大喜利スペシャル表 (-OT)
42
+  お題決定表(TOT)、〇〇を見て一言表(OOT)
43
+  単語表(WOT, WOTx) xに英字(A,B,C)で単語表A(人物)(AOT)、単語表B(物)(BOT)、単語表C(場所)を個別ロール
44
+  動詞表(VOT)、長め単語表(LOT)
45
+  ヘル司会者 リアクション表(好印象ver)(POT)、ヘル司会者 リアクション表(不満ver)(NOT)
41
46
  ・D66ダイスあり
42
47
  INFO_MESSAGE_TEXT
43
48
 
@@ -156,21 +161,37 @@ module BCDice
156
161
  when /^ST(\d)?$/
157
162
  # シーン表
158
163
  type = Regexp.last_match(1).to_i
159
-
160
164
  tableName, result, number = getSceneTableResult(type)
161
165
  when /^NAME(\d)?$/
162
166
  # 万能命名表
163
167
  type = Regexp.last_match(1).to_i
164
168
  tableName, result, number = getNameTableResult(type)
165
169
  when /^EST$/i, /^sErviceST$/i
170
+ # サービスシーン表
166
171
  tableName, result, number = getServiceSceneTableResult()
167
172
  when /^HSAT(\d)?$/
173
+ # ヘルスタイリスト罵倒表
168
174
  type = Regexp.last_match(1).to_i
169
175
  tableName, result, number = getHairStylistAbuseTableResult(type)
170
-
171
176
  when /^EXT(\d)?$/
177
+ # エキストラ表
172
178
  type = Regexp.last_match(1).to_i
173
179
  tableName, result, number = getExtraTableResult(type)
180
+ when /^TOT?$/
181
+ # お題決定表
182
+ tableName, result, number = getThemeTableResult()
183
+ when /^OOT?$/
184
+ # 一言決定表
185
+ tableName, result, number = getOneWordTableResult()
186
+ when /^WOT?$/
187
+ # 単語決定表
188
+ tableName, result, number = getWordTableResult()
189
+ when /^POT?$/
190
+ # ヘル司会者 リアクション表(好印象ver)
191
+ tableName, result, number = getPositiveTableResult()
192
+ when /^NOT?$/
193
+ # ヘル司会者 リアクション表(不満ver)
194
+ tableName, result, number = getNegativeTableResult()
174
195
  end
175
196
 
176
197
  if result.empty?
@@ -333,6 +354,127 @@ module BCDice
333
354
  return tableName, result, number
334
355
  end
335
356
 
357
+ def getThemeTableResult()
358
+ tableName = translate("KillDeathBusiness.table.TOT.name")
359
+
360
+ result = ''
361
+ d6 = @randomizer.roll_once(6)
362
+
363
+ case d6
364
+ when 1
365
+ oneTableName, oneResult, oneD6, one = getOneWordTableResult()
366
+ result += "[#{oneTableName}]を見て一言。\n#{oneTableName}(#{oneD6}) > #{oneResult}\n> "
367
+ result += translate("KillDeathBusiness.table.TOT.items.1", one: one)
368
+ when 2
369
+ word1TableName, word1Result, word1D6, word1 = getWordTableResult()
370
+ word2TableName, word2Result, word2D6, word2 = getWordTableResult()
371
+ result += "この[#{word1TableName}]、ひょっとして[#{word1TableName}]かも、どうしてそう思った?\n#{word1TableName}(#{word1D6}) > #{word1Result}\n#{word2TableName}(#{word2D6}) > #{word2Result}\n> "
372
+ result += translate("KillDeathBusiness.table.TOT.items.2", word1: word1, word2: word2)
373
+ when 3
374
+ vot = self.class::TABLES["VOT"].roll(@randomizer)
375
+ verbTableName = vot.table_name
376
+ verb = vot.body
377
+ number = vot.value
378
+ wordTableName, wordResult, wordD6, word = getWordTableResult()
379
+ result += "[#{verbTableName}]した[#{wordTableName}]が言いそうなこと。\n#{verbTableName}(#{number}) > #{verb}\n#{wordTableName}(#{wordD6}) > #{wordResult}\n> "
380
+ result += translate("KillDeathBusiness.table.TOT.items.3", verb: verb, word: word)
381
+ when 4
382
+ word1TableName, word1Result, word1D6, word1 = getWordTableResult()
383
+ word2TableName, word2Result, word2D6, word2 = getWordTableResult()
384
+ result += "[#{word1TableName}]が[#{word1TableName}]になった世界ではどんなことが起こる?\n#{word1TableName}(#{word1D6}) > #{word1Result}\n#{word2TableName}(#{word2D6}) > #{word2Result}\n> "
385
+ result += translate("KillDeathBusiness.table.TOT.items.4", word1: word1, word2: word2)
386
+ when 5
387
+ wordTableName, wordResult, wordD6, word = getWordTableResult()
388
+ result += "こんな[#{wordTableName}]は嫌だ。どんなの?\n#{wordTableName}(#{wordD6}) > #{wordResult}\n> "
389
+ result += translate("KillDeathBusiness.table.TOT.items.5", word: word)
390
+ when 6
391
+ lot = self.class::TABLES["LOT"].roll(@randomizer)
392
+ longTableName = lot.table_name
393
+ long = lot.body
394
+ number = lot.value
395
+ result += "[#{longTableName}]みたいなことを言って下さい。\n#{longTableName}(#{number}) > #{long}\n> "
396
+ result += translate("KillDeathBusiness.table.TOT.items.6", long: long)
397
+ end
398
+
399
+ return tableName, result, d6
400
+ end
401
+
402
+ def getOneWordTableResult()
403
+ tableName = translate("KillDeathBusiness.table.OOT.name")
404
+
405
+ result = ''
406
+ d6 = @randomizer.roll_once(6)
407
+
408
+ case d6
409
+ when 1, 2
410
+ oneWord = translate("KillDeathBusiness.table.OOT.items.1")
411
+ result = oneWord
412
+ when 3, 4
413
+ oneWord = translate("KillDeathBusiness.table.OOT.items.3")
414
+ result = oneWord
415
+ when 5, 6
416
+ wordTableName, wordResult, wordD6, word = getWordTableResult()
417
+ result += "[#{wordTableName}]で検索して出てくる6番目の画像\n#{wordTableName}(#{wordD6}) > #{wordResult}\n> "
418
+ oneWord = translate("KillDeathBusiness.table.OOT.items.5", word: word)
419
+ result += oneWord
420
+ end
421
+
422
+ return tableName, result, d6, oneWord
423
+ end
424
+
425
+ def getWordTableResult()
426
+ tableName = "単語表"
427
+
428
+ d6 = @randomizer.roll_once(6)
429
+ table =
430
+ case d6
431
+ when 1, 2
432
+ self.class::TABLES["WOTA"]
433
+ when 3, 4
434
+ self.class::TABLES["WOTB"]
435
+ when 5, 6
436
+ self.class::TABLES["WOTC"]
437
+ end
438
+
439
+ result = table.roll(@randomizer)
440
+
441
+ return tableName, result.to_s, d6, result.body
442
+ end
443
+
444
+ def getPositiveTableResult()
445
+ tableName = translate("KillDeathBusiness.table.POT.name")
446
+
447
+ table = [
448
+ lambda { return translate("KillDeathBusiness.table.POT.items.1", size: @randomizer.roll_sum(1, 6).to_s) },
449
+ lambda { return translate("KillDeathBusiness.table.POT.items.2", size: @randomizer.roll_sum(1, 6).to_s) },
450
+ lambda { return translate("KillDeathBusiness.table.POT.items.3", size: @randomizer.roll_sum(2, 6).to_s) },
451
+ lambda { return translate("KillDeathBusiness.table.POT.items.4", size: @randomizer.roll_sum(2, 6).to_s) },
452
+ translate("KillDeathBusiness.table.POT.items.5"),
453
+ lambda { return translate("KillDeathBusiness.table.POT.items.6", size: (@randomizer.roll_sum(1, 6) - 3).to_s) },
454
+ ]
455
+
456
+ result, number = get_table_by_1d6(table)
457
+
458
+ return tableName, result, number
459
+ end
460
+
461
+ def getNegativeTableResult()
462
+ tableName = translate("KillDeathBusiness.table.NOT.name")
463
+
464
+ table = [
465
+ translate("KillDeathBusiness.table.NOT.items.1"),
466
+ translate("KillDeathBusiness.table.NOT.items.2"),
467
+ lambda { return translate("KillDeathBusiness.table.NOT.items.3", size: @randomizer.roll_sum(1, 6).to_s) },
468
+ lambda { return translate("KillDeathBusiness.table.NOT.items.4", size: @randomizer.roll_sum(1, 6).to_s) },
469
+ lambda { return translate("KillDeathBusiness.table.NOT.items.5", size: @randomizer.roll_sum(1, 6).to_s) },
470
+ translate("KillDeathBusiness.table.NOT.items.6"),
471
+ ]
472
+
473
+ result, number = get_table_by_1d6(table)
474
+
475
+ return tableName, result, number
476
+ end
477
+
336
478
  ALIAS = {
337
479
  "DeathWT" => "DWT",
338
480
  "RevengeWT" => "RWT",
@@ -396,6 +538,11 @@ module BCDice
396
538
  "PASPT" => DiceTable::Table.from_i18n("KillDeathBusiness.table.PASPT", locale),
397
539
  "POSPT" => DiceTable::Table.from_i18n("KillDeathBusiness.table.POSPT", locale),
398
540
  "UMSPT" => DiceTable::Table.from_i18n("KillDeathBusiness.table.UMSPT", locale),
541
+ "WOTA" => DiceTable::D66Table.from_i18n("KillDeathBusiness.table.WOTA", locale),
542
+ "WOTB" => DiceTable::D66Table.from_i18n("KillDeathBusiness.table.WOTB", locale),
543
+ "WOTC" => DiceTable::D66Table.from_i18n("KillDeathBusiness.table.WOTC", locale),
544
+ "VOT" => DiceTable::D66Table.from_i18n("KillDeathBusiness.table.VOT", locale),
545
+ "LOT" => DiceTable::D66Table.from_i18n("KillDeathBusiness.table.LOT", locale),
399
546
  }
400
547
  end
401
548
 
@@ -413,7 +560,12 @@ module BCDice
413
560
  'EST', 'sErviceST',
414
561
  'HSAT[1-2]?',
415
562
  'EXT[1-4]?',
416
- 'JD'
563
+ 'JD',
564
+ 'TOT',
565
+ 'OOT',
566
+ 'WOT',
567
+ 'POT',
568
+ 'NOT'
417
569
  )
418
570
  register_prefix(TABLES.keys, register_prefix(ALIAS.keys), RTT.prefixes)
419
571
  end