bcdice 3.1.2 → 3.4.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 (161) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +154 -75
  3. data/README.md +3 -2
  4. data/i18n/Cthulhu/zh_hans.yml +11 -0
  5. data/i18n/MagicaLogia/zh_hans.yml +564 -0
  6. data/i18n/StellarKnights/ja_jp.yml +498 -0
  7. data/i18n/StellarKnights/ko_kr.yml +498 -0
  8. data/i18n/zh_hans.yml +7 -0
  9. data/lib/bcdice/command/parsed.rb +11 -3
  10. data/lib/bcdice/command/parser.rb +179 -100
  11. data/lib/bcdice/common_command/add_dice.rb +1 -1
  12. data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
  13. data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
  14. data/lib/bcdice/common_command/calc.rb +1 -1
  15. data/lib/bcdice/common_command/choice.rb +78 -7
  16. data/lib/bcdice/dice_table.rb +3 -0
  17. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  18. data/lib/bcdice/dice_table/d66_left_range_table.rb +29 -0
  19. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  20. data/lib/bcdice/game_system.rb +10 -0
  21. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  22. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  23. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  24. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  25. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  26. data/lib/bcdice/game_system/Amadeus.rb +110 -93
  27. data/lib/bcdice/game_system/AngelGear.rb +10 -5
  28. data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
  29. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  30. data/lib/bcdice/game_system/Avandner.rb +1 -1
  31. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  32. data/lib/bcdice/game_system/BattleTech.rb +109 -28
  33. data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
  34. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  35. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  36. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  37. data/lib/bcdice/game_system/BlindMythos.rb +39 -38
  38. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  39. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  40. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  41. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  42. data/lib/bcdice/game_system/Chill.rb +10 -10
  43. data/lib/bcdice/game_system/Chill3.rb +9 -9
  44. data/lib/bcdice/game_system/CodeLayerd.rb +39 -39
  45. data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
  46. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  47. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  48. data/lib/bcdice/game_system/Cthulhu7th.rb +50 -12
  49. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  50. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  51. data/lib/bcdice/game_system/Cthulhu_SimplifiedChinese.rb +60 -0
  52. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  53. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  54. data/lib/bcdice/game_system/DeadlineHeroes.rb +11 -10
  55. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  56. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  57. data/lib/bcdice/game_system/DoubleCross.rb +3 -1
  58. data/lib/bcdice/game_system/Dracurouge.rb +3 -2
  59. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  60. data/lib/bcdice/game_system/Elric.rb +18 -14
  61. data/lib/bcdice/game_system/Elysion.rb +1 -1
  62. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  63. data/lib/bcdice/game_system/Emoklore.rb +25 -20
  64. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  65. data/lib/bcdice/game_system/FilledWith.rb +4 -0
  66. data/lib/bcdice/game_system/FutariSousa.rb +12 -10
  67. data/lib/bcdice/game_system/GURPS.rb +17 -28
  68. data/lib/bcdice/game_system/Garako.rb +1 -1
  69. data/lib/bcdice/game_system/GardenOrder.rb +12 -7
  70. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  71. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  72. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  73. data/lib/bcdice/game_system/GranCrest.rb +189 -417
  74. data/lib/bcdice/game_system/Gundog.rb +9 -8
  75. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  76. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  77. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  78. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  79. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  80. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  81. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  82. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  83. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  84. data/lib/bcdice/game_system/Insane.rb +13 -20
  85. data/lib/bcdice/game_system/Irisbane.rb +154 -0
  86. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  87. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  88. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  89. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  90. data/lib/bcdice/game_system/KanColle.rb +4 -9
  91. data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
  92. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  93. data/lib/bcdice/game_system/KurayamiCrying.rb +141 -2
  94. data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
  95. data/lib/bcdice/game_system/LogHorizon.rb +13 -10
  96. data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
  97. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  98. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  99. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +4 -3
  100. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  101. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  102. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  103. data/lib/bcdice/game_system/Nechronica.rb +63 -90
  104. data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
  105. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  106. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  107. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  108. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  109. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  110. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  111. data/lib/bcdice/game_system/PersonaO.rb +86 -0
  112. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  113. data/lib/bcdice/game_system/Postman.rb +1 -1
  114. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  115. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  116. data/lib/bcdice/game_system/Revulture.rb +123 -0
  117. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  118. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  119. data/lib/bcdice/game_system/SRS.rb +17 -16
  120. data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
  121. data/lib/bcdice/game_system/Satasupe.rb +32 -32
  122. data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
  123. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  124. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  125. data/lib/bcdice/game_system/Skynauts.rb +103 -142
  126. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  127. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  128. data/lib/bcdice/game_system/SteamPunkers.rb +25 -7
  129. data/lib/bcdice/game_system/StellarKnights.rb +85 -706
  130. data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
  131. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  132. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  133. data/lib/bcdice/game_system/Strave.rb +1 -1
  134. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  135. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  136. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  137. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  138. data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
  139. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  140. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  141. data/lib/bcdice/game_system/ToshiakiHolyGrailWar.rb +92 -0
  142. data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
  143. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  144. data/lib/bcdice/game_system/Utakaze.rb +53 -48
  145. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  146. data/lib/bcdice/game_system/WARPS.rb +11 -9
  147. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  148. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  149. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  150. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  151. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  152. data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
  153. data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
  154. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  155. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  156. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  157. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  158. data/lib/bcdice/repl.rb +1 -1
  159. data/lib/bcdice/result.rb +26 -0
  160. data/lib/bcdice/version.rb +1 -1
  161. metadata +22 -5
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/game_system/StellarKnights"
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class StellarKnights_Korean < StellarKnights
8
+ # ゲームシステムの識別子
9
+ ID = "StellarKnights:Korean"
10
+
11
+ # ゲームシステム名
12
+ NAME = "은검의 스텔라나이츠"
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = "国際化:Korean:은검의 스텔라나이츠"
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ ・판정 nSK[d][,k>l,...]
20
+ []안은 생략 가능.
21
+ n: 다이스 개수, d: 공격 판정 대상의 방어력, k>l: 다이스를 굴려 k가 나오면 l로 변경(아마란서스 스킬 중「시작의 방」용)
22
+ d 생략 시 다이스를 굴린 결과만 표시. (nSK는 nB6과 동일)
23
+
24
+ 4SK: 다이스 4개를 굴린 결과 표시.
25
+ 4+2SK: ダイスを4+2 (=6) 個振って、その結果を表示
26
+ 5/2SK: ダイスを5個の半分 (=2) 個振って、その結果を表示
27
+ (5+3)/2SK: ダイスを(5+3)個の半分 (=4) 個振って、その結果を表示
28
+ 5SK3: 【공격 판정: 5다이스】, 대상의 방어력을 3으로 계산해 성공 수 표시.
29
+ 3SK,1>6: 다이스 3개 굴림, 1이 나오면 전부 6으로 변경, 대상의 방어력을 4로 계산해 성공 수 표시.
30
+ 6SK4,1>6,2>6: 【공격 판정: 6다이스】, 1과 2가 나오면 전부 6으로 변경, 대상의 방어력을 4로 계산해 성공 수 표시.
31
+
32
+ ・기본
33
+ TT: 소재 표
34
+ STA: 상황 표 A: 시간 (Situation Table A)
35
+ STB: 상황 표 B-1: 장소 (ST B)
36
+ STB2[n]: 상황 표 B-2: 학원편 (ST B 2)
37
+  n: 1(아셀트레이 공립대학), 2(이데아글로리아 예술종합대학), 3(시트라 여학원), 4(필로소피아 대학), 5(성 아제티아 학원), 6(스폰 오브 아셀트레이)
38
+ STC: 상황 표 C: 화제 (ST C)
39
+ ALLS: 상황 표 전체 일괄 굴림 (학원편 제외)
40
+ GAT: 소속 조직 결정 (Gakuen Table)
41
+ HOT: 희망 표 (Hope Table)
42
+ DET: 절망 표 (Despair Table)
43
+ WIT: 소원 표 (Wish Table)
44
+ YST: 당신의 이야기 표 (Your Story Table)
45
+ YSTA: 당신의 이야기 표 (이세계) (YST Another World)
46
+ PET: 성격 표 (Personality Table)
47
+ 성격 표를 2번 굴려 성격을 결정한다.
48
+
49
+ ・안개와 벚꽃의 마르지날리아
50
+ YSTM: 당신의 이야기 표 (마르지날리아) (YST Marginalia)
51
+ STM: 상황 표: 마르지날리아 (ST Marginalia)
52
+ YSTL: 당신의 이야기 표 (편지) (YST Letter)
53
+ YSTR: 당신의 이야기 표 (리콜렉트 돌) (YST Recollect-doll)
54
+ STBR: 상황 표 B: 장소 (리콜렉트 돌) (ST B Recollect-doll)
55
+ STCR: 상황 표 C: 리콜렉트 (ST C Recollect)
56
+ STBS: 상황 표 B: 시트라 세팅 (ST B Sut Tu Real)
57
+ STE: 상황 표: 이클립스 전용 (ST Eclipse)
58
+
59
+ ・자탄의 알트리부트
60
+ FT: 프래그먼트 표 (Fragment Table)
61
+ 프래그먼트 표를 5번 굴린다.
62
+ FTx: 프래그먼트 표를 x회 굴린다.
63
+ YSTB: 당신의 이야기 (브링거) (YST Bringer)
64
+ YSTF: 당신의 이야기 (포지) (YST Forge)
65
+ STAL: 상황 표 (알트리부트) (ST Alt-Levoot)
66
+ INFO_MESSAGE_TEXT
67
+
68
+ register_prefix_from_super_class()
69
+
70
+ def initialize(command)
71
+ super(command)
72
+
73
+ @locale = :ko_kr
74
+ end
75
+
76
+ TABLES = translate_tables(:ko_kr).freeze
77
+ end
78
+ end
79
+ end
@@ -37,8 +37,7 @@ module BCDice
37
37
   ・超未来の宇宙船内 INT
