bcdice 3.16.1 → 3.17.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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +111 -0
  3. data/i18n/Airgetlamh/ja_jp.yml +5 -0
  4. data/i18n/Airgetlamh/ko_kr.yml +5 -0
  5. data/i18n/Alsetto/ja_jp.yml +5 -0
  6. data/i18n/Alsetto/ko_kr.yml +5 -0
  7. data/i18n/AnimaAnimus/ja_jp.yml +28 -0
  8. data/i18n/AnimaAnimus/ko_kr.yml +28 -0
  9. data/i18n/BlackJacket/ja_jp.yml +79 -0
  10. data/i18n/BlackJacket/ko_kr.yml +79 -0
  11. data/i18n/Bloodorium/ja_jp.yml +3 -0
  12. data/i18n/Bloodorium/ko_kr.yml +3 -0
  13. data/i18n/Cthulhu/ko_kr.yml +1 -1
  14. data/i18n/Dracurouge/ko_kr.yml +1284 -205
  15. data/i18n/Emoklore/ja_jp.yml +1 -0
  16. data/i18n/Emoklore/ko_kr.yml +1 -0
  17. data/i18n/FutariSousa/ja_jp.yml +70 -0
  18. data/i18n/FutariSousa/ko_kr.yml +157 -0
  19. data/i18n/HatsuneMiku/ja_jp.yml +579 -0
  20. data/i18n/HatsuneMiku/ko_kr.yml +579 -0
  21. data/i18n/Irisbane/ja_jp.yml +27 -0
  22. data/i18n/Irisbane/ko_kr.yml +27 -0
  23. data/i18n/JuinKansen/ja_jp.yml +168 -0
  24. data/i18n/JuinKansen/ko_kr.yml +168 -0
  25. data/i18n/KemonoNoMori/ja_jp.yml +229 -0
  26. data/i18n/KemonoNoMori/ko_kr.yml +229 -0
  27. data/i18n/KizunaBullet/ko_kr.yml +653 -0
  28. data/i18n/MagicPunk/ja_jp.yml +5 -0
  29. data/i18n/MagicPunk/ko_kr.yml +5 -0
  30. data/i18n/MorkBorg/ja_jp.yml +34 -0
  31. data/i18n/MorkBorg/ko_kr.yml +34 -0
  32. data/i18n/Nechronica/ko_kr.yml +43 -0
  33. data/i18n/NegikureNegimaki/ja_jp.yml +6 -0
  34. data/i18n/NegikureNegimaki/ko_kr.yml +6 -0
  35. data/i18n/Nuekagami/ja_jp.yml +219 -0
  36. data/i18n/Nuekagami/ko_kr.yml +219 -0
  37. data/i18n/Revulture/ja_jp.yml +8 -0
  38. data/i18n/Revulture/ko_kr.yml +8 -0
  39. data/i18n/SRS/ja_jp.yml +4 -0
  40. data/i18n/SRS/ko_kr.yml +4 -0
  41. data/i18n/ShinobiGami/ja_jp.yml +879 -0
  42. data/i18n/ShinobiGami/ko_kr.yml +876 -0
  43. data/i18n/StarryDolls/ja_jp.yml +456 -0
  44. data/i18n/StarryDolls/ko_kr.yml +456 -0
  45. data/i18n/StratoShout/ja_jp.yml +8 -8
  46. data/i18n/SwordWorld2_5/ja_jp.yml +48 -0
  47. data/i18n/Ventangle/ja_jp.yml +4 -0
  48. data/i18n/Ventangle/ko_kr.yml +4 -0
  49. data/i18n/YearZeroEngine/ja_jp.yml +12 -0
  50. data/i18n/YearZeroEngine/ko_kr.yml +12 -0
  51. data/i18n/ZombiLine/ja_jp.yml +27 -0
  52. data/i18n/ZombiLine/ko_kr.yml +27 -0
  53. data/i18n/ko_kr.yml +2 -0
  54. data/i18n/zh_hant.yml +2 -2
  55. data/lib/bcdice/dice_table/d66_left_range_table.rb +21 -0
  56. data/lib/bcdice/game_system/Aionia.rb +68 -19
  57. data/lib/bcdice/game_system/Airgetlamh.rb +64 -41
  58. data/lib/bcdice/game_system/Airgetlamh_Korean.rb +53 -0
  59. data/lib/bcdice/game_system/Alsetto.rb +63 -50
  60. data/lib/bcdice/game_system/Alsetto_Korean.rb +51 -0
  61. data/lib/bcdice/game_system/AnimaAnimus.rb +15 -32
  62. data/lib/bcdice/game_system/AnimaAnimus_Korean.rb +39 -0
  63. data/lib/bcdice/game_system/BlackJacket.rb +57 -113
  64. data/lib/bcdice/game_system/BlackJacket_Korean.rb +8 -206
  65. data/lib/bcdice/game_system/Bloodorium.rb +1 -1
  66. data/lib/bcdice/game_system/Bloodorium_Korean.rb +34 -0
  67. data/lib/bcdice/game_system/ChroniclesOfDarkness2e.rb +163 -0
  68. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +471 -300
  69. data/lib/bcdice/game_system/DeadlineHeroes_Korean.rb +273 -0
  70. data/lib/bcdice/game_system/Dracurouge_Korean.rb +25 -19
  71. data/lib/bcdice/game_system/DungeonsAndDragons5.rb +106 -73
  72. data/lib/bcdice/game_system/DungeonsAndDragons5_Korean.rb +53 -0
  73. data/lib/bcdice/game_system/DungeonsAndDragons_Korean.rb +61 -0
  74. data/lib/bcdice/game_system/Emoklore.rb +34 -9
  75. data/lib/bcdice/game_system/Emoklore_Korean.rb +10 -2
  76. data/lib/bcdice/game_system/FateCoreSystem.rb +10 -6
  77. data/lib/bcdice/game_system/FullMetalPanic_Korean.rb +28 -0
  78. data/lib/bcdice/game_system/FutariSousa.rb +37 -12
  79. data/lib/bcdice/game_system/FutariSousa_Korean.rb +25 -8
  80. data/lib/bcdice/game_system/GaiaCare.rb +40 -0
  81. data/lib/bcdice/game_system/GardenOrder.rb +2 -2
  82. data/lib/bcdice/game_system/GardenOrderReEdit.rb +849 -0
  83. data/lib/bcdice/game_system/GardenOrder_Korean.rb +839 -0
  84. data/lib/bcdice/game_system/HatsuneMiku.rb +51 -605
  85. data/lib/bcdice/game_system/HatsuneMiku_Korean.rb +56 -0
  86. data/lib/bcdice/game_system/HunterTheReckoning5th.rb +15 -11
  87. data/lib/bcdice/game_system/Irisbane.rb +17 -30
  88. data/lib/bcdice/game_system/Irisbane_Korean.rb +52 -0
  89. data/lib/bcdice/game_system/JuinKansen.rb +41 -208
  90. data/lib/bcdice/game_system/JuinKansen_Korean.rb +8 -213
  91. data/lib/bcdice/game_system/KemonoNoMori.rb +67 -276
  92. data/lib/bcdice/game_system/KemonoNoMori_Korean.rb +62 -0
  93. data/lib/bcdice/game_system/KinAriel.rb +117 -0
  94. data/lib/bcdice/game_system/KizunaBullet_Korean.rb +109 -0
  95. data/lib/bcdice/game_system/KutuluRevised.rb +94 -0
  96. data/lib/bcdice/game_system/LiverLabyrinth.rb +321 -0
  97. data/lib/bcdice/game_system/Lost.rb +89 -0
  98. data/lib/bcdice/game_system/MagicPunk.rb +85 -0
  99. data/lib/bcdice/game_system/MagicPunk_Korean.rb +39 -0
  100. data/lib/bcdice/game_system/MarvelHeroicRoleplaying.rb +144 -0
  101. data/lib/bcdice/game_system/MetallicGuardian_Korean.rb +28 -0
  102. data/lib/bcdice/game_system/MorkBorg.rb +170 -0
  103. data/lib/bcdice/game_system/MorkBorg_Korean.rb +49 -0
  104. data/lib/bcdice/game_system/NanimonaiMura.rb +112 -0
  105. data/lib/bcdice/game_system/Nechronica_Korean.rb +6 -6
  106. data/lib/bcdice/game_system/NegikureNegimaki.rb +140 -0
  107. data/lib/bcdice/game_system/NegikureNegimaki_Korean.rb +48 -0
  108. data/lib/bcdice/game_system/NeonUnderRealm.rb +122 -0
  109. data/lib/bcdice/game_system/NinjaSlayer2.rb +170 -49
  110. data/lib/bcdice/game_system/Nuekagami.rb +19 -261
  111. data/lib/bcdice/game_system/Nuekagami_Korean.rb +43 -0
  112. data/lib/bcdice/game_system/ParanoiaPerfect.rb +74 -0
  113. data/lib/bcdice/game_system/PastFutureParadox.rb +2245 -55
  114. data/lib/bcdice/game_system/PreciousDays.rb +170 -0
  115. data/lib/bcdice/game_system/Revulture.rb +8 -5
  116. data/lib/bcdice/game_system/Revulture_Korean.rb +7 -81
  117. data/lib/bcdice/game_system/Ryutama.rb +46 -46
  118. data/lib/bcdice/game_system/SRS.rb +4 -4
  119. data/lib/bcdice/game_system/SRS_Korean.rb +67 -0
  120. data/lib/bcdice/game_system/ShinobiGami.rb +154 -1047
  121. data/lib/bcdice/game_system/ShinobiGami_Korean.rb +102 -0
  122. data/lib/bcdice/game_system/StarryDolls.rb +70 -508
  123. data/lib/bcdice/game_system/StarryDolls_Korean.rb +80 -0
  124. data/lib/bcdice/game_system/StratoShout.rb +1 -1
  125. data/lib/bcdice/game_system/SwordWorld.rb +28 -2
  126. data/lib/bcdice/game_system/SwordWorld2_0.rb +1 -1
  127. data/lib/bcdice/game_system/SwordWorld2_5.rb +67 -3
  128. data/lib/bcdice/game_system/TacticalExorcist.rb +222 -0
  129. data/lib/bcdice/game_system/TenkaRyouran_Korean.rb +30 -0
  130. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +38 -33
  131. data/lib/bcdice/game_system/Ventangle.rb +8 -7
  132. data/lib/bcdice/game_system/Ventangle_Korean.rb +6 -95
  133. data/lib/bcdice/game_system/Warhammer4.rb +202 -6
  134. data/lib/bcdice/game_system/WerewolfTheApocalypse5th.rb +20 -15
  135. data/lib/bcdice/game_system/WorldEndScrapyard.rb +333 -0
  136. data/lib/bcdice/game_system/WorldsEndFrontline_Korean.rb +26 -0
  137. data/lib/bcdice/game_system/YearZeroEngine.rb +7 -7
  138. data/lib/bcdice/game_system/YearZeroEngine_Korean.rb +46 -0
  139. data/lib/bcdice/game_system/ZombiLine.rb +29 -36
  140. data/lib/bcdice/game_system/ZombiLine_Korean.rb +37 -0
  141. data/lib/bcdice/game_system/cthulhu7th_Korean/full_auto.rb +294 -0
  142. data/lib/bcdice/game_system/cthulhu7th_Korean/rollable.rb +43 -0
  143. data/lib/bcdice/game_system/sword_world/rating_options.rb +9 -0
  144. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +19 -0
  145. data/lib/bcdice/game_system/sword_world/rating_parser.rb +229 -149
  146. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +1 -0
  147. data/lib/bcdice/game_system.rb +42 -0
  148. data/lib/bcdice/version.rb +1 -1
  149. metadata +87 -2
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/HatsuneMiku'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class HatsuneMiku_Korean < HatsuneMiku
8
+ # ゲームシステムの識別子
9
+ ID = 'HatsuneMiku:Korean'
10
+
11
+ # ゲームシステム名
12
+ NAME = '하츠네 미쿠TRPG 코코로 던전'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = '国際化:Korean:하츠네 미쿠TRPG 코코로 던전'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
19
+ ・판정(Rx±y@z>=t)
20
+  능력치의 주사위마다 성공・실패 판정을 행합니다.
21
+  x:능력 랭크(S,A~D). 숫자 지정으로 직접 그 개수의 주사위를 굴릴 수 있습니다
22
+  y:수정값. A+2 또는 A++ 처럼 표기. 혼재 시 A++,+1 처럼 기술도 가능
23
+  z:스페셜 최저값(생략 시 6) t:목표값(생략 시 4)
24
+   예) RA R2 RB+1 RC++ RD+,+2 RA>=5 RS-1@5>=6
25
+  결과는 음색을 취득한 나머지에서 최대값을 표시
26
+ 예) RB
27
+  HatsuneMiku : (RB>=4) > [3,5] >
28
+   음색에 3(파랑)을 취득한 경우 5:성공
29
+   음색에 5(하양)을 취득한 경우 3:실패
30
+
31
+ ・각종 표
32
+  펌블표 FT/치명상표 CWT/휴식표 BT/목표표 TT/관계표 RT
33
+  장애표 OT/리퀘스트표 RQT/크롤표 CLT/보상표 RWT/악몽표 NMT/정경표 ST
34
+
35
+ ・키워드 표
36
+  다크 DKT/핫 HKT/러브 LKT/엑센트릭 EKT/멜랑콜리 MKT
37
+
38
+ ・이름표 NT
39
+  코어별 다크 DNT/핫 HNT/러브 LNT/엑센트릭 ENT/멜랑콜리 MNT
40
+
41
+ ・오토다마 각종 표
42
+  성격표A OPA/성격표B OPB/취미표 OHT/외견표 OLT/1인칭표 OIT/호칭표 OYT
43
+  리액션표 ORT/만남표 OMT
44
+ INFO_MESSAGE_TEXT
45
+
46
+ def initialize(command)
47
+ super(command)
48
+ @locale = :ko_kr
49
+ end
50
+
51
+ TABLES = translate_tables(:ko_kr).freeze
52
+
53
+ register_prefix_from_super_class()
54
+ end
55
+ end
56
+ end
@@ -15,16 +15,16 @@ module BCDice
15
15
  # ダイスボットの使い方
