数据结构

程序读英文键。人看中文意思和例子。玩家界面上不出现键名。

房间 见专页

地点。人与物同一时刻只在一处。

{
  "id": "loc.study",
  "title": "书房",
  "exits": [
    {
      "to": "loc.hall",
      "via": "房门"
    }
  ],
  "contents": [
    "item.desk_lock",
    "item.ledger"
  ]
}
意思 给谁 例子
id 编号 程序 loc.study
title 名称 界面 书房
exits 出口列表 程序 见出口
contents 开场容纳的道具编号 程序 item.ledger

出口 见专页

从本房间到另一房间。可带条件。

{
  "to": "loc.hall",
  "via": "房门"
}
意思 给谁 例子
to 通向哪个房间 程序 loc.hall
via 经过什么 界面 房门
blocked_unless 不满足则过不去 程序 已有钥匙

道具 见专页

总表里的一件东西。界面用名称,程序用编号。

{
  "id": "item.ledger",
  "name": "黑色账本",
  "description": "黑皮封面,边角磨白。夹页里夹着一张薄纸。",
  "at": "loc.study",
  "contains": [],
  "takeable": true,
  "actions": [
    {
      "verb": "观察",
      "need": [
        "item.desk_lock:open"
      ]
    },
    {
      "verb": "取走",
      "need": [
        "item.desk_lock:open"
      ],
      "take": true
    },
    {
      "verb": "阅读",
      "need": [
        "item.ledger:held"
      ],
      "reveals": [
        "fact.dock_time"
      ],
      "resource": {
        "san": -5
      }
    }
  ],
  "keeper": {
    "notes": "没打开锁时,不能念夹页。",
    "secrets": [
      "港口交易在凌晨三点"
    ],
    "enables": [
      "可去码头"
    ],
    "related": [
      {
        "kind": "地点",
        "name": "书房"
      },
      {
        "kind": "地点",
        "name": "码头"
      },
      {
        "kind": "事件",
        "name": "读懂交易时间"
      }
    ]
  }
}
意思 给谁 例子
id 编号 程序 item.ledger
name 名称 双方 黑色账本
description 说明。观察之后给玩家 玩家 黑皮封面…
at 开场位置 程序 loc.study
contains 里面有哪些道具 程序 []
takeable 能不能拿进背包 程序 true
actions 可做的事 程序、守秘人 见动作
keeper 只给守秘人的备注与相关 守秘人 见守秘人

道具动作 见专页

对这件道具能做的一步。检定难度写在这里,不靠模型报。

{
  "verb": "阅读",
  "need": [
    "item.ledger:held"
  ],
  "reveals": [
    "fact.dock_time"
  ],
  "resource": {
    "san": -5
  }
}
意思 给谁 例子
verb 做什么 双方 观察 / 检定 / 取走 / 阅读 / 使用
skill 用哪项技能 程序 开锁
dc 百分检定难度 程序 60
dc20 二十面检定难度 程序 15
need 先要满足什么 程序 item.desk_lock:open
reveals 做成后揭开哪些线索 程序 fact.dock_time
opens 做成后哪些东西可取 程序 item.ledger
take 是否把本道具放进背包 程序 true
resource.san 理智加减 程序 -5

守秘人栏 见专页

玩家对话里不念。模型查表时用。

{
  "notes": "没打开锁时,不能念夹页。",
  "secrets": [
    "港口交易在凌晨三点"
  ],
  "enables": [
    "可去码头"
  ],
  "related": [
    {
      "kind": "地点",
      "name": "书房"
    }
  ]
}
意思 给谁 例子
notes 备注 守秘人 不能念夹页
secrets 未揭开的秘密 守秘人 港口交易在凌晨三点
enables 做成后能推动什么 守秘人 可去码头
related 相关事件或地点 守秘人 见相关

检定提议 见专页

模型只许传这三项。不准带点数或成败。

{
  "who": "林晚",
  "skill": "开锁",
  "target": "书桌锁"
}
意思 给谁 例子
who 谁来检定 模型 → 程序 林晚
skill 什么技能 模型 → 程序 开锁
target 对着哪件,可空 模型 → 程序 书桌锁

检定结果 见专页

程序掷骰、比对后交回。界面按这张画画。

{
  "who": "林晚",
  "skill": "开锁",
  "target": "书桌锁",
  "skillValue": 45,
  "die": "1d100",
  "roll": 42,
  "dc": 60,
  "ok": false,
  "outcome": "failure"
}
意思 给谁 例子
who 程序 林晚
skill 技能名 程序 开锁
target 目标 程序 书桌锁
skillValue 卡上的技能值 程序 45
die 用哪颗骰 程序 1d100
roll 掷出的点数 程序 42
dc 难度 程序 60
ok 是否成功 程序 false
outcome 成败字面 程序 failure

条件 见专页

对着已提交状态打勾。成立则同一笔提交改状态。

