bcdice 3.14.0 → 3.15.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/i18n/Cthulhu/zh_hant.yml +1 -1
  4. data/i18n/CyberpunkRed/ko_kr.yml +389 -0
  5. data/i18n/DoubleCross/ja_jp.yml +53 -0
  6. data/i18n/DoubleCross/ko_kr.yml +52 -0
  7. data/i18n/FutariSousa/ja_jp.yml +138 -138
  8. data/i18n/KillDeathBusiness/ja_jp.yml +198 -0
  9. data/i18n/MagicaLogia/ko_kr.yml +2 -2
  10. data/i18n/MonotoneMuseum/ko_kr.yml +227 -0
  11. data/i18n/SkynautsBouken/ko_kr.yml +114 -0
  12. data/i18n/StratoShout/ko_kr.yml +102 -102
  13. data/i18n/zh_hant.yml +5 -0
  14. data/lib/bcdice/game_system/Aionia.rb +131 -0
  15. data/lib/bcdice/game_system/Arianrhod_Korean.rb +2 -0
  16. data/lib/bcdice/game_system/ArknightsFan.rb +245 -87
  17. data/lib/bcdice/game_system/BlackJacket_Korean.rb +244 -0
  18. data/lib/bcdice/game_system/CharonSanctions.rb +112 -0
  19. data/lib/bcdice/game_system/Cthulhu7th.rb +1 -1
  20. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/full_auto.rb +293 -0
  21. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/rollable.rb +43 -0
  22. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +470 -306
  23. data/lib/bcdice/game_system/CyberpunkRed.rb +1 -2
  24. data/lib/bcdice/game_system/CyberpunkRed_Korean.rb +66 -0
  25. data/lib/bcdice/game_system/DoubleCross.rb +18 -1
  26. data/lib/bcdice/game_system/DoubleCross_Korean.rb +5 -1
  27. data/lib/bcdice/game_system/FullFace.rb +25 -3
  28. data/lib/bcdice/game_system/FutariSousa.rb +17 -5
  29. data/lib/bcdice/game_system/Garactier.rb +479 -0
  30. data/lib/bcdice/game_system/GardenOrder.rb +390 -9
  31. data/lib/bcdice/game_system/GundogRevised.rb +8 -8
  32. data/lib/bcdice/game_system/KillDeathBusiness.rb +155 -3
  33. data/lib/bcdice/game_system/KimitoYell.rb +568 -0
  34. data/lib/bcdice/game_system/Magius.rb +125 -0
  35. data/lib/bcdice/game_system/Magius_3rdNewTokyoCity.rb +62 -0
  36. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  37. data/lib/bcdice/game_system/NSSQ.rb +17 -9
  38. data/lib/bcdice/game_system/NervWhitePaper.rb +129 -0
  39. data/lib/bcdice/game_system/RogueLikeHalf.rb +198 -0
  40. data/lib/bcdice/game_system/RuneQuestRoleplayingInGlorantha.rb +16 -13
  41. data/lib/bcdice/game_system/ShinobiGami.rb +73 -43
  42. data/lib/bcdice/game_system/SkynautsBouken.rb +4 -4
  43. data/lib/bcdice/game_system/SkynautsBouken_Korean.rb +57 -0
  44. data/lib/bcdice/game_system/StratoShout_Korean.rb +1 -1
  45. data/lib/bcdice/game_system/SwordWorld.rb +4 -0
  46. data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -2
  47. data/lib/bcdice/game_system/TensaiGunshiNiNaro.rb +51 -17
  48. data/lib/bcdice/game_system/TheIndieHack.rb +82 -0
  49. data/lib/bcdice/game_system/TorgEternity.rb +35 -6
  50. data/lib/bcdice/game_system/WoW.rb +161 -0
  51. data/lib/bcdice/game_system/YankeeMustDie.rb +192 -0
  52. data/lib/bcdice/game_system/YearZeroEngine.rb +225 -28
  53. data/lib/bcdice/game_system/YuMyoKishi.rb +141 -0
  54. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +1 -0
  55. data/lib/bcdice/game_system/sword_world/rating_options.rb +4 -1
  56. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +5 -0
  57. data/lib/bcdice/game_system/sword_world/rating_parser.rb +129 -115
  58. data/lib/bcdice/game_system.rb +15 -0
  59. data/lib/bcdice/version.rb +1 -1
  60. metadata +22 -6