16
16
  HELP_MESSAGE = <<~MESSAGETEXT
17
17
  ・判定コマンド(nHRFx+x)
18
- 注意:難易度は必要成功数を表す
18
+ 注意:難易度は必要達成数を表す
19
19
 
20
- 難易度指定:成功数のカウント、判定成功と失敗、Critical処理、Critical Win、Total Failureのチェックを行う
20
+ 難易度指定:達成数のカウント、判定成功と失敗、クリティカル処理、クリティカル成功、完全失敗のチェックを行う
21
21
  (Desperationダイスがある場合)OverreachとDespairの発生チェックを行う
22
22
  例) (難易度)HRF(通常ダイス)+(Desperationダイス)
23
23
  (難易度)HRF(通常ダイス)
24
24
 
25
- 難易度省略:成功数のカウント、判定失敗、Critical処理、Total Failure、(Desperationダイスがある場合)Despairチェックを行う
25
+ 難易度省略:達成数のカウント、判定失敗、クリティカル処理、完全失敗、(Desperationダイスがある場合)Despairチェックを行う
26
26
  判定成功、Overreachのチェックを行わない
27
- Critical Win、(Desperationダイスがある場合)Despair、Overreachのヒントを出力
27
+ クリティカル成功、(Desperationダイスがある場合)Despair、Overreachのヒントを出力
28
28
  例) HRF(通常ダイス)+(Desperationダイス)