38
38
  MESSAGETEXT
39
39
 
40
- register_prefix('(\d+)*DA.*\[(\d+),(\d+)(,(\d+))?\]', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT') # '(\d+)*DA.*\[.*\]'
41
-
40
+ register_prefix('\d*DA', 'VPFT', 'VNFT', 'VNRT', 'AAFT', 'AST', 'RNST', 'RET', 'TRST', 'TRAT', 'TRMT', 'TROT', 'TET', 'ENT', 'CUT', 'NAT', 'INT')
42
41
  def eval_game_system_specific_command(command) # ダイスロールコマンド
43
42
  # 通常判定部分をgetJudgeResultコマンドに切り分け
44
43
  output = getJudgeResult(command)
@@ -104,7 +103,7 @@ module BCDice
104
103
 
105
104
  def getJudgeResult(command)
106
105
  case command
107
- when /(\d+)*DA([\d+*\-]*\d)?\[(\d+),(\d+)(,(\d+))?\]/i
106
+ when /(\d+)?DA([\d+*\-]*\d)?\[(\d+),(\d+)(,(\d+))?\]/i
108
107
  number = (Regexp.last_match(1) || 1).to_i
109
108
  correction = (Regexp.last_match(2) || 0).to_i
110
109
  single = (Regexp.last_match(3) || 4).to_i
@@ -32,22 +32,14 @@ module BCDice
32
32
  @d66_sort_type = D66SortType::ASC
33
33
  end
34
34
 
35
- def check_2D6(total, dice_total, _dice_list, cmp_op, target)
36
- return '' if target == '?'
37
- return '' unless cmp_op == :>=
38
-
39
- result =
40
- if dice_total <= 2
41
- translate("StratoShout.fumble")
42
- elsif dice_total >= 12
43
- translate("StratoShout.critical")
44
- elsif total >= target
45
- translate("success")
46
- else
47
- translate("failure")
48
- end
49
-
50
- return " > #{result}"
35
+ def result_2d6(_total, dice_total, _dice_list, cmp_op, _target)
36
+ return nil unless cmp_op == :>=
37
+
38
+ if dice_total <= 2
39
+ Result.fumble(translate("StratoShout.fumble"))
40
+ elsif dice_total >= 12
41
+ Result.critical(translate("StratoShout.critical"))
42
+ end
51
43
  end
52
44
 
53
45
  def eval_game_system_specific_command(command)
@@ -33,7 +33,7 @@ module BCDice
33
33
  MESSAGETEXT
34
34
 
35
35
  register_prefix(
36
- 'MP\d+', '\d+ST\d+(x|\*)\d+',
36
+ 'MP', '\d+ST',
37
37
  'AFF', 'IDT', 'AFV', 'IDV'
38
38
  )
39
39
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/base"
3
4
  require "bcdice/game_system/sword_world/rating_parser"
4
5
 
5
6
  module BCDice
@@ -9,7 +10,7 @@ module BCDice
9
10
  ID = 'SwordWorld'
10
11
 
11
12
  # ゲームシステム名
12
- NAME = 'ソードワールドRPG'
13
+ NAME = 'ソード・ワールドRPG'
13
14
 
14
15
  # ゲームシステム名の読みがな
15
16
  SORT_KEY = 'そおとわあると'
@@ -17,7 +18,7 @@ module BCDice
17
18
  # ダイスボットの使い方
18
19
  HELP_MESSAGE = "・SW レーティング表 (Kx[c]+m$f) (x:キー, c:クリティカル値, m:ボーナス, f:出目修正)\n"
19
20
 
20
- register_prefix('H?K\d+')
21
+ register_prefix('H?K')
21
22
 
22
23
  def initialize(command)
23
24
  super(command)
@@ -125,10 +126,17 @@ module BCDice
125
126
  break unless dice >= command.critical
126
127
  end
127
128
 
128
- output += getResultText(totalValue, command, diceResults, diceResultTotals,
129
- rateResults, diceOnlyTotal, round)
129
+ result_text, critical, fumble = getResultText(
130
+ totalValue, command, diceResults, diceResultTotals,
131
+ rateResults, diceOnlyTotal, round
132
+ )
133
+ output += result_text
130
134
 
131
- return output
135
+ return Result.new.tap do |r|
136
+ r.text = output
137
+ r.critical = critical
138
+ r.fumble = fumble
139
+ end
132
140
  end
133
141
 
134
142
  def getSW2_0_RatingTable
@@ -301,6 +309,7 @@ module BCDice
301
309
  # @param rateResults [Array<String>]
302
310
  # @param dice_total [Integer]
303
311
  # @param round [Integer]
312
+ # @return [Array(String, Boolean, Boolean)] output, critical, fumble
304
313
  def getResultText(rating_total, command, diceResults, diceResultTotals,
305
314
  rateResults, dice_total, round)
306
315
  sequence = []
@@ -310,7 +319,7 @@ module BCDice
310
319
  if dice_total <= 2
311
320
  sequence.push(rateResults.join(','))
312
321
  sequence.push("自動的失敗")
313
- return sequence.join(" > ")
322
+ return sequence.join(" > "), false, true
314
323
  end
315
324
 
316
325
  # rate回数が1回で、修正値がない時には途中式と最終結果が一致するので、途中式を省略する
@@ -347,7 +356,7 @@ module BCDice
347
356
  total_text = total.to_s
348
357
  sequence.push(total_text)
349
358
 
350
- return sequence.join(" > ")
359
+ return sequence.join(" > "), round > 1, false
351
360
  end
352
361
  end
353
362
  end
@@ -12,7 +12,7 @@ module BCDice
12
12
  ID = 'SwordWorld2.0'
13
13
 
14
14
  # ゲームシステム名
15
- NAME = 'ソードワールド2.0'
15
+ NAME = 'ソード・ワールド2.0'
16
16
 
17
17
  # ゲームシステム名の読みがな
18
18
  SORT_KEY = 'そおとわあると2.0'
@@ -68,7 +68,7 @@ module BCDice
68
68
   絡み効果表を出すことができます。
69
69
  INFO_MESSAGE_TEXT
70
70
 
71
- register_prefix('H?K\d+', 'Gr(\d+)?', '2D6?@\d+', 'FT', 'TT')
71
+ register_prefix('H?K', 'Gr', '2D6?@\d+', 'FT', 'TT')
72
72
 
73
73
  def initialize(command)
74
74
  super(command)
@@ -9,7 +9,7 @@ module BCDice
9
9
  ID = 'SwordWorld2.5'
10
10
 
11
11
  # ゲームシステム名
12
- NAME = 'ソードワールド2.5'
12
+ NAME = 'ソード・ワールド2.5'
13
13
 
14
14
  # ゲームシステム名の読みがな
15
15
  SORT_KEY = 'そおとわあると2.5'
@@ -76,7 +76,7 @@ module BCDice
76
76
   アビスカース表を出すことができます。
77
77
  INFO_MESSAGE_TEXT
78
78
 
79
- register_prefix('H?K\d+', 'Gr(\d+)?', '2D6?@\d+', 'FT', 'TT', 'Dru\[\d+,\d+,\d+\]', 'ABT')
79
+ register_prefix('H?K', 'Gr', '2D6?@\d+', 'FT', 'TT', 'Dru', 'ABT')
80
80
 
81
81
  ABYSS_CURSE_TABLE = DiceTable::D66GridTable.new(
82
82
  'アビスカース表', [
@@ -30,7 +30,7 @@ module BCDice
30
30
  ・OP3@12 → ダイス合計+3の達成値&クリティカル、判定の成否を表示。
31
31
  MESSAGETEXT
32
32
 
33
- register_prefix('(TS|OP)(\d+)?([\+\-]\d)*(\@\d+)?')
33
+ register_prefix('TS', 'OP')
34
34
 
35
35
  def eval_game_system_specific_command(command)
36
36
  output =
@@ -52,18 +52,19 @@ module BCDice
52
52
 
53
53
  result =
54
54
  if cmd.cmp_op
55
- total.send(cmd.cmp_op, cmd.target_number) ? "成功" : "失敗"
55
+ total.send(cmd.cmp_op, cmd.target_number) ? Result.success("成功") : Result.failure("失敗")
56
56
  end
57
57
 
58
58
  sequence = [
59
59
  "(#{cmd})",
60
60
  interim_expr(cmd, dice_total),
61
61
  total.to_s,
62
- result,
62
+ result.text,
63
63
  epp(count_one)
64
64
  ].compact
65
65
 
66
- return sequence.join(" > ")
66
+ result.text = sequence.join(" > ")
67
+ return result
67
68
  end
68
69
 
69
70
  # 出目が全て同じか
@@ -25,7 +25,7 @@ module BCDice
25
25
 
26
26
  # ダイスボットで使用するコマンドを配列で列挙する
27
27
  register_prefix(
28
- 'OP', 'TB', 'TK?\(\d+\)'
28
+ 'OP', 'TB', 'TK?'
29
29
  )
30
30
 
31
31
  def eval_game_system_specific_command(command)
@@ -6,9 +6,9 @@ module BCDice
6
6
  # ゲームシステムの識別子
7
7
  ID = 'TorgEternity'
8
8
  # ゲームシステム名
9
- NAME = 'TORG Eternity'
9
+ NAME = 'トーグ エタニティ'
10
10
  # ゲームシステム名の読みがな
11
- SORT_KEY = 'とおくえたあにてい'
11
+ SORT_KEY = 'とおくえたにてい'
12
12
  # ダイスボットの使い方
13
13
  HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
14
14
  ・判定
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class ToshiakiHolyGrailWar < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'ToshiakiHolyGrailWar'
8
+ # ゲームシステム名
9
+ NAME = 'としあきの聖杯戦争TRPG'
10
+ # ゲームシステム名の読みがな
11
+ SORT_KEY = 'としあきのせいはいせんそうTRPG'
12
+ # ダイスボットの使い方
13
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
14
+ ■ 判定 (Fx+y-z@a>=t)
15
+ 補正値ペナルティを自動計算してダイスの面数を決定しダイスロールを実行します。
16
+ ダイス面数は2以上、10以下の範囲に制限されます。
17
+ x: ステータス
18
+ y: 補正値 (任意)
19
+ z: マイナス補正値 (任意)
20
+ a: ダイス面数の増量 (任意)
21
+ t: 目標値 (任意)
22
+ 例)
23
+ F8+11, F8+11-5, F8+11-5@1, F8+11+9-3-2@-1, F8+11-5>=50, F8
24
+ INFO_MESSAGE_TEXT
25
+
26
+ register_prefix('F')
27
+
28
+ def eval_game_system_specific_command(command)
29
+ roll_f(command)
30
+ end
31
+
32
+ private
33
+
34
+ def roll_f(command)
35
+ parser = Command::Parser.new(/F(\d+)(\+\d+)*(-\d+)*/, round_type: RoundType::CEIL)
36
+ .disable_modifier
37
+ .enable_critical
38
+ cmd = parser.parse(command)
39
+ unless cmd
40
+ return nil
41
+ end
42
+
43
+ m = cmd.command.match(/^F(\d+)((?:\+\d+)+)?((?:-\d+)+)?$/)
44
+ unless m
45
+ return nil
46
+ end
47
+
48
+ status = m[1].to_i
49
+ positive_modifier = m[2] ? Arithmetic.eval(m[2], RoundType::CEIL) : 0
50
+ negative_modifier = m[3] ? Arithmetic.eval(m[3], RoundType::CEIL) : 0
51
+ side_bonus = cmd.critical || 0
52
+
53
+ times = [status + positive_modifier + negative_modifier, 0].max
54
+ sides = (6 - positive_modifier_penalty(positive_modifier) + negative_modifier_bonus(negative_modifier) + side_bonus).clamp(2, 10)
55
+
56
+ list = @randomizer.roll_barabara(times, sides)
57
+ total = list.sum()
58
+ result =
59
+ if cmd.cmp_op.nil?
60
+ Result.new
61
+ elsif total.send(cmd.cmp_op, cmd.target_number)
62
+ Result.success("成功")
63
+ else
64
+ Result.failure("失敗")
65
+ end
66
+
67
+ sequence = [
68
+ cmd,
69
+ "(#{times}D#{sides}#{cmd.cmp_op}#{cmd.target_number})",
70
+ "#{total}[#{list.join(',')}]",
71
+ total,
72
+ result.text,
73
+ ].compact
74
+
75
+ result.text = sequence.join(" > ")
76
+ return result
77
+ end
78
+
79
+ def positive_modifier_penalty(modifier)
80
+ if modifier <= 10
81
+ 0
82
+ else
83
+ modifier / 10
84
+ end
85
+ end
86
+
87
+ def negative_modifier_bonus(modifier)
88
+ modifier <= -5 ? 1 : 0
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/dice_table/table"
4
+ require "bcdice/format"
5
+
3
6
  module BCDice
4
7
  module GameSystem
5
8
  class TrinitySeven < Base
@@ -17,15 +20,15 @@ module BCDice
17
20
  クリティカルが変動した命中及び、7の出目がある場合のダメージ計算が行なえます。
18
21
  なお、通常の判定としても利用できます。
19
22
 
20
- ・発動/命中 [TR(±c*)<=(x)±(y*)又は TR<=(x)など]*は必須ではない項目です。
21
- "TR(クリティカルの修正値*)<=(発動/命中)±(発動/命中の修正値*)"
23
+ ・発動/命中 [TR(±c*)<=(x)±(y*) 又は TR<=(x) など]*は必須ではない項目です。
24
+ "TR(クリティカルの修正値*)<=(発動/命中)±(発動/命中の修正値*)"
22
25
  加算減算のみ修正値も付けられます。 [修正値]は必須ではありません。
23
- 例)TR<=50 TR<=6020 TR7<=40 TR-7<=80 TR10<=8020
26
+ 例)TR<=50 TR<=60+20 TR7<=40 TR-7<=80 TR+10<=80+20
24
27
 
