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,则检定成功;否则失败。

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