bcdice 3.0.0.pre.alpha.2 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -1
  3. data/README.md +34 -7
  4. data/i18n/DetatokoSaga/ja_jp.yml +3 -2
  5. data/i18n/DetatokoSaga/ko_kr.yml +1 -0
  6. data/i18n/KillDeathBusiness/ja_jp.yml +4 -4
  7. data/i18n/KillDeathBusiness/ko_kr.yml +5 -4
  8. data/i18n/MagicaLogia/ko_kr.yml +564 -0
  9. data/i18n/MonotoneMuseum/ja_jp.yml +40 -4
  10. data/i18n/StratoShout/ja_jp.yml +4 -4
  11. data/i18n/StratoShout/ko_kr.yml +4 -4
  12. data/lib/bcdice.rb +4 -1
  13. data/lib/bcdice/arithmetic.rb +22 -0
  14. data/lib/bcdice/arithmetic/node.rb +112 -43
  15. data/lib/bcdice/arithmetic/parser.rb +240 -0
  16. data/lib/bcdice/arithmetic_evaluator.rb +7 -156
  17. data/lib/bcdice/base.rb +8 -1
  18. data/lib/bcdice/command/lexer.rb +57 -0
  19. data/lib/bcdice/command/parsed.rb +65 -0
  20. data/lib/bcdice/command/parser.rb +489 -0
  21. data/lib/bcdice/common_command.rb +2 -0
  22. data/lib/bcdice/common_command/add_dice.rb +3 -1
  23. data/lib/bcdice/common_command/add_dice/node.rb +142 -69
  24. data/lib/bcdice/common_command/add_dice/parser.rb +100 -83
  25. data/lib/bcdice/common_command/add_dice/randomizer.rb +2 -0
  26. data/lib/bcdice/common_command/barabara_dice.rb +2 -0
  27. data/lib/bcdice/common_command/barabara_dice/node.rb +9 -1
  28. data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
  29. data/lib/bcdice/common_command/calc.rb +2 -0
  30. data/lib/bcdice/common_command/calc/node.rb +10 -1
  31. data/lib/bcdice/common_command/calc/parser.rb +1 -1
  32. data/lib/bcdice/common_command/d66_dice.rb +5 -1
  33. data/lib/bcdice/common_command/lexer.rb +2 -1
  34. data/lib/bcdice/common_command/upper_dice.rb +2 -0
  35. data/lib/bcdice/common_command/upper_dice/parser.rb +118 -97
  36. data/lib/bcdice/common_command/version.rb +3 -1
  37. data/lib/bcdice/deprecated/checker.rb +6 -6
  38. data/lib/bcdice/dice_table.rb +3 -0
  39. data/lib/bcdice/dice_table/chain_table.rb +2 -0
  40. data/lib/bcdice/dice_table/d66_grid_table.rb +2 -0
  41. data/lib/bcdice/dice_table/d66_parity_table.rb +36 -0
  42. data/lib/bcdice/dice_table/d66_range_table.rb +2 -0
  43. data/lib/bcdice/dice_table/d66_table.rb +2 -0
  44. data/lib/bcdice/dice_table/roll_result.rb +2 -0
  45. data/lib/bcdice/dice_table/table.rb +2 -0
  46. data/lib/bcdice/enum.rb +2 -0
  47. data/lib/bcdice/format.rb +2 -0
  48. data/lib/bcdice/game_system.rb +10 -0
  49. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  50. data/lib/bcdice/game_system/AlchemiaStruggle.rb +346 -0
  51. data/lib/bcdice/game_system/Alshard.rb +1 -2
  52. data/lib/bcdice/game_system/Amadeus.rb +1 -1
  53. data/lib/bcdice/game_system/AngelGear.rb +123 -0
  54. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -5
  55. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  56. data/lib/bcdice/game_system/BBN.rb +7 -5
  57. data/lib/bcdice/game_system/BadLife.rb +2 -2
  58. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  59. data/lib/bcdice/game_system/BeastBindTrinity.rb +3 -12
  60. data/lib/bcdice/game_system/BeginningIdol.rb +4 -4
  61. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +4 -4
  62. data/lib/bcdice/game_system/BladeOfArcana.rb +4 -4
  63. data/lib/bcdice/game_system/BlindMythos.rb +12 -10
  64. data/lib/bcdice/game_system/BloodCrusade.rb +54 -80
  65. data/lib/bcdice/game_system/BloodMoon.rb +43 -2
  66. data/lib/bcdice/game_system/CardRanker.rb +24 -64
  67. data/lib/bcdice/game_system/ChaosFlare.rb +4 -4
  68. data/lib/bcdice/game_system/Chill.rb +1 -1
  69. data/lib/bcdice/game_system/CodeLayerd.rb +37 -67
  70. data/lib/bcdice/game_system/ColossalHunter.rb +2 -2
  71. data/lib/bcdice/game_system/Cthulhu.rb +8 -4
  72. data/lib/bcdice/game_system/Cthulhu7th.rb +42 -336
  73. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  74. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  75. data/lib/bcdice/game_system/CthulhuTech.rb +1 -2
  76. data/lib/bcdice/game_system/DarkBlaze.rb +5 -5
  77. data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
  78. data/lib/bcdice/game_system/DesperateRun.rb +163 -0
  79. data/lib/bcdice/game_system/DetatokoSaga.rb +25 -7
  80. data/lib/bcdice/game_system/DetatokoSaga_Korean.rb +3 -3
  81. data/lib/bcdice/game_system/DiceBot.rb +22 -4
  82. data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
  83. data/lib/bcdice/game_system/DoubleCross.rb +61 -94
  84. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  85. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  86. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  87. data/lib/bcdice/game_system/Elysion.rb +2 -2
  88. data/lib/bcdice/game_system/EmbryoMachine.rb +6 -6
  89. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -2
  90. data/lib/bcdice/game_system/FilledWith.rb +3 -3
  91. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -2
  92. data/lib/bcdice/game_system/GURPS.rb +1 -1
  93. data/lib/bcdice/game_system/Garako.rb +14 -5
  94. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  95. data/lib/bcdice/game_system/GehennaAn.rb +4 -4
  96. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  97. data/lib/bcdice/game_system/Gorilla.rb +1 -1
  98. data/lib/bcdice/game_system/Gundog.rb +1 -1
  99. data/lib/bcdice/game_system/GundogRevised.rb +3 -3
  100. data/lib/bcdice/game_system/GundogZero.rb +2 -2
  101. data/lib/bcdice/game_system/GurpsFW.rb +2 -5
  102. data/lib/bcdice/game_system/HarnMaster.rb +1 -1
  103. data/lib/bcdice/game_system/HatsuneMiku.rb +2 -2
  104. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  105. data/lib/bcdice/game_system/HuntersMoon.rb +17 -110
  106. data/lib/bcdice/game_system/Illusio.rb +25 -34
  107. data/lib/bcdice/game_system/InfiniteBabeL.rb +518 -0
  108. data/lib/bcdice/game_system/JekyllAndHyde.rb +42 -0
  109. data/lib/bcdice/game_system/JuinKansen.rb +251 -0
  110. data/lib/bcdice/game_system/KanColle.rb +17 -166
  111. data/lib/bcdice/game_system/KillDeathBusiness.rb +35 -44
  112. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +2 -1
  113. data/lib/bcdice/game_system/LogHorizon.rb +8 -8
  114. data/lib/bcdice/game_system/LostRoyal.rb +2 -4
  115. data/lib/bcdice/game_system/MagicaLogia.rb +3 -3
  116. data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
  117. data/lib/bcdice/game_system/MeikyuDays.rb +2 -2
  118. data/lib/bcdice/game_system/MeikyuKingdom.rb +3 -3
  119. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +3 -3
  120. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  121. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -2
  122. data/lib/bcdice/game_system/MonotoneMuseum.rb +4 -3
  123. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +1 -1
  124. data/lib/bcdice/game_system/NSSQ.rb +2 -2
  125. data/lib/bcdice/game_system/Nechronica.rb +3 -3
  126. data/lib/bcdice/game_system/NeverCloud.rb +540 -5
  127. data/lib/bcdice/game_system/NightWizard.rb +2 -2
  128. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  129. data/lib/bcdice/game_system/NightmareHunterDeep.rb +3 -4
  130. data/lib/bcdice/game_system/NinjaSlayer.rb +30 -41
  131. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  132. data/lib/bcdice/game_system/OracleEngine.rb +14 -18
  133. data/lib/bcdice/game_system/OrgaRain.rb +17 -25
  134. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  135. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  136. data/lib/bcdice/game_system/Peekaboo.rb +1 -1
  137. data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
  138. data/lib/bcdice/game_system/Postman.rb +1 -1
  139. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  140. data/lib/bcdice/game_system/Raisondetre.rb +1 -1
  141. data/lib/bcdice/game_system/RecordOfLodossWar.rb +8 -7
  142. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  143. data/lib/bcdice/game_system/RokumonSekai2.rb +3 -3
  144. data/lib/bcdice/game_system/RuinBreakers.rb +1 -1
  145. data/lib/bcdice/game_system/RyuTuber.rb +6 -4
  146. data/lib/bcdice/game_system/Ryutama.rb +2 -2
  147. data/lib/bcdice/game_system/SRS.rb +1 -6
  148. data/lib/bcdice/game_system/SamsaraBallad.rb +5 -4
  149. data/lib/bcdice/game_system/Satasupe.rb +90 -865
  150. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  151. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  152. data/lib/bcdice/game_system/SharedFantasia.rb +1 -1
  153. data/lib/bcdice/game_system/ShinkuuGakuen.rb +3 -3
  154. data/lib/bcdice/game_system/ShinobiGami.rb +75 -39
  155. data/lib/bcdice/game_system/ShoujoTenrankai.rb +1 -1
  156. data/lib/bcdice/game_system/Skynauts.rb +2 -2
  157. data/lib/bcdice/game_system/SteamPunkers.rb +7 -5
  158. data/lib/bcdice/game_system/StellarKnights.rb +1 -3
  159. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  160. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
  161. data/lib/bcdice/game_system/StratoShout.rb +10 -36
  162. data/lib/bcdice/game_system/StratoShout_Korean.rb +2 -1
  163. data/lib/bcdice/game_system/SwordWorld.rb +46 -182
  164. data/lib/bcdice/game_system/SwordWorld2_0.rb +21 -149
  165. data/lib/bcdice/game_system/SwordWorld2_5.rb +126 -40
  166. data/lib/bcdice/game_system/TherapieSein.rb +2 -2
  167. data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
  168. data/lib/bcdice/game_system/Torg.rb +2 -2
  169. data/lib/bcdice/game_system/TorgEternity.rb +5 -8
  170. data/lib/bcdice/game_system/TrinitySeven.rb +2 -2
  171. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +7 -7
  172. data/lib/bcdice/game_system/TwilightGunsmoke.rb +2 -2
  173. data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
  174. data/lib/bcdice/game_system/Utakaze.rb +2 -2
  175. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  176. data/lib/bcdice/game_system/Warhammer.rb +7 -7
  177. data/lib/bcdice/game_system/Warhammer4.rb +10 -13
  178. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  179. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  180. data/lib/bcdice/game_system/Yggdrasill.rb +605 -0
  181. data/lib/bcdice/game_system/ZettaiReido.rb +2 -2
  182. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
  183. data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
  184. data/lib/bcdice/game_system/meikyu_kingdom/item_table.rb +2 -0
  185. data/lib/bcdice/game_system/meikyu_kingdom/kingdom_name_table.rb +2 -0
  186. data/lib/bcdice/game_system/meikyu_kingdom/landscape_table.rb +2 -0
  187. data/lib/bcdice/game_system/meikyu_kingdom/name_tables.rb +2 -0
  188. data/lib/bcdice/game_system/meikyu_kingdom/placename_table.rb +2 -0
  189. data/lib/bcdice/game_system/meikyu_kingdom/tables.rb +2 -0
  190. data/lib/bcdice/game_system/meikyu_kingdom/word_table.rb +2 -0
  191. data/lib/bcdice/game_system/meikyu_kingdom_basic/item_table.rb +2 -0
  192. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +2 -0
  193. data/lib/bcdice/game_system/meikyu_kingdom_basic/name_table.rb +2 -0
  194. data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +2 -0
  195. data/lib/bcdice/game_system/meikyu_kingdom_basic/word_table.rb +2 -0
  196. data/lib/bcdice/game_system/one_way_heroics/dungeon_table.rb +2 -0
  197. data/lib/bcdice/game_system/one_way_heroics/random_event_table.rb +2 -0
  198. data/lib/bcdice/game_system/one_way_heroics/tables.rb +2 -0
  199. data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
  200. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
  201. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
  202. data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
  203. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +104 -0
  204. data/lib/bcdice/loader.rb +11 -4
  205. data/lib/bcdice/normalize.rb +3 -1
  206. data/lib/bcdice/preprocessor.rb +12 -8
  207. data/lib/bcdice/randomizer.rb +14 -0
  208. data/lib/bcdice/repl.rb +3 -1
  209. data/lib/bcdice/result.rb +4 -0
  210. data/lib/bcdice/translate.rb +2 -0
  211. data/lib/bcdice/user_defined_dice_table.rb +28 -15
  212. data/lib/bcdice/version.rb +3 -1
  213. metadata +28 -27
  214. data/.editorconfig +0 -21
  215. data/.github/.codecov.yaml +0 -10
  216. data/.github/workflows/coverage.yaml +0 -21
  217. data/.github/workflows/lint.yaml +0 -13
  218. data/.github/workflows/test.yml +0 -20
  219. data/.gitignore +0 -14
  220. data/.rubocop.yml +0 -108
  221. data/.rubocop_todo.yml +0 -114
  222. data/Gemfile +0 -14
  223. data/ROADMAP.md +0 -30
  224. data/Rakefile +0 -152
  225. data/bcdice.gemspec +0 -29
  226. data/bin/repl.rb +0 -21
  227. data/docs/README.txt +0 -2028
  228. data/docs/dicebot_sort_key.md +0 -72
  229. data/docs/how_to_make_dicebot.md +0 -453
  230. data/lib/bcdice/command_parser.rb +0 -242
  231. data/lib/bcdice/common_command/add_dice/parser.y +0 -153
  232. data/lib/bcdice/common_command/barabara_dice/parser.y +0 -107
  233. data/lib/bcdice/common_command/calc/parser.y +0 -79
  234. data/lib/bcdice/common_command/reroll_dice/parser.y +0 -158
  235. data/lib/bcdice/common_command/upper_dice/parser.y +0 -143
