ttrpg-tools/content/yarn-spinner.md

2.9 KiB
Raw Blame History

Yarn Spinner 编写

Yarn Spinner是一种文字冒险文本格式可用于描述ttrpg冒险。

不要使用markdown格式语法,如标题,加粗等。冒号也有特殊含义(代表台词)。只使用纯文本描述冒险内容。

基本结构

每个主线支线遭遇使用一个节点来描述。然后,为每个遭遇里的每个交互创建一个节点

title: 节点名称
---
描述文本
角色: 角色台词
-> 选项描述1
    <<命令1>>
-> 选项描述2
    <<命令2>>
===

对于随机遭遇而言,使用多个title相同的节点。 可以使用when: 来为节点触发添加条件。 若需要节点只触发一次,可以结合变量

title: 随机遭遇
when: $villager_encountered == false
---
村民: 森林里有一只大狼!
<<set $villager_encountered to true>>
===

跳转

<<jump 节点名称>>:跳转节点 <<detour 节点名称>>:跳转节点,并在节点执行结束后返回 <<return>>:返回detour跳转来源节点

玩家在主线/支线地点之间移动时,根据路径内容,插入<<detour 随机遭遇>>来触发随机遭遇。

随机遭遇可以使用<<return>>来返回主线。

休息与睡觉

在合适的地方可以休息。如果时间在晚0点到早6点之间可以睡觉。

命令和函数

使用命令读写时间。不要创建变量。

  • <<time_pass>>:时间流逝,若休息则使用<<time_pass true>>。若在夜间休息则休息至第二天6点否则休息1小时。
  • <<if time_of_day() <= 6>>读取24小时制当前时间。午夜为0点。
  • <<if time_of_game() >= 72>>:总共流逝的时间。

使用以下命令操作角色属性:

  • <<damage str 4>>:造成角色属性损伤。若可耐受,则使用<<damage str 4 true>>
  • <<heal str 4>>:解除属性创伤,并恢复角色属性损伤。
  • <<buff str 4 4>>:施加属性修改值,持续一定小时数。
  • <<set $result to check("nodeId:checkId", "wis")>> :检定角色属性。成功返回正值代表成功进度,失败返回负值代表失败进度。
  • <<if $result >= 3>>:处理检定成功进度。
  • <<if $result <= -2>>:处理检定失败进度。
  • <<if $result > 0>>:如果既没有成功也没有失败,暗示玩家应该继续尝试。

使用以下命令操作角色物品:

  • <<add_item light_armor 1>>:添加物品。
  • <<if consume_item("gold", 100)>>:消耗物品。
  • <<if has_item("gold", 100)>>:检查物品。

文件分割

可以把遭遇拆分为多个文件。每个文件不要超过300行。

只要使用匹配的遭遇title就可以跳转到其他文件内的遭遇。

每个交互机会应当有自己的节点。若检定既没有成功也没有失败,则应当允许玩家再次尝试或者返回遭遇。

使用变量来存储其他世界状态。