bcdice 3.1.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -1
  3. data/README.md +1 -1
  4. data/i18n/MagicaLogia/zh_hans.yml +564 -0
  5. data/i18n/StellarKnights/ja_jp.yml +498 -0
  6. data/i18n/StellarKnights/ko_kr.yml +498 -0
  7. data/i18n/zh_hans.yml +7 -0
  8. data/lib/bcdice/command/parsed.rb +11 -3
  9. data/lib/bcdice/command/parser.rb +179 -100
  10. data/lib/bcdice/common_command/add_dice.rb +1 -1
  11. data/lib/bcdice/common_command/barabara_dice/node.rb +2 -2
  12. data/lib/bcdice/common_command/barabara_dice/result.rb +6 -0
  13. data/lib/bcdice/common_command/calc.rb +1 -1
  14. data/lib/bcdice/dice_table.rb +2 -0
  15. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  16. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  17. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
  18. data/lib/bcdice/game_system.rb +6 -0
  19. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  20. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  21. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  22. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  23. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  24. data/lib/bcdice/game_system/Amadeus.rb +110 -93
  25. data/lib/bcdice/game_system/AngelGear.rb +2 -2
  26. data/lib/bcdice/game_system/AnimaAnimus.rb +16 -9
  27. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  28. data/lib/bcdice/game_system/Avandner.rb +1 -1
  29. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  30. data/lib/bcdice/game_system/BattleTech.rb +109 -28
  31. data/lib/bcdice/game_system/BeastBindTrinity.rb +28 -12
  32. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  33. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  34. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  35. data/lib/bcdice/game_system/BlindMythos.rb +39 -38
  36. data/lib/bcdice/game_system/BloodCrusade.rb +6 -7
  37. data/lib/bcdice/game_system/BloodMoon.rb +9 -8
  38. data/lib/bcdice/game_system/CardRanker.rb +8 -7
  39. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  40. data/lib/bcdice/game_system/Chill.rb +10 -10
  41. data/lib/bcdice/game_system/Chill3.rb +9 -9
  42. data/lib/bcdice/game_system/CodeLayerd.rb +39 -39
  43. data/lib/bcdice/game_system/ColossalHunter.rb +34 -47
  44. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  45. data/lib/bcdice/game_system/Cthulhu.rb +1 -1
  46. data/lib/bcdice/game_system/Cthulhu7th.rb +48 -10
  47. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
  48. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
  49. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
  50. data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
  51. data/lib/bcdice/game_system/DarkBlaze.rb +0 -11
  52. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  53. data/lib/bcdice/game_system/DeadlineHeroes.rb +11 -10
  54. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  55. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  56. data/lib/bcdice/game_system/DoubleCross.rb +3 -1
  57. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  58. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  59. data/lib/bcdice/game_system/Elric.rb +18 -14
  60. data/lib/bcdice/game_system/Elysion.rb +1 -1
  61. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  62. data/lib/bcdice/game_system/Emoklore.rb +25 -20
  63. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  64. data/lib/bcdice/game_system/FilledWith.rb +205 -1272
  65. data/lib/bcdice/game_system/FutariSousa.rb +12 -10
  66. data/lib/bcdice/game_system/GURPS.rb +17 -28
  67. data/lib/bcdice/game_system/Garako.rb +1 -1
  68. data/lib/bcdice/game_system/GardenOrder.rb +12 -7
  69. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  70. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  71. data/lib/bcdice/game_system/Gorilla.rb +2 -8
  72. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  73. data/lib/bcdice/game_system/Gundog.rb +9 -8
  74. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  75. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  76. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  77. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  78. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  79. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  80. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  81. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  82. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  83. data/lib/bcdice/game_system/Insane.rb +13 -20
  84. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  85. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  86. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  87. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  88. data/lib/bcdice/game_system/KanColle.rb +4 -9
  89. data/lib/bcdice/game_system/KemonoNoMori.rb +26 -39
  90. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  91. data/lib/bcdice/game_system/KurayamiCrying.rb +141 -2
  92. data/lib/bcdice/game_system/LiveraDoll.rb +254 -304
  93. data/lib/bcdice/game_system/LogHorizon.rb +13 -10
  94. data/lib/bcdice/game_system/MagicaLogia_SimplifiedChinese.rb +66 -0
  95. data/lib/bcdice/game_system/MeikyuDays.rb +10 -8
  96. data/lib/bcdice/game_system/MeikyuKingdom.rb +26 -26
  97. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -4
  98. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  99. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  100. data/lib/bcdice/game_system/MonotoneMuseum.rb +8 -6
  101. data/lib/bcdice/game_system/Nechronica.rb +63 -90
  102. data/lib/bcdice/game_system/NinjaSlayer.rb +6 -7
  103. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  104. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  105. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  106. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  107. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  108. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  109. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  110. data/lib/bcdice/game_system/Postman.rb +1 -1
  111. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  112. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  113. data/lib/bcdice/game_system/Revulture.rb +123 -0
  114. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  115. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  116. data/lib/bcdice/game_system/SRS.rb +17 -16
  117. data/lib/bcdice/game_system/SamsaraBallad.rb +38 -11
  118. data/lib/bcdice/game_system/Satasupe.rb +32 -32
  119. data/lib/bcdice/game_system/ScreamHighSchool.rb +5 -5
  120. data/lib/bcdice/game_system/SharedFantasia.rb +19 -23
  121. data/lib/bcdice/game_system/ShinobiGami.rb +14 -6
  122. data/lib/bcdice/game_system/Skynauts.rb +103 -142
  123. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  124. data/lib/bcdice/game_system/StarryDolls.rb +318 -0
  125. data/lib/bcdice/game_system/SteamPunkers.rb +11 -6
  126. data/lib/bcdice/game_system/StellarKnights.rb +85 -706
  127. data/lib/bcdice/game_system/StellarKnights_Korean.rb +79 -0
  128. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  129. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
  130. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  131. data/lib/bcdice/game_system/Strave.rb +1 -1
  132. data/lib/bcdice/game_system/SwordWorld.rb +16 -7
  133. data/lib/bcdice/game_system/SwordWorld2_0.rb +2 -2
  134. data/lib/bcdice/game_system/SwordWorld2_5.rb +2 -2
  135. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  136. data/lib/bcdice/game_system/TokumeiTenkousei.rb +4 -3
  137. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  138. data/lib/bcdice/game_system/TrinitySeven.rb +279 -280
  139. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  140. data/lib/bcdice/game_system/Utakaze.rb +53 -48
  141. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  142. data/lib/bcdice/game_system/WARPS.rb +11 -9
  143. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  144. data/lib/bcdice/game_system/Warhammer.rb +15 -6
  145. data/lib/bcdice/game_system/Warhammer4.rb +15 -11
  146. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  147. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  148. data/lib/bcdice/game_system/Yggdrasill.rb +1 -1
  149. data/lib/bcdice/game_system/ZettaiReido.rb +20 -25
  150. data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
  151. data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
  152. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
  153. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  154. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +4 -4
  155. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  156. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +26 -8
  157. data/lib/bcdice/repl.rb +1 -1
  158. data/lib/bcdice/result.rb +26 -0
  159. data/lib/bcdice/version.rb +1 -1
  160. metadata +18 -4
@@ -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
@@ -10,7 +10,7 @@ module BCDice
10
10
  NAME = '剣の街の異邦人TRPG'
11
11
 
12
12
  # ゲームシステム名の読みがな
13
- SORT_KEY = 'けんのまちのいほうしんTRPG'
13
+ SORT_KEY = 'つるきのまちのいほうしんTRPG'
14
14
 
15
15
  # ダイスボットの使い方
16
16
  HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
@@ -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)
@@ -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