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.
- 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?
|