27 个版本 (稳定版)
4.2.3 | 2022年11月7日 |
---|---|
4.2.2 | 2021年10月23日 |
4.2.1 | 2021年4月30日 |
4.2.0 | 2021年3月7日 |
0.5.0 | 2020年8月8日 |
#215 in 游戏开发
每月55次 下载
在 disle 中使用
90KB
2K SLoC
Caith
用 Rust 编写的骰子滚动库(同时也是一张抽屉卡片)。
此库旨在为桌面角色扮演游戏提供所需的一切。
不同的功能灵感来自 DiceMaiden 和 Sidekick。
Dìsle 是基于 caith
构建的 Discord 机器人。
用法
use caith::{Roller, RollResult, RollResultType};
// ...
let result = Roller::new("1d6 : initiative").unwrap().roll().unwrap();
printf("{}", result);
语法
xdy [OPTIONS] [TARGET] [FAILURE] [! REASON]
roll `x` dice(s) with `y` sides
`y` can also be "F" or "f" for fudge dice. In this case, no option applies and ignored if provided.
Options:
+ - / * : modifiers
e# : Explode value. If number is omitted, we use dice sides
ie# or !# : Indefinite explode value, If number is omitted, we use dice sides
K# : Keeping # highest (upperacse "K")
k# : Keeping # lowest (lowercase "k")
D# : Dropping the highest (uppercase "D")
d# : Dropping the lowest (lowercase "d")
r# : Reroll if <= value
ir# : Indefinite reroll if <= value
Target:
t# : minimum value to count as success
tt# : minimum value to count as two successes
t[<list of numbers>] : enumeration of values considered as success
Failure:
f# : value under which it's counted as failure
Repetition:
a roll can be repeated with `^` operator: `(2d6 + 6) ^ 8` will roll eight times the expression.
Summed repetition:
with the `^+` operator, the roll will be repeated and all the totals summed.
Sorted repetition:
with the `^#` operator, the roll will be repeated and sorted by total.
Reason:
: : Any text after `:` will be a comment
辅助工具
提供了一些辅助工具来根据特定的 RPG 规则解释滚动结果。有关详细信息,请参阅辅助工具文档。
您需要添加所需辅助工具的功能标志。
目前,支持的功能标志包括
ova
:用于 "OVA: The Anime Role-Playing Game result" 的辅助工具cde
:用于 "Hong Kong, Les Chroniques de l'étrange" 的辅助工具
默认不激活任何功能
卡片
caith
可以创建一副标准的 52 张牌,如果激活了 cards
功能,还可以选择性地添加 Jokers。请参阅 cards::Deck
。
限制
为了避免 OOM 问题,最多支持 5000 个面数为 5000 的骰子。
示例
以下示例直接取自 DiceMaiden 的 Readme
2d6 + 3d10
:掷两个六面骰子和三个十面骰子。
3d6 + 5
:掷三个六面骰子并加五。其他支持的静态修改符包括加 (+)、减 (-)、乘 (*) 和除 (/)。
3d6 * 1.5
:掷三个六面骰子并加 50%。
3d6 e6
:掷三个六面骰子,六点爆炸。一些游戏系统称这种骰子为“开口骰子”。如果掷出的数字大于或等于此选项给出的值,则骰子再次掷出并加到总数中。如果没有给出此选项的数字,则假定它与骰子的面数相同。因此,“3d6 e”与“3d6 e6”相同。使用此命令骰子只能爆炸一次。使用ie
进行不定时爆炸。
3d6 ie6
或3d6!
:掷三个六面骰子,在六点内无限期地爆炸。我们将爆炸次数限制在100次,以防止滥用。
3d10 d1
:掷三个十面骰子,掷掉一个骰子。最低值首先被掷掉。
3d10 K2
:掷三个十面骰子,保留两个。保留掷出的最高值。使用小写k
将保留最低值。
4d6 r2
:掷四个六面骰子,任何掷出的数字等于或小于两的骰子重新掷一次。使用ir
进行不定时重新掷。
4d6 ir2
:掷四个六面骰子,任何掷出的数字等于或小于两的骰子(以及这些骰子)重新掷。每次掷骰子最多进行100次重新掷,以防止滥用。
6d10 t7
:掷六个十面骰子,任何掷出的数字七或更高计为成功。掷出的骰子不用于计算总和。任何掷出的数字达到或超过目标数字的骰子都加到成功总数中。
5d10 t8 f1
:f#表示一个失败数字,每个骰子必须匹配或低于该数字才能计为对成功的影响。这些作为一种负成功,按上述方式总计。在示例掷骰中,掷五个十面骰子,任何掷出的数字8或更高计为成功,并从中减去。总和可能为负。如果此选项给出0值,则与没有此选项相同,因此执行正常掷骰子的总和。
5d10 t8 tt10
:8和9计为成功,10计为两次。
3d6 t[2,4,6]
:只有偶数结果计为成功(适用于像“骑士”这样的游戏)。
4d10 k3
:掷四个十面骰子,保留掷出的最低三个骰子。
4d6 : Hello World!
:掷四个六面骰子,并在掷骰子时添加注释。
这些命令可以组合使用。例如
10d6 e6 K8 +4
:掷十个六面骰子,在六点爆炸,保留八个最高掷骰结果,并加四。
依赖项
~3MB
~63K SLoC