表达式修饰符
在骰子表达式后面可以跟各种修饰符,以改变骰子的行为或输出内容。组合各种修饰符,就可以实现不同规则所需的骰子。
上界/下界
当一次投骰的点数高于上界或低于下界时,则将这次的点数视为上界/下界的值。
使用 max
min
修饰符,例如:
// 普通掷 4 个 d6 骰
4d6: [5, 4, 3, 2] = 14
// 如果点数大于 3,则视为 3
4d6max3: [3v, 3v, 3, 2] = 11
// 如果点数小于 3,则视为 3
4d6min3: [5, 4, 3, 3^] = 15
重投累加
当一次投骰的点数为最大值时,可以再投一次,把所有的结果累加起来。例如玩飞行棋时,只要你投出了 6,就可以一直投,直到你没有投出 6 为止。
使用 !
修饰符,例如:
// 2 个 d6 骰,由于第二次投出了 6,可以接着投,直到结果不是 6
2d6!: [4, 6!, 6!, 2] = 18
你也可以指定触发重投的条件:
2d6!=5 // 当骰子点数正好为 5 时重投
2d6!>4 // 当骰子点数大于 4 时重投
4d10!<=3 // 当骰子点数小于等于 3 时重投
2d6!<>4 // 当骰子点数不等于 4 时重投
你可以使用 !!
修饰符,把多次重投的结果合并在一起展示:
// 普通重投
2d6!: [4, 6!, 6!, 2] = 18
// 使用 !! 把多次重投的结果(6 + 6 + 2)合并展示
2d6!!: [4, 14!!] = 18
在有些特殊规则中,重投得到的值需要 -1
之后再求和。可以使用 !p
修饰符:
// 普通重投
2d6!: [6!, 6!, 6!, 4, 1] = 23
// 重投的结果都减去了 1
2d6!p: [6!p, 5!p, 5!p, 3, 1] = 20
重投
当一次投骰的点数为最小值时(通常是 1),重投,直到投出非最小值的点数为止。
和上文的 重投累加 类似。区别在于,它不会累加之前所有重投的结果,而是只取最后一次的结果。
可以使用 r
修饰符:
// 投 d6, 由于投出了 1,重投一次出 3,因此最终结果是 3 (r 标记表示触发了重投)
d6r: [3r] = 3
如果只需要重投一次,无论重投的结果是否还是最小值,可以使用 ro
修饰符:
// 投 d6, 投出了 1,重投一次还是出 1,那么结果就是 1,不再继续重投
d6ro: [1ro] = 1
同样可以指定触发重投的条件:
2d6r=5 // 当骰子点数正好为 5 时重投
2d6ro>4 // 当骰子点数大于 4 时重投一次
4d10r<=3 // 当骰子点数小于等于 3 时重投
优势/劣势
优势/劣势骰主要是 DND 中的概念,也类似 COC 中的奖励/惩罚骰。原本的含义是骰多个骰子,取其中最大或最小的 n 个。
可以使用 kh
(取最大,Keep Highest)、k
(等价于 kh) 或 kl
(取最小,Keep Lowest) 修饰符:
// 4 个 d10,取最大的 2 个
4d10kh2: [4d, 10, 5d, 6] = 16
// 同上
4d10k2: [4d, 10, 5d, 6] = 16
// 4 个 d10,取最小的 1 个
4d10kl1: [5d, 4d, 3, 5d] = 3
相对地,你也可以选择丢弃其中最大或最小的 n 个。
可以使用 dl
(丢弃最小,Drop Lowest)、d
(等价于 dl) 或 dh
(丢弃最大,Drop Highest) 修饰符:
4d10dl2 // 4 个 d10, 丢弃最小的 2 个
4d10d2 // 同上
4d10dh1 // 4 个 d10, 丢弃最大的 1 个
你可以同时丢弃最大值和最小值:
// 4 个 d10, 丢弃最大的 1 个 和最小的 2 个
4d10dh1dl2: [6d, 7d, 9, 10d] = 9
骰池
骰池是指,骰一组骰子,计算它们中满足某个条件的骰子个数,而不是把这些骰子的点数相加。
可以直接使用与数值比较的语法:
2d6=6: [4, 6*] = 1 // 2 个 d6, 计算结果为 6 的骰子个数
4d3>1: [1, 3*, 2*, 1] = 2 // 4 个 d3, 计算结果大于 1 的骰子个数
4d3<2: [1*, 3, 2, 1*] = 2 // 4 个 d3, 计算结果小于 2 的骰子个数
5d8>=5: [2, 4, 6*, 3, 8*] = 2 // 5 个 d8, 计算结果大于等于 5 的骰子个数
6d10<=4: [7, 2*, 10, 3*, 3*, 4*] = 4 // 6 个 d10, 计算结果小于等于 4 的骰子个数
在有些规则中,我们还需要记录满足失败条件的骰子个数,并把它们从结果中减去。可以使用 f
修饰符:
// 4 个 d6, 结果大于 4 的骰子数 2 个,结果小于 3 的骰子数 1 个,因此最终结果为 2-1 = 1 个
4d6>4f<3: [2_, 5*, 4, 5*] = 1
标记
可以从投骰的结果中特殊标记出符合某些条件的结果。仅影响展示,不影响结果。
可以使用 cs
(标记成功) 或 cf
(标记失败) 修饰符:
// 5 个 d20, 特殊标记大于等于 16 的骰子
5d20cs>=16: [3, 20**, 18**, 15, 6] = 62
// 5 个 d20, 特殊标记小于等于 6 的骰子
5d20cf<=6: [3__, 20, 18, 15, 6__] = 62
排序
可以对投骰的结果进行排序。仅影响展示,不影响结果。
可以使用 sa
(升序)、s
(同 sa) 或 sd
(降序) 修饰符:
4d6: [4, 3, 5, 1] // 不排序
4d6s: [1, 3, 4, 5] // 默认升序排序
4d6sa: [1, 3, 4, 5] // 升序排序
4d6sd: [5, 4, 3, 1] // 降序排序