29
29
  HRF(通常ダイス)
30
30
 
@@ -45,12 +45,16 @@ module BCDice
45
45
  register_prefix('\d*HRF')
46
46
 
47
47
  def eval_game_system_specific_command(command)
48
- m = /\A(\d+)?(HRF)(\d+)(\+(\d+))?$/.match(command)
48
+ m = /\A(\d+)?(HRF)(-?\d+)(\+(\d+))?$/.match(command)
49
49
  unless m
50
50
  return ''
51
51
  end
52
52
 
53
53
  dice_pool = m[DICE_POOL_INDEX].to_i
54
+ if dice_pool <= 0
55
+ # ダイスプールが0以下のとき、最低保証ダイスプールであるダイスプール1にする
56
+ dice_pool = 1
57
+ end
54
58
  dice_text, success_dice, ten_dice, = make_dice_roll(dice_pool)
55
59
  result_text = "(#{dice_pool}D10"
56
60
 
@@ -82,7 +86,7 @@ module BCDice
82
86
  private
83
87
 
84
88
  def get_roll_result(result_text, success_dice, ten_dice, _desperaton_ten_dice, desperaton_botch_dice, difficulty)
85
- result_text = "#{result_text} 成功数=#{success_dice}"
89
+ result_text = "#{result_text} 達成数=#{success_dice}"
86
90
  is_critical = ten_dice >= 2
87
91
  desperation_result = ""
88
92
 
@@ -90,14 +94,14 @@ module BCDice
90
94
  result_text = "#{result_text} 難易度=#{difficulty}"
91
95
 
92
96
  if success_dice >= difficulty
93
- result_text = "#{result_text} 差分=#{success_dice - difficulty}"
97
+ result_text = "#{result_text} 上回り=#{success_dice - difficulty}"
94
98
 
95
99
  if desperaton_botch_dice > 0
96
100
  desperation_result = " [Overreach or Despair?]"
97
101
  end
98
102
 
99
103
  if is_critical
100
- return Result.critical("#{result_text}:判定成功! [Critical Win]#{desperation_result}")
104
+ return Result.critical("#{result_text}:判定成功! [クリティカル成功/Critical Win]#{desperation_result}")
101
105
  else
102
106
  return Result.success("#{result_text}:判定成功!#{desperation_result}")
103
107
  end
@@ -107,7 +111,7 @@ module BCDice
107
111
  return Result.fumble("#{result_text}:判定失敗! [Despair]")
108
112
  end
109
113
  if success_dice == 0
110
- return Result.fumble("#{result_text}:判定失敗! [Total Failure]")
114
+ return Result.fumble("#{result_text}:判定失敗! [完全失敗/Total Failure]")
111
115
  end
112
116
 
113
117
  return Result.failure("#{result_text}:判定失敗!")
@@ -118,7 +122,7 @@ module BCDice
118
122
  return Result.fumble("#{result_text}:判定失敗! [Despair]")
119
123
  end
120
124
 
121
- return Result.fumble("#{result_text}:判定失敗! [Total Failure]")
125
+ return Result.fumble("#{result_text}:判定失敗! [完全失敗/Total Failure]")
122
126
  else
123
127
  if desperaton_botch_dice > 0
