bcdice 3.0.0 → 3.2.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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -2
  3. data/README.md +32 -0
  4. data/i18n/MonotoneMuseum/ja_jp.yml +3 -3
  5. data/i18n/StellarKnights/ja_jp.yml +496 -0
  6. data/lib/bcdice/common_command/add_dice.rb +1 -1
  7. data/lib/bcdice/common_command/calc.rb +1 -1
  8. data/lib/bcdice/dice_table.rb +2 -0
  9. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  10. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  11. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
  12. data/lib/bcdice/game_system.rb +4 -0
  13. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  14. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  15. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  16. data/lib/bcdice/game_system/AlchemiaStruggle.rb +1 -1
  17. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  18. data/lib/bcdice/game_system/Alshard.rb +1 -1
  19. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  20. data/lib/bcdice/game_system/AngelGear.rb +123 -0
  21. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  22. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  23. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  24. data/lib/bcdice/game_system/Avandner.rb +1 -1
  25. data/lib/bcdice/game_system/BBN.rb +1 -1
  26. data/lib/bcdice/game_system/BadLife.rb +1 -1
  27. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  28. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  29. data/lib/bcdice/game_system/BeastBindTrinity.rb +2 -2
  30. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  31. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  32. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  33. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  34. data/lib/bcdice/game_system/BloodCrusade.rb +48 -49
  35. data/lib/bcdice/game_system/BloodMoon.rb +50 -8
  36. data/lib/bcdice/game_system/CardRanker.rb +10 -9
  37. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  38. data/lib/bcdice/game_system/Chill.rb +10 -10
  39. data/lib/bcdice/game_system/Chill3.rb +9 -9
  40. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  41. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  42. data/lib/bcdice/game_system/Cthulhu.rb +8 -4
  43. data/lib/bcdice/game_system/Cthulhu7th.rb +86 -342
  44. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
  45. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
  46. data/lib/bcdice/game_system/CthulhuTech.rb +1 -1
  47. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
  48. data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
  49. data/lib/bcdice/game_system/DarkBlaze.rb +1 -12
  50. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  51. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  52. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  53. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  54. data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
  55. data/lib/bcdice/game_system/DoubleCross.rb +2 -2
  56. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  57. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  58. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  59. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  60. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  61. data/lib/bcdice/game_system/Elric.rb +18 -14
  62. data/lib/bcdice/game_system/Elysion.rb +3 -3
  63. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  64. data/lib/bcdice/game_system/Emoklore.rb +3 -3
  65. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
  66. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  67. data/lib/bcdice/game_system/FilledWith.rb +205 -1272
  68. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
  69. data/lib/bcdice/game_system/GURPS.rb +17 -28
  70. data/lib/bcdice/game_system/Garako.rb +12 -4
  71. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  72. data/lib/bcdice/game_system/GehennaAn.rb +1 -1
  73. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  74. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  75. data/lib/bcdice/game_system/Gorilla.rb +3 -9
  76. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  77. data/lib/bcdice/game_system/Gundog.rb +9 -8
  78. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  79. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  80. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  81. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  82. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  83. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  84. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  85. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  86. data/lib/bcdice/game_system/Illusio.rb +25 -34
  87. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  88. data/lib/bcdice/game_system/Insane.rb +13 -20
  89. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  90. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  91. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  92. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  93. data/lib/bcdice/game_system/KanColle.rb +4 -9
  94. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  95. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  96. data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
  97. data/lib/bcdice/game_system/LogHorizon.rb +3 -3
  98. data/lib/bcdice/game_system/LostRoyal.rb +1 -1
  99. data/lib/bcdice/game_system/MeikyuDays.rb +11 -9
  100. data/lib/bcdice/game_system/MeikyuKingdom.rb +28 -28
  101. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -5
  102. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  103. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  104. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
  105. data/lib/bcdice/game_system/MonotoneMuseum.rb +9 -7
  106. data/lib/bcdice/game_system/Nechronica.rb +28 -21
  107. data/lib/bcdice/game_system/NeverCloud.rb +540 -5
  108. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  109. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  110. data/lib/bcdice/game_system/NinjaSlayer.rb +4 -13
  111. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  112. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  113. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  114. data/lib/bcdice/game_system/OrgaRain.rb +17 -25
  115. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  116. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  117. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  118. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  119. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  120. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  121. data/lib/bcdice/game_system/Postman.rb +2 -2
  122. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  123. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  124. data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
  125. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  126. data/lib/bcdice/game_system/Revulture.rb +123 -0
  127. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  128. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  129. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  130. data/lib/bcdice/game_system/SRS.rb +1 -1
  131. data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
  132. data/lib/bcdice/game_system/Satasupe.rb +79 -860
  133. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  134. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  135. data/lib/bcdice/game_system/SharedFantasia.rb +20 -24
  136. data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
  137. data/lib/bcdice/game_system/ShinobiGami.rb +17 -9
  138. data/lib/bcdice/game_system/Skynauts.rb +4 -4
  139. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  140. data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
  141. data/lib/bcdice/game_system/StellarKnights.rb +59 -696
  142. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  143. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
  144. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  145. data/lib/bcdice/game_system/Strave.rb +1 -1
  146. data/lib/bcdice/game_system/SwordWorld.rb +58 -185
  147. data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -150
  148. data/lib/bcdice/game_system/SwordWorld2_5.rb +127 -41
  149. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  150. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  151. data/lib/bcdice/game_system/Torg.rb +1 -1
  152. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  153. data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
  154. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  155. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
  156. data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
  157. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  158. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  159. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  160. data/lib/bcdice/game_system/WARPS.rb +11 -9
  161. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  162. data/lib/bcdice/game_system/Warhammer.rb +16 -7
  163. data/lib/bcdice/game_system/Warhammer4.rb +16 -12
  164. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  165. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  166. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  167. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  168. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  169. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
  170. data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
  171. data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
  172. data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
  173. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
  174. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  175. data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
  176. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
  177. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
  178. data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
  179. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +122 -0
  180. data/lib/bcdice/repl.rb +1 -1
  181. data/lib/bcdice/result.rb +26 -0
  182. data/lib/bcdice/version.rb +1 -1
  183. metadata +20 -4