25
- ・ダメージ計算 [(x)DM(c*)±(y*)又は(x)DM(c*)又は(x)DM±(y*)]*は必須ではない項目です。
26
- "(ダイス数)DM(7の出目の数*)(修正*)"
28
+ ・ダメージ計算 [(x)DM(c*)±(y*) 又は (x)DM(c*) 又は (x)DM±(y*)]*は必須ではない項目です。
29
+ "(ダイス数)DM(7の出目の数*)+(修正*)"
27
30
  加算減算のみ修正値も付けられます。 [7の出目の数]および[修正値]は必須ではありません。
28
- 例)6DM2+1 5DM2 4DM 3DM+3
31
+ 例)6DM2+1 5DM2 4DM 3DM+3
29
32
  後から7の出目に変更する場合はC(7*6+5)のように入力して計算してください。
30
33
 
31
34
  ・名前表 [TRNAME]
@@ -33,87 +36,77 @@ module BCDice
33
36
 
34
37
  MESSAGETEXT
35
38
 
36
- register_prefix('(\d+)DM\d+(\+|\-)?\d*', '(\d+)DM(\+|\-)?\d*', 'TR(\d+)<=(\d+)(\+|\-)?\d*', 'TR<=(\d+)(\+|\-)?\d*', 'TR(\+|\-)?(\d+)<=(\d+)(\+|\-)?\d*', 'TRNAME')
39
+ register_prefix('\d+DM', 'TR', 'TRNAME')
37
40
 
