bcdice 3.0.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
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)