ttrpg-tools/content/yarn-spinner.md

79 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Yarn Spinner 编写
Yarn Spinner是一种文字冒险文本格式可用于描述ttrpg冒险。
不要使用`markdown`格式语法,如标题,加粗等。冒号也有特殊含义(代表台词)。只使用纯文本描述冒险内容。
## 基本结构
每个`主线`和`支线`遭遇使用一个`节点`来描述。然后,为每个遭遇里的每个交互创建一个`节点`。
```yarn-spinner
title: 节点名称
---
描述文本
角色: 角色台词
-> 选项描述1
<<命令1>>
-> 选项描述2
<<命令2>>
===
```
对于`随机`遭遇而言,使用多个`title`相同的节点。
使用`when: `来为节点触发添加条件。
如果没有条件,则使用`when: always`。
若需要节点只触发一次,可以结合`变量`。
```yarn-spinner
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就可以跳转到其他文件内的遭遇。
每个交互机会应当有自己的节点。若检定既没有成功也没有失败,则应当允许玩家再次尝试或者返回遭遇。
使用变量来存储其他世界状态。