骰子表达式是可以用于表示掷骰子类型、数量等的特殊表达式,可与常用骰系的骰子机器人兼容。
骰子表达式对字母大小写不敏感,且结果为整数,浮点数结果将自动转为整数。
标准骰
基础
最基础的标准骰格式为 xDy
,即投掷 x
个 y
面骰子,再计算它们的点数总和。
其中 x
是可选值,缺省则默认为 1。
- 投掷 1 个 6 面骰子:
D6=4
- 投掷 2 个 8 面骰子:
2D8=[3+4]=7
百分骰
百分骰 D100
作为常用表达式,有一个专门别名 D%
。
- 投掷 1 个百分骰:
D%=42
优劣势骰
优劣势骰格式为 xDy(K|Q)z
,即投掷骰子后选取 z
个最大/小的骰子点数后,计算它们的点数总和。
其中 K 为取大,Q 为取小。z
是可选值,且不能大于 x
,缺省则默认为 1。
被 *
标记的点数代表其满足要求。
- 投掷 3 个 6 面骰,选 1 个最大的:
3D6K=[6*, 4, 2]=6
- 投掷 3 个 6 面骰,选 1 个最小的:
3D6Q=[6, 4, 2*]=2
- 投掷 4 个 6 面骰,选 2 个最大的:
4D6K2=[4*, 1, 3*, 2]=[4+3]=7
- 投掷 4 个 6 面骰,选 2 个最小的:
4D6Q2=[4, 1*, 3, 2*]=[1+2]=3
奖励骰与惩罚骰
奖励骰与惩罚骰格式为 (B|P)x
,即投掷一个百分骰后,额外投掷 x
个 D10
,选择最小/大的骰子点数作为百分骰点数的十位部分。
其中 P 为取大,B 为取小。x
是可选值,缺省则默认为 1。
- 投掷 1 个奖励骰:
B=(D100=72, B=4)=42
- 投掷 3 个奖励骰:
B3=(D100=96, B3=[4, 6, 3])=36
- 投掷 1 个惩罚骰:
P=(D100=42, P=7)=72
- 投掷 3 个惩罚骰:
P3=(D100=36, P3=[4, 6, 9])=96
FATE 骰
FATE 骰(或 Fudge 骰)是一种特殊的 6 面骰子,六个面分别为 -、-、0、0、+、+,分别代表 -1、0、1。
FATE 骰格式为 xF
或 xDF
,即投掷 x
个 FATE 骰子,再计算它们的点数总和。
其中 x
是可选值,缺省则默认为 4。
- 投掷 4 个 FATE 骰子:
F=[+, -, 0, +]=1
- 投掷 6 个 FATE 骰子:
6F=[+, 0, -, +, 0, +]=2
无限骰点
无限骰点是一种多轮的骰点规则,格式为xAv[Kz][Qw][My]
,即投掷 x
个 y
面骰子,计算点数不低于 v
的骰子个数,以此为新的骰子个数进行下一轮投掷,直到骰子个数为 0,然后求出所有累计结果中点数不高于 w
以及不低于 z
(若有)的骰子个数,即为最终结果。
其中 z
、w
、y
是可选值,y
缺省则默认为 10,w
缺省则默认为 8。如果 v
为 0,则代表不进行加骰。
被 <>
标记的点数代表其满足加骰线,被 *
标记的点数代表其满足要求。
- 投掷 4 个 9 面骰,加骰线为 6,选择不低于 8 以及不高于 4 的值:
4A6K8Q4M9=[{<9*>, <7>, 5, <9*>}, {3*, <9*>, 3*}, {<7>}, {3*}]=6
双重十字骰点
双重十字骰点是一种多轮的骰点规则,格式为xCv[My]
,即投掷 x
个 y
面骰子,计算点数不低于 v
的骰子个数,以此为新的骰子个数进行下一轮投掷,直到骰子个数为 0。
其中 y
是可选值,缺省则默认为 10。
被 <>
标记的点数代表其满足加骰线。
最终结果计算为:(投掷回合 - 1) * y
+ 最后回合最大点数
- 投掷 4 个 10 面骰,加骰线为 6:
4C6=[{4, <9>, 2, 1}, {<8>}, {<8>}, {<9>}, {4}]=44
- 投掷 4 个 7 面骰,加骰线为 3:
4C3M7=[{<5>, <4>, <7>, <3>}, {1, 2, <4>, 2}, {2}]=16
其他
骰子运算
骰子表达式支持数学运算,包括但不限于加减乘除(+-*/
)、乘方(**
)与括号等,也支持一部分数学函数。
骰子项与括号之间会自动添加乘号。
2*2D6**(2+1)=2*(2D6=[5+3]=8)**(2+1)=1024
3*5F=3*(5F=[0, 0, 0, -, -]=-2)=-6
D6D6D6=(D6=6)*(D6=6)*(D6=1)=36
(2+5)D6=(2+5)*(D6=4)=28
10/D6=10/(D6=3)=3
多轮骰点
多轮骰点的格式为 N#<表达式>
,用于更方便地重复投掷骰子。
N
必须放在表达式最前面,缺省则默认为 1。