@@ -2,12 +2,11 @@
2
2
 
3
3
  require 'bcdice/game_system/SRS'
4
4
 
5
- # メタリックガーディアンのダイスボット
6
5
  module BCDice
7
6
  module GameSystem
8
7
  class MetallicGuardian < SRS
9
8
  # 固有のコマンドの接頭辞を設定する
10
- register_prefix('2D6.*', 'MG.*')
9
+ register_prefix('2D6', 'MG')
11
10
 
12
11
  # 成功判定のエイリアスコマンドを設定する
13
12
  set_aliases_for_srs_roll('MG')
@@ -26,7 +26,7 @@ module BCDice
26
26
    自動成功、自動失敗、成功、失敗を自動表示します。
27
27
  ・各種表
28
28
   ・感情表 ET/感情表 2.0 ET2
29
-  ・兆候表 OT/兆候表ver2.0 OT2
29
+  ・兆候表 OT/兆候表ver2.0 OT2/兆候表ver3.0 OT3
30
30
   ・歪み表 DT/歪み表ver2.0 DT2/歪み表(野外) DTO/歪み表(海) DTS/歪み表(館・城) DTM
31
31
   ・世界歪曲表 WDT/世界歪曲表2.0 WDT2
32
32
   ・永劫消失表 EDT
