bcdice 3.6.0 → 3.8.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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +56 -0
  3. data/i18n/Arianrhod/ja_jp.yml +3 -0
  4. data/i18n/Emoklore/ja_jp.yml +7 -0
  5. data/i18n/FutariSousa/ja_jp.yml +431 -0
  6. data/i18n/LogHorizon/ja_jp.yml +1 -1
  7. data/i18n/SwordWorld/ja_jp.yml +1 -0
  8. data/i18n/SwordWorld/zh_hans.yml +7 -0
  9. data/i18n/SwordWorld2_0/zh_hans.yml +37 -0
  10. data/i18n/SwordWorld2_5/ja_jp.yml +1 -1
  11. data/i18n/SwordWorld2_5/zh_hans.yml +57 -0
  12. data/lib/bcdice/arithmetic/parser.rb +1 -1
  13. data/lib/bcdice/command/parser.rb +1 -1
  14. data/lib/bcdice/common_command/add_dice/parser.rb +106 -74
  15. data/lib/bcdice/common_command/add_dice.rb +1 -1
  16. data/lib/bcdice/common_command/barabara_dice/parser.rb +1 -1
  17. data/lib/bcdice/common_command/calc/parser.rb +1 -1
  18. data/lib/bcdice/common_command/d66_dice.rb +1 -1
  19. data/lib/bcdice/common_command/reroll_dice/parser.rb +1 -1
  20. data/lib/bcdice/common_command/tally_dice/parser.rb +1 -1
  21. data/lib/bcdice/common_command/upper_dice/parser.rb +1 -1
  22. data/lib/bcdice/game_system/AngelGear.rb +1 -1
  23. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  24. data/lib/bcdice/game_system/Arianrhod.rb +4 -4
  25. data/lib/bcdice/game_system/AssaultEngine.rb +3 -3
  26. data/lib/bcdice/game_system/Ayabito.rb +170 -4
  27. data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -1
  28. data/lib/bcdice/game_system/BeginningIdol.rb +4 -2
  29. data/lib/bcdice/game_system/BeginningIdol2022.rb +184 -0
  30. data/lib/bcdice/game_system/BladeOfArcana.rb +3 -3
  31. data/lib/bcdice/game_system/Bloodorium.rb +68 -0
  32. data/lib/bcdice/game_system/ConvictorDrive.rb +117 -0
  33. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
  34. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
  35. data/lib/bcdice/game_system/CyberpunkRed.rb +2 -6
  36. data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
  37. data/lib/bcdice/game_system/DungeonsAndDragons5.rb +196 -0
  38. data/lib/bcdice/game_system/EmbryoMachine.rb +4 -4
  39. data/lib/bcdice/game_system/Emoklore.rb +8 -8
  40. data/lib/bcdice/game_system/FutariSousa.rb +31 -5
  41. data/lib/bcdice/game_system/GURPS.rb +1 -1
  42. data/lib/bcdice/game_system/GehennaAn.rb +2 -2
  43. data/lib/bcdice/game_system/GhostLive.rb +144 -0
  44. data/lib/bcdice/game_system/GoblinSlayer.rb +30 -8
  45. data/lib/bcdice/game_system/HunterTheReckoning5th.rb +152 -0
  46. data/lib/bcdice/game_system/IfIfIf.rb +648 -0
  47. data/lib/bcdice/game_system/Kutulu.rb +95 -0
  48. data/lib/bcdice/game_system/LostRoyal.rb +1 -1
  49. data/lib/bcdice/game_system/NobunagasBlackCastle.rb +237 -0
  50. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  51. data/lib/bcdice/game_system/Raisondetre.rb +1 -1
  52. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  53. data/lib/bcdice/game_system/SajinsenkiAGuS.rb +154 -0
  54. data/lib/bcdice/game_system/Sengensyou.rb +59 -0
  55. data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
  56. data/lib/bcdice/game_system/ShinobiGami.rb +14 -1
  57. data/lib/bcdice/game_system/SkynautsBouken.rb +93 -2
  58. data/lib/bcdice/game_system/StellarLife.rb +1 -1
  59. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
  60. data/lib/bcdice/game_system/SwordWorld.rb +2 -2
  61. data/lib/bcdice/game_system/SwordWorld2_0_SimplifiedChinese.rb +84 -0
  62. data/lib/bcdice/game_system/SwordWorld2_5_SimplifiedChinese.rb +95 -0
  63. data/lib/bcdice/game_system/SwordWorld_SimplifiedChinese.rb +29 -0
  64. data/lib/bcdice/game_system/TherapieSein.rb +2 -2
  65. data/lib/bcdice/game_system/Torg.rb +1 -1
  66. data/lib/bcdice/game_system/TorgEternity.rb +54 -18
  67. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +26 -12
  68. data/lib/bcdice/game_system/VisionConnect.rb +135 -0
  69. data/lib/bcdice/game_system/Warhammer4.rb +4 -0
  70. data/lib/bcdice/game_system/WorldOfDarkness.rb +54 -50
  71. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +1 -1
  72. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +1 -1
  73. data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
  74. data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
  75. data/lib/bcdice/game_system.rb +15 -0
  76. data/lib/bcdice/version.rb +1 -1
  77. metadata +26 -6