38
41
  def eval_game_system_specific_command(command) # スパゲッティなコードだけど許して!!! → 絶対に許さない。全力でリファクタリングした。
39
42
  debug("eval_game_system_specific_command command", command)
40
43
 
41
- if /TRNAME/ =~ command
42
- firstName, = get_NAME_table
43
- secondName, = get_NAMEtwo_table
44
- return "#{firstName} , #{secondName}"
45
- end
46
-
47
- if /^TR([+\-\d]*)<=(\d*)([+\-\d]*)/ =~ command
48
- critical = Regexp.last_match(1).to_i + 7
49
- target = Regexp.last_match(2).to_i
50
- modify = Regexp.last_match(3).to_i
51
- return rollHit(command, critical, target, modify)
52
- end
53
-
54
- if /^(\d*)DM(\d*)([+\-\d]*)$/ =~ command
55
- diceCount = Regexp.last_match(1).to_i
56
- critical = Regexp.last_match(2).to_i
57
- modify = Regexp.last_match(3).to_i
58
- return rollDamage(command, diceCount, critical, modify)
59
- end
60
-
61
- return ''
44
+ roll_hit(command) ||
45
+ roll_damage(command) ||
46
+ roll_name(command)
62
47
  end
63
48
 
64
- def rollHit(command, critical, target, modify)
65
- target += modify
49
+ def roll_hit(command)
50
+ parser = Command::Parser.new(/TR\d*/, round_type: round_type)
51
+ .restrict_cmp_op_to(:<=)
52
+ cmd = parser.parse(command)
53
+ return nil unless cmd
66
54
 