@@ -59,7 +59,7 @@ module BCDice
59
59
  private
60
60
 
61
61
  def check_roll(command)
62
- m = /^(\d+)D6([\+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.match(command)
62
+ m = /^(\d+)D6([+\-\d]*)>=(\d+)(\[(\d+)?(,(\d+))?\])?$/i.match(command)
63
63
  unless m
64
64
  return nil
65
65
  end
@@ -141,13 +141,14 @@ module BCDice
141
141
  "DTS" => MMTable.from_i18n("MonotoneMuseum.table.DTS", locale),
142
142
  "EDT" => DiceTable::Table.from_i18n("MonotoneMuseum.table.EDT", locale),
143
143
  "DTM" => MMTable.from_i18n("MonotoneMuseum.table.DTM", locale),
144
+ "OT3" => DiceTable::Table.from_i18n("MonotoneMuseum.table.OT3", locale),
144
145
  }
145
146
  end
146
147
  end
147
148
 
148
149
  TABLES = translate_tables(:ja_jp).freeze
149
150
 
150
- register_prefix('\d+D6.*', TABLES.keys)
151
+ register_prefix('\d+D6', TABLES.keys)
151
152
  end
152
153
  end
153
154
  end
@@ -23,7 +23,7 @@ module BCDice
23
23
    자동성공, 자동실패, 성공, 실패를 자동표기합니다.
24
24
  ・각종표
25
25
   ・감정표 ET/감정표 2.0 ET2
26
-  ・징조표 OT/兆候表ver2.0 OT2
26
+  ・징조표 OT/兆候表ver2.0 OT2/兆候表ver3.0 OT3
27
27
   ・일그러짐표 DT/일그러짐표ver2.0 DT2/歪み表(野外) DTO/歪み表(海) DTS/歪み表(館・城) DTM
28
28
   ・세계왜곡표  WDT/世界歪曲表2.0 WDT2
29
29
   ・永劫消失表 EDT
@@ -40,7 +40,7 @@ module BCDice
40
40
 
41
41
  # 判定
42
42
  def roll_sq(command)
43
- m = /(\d+)SQ([\+\-\d]+)?/i.match(command)
43
+ m = /(\d+)SQ([+\-\d]+)?/i.match(command)
44
44
  return nil unless m
45
45
 
46
46
  dice_count = m[1].to_i
@@ -116,7 +116,7 @@ module BCDice
116
116
 
117
117
  # 採取ロール
118
118
  def collecting_roll(command)
119
- m = /([TSG])C([\+\-\d]+)?/i.match(command)
119
+ m = /([TSG])C([+\-\d]+)?/i.match(command)
120
120
  return nil unless m
121
121
 
122
122
  type = m[1]
@@ -40,9 +40,9 @@ module BCDice
40
40
  private
41
41
 
42
42
  def replace_text(string)
43
- string = string.gsub(/(\d+)NC(10)?([\+\-][\+\-\d]+)/i) { "#{Regexp.last_match(1)}R10#{Regexp.last_match(3)}[0]" }
43
+ string = string.gsub(/(\d+)NC(10)?([+\-][+\-\d]+)/i) { "#{Regexp.last_match(1)}R10#{Regexp.last_match(3)}[0]" }
44
44
  string = string.gsub(/(\d+)NC(10)?/i) { "#{Regexp.last_match(1)}R10[0]" }
45
- string = string.gsub(/(\d+)NA(10)?([\+\-][\+\-\d]+)/i) { "#{Regexp.last_match(1)}R10#{Regexp.last_match(3)}[1]" }
45
+ string = string.gsub(/(\d+)NA(10)?([+\-][+\-\d]+)/i) { "#{Regexp.last_match(1)}R10#{Regexp.last_match(3)}[1]" }
46
46
  string = string.gsub(/(\d+)NA(10)?/i) { "#{Regexp.last_match(1)}R10[1]" }
47
47
 
48
48
  return string
@@ -82,7 +82,7 @@ module BCDice
82
82
  string = replace_text(string)
83
83
  debug("nechronica_check string", string)
84
84
 
85
- unless /(^|\s)S?((\d+)[rR]10([\+\-\d]+)?(\[(\d+)\])?)(\s|$)/i =~ string
85
+ unless /(^|\s)S?((\d+)[rR]10([+\-\d]+)?(\[(\d+)\])?)(\s|$)/i =~ string
86
86
  return nil
87
87
  end
88
88
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/dice_table/table"
4
+
3
5
  module BCDice
4
6
  module GameSystem
5
7
  class NeverCloud < Base
@@ -22,18 +24,26 @@ module BCDice
22
24
   x:振るダイスの数。
23
25
   ±y:固定値・修正値。省略可能。
24
26
   z:目標値。省略可能。
27
+  ダイスの出目ふたつが6ならクリティカル(自動成功)
28
+  ダイスの出目すべてが1ならファンブル(自動失敗)
25
29
   例) 2NC+2>=5 1NC
30
+ ・ルール詳細、表の一覧(LIST)
26
31
  MESSAGETEXT
27
32
 
28
- # ダイスボットで使用するコマンドを配列で列挙する
29
- register_prefix('\d+NC.*', '\d+D6?([\+\-\d]*)>=\d+')
30
-
31
33
  def eval_game_system_specific_command(command)
32
- m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match(command)
33
- unless m
34
+ if /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match?(command)
35
+ return check_action(command)
36
+ elsif TEXTS.key?(command)
37
+ return TEXTS[command].chomp
38
+ elsif TABLES.key?(command)
39
+ return roll_tables(command, TABLES)
40
+ else
34
41
  return nil
35
42
  end
43
+ end
36
44
 
45
+ def check_action(command)
46
+ m = /^(\d+)(?:NC|D6?)((?:[-+]\d+)*)(>=(\d+))?$/i.match(command)
37
47
  dice_count = m[1].to_i
38
48
  modify_str = m[2]
39
49
  modify_number = ArithmeticEvaluator.eval(modify_str)
@@ -69,6 +79,531 @@ module BCDice
69
79
 
70
80
  return sequence.join(" > ")
71
81
  end