124
128
  result_text = "#{result_text}\n 判定失敗なら [Despair]"
@@ -126,7 +130,7 @@ module BCDice
126
130
  end
127
131
 
128
132
  if is_critical
129
- result_text = "#{result_text}\n 判定成功なら [Critical Win]"
133
+ result_text = "#{result_text}\n 判定成功なら [クリティカル成功/Critical Win]"
130
134
  elsif desperaton_botch_dice > 0
131
135
  result_text = "#{result_text}\n 判定成功なら"
132
136
  end
@@ -53,7 +53,7 @@ module BCDice
53
53
  if (m = ATTACK_ROLL_REG.match(command))
54
54
  roll_attack(m[2], m[3], m[4], m[6], m[7])
55
55
  else
56
- roll_tables(command, TABLES)
56
+ roll_tables(command, self.class::TABLES)
57
57
  end
58
58
  end
59
59
 
@@ -73,7 +73,7 @@ module BCDice
73
73
  command = make_command_text(power, dice_count, border, modification_operator, modification_value)
74
74
 
75
75
  if dice_count <= 0
76
- return "#{command} > 判定数が 0 です"
76
+ return "#{command} > #{translate('Irisbane.zero_dice_count')}"
77
77
  end
78
78
 
79
79
  dices = @randomizer.roll_barabara(dice_count, 6).sort
@@ -84,17 +84,17 @@ module BCDice
84
84
  message_elements = []
85
85
  message_elements << command
86
86
  message_elements << dices.join(',')
87
- message_elements << "成功ダイス数 #{success_dice_count}"
88
- message_elements << 攻撃力 #{power}" if success_dice_count > 0
87
+ message_elements << translate('Irisbane.success_dice_count', count: success_dice_count)
88
+ message_elements << translate('Irisbane.attack_power', power: power) if success_dice_count > 0
89
89
 
90
90
  if success_dice_count > 0
91
91
  if modification_operator && modification_value
92
- message_elements << "ダメージ #{damage}#{modification_operator}#{modification_value}"
92
+ message_elements << translate('Irisbane.damage_with_mod', damage: damage, operator: modification_operator, mod_value: modification_value)
93
93
  damage = parse_operator(modification_operator).call(damage, modification_value)
94
94
  damage = 0 if damage < 0
95
95
  message_elements << damage.to_s
96
96
  else
97
- message_elements << "ダメージ #{damage}"
97
+ message_elements << translate('Irisbane.damage', damage: damage)
98
98
  end
99
99
  end
100
100
 
@@ -119,30 +119,17 @@ module BCDice
119
119
  end
120
120
  end
121
121
 
122
- TABLES = {
123
- "SceneSituation" => DiceTable::D66LeftRangeTable.new(
124
- "シチュエーション",
125
- BCDice::D66SortType::NO_SORT,
126
- [
127
- [1..3, [
128
- "【日常】何一つ変わることの無い日々の一幕。移ろい易い世界では、それはとても大切である。",
129
- "【準備】何かを為すための用意をする一幕。情報収集、買物遠征、やるべきことは一杯だ。",
130
- "【趣味】自分の時間を、有効活用している一幕。必要に追われていない分、心は軽く晴れやかだ。",
131
- "【喫茶】一息入れ、嗜好品を嗜む時の一幕。穏やかな空気は、だが、往々にして変わりやすい。",
132
- "【鍛錬】体を鍛え、心を養う修練の一幕。己さえ良ければ、その方法も何だって良い。",
133
- "【職務】役割の元、仕事に精を出す時の一幕。目的が何であれ、為すべきことに変わりはない。",
134
- ]],
135
- [4..6, [
136
- "【移動】何処かから何処かへと向かう一幕。進んでいるなら、手段も目的地も関係あるまい。",
137
- "【墓前】故人が眠る場所へと赴く一幕。共に眠ることだけは無いように。",
138
- "【操作】何かを操り、望みを果たしている一幕。運転にせよ何にせよ、脇見には注意が必要だ。",
139
- "【食事】何かを糧とし、己の力を蓄える一幕。行動すれば消耗する。腹が減っては何とやらだ。",
140
- "【休息】日々の合間の、憩いの一幕。“何もしない”というのも、立派な行いである。",
141
- "【夢幻】現実に存在しない何かへと耽る一幕。時間帯に関わらず、何時かは必ず覚めるだろう。",
142
- ]],
143
- ]
144
- ),
145
- }.transform_keys(&:upcase).freeze
122
+ class << self
123
+ private
124
+
125
+ def translate_tables(locale)
126
+ {
127
+ "SCENESITUATION" => DiceTable::D66LeftRangeTable.from_i18n('Irisbane.SceneSituation', locale),
128
+ }
129
+ end
130
+ end
131
+
132
+ TABLES = translate_tables(:ja_jp).freeze
146
133
 
147
134
  ALIAS = {
148
135
  "SSi" => "SceneSituation",
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/Irisbane'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class Irisbane_Korean < Irisbane
8
+ # ゲームシステムの識別子
9
+ ID = 'Irisbane:Korean'
10
+
11
+ # ゲームシステム名
12
+ NAME = '눈 돌리지 않는 이리스베인'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = '国際化:Korean:눈 돌리지 않는 이리스베인'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~HELP
19
+ ■공격 판정( ATTACKx@y<=z )
20
+ x: 공격력
21
+ y: 판정 수
22
+ z: 목표값
23
+ (※ ATTACK 은 ATK 또는 AT 로 줄여 쓸 수 있습니다)
24
+ 예) ATTACK2@3<=5
25
+ 예) ATK10@2<=4
26
+ 예) AT8@3<=2
27
+
28
+ 위 x y z 에는 각각 사칙연산을 지정할 수 있습니다.
29
+ 예) ATTACK2+7@3*2<=5-1
30
+
31
+ □공격 판정의 데미지 증감( ATTACKx@y<=z[+a] ATTACKx@y<=z[-a])
32
+ 말미에 [+a] 또는 [-a] 를 지정하면 최종 데미지를 증감할 수 있습니다.
33
+ a: 증감량
34
+ 예) ATTACK2@3<=5[+10]
35
+ 예) ATK10@2<=4[-8]
36
+ 예) AT8@3<=2[-8+5]
37
+
38
+ ■시추에이션(p115)
39
+ SceneSituation, SSi
40
+ HELP
41
+
42
+ def initialize(command)
43
+ super(command)
44
+ @locale = :ko_kr
45
+ end
46
+
47
+ TABLES = translate_tables(:ko_kr).freeze
48
+
49
+ register_prefix_from_super_class()
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/base"
4
+ require "bcdice/dice_table/table"
5
+
3
6
  module BCDice