@@ -34,7 +34,7 @@ module BCDice
34
34
  ・8av4*7+10 → 8d10で目標値4、攻撃力7、クリティカルトリガー10の命中判定。
35
35
  MESSAGETEXT
36
36
 
37
- register_prefix('\d+AV\d+((x|\*)\d+(\+\d+)?)?(c\d+)?')
37
+ register_prefix('\d+AV')
38
38
 
39
39
  def initialize(command)
40
40
  super(command)
@@ -4,7 +4,7 @@ module BCDice
4
4
  module GameSystem
5
5
  class BBN < Base
6
6
  # ダイスボットで使用するコマンドを配列で列挙する
7
- register_prefix('\d+BN.*')
7
+ register_prefix('\d+BN')
8
8
 
9
9
  ID = 'BBN'
10
10
 
@@ -41,7 +41,7 @@ module BCDice
41
41
  ・スキル表:SKL
42
42
  MESSAGETEXT
43
43
 
44
- register_prefix('\d?(BAD|BL|GL).*', '[TDGKSB]RN', 'SKL')
44
+ register_prefix('\d?(BAD|BL|GL)', '[TDGKSB]RN', 'SKL')
45
45
 
46
46
  def eval_game_system_specific_command(command)
47
47
  command = command.upcase
@@ -26,7 +26,7 @@ module BCDice
26
26
   セット数が1以上の時はセット数も表示し、攻撃判定の場合は命中部位も表示します。
27
27
  INFO_MESSAGE_TEXT
28
28
 
29
- register_prefix('\d+BK.*', '\d+BA.*', '\d+BKC\d+.*', '\d+BAC\d+.*', '\d+R6.*')
29
+ register_prefix('\d+BK', '\d+BA', '\d+BKC', '\d+BAC', '\d+R6')
30
30
 
31
31
  def initialize(command)
32
32
  super(command)
@@ -34,7 +34,7 @@ module BCDice
34
34
  ・CDx:メック戦士意識維持表。ダメージ値xで判定 例)CD3
35
35
  MESSAGETEXT
36
36
 
37
- register_prefix('\d*SRM\d+.+', '\d*LRM\d+.+', '\d*BT.+', 'PPC', 'CT', 'DW', 'CD\d+')
37
+ register_prefix('\d*SRM', '\d*LRM', '\d*BT', 'PPC', 'CT', 'DW', 'CD')
38
38
 
39
39
  # 致命的命中が発生しない上限値
40
40
  NO_CRITICAL_HIT_LIMIT = 7
@@ -76,7 +76,7 @@ module BCDice
76
76
  end
77
77
 
78
78
  dice_list_filtered = dice_list_org.map { |dice| [dice, @dice_value_lower_limit].max }.sort