67
- total = @randomizer.roll_once(100)
68
- result = getHitRollResult(total, target, critical)
55
+ modify = cmd.command[2..-1].to_i + cmd.modify_number
56
+ critical = 7 + modify
57
+ target = cmd.target_number
69
58
 
70
- text = "(#{command}) > #{total}[#{total}] > #{result}"
71
- debug("eval_game_system_specific_command result text", text)
59
+ total = @randomizer.roll_once(100)
60
+ result = get_hit_roll_result(total, target, critical)
72
61
 
73
- return text
74
- end
62
+ cmd.command = "TR"
63
+ cmd.modify_number = modify
75
64
 
76
- def getHitRollResult(total, target, critical)
77
- return "ファンブル" if total >= 96
78
- return "クリティカル" if total <= critical
65
+ result.text = "(#{cmd}) > #{total} #{result.text}"
66
+ debug("eval_game_system_specific_command result text", result.text)
79
67
 
80
- return "成功" if total <= target
68
+ result
69
+ end
81
70
 
82
- return "失敗"
71
+ def get_hit_roll_result(total, target, critical)
72
+ if total >= 96
73
+ Result.fumble("ファンブル")
74
+ elsif total <= critical
75
+ Result.critical("クリティカル")
76
+ elsif total <= target
77
+ Result.success("成功")
78
+ else
79
+ Result.failure("失敗")
80
+ end
83
81
  end
84
82
 
85
- def rollDamage(command, diceCount, critical, modify)
86
- return "" if diceCount < critical
83
+ def roll_damage(command)
84
+ parser = Command::Parser.new(/\d+DM\d*/, round_type: round_type)
85
+ .restrict_cmp_op_to(nil)
86
+ cmd = parser.parse(command)
87
+ return nil unless cmd
87
88
 
88
- dice_list = @randomizer.roll_barabara(diceCount, 6)
89
- total = dice_list.sum()
90
- diceText = dice_list.join(",")
89
+ dice_count, critical = cmd.command.split("DM", 2).map(&:to_i)
90
+ modify = cmd.modify_number
91
91
 
92
- additionalListText = ""
93
- total, additionalList = getRollDamageCritialText(diceCount, critical, total, diceText, modify)
92
+ dice_list = @randomizer.roll_barabara(dice_count, 6).sort
93
+ dice_text = dice_list.join(",")
94
94
 
95
- additionalListText = "→[#{additionalList.join(',')}]" unless additionalList.empty?
95
+ total, additionalList = get_roll_damage_result(dice_count, critical, dice_list, modify)
96
96
 
97
- modifyText = ""
98
- modifyText = "+#{modify}" if modify > 0
99
- modifyText = modify.to_s if modify < 0
97
+ additionalListText = additionalList.nil? ? "" : "→[#{additionalList.join(',')}]"
100
98
 
101
- text = "(#{command}) [#{diceText}]#{additionalListText}#{modifyText} > #{total}"
99
+ text = "(#{cmd}) [#{dice_text}]#{additionalListText}#{Format.modifier(modify)} > #{total}"
102
100
 
103
101
  return text
104
102
  end
105
103
 