4
7
  module GameSystem
5
8
  class JuinKansen < Base
@@ -32,218 +35,48 @@ module BCDice
32
35
  INFO_MESSAGE_TEXT
33
36
 
34
37
  def eval_game_system_specific_command(command)
35
- roll_tables(ALIAS[command] || command, TABLES)
38
+ roll_tables(self.class::ALIAS[command] || command, self.class::TABLES)
39
+ end
40
+
41
+ class << self
42
+ private
43
+
44
+ def translate_tables(locale)
45
+ {
46
+ "DAILY" => DiceTable::Table.from_i18n("JuinKansen.table.DAILY", locale),
47
+ "PLACECITY" => DiceTable::Table.from_i18n("JuinKansen.table.PLACECITY", locale),
48
+ "PLACECOUNTRYSIDE" => DiceTable::Table.from_i18n("JuinKansen.table.PLACECOUNTRYSIDE", locale),
49
+ "PLACEFACILITY" => DiceTable::Table.from_i18n("JuinKansen.table.PLACEFACILITY", locale),
50
+ "FIRSTLOOK" => DiceTable::Table.from_i18n("JuinKansen.table.FIRSTLOOK", locale),
51
+ "APPRECIATIVEFRIEND" => DiceTable::Table.from_i18n("JuinKansen.table.APPRECIATIVEFRIEND", locale),
52
+ "FORESHADOW" => DiceTable::Table.from_i18n("JuinKansen.table.FORESHADOW", locale),
53
+ "EMOTION" => DiceTable::Table.from_i18n("JuinKansen.table.EMOTION", locale),
54
+ "SITUATION" => DiceTable::Table.from_i18n("JuinKansen.table.SITUATION", locale),
55
+ "TARGET" => DiceTable::Table.from_i18n("JuinKansen.table.TARGET", locale),
56
+ "INSANITY" => DiceTable::Table.from_i18n("JuinKansen.table.INSANITY", locale),
57
+ "DEATH" => DiceTable::Table.from_i18n("JuinKansen.table.DEATH", locale),
58
+ "FEAR" => DiceTable::Table.from_i18n("JuinKansen.table.FEAR", locale),
59
+ }
60
+ end
36
61
  end
37
62
 
