Skip to content

综合示例

假设我们希望在对话中让玩家尝试撬锁,根据其“敏捷”属性进行检定:

typescript
Adv.appendDialog('lockpick-dialog', {
    script: '你尝试用发卡撬开这扇门...',
    check: {
        dice: 'd20',                         // 投一个20面骰
        target: () => 10,      // 目标为玩家的敏捷值,此处为 10
        modifier: [
            { name: '撬锁工具加成', value: () => 2 },
            { name: '疲劳惩罚',   value: () => -1 }
        ],
        success: 'door-open-dialog',          // 成功则进入开门对话
        fail: 'door-stuck-dialog',            // 失败则进入卡住对话
        onSuccess: () => console.log('门开了!'),
        onFail: () => console.log('门卡住了...')
    }
});

在这个例子中,程序会先掷一个 d20,假设结果为 14,然后加上修正 2 - 1 = 1,最终点数 15。如果此时玩家的敏捷值等于或低于 15,则检定成功;否则失败。

关于动态储存玩家属性,请参见第三章 状态记录

如果你想手动触发一次检定:

typescript
Adv.check(checker);

checker 是一个检定对象(ADVUserCheck),描述这一次检定。

这个函数会返回一个 bool 值,用于描述检定成不成功。

检定的方法

本项目支持配置检定使用何种方法。

在全局设置(game.config.ts)中设置字段 judgmentMode,其有以下取值:

  • d20:类似 D&D 的检定方法。这种情况下骰子的默认是 d20(默认)
  • percent:类似 CoC 检定方法。这种情况下骰子的默认是 d100