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,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/KemonoNoMori'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class KemonoNoMori_Korean < KemonoNoMori
8
+ # ゲームシステムの識別子
9
+ ID = 'KemonoNoMori:Korean'
10
+
11
+ # ゲームシステム名
12
+ NAME = '짐승의 숲'
13
+
14
+ # ゲームシステム名の読みがな
15
+ SORT_KEY = '国際化:Korean:짐승의 숲'
16
+
17
+ # ダイスボットの使い方
18
+ HELP_MESSAGE = <<~MESSAGETEXT
19
+ ・행위 판정(성공도 자동 산출)(P119): KAx[±y]
20
+ ・지속 판정(성공도+1 고정): KCx[±y]
21
+ x=목표치
22
+ y=목표치에 대한 수정(임의) x+y-z 처럼 여러 개 지정 가능
23
+ 예1)KA7+3 → 목표치7에 +3 수정을 더한 행위 판정
24
+ 예2)KC6 → 목표치6의 지속 판정
25
+ ・함정 작동 체크+먹잇감표(P163): CTR
26
+ 함정마다 1D12를 굴려, 12가 나온 경우 생물이 함정을 작동시켜 그 영향을 받고 있다.
27
+ ・각종 표(기본 룰북)
28
+ ・대실패표(P120): FT
29
+ ・능력치 무작위 결정표(P121): RST
30
+ ・무작위 소요 시간표(P122): RTT
31
+ ・무작위 소모표(P122): RET
32
+ ・무작위 날씨표(P128): RWT
33
+ ・무작위 날씨 지속표(P128): RWDT
34
+ ・무작위 엄폐물표(야외)(P140): ROMT
35
+ ・무작위 엄폐물표(실내)(P140): RIMT
36
+ ・도주 체험표(P144): EET
37
+ ・식재료 채집표(P157): GFT
38
+ ・물 채집표(P157): GWT
39
+ ・백색 마석 효과표(P186): WST
40
+ ・부위 피해 관련 표(참조 페이지는 리플레이&데이터북 「가미신의 연회」 기준)
41
+ ・인간 부위표(P216): HPT
42
+ ・부위 피해 단계표(P217): PDT
43
+ ・네발 동물 부위표(P225): QPT
44
+ ・무족류 부위표(P225): APT
45
+ ・두발 동물 부위표(P226): TPT
46
+ ・새 부위표(P226): BPT
47
+ ・두족류 부위표(P227): CPT
48
+ ・곤충 부위표(P227): IPT
49
+ ・거미 부위표(P228): SPT
50
+ MESSAGETEXT
51
+
52
+ def initialize(command)
53
+ super(command)
54
+ @locale = :ko_kr
55
+ end
56
+
57
+ TABLES = translate_tables(:ko_kr).freeze
58
+
59
+ register_prefix_from_super_class()
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class KinAriel < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'KinAriel'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'キナリエル'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'きなりえる'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGETEXT
17
+ ■判定 KA<=t t: 目標値
18
+
19
+ 例)KA<=50: 目標値50で結果を表示(クリティカル、ファンブル、成功、失敗)
20
+
21
+ ■対抗判定 VS<=t t: 目標値
22
+
23
+ 例)VS<=50: 目標値50で最大5回振って、その結果を表示。
24
+ INFO_MESSAGETEXT
25
+
26
+ register_prefix('KA', 'VS')
27
+
28
+ def eval_game_system_specific_command(command)
29
+ resolute_action(command) || resolute_competition(command)
30
+ end
31
+
32
+ private
33
+
34
+ # 通常判定
35
+ # @param [String] command
36
+ # @return [Result]
37
+ def resolute_action(command)
38
+ m = /KA<=(\d+)/.match(command)
39
+ return nil unless m
40
+
41
+ target = m[1].to_i
42
+ dice = @randomizer.roll_once(100)
43
+
44
+ output = "(KA<=#{target}) > [#{dice}]"
45
+
46
+ if dice <= target
47
+ if dice <= 5
48
+ output += " > クリティカル"
49
+ return Result.critical(output)
50
+ else
51
+ output += " > 成功"
52
+ return Result.success(output)
53
+ end
54
+ else
55
+ if dice >= 96
56
+ output += " > ファンブル"
57
+ return Result.fumble(output)
58
+ else
59
+ output += " > 失敗"
60
+ return Result.failure(output)
61
+ end
62
+ end
63
+ end
64
+
65
+ # 対抗判定用出力
66
+ # @param [String] command
67
+ # @return [Result]
68
+ def resolute_competition(command)
69
+ m = /VS<=(\d+)/.match(command)
70
+ return nil unless m
71
+
72
+ target = m[1].to_i
73
+ output = "(VS<=#{target}) > "
74
+ dice_arr = []
75
+ result = Result.new
76
+
77
+ 5.times do
78
+ dice = @randomizer.roll_once(100)
79
+ dice_arr.push(dice)
80
+ result = get_roll_result(dice, target)
81
+ if result.critical?
82
+ output += '[' + dice_arr.join(",") + "] > #{dice_arr.length}回目でクリティカル"
83
+ result.text = output
84
+ return result
85
+ elsif result.fumble?
86
+ output += '[' + dice_arr.join(",") + "] > #{dice_arr.length}回目でファンブル"
87
+ result.text = output
88
+ return result
89
+ elsif result.failure?
90
+ output += '[' + dice_arr.join(",") + "] > #{dice_arr.length}回目で失敗"
91
+ result.text = output
92
+ return result
93
+ end
94
+ end
95
+ output += '[' + dice_arr.join(",") + "] > #{dice_arr.length}回成功"
96
+ result.text = output
97
+ return result
98
+ end
99
+
100
+ def get_roll_result(dice, target)
101
+ if dice <= target
102
+ if dice <= 5
103
+ return Result.critical("")
104
+ else
105
+ return Result.success("")
106
+ end
107
+ else
108
+ if dice >= 96
109
+ return Result.fumble("")
110
+ else
111
+ return Result.failure("")
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/game_system/KizunaBullet'
4
+ require 'bcdice/game_system/kizuna_bullet/tables'
5
+
6
+ module BCDice
7
+ module GameSystem
8
+ class KizunaBullet_Korean < KizunaBullet
9
+ # ゲームシステムの識別子
10
+ ID = 'KizunaBullet:Korean'
11
+
12
+ # ゲームシステム名
13
+ NAME = '키즈나 불릿'
14
+
15
+ # ゲームシステム名の読みがな
16
+ SORT_KEY = '国際化:Korean:키즈나 불릿'
17
+
18
+ # ダイスボットの使い方
19
+ HELP_MESSAGE = <<~MESSAGETEXT
20
+ ・다이스 롤
21
+ nDM...n개의 6면 다이스를 굴려 가장 높은 값을 사용합니다.
22
+ ・[조사 판정]
23
+ nIN…n개의 6면 다이스를 굴려 가장 높은 값이 5 이상이면 성공합니다. ([파트너의 헬프] 사용가능)
24
+ ・[진정 판정]
25
+ SEn…2개의 6면 다이스를 굴려 합계치가 n([균열]상태의 [키즈나]의 개수)보다 높으면 성공합니다. ([강제 진정]사용가능)
26
+ ・[해결] [액션]의 대미지와[액시던트]의 대미지 경감
27
+ nSO…2+n개의 6면 다이스를 굴려 결과값을 모두 합산합니다. (n은 줄인 【여기치】. 생략 가능)
28
+
29
+ ・각종표
30
+ 일상 표・장소 OP
31
+ 일상 표・내용 OC
32
+ 일상 표・장소 및 내용 OPC
33
+ 일상 표(일)・장소 OWP
34
+ 일상 표(일)・내용 OWC
35
+ 일상 표(일)・장소 및 내용 OWPC
36
+ 일상 표(휴가)・장소 OHP
37
+ 일상 표(휴가)・내용 OHC
38
+ 일상 표(휴가)・장소 및 내용 OHPC
39
+ 일상 표(출장)・장소 OTP
40
+ 일상 표(출장)・내용 OTC
41
+ 일상 표(출장)・장소 및 내용 OTPC
42
+
43
+ 턴 테마표 TT
44
+ 턴 테마표・친밀 TTI
45
+ 턴 테마표・쿨 TTC
46
+ 턴 테마표・주종 TTH
47
+
48
+ 조우 표・장소 EP
49
+ 조우 표・출현 순서 EO
50
+ 조우 표・상황(첫대면) EF
51
+ 조우 표・상황(아는 사이) EA
52
+ 조우 표・결착 EE
53
+ 조우 표·장소와 등장 순서와 상황(첫대면)과 결착 EFA
54
+ 조우 표·장소와 등장순서와 상황(아는 사이)과 결판 EAA
55
+
56
+ 교류 표·장소 CP
57
+ 교류 표·내용 CC
58
+ 교류 표·장소 및 내용 CPC
59
+
60
+ 조사 표 · 베이직 IB
61
+ 조사 표・다이나믹 ID
62
+ 조사 표・베이직과 다이나믹 IBD
63
+
64
+ 해저드 표 HA
65
+
66
+ 통상 다이제스트: 당신들에게 새로운 명령이 떨어졌다(조사가 의뢰되었다).
67
+ 1:그 사건의 내용은……. NI1
68
+ 2:조사하러 향한 장소는…… NI2
69
+ 3:범인인 기적사는…… NI3
70
+ 4:일어난 일은……. NI4
71
+ 5:불릿 사이에서는…… NI5
72
+ 6:싸움의 결말은…… NI6
73
+
74
+ 통상 다이제스트: 당신들은 여행(출장)으로 어느 장소를 찾았다.
75
+ 1:그 장소란…… NT1
76
+ 2:그곳에서 시작한 것은…… NT2
77
+ 3:극한의 상황 속에서…… NT3
78
+ 4:범인인 기적사는…… NT4
79
+ 5:불릿 사이에서는…… NT5
80
+ 6:싸움의 결말은…… NT6
81
+
82
+ 홀리데이 다이제스트: 당신들은 휴일에 나가기로 했다.
83
+ 1:그 장소란…… HH1
84
+ 2:약속하고 만나면…… HH2
85
+ 3:그리고 무려……… HH3
86
+ 4:두 사람이 결정한 것은…… HH4
87
+ 5:결과적으로…… HH5
88
+ 6:불릿은 마지막으로…… HH6
89
+
90
+ 홀리데이 다이제스트: 당신들은 기묘한 사건을 마주했다.
91
+ 1:그 장소란…… HC1
92
+ 2:일어난 사건은……. HC2
93
+ 3:범인인 시적사는…… HC3
94
+ 4:범인을 몰아붙이기 위해…… HC4
95
+ 5:싸움의 결과는…… HC5
96
+ 6:불릿은 마지막으로……HC6
97
+ MESSAGETEXT
98
+
99
+ def initialize(command)
100
+ super(command)
101
+ @locale = :ko_kr
102
+ end
103
+
104
+ TABLES = translate_tables(:ko_kr)
105
+
106
+ register_prefix_from_super_class()
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class KutuluRevised < Base
6
+ # ゲームシステムの識別子
7
+ ID = 'KutuluRevised'
8
+
9
+ # ゲームシステム名
10
+ NAME = 'Kutulu リバイズド'
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = 'くとうるうりはいすと'
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGETEXT
17
+ ■判定 nKU n: ダイス数(1~9)
18
+
19
+ 例)3KU: ダイスを3個振って、その結果を表示(ギリギリでの成功も表示)
20
+
21
+ ■対抗判定 nKR n: ダイス数(1~9)
22
+
23
+ 例)2KR: ダイスを2個振って、その結果を表示。対抗判定用の3桁の数字も出力。(大きい方が勝利)
24
+ INFO_MESSAGETEXT
25
+
26
+ register_prefix('\dK[UR]')
27
+
28
+ def initialize(command)
29
+ super(command)
30
+
31
+ @sort_barabara_dice = true # バラバラロール(Bコマンド)でソート有
32
+ end
33
+
34
+ def eval_game_system_specific_command(command)
35
+ resolute_action(command) || resolute_competition(command)
36
+ end
37
+
38
+ private
39
+
40
+ # アクティヴ能力の判定
41
+ # @param [String] command
42
+ # @return [Result]
43
+ def resolute_action(command)
44
+ m = /(\d)KU/.match(command)
45
+ return nil unless m
46
+
47
+ num_dices = m[1].to_i
48
+
49
+ dices = @randomizer.roll_barabara(num_dices, 6).sort
50
+ dice_text = dices.join(",")
51
+
52
+ output = "(#{num_dices}KU) > #{dice_text}"
53
+
54
+ success_num = dices.count { |val| val >= 4 }
55
+ if success_num > 0
56
+ output += " > 成功数#{success_num}"
57
+ if success_num == 1
58
+ output += " > *ギリギリの成功?"
59
+ end
60
+ return Result.success(output)
61
+ else
62
+ output += " > 失敗"
63
+ return Result.failure(output)
64
+ end
65
+ end
66
+
67
+ # 対抗判定用出力
68
+ # @param [String] command
69
+ # @return [Result]
70
+ def resolute_competition(command)
71
+ m = /(\d)KR/.match(command)
72
+ return nil unless m
73
+
74
+ num_dices = m[1].to_i
75
+
76
+ dices = @randomizer.roll_barabara(num_dices, 6).sort
77
+ dice_text = dices.join(",")
78
+
79
+ counts6 = dices.count(6)
80
+ counts5 = dices.count(5)
81
+ success_num = dices.count { |val| val >= 4 }
82
+ com_text = format("(%d%d%d)", success_num, counts6, counts5)
83
+
84
+ output = "(#{num_dices}KR) > #{dice_text} > #{com_text}"
85
+
86
+ if success_num > 0
87
+ return Result.success(output)
88
+ else
89
+ return Result.failure(output)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end