@@ -0,0 +1,57 @@
1
+ zh_hans:
2
+ SwordWorld2_5:
3
+ AbyssCurseTable:
4
+ name: 奈落诅咒表
5
+ items:
6
+ -
7
+ - 「自伤的」 装备时 该武具的装备者造成暴击时,装备者的HP减少5点。
8
+ - 「悲叹的」 装备时 周围有敌人时,会紧张到泪流不止。在战斗中无法选取「射程:施术者」和「射程:接触」以外的效果对象。
9
+ - 「仁慈的」 装备时 会对敌人心存怜悯。以敌对角色为对象时,如果对象已经减少了1点以上的HP,则命中力判定、魔法行使判定受到-2的惩罚修正。
10
+ - 「差别的」 装备时 给予特定分类角色的物理伤害・魔法伤害减少2点。分类由「分类决定表」随机决定。
11
+ - 「脆弱的」 装备时 每次受到魔法伤害时,该伤害+1点。
12
+ - 「无谋的」 装备时 防护点减少2点(最低0)。
13
+ -
14
+ - 「沉重的」 装备时 被强化的武具的必要力量+2。威力、防护点等保持不变。
15
+ - 「难用的」 装备时 不管使用哪一行威力表,③④栏的数值都与威力无关地变成「0」(不是自动失败)。
16
+ - 「软弱的」 装备时 精神抵抗力判定受到-1的惩罚修正。
17
+ - 「病弱的」 装备时 生命抵抗力判定受到-1的惩罚修正。
18
+ - 「过敏的」 装备时 受到特定属性的物理伤害、魔法伤害上升2点。属性由「属性决定表」随机决定。
19
+ - 「开朗的」 装备时 每次在精神抵抗判定中失败时,就会笑个不停。直到下回合结束时为止,行动判定(『Ⅰ』123页)受到-1的惩罚修正。这个效果会累积。
20
+ -
21
+ - 「结巴的」 装备时 说话时容易想不到词或说错。魔法行使判定受到-1的惩罚修正。
22
+ - 「代言的」 装备时 自己的话会被武具原封不动地以难以听清的魔法文明语说出。装备这个武具时无法使用魔法文明语以外的语言对话,无法行使妖精魔法、魔动机术。
23
+ - 「拒绝施舍的」 装备时 战斗中,接受「抵抗:任意」的效果时,生命抵抗力、精神抵抗力受到-2的惩罚修正直到下回合开始。
24
+ - 「接近死亡的」 携带时 生死判定始终受到和「冒险者等级」相同的惩罚修正。
25
+ - 「时髦的」 携带时 始终想把该武具装点得华美。每次获得收入时,必须花费此收入的1成以上用于装饰武具(没有效果之类的变化)。
26
+ - 「吸收玛娜的」 携带时 魔法或练技等,以自己的意思使用消耗MP的效果时,所有MP消耗上升1点。
27
+ -
28
+ - 「迟钝的」 携带时 移动力变为一半(小数进位)。
29
+ - 「不准的」 携带时 战斗中回合开始时掷1d,出目为「1」则《目标瞄准》及以此为前提的战斗特技是为没有习得。
30
+ - 「错乱的」 携带时 战斗中回合开始时掷1d,出目为「1」则使用包含近距离攻击在内的「射程:接触」的效果时,对象从和装备者同位置(区域、坐标)的所有角色(包含敌我)中随机选择。
31
+ - 「绊脚的」 携带时 战斗中回合开始时掷1d,出目为「1」则当场摔倒。回合中不能站起来。
32
+ - 「滑落的」 携带时 战斗中回合开始时掷1d,出目为「1」则手部装备及拿着的东西全部掉在原地(该回合可以用主动作捡起)。
33
+ - 「散发恶臭的」 携带时 散发强烈的恶臭。只是携带着就会让其他角色感到不适,隐蔽判定受到-2的惩罚修正。且冒险者阶级(『Ⅱ』137页)视为低1级。
34
+ -
35
+ - 「丑恶的」 携带时 武具外观丑陋,毫无魅力。贩卖该武具时只能卖到基本交易价格的4分之1。且冒险者阶级(『Ⅱ』137页)视为低1级。
36
+ - 「嗡鸣的」 携带时 该武具中始终响着飞虫飞舞的声音。隐蔽判定、危险感知判定受到-4的惩罚修正。
37
+ - 「湿软的」 携带时 武具质感像是吸了水一样软塌塌的。追加伤害-2(武器)、防护点-1(铠、盾)。对疾病属性的效果的生命抵抗力、精神抵抗力受到-4的惩罚修正。
38
+ - 「旧伤的」 携带时 受到回复HP的效果时(包含由于休息造成的回复),该回复量减少1点。
39
+ - 「炫目的」 携带时 通过反射光芒等方式发出强烈的光辉。自己始终由于视野不良受到-1的惩罚修正。
40
+ - 「无荣光的」 携带时 行为判定自动成功时,视为没有自动成功,并重投2d,采用新的出目。这个效果1天只生效1次。
41
+ -
42
+ - 「正直者的」 携带时 谎言和手段变得很容易暴露。成为真伪判定的对象时,受到-4的惩罚修正。
43
+ - 「晕动的」 携带时 对摇晃的抵抗力减弱。以自己步行之外的方式移动10分钟以上后,1小时内行动判定受到-1的惩罚修正。
44
+ - 「厌恶碧绿的」 携带时 在自然环境中会变得无法冷静。在自然环境(『Ⅰ』108页)中行动判定受到-1的惩罚修正。
45
+ - 「无法忍耐的」 携带时 游戏中每次1天开始时,必须花费「冒険者等级×10」加美尔用于兴趣和嗜好品等的支出。若处于无法消费兴趣和嗜好品的环境中,直到第二天早上为止,HP上限、MP上限减少「冒険者等级」点。
46
+ - 「阴魂不散的」 携带时 这个武具不知不觉就会出现在身边。以该武具以外的武具进行的命中力判定(武器)、魔法行使判定(武器)、回避力判定(铠、盾)会受到-4的惩罚修正。
47
+ - 「慢吞吞的」 携带时 战斗开始时无法进行「战斗准备」。
48
+
49
+ AbyssCurseCategoryTable:
50
+ name: 奈落诅咒分类决定表
51
+ odd: ["蛮族", "动物", "植物", "不死生物", "魔法生物", "在「蛮族」「动物」「植物」「不死生物」「魔法生物」中任选一个"]
52
+ even: ["魔动机", "幻兽", "妖精", "魔神", "人族", "在「魔动机」「幻兽」「妖精」「魔神」「人族」中任选一个"]
53
+
54
+ AbyssCurseAttrTable:
55
+ name: 奈落诅咒属性决定表
56
+ odd: ["土", "水・冰", "炎", "风", "雷", "纯能量"]
57
+ even: ["断空", "冲击", "毒", "疾病", "诅咒", "精神效果"]
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -48,58 +48,64 @@ end
48
48
  ##### State transition tables begin ###
