bcdice 3.13.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/i18n/Arianrhod/ko_kr.yml +3 -0
  4. data/i18n/Cthulhu/en_us.yml +11 -0
  5. data/i18n/Cthulhu/zh_hant.yml +1 -1
  6. data/i18n/CyberpunkRed/ja_jp.yml +389 -0
  7. data/i18n/CyberpunkRed/ko_kr.yml +389 -0
  8. data/i18n/DoubleCross/ja_jp.yml +53 -0
  9. data/i18n/DoubleCross/ko_kr.yml +52 -0
  10. data/i18n/FinalFantasyXIV/en_us.yml +4 -0
  11. data/i18n/FinalFantasyXIV/ja_jp.yml +4 -0
  12. data/i18n/FutariSousa/ja_jp.yml +284 -127
  13. data/i18n/KillDeathBusiness/ja_jp.yml +198 -0
  14. data/i18n/KizunaBullet/ja_jp.yml +653 -0
  15. data/i18n/MagicaLogia/ko_kr.yml +2 -2
  16. data/i18n/MonotoneMuseum/ja_jp.yml +246 -14
  17. data/i18n/MonotoneMuseum/ko_kr.yml +227 -0
  18. data/i18n/SkynautsBouken/ja_jp.yml +114 -0
  19. data/i18n/SkynautsBouken/ko_kr.yml +114 -0
  20. data/i18n/StratoShout/ko_kr.yml +102 -102
  21. data/i18n/TensaiGunshiNiNaro/ja_jp.yml +126 -0
  22. data/i18n/UnsungDuet/ja_jp.yml +62 -0
  23. data/i18n/UnsungDuet/ko_kr.yml +62 -0
  24. data/i18n/en_us.yml +5 -0
  25. data/i18n/zh_hant.yml +5 -0
  26. data/lib/bcdice/dice_table/range_table.rb +24 -0
  27. data/lib/bcdice/game_system/Agnostos.rb +248 -0
  28. data/lib/bcdice/game_system/Aionia.rb +131 -0
  29. data/lib/bcdice/game_system/AniMalus.rb +99 -59
  30. data/lib/bcdice/game_system/Arianrhod_Korean.rb +32 -0
  31. data/lib/bcdice/game_system/ArknightsFan.rb +245 -87
  32. data/lib/bcdice/game_system/BlackJacket.rb +244 -0
  33. data/lib/bcdice/game_system/BlackJacket_Korean.rb +244 -0
  34. data/lib/bcdice/game_system/CharonSanctions.rb +112 -0
  35. data/lib/bcdice/game_system/ConvictorDrive.rb +5 -4
  36. data/lib/bcdice/game_system/Cthulhu7th.rb +1 -1
  37. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/full_auto.rb +293 -0
  38. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional/rollable.rb +43 -0
  39. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +470 -306
  40. data/lib/bcdice/game_system/Cthulhu_English.rb +59 -0
  41. data/lib/bcdice/game_system/CyberpunkRed.rb +15 -6
  42. data/lib/bcdice/game_system/CyberpunkRed_Korean.rb +66 -0
  43. data/lib/bcdice/game_system/DivineCharger.rb +841 -0
  44. data/lib/bcdice/game_system/DoubleCross.rb +18 -1
  45. data/lib/bcdice/game_system/DoubleCross_Korean.rb +5 -1
  46. data/lib/bcdice/game_system/FinalFantasyXIV.rb +115 -0
  47. data/lib/bcdice/game_system/FinalFantasyXIV_English.rb +39 -0
  48. data/lib/bcdice/game_system/FullFace.rb +63 -12
  49. data/lib/bcdice/game_system/FutariSousa.rb +105 -13
  50. data/lib/bcdice/game_system/Garactier.rb +479 -0
  51. data/lib/bcdice/game_system/GardenOrder.rb +390 -9
  52. data/lib/bcdice/game_system/GundogRevised.rb +8 -8
  53. data/lib/bcdice/game_system/Insane_Korean.rb +1 -1
  54. data/lib/bcdice/game_system/InvisibleLiar.rb +79 -0
  55. data/lib/bcdice/game_system/KillDeathBusiness.rb +155 -3
  56. data/lib/bcdice/game_system/KimitoYell.rb +568 -0
  57. data/lib/bcdice/game_system/KizunaBullet.rb +240 -0
  58. data/lib/bcdice/game_system/KyokoShinshoku.rb +51 -8
  59. data/lib/bcdice/game_system/Magius.rb +125 -0
  60. data/lib/bcdice/game_system/Magius_3rdNewTokyoCity.rb +62 -0
  61. data/lib/bcdice/game_system/MonotoneMuseum.rb +14 -1
  62. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +4 -4
  63. data/lib/bcdice/game_system/NRR.rb +2 -2
  64. data/lib/bcdice/game_system/NSSQ.rb +17 -9
  65. data/lib/bcdice/game_system/NervWhitePaper.rb +129 -0
  66. data/lib/bcdice/game_system/RogueLikeHalf.rb +198 -0
  67. data/lib/bcdice/game_system/RuneQuestRoleplayingInGlorantha.rb +16 -13
  68. data/lib/bcdice/game_system/ShinobiGami.rb +73 -43
  69. data/lib/bcdice/game_system/ShuumatsuBargainWars.rb +203 -0
  70. data/lib/bcdice/game_system/SkynautsBouken.rb +49 -134
  71. data/lib/bcdice/game_system/SkynautsBouken_Korean.rb +57 -0
  72. data/lib/bcdice/game_system/StratoShout_Korean.rb +1 -1
  73. data/lib/bcdice/game_system/SwordWorld.rb +5 -1
  74. data/lib/bcdice/game_system/SwordWorld2_5.rb +3 -2
  75. data/lib/bcdice/game_system/TensaiGunshiNiNaro.rb +262 -0
  76. data/lib/bcdice/game_system/TheIndieHack.rb +82 -0
  77. data/lib/bcdice/game_system/TheOneRing2nd.rb +406 -0
  78. data/lib/bcdice/game_system/TheUnofficialHollowKnightRPG.rb +185 -0
  79. data/lib/bcdice/game_system/TorgEternity.rb +35 -6
  80. data/lib/bcdice/game_system/TrailOfCthulhu.rb +139 -0
  81. data/lib/bcdice/game_system/UnsungDuet.rb +17 -75
  82. data/lib/bcdice/game_system/UnsungDuet_Korean.rb +41 -0
  83. data/lib/bcdice/game_system/Utakaze.rb +55 -2
  84. data/lib/bcdice/game_system/Warhammer4.rb +124 -3
  85. data/lib/bcdice/game_system/WoW.rb +161 -0
  86. data/lib/bcdice/game_system/YankeeMustDie.rb +192 -0
  87. data/lib/bcdice/game_system/YearZeroEngine.rb +225 -28
  88. data/lib/bcdice/game_system/Yotabana.rb +62 -0
  89. data/lib/bcdice/game_system/YuMyoKishi.rb +141 -0
  90. data/lib/bcdice/game_system/cyberpunk_red/tables.rb +111 -473
  91. data/lib/bcdice/game_system/kizuna_bullet/tables.rb +171 -0
  92. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +1 -0
  93. data/lib/bcdice/game_system/sword_world/rating_options.rb +4 -1
  94. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +5 -0
  95. data/lib/bcdice/game_system/sword_world/rating_parser.rb +129 -115
  96. data/lib/bcdice/game_system.rb +31 -0
  97. data/lib/bcdice/version.rb +1 -1
  98. metadata +50 -6
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class Yotabana < Base
6
+ # ゲームシステムの識別子
7
+ ID = "Yotabana"
8
+
9
+ # ゲームシステム名
10
+ NAME = "ヨタバナ"
11
+
12
+ # ゲームシステム名の読みがな
13
+ SORT_KEY = "よたはな"
14
+
15
+ # ダイスボットの使い方
16
+ HELP_MESSAGE = <<~INFO_MESSAGE_TEXT
17
+ ▪️ 各種表
18
+ COT 収束表
19
+ EVT イベント表
20
+ INFO_MESSAGE_TEXT
21
+
22
+ def eval_game_system_specific_command(command)
23
+ roll_tables(command, TABLES)
24
+ end
25
+
26
+ TABLES = {
27
+ "COT" => DiceTable::Table.new(
28
+ "収束表",
29
+ "1D6",
30
+ [
31
+ "サプライズ忍者/唐突に忍者が乱入し、場面にいるキャラクターを倒して去っていく",
32
+ "仙人/唐突に仙人が乱入し、不思議な力で事態を収束させて帰っていく",
33
+ "洗脳薬/不思議な薬が散布され、キャラクターを洗脳し、事態を収束させる",
34
+ "作者の手/キャラクターたちの言動が唐突に変わり、事態が収束する。作者の大いなる手だ……",
35
+ "神の奇跡/神が奇跡を起こし事態を収束させる。または神の信徒になり、信仰の前に争いは無意味であると悟る",
36
+ "和解/話し合えば分かり合えた。この世は対話で通じ合える",
37
+ ]
38
+ ),
39
+ "EVT" => DiceTable::Table.new(
40
+ "イベント表",
41
+ "1D12",
42
+ [
43
+ "道端に刺さっていた聖剣を拾う",
44
+ "ゾンビの群れと遭遇する",
45
+ "落ちていたコインを拾う。ちょっとラッキーな気分になる",
46
+ "あらゆるところで爆発が!?",
47
+ "唐突に冬が訪れ、猛吹雪が襲う",
48
+ "無人のトラックが突っ込んでくる",
49
+ "ネコちゃんに懐かれる",
50
+ "料金滞納で水道を止められる",
51
+ "ゴキゲンな音楽が鳴り響く",
52
+ "水着になる",
53
+ "オークションにかけられる",
54
+ "殺人アンドロイドが襲いかかってくる",
55
+ ]
56
+ ),
57
+ }.freeze
58
+
59
+ register_prefix(TABLES.keys)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,141 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bcdice/base'
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class YuMyoKishi < Base
8
+ # ゲームシステムの識別子
9
+ ID = 'YuMyoKishi'
10
+
11
+ # ゲームシステム名
12
+ NAME = '幽冥鬼使'
13
+
14
+ # ゲームシステム名の読みがな
15
+ #
16
+ # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして
17
+ # 設定してください
18
+ SORT_KEY = 'ゆうみようきし'
19
+
20
+ # ダイスボットの使い方
21
+ HELP_MESSAGE = <<~MESSAGETEXT
22
+ ■判定 YM+a>=b a:技能値(省略可) b:目標値(省略可)
23
+  例:YM+4>=8: 技能値による修正が+4で、目標値8の克服判定を行う
24
+    YM>=8 : 技能値による修正なしで、目標値8の克服判定を行う
25
+    YM+6 : 技能値による修正が+6で、達成値を確認する
26
+
27
+ ■代償表 COT
28
+ ■転禍表 TRT
29
+ MESSAGETEXT
30
+
31
+ TABLES = {
32
+ "COT" => DiceTable::Table.new(
33
+ "代償表",
34
+ "2D6",
35
+ [
36
+ "不慮の出逢い",
37
+ "深淵を覗くとき",
38
+ "時間の消費",
39
+ "奇妙な情報",
40
+ "優柔不断",
41
+ "注意散漫",
42
+ "心身耗弱",
43
+ "不穏な情報",
44
+ "遺留品",
45
+ "迫りくる危機",
46
+ "正体の露見",
47
+ ]
48
+ ),
49
+ "TRT" => DiceTable::Table.new(
50
+ "転禍表",
51
+ "2D6",
52
+ [
53
+ "○○と瓜二つ",
54
+ "絶対絶命",
55
+ "悪癖災う",
56
+ "冷酷な指令",
57
+ "おびえる視線",
58
+ "絡みつく妖気",
59
+ "容赦ない評定",
60
+ "無力な市民",
61
+ "未練阻む",
62
+ "縁の枷",
63
+ "邪悪な刻印",
64
+ ]
65
+ ),
66
+ }.freeze
67
+
68
+ # ダイスボットで使用するコマンドを配列で列挙する
69
+ register_prefix("YM", TABLES.keys)
70
+
71
+ def eval_game_system_specific_command(command)
72
+ debug("eval_game_system_specific_command Begin")
73
+
74
+ return roll_command(command) || roll_tables(command, TABLES)
75
+ end
76
+
77
+ def roll_command(command)
78
+ parser = Command::Parser.new('YM', round_type: round_type)
79
+ .restrict_cmp_op_to(:>=, nil)
80
+ cmd = parser.parse(command)
81
+
82
+ unless cmd
83
+ return nil
84
+ end
85
+
86
+ dice_list = @randomizer.roll_barabara(4, 6)
87
+ value, status = sip_pat_a(dice_list)
88
+ achievement = status == :wumian ? 0 : value + cmd.modify_number
89
+ roll_text = [
90
+ cmd.to_s,
91
+ dice_list.join(','),
92
+ value,
93
+ value == achievement ? nil : achievement,
94
+ ].compact.join(" > ")
95
+
96
+ if cmd.target_number.nil?
97
+ if status == :wumian
98
+ Result.failure(roll_text)
99
+ elsif status == :yise
100
+ Result.critical(roll_text)
101
+ else
102
+ Result.new(roll_text)
103
+ end
104
+ elsif status == :wumian
105
+ Result.failure([roll_text, "可"].join(" > "))
106
+ elsif status == :yise
107
+ Result.critical([roll_text, "優"].join(" > "))
108
+ elsif achievement >= cmd.target_number
109
+ Result.success([roll_text, "良"].join(" > "))
110
+ else
111
+ Result.failure([roll_text, "可"].join(" > "))
112
+ end
113
+ end
114
+
115
+ def sip_pat_a(dice_list) # 十八仔
116
+ result = dice_list.each_with_object(Hash.new(0)) do |cur, acc|
117
+ acc[cur] += 1
118
+ end
119
+ case result.count
120
+ when 1
121
+ # 全てゾロ目
122
+ [20, :yise] # 一色
123
+ when 2
124
+ if result.values == [2, 2]
125
+ # 同値のダイスが2つずつ
126
+ [result.keys.max * 2, :normal]
127
+ else
128
+ # 3つの同値と1つの目のダイス
129
+ [result.keys.sum, :normal]
130
+ end
131
+ when 3
132
+ # 2つの同値と1つずつの目のダイス
133
+ [result.select { |_k, v| v == 1 }.keys.sum, :normal]
134
+ else
135
+ # 全部バラバラ
136
+ [0, :wumian] # 無面
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end