79
- @dice_total = dice_list_filtered.inject(0, :+)
79
+ @dice_total = dice_list_filtered.last(2).inject(0, :+)
80
80
 
81
81
  total = calc_total()
82
82
 
@@ -332,7 +332,7 @@ module BCDice
332
332
  ),
333
333
  }.freeze
334
334
 
335
- register_prefix('\d+BB.*', '\d+R6.*', TABLES.keys)
335
+ register_prefix('\d+BB', '\d+R6', TABLES.keys)
336
336
  end
337
337
  end
338
338
  end
@@ -55,13 +55,13 @@ module BCDice
55
55
  INFO_MESSAGE_TEXT
56
56
 
57
57
  register_prefix(
58
- '[1-7]*PD\d+(?:[\+\-]\d+)?',
58
+ '[1-7]*PD',
59
59
  'HW',
60
60
  'BWT',
61
61
  'LWT',
62
62
  'TWT',
63
63
  'CWT',
64
- 'LO\d{0,2}',
64
+ 'LO',
65
65
  'SU',
66
66
  'WI',
67
67
  'NA',
@@ -88,7 +88,7 @@ module BCDice
88
88
  'NUR',
89
89
  'GUR',
90
90
  'BUR',
91
- 'BT\d*',
91
+ 'BT',
92
92
  'SGT',
93
93
  'RS',
94
94
  'SH',
@@ -110,7 +110,7 @@ module BCDice
110
110
  'NCH',
111
111
  'GCH',
112
112
  'PCH',
113
- 'IT\d*',
113
+ 'IT',
114
114
  'ACT',
115
115
  'ACB',
116
116
  'ACE',
@@ -124,7 +124,7 @@ module BCDice
124
124
  'RU',
125
125
  '\d{2}C',
126
126
  'BU',
127
- '\d+S?A[1-6]*(?:[\+\-]\d+)?',
127
+ '\d+S?A',
128
128
  'SIP',
129
129
  'BVT',
130
130
  'LVT',
@@ -53,13 +53,13 @@ module BCDice
53
53
  INFO_MESSAGE_TEXT
54
54
 
55
55
  register_prefix(
56
- '[1-7]*PD\d+(?:[\+\-]\d+)?',
56
+ '[1-7]*PD',
57
57
  'HW',
58
58
  'BWT',
59
59
  'LWT',
60
60
  'TWT',
61
61
  'CWT',
62
- 'LO\d{0,2}',
62
+ 'LO',
63
63
  'SU',
64
64
  'WI',
65
65
  'NA',
@@ -85,7 +85,7 @@ module BCDice
85
85
  'NUR',
86
86
  'GUR',
87
87
  'BUR',
88
- 'BT\d*',
88
+ 'BT',
89
89
  'SGT',
90
90
  'RS',
91
91
  'SH',
@@ -105,7 +105,7 @@ module BCDice
105
105
  'SCH',
106
106
  'WCH',
107
107
  'NCH',
108
- 'IT\d*',
108
+ 'IT',
109
109
  'ACT',
110
110
  'ACB',
111
111
  'ACE',
@@ -119,7 +119,7 @@ module BCDice
119
119
  'RU',
120
120
  '\d{2}C',
121
121
  'BU',
122
- '\d+S?A[1-6]*(?:[\+\-]\d+)?',
122
+ '\d+S?A',
123
123
  'SIP',
124
124
  'BVT',
125
125
  'LVT',
@@ -33,7 +33,7 @@ module BCDice
33
33
  INFO_MESSAGE_TEXT
34
34
 
35
35
  register_prefix(
36
- '\d+A\d*[CF]?\d*[CF]?\d*',
36
+ '\d+A',
37
37
  'CT3[\+\-]?',
38
38
  'CTR[\+\-]?',
39
39
  'DJV\-?',
@@ -456,7 +456,7 @@ module BCDice
456
456
  ),
457
457
  }.freeze
458
458
 
459
- register_prefix('BM.*', 'ReRoll\d+.*', 'RP\d+', 'DT', TABLES.keys)
459
+ register_prefix('BM', 'ReRoll', 'RP', 'DT', TABLES.keys)
460
460
  end
461
461
  end
462
462
  end
@@ -44,18 +44,17 @@ module BCDice
44
44
  @round_type = RoundType::CEIL # 端数切り上げに設定
45
45
  end
46
46
 
47
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
48
- return '' if target == '?'
49
- return '' unless cmp_op == :>=
47
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
48
+ return nil if target == '?' || cmp_op != :>=
50
49
 
51
50
  if dice_total <= 2
52
- "ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)"
51
+ Result.fumble("ファンブル(【モラル】-3。追跡フェイズなら吸血シーンを追加。戦闘フェイズなら吸血鬼は追加行動を一回得る)")
53
52
  elsif dice_total >= 12
54
- "スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)"
53
+ Result.critical("スペシャル(【モラル】+3。追跡フェイズならあなたに関係を持つPCの【モラル】+2。攻撃判定ならダメージ+1D6)")
55
54
  elsif total >= target
56
- "成功"
55
+ Result.success("成功")
57
56
  else
58
- "失敗"
57
+ Result.failure("失敗")
59
58
  end
60
59
  end
61
60
 
@@ -74,23 +73,6 @@ module BCDice
74
73
  )
