FVTT 基础教程——掷骰公式
本文转载自 @时泠 老师所撰写的博客文章,本文只做了部分新增与调整,以下为原文地址:
前言
FVTT作为虚拟桌面,掷骰功能是游戏过程中必不可少的一环,毕竟我们都是和骰子打交道,那么怎么使用骰点系统呢?
骰点系统
以下内容参考FVTT官网,请以官网为准。
https://foundryvtt.com/kb/
骰点的结果会显示在聊天消息中,根据可见性关系分为下列四种投掷方式:
OK,这是掷骰命令,那么如何掷骰呢?下面就是讲解掷骰公式了。
首先,掷骰公式是一个包含了
四则运算和特殊运算符如d(dice)等的运算式。因此你可以直接将其作为运算式进行书写。最基础的运算公式
首先我们来讲解掷骰的基本运算语法,前面我们已经提到了掷骰公式是一个运算式,因此掌握运算符号即可。
-
xdy:这是一个二元运算符d,x表示有几个骰子,y表示骰子的数量。如:3d8即为掷3个8面骰的结果。 -
+−∗/:这些都是二元运算符,作用如四则运算中的原本作用,如:(1d8+1d4∗2)/4,将1d8与1d4∗2的结果相加后除以4。 -
():作用是改变运算次序。 -
floor():向下取整,应是系统默认行为,常用于/运算。如:floor(4d6/3)表示掷骰2d6并将结果除以3后向下取整。 -
ceil():向上取整,与floor()相反,常用于/运算。 -
round():四舍五入至接近的整数。 -
abs():取绝对值,较少使用。 -
min(x,y,z,...):取最小的结果,用,隔开不同的值。如:min(4d6,3d8,6),即在4d6的掷骰结果、3d8的掷骰结果和6中取最小的结果值。 -
max(x,y,z,...):取最大的结果,与min(x,y,z,...)相反,如:max(2d6,6),即在2d6的掷骰结果和6中取最大的结果值。
那么运算优先级,四则运算保存不变,
d的优先级处于最高,其次是四则运算。你可以通过括号改变运算次序。思考我知道你在想什么,3d(2d8+1)这种运算是否可以生效?看来可以。
特殊运算符
以下是你可以用的特殊运算符,注意,一些运算符的简写可能会混淆,同时这些运算符是基于骰点操作的,因此它只能作为掷骰运算符后作为修饰用。你不可以将其接到其他运算符后。
-
kh/h:结果取最高,顾名思义,在你骰出的骰子中取最大的前n个骰子,如:3d8kh2,即在3个8面骰结果中取最高的2个,常见的案例是DND系统掷骰属性4d6kh3。 -
kl:结果取最低,和kh相反,它会取最小的前n个骰子。 -
dl/d:丢弃最低,和kh类似,它会在骰出的骰子中丢弃最小的前n个骰子,这些骰子将不参与运算结果。如:3d8dl2,在3个8面骰结果中丢弃前2个最小的,保留最大的1个。 -
dh:丢弃最高,和dl/d相反,它会在骰出的骰子中丢弃最大的前n个骰子,这些骰子将不参与运算结果。 -
min:替换最小值为指定结果,在你骰出的骰子中选择小于x的骰值,将其替换为x,注意这里是绝对小于的关系。如4d10min2代表将4个10面骰中小于2的结果替换为2,即将1替换为2。 -
max:替换最大值为指定结果,和min类似,它会替换大于x的结果为x,注意是绝对大于。
成功/失败
在这一章节,我们主要介绍这个运算符:
cs, 计算成功次数。在不给定任何条件下,
cs会将前文提到的所有骰子记作成功,因为这是与掷骰运算相关的,因此你也不可以将其接到其他运算符后。以下是你可以使用的条件:
-
cs={y}:计算骰出y的骰子数量 -
cs>{y}:计算骰出大于y的骰子数量 -
cs>={y}:计算骰出大于等于y的骰子数量 -
cs<{y}:计算骰出小于y的骰子数量 -
cs<={y}:计算骰出小于等于y的骰子数量 -
even:计算骰出偶数的骰子数量,这是一个单独的运算符,所以不需要加上cs前缀。 -
odd:计算骰出奇数的骰子数量,这是一个单独的运算符,所以不需要加上cs前缀。
当然我们也有相反的计算失败次数的运算符:
cf,它的约束条件与上文相同。下面是对于成功/失败操作数量本身的操作符:
-
df:扣除失败次数:这个操作符用于指定操作失败的条件,和上文的约束相同,然后从成功计数中减去失败次数,将每次失败计数为-1。失败的标准与计数成功相同。 -
sf:减去失败骰子:这个操作符用于指定操作失败的条件,与上文约束相同,然后从骰点结果中减去失败的骰子骰点的值 -
ms:成功幅度,这个操作符从掷骰的结果中减去用户设置的目标值,并返回差值作为最终总数。如果骰点小于目标,则输出负数,反之则输出正数。
以下是示例,读者可以直接在 FVTT 运行,来观察结果:
掷
10个20面骰子,每个掷出20的骰子算成功。/r 10d20cs20
掷
10个20面骰子,每个掷出10以上的骰子计算成功。/r 10d20cs>10
掷
6个10面骰子,每个掷出6或更高的骰子计算成功。/r 6d10cs>=6
掷
1个100面骰子,如果结果为20或更低,则算为成功。/r 1d100cs<=20
掷
3个6面骰子,每个掷出偶数的骰子算成功。/r 3d6even
掷
3个6面骰子,每个掷奇数的骰子计算成功。/r 3d6odd
掷
5个10面骰子,将任何掷出6或更高的骰子计为成功,同时扣除任何掷出1的骰子数量。/r 5d10cs>=6df=1
掷
5个10面骰子,每掷出8或更高的骰子计算成功,并在掷出10的结果时再掷一个骰子。/r 5d10cs>=8x=10
掷
5个骰子,每掷8个或更高的骰子计算成功,并在掷出9或10时再掷d10。/r 5d10cs>=8x>=9
掷
10个骰子,每掷出一个骰子8或更高,就算成功一次,每掷出8或更高的骰子,就会再掷出d10。/r 10d10cs>=8x>=8
掷
10个20面骰子,每个掷出20的骰子计算一次失败。/r 10d20cf20
掷
10个20面骰子,每个掷骰掷出10的骰子都算一次失败。/r 10d20cf>10
掷
6个10面骰子,每个掷出6或更高的骰子计算一次失败。/r 6d10cf>=6
掷
1个100面骰子,如果结果为20或更低,则算失败。/r 1d100cf<=20
掷
4个6面骰子,将任何恰好掷出6的骰子视为成功,并从每个掷出1的骰子的最终结果中删除1。/r 4d6cs6df1
掷
10个10面骰子,将任何掷出6或更好的骰子视为成功,并为每个掷出1的骰子从最终结果中删除1。/r 10d10cs>5df1
掷
1个10面骰子,将10算作成功,1算作失败。/r 1d10cs=10df=1
掷出
3个6面骰子,并减去任何掷出小于3的骰子的值。/r 3d6sf<3
掷出
3个6面骰子,从最终结果中减去10。/r 3d6ms10
硬币与命运骰子
硬币是双面骰子,有两个结果:正面(heads)或反面(tails)。它们可以像任何其他骰子一样掷骰,但不受运算符的影响,尽管它们仍然可以与其他骰子类型组合。
想要骰出硬币,你只需要将
xdy中的y设置为c即可。如果你需要判断成功失败,你只需要再后接
c即可,默认情况下,不给任何条件则判断正面为默认成功。如:/r 4dc # 扔四枚硬币.
/r 3dcc1 # 扔三枚硬币,统计正面朝上的数量
/r 3dcc0 # 扔三枚硬币,统计反面朝上的数量
命运骰子是
6面骰子,可以掷出正、减或空白面。它们不受运算符的影响,因为它们的空白面没有数值并且被认为是零。想要骰出命运骰子,你只需要将
xdy中的y设置为f即可。/r 4df # 扔四枚命运骰子
特殊骰子的骰点示例
重新掷骰和爆炸掷骰
这些运算符也是基于掷骰结果的,因此你也不可以将其接到其他运算符后
以下是这些运算符的讲解:
-
r:重投,根据设定的条件重新掷骰,无论结果是否更优,都会保持结果。重掷只会重掷骰一次。 -
rr:递归重投,根据设定的条件重新掷骰,如果也符合条件,则重新掷骰,如果不符合条件,则保留该结果。与重投骰子一次的重投不同,只要结果符合重投的条件,递归重投就会继续投掷。 -
x:爆炸掷骰,根据设定的条件不断重新掷骰,以便每次出现该数字都会再次掷骰,从而不断增加总结果。 -
xo:爆炸一次,根据设定的条件重新掷骰一次,从而增加总结果。 -
x{y}:用数字上限爆炸,根据设定的条件重新掷骰,但最多只能掷y次。例如,在掷骰中添加x5将允许它最多爆炸5次,而在掷骰中添加x1与添加xo相同。
以下是示例:
-
掷
1个10面骰子,如果结果是1,则重新掷骰。
/r 1d10r1
-
掷
1个20面骰子,如果结果小于10,则重新掷骰。
/r 1d20r<10
-
掷
1个20面骰子,如果结果小于3,则重新掷骰,包括任何同样小于3的结果。
/r 1d20rr<3
-
你现在一定想知道掷多个骰子,为其中每个满足条件的骰子重新掷骰该怎么做,此时重骰修饰符的语法是
r[最大次数][运算符][目标点数].那么掷3个10面骰,为其中每个结果小于5的骰子重新掷骰的表达式就是
/r 3d10r3<5
-
掷
5个10面骰子,如果任何一个结果是10,则掷出另1个10面骰子,将结果添加到总数中。
/r 5d10x10
-
掷
1个20面骰子,如果结果小于10,则再掷骰,直到其中一个骰子是10或更好,这个骰点是它唯一保留的结果。
/r 1d20x<10kh
-
掷
6个10面骰子,每掷10个骰子再掷1个骰子,但不要在额外的骰子上重新掷10个骰子,将它们添加到总数中。
/r 6d10xo10
-
掷
6个10面骰子,每掷10个骰子再掷一个骰子(最多5次),将它们添加到总数中。
/r 6d10x5=10
-
掷
6个10面骰子,每掷9或10个骰子(最多2次)再掷一个骰子,将它们添加到总数中。
/r 6d10x2>=9
-
掷
5个10面骰子,重新掷任何小于8的骰子,并重新掷任何得分为10的骰子,然后计算掷骰的总成功次数。
/r 5d10xo<8x10cs>=8
骰池
骰池是一类骰点或常数的集合,在运算时将会把骰池内的所有骰子全部进行运算,而后作为一个整体参与后续的运算,它可以视作是一个骰子的运算符。
骰池通过
{}包裹,内部的元素通过,分隔。请看示例:-
掷出
4d6、3d8和2d10,仅保留最高结果。
/r {4d6, 3d8, 2d10}kh
-
掷
1个20面骰子,结果只能是10或更高。
/r {1d20, 10}kh
-
掷
1个20面骰子,用其结果或数字10中的较高者,然后加5。
/r {1d20,10}kh + 5
-
眼熟吗?请查阅DnD5e的创建人物章节理解此骰池
/r {4d6kh3, 4d6kh3, 4d6kh3, 4d6kh3, 4d6kh3, 4d6kh3}
掷出
6d6、5d8、4d10、3d12并计算有多少个结果大于15。/r {6d6, 5d8, 4d10, 3d12}cs>15
掷
1个8面骰子和1个6面骰子,如果它们掷出最大值,它们都会额外掷出相同大小的骰子。使用最高的结果。/r {1d8x, 1d6x}kh
扩展:Better Roll Formulas
https://github.com/KitCat420/foundryvtt-better-roll-formulas
该 mod 扩展了FVTT的掷骰公式,若有额外需求可进行下载。





















还没有人评论,快来抢沙发吧~