49
49
 
50
50
  racc_action_table = [
51
- 13, 16, 17, 3, -27, -27, 33, 13, -27, 13,
52
- 4, 46, 13, 47, 13, 14, 8, 9, 22, 13,
53
- 12, 13, 26, 8, 9, 8, 9, 12, 13, 12,
54
- 8, 9, 12, 13, 12, 8, 9, 8, 9, 12,
55
- 13, 12, 18, 19, 8, 9, 15, 52, 12, 8,
56
- 9, 13, 53, 12, -26, -26, 8, 9, -26, nil,
57
- 12, 16, 17, 43, 42, 16, 17, 41, 18, 19,
58
- nil, 12, 36, 38, 35, 37, 18, 19, 48, 49,
59
- 50, 51 ]
51
+ 14, 14, 50, 12, 51, 19, 20, 14, 14, 14,
52
+ 12, 3, 12, 17, 18, 14, 8, 9, 12, 4,
53
+ 13, 13, 28, 8, 9, 8, 9, 13, 13, 13,
54
+ 14, 8, 9, 12, 15, 13, 14, 23, 14, 12,
55
+ 56, 12, 19, 20, 57, 14, 8, 9, 12, nil,
56
+ 13, nil, 8, 9, 8, 9, 13, 14, 13, nil,
57
+ 12, 8, 9, 14, 16, 13, -27, -27, 19, 20,
58
+ -27, 17, 18, 8, 9, nil, 42, 13, nil, 17,
59
+ 18, 40, 39, 13, nil, 38, -28, -28, 40, 39,
60
+ -28, nil, 38, 45, 47, 44, 46, 52, 53, 54,
61
+ 55 ]
60
62
 