75
74
 
76
75
  TABLES_WITH_BLOOD_MOON = {
77
- "ST" => DiceTable::Table.new(
78
- "シーン表",
79
- "2D6",
80
- [
81
- "どこまでも広がる荒野。風が吹き抜けていく。",
82
- "血まみれの惨劇の跡。いったい誰がこんなことを?",
83
- "都市の地下。かぼそい明かりがコンクリートを照らす。",
84
- "豪華な調度が揃えられた室内。くつろぎの空間を演出。",
85
- "普通の道端。様々な人が道を行き交う。",
86
- "明るく浮かぶ月の下。暴力の気配が満ちていく。",
87
- "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。",
88
- "生活の様子が色濃く残る部屋の中。誰の部屋だろう?",
89
- "喧しい飲食店。騒ぐ人々に紛れつつ自体は進行する。",
90
- "ざわめく木立。踊る影。",
91
- "高い塔の上。都市を一望できる。"
92
- ]
93
- ),
94
76
  "IST" => DiceTable::Table.new(
95
77
  "先制判定指定特技表",
96
78
  "1D6",
@@ -98,7 +80,7 @@ module BCDice
98
80
  "《自信/社会5》",
99
81
  "《地位/社会9》",
100
82
  "《日常/環境3》",
101
- "《人脈/環境9》",
83
+ "《人脈/環境7》",
102
84
  "《退路/環境11》",
103
85
  "《心臓/胴部7》"
104
86
  ]
@@ -120,30 +102,6 @@ module BCDice
120
102
  "《心臓》"
121
103
  ]
122
104
  ),
123
- "MIT" => DiceTable::Table.new(
124
- "軽度狂気表",
125
- "1D6",
126
- [
127
- "【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)",
128
- "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)",
129
- "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)",
130
- "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)",
131
- "【不死幻想】(自分が受けるダメージが全て1増加する。)",
132
- "【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)"
133
- ]
134
- ),
135
- "SIT" => DiceTable::Table.new(
136
- "重度狂気表",
137
- "1D6",
138
- [
139
- "【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)",
140
- "【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)",
141
- "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)",
142
- "【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)",
143
- "【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)",
144
- "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"
145
- ]
146
- )
147
105
  }.freeze
148
106
 
149
107
  TABLES = {
@@ -388,6 +346,47 @@ module BCDice
388
346
  "新しい友達が出来る。\n任意の年齢の協力者を、狩人のプレイヤーが作成する。\nレベルは1とすること。\nこの協力者はセッションに登場し、獲得すれば使用できる。"
389
347
  ]
390
348
  ),