106
- def getRollDamageCritialText(diceCount, critical, total, diceText, modify)
107
- diceList = []
108
-
109
- if critical == 0
110
- total += modify
111
- return total, diceList
104
+ def get_roll_damage_result(diceCount, critical, diceList, modify)
105
+ if critical <= 0
106
+ total = diceList.sum() + modify
107
+ return total, nil
112
108
  end
113
109
 
114
- diceList = diceText.split(/,/).map(&:to_i)
115
-
116
- diceList.sort!
117
110
  restDice = diceList.clone
118
111
 
119
112
  critical = diceCount if critical > diceCount
@@ -127,238 +120,244 @@ module BCDice
127
120
  max = restDice.pop
128
121
  max = 1 if max.nil?
129
122
 
130
- total = max * (7**critical) + modify
131
- restDice.each { |i| total += i }
123
+ total = max * (7**critical) + restDice.sum() + modify
132
124
 
133
125
  return total, diceList
134
126
  end
135
127
 
136
- def check_1D100(_total, dice_total, _cmp_op, _target)
128
+ def result_1d100(_total, dice_total, _cmp_op, _target)
137
129
  if dice_total >= 96
138
- "ファンブル"
130
+ Result.fumble("ファンブル")
139
131
  elsif dice_total <= 7
140
- "クリティカル"
132
+ Result.critical("クリティカル")
141
133
  end
142
134
  end
143
135
 
144
- # 名前表
145
- def get_NAME_table
146
- table = [
147
- [1, '春日'],
148
- [2, '浅見'],
149
- [3, '風間'],
150
- [4, '神無月'],
151
- [5, '倉田'],
152
- [6, '不動'],
153
- [7, '山奈'],
154
- [8, 'シャルロック'],
155
- [9, '霧隠'],
156
- [10, '果心'],
157
- [11, '今井'],
158
- [12, '長瀬'],
159
- [13, '明智'],
160
- [14, '風祭'],
161
- [15, '志貫'],
162
- [16, '一文字'],
163
- [17, '月夜野'],
164
- [18, '桜田門'],
165
- [19, '果瀬'],
166
- [20, '九十九'],
167
- [21, '速水'],
168
- [22, '片桐'],
169
- [23, '葉月'],
170
- [24, 'ウィンザー'],
171
- [25, '時雨里'],
172
- [26, '神城'],
173
- [27, '水際'],
174
- [28, '一ノ江'],
175
- [29, '仁藤'],
176
- [30, '北千住'],
177
- [31, '西村'],
178
- [32, '諏訪'],
179
- [33, '藤宮'],
180
- [34, '御代'],
181
- [35, '橘'],
182
- [36, '霧生'],
183
- [37, '白石'],
184
- [38, '椎名'],
185
- [39, '綾小路'],
186
- [40, '二条'],
187
- [41, '光明寺'],
188
- [42, '春秋'],
189
- [43, '雪見'],
190
- [44, '刀条院'],
191
- [45, 'ランカスター'],
192
- [46, 'ハクア'],
193
- [47, 'エルタニア'],
194
- [48, 'ハーネス'],
195
- [49, 'アウグストゥス'],
196
- [50, '椎名町'],
197
- [51, '鍵守'],
198
- [52, '茜ヶ崎'],
199
- [53, '鎮宮'],
200
- [54, '美柳'],
201
- [55, '鎖々塚'],
202
- [56, '櫻ノ杜'],
203
- [57, '鏡ヶ守'],
204
- [58, '輝井'],
205
- [59, '南陽'],
206
- [60, '雪乃城'],
207
- [61, '六角屋'],
208
- [62, '鈴々'],
209
- [63, '東三条'],
210
- [64, '朱雀院'],
211
- [65, '青龍院'],
212
- [66, '白虎院'],
213
- [67, '玄武院'],
214
- [68, '麒麟院'],
215
- [69, 'リーシュタット'],
216
- [70, 'サンクチュアリ'],
217
- [71, '六実'],
218
- [72, '須藤'],
219
- [73, 'ミレニアム'],
220
- [74, '七里'],
221
- [75, '三枝'],
222
- [76, '八殿'],
223
- [77, '藤里'],
224
- [78, '久宝'],
225
- [79, '東'],
226
- [80, '赤西'],
227
- [81, '神ヶ崎'],
228
- [82, 'グランシア'],
229
- [83, 'ダークブーレード'],
230
- [84, '天光寺'],
231
- [85, '月見里'],
232
- [86, '璃宮'],
233
- [87, '藤見澤'],
234
- [88, '赤聖'],
235
- [89, '姫宮'],
236
- [90, '華ノ宮'],
237
- [91, '天才'],
238
- [92, '達人'],
239
- [93, '賢者'],
240
- [94, '疾風'],
241
- [95, '海の'],
242
- [96, '最強'],
243
- [97, '凶器'],
244
- [98, '灼熱'],
245
- [99, '人間兵器'],
246
- [100, '魔王'],
247
- ]
136
+ def roll_name(command)
137
+ unless command == "TRNAME"
138
+ return nil
139
+ end
248
140
 
249
- dice_now = @randomizer.roll_once(100)
141
+ first_name = NAME1.roll(@randomizer).last_body
142
+ second_name = NAME2.roll(@randomizer).last_body
250
143
 
251
- return get_table_by_number(dice_now, table)
144
+ text = "#{first_name} , #{second_name}"
145
+ return text
252
146
  end
253
147
 
