综合示例
假设我们希望在对话中让玩家尝试撬锁,根据其“敏捷”属性进行检定:
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