349
+ "ST" => DiceTable::Table.new(
350
+ "シーン表",
351
+ "2D6",
352
+ [
353
+ "どこまでも広がる荒野。風が吹き抜けていく。",
354
+ "血まみれの惨劇の跡。いったい誰がこんなことを?",
355
+ "都市の地下。かぼそい明かりがコンクリートを照らす。",
356
+ "豪華な調度が揃えられた室内。くつろぎの空間を演出。",
357
+ "普通の道端。様々な人が道を行き交う。",
358
+ "明るく浮かぶ月の下。暴力の気配が満ちていく。",
359
+ "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。",
360
+ "生活の様子が色濃く残る部屋の中。誰の部屋だろう?",
361
+ "喧しい飲食店。騒ぐ人々に紛れつつ事態は進行する。",
362
+ "ざわめく木立。踊る影。",
363
+ "高い塔の上。都市を一望できる。"
364
+ ]
365
+ ),
366
+ "MIT" => DiceTable::Table.new(
367
+ "軽度狂気表",
368
+ "1D6",
369
+ [
370
+ "【誇大妄想】(判定に失敗するたびに【感情】が1増加する。)",
371
+ "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)",
372
+ "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【感情】が6増加する。)",
373
+ "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)",
374
+ "【不死幻想】(自分が受けるダメージが全て1増加する。)",
375
+ "【血の飢え】(戦闘中に最低1体でも死亡させないと、戦闘終了時に【感情】10増加。【激情】は獲得できない。)"
376
+ ]
377
+ ),
378
+ "SIT" => DiceTable::Table.new(
379
+ "重度狂気表",
380
+ "1D6",
381
+ [
382
+ "【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)",
383
+ "【見えない友達】(自分の関わる「関係を深める」判定にマイナス3の修正がつく。)",
384
+ "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)",
385
+ "【陰謀論】(「幸福を味わう」判定にマイナス3の修正がつく。)",
386
+ "【指令受信】(追跡フェイズBでの自分の行動は、可能な範囲でGMが決定する。)",
387
+ "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"
388
+ ]
389
+ ),
391
390
  }.merge(TABLES_WITH_BLOOD_MOON).freeze
392
391
 
393
392
  register_prefix(RTT.prefixes, TABLES.keys)
@@ -9,7 +9,7 @@ module BCDice
9
9
  ID = 'BloodMoon'
10
10
 
11
11
  # ゲームシステム名
12
- NAME = 'ブラッド・ムーン'
12
+ NAME = 'ブラッドムーン'
13
13
 
14
14
  # ゲームシステム名の読みがな
15
15
  SORT_KEY = 'ふらつとむうん'
@@ -43,18 +43,19 @@ module BCDice
43
43
  end
44
44
 
45
45
  # ゲーム別成功度判定(2D6)
46
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
47
- return '' if target == '?'
48
- return '' unless cmp_op == :>=
46
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
47
+ return nil unless cmp_op == :>=
49
48
 
50
49
  if dice_total <= 2
51
- return "ファンブル(【余裕】が 0 に)"
50
+ Result.fumble("ファンブル(【余裕】が 0 に)")
52
51
  elsif dice_total >= 12
53
- return "スペシャル(【余裕】+3)"
52
+ Result.critical("スペシャル(【余裕】+3)")
53
+ elsif target == '?'
54
+ Result.nothing
54
55
  elsif total >= target
55
- return "成功"
56
+ Result.success("成功")
56
57
  else
57
- return "失敗"
58
+ Result.failure("失敗")
58
59
  end
59
60
  end
60
61
 
@@ -63,6 +64,47 @@ module BCDice
63
64
  end
64
65
 
65
66
  TABLES = {
67
+ "ST" => DiceTable::Table.new(
68
+ "シーン表",
69
+ "2D6",
70
+ [
71
+ "どこまでも広がる荒野。風が吹き抜けていく。",
72
+ "血まみれの惨劇の跡。いったい誰がこんなことを?",
73
+ "都市の地下。かぼそい明かりがコンクリートを照らす。",
74
+ "豪華な調度が揃えられた室内。くつろぎの空間を演出。",
75
+ "普通の道端。様々な人が道を行き交う。",
76
+ "明るく浮かぶ月の下。暴力の気配が満ちていく。",
77
+ "打ち捨てられた廃墟。荒れ果てた景色に心も荒む。",
78
+ "生活の様子が色濃く残る部屋の中。誰の部屋だろう?",
79
+ "にぎやかな飲食店。騒ぐ人々に紛れつつ事態は進行する。",
80
+ "ざわめく木立。踊る影。",
81
+ "高い塔の上。都市を一望できる。"
82
+ ]
83
+ ),
84
+ "MIT" => DiceTable::Table.new(
85
+ "軽度狂気表",
86
+ "1D6",
87
+ [
88
+ "【誇大妄想】(判定に失敗するたびに【テンション】が1増加する。)",
89
+ "【記憶喪失】(【幸福】の修復判定にマイナス2の修正。)",
90
+ "【こだわり】(戦闘中の行動を「パス」以外で一つ選択し、その行動をすると【テンション】が6増加する。)",
91
+ "【お守り中毒】(「幸運のお守り」を装備していない場合、全ての2d6判定にマイナス1の修正。)",
92
+ "【不死幻想】(自分が受けるダメージが全て1増加する。)",
93
+ "【血の飢え】(戦闘中、ラウンドごとに他のキャラクターにダメージを与えないと、ラウンド終了時に【テンション】4増加。)"
94
+ ]
95
+ ),
96
+ "SIT" => DiceTable::Table.new(
97
+ "重度狂気表",
98
+ "1D6",
99
+ [
100
+ "【幸福依存】(【幸福】を一つ選択し、その【幸福】が結果フェイズに失われたとき、死亡する。)",
101
+ "【見えない友達】(交流判定にマイナス3の修正がつく。)",
102
+ "【臆病】(自分の行う妨害判定にマイナス2の修正がつく。)",
103
+ "【陰謀論】(休息判定にマイナス3の修正がつく。)",
104
+ "【指令受信】(メインフェイズの3サイクル目の自分のシーンでは、可能な範囲でGMが行動を決定する。)",
105
+ "【猜疑心】(自分が「連携攻撃」を行うとき、関係の【深度】をダメージに加えられない。)"
106
+ ]
107
+ ),
66
108
  "CHT" => DiceTable::Table.new(
67
109
  "自信幸福表",
68
110
  "1D6",
@@ -18,7 +18,7 @@ module BCDice
18
18
  ランダム分野表 RCT
19
19
  特定のモンスターカードを選ぶ (CMxy x:色、y:番号)
20
20
   白:W、青:U、緑:V、金:G、赤:R、黒:B
21
-  例)CMW1→白の2:白竜 CMG12→金の12:土精霊
21
+  例)CMW2→白の2:白竜 CMG12→金の12:土精霊
22
22
  場所表 (ST)