61
63
  racc_action_check = [
62
- 15, 23, 23, 0, 31, 31, 23, 2, 31, 8,
63
- 1, 41, 40, 41, 9, 4, 15, 15, 11, 12,
64
- 15, 16, 15, 2, 2, 8, 8, 2, 17, 8,
65
- 9, 9, 40, 18, 9, 12, 12, 16, 16, 12,
66
- 19, 16, 6, 6, 17, 17, 5, 46, 17, 18,
67
- 18, 22, 47, 18, 22, 22, 19, 19, 22, nil,
68
- 19, 5, 5, 32, 32, 25, 25, 32, 27, 27,
69
- nil, 22, 30, 30, 30, 30, 28, 28, 42, 42,
70
- 43, 43 ]
64
+ 16, 12, 38, 16, 38, 6, 6, 2, 36, 8,
65
+ 2, 0, 8, 27, 27, 9, 16, 16, 9, 1,
66
+ 16, 12, 16, 2, 2, 8, 8, 2, 36, 8,
67
+ 13, 9, 9, 13, 4, 9, 17, 11, 18, 17,
68
+ 50, 18, 29, 29, 51, 19, 13, 13, 19, nil,
69
+ 13, nil, 17, 17, 18, 18, 17, 20, 18, nil,
70
+ 20, 19, 19, 23, 5, 19, 23, 23, 30, 30,
71
+ 23, 25, 25, 20, 20, nil, 25, 20, nil, 5,
72
+ 5, 24, 24, 23, nil, 24, 33, 33, 34, 34,
73
+ 33, nil, 34, 32, 32, 32, 32, 39, 39, 40,
74
+ 40 ]
71
75
 
72
76
  racc_action_pointer = [
73
- -1, 10, 5, nil, 15, 43, 22, nil, 7, 12,
74
- nil, 13, 17, nil, nil, -2, 19, 26, 31, 38,
75
- nil, nil, 49, -17, nil, 47, nil, 48, 56, nil,
76
- 58, -1, 58, nil, nil, nil, nil, nil, nil, nil,
77
- 10, 1, 71, 73, nil, nil, 36, 39, nil, nil,
78
- nil, nil, nil, nil ]
77
+ 7, 19, 5, nil, 34, 61, -15, nil, 7, 13,
78
+ nil, 32, -1, 28, nil, nil, -2, 34, 36, 43,
79
+ 55, nil, nil, 61, 76, 53, nil, -5, nil, 22,
80
+ 48, nil, 79, 81, 83, nil, 6, nil, -8, 90,
81
+ 92, nil, nil, nil, nil, nil, nil, nil, nil, nil,
82
+ 29, 31, nil, nil, nil, nil, nil, nil ]
79
83
 
80
84
  racc_action_default = [
81
- -3, -38, -38, -4, -38, -1, -9, -12, -38, -38,
82
- -20, -25, -38, -37, 54, -38, -38, -38, -38, -38,
83
- -18, -19, -22, -38, -2, -5, -6, -7, -8, -10,
84
- -13, -21, -38, -36, -11, -14, -15, -16, -17, -23,
85
- -34, -38, -38, -38, -35, -24, -38, -38, -30, -31,
86
- -32, -33, -28, -29 ]
85
+ -3, -41, -41, -4, -41, -1, -9, -12, -41, -41,
86
+ -20, -26, -41, -41, -40, 58, -41, -41, -41, -41,
87
+ -41, -18, -19, -22, -24, -41, -2, -5, -6, -7,
88
+ -8, -10, -13, -21, -41, -25, -37, -30, -41, -41,
89
+ -41, -38, -39, -11, -14, -15, -16, -17, -23, -29,
90
+ -41, -41, -33, -34, -35, -36, -31, -32 ]
87
91
 