254
- def get_NAMEtwo_table
255
- table = [
256
- [1, 'アラタ/聖'],
257
- [2, 'アビィス/リリス'],
258
- [3, 'ルーグ/レヴィ'],
259
- [4, 'ラスト/アリン'],
260
- [5, 'ソラ/ユイ'],
261
- [6, 'イーリアス/アキオ'],
262
- [7, 'アカーシャ/ミラ'],
263
- [8, 'アリエス/リーゼロッテ'],
264
- [9, 'ムラサメ/シャルム'],
265
- [10, '龍貴/竜姫'],
266
- [11, '英樹/春菜'],
267
- [12, '準一/湊'],
268
- [13, '急司郎/光理'],
269
- [14, '夕也/愛奈'],
270
- [15, '晴彦/アキ'],
271
- [16, '疾風/ヤシロ'],
272
- [17, 'カガリ/灯花'],
273
- [18, '次郎/優都'],
274
- [19, '春太郎/静理'],
275
- [20, 'ジン/時雨'],
276
- [21, 'イオリ/伊織'],
277
- [22, 'ユウヒ/優姫'],
278
- [23, 'サツキ/翠名'],
279
- [24, 'シュライ/サクラ'],
280
- [25, 'ミナヅキ/姫乃'],
281
- [26, 'カエデ/優樹菜'],
282
- [27, 'ハル/フユ'],
283
- [28, 'オdール/瑞江'],
284
- [29, 'ニトゥレスト/キリカ'],
285
- [30, 'スカー/綾瀬'],
286
- [31, '真夏/小夏'],
287
- [32, '光一/ののか'],
288
- [33, '彩/翠'],
289
- [34, 'トウカ/柊花'],
290
- [35, '命/ミコト'],
291
- [36, '司/つかさ'],
292
- [37, 'ゆとり/なごみ'],
293
- [38, '冬彦/観月'],
294
- [39, 'カレン/華恋'],
295
- [40, '清次郎/亜矢'],
296
- [41, 'サード/夢子'],
297
- [42, 'ボックス/詩子'],
298
- [43, 'ヘリオス/カエデ'],
299
- [44, 'ゲート/京香'],
300
- [45, 'オンリー/パトリシア'],
301
- [46, 'ザッハーク/アーリ'],
302
- [47, 'ラスタバン/ラスティ'],
303
- [48, '桜花/燁澄'],
304
- [49, '計都/リヴィア'],
305
- [50, 'カルヴァリオ/香夜'],
306
- [51, '悠人/夜々子'],
307
- [52, '太子/羽菜'],
308
- [53, '夕立/夕凪'],
309
- [54, 'アルフ/愛美'],
310
- [55, 'ファロス/灯利'],
311
- [56, 'スプートニク/詩姫'],
312
- [57, 'アーネスト/累'],
313
- [58, 'ナイン/カグヤ'],
314
- [59, 'クリア/ヒマワリ'],
315
- [60, 'ウォーカー/オリビア'],
316
- [61, 'ダーク/クオン'],
317
- [62, 'ウェイヴ/凛'],
318
- [63, 'ルーン/マリエ'],
319
- [64, 'エンギ/セイギ'],
320
- [65, 'シラヌイ/ミライ'],
321
- [66, 'ブライン/キズナ'],
322
- [67, 'クロウ/カナタ'],
323
- [68, 'スレイヤー/ヒカル'],
324
- [69, 'レス/ミリアリア'],
325
- [70, 'ミフユ/サリエル'],
326
- [71, '鳴央/音央'],
327
- [72, 'モンジ/理亜'],
328
- [73, 'パルデモントゥム/スナオ'],
329
- [74, 'ミシェル/詩穂'],
330
- [75, 'フレンズ/サン'],
331
- [76, 'サトリ/識'],
332
- [77, 'ロード/唯花'],
333
- [78, 'クロノス/久宝'],
334
- [79, 'フィラデルフィア/冬海'],
335
- [80, 'ティンダロス/美星'],
336
- [81, '勇弥/ユーリス'],
337
- [82, 'エイト/アンジェラ'],
338
- [83, 'サタン/ルシエル'],
339
- [84, 'エース/小波'],
340
- [85, 'セージ/胡蝶'],
341
- [86, '忍/千之'],
342
- [87, '重吾/キリコ'],
343
- [88, 'マイケル/ミホシ'],
344
- [89, 'カズマ/鶴香'],
345
- [90, 'ヤマト/エリシエル'],
346
- [91, '歴史上の人物の名前(信長、ジャンヌなど)'],
347
- [92, 'スポーツ選手の名前(ベッカム、沙保里など)'],
348
- [93, '学者の名前(ソクラテス、エレナなど)'],
349
- [94, 'アイドルの名前(タクヤ、聖子など)'],
350
- [95, '土地、国、町の名前(イングランド、ワシントンなど)'],
351
- [96, 'モンスターの名前(ドラゴン、ラミアなど)'],
352
- [97, '武器防具の名前(ソード、メイルなど)'],
353
- [98, '自然現象の名前(カザンハリケーンなど)'],
354
- [99, '機械の名前(洗濯機、テレビなど)'],
355
- [100, '目についた物の名前(シャーペン、メガネなど)'],
148
+ NAME1 = DiceTable::Table.new(
149
+ "名字表",
150
+ "1D100",
151
+ [
152
+ '春日', # 1
153
+ '浅見',
154
+ '風間',
155
+ '神無月',
156
+ '倉田',
157
+ '不動',
158
+ '山奈',
159
+ 'シャルロック',
160
+ '霧隠',
161
+ '果心', # 10
162
+ '今井',
163
+ '長瀬',
164
+ '明智',
165
+ '風祭',
166
+ '志貫',
167
+ '一文字',
168
+ '月夜野',
169
+ '桜田門',
170
+ '果瀬',
171
+ '九十九', # 20
172
+ '速水',
173
+ '片桐',
174
+ '葉月',
175
+ 'ウィンザー',
176
+ '時雨里',
177
+ '神城',
178
+ '水際',
179
+ '一ノ江',
180
+ '仁藤',
181
+ '北千住', # 30
182
+ '西村',
183
+ '諏訪',
184
+ '藤宮',
185
+ '御代',
186
+ '',
187
+ '霧生',
188
+ '白石',
189
+ '椎名',
190
+ '綾小路',
191
+ '二条', # 40
192
+ '光明寺',
193
+ '春秋',
194
+ '雪見',
195
+ '刀条院',
196
+ 'ランカスター',
197
+ 'ハクア',
198
+ 'エルタニア',
199
+ 'ハーネス',
200
+ 'アウグストゥス',
201
+ '椎名町', # 50
202
+ '鍵守',
203
+ '茜ヶ崎',
204
+ '鎮宮',
205
+ '美柳',
206
+ '鎖々塚',
207
+ '櫻ノ杜',
208
+ '鏡ヶ守',
209
+ '輝井',
210
+ '南陽',
211
+ '雪乃城', # 60
212
+ '六角屋',
213
+ '鈴々',
214
+ '東三条',
215
+ '朱雀院',
216
+ '青龍院',
217
+ '白虎院',
218
+ '玄武院',
219
+ '麒麟院',
220
+ 'リーシュタット',
221
+ 'サンクチュアリ', # 70
222
+ '六実',
223
+ '須藤',
224
+ 'ミレニアム',
225
+ '七里',
226
+ '三枝',
227
+ '八殿',
228
+ '藤里',
229
+ '久宝',
230
+ '',
231
+ '赤西', # 80
232
+ '神ヶ崎',
233
+ 'グランシア',
234
+ 'ダークブーレード',
235
+ '天光寺',
236
+ '月見里',
237
+ '璃宮',
238
+ '藤見澤',
239
+ '赤聖',
240
+ '姫宮',
241
+ '華ノ宮', # 90
242
+ '"天才"',
243
+ '"達人"',
244
+ '"賢者"',
245
+ '"疾風"',
246
+ '"海の"',
247
+ '"最強"',
248
+ '"凶器"',
249
+ '"灼熱"',
250
+ '"人間兵器"',
251
+ '"魔王"', # 100
356
252
  ]
357
-
358
- dice_now = @randomizer.roll_once(100)
359
-
360
- return get_table_by_number(dice_now, table)
361
- end
253
+ )
254
+
255
+ NAME2 = DiceTable::Table.new(
256
+ "名字表",
257
+ "1D100",
258
+ [
259
+ 'アラタ/聖', # 1
260
+ 'アビィス/リリス',
261
+ 'ルーグ/レヴィ',
262
+ 'ラスト/アリン',
263
+ 'ソラ/ユイ',
264
+ 'イーリアス/アキオ',
265
+ 'アカーシャ/ミラ',
266
+ 'アリエス/リーゼロッテ',
267
+ 'ムラサメ/シャルム',
268
+ '龍貴/竜姫', # 10
269
+ '英樹/春菜',
270
+ '準一/湊',
271
+ '急司郎/光理',
272
+ '夕也/愛奈',
273
+ '晴彦/アキ',
274
+ '疾風/ヤシロ',
275
+ 'カガリ/灯花',
276
+ '次郎/優都',
277
+ '春太郎/静理',
278
+ 'ジン/時雨', # 20
279
+ 'イオリ/伊織',
280
+ 'ユウヒ/優姫',
281
+ 'サツキ/翠名',
282
+ 'シュライ/サクラ',
283
+ 'ミナヅキ/姫乃',
284
+ 'カエデ/優樹菜',
285
+ 'ハル/フユ',
286
+ 'ドール/瑞江',
287
+ 'ニトゥレスト/キリカ',
288
+ 'スカー/綾瀬', # 30
289
+ '真夏/小夏',
290
+ '光一/ののか',
291
+ '彩/翠',
292
+ 'トウカ/柊花',
293
+ '命/ミコト',
294
+ '司/つかさ',
295
+ 'ゆとり/なごみ',
296
+ '冬彦/観月',
297
+ 'カレン/華恋',
298
+ '清次郎/亜矢', # 40
299
+ 'サード/夢子',
300
+ 'ボックス/詩子',
301
+ 'ヘリオス/カエデ',
302
+ 'ゲート/京香',
303
+ 'オンリー/パトリシア',
304
+ 'ザッハーク/アーリ',
305
+ 'ラスタバン/ラスティ',
306
+ '桜花/燁澄',
307
+ '計都/リヴィア',
308
+ 'カルヴァリオ/香夜', # 50
309
+ '悠人/夜々子',
310
+ '太子/羽菜',
311
+ '夕立/夕凪',
312
+ 'アルフ/愛美',
313
+ 'ファロス/灯利',
314
+ 'スプートニク/詩姫',
315
+ 'アーネスト/累',
316
+ 'ナイン/カグヤ',
317
+ 'クリア/ヒマワリ',
318
+ 'ウォーカー/オリビア', # 60
319
+ 'ダーク/クオン',
320
+ 'ウェイヴ/凛',
321
+ 'ルーン/マリエ',
322
+ 'エンギ/セイギ',
323
+ 'シラヌイ/ミライ',
324
+ 'ブライン/キズナ',
325
+ 'クロウ/カナタ',
326
+ 'スレイヤー/ヒカル',
327
+ 'レス/ミリアリア',
328
+ 'ミフユ/サリエル', # 70
329
+ '鳴央/音央',
330
+ 'モンジ/理亜',
331
+ 'パルデモントゥム/スナオ',
332
+ 'ミシェル/詩穂',
333
+ 'フレンズ/サン',
334
+ 'サトリ/識',
335
+ 'ロード/唯花',
336
+ 'クロノス/久宝',
337
+ 'フィラデルフィア/冬海',
338
+ 'ティンダロス/美星', # 80
339
+ '勇弥/ユーリス',
340
+ 'エイト/アンジェラ',
341
+ 'サタン/ルシエル',
342
+ 'エース/小波',
343
+ 'セージ/胡蝶',
344
+ '忍/千之',
345
+ '重吾/キリコ',
346
+ 'マイケル/ミホシ',
347
+ 'カズマ/鶴香',
348
+ 'ヤマト/エリシエル', # 90
349
+ '歴史上の人物の名前(信長、ジャンヌなど)',
350
+ 'スポーツ選手の名前(ベッカム、沙保里など)',
351
+ '学者の名前(ソクラテス、エレナなど)',
352
+ 'アイドルの名前(タクヤ、聖子など)',
353
+ '土地、国、町の名前(イングランド、ワシントンなど)',
354
+ 'モンスターの名前(ドラゴン、ラミアなど)',
355
+ '武器防具の名前(ソード、メイルなど)',
356
+ '自然現象の名前(カザンハリケーンなど)',
357
+ '機械の名前(洗濯機、テレビなど)',
358
+ '目についた物の名前(シャーペン、メガネなど)', # 100
359
+ ]
360
+ )
362
361
  end
363
362
  end
364
363
  end