23
23
  街中場所表 (CST)
24
24
  郊外場所表 (OST)
@@ -37,18 +37,19 @@ module BCDice
37
37
  end
38
38
 
39
39
  # ゲーム別成功度判定(2D6)
40
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
41
- return '' if target == '?'
42
- return '' unless cmp_op == :>=
40
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
41
+ return nil unless cmp_op == :>=
43
42
 
44
43
  if dice_total <= 2
45
- return "ファンブル"
44
+ Result.fumble("ファンブル")
46
45
  elsif dice_total >= 12
47
- return "スペシャル > " + RTT.roll_command(@randomizer, "RM")
46
+ Result.critical("スペシャル > " + RTT.roll_command(@randomizer, "RM"))
47
+ elsif target == "?"
48
+ Result.nothing
48
49
  elsif total >= target
49
- return "成功"
50
+ Result.success("成功")
50
51
  else
51
- return "失敗"
52
+ Result.failure("失敗")
52
53
  end
53
54
  end
54
55
 
@@ -202,7 +203,7 @@ module BCDice
202
203
  ]
203
204
  ),
204
205
  }.freeze
205
- register_prefix(RTT.prefixes, 'CM.*', TABLES.keys)
206
+ register_prefix(RTT.prefixes, 'CM', TABLES.keys)
206
207
  end
207
208
  end
208
209
  end
@@ -39,33 +39,39 @@ module BCDice
39
39
  - FT7
40
40
  INFO_MESSAGE_TEXT
41
41
 
42
- register_prefix('\d*CF.*', 'FT\d*')
42
+ register_prefix('\d*CF', 'FT')
43
43
 
44
44
  # ゲーム別成功度判定(2D6)。以前の処理をそのまま残しています。
45
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
46
- return '' if target == '?'
45
+ def result_2d6(total, dice_total, _dice_list, cmp_op, target)
46
+ return nil unless cmp_op == :>=
47
47
 
48
- output = ''
48
+ sequence = []
49
+ result = Result.new
49
50
 
50
51
  if dice_total <= 2
51
52
  total -= 20
52
- output = "ファンブル(-20)"
53
+ sequence.push("ファンブル(-20)")
54
+ result.fumble = true
53
55
  end
54
56
 
55
- unless cmp_op == :>=
56
- return output
57
- end
57
+ if target != '?'
58
+ if total >= target
59
+ sequence.push("成功")
60
+ result.success = true
61
+ else
62
+ sequence.push("失敗")
63
+ result.failure = true
64
+ end
58
65
 
59
- if total >= target
60
- output += " 成功"
61
- if total > target
62
- output += " > 差分値#{total - target}"
66
+ if total - target != 0
67
+ sequence.push("差分値#{total - target}")
63
68
  end
64
- else
65
- output += " > 失敗 > 差分値#{total - target}"
66
69
  end
67
70
 
68
- return output
71
+ return Result.nothing if sequence.empty?
72
+
73
+ result.text = sequence.join(" > ")
74
+ return result
69
75
  end
70
76
 
71
77
  def eval_game_system_specific_command(command)