№ · 主线剧情 CH.07.13
主页 · 📜 主线剧情 · 月13:旧账风波期 - 节点大纲 v1(Year 1 主线收束线)

月13:旧账风波期 - 节点大纲 v1(Year 1 主线收束线)

📅 2026-07-13 · 📦 16.7 KB · 📜 主线剧情 · 📝 MD 文档 🆕 14d 🏷️ 时间🏷️ 规范🏷️ Year1🏷️ 剧情

整理时间: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_NODES 10 节点,锚点结构) 桥接表src/data/eventTables/storyline-old-ledger.ts(已落,本期只做引用、不动结构) 关联卡片docs/handoff/tasks/2026-07-13-r13-old-ledger-nodes.mddocs/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 字段齐定义):

  1. 触发条件 = triggerCondition(人读) + triggerGate(机读,引用 gameTime API)
  2. 2-3 选项分支 = options: OldLedgerNodeChoice[],长度 ∈ [2, 3]
  3. 羁绊变化 = bondTarget + options[].bondDelta 累加区间
  4. 道具奖励 = 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 选项分支
    1. accept-rumor — 收下残页,换小米一顿热饭(bondDelta=+4 / tornPage)
    2. copy-first — 让秀才先誊抄,再把原页锁进账柜(+3 / copiedSheet + tornPage)
    3. 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 选项分支
    1. shadow-watch — 让老白布暗哨,今晚只看不追(+5 / backdoorMark)
    2. follow-footsteps — 顺着粉痕追到后巷口(+6 / alleyRouteSlip)
    3. 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 选项分支
    1. copy-everything — 把旧账全量誊成副本,再按日期重排(+4 / copiedSheet)
    2. mark-suspicious — 只抄疑点行,给掌柜的留红笔批注位(+5 / copiedSheet)
    3. 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 选项分支
    1. let-laobai-talk — 让老白独自去见旧识,把掌柜的藏在后厅听口风(+6 / alleyRouteSlip)
    2. tong-face-it — 掌柜的亲自出面,把旧账定义成客栈的新账(+8 / constableReceipt)
    3. 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 选项分支
    1. follow-hand-off — 顺着后巷换手路线追到接头人(+5 / backdoorMark + alleyRouteSlip)
    2. buy-time — 先把接头人的口风买下来,拖到擂台前再摊牌(+4 / constableReceipt)
    3. 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 选项分支
    1. file-quietly — 让邢捕头先备案,不公开旧识姓名(+4 / constableReceipt)
    2. trade-patrol — 拿客栈巡逻和岁末回款去换邢捕头站队(+5 / constableReceipt + debtRegister)
    3. 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 选项分支
    1. public-showdown — 借擂台把旧账摊开,当众定规矩(+8 / arenaStub)
    2. backstage-deal — 在擂台后台先换文书,台上只留余波(+5 / arenaStub + debtRegister)
    3. 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 选项分支
    1. open-the-board — 直接撬开暗板,把底稿和欠条一并摊开(+6 / hiddenMark + debtRegister)
    2. copy-then-open — 先描下暗记,再换个时辰开板(+4 / hiddenMark)
    3. 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 选项分支
    1. merge-openly — 把旧账并进同福总账,承认它已经是"我们家的事"(+10 / debtRegister + sealToken)
    2. seal-by-law — 交给邢捕头封卷,同福只保留备份(+6 / constableReceipt + sealToken)
    3. 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 选项分支
    1. hang-the-knot — 把封签和红绳一并挂进账房,留作新年的第一笔安稳(+8 / newYearKnot + sealToken)
    2. read-the-ledger — 由掌柜的在跨年夜把这笔旧账念成"过去了"(+10 / newYearKnot)
    3. 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)