88
92
  racc_goto_table = [
89
- 31, 5, 20, 21, 27, 28, 1, 2, 24, 34,
90
- 32, 23, 29, 30, 25, 39, 40, 44, 45 ]
93
+ 24, 5, 21, 22, 29, 30, 35, 1, 2, 26,
94
+ 43, 33, 25, 31, 32, 27, 48, 34, nil, nil,
95
+ nil, nil, nil, nil, 49 ]
91
96
 
92
97
  racc_goto_check = [
93
- 9, 3, 6, 6, 5, 5, 1, 2, 4, 7,
94
- 10, 3, 6, 6, 3, 11, 12, 13, 9 ]
98
+ 9, 3, 6, 6, 5, 5, 11, 1, 2, 4,
99
+ 7, 9, 3, 6, 6, 3, 11, 10, nil, nil,
100
+ nil, nil, nil, nil, 9 ]
95
101
 
96
102
  racc_goto_pointer = [
97
- nil, 6, 7, -1, -7, -12, -6, -21, nil, -22,
98
- -12, -17, -16, -15 ]
103
+ nil, 7, 8, -1, -7, -13, -6, -22, nil, -12,
104
+ -6, -18, nil, nil, nil ]
99
105
 
100
106
  racc_goto_default = [
101
107
  nil, nil, nil, nil, nil, 6, 7, nil, 10, 11,
102
- nil, nil, nil, nil ]
108
+ nil, nil, 36, 37, 41 ]
103
109
 
104
110
  racc_reduce_table = [
105
111
  0, 0, :racc_error,
@@ -126,24 +132,27 @@ racc_reduce_table = [
126
132
  3, 33, :_reduce_21,
127
133
  2, 33, :_reduce_22,
128
134
  4, 33, :_reduce_23,
129
- 5, 33, :_reduce_24,
135
+ 2, 33, :_reduce_24,
136
+ 3, 33, :_reduce_25,
130
137
  1, 33, :_reduce_none,
131
- 0, 35, :_reduce_26,
132
- 1, 35, :_reduce_27,
133
- 3, 38, :_reduce_28,
134
- 3, 38, :_reduce_29,
135
- 2, 37, :_reduce_30,
136
- 2, 37, :_reduce_31,
137
- 2, 37, :_reduce_32,
138
+ 0, 35, :_reduce_27,
139
+ 1, 35, :_reduce_28,
140
+ 2, 36, :_reduce_29,
141
+ 1, 36, :_reduce_30,
142
+ 3, 39, :_reduce_31,
143
+ 3, 39, :_reduce_32,
138
144
  2, 37, :_reduce_33,
139
- 1, 36, :_reduce_none,
140
- 1, 36, :_reduce_none,
141
- 3, 34, :_reduce_36,
142
- 1, 34, :_reduce_37 ]
145
+ 2, 37, :_reduce_34,
146
+ 2, 37, :_reduce_35,
147
+ 2, 37, :_reduce_36,
148
+ 1, 38, :_reduce_none,
149
+ 1, 38, :_reduce_none,
150
+ 3, 34, :_reduce_39,
151
+ 1, 34, :_reduce_40 ]
143
152
 
144
- racc_reduce_n = 38
153
+ racc_reduce_n = 41
145
154
 
146
- racc_shift_n = 54
155
+ racc_shift_n = 58
147
156
 
