2.9 KiB
2.9 KiB
Yarn Spinner 编写
Yarn Spinner是一种文字冒险文本格式,可用于描述ttrpg冒险。
不要使用markdown格式语法,如标题,加粗等。冒号也有特殊含义(代表台词)。只使用纯文本描述冒险内容。
基本结构
每个主线和支线遭遇使用一个节点来描述。然后,为每个遭遇里的每个交互创建一个节点。
title: 节点名称
---
描述文本
角色: 角色台词
-> 选项描述1
<<命令1>>
-> 选项描述2
<<命令2>>
===
对于随机遭遇而言,使用多个title相同的节点。
使用when: 来为节点触发添加条件。
如果没有条件,则使用when: always。
若需要节点只触发一次,可以结合变量。
title: 随机遭遇
when: $villager_encountered == false
---
村民: 森林里有一只大狼!
<<set $villager_encountered to true>>
===
跳转
<<jump 节点名称>>:跳转节点
<<detour 节点名称>>:跳转节点,并在节点执行结束后返回
<<return>>:返回detour跳转来源节点
玩家在主线/支线地点之间移动时,根据路径内容,插入<<detour 随机遭遇>>来触发随机遭遇。
随机遭遇可以使用<<return>>来返回主线。
在玩家可以反复尝试的遭遇中,在结尾添加`<<jump 节点名称>>```,跳转到自身的开头。
命令和函数
使用命令读写时间。不要创建变量。
<<add_hour>>``<<add_minute>>``<<add_day>>:触发时间流逝。$time_day``$time_hour``$time_minute:读取24小时制当前时间。$hour_total:总共流逝的时间。
使用以下命令操作角色属性:
<<damage str 4>>:造成角色属性损伤。<<heal str 4>>:解除属性创伤,并恢复角色属性损伤。<<set $result to check("nodeId:checkId", "wis")>>:检定角色属性。成功返回正值代表成功进度,失败返回负值代表失败进度。<<if $result >= 3>>:处理检定成功进度。<<if $result <= -2>>:处理检定失败进度。<<if $result > 0>>:如果既没有达成成功进度也没有达成失败进度,暗示玩家应该继续尝试。- 检定后总是在文本中描述玩家当前的进度(但不要描述难度和机会)
直接使用变量来记录玩家物品。没有背包限制。
<<set $item_light_armor to $item_light_armor + 1>>:添加物品。<<if $item_gold >= 100)>>:检查物品。
直接使用变量来记录势力计划、地点、事件的进度。
文件分割
可以把遭遇拆分为多个文件。每个文件不要超过300行。
只要使用匹配的遭遇title就可以跳转到其他文件内的遭遇。
每个交互机会应当有自己的节点。若检定既没有成功也没有失败,则应当允许玩家再次尝试或者返回遭遇。
使用变量来存储其他世界状态。