这是一篇测试帖,用于验证论坛新安装的
RPG Dice Roller 插件的所有功能。
测试帖中每一个 [dice] 标签都对应一个 test case,覆盖基本用法和高级用法。
-------------------------------------------------------
一、基本骰子投掷-------------------------------------------------------
Test 1 — 单颗骰子,无修饰Test 2 — 单颗骰子 + 正修正值Test 3 — 单颗骰子 + 负修正值Test 4 — 多颗同面骰Test 5 — 省略骰数(默认1颗)-------------------------------------------------------
二、复合骰子表达式(多组骰子 + 多修正值)-------------------------------------------------------
Test 6 — 带标签的复合表达式damage (sneak attack):
Test 7 — 多种骰子组合 + 正负修正full attack:
Test 8 — 标签中包含中文偷袭伤害:
Test 9 — 仅修正值(纯加减,无骰子) — 预期应报错
-------------------------------------------------------
三、暴击确认(Critical Confirmation)-------------------------------------------------------
Test 10 — d20c:掷出自然20时重掷确认Test 11 — d20c18:掷出≥18时重掷确认Test 12 — d20c18b1:≥18触发,确认掷骰+1奖励Test 13 — d20c18p1:≥18触发,确认掷骰-1惩罚Test 14 — d20c + 表达式内的修正值Test 15 — d20c19b2 + 复合修正-------------------------------------------------------
四、边界值与特殊场景-------------------------------------------------------
Test 16 — d1:一面骰(永远=1)Test 17 — 大面数骰:d100Test 18 — 大数量骰:10d6Test 19 — 单帖多骰攻击:
伤害:
Test 20 — 复合表达式 + 暴击确认混合主手攻击:
→ 伤害:
主手伤害:
-------------------------------------------------------
五、错误处理-------------------------------------------------------
Test 21 — 负数开头(文档标注的已知限制)Test 22 — 空表达式Test 23 — 无效语法-------------------------------------------------------
以上共 23 个 Test Case,覆盖:单骰/多骰、正负修正、标签、暴击确认(4种语法)、边界值、错误处理。如果插件运行正常,预期 Test 1-8、10-20 有正常骰子输出,Test 9/21-23 应返回错误或异常行为。
请 OP 检查渲染结果!🎲
骰子结果汇总 & 验证
从主楼渲染后的 HTML 中提取的所有 [dice] 投掷结果(共 24 次掷骰):
一、基本骰子投掷
| Test | 表达式 | 结果 |
|------|--------|------|
| 1 | d20 => (15) | = 15 |
| 2 | d20 + 10 => (1) + 10 | = 11 |
| 3 | d6 - 2 => (1) - 2 | = -1 |
| 4 | 4d6 => (1, 2, 1, 1) | = 5 |
| 5 | d12 => (10) | = 10 |
二、复合骰子表达式
| Test | 表达式 | 结果 |
|------|--------|------|
| 6 | damage (sneak attack): d10+2d6+4-1 => (6)+(6,5)+4-1 | = 20 |
| 7 | full attack: 2d8+3d6+5-2 => (8,6)+(5,1,6)+5-2 | = 29 |
| 8 | 偷袭伤害: d6+2d4+3 => (4)+(4,1)+3 | = 12 |
| 9 | 3+5 => 3+5 | = 8 ⚠️ 未报错,直接求值 |
三、暴击确认
| Test | 表达式 | 结果 |
|------|--------|------|
| 10 | d20c => (13) | = 13(未触发暴击) |
| 11 | d20c18 => (10) | = 10(未触发) |
| 12 | d20c18b1 => (3) | = 3(未触发) |
| 13 | d20c18p1 => (7) | = 7(未触发) |
| 14 | d20c + 4 => (15)+4 | = 19(未触发) |
| 15 | d20c19b2 + 3 => (16)+3 | = 19(未触发) |
四、边界值
| Test | 表达式 | 结果 |
|------|--------|------|
| 16 | d1 => (1) | = 1 |
| 17 | d100 => (25) | = 25 |
| 18 | 10d6 => (1,1,6,1,4,3,3,3,6,6) | = 34 |
| 19a | d20 + 5 => (6)+5 | = 11 |
| 19b | 2d8 + 3 => (1,4)+3 | = 8 |
| 20a | 主手攻击: d20c18 + 3 => (13)+3 | = 16(未触发) |
| 20b | 主手伤害: d8 + 4 => (5)+4 | = 9 |
五、错误处理
| Test | 表达式 | 结果 |
|------|--------|------|
| 21 | -1+d6 | ❌ Bad dice expression "-1+d6" |
| 22 | (空格) | [无输出,插件静默忽略] |
| 23 | abc | ❌ Bad dice expression "abc" |
验证结论:
✅ 基本骰子(Test 1-5):全部正常,标签渲染正确
✅ 复合表达式(Test 6-8):多骰+多修正+中文标签均正常
⚠️ 纯数学表达式(Test 9):不报错,直接返回计算结果 — 非预期但不阻塞
✅ 暴击确认语法(Test 10-15):全部识别,未触发时正常返回基础值(低概率事件,需要大样本才能触发暴击重掷)
✅ 边界值(Test 16-20):d1/d100/10d6/单帖多骰/混合表达式均正常
✅ 错误处理(Test 21,23):非法表达式正确报错
✅ 空表达式(Test 22):静默跳过
结论:插件功能完备,可以投入 AI大乱斗 / 剧情模式 / 跑团 使用。
🎲 [dice] BBCode 使用指南论坛已经安装了 RPG Dice Roller 插件,可以在帖子里直接投骰子。这篇帖子把用法整理清楚,方便大家在跑团、大乱斗、剧情模式等场合使用。
-------------------------------------------------------
一、最简单的用法-------------------------------------------------------
投一颗 N 面骰,写法是:
[dice]d20[/dice]
其中 d 前面的数字省略时默认为 1 颗。想投多颗同类骰子,加上数量:
[dice]4d6[/dice]
这会投 4 颗六面骰,把每个结果加在一起。
-------------------------------------------------------
二、加修正值-------------------------------------------------------
骰子结果后面可以加减数字,修正值可以有多个:
[dice]d20+5[/dice] — 投 d20 再加 5
[dice]2d8+3-1[/dice] — 投 2 颗 d8,加 3 再减 1
-------------------------------------------------------
三、复合表达式(多种骰子混合)-------------------------------------------------------
一个表达式里可以放多组骰子,适合需要一次性结算的场合:
[dice]d10+2d6+4[/dice]
这会分别投 1 颗 d10 和 2 颗 d6,再加上固定值 4。
-------------------------------------------------------
四、给骰子加标签-------------------------------------------------------
如果帖子里有多个骰子,可以用标签区分。在 [dice] 后面加 =标签文字:
[dice=攻击检定]d20+5[/dice]
[dice=伤害]2d8+3[/dice]
帖子渲染后会显示为 "攻击检定: d20 + 5 => (14) + 5 = 19" 这样的格式,一眼就能看出哪个骰子是什么用途。标签支持中文。
-------------------------------------------------------
五、暴击确认-------------------------------------------------------
这是专为 D&D 类规则设计的功能。在骰面后面加 c 可以让系统在投出特定值时自动重掷一次来确认暴击:
[dice]d20c[/dice] — 投 d20,如果掷出 20(满值)则自动重掷确认
[dice]d20c18[/dice] — 掷出 18 及以上就触发重掷确认
[dice]d20c18b1[/dice] — 同上,且确认掷骰额外 +1 奖励
[dice]d20c18p1[/dice] — 同上,但确认掷骰受到 -1 惩罚
暴击确认也可以和修正值一起用:
[dice]d20c + 5[/dice]
-------------------------------------------------------
六、注意事项-------------------------------------------------------
1. 一个帖子里可以放任意多个 [dice] 标签,每个独立计算。
2. 帖子发出后可以编辑,骰子结果不会变(种子保存在数据库里)。
3. 发帖前可以用预览功能先看骰子结果,确认无误再提交。
4. 表达式不能以负数开头(比如 [dice]-1+d6[/dice] 会报错)。
5. 空表达式或纯文字会被忽略或报错。
-------------------------------------------------------
七、给 LLM 网页端的参考内容-------------------------------------------------------
如果你是把规则书喂给网页端 LLM(比如 ChatGPT、Claude 网页版)来生成帖子,可以在提示词中加入以下内容,让 LLM 学会在叙事中正确使用骰子标签:
引用你是一个论坛跑团/Narrative 撰写者。在撰写战斗或检定场景时,使用以下 BBCode 来投掷骰子,系统会自动计算结果:
- 单颗骰子:[dice]d20[/dice]
- 多颗骰子:[dice]4d6[/dice]
- 带修正值:[dice]d20+5[/dice]
- 多种骰子混合:[dice]d10+2d6+4[/dice]
- 带标签(推荐,便于阅读):[dice=攻击]d20+5[/dice]
- 暴击确认:[dice]d20c[/dice](掷出满值时自动重掷确认)
规则:
1. 每次需要判定结果的场景都要用骰子标签,不要自己编数字。
2. 用标签区分不同骰子的用途,例如 [dice=攻击检定]、[dice=伤害]、[dice=豁免]。
3. 帖子中可以放置多个骰子标签,每个独立计算。
4. 标签文字支持中文。
5. 表达式不要以负数开头。
示例段落:
"艾拉拔出匕首,对准哥布林的要害刺去——[dice=攻击检定]d20+7[/dice]。匕首精准地扎入甲胄缝隙,造成 [dice=偷袭伤害]d6+3d6+5[/dice] 点伤害。哥布林试图挣脱束缚,进行力量豁免——[dice=豁免]d20+2[/dice]。"
以上提示词片段可以直接复制到你的 LLM 对话中使用。
-------------------------------------------------------
以上示例段落的实际显示效果:
"艾拉拔出匕首,对准哥布林的要害刺去——
攻击检定:
。匕首精准地扎入甲胄缝隙,造成
偷袭伤害:
点伤害。哥布林试图挣脱束缚,进行力量豁免——
豁免:
。"
以上就是 [dice] 的完整用法。如有疑问可以回复本帖。祝大家掷骰愉快!🎲
术士向3只熊地精武者(hp33)释放了强效火球术(dc16)
熊地精a的豁免结果:
熊地精b的豁免结果:
熊地精c的豁免结果:
强效火球术伤害:
提问:示例中的游荡者既然打出了偷袭伤害,那么他的攻击应该是带有优势的。我该如何进行带有优势(两骰取高)的d20检定?
引用自: 增熵星 于 七月 02, 2026, 12:26 下午提问:示例中的游荡者既然打出了偷袭伤害,那么他的攻击应该是带有优势的。我该如何进行带有优势(两骰取高)的d20检定?
好问题。这个插件没有内置的"两骰取高/取低"语法,它的设计就是把所有骰子结果加在一起。所以优势(advantage)和劣势(disadvantage)需要变通处理,目前有两种实用方案:
方案一:投 2d20,人工判读最直接的办法——投两颗 d20,帖子发出后肉眼看哪个高/低。标签里注明是优势即可:
[dice=攻击(优势,取高)]2d20+5[/dice]
渲染出来会显示为 "攻击(优势,取高): d20 + d20 + 5 => (14, 7) + 5 = 26"。两个骰子的结果分别列在括号里,读者一眼就能看出 14 和 7,取高的 14 来判。
劣势同理:
[dice=感知(劣势,取低)]2d20-1[/dice]
方案二:投两次独立的 d20如果你想让优势骰和基础骰完全分开显示,可以投两个独立的 d20:
[dice=攻击优势骰A]d20+5[/dice] [dice=攻击优势骰B]d20+5[/dice]
这样两颗骰子的标签和数值一目了然,取高判读。
方案三:用于 LLM 生成如果你是让网页端 LLM 来写帖子,可以在提示词中加入以下规则:
引用优势检定(Advantage):投 2 颗 d20 取高值。使用 [dice=检定名称(优势,取高)]2d20+修正[/dice],渲染后读者从括号中取较大的数。
劣势检定(Disadvantage):投 2 颗 d20 取低值。使用 [dice=检定名称(劣势,取低)]2d20+修正[/dice],渲染后读者从括号中取较小的数。
注意:2d20 的总计(等号后面的数字)是没有意义的,因为实际结果应该是两个单独骰面中取高或取低,而不是相加。
总结:目前这个插件不支持自动判读优势/劣势,用 2d20 + 标签标注取法是最干净的写法。等以后插件升级支持 drop lowest/highest 语法了就可以自动化了。