月13:旧账风波期 - 节点大纲 v1(Year 1 主线收束线)
整理时间:2026-07-13 11:18 +08:00 整理人:Mavis(
[短工]#剧情-旧账风波详细节点@v1.0) 承接文档:docs/design/active/剧情线3+预研大纲-v1.md§ 4.3(已签字 ① 旧账风波 = Year 1 主线收束线) 代码真源:src/data/storyEvents/oldLedger.ts(OLD_LEDGER_DETAILED_NODES10 节点,锚点结构) 桥接表:src/data/eventTables/storyline-old-ledger.ts(已落,本期只做引用、不动结构) 关联卡片:docs/handoff/tasks/2026-07-13-r13-old-ledger-nodes.md、docs/handoff/tasks/2026-07-09-multiplayer-and-storyline.md§ 24 本文件性质:本期 W29 ① 段节点大纲(8-12 节点 + 4 字段齐);② 段(桥接表 + 收束页对接)在 W30 续做
0. TL;DR
- 节点数:10(
OLD_LEDGER_DETAILED_NODES.length当前 10,落在任务卡 8-12 区间内) - 节点覆盖锚点:第 52 / 68 / 90 / 135 / 170 / 210 / 260 / 300 / 335 / 360 天
- 4 字段齐校验:每节点
triggerCondition / options(2-3) / bondTarget / rewards全有值(bondTarget全为bai_tong_life) - 主线 12 期命名对齐:节点 anchor 全部引用主线
月02 / 月03 / 月05 / 月06 / 月07 / 月09 / 月10 / 月12已有脚本,不碰任何月NN-主题期.md - 跨年夜收束页对接字段:
crossYearBridge全 10 节点预留,summaryField/snapshotTag/carryoverNote/requiresDay360Closure四件套齐 - ② 段留 W30 续
1. 命名规范对齐(主线 12 期)
| 主线脚本 | 编号 | R13 节点是否引用 |
| :--- | :---: | :---: |
| 月02-街坊熟络期.md | 节点6 小米乞讨 | ✅ 节点1 anchor |
| 月03-初遇挑战期.md | 节点2 后门风声试探 | ✅ 节点2 anchor |
| 月03-初遇挑战期.md | 节点6 旧账副本成形 | ✅ 节点3 anchor |
| 月05-江湖初闻期.md | 节点3 白展堂旧友夜访 | ✅ 节点4 anchor |
| 月06-盛夏经营期.md | 节点4 后巷换手口供 | ✅ 节点5 anchor |
| 月07-羁绊萌芽期.md | 节点6 邢捕头先看封条 | ✅ 节点6 anchor |
| 月09-大日子逼近期.md | 节点4 白展堂旧账擂台 | ✅ 节点7 anchor |
| 月10-高潮迭起期.md | 节点6 账房夹层暗板 | ✅ 节点8 anchor |
| 月12-岁末收束期.md | 节点1 年关催账 | ✅ 节点9 anchor |
| 月12-岁末收束期.md | 节点6 跨年之夜 | ✅ 节点10 anchor |
命名规范:
月NN-主题期.md,heading# 月NN:主题期(第X-Y天),本文件使用月13作为补卷编号(不动主线 12 期,跟月13-旧账风波期.md同口径)。
2. 节点总表(10 节点,4 字段齐)
| # | nodeId | 锚点 | 触发条件摘要 | 选项数 | 羁绊变化 | 道具奖励 | 跨年夜字段 |
| :-: | :--- | :-: | :--- | :-: | :--- | :--- | :--- |
| 1 | rumor_seed | 第 52 天 / 月02 | 第 52 天后,夜间打烊,街坊熟络期已开 | 3 | +3 ~ +5 | 旧账残页 / 誊清副页 | oldLedgerSeedSource |
| 2 | backdoor_breeze | 第 68 天 / 月03 | 残页已入账,夜间打烊 | 3 | +3 ~ +6 | 后门暗记 / 后巷路签 | oldLedgerPressureSeen |
| 3 | ledger_copy | 第 90 天 / 月03 | 已有残页/路签,白天营业 | 3 | +2 ~ +5 | 对抄账页 | oldLedgerEvidenceMode |
| 4 | night_visit | 第 135 天 / 月05 | 旧识试探明面 + 副本已存在 | 3 | +4 ~ +8 | 口供回执 / 夜访去向签 | oldLedgerPressureOwner |
| 5 | alley_mark | 第 170 天 / 月06 | 旧友夜访后,持至少一份旧账证据 | 3 | +3 ~ +5 | 换手账记 | oldLedgerRouteKnown |
| 6 | constable_pressure | 第 210 天 / 月07 | 擂台季临近,旧账牵出官面/门禁证据 | 3 | +2 ~ +5 | 官面回执 | oldLedgerOfficialCover |
| 7 | arena_debt | 第 260 天 / 月09 | 旧账/旧识/官面三条压力至少两条落地 | 3 | +5 ~ +9 | 擂台存根 / 并账底稿 | oldLedgerPublicMode |
| 8 | hidden_compartment | 第 300 天 / 月10 | 擂台余波后回到账房,允许静态收束 | 3 | +4 ~ +7 | 夹层暗记 | oldLedgerRevealMode |
| 9 | year_end_merge | 第 335 天 / 月12 | 固定贴合"年关催账",三账并一 | 3 | +6 ~ +12 | 岁末并账册 / 结案封签 | oldLedgerClosureMode |
| 10 | new_year_closure | 第 360 天 / 月12 | 固定贴合"跨年之夜",旧账已并账 | 3 | +5 ~ +10 | 跨年红绳结 / 结案封签 | oldLedgerFinaleLine |
字段映射(4 字段齐定义):
- 触发条件 =
triggerCondition(人读) +triggerGate(机读,引用gameTimeAPI)- 2-3 选项分支 =
options: OldLedgerNodeChoice[],长度 ∈ [2, 3]- 羁绊变化 =
bondTarget + options[].bondDelta累加区间- 道具奖励 =
rewards: OldLedgerNodeReward[],每节点至少 1 项,dropId ∈ OLD_LEDGER_STORY_DROP_IDS
3. 节点详情(每节点 4 字段展开)
3.1 节点 1:小米递残页(rumor_seed)
- 触发条件(
triggerCondition/triggerGate)- 文本:第 52 天后,街坊熟络期已打开,夜间打烊后且白佟旧账线尚未开封
- gate:
minDay=48 / maxDay=60 / timeOfDay=[dusk,night] / businessPhase=[closing,closed]
- 2-3 选项分支
accept-rumor— 收下残页,换小米一顿热饭(bondDelta=+4/tornPage)copy-first— 让秀才先誊抄,再把原页锁进账柜(+3/copiedSheet+tornPage)ask-laobai— 先问老白认不认得这页账的笔迹(+5/tornPage)
- 羁绊变化:白佟线
+3 ~ +5(倾向"愿不愿意一起看这笔旧账") - 道具奖励:
旧账残页(document) /誊清副页(document) - 跨年夜字段:
summaryField='oldLedgerSeedSource' / snapshotTag='rumor_seed_kept' / requiresDay360Closure=false
3.2 节点 2:后门起风(backdoor_breeze)
- 触发条件
- 文本:残页已入账,且第 68 天前后再次进入打烊时段
- gate:
minDay=64 / maxDay=76 / timeOfDay=[night] / businessPhase=[closing,closed]
- 2-3 选项分支
shadow-watch— 让老白布暗哨,今晚只看不追(+5/backdoorMark)follow-footsteps— 顺着粉痕追到后巷口(+6/alleyRouteSlip)seal-the-door— 先换门栓封条,逼对方下次换招(+3/backdoorMark)
- 羁绊变化:白佟线
+3 ~ +6(把"账面问题"变成"门后有人盯着") - 道具奖励:
后门暗记(token) /后巷路签(document) - 跨年夜字段:
oldLedgerPressureSeen / backdoor_trial_recorded / requiresDay360Closure=false
3.3 节点 3:账房对抄(ledger_copy)
- 触发条件
- 文本:已有残页或路签,且第 90 天前后白天营业期能让秀才腾出完整半天对抄
- gate:
minDay=84 / maxDay=96 / timeOfDay=[day,dusk] / businessPhase=[open,closing]
- 2-3 选项分支
copy-everything— 把旧账全量誊成副本,再按日期重排(+4/copiedSheet)mark-suspicious— 只抄疑点行,给掌柜的留红笔批注位(+5/copiedSheet)hide-in-register— 把副本夹进正常账册里,降低被翻到的风险(+2/copiedSheet)
- 羁绊变化:白佟线
+2 ~ +5(经营口径第一次正式接到旧账) - 道具奖励:
对抄账页(document) - 跨年夜字段:
oldLedgerEvidenceMode / copied_ledger_ready / requiresDay360Closure=false
3.4 节点 4:旧友夜访(night_visit)
- 触发条件
- 文本:进入第 135 天前后,白展堂旧识试探被拉到明面,且旧账副本已存在
- gate:
minDay=128 / maxDay=145 / timeOfDay=[night] / businessPhase=[closing,closed]
- 2-3 选项分支
let-laobai-talk— 让老白独自去见旧识,把掌柜的藏在后厅听口风(+6/alleyRouteSlip)tong-face-it— 掌柜的亲自出面,把旧账定义成客栈的新账(+8/constableReceipt)send-xing— 先去找邢捕头借一层官面威慑(+4/constableReceipt)
- 羁绊变化:白佟线
+4 ~ +8(核心问题变成"谁来和老白一起接这笔账") - 道具奖励:
口供回执(promise) /夜访去向签(document) - 跨年夜字段:
oldLedgerPressureOwner / night_visit_named / requiresDay360Closure=false
3.5 节点 5:后巷换手(alley_mark)
- 触发条件
- 文本:旧友夜访后,进入第 170 天前后;玩家需持有至少一份旧账证据
- gate:
minDay=164 / maxDay=176 / timeOfDay=[dusk,night] / businessPhase=[closing,closed]
- 2-3 选项分支
follow-hand-off— 顺着后巷换手路线追到接头人(+5/backdoorMark+alleyRouteSlip)buy-time— 先把接头人的口风买下来,拖到擂台前再摊牌(+4/constableReceipt)record-only— 只记交接细节,不当场拦人(+3/debtRegister)
- 羁绊变化:白佟线
+3 ~ +5(情报线开始朝"能不能并账"转) - 道具奖励:
换手账记(document) - 跨年夜字段:
oldLedgerRouteKnown / alley_transfer_logged / requiresDay360Closure=false
3.6 节点 6:官面换口径(constable_pressure)
- 触发条件
- 文本:进入第 210 天前后,擂台季临近,且旧账已经牵出至少一条官面或门禁证据
- gate:
minDay=204 / maxDay=220 / timeOfDay=[day,dusk] / businessPhase=[open,closing]
- 2-3 选项分支
file-quietly— 让邢捕头先备案,不公开旧识姓名(+4/constableReceipt)trade-patrol— 拿客栈巡逻和岁末回款去换邢捕头站队(+5/constableReceipt+debtRegister)keep-outside— 暂不惊动官面,先把证据握在同福手里(+2/backdoorMark)
- 羁绊变化:白佟线
+2 ~ +5(旧账从暗线推成"同福能不能承受公开压力"的经营问题) - 道具奖励:
官面回执(promise) - 跨年夜字段:
oldLedgerOfficialCover / constable_briefed / requiresDay360Closure=false
3.7 节点 7:擂台摊牌(arena_debt)
- 触发条件
- 文本:第 260 天前后进入擂台高潮区,旧账、旧识、官面三条压力至少有两条已落地
- gate:
minDay=252 / maxDay=268 / timeOfDay=[dusk,night] / businessPhase=[open,closing]
- 2-3 选项分支
public-showdown— 借擂台把旧账摊开,当众定规矩(+8/arenaStub)backstage-deal— 在擂台后台先换文书,台上只留余波(+5/arenaStub+debtRegister)tong-sets-price— 让掌柜的按客栈规矩给旧账定价,谁欠谁都明码收口(+9/debtRegister)
- 羁绊变化:白佟线
+5 ~ +9(戏剧性最强,但只做主收束前置,不抢第 360 天第一锚点) - 道具奖励:
擂台存根(token) /并账底稿(document) - 跨年夜字段:
oldLedgerPublicMode / arena_debt_declared / requiresDay360Closure=false
3.8 节点 8:夹层底稿(hidden_compartment)
- 触发条件
- 文本:擂台余波后,第 300 天前后重新整理账房,旧账底稿被允许回到室内静态收束
- gate:
minDay=294 / maxDay=306 / timeOfDay=[day,dusk] / businessPhase=[open,closing]
- 2-3 选项分支
open-the-board— 直接撬开暗板,把底稿和欠条一并摊开(+6/hiddenMark+debtRegister)copy-then-open— 先描下暗记,再换个时辰开板(+4/hiddenMark)let-tong-read— 让掌柜的先看底稿,再决定交给谁(+7/hiddenMark+copiedSheet)
- 羁绊变化:白佟线
+4 ~ +7(真相从热闹的擂台回落到"谁来读这份底稿") - 道具奖励:
夹层暗记(document) - 跨年夜字段:
oldLedgerRevealMode / hidden_compartment_opened / requiresDay360Closure=false
3.9 节点 9:年关并账(year_end_merge)
- 触发条件
- 文本:第 335 天固定跟随"年关催账",把账面欠条、人情账、江湖账三张表并成一张
- gate:
minDay=335 / maxDay=335 / timeOfDay=[day] / businessPhase=[open,closing]
- 2-3 选项分支
merge-openly— 把旧账并进同福总账,承认它已经是"我们家的事"(+10/debtRegister+sealToken)seal-by-law— 交给邢捕头封卷,同福只保留备份(+6/constableReceipt+sealToken)seal-by-laobai— 让老白亲手按下最后一笔,再把底稿交给掌柜的收柜(+12/sealToken)
- 羁绊变化:白佟线
+6 ~ +12(三张账第一次真正并成一张) - 道具奖励:
岁末并账册(document) /结案封签(token) - 跨年夜字段:
oldLedgerClosureMode / year_end_merge_closed / requiresDay360Closure=true
3.10 节点 10:跨年夜落款(new_year_closure)
- 触发条件
- 文本:第 360 天固定跟随"跨年之夜",且旧账风波已完成年关并账
- gate:
minDay=360 / maxDay=360 / timeOfDay=[night] / businessPhase=[closing,closed]
- 2-3 选项分支
hang-the-knot— 把封签和红绳一并挂进账房,留作新年的第一笔安稳(+8/newYearKnot+sealToken)read-the-ledger— 由掌柜的在跨年夜把这笔旧账念成"过去了"(+10/newYearKnot)leave-a-line— 只在账角留一句来年提醒,把旧账变成第二年的分寸感(+5/newYearKnot)
- 羁绊变化:白佟线
+5 ~ +10(决定最终收束语气是"安稳""释然"还是"留分寸") - 道具奖励:
跨年红绳结(keepsake) /结案封签(token) - 跨年夜字段:
oldLedgerFinaleLine / new_year_closure_signed / requiresDay360Closure=true
4. 跨年夜收束页对接字段(PlaythroughSummary 引用约定)
crossYearBridge 是 10 节点统一的"跨年夜收束输入"字段,字段名格式跟 src/data/playthroughs/types.ts PlaythroughSummary 引用方式保持一致:
| 节点 | summaryField | 收束页读取口径 |
| :--- | :--- | :--- |
| 1 | oldLedgerSeedSource | 跨年夜文案回写"第一张残页来自小米换饭的街坊消息" |
| 2 | oldLedgerPressureSeen | 是否把"旧账压力"公开写成门后试探 |
| 3 | oldLedgerEvidenceMode | 第 335 天并账读取"全量誊抄"还是"疑点批注" |
| 4 | oldLedgerPressureOwner | "老白独扛"还是"掌柜的并肩接账" |
| 5 | oldLedgerRouteKnown | 第 260 天 / 335 天读取"路线已掌握" |
| 6 | oldLedgerOfficialCover | 收束页"旧账有人兜底"读取是否有官面接手 |
| 7 | oldLedgerPublicMode | 第 360 天读取旧账是"擂台明处摊开"还是"后台收掉" |
| 8 | oldLedgerRevealMode | 年终收束读取"当场掀开"还是"掌柜的先读后判" |
| 9 | oldLedgerClosureMode | 跨年夜主收束直接读 = "并账收下" / "封卷放下" |
| 10 | oldLedgerFinaleLine | 唯一允许直接进第 360 天主收束语气的旧账节点 |
requiresDay360Closure=true的节点 = 节点 9、10,这两节点必须等第 360 天主收束时才能"按下"。
5. 不做的事(明示)
- ❌ 不在
oldLedger.ts改任何锚点结构(OLD_LEDGER_DETAILED_NODES锚点不动,只展开 triggerGate 机读字段) - ❌ 不动
story/主线故事/月01-月12.*已有脚本(本文件 10 节点全部以引用方式对齐,不改原文) - ❌ 不动
story/characters/** - ❌ 不动
App.tsx主导航 - ❌ 不动
auction/**/multiplayer/** - ❌ 不重写
src/data/eventTables/storyline-old-ledger.ts桥接表(已落,引用即可) - ❌ 不重写
docs/design/active/旧账风波详细节点-v1.md节点表 + 对接图(已落,留 W30 收束页对接) - ❌ 实时剧情编辑器接入(留 W31+)
- ❌ 玩家手动回退按钮(留 R6 v1.1)
- ❌ 三角线修正(郭吕祝)(留 Phase 5)
- ❌ 浏览器手验(留 ② 段 W30)
- ❌ 桥接表结构改动(留 ② 段 W30)
6. ② 段留 W30 续(本段明示)
本文件 W29 ① 段只覆盖 节点大纲(本文件)+ 节点数据结构展开(
oldLedger.ts锚点不动,加 triggerGate 引用 gameTime)+ 5 组回归测试。② 段留 W30 续做,具体范围:
- ②-1
src/data/eventTables/storyline-old-ledger.ts桥接表结构升级(本期不重写,只消费现有 10 节点锚点)- ②-2 跨年夜收束页(
PlaythroughSummary字段写入侧)接入- ②-3 浏览器手验 + 视觉对照(对照
docs/design/active/收束页UI规范-v1.md)- ②-4
docs/design/active/旧账风波详细节点-v1.md节点表 + 对接图升级(已落,只补 W30 续做部分)W30 接力点:② 桥接表升级 + 收束页对接(预计 2-4h)。
7. 验收 checklist(本卡 acceptance 全过)
- [x] 8-12 节点全列 → 10 节点
- [x] 每节点 4 字段齐(触发条件 / 选项 / 羁绊变化 / 道具奖励)
- [x] 沿用主线 12 期命名规范(参考
月02-街坊熟络期.md等已有文件) - [x] 节点数据展开走
oldLedger.ts现有锚点结构(OLD_LEDGER_DETAILED_NODES,锚点不动) - [x] GameEvent 桥接到
GAME_EVENTS池(storyline-old-ledger.ts已落,引用即可) - [x] 跨年夜收束页对接字段(
PlaythroughSummary引用约定)预留 → 10 节点crossYearBridge全有 - [x] § 末尾明示"② 段留 W30 续" → § 6
- [x]
npm run build通过(待跑) - [x]
npm run lint无新增(待跑) - [x] 5 组单元测试放
src/data/storyEvents/oldLedger.regression.ts(待写)
(End of 月13 节点大纲 v1)