82
+
83
+ TEXTS = {
84
+ 'LIST' => <<~TEXT,
85
+ ※注記:このダイスボットデータは『ネバークラウドTRPG』公式『私立彩音学園』主導の下で制作されました。
86
+ ・公式サイト:https://sion-academy.wixsite.com/nctrpg
87
+ ・公式リプレイ:https://sion-academy.wixsite.com/nctrpg-kaleido
88
+ ・キャラ作成アプリ:https://nctrpg.com/bloomi
89
+
90
+ ・判定(xD6±y>=z)
91
+ 2D6(CHAR1) ・所属表(2D6またはRoC。基本ルール書籍版P33)
92
+ 2D6(CHRA2) ・趣味表(2D6またはRoC。基本ルール書籍版P38)
93
+ 2D6(CHAR3) ・リビド武装形状表(2D6またはRoC。基本ルール書籍版P39)
94
+ 2D6(NAYA1) 悩みの詳細表・愛/Love:得意方向(正面)(2D6またはRoC。基本ルール書籍版P49)
95
+ 2D6(NAYA2) 悩みの詳細表・体/Figure:得意方向(正面)(2D6またはRoC。基本ルール書籍版P49)
96
+ 2D6(NAYA3) 悩みの詳細表・才/Talent:得意方向(背面)(2D6またはRoC。基本ルール書籍版P49)
97
+ 2D6(NAYA4) 悩みの詳細表・絆/Bonds:得意方向(側面)(2D6またはRoC。基本ルール書籍版P49)
98
+ 2D6(NAYA5) 悩みの詳細表・住/Home:得意方向(側面)(2D6またはRoC。基本ルール書籍版P49)
99
+ 各種RoC表はコマンドの最後にアルファベットのLを付けることにより一覧表示が可能
100
+
101
+ (LIKE) LIKE(基本ルール書籍版P60)
102
+ (RESE1) リサーチカード(基本ルール書籍版P63)
103
+ (RESE2) インタビュー(基本ルール書籍版P62)
104
+ (RESE3) パイルドライヴ(基本ルール書籍版P64)
105
+ (RESE4) [決意]と[使命](基本ルール書籍版P61)
106
+
107
+ (ARTS) リビドアーツのデータ項目(基本ルール書籍版P40)
108
+ (STAT1) SSリスト(基本ルール書籍版P41)
109
+ (STAT2) LSリスト(基本ルール書籍版P411)
110
+ (ACTI1) タイミング:サブアクション(基本ルール書籍版P422)
111
+ (ACTI2) タイミング:メインアクション(基本ルール書籍版P42)
112
+ (ACTI3) タイミング:インスタント(基本ルール書籍版P42)
113
+ (ACTI4) サーヴァント共通アクション(基本ルール書籍版P42)
114
+
115
+ (BATT1) ラストパイル(基本ルール書籍版P67)
116
+ (BATT2) 攻撃の手順(メインアクションで行う)01.攻撃宣言ステップ(基本ルール書籍版P74)
117
+ (BATT3) 攻撃の手順(メインアクションで行う)02.命中判定ステップ(基本ルール書籍版P74)
118
+ (BATT4) 攻撃の手順(メインアクションで行う)03.ダメージ決定ステップ(基本ルール書籍版P74)
119
+ (BATT5) 攻撃の手順(メインアクションで行う)04.ダメージ適用ステップ(基本ルール書籍版P74)
120
+ (BATT6) [決意]の効果(基本ルール書籍版P61)
121
+ (BATT7) [使命]の効果(基本ルール書籍版P61)
122
+ (BATT8) パケット(基本ルール書籍版P69)
123
+ (BATT9) リビドストーム(基本ルール書籍版P71)
124
+ (PIET1) ピーターの基本的な性質(基本ルール書籍版P72)
125
+ (PIET2) 《AoE》(Area_of_Effect)(基本ルール書籍版P72)
126
+ (PIET3) ピーターの「行動指針」((2D6またはRoC。基本ルール書籍版P110)
127
+
128
+ (MINI1) 基本ルールからねばくらミニへの変更点(ねばくらミニ書籍版P05)
129
+ (MINI2) ねばくらミニでのリサーチのルール変更点(ねばくらミニ書籍版P11)
130
+ (MINI3) ねばくらミニでのバトル演出のルール(ねばくらミニ書籍版P12)
131
+ (MINI4) ねばくらミニでのアーツ(ねばくらミニ書籍版P13)
132
+ (MINI5) ねばくらミニでのスペシャルアーツ(ねばくらミニ書籍版P13)
133
+ (MINI6) ねばくらミニでのポータルとサーヴァント(ねばくらミニ書籍版P14)
134
+ TEXT
135
+ 'LIKE' => <<~TEXT,
136
+ LIKE(基本ルール書籍版P60)
137
+ ・全ての参加者(PLやGMや見学者)はセッション中にPCやGMのロールプレイや行動に、
138
+  共感や称賛や琴線に触れた時[LIKE:~]と言ってその内容と共に記述して蓄積して行く。
139
+ ・リサーチ中では手番を消費せず[LIKE]1点ごとに対象の{HP}を[50]点回復させても良い。
140
+ TEXT
141
+ 'RESE1' => <<~TEXT,
142
+ リサーチカード(基本ルール書籍版P63)
143
+ ・リサーチ中に捜査対象とされるもの。オモテ面に「名称」「難易度」「ピーターのバフ」「情景描写」が記述される。
144
+ ・「ウラ面」には[Pコトノハ]「暴露描写」が記述される。「暴露描写」を閲覧したロールプレイは主に[LIKE]の創出に寄与する。
145
+ ・リサーチカードの選択とWコトノハと使用能力値の提示→PCのロールプレイ→判定が成功の場合→GMから暴露描写の提示→PCのロールプレイ。
146
+ TEXT
147
+ 'RESE2' => <<~TEXT,
148
+ インタビュー(基本ルール書籍版P62)
149
+ ・自分以外のPC1人の「悩みの詳細」「追加設定」または〈パイルドライヴ〉済みの暴露描写1つを対象とし、
150
+  その内容を拡張するような質問をする。対象となったPCまたはGMは「追加設定」を作成して公開する。
151
+ ・質問者は「追加設定」から単語かフレーズ1つを切り出し[ワード]として記録する。
152
+ ・これらの「追加設定」やロールプレイは主に[LIKE]の創出に寄与される。
153
+ TEXT
154
+ 'RESE3' => <<~TEXT,
155
+ パイルドライヴ(基本ルール書籍版P64)
156
+ ・調査判定時にプリプレイで選択した[Wコトノハ]と「ウラ面」の[Pコトノハ]が同一ならば、
157
+  自動成功(レゾナンス・パイルドライヴ)として、PCは[30]のHPダメージを受け「ウラ面」を開示する。
158
+ ・[Pコトノハ]が合っておらずとも「[RW能力値/知識/コミュ力/趣味]+2D」の判定で
159
+ 「難易度」以上ならば成功(パイルドライヴ)として、PCは[30]のHPダメージを受け「ウラ面」を開示し[Pコトノハ]を手に入れる。
160
+ ・指定されたサイクル以内に「ウラ面」を開示できなかった、
161
+  リサーチカードの「ピーターのバフ」は戦闘シーンの〈ピーター〉に付与される。
162
+ TEXT
163
+ 'RESE4' => <<~TEXT,
164
+ [決意]と[使命](基本ルール書籍版P61)
165
+ ・リサーチ終了時に[LIKE]を[決意]という戦闘時に使用する単位に変換する。
166
+ ・この時[LIKE]が50個以上の場合、GMは[決意]を無制限に使用することにしても良い。
167
+ ・これとは別にGMは[LIKE]の合計点を5で割った値を[使命]言う単位(最大5点)とする。
168
+  [決意]と[使命]は[Pコトノハ][Sコトノハ][ワード]の単語ごとに割り振られ、これらの単語を使用したロールプレイを推奨する。
169
+ TEXT
170
+ 'ARTS' => <<~TEXT,
171
+ リビドアーツのデータ項目(基本ルール書籍版P40)
172
+ ・射程:起点から『ぴったり』に、何Sq離れたキャラクターを対象に取れるかを示す。射程0は自身のみのことである。
173
+ ・威力:そのアーツを使用した結果に対象に及ぼす数値を示す。ダイスロールを含む場合「威力ロール」と呼ぶ。
174
+ ・コスト/制限:コストとして実行者の{パケット}をn点上昇させる。
175
+ ・スペシャルアーツ:「タイミング:インスタント」必ず[決意]1点を消費する。この時「[決意]の効果」は発生しない。
176
+ ・アーツのリネーム:取得アーツはPCの設定に合わせ(他のアーツと誤解させないよう)名前を好きに変更しても良い。
177
+ TEXT
178
+ 'STAT1' => <<~TEXT,
179
+ SSリスト(基本ルール書籍版P41)
180
+  下記4つのショートステータス(SS)は準備プロセス終了時に解除される。
181
+ ・[SS感覚障害] 全ての判定に-1D&{技量}が0になる(判定時のダイス目の1はファンブルになる)
182
+ ・[SS混乱] 行動前に1Dを振り偶数だった場合は行動できない。
183
+ ・[SS危機] 回避判定を行えず「致命的命中(ダメージ2倍)になる。
184
+ ・[SSマーク] 「{パケット}の値が最も高いPC、[レッド]として扱う。
185
+ TEXT
186
+ 'STAT2' => <<~TEXT,
187
+ LSリスト(基本ルール書籍版P41)
188
+  下記4つのロングステータス(LS)は準備プロセス終了時に解除されない。
189
+ ・[リフレクト] ダメージを受けた時その2倍の値のダメージを相手に与え効果を解除する。
190
+ ・[ブースト:n] [威力ロール]の前に消費を選択した場合は威力ロールに[+n]を与え効果を解除する。
191
+ ・[DoT:xTn](Damage_on_Time) 準備プロセスにx点のHPダメージを受け、
192
+  nを1減らし0になると解除される。効果が累積した場合それぞれ大きい値になる。
193
+ ・[行動不能] HPが0になった時[未行動]でなくなり、全ての行動や判定を行うことができない。
194
+  {パケット}が0になり全てのSSが解除される。《助け起こす》または[フレンドシップ]1つ消費して[未行動]になることで解除できる。
195
+ TEXT
196
+ 'ACTI1' => <<~TEXT,
197
+ タイミング:サブアクション(基本ルール書籍版P42)
198
+ ・《通常移動》{移動力}Sq数まで自分のコマを動かす。
199
+ ・《全力移動》{移動力}+2Sq数まで自分のコマを動かす。メインアクションを行う権利を失う。
200
+ TEXT
201
+ 'ACTI2' => <<~TEXT,
202
+ タイミング:メインアクション(基本ルール書籍版P42)
203
+ ・《かばう》射程0~2。次に対象が受けるダメージを1回だけ肩代わりする。
204
+ ・《武装解除》即座にそのバトルシーンから退場する。そのシーンに復帰することができない。
205
+ ・《助け起こす》射程:1。他のPCの[行動不能]を解除し{HP}を1まで回復する。
206
+ TEXT
207
+ 'ACTI3' => <<~TEXT,
208
+ タイミング:インスタント(基本ルール書籍版P42)
209
+  (行動権プロセスに使用する。1回のタイミングに行動は1回まで)
210
+ ・《シフト》制限:シーン1回。即座に2Sqまで移動できる。
211
+ ・《ギミック解除》射程1。制限:サイクル1回。「要求能力値」があるギミックに判定を行い[達成値]8以上だった場合これを除外する。
212
+ ・《クイックロード》制限:シーン1回。バトルシーン最初の行動権プロセスでのみ使用できる。使用者の{パケット}を+3する。
213
+ TEXT
214
+ 'ACTI4' => <<~TEXT,
215
+ サーヴァント共通アクション(基本ルール書籍版P42)
216
+ ・《リバース》タイミング:インスタントまたは戦闘開始時。射程:1。サーヴァントコマが無い場合新たに設置し{HP}10を譲り渡す。
217
+ ・《相互移動》タイミング:サブアクション。サーヴァントと自身を合計4Sqまで移動できる。
218
+ ・《複数視点》タイミング:インスタント。制限:サイクル1回&サーヴァントと分離中のみ。次の回避判定に+2の修正を得る。
219
+ TEXT
220
+ 'BATT1' => <<~TEXT,
221
+ ラストパイル(基本ルール書籍版P67)
222
+  各PCはそれまでに集まった[決意]や「ワード」から使いたい言葉を含んだロールプレイによって
223
+ 「戦う理由」を宣言すること。行わなければ次のバトルシーンのエンカウントシート上に登場することができない。
224
+ TEXT
225
+ 'BATT2' => <<~TEXT,
226
+ 攻撃の手順(メインアクションで行う)01.攻撃宣言ステップ(基本ルール書籍版P74)
227
+ ・攻撃側は攻撃に用いる行動と対象とコスト/制限の宣言を行う。
228
+ ・GMが対象が適切であることを確認し(適切でないなら巻き戻す)をコスト/制限の支払いを確認する。
229
+ ・攻撃側が〈ピーター〉なら、攻撃の対象に{正面}を向ける(向きを変えるのはこの場面のみ)
230
+ TEXT
231
+ 'BATT3' => <<~TEXT,
232
+ 攻撃の手順(メインアクションで行う)02.命中判定ステップ(基本ルール書籍版P74)
233
+ 「判定」が「自動成功」「受動任意」の場合「命中」したとして、ダメージ決定ステップに移る。
234
+ ・攻撃側は[命中値](=行動による固定値+{技量}+「ポータル」による修正値)を宣言する。
235
+ ・防御側は[回避値](=2D6の値)を宣言する。
236
+ ・攻撃側の1ゾロまたは防御側が6ゾロの場合「全回避」として、攻撃の終了に移る。
237
+ ・[命中値]≦[回避値]の場合「半回避」になる。
238
+ ・[命中値]>[回避値]の場合「命中」になる。
239
+ ・防御側が1ゾロの場合「致命的命中」として、03.ダメージ決定ステップに移る。
240
+ TEXT
241
+ 'BATT4' => <<~TEXT,
242
+ 攻撃の手順(メインアクションで行う)03.ダメージ決定ステップ(基本ルール書籍版P74)
243
+  この手順は決して巻き戻さず下記の順で累積させて、04.ダメージ適用ステップに移る。
244
+ ・攻撃側は[ブースト]を使用するか決定する。
245
+ ・攻撃側は次に[威力ロール]を使うダメージを算出する。
246
+ ・攻撃側は最後に[威力ロール]を使わない(特殊効果による)ダメージを算出する。
247
+ TEXT
248
+ 'BATT5' => <<~TEXT,
249
+ 攻撃の手順(メインアクションで行う)04.ダメージ適用ステップ(基本ルール書籍版P74)
250
+ ・攻撃側が「{得意方向}以外への攻撃」または「半回避」の場合、HPダメージ半減(切り捨て)+SS無効(DoTは数値共に半減)
251
+ ・攻撃側が「{得意方向}以外への攻撃」かつ「半回避」の場合、2つの半減効果は累積しない。
252
+ ・回避側が「致命的命中」の場合、HPダメージ2倍にする。
253
+ ・攻撃側が「{得意方向}以外への攻撃」かつ回避側が「致命的命中」の場合、半減効果かつ2倍ダメージで元の数値に中和される。
254
+ ・以上のHPダメージを防御側の{HP}から引く。
255
+ ・防御側の{パケット}を1減らす。この時[リフレクト]をもっていた場合その2倍のHPダメージを攻撃側に与える。
256
+ ・最後に「{得意方向}への攻撃」だった場合、攻撃側は[SS危機]を受ける。
257
+ TEXT
258
+ 'BATT6' => <<~TEXT,
259
+ [決意]の効果(基本ルール書籍版P61)
260
+ ・〈ピーター〉の{アーツ}を1つ、または{HP}残量、または{行動指針}を公開させる。
261
+ ・直前のPCまたは〈ピーター〉の判定を1回だけ振り直させる。
262
+ ・行動権プロセスでPCの誰か1人の[SS危機]1つを即座に解除する。
263
+ TEXT
264
+ 'BATT7' => <<~TEXT,
265
+ [使命]の効果(基本ルール書籍版P61)
266
+ ・行動権プロセスで〈ピーター〉のSS1つを解除する。
267
+ ・行動権プロセスで〈ピーター〉の向きを90度変える(制限:サイクル中2回)
268
+ ・行動権プロセスで[未行動]のPC1人を[レッド]にする(制限:シーン中1回)
269
+ ・次の〈ピーター〉の手番で全PCの{パケット}が0とする(攻撃対象の基準が行動指針になる)(制限:シーン中1回)
270
+ TEXT
271
+ 'BATT8' => <<~TEXT,
272
+ パケット(基本ルール書籍版P69)
273
+  {パケット}に上限は無く最低値は0である。戦闘開始時と戦闘終了時に各PCの{パケット}を0にする。
274
+  {リビドアーツ}の使用時にコストとして上昇し、ダメージを受けたPCはダメージ適用ステップで「{パケット}を-1」する。
275
+  サーヴァントの{パケット}は自らのPCと同じくする。
276
+ TEXT
277
+ 'BATT9' => <<~TEXT,
278
+ リビドストーム(基本ルール書籍版P71)
279
+ 〈ピーター〉のナナメにあるSqを【リビドストーム】と呼ぶ。
280
+  このSqにいるキャラクターは攻撃の際に自身の{得意方向}の効果が無効になる。
281
+ TEXT
282
+ 'PIET1' => <<~TEXT,
283
+ ピーターの基本的な性質(基本ルール書籍版P72)
284
+ ・《AoE》(Area_of_Effect)を持つ。{リビドタイプ}と{属性}と{得意方向}と{パケット}を持たず、移動しない。
285
+ ・〈ピーター〉が攻撃対象を選択する場合、特別な記載が無い限り「{パケット}の値が最も高い[レッド]」のPCを優先的に選択し
286
+ 「向き」を変えて攻撃する(向きを変えるのはこの場面のみ)[レッド]が複数いる場合その中で[SS危機]を持つPCを特に優先する。
287
+  さらに対象が複数いる場合「行動指針」の影響を受ける。
288
+ 「行動指針」のリストの上下端に近いものほど処理が複雑化したり、PCの行動を制限するため推奨されない。
289
+ TEXT
290
+ 'PIET2' => <<~TEXT,
291
+ 《AoE》(Area_of_Effect)(基本ルール書籍版P72)
292
+  選択したAoEエリア_命中:自動成功_威力:50+(10×{PR})
293
+  サイクル開始時に効果範囲を設置、終了時に起動して効果範囲内のPCにダメージを与える。
294
+  サイクル開始時に効果範囲内であっても起動時までに範囲外であればダメージは受けない。
295
+ TEXT
296
+ 'PIET3' => <<~TEXT,
297
+ ピーターの「行動指針」((2D6またはRoC。基本ルール書籍版P110)
298
+ 02:ストーカー : 戦闘開始時にPCを1人指定し、そのPCを標的にする。
299
+ 03:強敵狙い : 現在のサイクルで最も高い威力ロールを行ったPCを標的にする。
300
+ 04:近距離狙い : このエネミーに最も近いPCを標的にする。
301
+ 05:マウンティング : このエネミーよりも行動力の低いPCを標的にする。
302
+ 06:同族狙い : 〈ターゲット〉と同じ属性のPCを標的にする。
303
+ 07:遠距離狙い : このエネミーから最も遠いPCを標的にする。
304
+ 08:ハンター : SSを所持しているPCを標的にする。
305
+ 09:とどめ打ち : {HP}が最大値の4分の1以下のPCを標的にする。
306
+ 10:臆病者狙い : 現在のサイクルでピーターから距離をとったPCを標的にする。
307
+ 11:特定属性狙い : 戦闘開始時に指定した属性のPCを標的にする。
308
+ 12:天の邪鬼 : [SS危機]を持たないPCを標的とし、持つPCは優先しなくなる。
309
+ TEXT
310
+ 'MINI1' => <<~TEXT,
311
+ 基本ルールからねばくらミニへの変更点(ねばくらミニ書籍版P05)
312
+ ・PLは3人(推定4時間)とする。人数を増やすのは構わないが所要時間を4人(5時間半)、5人(7時間半)とする。
313
+ ・リサーチフェイズは戦闘も含めたクエストフェイズと呼び替える。バトルフェイズは存在しない。
314
+ ・オープニングフェイズ、エンディングフェイズは1シーンのみとする。
315
+ ・クエストフェイズは導入のシーンと、捜査・宣戦布告・戦闘の演出(総計3サイクル)のクエストシーンによって構成される。
316
+  1つの手番の(テキストセッションの)所要時間の目安は10分ほど。
317
+  ラストパイルも、インタビューも、1人あたり1回10分の持ち時間を想定している。
318
+ TEXT
319
+ 'MINI2' => <<~TEXT,
320
+ ねばくらミニでのリサーチのルール変更点(ねばくらミニ書籍版P11)
321
+ ・[Wコトノハ]は宣言せず〈レゾナンス・パイルドライヴ〉は発生しない(プリプレイでも[Wコトノハ]を選択しない)
322
+ ・「ピーターのバフ」は無効になる。
323
+ ・《インタビュー》はPCごとにシーン1回10分とする。
324
+ TEXT
325
+ 'MINI3' => <<~TEXT,
326
+ ねばくらミニでのバトル演出のルール(ねばくらミニ書籍版P12)
327
+ ・エンカウントシート(移動・射程・方角・方向・AoEのルール)を使用せず「サイクル制限:1サイクル」で行う。
328
+ ・バトル演出中に全PCが出したHPダメージの値を累積して「ダメージ合計」に加算しサイクル終了時に「勝利値」以上であれば勝利する。
329
+ ・勝利値:[300+「ウラ返しにされなかったリサーチカードの枚数」×50]
330
+ ・PLが4人以上び場合、勝利値に[(人数-3)×100]をさらに加えてもよい。
331
+ TEXT
332
+ 'MINI4' => <<~TEXT,
333
+ ねばくらミニでのアーツ(ねばくらミニ書籍版P13)
334
+ ・攻撃アーツ:アーツの効果がそのまま適用される。HPダメージを「ダメージ合計」に加える。
335
+ ・DoTの選択ルール:使用者が望む場合(防御判定よりも前に宣言すること)
336
+  対象に適用された[DoT:xTn]を、[xかけるn÷2]のHPダメージとして扱う(対象が半回避した場合xとnの両方が半減する)
337
+ ・支援アーツ:対象が次に与えるHPダメージを倍にする(名前の違うアーツによるものであっても効果は累積しない)
338
+ 《リフレクト》上記の支援アーツの効果のかわりに、元の効果文のとおりに対象に[リフレクト]を与えてもよい。
339
+ ・支援アーツ:対象が次に受けるHPダメージを倍にする(名前の違うアーツによるものであっても効果は累積しない)
340
+ TEXT
341
+ 'MINI5' => <<~TEXT,
342
+ ねばくらミニでのスペシャルアーツ(ねばくらミニ書籍版P13)
343
+ ・コストとして[決意]を消費し1度はRPをする必要がある。
344
+ ・対象がPCなら、対象が次に与えるHPダメージを倍にする。他の「与えるHPダメージを倍にする」効果に累積する。
345
+ ・対象がエネミーなら、対象が次に受けるHPダメージを倍にする。他の「受けるHPダメージを倍にする」効果に累積する。
346
+ TEXT
347
+ 'MINI6' => <<~TEXT,
348
+ ねばくらミニでのポータルとサーヴァント(ねばくらミニ書籍版P14)。
349
+ ・「ポータル」なら威力ロールに+30してよい。
350
+ ・「サーヴァント」は自身が攻撃の対象になったとき、対象を自身のサーヴァントに変更してよい。
351
+ TEXT
352
+ 'CHAR1L' => <<~TEXT,
353
+ ・所属表(2D6またはRoC。基本ルール書籍版P33)
354
+ 2, 無職/専業主婦/専業主夫
355
+ 3, パート・アルバイト
356
+ 4, 中学生
357
+ 5, 高校生
358
+ 6, 大学生
359
+ 7, 短大/専門学校生
360
+ 8, 会社員
361
+ 9, 公務員
362
+ 10, 個人事業主
363
+ 11, フリーランス
364
+ 12, 経営者
365
+ TEXT
366
+ 'CHAR2L' => <<~TEXT,
367
+ ・趣味表(2D6またはRoC。基本ルール書籍版P38)
368
+ 2, プログラミング/ハッキング
369
+ 3, テレビゲーム/ボードゲーム
370
+ 4, 楽器演奏/作曲/編曲/DTM
371
+ 5, 工芸/アクセサリー/プラモデル制作
372
+ 6, イラスト/モデリング/デザイン
373
+ 7, 電子工作/機械工作
374
+ 8, 野球/サッカー/バスケ/テニス/バレエ/
375
+ 9, ファッション
376
+ 10, 自転車/BMX/バイク/車
377
+ 11, ライトノベル/漫画/アニメ
378
+ 12, ペット/ピクシー育成/生物観察
379
+ TEXT
380
+ 'CHAR3L' => <<~TEXT,
381
+ ・リビド武装形状表(2D6またはRoC。基本ルール書籍版P39)
382
+ 2, 模様。輝く五芒星や、巨大な数字など
383
+ 3, 人型。想い人、アニメキャラ、衣服など
384
+ 4, 魔法または超能力。炎や、謎のオーラなど
385
+ 5, 獣。調教された犬、カラス、ヘビなど
386
+ 6, 銃。拳銃、ライフル、火縄銃など
387
+ 7, 近接武器。ナイフ、バールのようなものなど
388
+ 8, 異形。巨大化した体や鉤爪、伸びる腕など
389
+ 9, ドローン。航空機タイプや四足歩行タイプなど
390
+ 10, モンスター。ゴーレム、悪魔、動く植物など
391
+ 11, 乗り物(乗ることは出来ないので注意)。車、戦闘機など。
392
+ 12, 他のどれでもない君のオリジナルのなにか
393
+ TEXT
394
+ 'NAYA1L' => <<~TEXT,
395
+ ●悩みの詳細表・愛/Love:得意方向(正面)(2D6またはRoC。基本ルール書籍版P49)
396
+ 2, オレには彼女が居るはずなのに誰にも見えない
397
+ 3, 好きになった人が同性。でも将来的には子供がほしい……
398
+ 4, あいつの彼女が可愛い
399
+ 5, タレントを愛してしまったが当たり前だけど告白のしようもない
400
+ 6, 好きなのに、あの人に告白できない。自分なんかが告白していい人じゃない……!
401
+ 7, ●●のことが好き。でもそれを伝えてしまったら、今の関係が崩れてしまいそうで怖い
402
+ 8, 相手が異性として見てくれない
403
+ 9, 僕の彼女は遠く離れた大学への進学を悩んでいる。応援するべきか、引き止めるべきか
404
+ 10, 一緒に遊びたいだけなのに、ついそっけない態度やいたずらをしてしまう
405
+ 11, オレの彼女が可愛すぎてつらい
406
+ 12, 好きになった人がピクシー(拡張現実の身体を持つ高性能AI)
407
+ TEXT
408
+ 'NAYA2L' => <<~TEXT,
409
+ ●悩みの詳細表・体/Figure:得意方向(正面)(2D6またはRoC。基本ルール書籍版P49)
410
+ 2, 過去の出来事が痛烈すぎて今が色褪せて見える
411
+ 3, 我ながら醜い
412
+ 4, 学校に行きたいけど行けない
413
+ 5, 筋トレしてるけど筋肉がつかない。同じ部活のみんなはかっこいい体を手に入れているのに
414
+ 6, 体重が気になる……ダイエットしなきゃ……でも、ごはんおいしい……
415
+ 7, 身長があと数センチほしい。そしたらあいつを背を追い越せるのに!
416
+ 8, 背が高いんだけど、もっと可愛い体に育ちたかった
417
+ 9, 肌の白い人がうらやましい
418
+ 10, 食べても食べてもお肉が付かない
419
+ 11, 病気がちだ
420
+ 12, 自分の美しさに酔いしれてしまう
421
+ TEXT
422
+ 'NAYA3L' => <<~TEXT,
423
+ ●悩みの詳細表・才/Talent:得意方向(背面)(2D6またはRoC。基本ルール書籍版P49)
424
+ 2, 将来何になりたいかと言われてもなんにも思いつかない
425
+ 3, 俺様の能力はこんなものではないはずだ……! きっと明日起きたら秘められた真なる力にm
426
+ 4, ああ妬ましい妬ましい。そう思ってしまう自分が嫌だが、わかっていてもやめられない
427
+ 5, 妹の方が優秀。私だってこんなに勉強を頑張ってるのに、あの子と私のなにが違うの?
428
+ 6, バカすぎて授業についていけない
429
+ 7, バズりてぇな~~~俺もよぉ~~~~
430
+ 8, アイツに勝てない!投手としても、バッターとしても!
431
+ 9, この3年間サッカーに全てを捧げてきたのに、レギュラーになれない
432
+ 10, 頑張りたいと思うけど気が多くて集中できない
433
+ 11, 頑張って勉強したところでそれが何になるんだろうと思うと虚しい
434
+ 12, 全力を出せる場所が欲しい。自分の才能がにくい
435
+ TEXT
436
+ 'NAYA4L' => <<~TEXT,
437
+ ●悩みの詳細表・絆/Bonds:得意方向(側面)(2D6またはRoC。基本ルール書籍版P49)
438
+ 2, 別に変な話をしているつもりはないのだけど同級生と会話が成立しない
439
+ 3, 兄貴分に依存してしまい、1人で行動するのが怖い。アニキから離れたくない!
440
+ 4, 飼っている犬が最近不機嫌。すぐ噛み付いてくる。なにかしてしまったのだろうか?
441
+ 5, 来年、引っ越すことが決まった。一緒の高校に行こうねって約束したのに
442
+ 6, いろんなことに首をつっこんでしまい、逆にうざがられてしまう
443
+ 7, 一緒に遊んでいた親友が、最近よそよそしい気がする
444
+ 8, なかなか友達ができない。できたとおもっても気づいたら話さなくなっている
445
+ 9, 会話しているとへとへとになってる自分に時々気づく
446
+ 10, 1人でいるほうがおちつくんだけど駄目なのか
447
+ 11, 正直、クラスの連中の興味がどれもくだらなく思える
448
+ 12, そもそも自分以外のヒトがなんで大事なのかさっぱり分からない
449
+ TEXT
450
+ 'NAYA5L' => <<~TEXT,
451
+ ●悩みの詳細表・住/Home:得意方向(側面)(2D6またはRoC。基本ルール書籍版P49)
452
+ 2, 親がもううるさくない
453
+ 3, 親がいない。奨学金とバイトで学費を稼がなければ学校にも通えない
454
+ 4, 学校を卒業したら家を出ることになっている。でも、親元を離れたくない
455
+ 5, 親の再婚相手と上手くいかない。何故かきつく当たってしまう
456
+ 6, 親と同じ仕事を目指しているけど認めてくれない、夢を否定される
457
+ 7, お母さんが不治の病に侵されている
458
+ 8, 家族の1人が家事が致命的に下手で家の内情がヤバい
459
+ 9, 間違った場所に産まれてきた気がしてならない
460
+ 10, 兄弟との仲が致命的に悪い。嫌われている
461
+ 11, ことあるごとに親が「おまえはどうしようもないやつだ」と言ってくる
462
+ 12, 門限が早い
463
+ TEXT
464
+ }.freeze
465
+
466
+ TABLES = {
467
+ 'CHAR1' => DiceTable::Table.new(
468
+ '所属表',
469
+ '2D6',
470
+ [
471
+ '無職/専業主婦/専業主夫',
472
+ 'パート・アルバイト',
473
+ '中学生',
474
+ '高校生',
475
+ '大学生',
476
+ '短大/専門学校生',
477
+ '会社員',
478
+ '公務員',
479
+ '個人事業主',
480
+ 'フリーランス',
481
+ '経営者'
482
+ ]
483
+ ),
484
+ 'CHAR2' => DiceTable::Table.new(
485
+ '趣味表',
486
+ '2D6',
487
+ [
488
+ 'プログラミング/ハッキング',
489
+ 'テレビゲーム/ボードゲーム',
490
+ '楽器演奏/作曲/編曲/DTM',
491
+ '工芸/アクセサリー/プラモデル制作',
492
+ 'イラスト/モデリング/デザイン',
493
+ '電子工作/機械工作',
494
+ '野球/サッカー/バスケ/テニス/バレエ/',
495
+ 'ファッション',
496
+ '自転車/BMX/バイク/車',
497
+ 'ライトノベル/漫画/アニメ',
498
+ 'ペット/ピクシー育成/生物観察'
499
+ ]
500
+ ),
501
+ 'CHAR3' => DiceTable::Table.new(
502
+ 'リビド武装形状表',
503
+ '2D6',
504
+ [
505
+ '模様。輝く五芒星や、巨大な数字など',
506
+ '人型。想い人、アニメキャラ、衣服など',
507
+ '魔法または超能力。炎や、謎のオーラなど',
508
+ '獣。調教された犬、カラス、ヘビなど',
509
+ '銃。拳銃、ライフル、火縄銃など',
510
+ '近接武器。ナイフ、バールのようなものなど',
511
+ '異形。巨大化した体や鉤爪、伸びる腕など',
512
+ 'ドローン。航空機タイプや四足歩行タイプなど',
513
+ 'モンスター。ゴーレム、悪魔、動く植物など',
514
+ '乗り物(乗ることは出来ないので注意)。車、戦闘機など。',
515
+ '他のどれでもない君のオリジナルのなにか'
516
+ ]
517
+ ),
518
+ 'NAYA1' => DiceTable::Table.new(
519
+ '悩みの詳細表・愛/Love',
520
+ '2D6',
521
+ [
522
+ 'オレには彼女が居るはずなのに誰にも見えない',
523
+ '好きになった人が同性。でも将来的には子供がほしい……',
524
+ 'あいつの彼女が可愛い',
525
+ 'タレントを愛してしまったが当たり前だけど告白のしようもない',
526
+ '好きなのに、あの人に告白できない。自分なんかが告白していい人じゃない……!',
527
+ '●●のことが好き。でもそれを伝えてしまったら、今の関係が崩れてしまいそうで怖い',
528
+ '相手が異性として見てくれない',
529
+ '僕の彼女は遠く離れた大学への進学を悩んでいる。応援するべきか、引き止めるべきか',
530
+ '一緒に遊びたいだけなのに、ついそっけない態度やいたずらをしてしまう',
531
+ 'オレの彼女が可愛すぎてつらい',
532
+ '好きになった人がピクシー(拡張現実の身体を持つ高性能AI)'
533
+ ]
534
+ ),
535
+ 'NAYA2' => DiceTable::Table.new(
536
+ '悩みの詳細表・体/Figure',
537
+ '2D6',
538
+ [
539
+ '過去の出来事が痛烈すぎて今が色褪せて見える',
540
+ '我ながら醜い',
541
+ '学校に行きたいけど行けない',
542
+ '筋トレしてるけど筋肉がつかない。同じ部活のみんなはかっこいい体を手に入れているのに',
543
+ '体重が気になる……ダイエットしなきゃ……でも、ごはんおいしい……',
544
+ '身長があと数センチほしい。そしたらあいつを背を追い越せるのに!',
545
+ '背が高いんだけど、もっと可愛い体に育ちたかった',
546
+ '肌の白い人がうらやましい',
547
+ '食べても食べてもお肉が付かない',
548
+ '病気がちだ',
549
+ '自分の美しさに酔いしれてしまう'
550
+ ]
551
+ ),
552
+ 'NAYA3' => DiceTable::Table.new(
553
+ '悩みの詳細表・才/Talent',
554
+ '2D6',
555
+ [
556
+ '将来何になりたいかと言われてもなんにも思いつかない',
557
+ '俺様の能力はこんなものではないはずだ……! きっと明日起きたら秘められた真なる力にm',
558
+ 'ああ妬ましい妬ましい。そう思ってしまう自分が嫌だが、わかっていてもやめられない',
559
+ '妹の方が優秀。私だってこんなに勉強を頑張ってるのに、あの子と私のなにが違うの?',
560
+ 'バカすぎて授業についていけない',
561
+ 'バズりてぇな~~~俺もよぉ~~~~',
562
+ 'アイツに勝てない!投手としても、バッターとしても!',
563
+ 'この3年間サッカーに全てを捧げてきたのに、レギュラーになれない',
564
+ '頑張りたいと思うけど気が多くて集中できない',
565
+ '頑張って勉強したところでそれが何になるんだろうと思うと虚しい',
566
+ '全力を出せる場所が欲しい。自分の才能がにくい'
567
+ ]
568
+ ),
569
+ 'NAYA4' => DiceTable::Table.new(
570
+ '悩みの詳細表・絆/Bonds',
571
+ '2D6',
572
+ [
573
+ '別に変な話をしているつもりはないのだけど同級生と会話が成立しない',
574
+ '兄貴分に依存してしまい、1人で行動するのが怖い。アニキから離れたくない!',
575
+ '飼っている犬が最近不機嫌。すぐ噛み付いてくる。なにかしてしまったのだろうか?',
576
+ '来年、引っ越すことが決まった。一緒の高校に行こうねって約束したのに',
577
+ 'いろんなことに首をつっこんでしまい、逆にうざがられてしまう',
578
+ '一緒に遊んでいた親友が、最近よそよそしい気がする',
579
+ 'なかなか友達ができない。できたとおもっても気づいたら話さなくなっている',
580
+ '会話しているとへとへとになってる自分に時々気づく',
581
+ '1人でいるほうがおちつくんだけど駄目なのか',
582
+ '正直、クラスの連中の興味がどれもくだらなく思える',
583
+ 'そもそも自分以外のヒトがなんで大事なのかさっぱり分からない'
584
+ ]
585
+ ),
586
+ 'NAYA5' => DiceTable::Table.new(
587
+ '悩みの詳細表・住/Home',
588
+ '2D6',
589
+ [
590
+ '親がもううるさくない',
591
+ '親がいない。奨学金とバイトで学費を稼がなければ学校にも通えない',
592
+ '学校を卒業したら家を出ることになっている。でも、親元を離れたくない',
593
+ '親の再婚相手と上手くいかない。何故かきつく当たってしまう',
594
+ '親と同じ仕事を目指しているけど認めてくれない、夢を否定される',
595
+ 'お母さんが不治の病に侵されている',
596
+ '家族の1人が家事が致命的に下手で家の内情がヤバい',
597
+ '間違った場所に産まれてきた気がしてならない',
598
+ '兄弟との仲が致命的に悪い。嫌われている',
599
+ 'ことあるごとに親が「おまえはどうしようもないやつだ」と言ってくる',
600
+ '門限が早い'
601
+ ]
602
+ ),
603
+ }.freeze
604
+
605
+ # ダイスボットで使用するコマンドを配列で列挙する
606
+ register_prefix('\d+NC', '\d+D6?([\+\-\d]*)>=\d+', TEXTS.keys, TABLES.keys)
72
607
  end
73
608
  end
74
609
  end