38
- TABLES = {
39
- "Daily" => DiceTable::Table.new(
40
- "日常表",
41
- "2D6",
42
- [
43
- "「入浴中」『内容』PCの自己紹介後、自宅でどのように入浴しているかについて、簡単に説明せよ。『終了条件』GMが「体を洗い終えたので、そろそろあがることにした」と宣言する。",
44
- "「自炊」『内容』PCの自己紹介後、自宅でどんな食事を作るか、自炊が苦手かどうかなどを説明せよ。『終了条件』GMが「料理ができたので、食事を始めた」と宣言する。",
45
- "「休憩時間」『内容』PCの自己紹介後、仕事や学業の休憩時間に、どこで何をしているのか簡単に説明せよ。『終了条件』GMが「そろそろ、休憩時間が終わりそうだ」と宣言する。",
46
- "「帰宅中」『内容』PCの自己紹介後、仕事や学業から帰宅途中、何をしているかを簡単に説明せよ。『終了条件』GMが自宅に到着したと宣言する。",
47
- "「昼休み」『内容』PCの自己紹介後、仕事や学業の昼休み中、どこでなにを食べているのかを簡単に説明せよ。『終了条件』GMが昼休みがそろそろ終わると宣言する。",
48
- "「仕事中」『内容』PCの自己紹介後、仕事や学業に対して、どのような態度で臨んでいるのかを簡単に説明せよ。『終了条件』GMが休憩時間を知らせるチャイムなどが鳴ったと宣言する。",
49
- "「通勤・通学」『内容』PCの自己紹介後、どのような方法で通勤・通学しているかを簡単に説明せよ。『終了条件』GMが職場や学校に到着したと宣言する。",
50
- "「休日」『内容』PCの自己紹介後、休日に何をしているか簡単に説明せよ。『終了条件』GMが「そろそろ、明日に備えなければ」と宣言する。",
51
- "「自宅」『内容』PCの自己紹介後、自宅の自室で、どのようにくつろいでいるかを簡単に説明せよ。『終了条件』GMが「そろそろ、寝る時間のようだ」と宣言する。",
52
- "「寝起き直後」『内容』PCの自己紹介後、自宅で起床直後、どのような行動を取るかについて、簡単に説明せよ。『終了条件』GMが「出勤・通学の準備が整った」と宣言する。",
53
- "「趣味」『内容』PCの自己紹介後、自室でどんな趣味に没頭しているかを簡単に説明せよ。『終了条件』GMが「名残惜しいが、そろそろ寝る時間のようだ」と宣言する。",
54
- ]
55
- ),
56
- "PlaceCity" => DiceTable::Table.new(
57
- "場所表「都市」",
58
- "2D6",
59
- [
60
- "「事件現場」ここは以前、怪事件が起こったと噂される事件現場だ。よく見ると、近くには枯れた花束が置かれている。",
61
- "「帰宅路」ここは帰宅路だ。時間帯のせいか周囲に人気はなく、耳鳴りがするほどの静寂に包まれている。",
62
- "「近所の公園」ここは自宅・会社・学校いずれかの近くにある公園だ。今いる場所は、奥のあずまやで、近くには自販機が並んでいる。",
63
- "「近所のコンビニ」ここはPCの自宅近くにある、コンビニエンスストアだ。大きな駐車場のせいか、周囲は実に広々としている。",
64
- "「飲食店」ここはどこにでもある飲食店だ。しかし、客の入りはまばらで、周囲には空席が目立つ。",
65
- "「駅の広場」ここは人々が通勤や通学に使う駅の広場だ。が、行き交う人々の視線はどこか冷たく、虚ろにさえ見える。",
66
- "「神社仏閣」ここは街のなかにある神社・寺社だ。頼めばお祓いをしてくれるという話だが、ご利益があるかは不明だ。",
67
- "「図書館」ここは街中にある公立の図書館だ。周囲には新旧の様々な書籍が並び、調べものをするにはうってつけだ。",
68
- "「河川敷の道」ここは近所にある河川敷沿いの道だ。周囲に人気はなく、無機質な道路が遠くまで続いてる。",
69
- "「病院の前」ここは近所にある総合病院の前だ。通院患者と思しき老人や若者が、時折、真新しい出入り口を行き来している。",
70
- "「警察署の前」ここは街中にある警察署の前だ。今回の事件、あるいは先ほどの怪現象を話しても……おそらく、信じてはくれないだろう。",
71
- ]
72
- ),
73
- "PlaceCountryside" => DiceTable::Table.new(
74
- "場所表「田舎」",
75
- "2D6",
76
- [
77
- "「事件現場」ここは以前、怪事件が起こったと噂される事件現場だ。よく見ると、近くには枯れた花束が置いてある。",
78
- "「学校の前」ここは村の奥にある学校の前だ。しかし、何年も前に廃校したらしく、門は固く閉ざされ、校庭には雑草が生い茂っている。",
79
- "「公園」ここは村の中にある公園だ。中央にたたずむ遊具はいずれも錆びついており、所々に雑草が生えている。",
80
- "「村役場」ここは村にある役場だ。しかし、役場のドアは締め切られたままで、なかに人の気配はない。",
81
- "「森の中」ここは道路から離れた場所にある森の中だ。周囲からは、動物と思しき鳴き声が聞こえてくる。",
82
- "「バス停」ここは村唯一のバス停だ。時刻表を見てみるが、バスは一日に一本しか通ってないらしい。",
83
- "「神社仏閣」ここは村の中にある神社・寺社だ。境内はさびれており、人の気配は皆無に等しい。",
84
- "「田畑」ここは村の外れにある田畑だ。農閑期のせいか、畑は放置されたままで、周囲を見渡しても人の姿はない。",
85
- "「川辺」ここは村の外れにある川の近くだ。目前の川は透き通っており、何匹も魚が泳いでいる。",
86
- "「病院の前」ここは村にある小さな病院の前だ。しかし、今日は定休日なのか、病院は閉まったままだ。",
87
- "「交番の前」ここは村唯一の交番だ。しかし、警察官の姿はなく、ドアも締め切られたままだ。",
88
- ]
89
- ),
90
- "PlaceFacility" => DiceTable::Table.new(
91
- "場所表「施設内」",
92
- "2D6",
93
- [
94
- "「礼拝堂」ここは地下に存在する、礼拝堂と思しき場所だ。部屋の奥には奇妙な姿をした石像があり、周囲には瘴気が漂っている。",
95
- "「隠し部屋」ここは隠し部屋と思しき場所だ。部屋の壁には、血痕のような汚れが染みついている。",
96
- "「倉庫」ここは中心部に存在する倉庫だ。場所のせいか、はたまた異変のせいか、周囲には不気味なカビが生えている。",
97
- "「寝台」ここは寝台のある場所だ。内部には簡素なベッドと机が置かれているだけで、非常に殺風景だ。",
98
- "「応接室」ここは応接室と思しき場所だ。部屋の中央には、大きめのテーブルとソファが置いてある。",
99
- "「廊下」ここは施設内を通る廊下の1つだ。伝統がついていないせいか、それとも時間帯のせいか、周囲はやけに薄暗い。",
100
- "「ロビー」ここはロビーだ。扉は相変わらず開く気配がなく、周囲は静まり返っている。",
101
- "「踊り場」ここは階段の踊り場だ。周囲は非常に薄暗く、これといって何もない。",
102
- "「地下室」ここは地下室だ。床にはうっすらと埃が積もり、長年使われていないように思える。",
103
- "「実験室」ここは実験室と思しき場所だ。中央には大きなテーブルが設置されており、どういうわけか血まみれだ。",
104
- "「研究室」ここは研究室と思しき場所だ。部屋は全体的に暗く、奥の棚には奇妙な姿をした生物のホルマリン漬けが並んでる。",
105
- ]
106
- ),
107
- "FirstLook" => DiceTable::Table.new(
108
- "初見表",
109
- "2D6",
110
- [
111
- "「襲撃からの救出」『内容』PC同士が再会後、【命運】の低いPCが突如、不良などに絡まれ、【命運】の高いPCが実力や機転で救う場面を演出せよ。『終了条件』【命運】の低いPCが、【命運】の高いPCに対して感謝の言葉を述べる。",
112
- "「落とし物」『内容』PC同士が再会後、【幸運】の低いPCが荷物を落とし、それを【幸運】の高いPCが拾い、手渡す場面を演出せよ。『終了条件』【幸運】の低いPCが【幸運】の高いPCの[呪印]に気付く。",
113
- "「黒い影」『内容』PC同士が再会後、【精神】の高いPCが、【精神】の低いPCの背後に黒い影を目撃する場面を演出せよ。『終了条件』【精神】の高いPCが「さっきの……なに?」と問う。",
114
- "「<なにか>を見た」『内容』PC同士が再会後、【幸運】の低いPCが暗がりの奥で<なにか>を目撃。顔面蒼白となる場面を演出せよ。『終了条件』【幸運】の高いPCが【幸運】の低いPCを気遣う。",
115
- "「呼び声」『内容』PC同士は再会後、遠くから不気味な呼び声を聞き、周囲を見回すうちに、目が合う場面を演出せよ。『終了条件』PCのいずれかが「今の……聞こえた?」と問いかけ、いずれかが返答する。",
116
- "「知り合い」『内容』PC同士が再会後、実は知り合いの知り合いだったことが判明する場面を演出せよ。『終了条件』PC同士がどんな関係かについて相談・決定する。",
117
- "「事故からの救出」『内容』落下物や交通事故など、【希望】の低いPCが突如、不可解な事故に巻き込まれ、【希望】の高いPCに救われる場面を演出せよ。『終了条件』【希望】の低いPCが、【希望】の高いPCに感謝の言葉を述べる。",
118
- "「SNS」『内容』【知性】の高いPCがSNS上で事件に関する発信を行い、【知性】の低いPCと知り合う場面を演出せよ。『終了条件』【知性】の低いPCが「また今度、お会いしましょう」と返信する。",
119
- "「<なにか>が見える」『内容』PC同士が再会後、暗がりの向こうで<なにか>を目撃、戦慄する場面を演出せよ。『終了条件』<なにか>が消え去り、PCのいずれかが「……さっきの見た?」と問う。",
120
- "「介抱」『内容』【体力】の低いPCが突如、<なにか>に襲われる幻覚を見て取り乱し、偶然現れた【体力】の高いPCに助けられる場面を演出せよ。『終了条件』【体力】の低いPCが感謝の言葉を述べる。",
121
- "「呪印」『内容』PC同士が再会後、【敏捷】の高いPCが、【敏捷】の低いPCの持つ[呪印]に気付く場面を演出せよ。『終了条件』【敏捷】の高いPCが自身にも同じものがあると告げる。",
122
- ]
123
- ),
124
- "AppreciativeFriend" => DiceTable::Table.new(
125
- "知己表",
126
- "2D6",
127
- [
128
- "「大切な人」『内容』PC同士が再会後、事件に関する相談をするうちに、PCが互いに、自身の[大切な人]について語る場面を演出せよ。『終了条件』いずれかのPCが「なんにせよ、その人のためにも、生き残らないといけませんね」と言う。",
129
- "「個人の印象」『内容』PC同士が出会い、事件の相談をするうちに、いずれかが片方のPCの印象や人柄について、感想を述べる場面を演出せよ。『終了条件』感想を言われたPCが「そうかな?」と言う。",
130
- "「呪印について」『内容』PC同士が出会い、お互いの体に刻まれた[呪印]の正体について考える場面を演出せよ。『終了条件』いずれかのPCが、「……結局、謎だらけだということですね。また考えましょうか」と言う。",
131
- "「不安と恐れ」『内容』PC同士が出会い、相談をするうちに【命運】の低いPCが不安を抱き、【命運】の高いPCが気遣う場面を演出せよ。『終了条件』【命運】の低いPCが「大丈夫です」と返す。",
132
- "「情報交換」『内容』PC同士が出会い、現状を整理するために、情報交換を行う場面を演出せよ。『終了条件』いずれかのPCが「……また、新しい情報が手に入ったら連絡します」と言う。",
133
- "「過去と秘密」『内容』PC同士が出会い、事件の相談を行った際、いずれかのPCが[関係性]を結んだ≪過去や秘密≫について語る。『終了条件』≪過去や秘密≫を語ったPCが「巻き込んでしまって、すいません」と言う。",
134
- "「推理」『内容』PC同士が出会い、今回の事件の解決方法について、推理する場面を演出せよ。『終了条件』いずれかのPCが「もっと詳しく調べてみましょう。きっと、なにか良い方法があるはずです」と言う。",
135
- "「協力関係」『内容』PC同士が出会い、いずれかのPCが今回の事件を生き抜くために、より協力関係を強めようと、提案する場面を演出せよ。『終了条件』提案されたほうのPCが、提案に承諾する。",
136
- "「願いについて」『内容』PC同士が出会い、事件について推理するうちに、いずれかのPCが自身の[願い]について語る場面を演出せよ。『終了条件』[願い]を知ったPCが、それに対して個人的な感想を述べる。",
137
- "「作戦会議」『内容』PC同士が出会い、【知性】の低いPCが【知性】の高いPCに良い知恵はないかと相談する場面を演出せよ。『終了条件』【知性】の高いPCが「……上手くいくかわかりませんが、ある方法を試してみます」と言う。",
138
- "「方法はあるはずだ」『内容』PC同士が出会い、いずれかのPCが「生き残る方法は、必ずあるはずだ」と鼓舞する場面を演出せよ。『終了条件』鼓舞されたPCが、「そうですね……その方法を探してみましょう」と言う。",
139
- ]
140
- ),
141
- "Foreshadow" => DiceTable::Table.new(
142
- "伏線表",
143
- "1D6",
144
- [
145
- "PCとの会話のなかで、ふと閃くものがあった。",
146
- "謎の金属片が落ちていた。胸ポケットにしまっておこう。",
147
- "会話の最中……突如、ある真実に気づいてしまった。",
148
- "PCからの激励を耳にして、やけに気合が入った。",
149
- "不安な情報を耳にした瞬間、大切な人の顔が浮かんだ。",
150
- "そのとき、不思議な力が身のうちに宿った。",
151
- ]
152
- ),
153
- "Emotion" => DiceTable::Table.new(
154
- "感情表",
155
- "1D6",
156
- [
157
- "尊敬",
158
- "好意",
159
- "友情",
160
- "庇護",
161
- "信頼",
162
- "安心",
163
- ]
164
- ),
165
- "Situation" => DiceTable::Table.new(
166
- "状況表",
167
- "1D6",
168
- [
169
- "「不運の連鎖」事件が関係しているのか、PCたちの周囲で次々と不幸が起こり始めている。なんとかして、この連鎖を止めなければ……。『使用可能能力値』【幸運】",
170
- "「見えない恐怖」事件が発生してから、PCたちは誰かから監視されているような気がする。こんなときこそ、気を強く持たなければ……。『使用可能能力値』【精神】",
171
- "「冷静な行動」立て続けに起こる怪奇現象のせいで、PCたちはやや混乱気味だ。しかし、こんなときこそ冷静に知恵を絞らねば……。『使用可能能力値』【知性】",
172
- "「震えよ、止まれ」迫りくる恐怖のせいで、PCたちの心身は萎縮し、衰弱している。だが、こんなときこそ冷静に行動しなければ……。『使用可能能力値』【敏捷】",
173
- "「危機はすぐそこ」得体のしれない<なにか>は、間違いなくそこまで迫ってきている。頼れるのはもはや、自分たちの肉体だけだ……。『使用可能能力値』【体力】",
174
- "「運が味方」状況は逼迫しつつある。だが、幸運にも状況がPCたちに味方し始めた。なんとしてでも、このチャンスを活かさねば……。『使用可能能力値』各PCの任意の【能力値】",
175
- ]
176
- ),
177
- "Target" => DiceTable::Table.new(
178
- "対象表",
179
- "1D6",
180
- [
181
- "【体力】が最も高い順",
182
- "【敏捷】が最も高い順",
183
- "【知性】が最も高い順",
184
- "【精神】が最も高い順",
185
- "【幸運】が最も高い順",
186
- "【希望】が最も低い順",
187
- ]
188
- ),
189
- "Insanity" => DiceTable::Table.new(
190
- "狂気表",
191
- "1D6",
192
- [
193
- "「逃げたい」次[フェイズ]の終了を迎えるまで、PCは恐怖のため、その場から一刻も早く立ち去りたいという衝動に駆られる様子を演出せよ。",
194
- "「記憶の混濁」次[フェイズ]の終了を迎えるまで、PCはショックのあまり、見たものや聞いたものが何だったかを思い出せない様子を演出せよ。",
195
- "「興奮状態」次[フェイズ]の終了を迎えるまで、PCは恐怖のあまり、些細なことでイライラし、PCに辛くあたった後、「……ごめんなさい」と、後悔する状況を演出せよ。",
196
- "「怯えている」次[フェイズ]の終了を迎えるまで、PCは恐怖のあまり、先ほどから怯え続けている状況を演出せよ。",
197
- "「緊張状態」次[フェイズ]の終了を迎えるまで、PCは極度の緊張状態で体の自由が利かず、転んだり、萎縮したりする状況を演出せよ。",
198
- "「一時的発狂」次[フェイズ]の終了を迎えるまで、PCは衝撃のあまり、一時的に発狂してしまい、うわごとを何度も何度も繰り返してしまう状況を演出せよ。",
199
- ]
200
- ),
201
- "Death" => DiceTable::Table.new(
202
- "終焉表",
203
- "1D6",
204
- [
205
- "「猟奇殺人」その後、PCは郊外の廃屋のなかでバラバラ死体となって発見された。警察は懸命に捜査を行ったが、結局、手がかりは見つからず、事件は迷宮入りした。",
206
- "「変死」その後、PCが自室で変死しているのが発見された。PCの死因は出血多量。出血を引き起こした外傷は、まるで大きな獣に噛まれたような痕だった。",
207
- "「自殺」その後、PCが郊外に放置された廃車のなかで、自殺しているのが発見された。だが、遺書は見つかっておらず、その理由は最後までわからずじまいであった。",
208
- "「衰弱死」その後、PCは突如として体調を崩し、入院を余儀なくされた。検査を繰り返したものの、原因は不明のまま……やがて、PCは体重が半減して、衰弱死した。",
209
- "「事故死」その後、PCは不慮の事故に遭い、この世を去った。だが、遺体解剖の結果、事故による外傷ではなく、直前に内臓破裂を起こしていたことが判明した。",
210
- "「行方不明」その後、PCは行方不明となった。家族はPCの捜索届を出したが、結局、最後までPCが見つかることはなかった。",
211
- ]
212
- ),
213
- "Fear" => DiceTable::Table.new(
214
- "恐怖表",
215
- "2D6",
216
- [
217
- "「不気味なモノ」血液、人骨のようなもの、大量の粘液など……奇妙なモノが突如、足元に落ちてきた。[効果算出]PC全員に5+[呪印÷2]d。",
218
- "「早まる鼓動」突然のチャイム、突然の電話、突然の呼び声、突然の物音……不安のせいか、ただそれだけで、鼓動が早まる。[効果算出]PC3体に4+[呪印÷2]d。",
219
- "「不安の種」無言電話、差出人不明のメッセージ、鍵穴についた深い傷、排水溝の長い髪の毛など……不安になるものを見つけてしまう。[効果算出]PC1体に4+[呪印÷2]d。",
220
- "「異臭」生臭い匂い、鉄臭い匂い、花のような芳香など……普段嗅がない異臭が、一瞬だけ鼻孔をついた。[効果算出]PC2体に3+[呪印÷2]d。",
221
- "「隙間」建物の影、ベッドの下、ふすまの隙間など……様々な死角から<なにか>の息遣い、気配が漂う。[効果算出]PC2体に2+[呪印÷2]d。",
222
- "「視線」どこからか、強い視線を感じる……だが、そちらに目をやると、気配はすぐに消えてしまった。[効果算出]PC2体に2+[呪印÷2]d。",
223
- "「異音」遠くから不思議な金属音や鐘の音、肉を潰すような音や粘着質な音などが聞こえた気がした。[効果算出]PC2体に3+[呪印÷2]d。",
224
- "「接触」つい先ほど……なにかに触られたような、あるいは服を引っ張られたような気がした。[効果算出]PC3体に3+[呪印÷2]d。",
225
- "「さっきのは?」隣を通り過ぎた人物、声をかけてきた人物、何かを渡してきた人物……しかし、ここには2人以外、誰もいないはずだ。[効果算出]PC2体に4+[呪印÷2]d。",
226
- "「見てはいけない」次の行動に移ろうとしたそのとき、一瞬、通路の向こうに<なにか>が佇んでいるような気がした。[効果算出]PC1体に5+[呪印÷2]d。",
227
- "「暗闇のなかへ」PCは突如として<なにか>に手足をつかまれ、暗闇へと引きずり込まれそうになる![効果算出]PC1体に6+[呪印÷2]d。",
228
- ]
229
- ),
230
- }.transform_keys(&:upcase).freeze
63
+ TABLES = translate_tables(:ja_jp).freeze
231
64
 
