综合示例
假设我们希望在对话中让玩家尝试撬锁,根据其“敏捷”属性进行检定:
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,则检定成功;否则失败。
关于动态储存玩家属性,请参见第三章 状态记录。