bcdice 3.6.0 → 3.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +56 -0
- data/i18n/Arianrhod/ja_jp.yml +3 -0
- data/i18n/Emoklore/ja_jp.yml +7 -0
- data/i18n/FutariSousa/ja_jp.yml +431 -0
- data/i18n/LogHorizon/ja_jp.yml +1 -1
- data/i18n/SwordWorld/ja_jp.yml +1 -0
- data/i18n/SwordWorld/zh_hans.yml +7 -0
- data/i18n/SwordWorld2_0/zh_hans.yml +37 -0
- data/i18n/SwordWorld2_5/ja_jp.yml +1 -1
- data/i18n/SwordWorld2_5/zh_hans.yml +57 -0
- data/lib/bcdice/arithmetic/parser.rb +1 -1
- data/lib/bcdice/command/parser.rb +1 -1
- data/lib/bcdice/common_command/add_dice/parser.rb +106 -74
- data/lib/bcdice/common_command/add_dice.rb +1 -1
- data/lib/bcdice/common_command/barabara_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/calc/parser.rb +1 -1
- data/lib/bcdice/common_command/d66_dice.rb +1 -1
- data/lib/bcdice/common_command/reroll_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/tally_dice/parser.rb +1 -1
- data/lib/bcdice/common_command/upper_dice/parser.rb +1 -1
- data/lib/bcdice/game_system/AngelGear.rb +1 -1
- data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
- data/lib/bcdice/game_system/Arianrhod.rb +4 -4
- data/lib/bcdice/game_system/AssaultEngine.rb +3 -3
- data/lib/bcdice/game_system/Ayabito.rb +170 -4
- data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -1
- data/lib/bcdice/game_system/BeginningIdol.rb +4 -2
- data/lib/bcdice/game_system/BeginningIdol2022.rb +184 -0
- data/lib/bcdice/game_system/BladeOfArcana.rb +3 -3
- data/lib/bcdice/game_system/Bloodorium.rb +68 -0
- data/lib/bcdice/game_system/ConvictorDrive.rb +117 -0
- data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +1 -1
- data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +1 -1
- data/lib/bcdice/game_system/CyberpunkRed.rb +2 -6
- data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
- data/lib/bcdice/game_system/DungeonsAndDragons5.rb +196 -0
- data/lib/bcdice/game_system/EmbryoMachine.rb +4 -4
- data/lib/bcdice/game_system/Emoklore.rb +8 -8
- data/lib/bcdice/game_system/FutariSousa.rb +31 -5
- data/lib/bcdice/game_system/GURPS.rb +1 -1
- data/lib/bcdice/game_system/GehennaAn.rb +2 -2
- data/lib/bcdice/game_system/GhostLive.rb +144 -0
- data/lib/bcdice/game_system/GoblinSlayer.rb +30 -8
- data/lib/bcdice/game_system/HunterTheReckoning5th.rb +152 -0
- data/lib/bcdice/game_system/IfIfIf.rb +648 -0
- data/lib/bcdice/game_system/Kutulu.rb +95 -0
- data/lib/bcdice/game_system/LostRoyal.rb +1 -1
- data/lib/bcdice/game_system/NobunagasBlackCastle.rb +237 -0
- data/lib/bcdice/game_system/OracleEngine.rb +1 -1
- data/lib/bcdice/game_system/Raisondetre.rb +1 -1
- data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
- data/lib/bcdice/game_system/SajinsenkiAGuS.rb +154 -0
- data/lib/bcdice/game_system/Sengensyou.rb +59 -0
- data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
- data/lib/bcdice/game_system/ShinobiGami.rb +14 -1
- data/lib/bcdice/game_system/SkynautsBouken.rb +93 -2
- data/lib/bcdice/game_system/StellarLife.rb +1 -1
- data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
- data/lib/bcdice/game_system/SwordWorld.rb +2 -2
- data/lib/bcdice/game_system/SwordWorld2_0_SimplifiedChinese.rb +84 -0
- data/lib/bcdice/game_system/SwordWorld2_5_SimplifiedChinese.rb +95 -0
- data/lib/bcdice/game_system/SwordWorld_SimplifiedChinese.rb +29 -0
- data/lib/bcdice/game_system/TherapieSein.rb +2 -2
- data/lib/bcdice/game_system/Torg.rb +1 -1
- data/lib/bcdice/game_system/TorgEternity.rb +54 -18
- data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +26 -12
- data/lib/bcdice/game_system/VisionConnect.rb +135 -0
- data/lib/bcdice/game_system/Warhammer4.rb +4 -0
- data/lib/bcdice/game_system/WorldOfDarkness.rb +54 -50
- data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +1 -1
- data/lib/bcdice/game_system/filled_with/tresure_tables.rb +1 -1
- data/lib/bcdice/game_system/satasupe/tables.rb +1 -1
- data/lib/bcdice/game_system/sword_world/rating_parser.rb +1 -1
- data/lib/bcdice/game_system.rb +15 -0
- data/lib/bcdice/version.rb +1 -1
- 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.
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
8, 9, 12, 13,
|
55
|
-
|
56
|
-
|
57
|
-
12,
|
58
|
-
|
59
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
65
|
-
9, 9,
|
66
|
-
|
67
|
-
|
68
|
-
19,
|
69
|
-
|
70
|
-
|
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
|
-
|
74
|
-
nil,
|
75
|
-
nil, nil,
|
76
|
-
|
77
|
-
|
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, -
|
82
|
-
-20, -
|
83
|
-
-18, -19, -22, -
|
84
|
-
|
85
|
-
-
|
86
|
-
-
|
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
|
-
|
90
|
-
|
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,
|
94
|
-
|
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,
|
98
|
-
|
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,
|
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
|
-
|
135
|
+
2, 33, :_reduce_24,
|
136
|
+
3, 33, :_reduce_25,
|
130
137
|
1, 33, :_reduce_none,
|
131
|
-
0, 35, :
|
132
|
-
1, 35, :
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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
|
-
|
140
|
-
|
141
|
-
|
142
|
-
1,
|
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 =
|
153
|
+
racc_reduce_n = 41
|
145
154
|
|
146
|
-
racc_shift_n =
|
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
|
-
"
|
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 =
|
388
|
-
sides = val[
|
389
|
-
|
390
|
-
|
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
|
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
|
422
|
+
# reduce 26 omitted
|
401
423
|
|
402
|
-
def
|
424
|
+
def _reduce_27(val, _values, result)
|
403
425
|
result = :implicit
|
404
426
|
result
|
405
427
|
end
|
406
428
|
|
407
|
-
def
|
429
|
+
def _reduce_28(val, _values, result)
|
408
430
|
result = val[0]
|
409
431
|
result
|
410
432
|
end
|
411
433
|
|
412
|
-
def
|
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
|
449
|
+
def _reduce_32(val, _values, result)
|
418
450
|
result = Node::DiceRollWithFilter::KEEP_LOWEST
|
419
451
|
result
|
420
452
|
end
|
421
453
|
|
422
|
-
def
|
454
|
+
def _reduce_33(val, _values, result)
|
423
455
|
result = Node::DiceRollWithFilter::KEEP_HIGHEST
|
424
456
|
result
|
425
457
|
end
|
426
458
|
|
427
|
-
def
|
459
|
+
def _reduce_34(val, _values, result)
|
428
460
|
result = Node::DiceRollWithFilter::KEEP_LOWEST
|
429
461
|
result
|
430
462
|
end
|
431
463
|
|
432
|
-
def
|
464
|
+
def _reduce_35(val, _values, result)
|
433
465
|
result = Node::DiceRollWithFilter::DROP_HIGHEST
|
434
466
|
result
|
435
467
|
end
|
436
468
|
|
437
|
-
def
|
469
|
+
def _reduce_36(val, _values, result)
|
438
470
|
result = Node::DiceRollWithFilter::DROP_LOWEST
|
439
471
|
result
|
440
472
|
end
|
441
473
|
|
442
|
-
# reduce
|
474
|
+
# reduce 37 omitted
|
443
475
|
|
444
|
-
# reduce
|
476
|
+
# reduce 38 omitted
|
445
477
|
|
446
|
-
def
|
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
|
483
|
+
def _reduce_40(val, _values, result)
|
452
484
|
result = Node::Number.new(val[0])
|
453
485
|
result
|
454
486
|
end
|
@@ -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+)?(([
|
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)
|
@@ -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("
|
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
|
-
|
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
|
-
|
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
|
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?
|