148
157
  racc_token_table = {
149
158
  false => 0,
@@ -229,8 +238,9 @@ Racc_token_to_s_table = [
229
238
  "dice",
230
239
  "term",
231
240
  "explicit_or_implicit_sides",
232
- "filter_type_with_shorthand",
241
+ "filter",
233
242
  "filter_type",
243
+ "filter_type_with_shorthand",
234
244
  "filter_shorthand" ]
235
245
 
236
246
  Racc_debug_parser = false
@@ -372,83 +382,105 @@ end
372
382
  def _reduce_23(val, _values, result)
373
383
  times = val[0]
374
384
  sides = val[2]
375
- filter = val[3]
385
+ filter = val[3][:filter]
386
+ n_filtering = val[3][:n_filtering]
376
387
 
377
388
  raise ParseError if sides != :implicit && sides.include_dice?
378
- raise ParseError if times.include_dice?
389
+ raise ParseError if times.include_dice? || n_filtering.include_dice?
379
390
 
380
- n_filtering = Node::Number.new(1)
381
391
  result = Node::DiceRollWithFilter.new(times, sides, n_filtering, filter)
382
392
 
383
393
  result
384
394
  end
385
395
 
386
396
  def _reduce_24(val, _values, result)
387
- times = val[0]
388
- sides = val[2]
389
- filter = val[3]
390
- n_filtering = val[4]
397
+ times = Node::Number.new(1)
398
+ sides = val[1]
399
+ raise ParseError if sides.include_dice?
400
+ raise ParseError if sides.instance_of?(Node::Number) && sides.literal == 66
401
+
402
+ result = Node::DiceRoll.new(times, sides)
403
+
404
+ result
405
+ end
406
+
407
+ def _reduce_25(val, _values, result)
408
+ times = Node::Number.new(1)
409
+ sides = val[1]
410
+ filter = val[2][:filter]
411
+ n_filtering = val[2][:n_filtering]
391
412
 
392
413
  raise ParseError if sides != :implicit && sides.include_dice?
393
- raise ParseError if times.include_dice? || n_filtering.include_dice?
414
+ raise ParseError if n_filtering.include_dice?
415
+ raise ParseError if sides.instance_of?(Node::Number) && sides.literal == 66
394
416
 
395
417
  result = Node::DiceRollWithFilter.new(times, sides, n_filtering, filter)
396
418
 
397
419
  result
398
420
  end
399
421
 
400
- # reduce 25 omitted
422
+ # reduce 26 omitted
401
423
 
402
- def _reduce_26(val, _values, result)
424
+ def _reduce_27(val, _values, result)
403
425
  result = :implicit
404
426
  result
405
427
  end
406
428
 
407
- def _reduce_27(val, _values, result)
429
+ def _reduce_28(val, _values, result)
408
430
  result = val[0]
409
431
  result
410
432
  end
411
433
 
412
- def _reduce_28(val, _values, result)
434
+ def _reduce_29(val, _values, result)
435
+ result = {filter: val[0], n_filtering: val[1]}
436
+ result
437
+ end
438
+
439
+ def _reduce_30(val, _values, result)
440
+ result = {filter: val[0], n_filtering: Node::Number.new(1)}
441
+ result
442
+ end
443
+
444
+ def _reduce_31(val, _values, result)
413
445
  result = Node::DiceRollWithFilter::KEEP_HIGHEST
414
446
  result
415
447
  end
416
448
 
417
- def _reduce_29(val, _values, result)
449
+ def _reduce_32(val, _values, result)
418
450
  result = Node::DiceRollWithFilter::KEEP_LOWEST
419
451
  result
420
452
  end
421
453
 
422
- def _reduce_30(val, _values, result)
454
+ def _reduce_33(val, _values, result)
423
455
  result = Node::DiceRollWithFilter::KEEP_HIGHEST
424
456
  result
425
457
  end
426
458
 
427
- def _reduce_31(val, _values, result)
459
+ def _reduce_34(val, _values, result)
428
460
  result = Node::DiceRollWithFilter::KEEP_LOWEST
429
461
  result
430
462
  end
431
463
 
432
- def _reduce_32(val, _values, result)
464
+ def _reduce_35(val, _values, result)
433
465
  result = Node::DiceRollWithFilter::DROP_HIGHEST
434
466
  result
435
467
  end
436
468
 
437
- def _reduce_33(val, _values, result)
469
+ def _reduce_36(val, _values, result)
438
470
  result = Node::DiceRollWithFilter::DROP_LOWEST
439
471
  result
440
472
  end
441
473
 
442
- # reduce 34 omitted
474
+ # reduce 37 omitted
443
475
 
444
- # reduce 35 omitted
476
+ # reduce 38 omitted
445
477
 
446
- def _reduce_36(val, _values, result)
478
+ def _reduce_39(val, _values, result)
447
479
  result = Node::Parenthesis.new(val[1])
448
480
  result
449
481
  end
450
482
 
451
- def _reduce_37(val, _values, result)
483
+ def _reduce_40(val, _values, result)
452
484
  result = Node::Number.new(val[0])
453
485
  result
454
486
  end
@@ -7,7 +7,7 @@ require "bcdice/common_command/add_dice/randomizer"
7
7
  module BCDice
8
8
  module CommonCommand
9
9
  module AddDice
10
- PREFIX_PATTERN = /[+\-(]*\d+/.freeze
10
+ PREFIX_PATTERN = /[+\-(]*(\d+|D\d+)/.freeze
11
11
 
12
12
  class << self
13
13
  def eval(command, game_system, randomizer)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -20,7 +20,7 @@ module BCDice
20
20
  def parse(command, game_system)
21
21
  command = command.split(" ", 2).first
22
22
 
23
- m = /^(S)?D66([ANSD])?$/i.match(command)
23
+ m = /^(S)?D66([ANSD])?$/i.match(command.upcase)
24
24
  return nil unless m
25
25
 
26
26
  new(
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.1
3
+ # This file is automatically generated by Racc 1.6.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
@@ -36,7 +36,7 @@ module BCDice
36
36
  end
37
37
 
38
38
  def eval_game_system_specific_command(command)
39
- if (m = /^(\d+)AG(\d+)?(([+\-]\d+)*)$/.match(command))
39
+ if (m = /^(\d+)AG(\d+)?(([+-]\d+)*)$/.match(command))
40
40
  resolute_action(m[1].to_i, m[2]&.to_i, m[3], command)
41
41
  else
42
42
  roll_tables(command, TABLES)
@@ -32,7 +32,7 @@ module BCDice
32
32
  MESSAGETEXT
33
33
 
34
34
  def eval_game_system_specific_command(command)
35
- m = /(\d+)AN<=(\d+([+\-]\d+)*)/i.match(command)
35
+ m = /(\d+)AN<=(\d+([+-]\d+)*)/i.match(command)
36
36
  if TABLES.key?(command)
37
37
  return roll_tables(command, TABLES)
38
38
  elsif m
@@ -30,16 +30,16 @@ module BCDice
30
30
 
31
31
  if dice_list.count(1) == dice_list.size
32
32
  # 全部1の目ならファンブル
33
- Result.fumble("ファンブル")
33
+ Result.fumble(translate("fumble"))
34
34
  elsif n_max >= 2
35
35
  # 2個以上6の目があったらクリティカル
36
- Result.critical("クリティカル(+#{n_max}D6)")
36
+ Result.critical(translate("Arianrhod.critical", dice: n_max))
37
37
  elsif cmp_op != :>= || target == '?'
38
38
  nil
39
39
  elsif total >= target
40
- Result.success("成功")
40
+ Result.success(translate("success"))
41
41
  else
42
- Result.failure("失敗")
42
+ Result.failure(translate("failure"))
43
43
  end
44
44
  end
45
45
  end
@@ -44,7 +44,7 @@ module BCDice
44
44
  r1 = judge(target, total)
45
45
  r2 = judge(target, swap)
46
46
  text = "(AES#{format00(target)}) > #{r1.text} / スワップ#{r2.text}"
47
- check_result(r1, r2, text)
47
+ return_result(r1, r2, text)
48
48
  elsif cmd.prefix_number.nil? # 初回ロール
49
49
  total = @randomizer.roll_once(100) % 100 # 0-99
50
50
  judge(target, total).tap do |r|
@@ -57,7 +57,7 @@ module BCDice
57
57
  new2 = judge(target, now % 10 + die * 10) # 10の位を振り直す
58
58
 
59
59
  text = "(#{format00(now)}AE#{format00(target)}) > #{die} > #{new1.text} / #{new2.text}"
60
- check_result(new1, new2, text)
60
+ return_result(new1, new2, text)
61
61
  end
62
62
  end
63
63
 
@@ -65,7 +65,7 @@ module BCDice
65
65
  format("%02d", dice)
66
66
  end
67
67
 
68
- def check_result(result1, result2, text)
68
+ def return_result(result1, result2, text)
69
69
  if result1.critical? || result2.critical?
70
70
  Result.critical(text)
71
71
  elsif result1.success? || result2.success?