232
65
  ALIAS = {
233
- "Dai" => "Daily",
234
- "PCi" => "PlaceCity",
235
- "PCo" => "PlaceCountryside",
236
- "PFa" => "PlaceFacility",
237
- "FL" => "FirstLook",
238
- "AF" => "AppreciativeFriend",
239
- "For" => "Foreshadow",
240
- "Emo" => "Emotion",
241
- "Sit" => "Situation",
242
- "Tar" => "Target",
243
- "Ins" => "Insanity",
244
- "Dea" => "Death",
245
- "Fea" => "Fear",
246
- }.transform_keys(&:upcase).transform_values(&:upcase).freeze
66
+ "DAI" => "DAILY",
67
+ "PCI" => "PLACECITY",
68
+ "PCO" => "PLACECOUNTRYSIDE",
69
+ "PFA" => "PLACEFACILITY",
70
+ "FL" => "FIRSTLOOK",
71
+ "AF" => "APPRECIATIVEFRIEND",
72
+ "FOR" => "FORESHADOW",
73
+ "EMO" => "EMOTION",
74
+ "SIT" => "SITUATION",
75
+ "TAR" => "TARGET",
76
+ "INS" => "INSANITY",
77
+ "DEA" => "DEATH",
78
+ "FEA" => "FEAR",
79
+ }.freeze
247
80
 
248
81
  register_prefix(TABLES.keys, ALIAS.keys)
249
82
  end