{
  "when": {
    "all": [
      {
        "check": {
          "skill": "开锁",
          "result": "失败"
        }
      },
      {
        "clock": {
          "id": "house.minutes",
          "gte": 3
        }
      }
    ]
  },
  "then": [
    {
      "move": {
        "who": "npc.landlady",
        "to": "loc.hall"
      }
    },
    {
      "set_flag": "alarm.raised"
    }
  ]
}
意思 给谁 例子
when 何时成立 程序 见判断
when.all 并且 程序 两条都要
when.any 或者 程序 一条即可
when.not 取反 程序 不成立才算
check 某次检定的结果 程序 开锁失败
clock 时间是否已过 程序 已过三分钟
then 成立后改什么 程序 见改动
move 谁到哪 程序 女房东到门厅
set_flag 加上哪条标记 程序 alarm.raised

关键情节 见专页

剧情不是长文,是若干情节及其状态。

{
  "id": "read_ledger",
  "title": "读懂交易时间",
  "status": "available",
  "ready_when": "背包里有账本",
  "done_then": [
    "fact.dock_time",
    "ending.can_go_docks"
  ]
}
意思 给谁 例子
id 编号 程序 read_ledger
title 名称 界面 读懂交易时间
status 状态 双方 locked / available / done / failed / replaced
ready_when 何时可进行 程序 背包里有账本
done_then 完成后记下什么 程序 可去码头

存档 见专页

能接着玩的一份。聊天记录不当正式读档。

{
  "scenario": "寄宿公寓账本",
  "turn": 4,
  "state": {
    "pc_location": "loc.study",
    "hp": 11,
    "san": 60,
    "inventory": [
      "item.ledger"
    ],
    "flags": [
      "alarm.raised",
      "study_unlocked",
      "ending.can_go_docks"
    ],
    "known_facts": [
      "fact.lock_dc",
      "fact.dock_time"
    ],
    "clock": {
      "house.minutes": 6
    },
    "item_at": {
      "item.ledger": "inv.pc"
    },
    "npc_at": {
      "npc.landlady": "loc.hall"
    }
  },
  "events": [
    {
      "id": 1,
      "type": "move",
      "from": "loc.hall",
      "to": "loc.study"
    },
    {
      "id": 2,
      "type": "check",
      "skill": "开锁",
      "roll": 42,
      "dc": 60,
      "ok": false
    }
  ]
}
意思 给谁 例子
scenario 剧本名 双方 寄宿公寓账本
turn 回合 程序 4
state 当前状态 程序 见下
state.pc_location 调查员在哪 程序 loc.study
state.hp 生命值 双方 11
state.san 理智 双方 60
state.inventory 背包 双方 item.ledger
state.flags 标记 程序 alarm.raised
state.known_facts 已知线索 双方 fact.dock_time
state.clock 时间 程序 已过 6 分钟
state.item_at 每件道具在哪 程序 账本在背包
state.npc_at 每个人在哪 程序 女房东在门厅
events 只追加的事件记录 程序 见事件

事件记录 见专页

一条只追加、不改写。摘要须引用编号。

{
  "id": 2,
  "type": "check",
  "skill": "开锁",
  "roll": 42,
  "dc": 60,
  "ok": false
}
意思 给谁 例子
id 编号 程序 2
type 种类 程序 move / check / trigger / item_moved / fact_known / resource
from / to 从哪到哪 程序 门厅 → 书房
skill / roll / dc / ok 检定细节 程序 开锁 42 / 60 失败
item 哪件道具 程序 item.ledger
fact 哪条线索 程序 fact.dock_time
san 理智变化 程序 -5

事件开关 见专页

全局真假。开或关。和 RPG Maker 的开关一样。

{
  "id": "sw.alarm",
  "name": "女房东已警戒",
  "on": false
}
意思 给谁 例子
id 编号 程序 sw.alarm
name 名称 界面、守秘人 女房东已警戒
on 开还是关 程序 false

独立开关 见专页

只属于某一个事件。和 RPG Maker 的独立开关 A/B/C/D 一样。

{
  "event": "ev.desk",
  "slot": "A",
  "on": true
}
意思 给谁 例子
event 属于哪个事件 程序 ev.desk
slot 哪一格 程序 A / B / C / D
on 开还是关 程序 true

变量 见专页

一个数字。和 RPG Maker 的变量一样。用来记时间、次数。

{
  "id": "var.minutes",
  "name": "屋里过了几分钟",
  "value": 3
}
意思 给谁 例子
id 编号 程序 var.minutes
name 名称 界面 屋里过了几分钟
value 当前数字 程序 3

事件页 见专页

同一事件可有多页。出现条件都满足的页里,页码最大的生效。和 RPG Maker 一样。

{
  "event": "ev.landlady",
  "page": 2,
  "when": {
    "switch": "sw.alarm",
    "on": true
  },
  "at": "loc.hall",
  "description": "站在门厅警戒"
}
意思 给谁 例子
event 属于哪个事件 程序 ev.landlady
page 页码,大的优先 程序 2
when 出现条件 程序 开关开着
when.switch 要看哪只事件开关 程序 sw.alarm
when.self 要看哪格独立开关 程序 A
when.variable 变量要达到多少 程序 var.minutes >= 3
when.item 是否持有某道具 程序 item.ledger
at 这一页人在哪 程序 loc.hall
description 内容描述 守秘人 站在门厅警戒