@@ -0,0 +1,568 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class KimitoYell < Base
6
+ # ゲームシステムの識別子
7
+ ID = "KimitoYell"
8
+
9
+ # ゲームシステム名
10
+ NAME = "キミトエール!"
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = "きみとええる"
14
+
15
+ HELP_MESSAGE = <<~TEXT
16
+ ■ 判定 (nKY6 / nKY10)
17
+ 指定された能力値分(n個)のダイスを使って判定を行います。
18
+ ・nKY6…「有利」を得ていない場合、6面ダイスをn個振って判定します。
19
+ ・nKY10…「有利」を得ている場合、10面ダイスをn個振って判定します。
20
+ 6もしくは10の出目があればスペシャル。1の出目があればファンブル。
21
+ スペシャルとファンブルは同時に発生した場合、両方の処理を行う。
22
+
23
+ ■ 表
24
+ ─ ファンブル表(FT)
25
+ ファンブル時の処理を決定します。
26
+
27
+ ─ 新しい出会いを求める
28
+ ─ 一括 新しい出会い表(NMTA) # New Meet Table
29
+ その後の表を含めてすべて同時に決定します。
30
+ ひとつひとつ振る場合には下記のコマンドを使用してください。
31
+ ─ 新しい出会い表(NMT) # New Meet Table
32
+ ─ 偶然出会った表(MCT) # Meet by Chance Table
33
+ ─ 交流のなかった身近な人表(CIT) # someone Close to you but no Interaction Table
34
+ ─ 助けてくれた人表(HYT) # someone Help You table
35
+ ─ どんな人だったか表(TLT) # what's They Like Table
36
+ ─ 変わった人だった表(EPT) # Eccentric Person Table
37
+
38
+ ─ ランダム命名表
39
+ ─ フルネーム一括生成(FNG) # Full Name Generation
40
+ ─ 名字表(LNT) # LastName Table
41
+ ─ 名前表(FNT) # FirstName Table
42
+ ─ 日本名字表1(JLTO) # Japanese Lastname Table One
43
+ ─ 日本名字表2(JLTT) # Japanese Lastname Table Two
44
+ ─ カタカナ名字表(FLT) # Foreien Lastname Table
45
+ ─ 日本名前表1(JFTO) # Japanese Firstname Table One
46
+ ─ 日本名前表2(JFTT) # Japanese Firstname Table Two
47
+ ─ カタカナ名前表(FFT) # Foreien Firstname Table
48
+ TEXT
49
+
50
+ register_prefix('\d+KY[6|10]', 'FT', 'NMTA', 'NMT', 'MCT', 'CIT', 'HYT', 'TLT', 'EPT', 'FNG', 'LNT', 'FNT', 'JLTO', 'JLTT', 'FLT', 'JFTO', 'JFTT', 'FFT')
51
+
52
+ def initialize(command)
53
+ super(command)
54
+
55
+ @sort_barabara_dice = true
56
+ @round_type = RoundType::CEIL
57
+ end
58
+
59
+ def eval_game_system_specific_command(command)
60
+ if /^(\d+)KY(6|10)$/.match(command).nil? != true
61
+ roll_ky_judge(command)
62
+ elsif /FT/.match(command).nil? != true && /JFTO|JFTT|FFT/.match(command).nil? == true
63
+ roll_fumble(command)
64
+ elsif /NMTA|NMT|MCT|CIT|HYT|TLT|EPT/.match(command).nil? != true
65
+ generate_new_encounter(command)
66
+ elsif /FNG|LNT|FNT|JLTO|JLTT|FLT|JFTO|JFTT|FFT/.match(command).nil? != true
67
+ generate_new_name(command)
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def roll_ky_judge(command)
74
+ # m[1]にダイス数、m[2]に6/10面がはいる
75
+ m = /^(\d+)KY(6|10)$/.match(command)
76
+
77
+ unless m
78
+ return nil
79
+ end
80
+
81
+ # d6、d10の設定
82
+ n_of_diceside = m[2].to_i == 10 ? 10 : 6
83
+
84
+ # 振るさいころの数
85
+ n_of_rolldice = m[1].to_i
86
+
87
+ # 成功となる出目
88
+ success_dices = [4, 5, 6, 7, 8, 9, 10]
89
+
90
+ # スペシャルとなる出目
91
+ special_dices = [6, 10]
92
+
93
+ # ファンブルとなる出目
94
+ fumble_dices = [1]
95
+
96
+ # 各種テキストとResultに持っていくための初期値
97
+ txt_special = "スペシャル(がんばりが1点上昇!)"
98
+ txt_fumble = "ファンブル(ファンブル表:FTを振る)"
99
+ txt_success = "成功"
100
+ txt_failure = "失敗"
101
+
102
+ result_txts = []
103
+ is_critical = false
104
+ is_fumble = false
105
+ is_success = false
106
+ is_failure = false
107
+
108
+ # ダイスを振る
109
+ dice_list = @randomizer.roll_barabara(n_of_rolldice, n_of_diceside)
110
+
111
+ # 結果チェック
112
+ is_critical = dice_list.intersection(special_dices).empty? ? false : true
113
+ is_fumble = dice_list.intersection(fumble_dices).empty? ? false : true
114
+ is_success = dice_list.intersection(success_dices).empty? ? false : true
115
+ is_failure = dice_list.intersection(success_dices).empty? ? true : false
116
+
117
+ # 結果用テキストの生成
118
+ if is_success == true
119
+ result_txts.push(txt_success)
120
+ end
121
+ if is_failure == true
122
+ result_txts.push(txt_failure)
123
+ end
124
+ if is_critical == true
125
+ result_txts.push(txt_special)
126
+ end
127
+ if is_fumble == true
128
+ result_txts.push(txt_fumble)
129
+ end
130
+
131
+ return Result.new.tap do |r|
132
+ # 最終的に表示するテキスト
133
+ r.text = "(#{command}) > [#{dice_list.join(',')}] > #{result_txts.join('・')}"
134
+
135
+ # 各種パラメータ
136
+ r.success = is_success
137
+ r.failure = is_failure
138
+ r.critical = is_critical
139
+ r.fumble = is_fumble
140
+ end
141
+ end
142
+
143
+ def roll_fumble(command)
144
+ fumbledice = @randomizer.roll_once(6)
145
+ fumbletext = FTABLE[fumbledice - 1]
146
+
147
+ return "ファンブル表(#{command}:#{fumbledice}) > #{fumbletext}"
148
+ end
149
+
150
+ def generate_new_encounter(command)
151
+ # 新しい出会い表(一括生成用もいったんまとめて振る)
152
+ if /NMTA|NMT/.match(command).nil? != true
153
+ table0 = NMTABLE
154
+ table0dice = @randomizer.roll_once(6)
155
+ table0txt = table0[table0dice]
156
+ if table0dice == 1
157
+ table1 = MCTABLE
158
+ table2 = TLTABLE
159
+ elsif table0dice == 2
160
+ table1 = MCTABLE
161
+ table2 = EPTABLE
162
+ elsif table0dice == 3
163
+ table1 = CITABLE
164
+ table2 = TLTABLE
165
+ elsif table0dice == 4
166
+ table1 = CITABLE
167
+ table2 = EPTABLE
168
+ elsif table0dice == 5
169
+ table1 = HYTABLE
170
+ table2 = TLTABLE
171
+ else
172
+ table1 = HYTABLE
173
+ table2 = EPTABLE
174
+ end
175
+ else
176
+ # その他の表だけ用ダイス
177
+ table0dice = @randomizer.roll_once(10)
178
+ end
179
+
180
+ # 新しい出会いを求める際のランダム表個別
181
+ if /MCT/.match(command).nil? != true
182
+ table0 = MCTABLE
183
+ table0txt = table0[table0dice]
184
+ elsif /CIT/.match(command).nil? != true
185
+ table0 = CITABLE
186
+ table0txt = table0[table0dice]
187
+ elsif /HYT/.match(command).nil? != true
188
+ table0 = HYTABLE
189
+ table0txt = table0[table0dice]
190
+ elsif /TLT/.match(command).nil? != true
191
+ table0 = TLTABLE
192
+ table0txt = table0[table0dice]
193
+ elsif /EPT/.match(command).nil? != true
194
+ table0 = EPTABLE
195
+ table0txt = table0[table0dice]
196
+ end
197
+
198
+ # 新しい出会い表の一括振り分残りの表決定と結果用テキスト生成
199
+ if /NMTA/.match(command).nil? != true
200
+ table1dice = @randomizer.roll_once(10)
201
+ table1txt = table1[table1dice]
202
+ table2dice = @randomizer.roll_once(10)
203
+ table2txt = table2[table2dice]
204
+
205
+ resulttxt = "#{table0[0]}(#{table0dice}) > #{table0txt}\n#{table1[0]}(#{table1dice}) > #{table1txt}\n#{table2[0]}(#{table2dice}) > #{table2txt}"
206
+ else
207
+ # 一括じゃない場合は表1枚分なので結果用テキスト生成処理まとめて
208
+ resulttxt = "#{table0[0]}(#{table0dice}) > #{table0txt}"
209
+ end
210
+
211
+ return resulttxt
212
+ end
213
+
214
+ def generate_new_name(command)
215
+ # 登録したD66のテーブル振るならroll_tables(command, TABLES)
216
+ # フルネーム一括生成
217
+ if /FNG/.match(command).nil? != true
218
+ nametabledice1 = @randomizer.roll_once(6)
219
+ result1 = "#{LNTABLE[0]}(#{nametabledice1}) > #{LNTABLE[nametabledice1]}"
220
+ nametabledice2 = @randomizer.roll_once(6)
221
+ result2 = "#{FNTABLE[0]}(#{nametabledice2}) > #{FNTABLE[nametabledice2]}"
222
+ if [1, 2].include?(nametabledice1)
223
+ result3 = roll_tables("JLTO", TABLES)
224
+ elsif [3, 4].include?(nametabledice1)
225
+ result3 = roll_tables("JLTT", TABLES)
226
+ else
227
+ result3 = roll_tables("FLT", TABLES)
228
+ end
229
+ if [1, 2].include?(nametabledice1)
230
+ result4 = roll_tables("JFTO", TABLES)
231
+ elsif [3, 4].include?(nametabledice1)
232
+ result4 = roll_tables("JFTT", TABLES)
233
+ else
234
+ result4 = roll_tables("FFT", TABLES)
235
+ end
236
+ end
237
+
238
+ # 名字表or名前表(その後の表も振る)
239
+ if /LNT/.match(command).nil? != true
240
+ nametabledice1 = @randomizer.roll_once(6)
241
+ result1 = "#{LNTABLE[0]}(#{nametabledice1}) > #{LNTABLE[nametabledice1]}"
242
+ if [1, 2].include?(nametabledice1)
243
+ result2 = roll_tables("JLTO", TABLES)
244
+ elsif [3, 4].include?(nametabledice1)
245
+ result2 = roll_tables("JLTT", TABLES)
246
+ else
247
+ result2 = roll_tables("FLT", TABLES)
248
+ end
249
+ elsif /FNT/.match(command).nil? != true
250
+ nametabledice1 = @randomizer.roll_once(6)
251
+ result1 = "#{FNTABLE[0]}(#{nametabledice1}) > #{FNTABLE[nametabledice1]}"
252
+ if [1, 2].include?(nametabledice1)
253
+ result2 = roll_tables("JFTO", TABLES)
254
+ elsif [3, 4].include?(nametabledice1)
255
+ result2 = roll_tables("JFTT", TABLES)
256
+ else
257
+ result2 = roll_tables("FFT", TABLES)
258
+ end
259
+ end
260
+
261
+ # 各表単発
262
+ if /JLTO|JLTT|FLT|JFTO|JFTT|FFT/.match(command).nil? != true
263
+ result1 = roll_tables(command, TABLES)
264
+ end
265
+
266
+ # 結果表示用テキスト生成
267
+ if result4.nil? != true
268
+ resulttxt = result1 + "\n" + result3 + "\n" + result2 + "\n" + result4
269
+ elsif result2.nil? != true
270
+ resulttxt = result1 + "\n" + result2
271
+ else
272
+ resulttxt = result1
273
+ end
274
+
275
+ return resulttxt
276
+ end
277
+
278
+ # Fumble Table
279
+ FTABLE = [
280
+ "とんでもない大失敗! 魔法でないと取り返しがつかない! 出目にかかわらず、「魔法の提案」をしない限り判定は失敗になる。",
281
+ "もうちょっと何かが足りない。自分の【がんばり】を1点消費することで、出目にかかわらず判定を成功にできる。【がんばり】を消費しなければ出目にかかわらず判定が失敗になる。",
282
+ "トラブルが発生したけど「大切な想い」を思い出して何とか乗り切った。大切だと思う世界から学んだこと、大切だと思いたい世界に対する気持ちを思い出して、なんとかしよう。自分の持っているカードの「大切な想い」を1つ選んで〇で囲む。〇で囲めない場合、判定は出目にかかわらず失敗になる。",
283
+ "トラブルが発生した。こんな自分を、あの人が見たらどう思うかな。自分が持っているカードに、「大切な想い」を考えて1つ書き込む。",
284
+ "トラブルが発生したけど、偶然にも自分の「守りたい人」が助けてくれた。あるいは、「守りたい人」の教えてくれたことが役立った。ありがとう……。",
285
+ "ちょっとヒヤリとする瞬間があったけど、何も起こらなかった。よかった。",
286
+ ].freeze
287
+
288
+ # New Meet Table
289
+ NMTABLE = [
290
+ "新しい出会い表",
291
+ "「偶然出会った表(MCT)」と「どんな人だったか表(TLT)」を使用してNPCを作成する。",
292
+ "「偶然出会った表(MCT)」と「変わった人だった表(EPT)」を使用してNPCを作成する。",
293
+ "「交流のなかった身近な人表(CIT)」と「どんな人だったか表(TLT)」を使用してNPCを作成する。",
294
+ "「交流のなかった身近な人表(CIT)」と「変わった人だった表(EPT)」を使用してNPCを作成する。",
295
+ "「助けてくれた人表(HYT)」と「どんな人だったか表(TLT)」を使用してNPCを作成する。",
296
+ "「助けてくれた人表(HYT)」と「変わった人だった表(EPT)」を使用してNPCを作成する。",
297
+ ].freeze
298
+
299
+ # Meet by Chance Table
300
+ MCTABLE = [
301
+ "偶然出会った表",
302
+ "何らかの事件や事故が起こり、それに巻き込まれた人を助けるために動いた。そのお礼をしたいと声をかけられた。",
303
+ "急に振り出した雨。屋根のある所に雨宿りをした際に、同じく雨宿りをしていた人物と話をした。",
304
+ "図書館の資料を集めていたところ、偶然にも同じ資料を借りようとしていた人物とバッティングしてしまった。どちらが先にするか話し合った。",
305
+ "魔法やオカルトの事を調べるのが趣味らしく、ちょっとした魔法の事件が起こった場所をうろついていた。巻き込まれないように声をかけたら、自分が怪しまれた。",
306
+ "街を歩いている時に、うずくまっている人を見つけた。何があったのかと声をかけてみると、何か困っていることがあるらしい。それを助けた。",
307
+ "偶然にも稼働していない魔具を見つけたので、回収するために持ち主と話をすることになった。",
308
+ "以前、魔具関係の事件で駆け回った時の自分を見かけた人がいたらしい。その時の顔が印象に残ったらしく、何をしていたのか聞かれた。",
309
+ "「MAGIA」にたちよったところ、知らない店員がいた。新しく雇ったアルバイトらしく、何をしていたのか聞かれた。",
310
+ "たまたま立ち寄った飲食店の店長から、試供品が提供されて、味の感想を求められた。どうやら新メニューを作りたいらしく、いろいろな人の意見を聞いているらしい。",
311
+ "「守りたい人」に会いに行ったら、「守りたい人」の親友と名乗る人と出会った。自分の知らない「守りたい人」について話してくれた。",
312
+ ].freeze
313
+
314
+ # someone Close to you but no Interaction Table
315
+ CITABLE = [
316
+ "交流のなかった身近な人表",
317
+ "その人は自分の親戚で、家の用事で出かけたときに親などから紹介をされた。話をしてみたら、自分の興味と同じものを研究していた。",
318
+ "親などに頼まれて、ご近所に挨拶へ伺った。その人は近所で見かけることがあったが、不思議と今まで交流がなく、よくわからない人だった。",
319
+ "「守りたい人」がたまに話題に出す友人と、「守りたい人」に紹介される形で会う機会ができた。この人はどんな人なのか、見てみよう。",
320
+ "きょうだいの知り合いで、挨拶ぐらいはしていたけど、二人きりになったのは初めてだった。きょうだいも用事でいないし、どう話したものか。",
321
+ "学業やスポーツの関係で、遠くの国で暮らしていたきょうだい(あるいはいとこ)が帰ってきた。優秀な成績を修めて、世間からも注目されている人物にどう接しようか。",
322
+ "昔はずっと一緒に遊んでいた幼馴染だったけど、事情があって最近まで遠くに出かけていた。数日前に帰ってきたらしく、挨拶しにやってきた。",
323
+ "「MAGIA」に立ち寄ったところ、店長から話しかけられた。どうも今は暇らしく、話し相手になってほしいとのことだ。",
324
+ "SNSなどで知り合い、趣味が合ってネット上の友人となれた人物と、外でも会うことになった。",
325
+ "クラスや職場で人気の人が、たまたま一人でいるところを見かけた。向こうもこちらに気づいたらしく、話しかけてきた。さて、どうするかな。",
326
+ "趣味の集いに行ったら、クラスメイトや元クラスメイトがいた。趣味の場で会ってみると教室との印象が違った。",
327
+ ].freeze
328
+
329
+ # someone Help You table
330
+ HYTABLE = [
331
+ "助けてくれた人表",
332
+ "忘れ物をしたが、それを届けてくれた。その際に少し話をしたが、優しく丁寧で好感の持てる人だった。",
333
+ "自分が転びそうになった、あるいは轢かれそうになった時に、助けてくれた。",
334
+ "用事があって普段行かない場所に行ったとき、迷子になった自分を助けてくれた。",
335
+ "自分がケガをした子供の対処に困っている時、一緒になって子供の面倒を診てくれた。",
336
+ "自分は幼い頃、外でケガをしてしまったことがある。その時に応急処置をして、病院まで運んでくれた人がいる。その人と偶然再会した。",
337
+ "自分は幼い頃、何かしらの事情で孤独になり、辛かった時期がある。そんな時に、声をかけて一緒に遊んでくれた人がいた。その人と再会した。",
338
+ "自分が不良や話しかけられたくないタイプの人に絡まれた時、声をかけて助けてくれた人がいる。",
339
+ "図書館などで資料集めをしている際に、声をかけて助けてくれた人がいた。",
340
+ "魔具や財布など重要なものを失くしてしまい、探している必死そうな自分を見て助けてくれた。",
341
+ "昔、魔法関係で困った時に、助けてくれた魔法使いがいた。その人が何かの用事で「MAGIA」に立ち寄っており、その時に声をかけた。",
342
+ ].freeze
343
+
344
+ # what's They Like Table
345
+ TLTABLE = [
346
+ "どんな人だったか表",
347
+ "「守りたい人」によく似ている。",
348
+ "不良っぽいファッションだけど、単にそういう格好が好きなだけで丁寧な人だった。",
349
+ "パリッとした服装、きちんとした身なりで優等生あるいは真面目な人という感じ。",
350
+ "活発そうな人物で、スポーツに打ち込んでいそうな体格と口調。いかにも体育会系。",
351
+ "サバサバとした性格で、いろいろな人の悩み事を聞いては解決しようとしていた兄貴分(姉貴分)。",
352
+ "細かいことが気になるタイプのようで、何かとチェックしてそうな視線を感じた。",
353
+ "優しい性格で、自分の言葉を待って聞いてくれる人だった。",
354
+ "おしゃべりな人物で、いろいろなことをしゃべってくれる。そのうえで、こちらの話も聞いてくれた。",
355
+ "不思議と小動物のような印象を受けた。懐いてきて、自分の反応を楽しみにしているような、そんな人だ。",
356
+ "「守りたい人」の知り合いで、共通の知り合いの話題ができた。",
357
+ ].freeze
358
+
359
+ # Eccentric Person Table
360
+ EPTABLE = [
361
+ "変わった人だった表",
362
+ "元気すぎる。声も大きいし、自分は振り回されるし。ちょっと疲れる。",
363
+ "優しそうだけど、どこか底知れない、何を考えているのかわからない人物だった。",
364
+ "見るからに遊び人で、言動も軽く見える。どこか一定以上親しくなるのを恐れている部分が垣間見えた。",
365
+ "ぶっきらぼうで一見とっつきづらい印象だけど、こちらのことをよく見ていて、助けようとしている。たぶん、寂しがり屋。",
366
+ "トレンドを着こなしていて、いかにもおしゃれな人だった。ファッションだけでなく、あらゆることを調べて理解しようと動いている。努力の人なんだと思う。",
367
+ "自分がその人にとって大事な人に似ているらしく、世話を焼こうとしてくれている。",
368
+ "お菓子職人や料理人を目指しているらしく、試食を頼んでくる。",
369
+ "誰かを助けなければならない、という理念があり、とにかく人助けをして回っている人だった。自分のことは二の次のようだ。",
370
+ "すごい資産家の一族らしく、身に着けている物はすべて高級で、教養もあった。",
371
+ "常に何かのアルバイトをしている。掛け持ちだから忙しくしているらしい。",
372
+ ].freeze
373
+
374
+ # LastName Table
375
+ LNTABLE = [
376
+ "名字表",
377
+ "日本名字表1(JLTO)を使用する。",
378
+ "日本名字表1(JLTO)を使用する。",
379
+ "日本名字表2(JLTT)を使用する。",
380
+ "日本名字表2(JLTT)を使用する。",
381
+ "カタカナ名字表(FLT)を使用する。",
382
+ "カタカナ名字表(FLT)を使用する。",
383
+ ].freeze
384
+
385
+ # FirstName Table
386
+ FNTABLE = [
387
+ "名前表",
388
+ "日本名前表1(JFTO)を使用する。",
389
+ "日本名前表1(JFTO)を使用する。",
390
+ "日本名前表2(JFTT)を使用する。",
391
+ "日本名前表2(JFTT)を使用する。",
392
+ "カタカナ名前表(FFT)を使用する。",
393
+ "カタカナ名前表(FFT)を使用する。",
394
+ ].freeze
395
+
396
+ TABLES = {
397
+ # Japanese Lastname Table One
398
+ "JLTO" => DiceTable::D66Table.new(
399
+ "日本名字表1",
400
+ D66SortType::ASC,
401
+ {
402
+ 11 => "有栖(ありす)",
403
+ 12 => "佐藤(さとう)",
404
+ 13 => "鈴木(すずき)",
405
+ 14 => "葉月(はづき)",
406
+ 15 => "如月(きさらぎ)",
407
+ 16 => "皐月(さつき)",
408
+ 22 => "九重(ここのえ)",
409
+ 23 => "高橋(たかはし)",
410
+ 24 => "田中(たなか)",
411
+ 25 => "右京(うきょう)",
412
+ 26 => "七海(ななみ)",
413
+ 33 => "小春(こはる)",
414
+ 34 => "伊藤(いとう)",
415
+ 35 => "渡辺(わたなべ)",
416
+ 36 => "飛鳥(あすか)",
417
+ 44 => "渡井(わたらい)",
418
+ 45 => "井上(いのうえ)",
419
+ 46 => "氷室(ひむろ)",
420
+ 55 => "錦(にしき)",
421
+ 56 => "柳(やなぎ)",
422
+ 66 => "蓬莱(ほうらい)",
423
+ }
424
+ ),
425
+ # Japanese Lastname Table Two
426
+ "JLTT" => DiceTable::D66Table.new(
427
+ "日本名字表2",
428
+ D66SortType::ASC,
429
+ {
430
+ 11 => "蜂須賀(はちすか)",
431
+ 12 => "山本(やまもと)",
432
+ 13 => "中村(なかむら)",
433
+ 14 => "御影(みかげ)",
434
+ 15 => "四季(しき)",
435
+ 16 => "常磐(ときわ)",
436
+ 22 => "栗栖(くりす)",
437
+ 23 => "小林(こばやし)",
438
+ 24 => "加藤(かとう)",
439
+ 25 => "花野井(はなのい)",
440
+ 26 => "綾瀬(あやせ)",
441
+ 33 => "乙女(おとめ)",
442
+ 34 => "吉田(よしだ)",
443
+ 35 => "山田(やまだ)",
444
+ 36 => "桐葉(きりは)",
445
+ 44 => "桔梗(ききょう)",
446
+ 45 => "松本(まつもと)",
447
+ 46 => "音羽(おとわ)",
448
+ 55 => "蓮見(はすみ)",
449
+ 56 => "桜森(さくらもり)",
450
+ 66 => "百合園(ゆりぞの)",
451
+ }
452
+ ),
453
+ # Foreien Lastname Table
454
+ "FLT" => DiceTable::D66Table.new(
455
+ "カタカナ名字表",
456
+ D66SortType::ASC,
457
+ {
458
+ 11 => "レイエス",
459
+ 12 => "スミス",
460
+ 13 => "ジョンソン",
461
+ 14 => "ウィリアム",
462
+ 15 => "ブラウン",
463
+ 16 => "ジョーンズ",
464
+ 22 => "シュルツ",
465
+ 23 => "エメリヒ",
466
+ 24 => "ファル",
467
+ 25 => "クルツ",
468
+ 26 => "マイアー",
469
+ 33 => "コスキネン",
470
+ 34 => "モロー",
471
+ 35 => "ルノー",
472
+ 36 => "ロベール",
473
+ 44 => "ラ",
474
+ 45 => "エン",
475
+ 46 => "キョウ",
476
+ 55 => "ハン",
477
+ 56 => "ユン",
478
+ 66 => "ホン",
479
+ }
480
+ ),
481
+ # Japanese Firstname Table One
482
+ "JFTO" => DiceTable::D66Table.new(
483
+ "日本名前表1",
484
+ D66SortType::ASC,
485
+ {
486
+ 11 => "涼太(りょうた)/八重(やえ)",
487
+ 12 => "蒼(あおい)/雅(みやび)",
488
+ 13 => "樹(いつき)/凛(りん)",
489
+ 14 => "蓮(れん)詩(うた)",
490
+ 15 => "翔(しょう)/舞(まい)",
491
+ 16 => "翼(つばさ)/鈴(すず)",
492
+ 22 => "遼(りょう)/瑠華(るか)",
493
+ 23 => "陽翔(はると)/結菜(ゆな)",
494
+ 24 => "律(りつ)/莉子(りこ)",
495
+ 25 => "輝(ひかる)/陽葵(ひまり)",
496
+ 26 => "仁(じん)/乃愛(のあ)",
497
+ 33 => "大夢(ひろむ)/阿澄(あすみ)",
498
+ 34 => "朝陽(あさひ)/結月(ゆづき)",
499
+ 35 => "大翔(ひろと)/結愛(ゆあ)",
500
+ 36 => "隼人(はやと)/萌花(もか)",
501
+ 44 => "公太(こうた)/春歌(はるか)",
502
+ 45 => "大和(やまと)/澪(みお)",
503
+ 46 => "拓真(たくま)/奈々(なな)",
504
+ 55 => "雄大(ゆうだい)/明日香(あすか)",
505
+ 56 => "悠(ゆう)/彩(あや)",
506
+ 66 => "秀助(しゅうすけ)/那留(なる)",
507
+ }
508
+ ),
509
+ # Japanese Firstname Table Two
510
+ "JFTT" => DiceTable::D66Table.new(
511
+ "日本名前表2",
512
+ D66SortType::ASC,
513
+ {
514
+ 11 => "一郎(いちろう)/かぐや",
515
+ 12 => "太一(たいち)/さくら",
516
+ 13 => "颯太(そうた)/あかり",
517
+ 14 => "瑛斗(えいと)/こはる",
518
+ 15 => "俊輔(しゅんすけ)/ひなた",
519
+ 16 => "大地(だいち)/すみれ",
520
+ 22 => "健太(けんた)/里奈(りな)",
521
+ 23 => "歩(あゆむ)/春菜(はるな)",
522
+ 24 => "伊織(いおり)/芽衣(めい)",
523
+ 25 => "航(わたる)/愛美(あいみ)",
524
+ 26 => "優希(ゆうき)/綾乃(あやの)",
525
+ 33 => "直樹(なおき)/茜(あかね)",
526
+ 34 => "煌(こう)/もも",
527
+ 35 => "陽向(ひなた)/ひかり",
528
+ 36 => "将吾(しょうご)/ほのか",
529
+ 44 => "和也(かずや)/美穂(みほ)",
530
+ 45 => "巧(たくみ)/未来(みらい)",
531
+ 46 => "直哉(なおや)/朱里(しゅり)",
532
+ 55 => "亮(りょう)/瞳(ひとみ)",
533
+ 56 => "陸人(りくと)/心音(ここね)",
534
+ 66 => "康平(こうへい)/沙織(さおり)",
535
+ }
536
+ ),
537
+ # Foreien Firstname Table
538
+ "FFT" => DiceTable::D66Table.new(
539
+ "カタカナ名前表",
540
+ D66SortType::ASC,
541
+ {
542
+ 11 => "カルロ/ビアンカ",
543
+ 12 => "リアム/オリビア",
544
+ 13 => "イライジャ/エイヴァ",
545
+ 14 => "オリバー/ミア",
546
+ 15 => "ジェームズ/アメリア",
547
+ 16 => "メイソン/シャーロット",
548
+ 22 => "オネスト/カルメン",
549
+ 23 => "ブルーノ/アンネ",
550
+ 24 => "エーミール/クラーラ",
551
+ 25 => "ラインハルト/エッダ",
552
+ 26 => "テオ/リア",
553
+ 33 => "ロメオ/ルチア",
554
+ 34 => "セドリック/マリアンヌ",
555
+ 35 => "コーム/リーズ",
556
+ 36 => "ギー/カトリーヌ",
557
+ 44 => "ハオユー/ルーシー",
558
+ 45 => "ハオラン/イーラン",
559
+ 46 => "イーチェン/シンイー",
560
+ 55 => "ウヌ/ハユン",
561
+ 56 => "ソジュン/ソア",
562
+ 66 => "ジュウォン/スピン",
563
+ }
564
+ ),
565
+ }.freeze
566
+ end
567
+ end
568
+ end