№ · 完成设计 CH.06.23
主页 · ✅ 完成设计 · 官府抄缴库房竞标会 v1

官府抄缴库房竞标会 v1

📅 2026-06-23 · 📦 9.9 KB · ✅ 完成设计 · 📝 MD 文档 🏷️ Buff🏷️ 装备🏷️ 设计🏷️ 联机🏷️ 拍卖🏷️ 终局

本文只定义第一阶段的玩法数据、规则骨架和序列化状态,不承接复杂联机 UI、手机端交互壳和 PeerLobby 主流程改造。

1. 当前边界

  • 只做 src/data/auction/* 静态表和 src/utils/auctionRules.ts 纯规则。
  • 不改 src/App.tsxsrc/components/*src/index.css
  • 不接账号、多周目、Buff、客栈状态、成就模块。
  • 只预留 P2P 字段,不把拍卖接进现有双人直连消息流。

2. 玩法回合

2.1 入场

  • 每局固定收 100 文 入场费。
  • 房主创建拍卖局时生成可序列化 AuctionState,并扣除每席入场费。
  • 参与人数第一阶段按 1-4 人规则计算,但不要求现有联机立刻支持四人房。

2.2 观察

  • 默认生成 4 只封条箱,进入 observe 阶段。
  • 每只箱子由三层静态表拼出:
    • 箱型 AuctionBoxType
    • 封条线索 AuctionSealClue
    • 内容物 AuctionContent
  • 五名角色技能各自产生一条结构化观察结果 AuctionLotObservation

2.3 出价

  • 观察结束后切换到 bidding
  • 当前箱子的最低出价规则:
    • 首次出价不低于 openingBid
    • 后续加价不低于 currentBid + minimumRaise
  • 若倒计时小于等于 3 秒时发生有效出价,倒计时自动回弹到 4 秒。
  • budgetMultiplierlock_next_bid 会直接影响席位下一轮是否还能出价。

2.4 封箱

  • 落槌后进入 sealed
  • 只锁定赢家和成交价,不立刻结算官府抽成。

2.5 开箱

  • revealActiveAuctionLot 将箱子推进到 revealed,公开:
    • 真正内容
    • 黑市估值
    • 官府风险
    • 整蛊效果

2.6 道具反转

  • 第一阶段保留 4 类反转:
    • lock_next_bid:哭哭糖葫芦,指定一席下一箱禁拍
    • budget_cut:陈年臭豆腐,全场下一箱预算打折
    • official_fine:捕头戒尺,赢家立刻被罚,罚款值来自 prankEffect.coinsDelta
    • suspicion_mark:伪造回执单,赢家疑点暴涨
  • 若反转需要手选目标,会进入 pendingDecisions,由后续 UI 再补交互。

2.7 结算

  • 单箱结算 settleActiveAuctionLot 负责计算:
    • 成交价 purchasePrice
    • 黑市估值 grossValue
    • 官府抽成 officialFee
    • 即时罚款 immediateFine(当前由 official_fine -> prankEffect.coinsDelta 显式推导,不再解析描述文本)
    • 账面净收益 netCoinsDelta
    • 疑点增量 suspicionDelta
    • 名望增减 reputationDelta
    • 风险级别 AuctionRiskLevel
  • 整局结算 finalizeAuctionSession 汇总所有箱子的收益、亏损、抽成和风险。

2.8 作弊 / 官府风险

  • 第一阶段不做复杂作弊博弈,只保留结构化风险账本 riskLedger
  • 风险来源先收口为五类:
    • overbid
    • contraband
    • prank
    • cheat
    • official_fee
  • 后续如果要做“偷看封条”“串标”“假意抬价”,直接复用 riskLedgerpendingDecisions 扩展。

3. 静态表落点

  • src/data/auction/config.ts
    • 基础规则常量、最低加价阶梯、倒计时规则
  • src/data/auction/boxTables.ts
    • 箱型表、封条线索表
  • src/data/auction/contentTables.ts
    • 稀有物、垃圾物、整蛊物
  • src/data/auction/participants.ts
    • AI 席位模板、角色技能修正

3.1 箱型表

| 箱型 ID | 名称 | 起拍区间 | 基础官府风险 | 稀有/垃圾/整蛊权重 | 偏好标签 | | --- | --- | --- | --- | --- | --- | | smuggled_iron_crate | 官府缉私生铁箱 | 70-108 | 8 | 5 / 2 / 1 | weapon defense metal | | silk_seizure_case | 江南名门没收织锦箱 | 60-96 | 4 | 4 / 2 / 2 | luxury document business | | western_lacquer_chest | 关外走私西域铁漆匣 | 68-102 | 12 | 3 / 2 / 4 | contraband trick spice | | mud_sealed_jar | 御膳房流落秘炼砂瓮 | 42-74 | 6 | 2 / 3 / 3 | ingredient food trick | | evidence_bundle_box | 衙门封证文牒箱 | 55-88 | 14 | 3 / 3 / 2 | document token contraband |

3.2 封条线索表

| 线索 ID | 名称 | 估值偏移 | 风险修正 | 观察标签 | 含义 | | --- | --- | --- | --- | --- | --- | | fresh_vermilion | 朱砂未干 | +12 | +4 | fresh high_value | 新近补封,像新货 | | cracked_wax | 蜡封有裂 | -10 | +2 | tampered prank | 像被偷看后再封回 | | oil_stained | 边角见油 | +8 | +1 | metal weapon | 像兵器和金属件进出过 | | iron_dust | 落灰带铁屑 | +15 | +6 | heavy rare | 重量扎实,像有硬货 | | mildew_corner | 角落发霉 | -14 | +0 | spoiled junk | 久置受潮,偏烂货 | | double_official_stamp | 双重官印 | +18 | +10 | evidence contraband | 值钱和惹祸通常一起上 |

3.3 内容物表

稀有物

| 内容 ID | 名称 | 黑市估值 | 风险 | 奖励蓝图 | 标签 | | --- | --- | --- | --- | --- | --- | | rare_black_iron_cleaver | 掌勺玄铁菜刀 | 260 | 4 | equipment: base_knife / epic | weapon kitchen metal | | rare_stolen_thief_token | 盗圣旧玉牌 | 320 | 16 | eventDrop: auction_thief_token | token contraband bai | | rare_gold_abacus | 纯金金玉算盘 | 300 | 8 | equipment: base_abacus / epic | business luxury document | | rare_western_spice_cache | 西域香料匣 | 210 | 6 | coins: 210 | ingredient food luxury | | rare_crossbow_parts | 军用机括弩件 | 340 | 18 | equipment: base_bolt / legendary | weapon defense contraband | | rare_silk_armor_lining | 织锦软甲内衬 | 280 | 9 | equipment: base_boots / epic | luxury defense metal | | rare_secret_ledger_page | 盐道暗账残页 | 250 | 20 | eventDrop: auction_secret_ledger_page | document business contraband |

垃圾物

| 内容 ID | 名称 | 黑市估值 | 风险 | 标签 | | --- | --- | --- | --- | --- | | junk_charred_flatbread | 李大嘴烤焦的麦饼 | 5 | 0 | food junk | | junk_fake_manual | 假的葵花宝典抄本 | 12 | 1 | document junk | | junk_rotten_deed | 库房破门板契 | 2 | 0 | document junk | | junk_faded_tassel | 邢捕头遗落官帽穗 | 8 | 2 | token junk | | junk_mud_figurine | 莫小贝泥捏手办 | 15 | 0 | decor junk | | junk_cracked_wine_seal | 碎口黄酒封泥 | 6 | 0 | food junk |

整蛊物

| 内容 ID | 名称 | 黑市估值 | 风险 | 反转效果 | | --- | --- | --- | --- | --- | | prank_crying_tanghulu | 哭哭糖葫芦 | 25 | 2 | lock_next_bid,赢家指定一席下一箱禁拍 | | prank_stinky_tofu | 陈年臭豆腐 | 18 | 1 | budget_cut,全场下一箱预算打 85 折 | | prank_bailiff_ruler | 捕头戒尺 | 30 | 10 | official_fineprankEffect.coinsDelta = -30,赢家立刻罚 30 文并增疑点 | | prank_forged_receipt | 伪造回执单 | 12 | 18 | suspicion_mark,赢家疑点暴涨并掉名望 |

3.4 角色技能修正表

| 角色 | 技能名 | 观察成本 | 稀有偏置 | 整蛊偏置 | 风险偏置 | 官府减压 | 抽成修正 | 专长 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 佟湘玉 | 掌柜闻封 | 12 | +0.18 | -0.04 | +0.04 | 2 | 0 | luxury business rare | | 白展堂 | 盗圣瞟锁 | 15 | +0.06 | +0.16 | +0.18 | 8 | +0.01 | weapon contraband trick | | 郭芙蓉 | 排山听箱 | 14 | +0.08 | -0.02 | +0.02 | 0 | 0 | heavy weapon metal | | 李大嘴 | 大嘴尝封 | 12 | +0.02 | +0.12 | +0.04 | 1 | 0 | food ingredient trick | | 吕秀才 | 秀才算底 | 18 | +0.01 | +0.04 | +0.12 | 3 | -0.02 | document business official |

4. 规则接口

  • createAuctionSession(options)
    • 建局、扣入场费、生成拍卖局状态
  • createAuctionLots(seed, count)
    • 按种子生成箱子、线索、内容和观察结果
  • beginAuctionBidding(state)
    • 从观察期进入竞价期
  • getAuctionObservation(lot, staffId) / estimateAuctionLot(lot, staffId)
    • 返回结构化估值结果
  • validateAuctionBid(state, input) / placeAuctionBid(state, input)
    • 校验加价是否合法并写入出价记录
  • getAuctionMinimumBid(state)
    • 读取当前箱子的最低合法出价
  • sealActiveAuctionLot(state)
    • 锁定当前箱子的成交价与赢家
  • revealActiveAuctionLot(state, targetParticipantId?)
    • 开箱并触发反转
  • resolveAuctionPendingDecision(state, pendingDecisionId, targetParticipantId)
    • 处理“赢家指定目标”的整蛊
  • assessAuctionLotRisk(lot, participant?, context?)
    • 汇总官府、赃货、整蛊、串标和超价风险
  • buildAuctionSyncEnvelope(state, channel, payload, actorId?)
    • 为房主权威同步预留标准消息外壳
  • settleActiveAuctionLot(state)
    • 产出单箱收益 / 亏损 / 风险
  • buildAuctionSettlementSummary(state)
    • 输出整局结算汇总快照
  • advanceAuctionLot(state) / finalizeAuctionSession(state)
    • 推进到下一箱,或汇总结局

5. 序列化状态

  • AuctionState
    • 主状态,后续可挂在 GameState.auction
  • AuctionParticipantState
    • 席位、预算乘区、疑点、名望改动、状态效果
  • AuctionLotState
    • 箱子、线索、观察、真实价值、赢家、开箱结果
  • AuctionBidRecord
    • 出价流水
  • AuctionPendingDecision
    • 等待玩家补选目标的整蛊决策
  • AuctionRiskRecord
    • 官府风险与作弊风险账本
  • AuctionSyncState / AuctionSyncEnvelope
    • 为房主权威同步预留的最小字段集

6. 后续集成点

  • UI 集成:
    • 观察期用 AuctionLotObservation 驱动“角色探查按钮”和估值面板。
    • 竞价期直接消费 validateAuctionBidplaceAuctionBid
    • 开箱页消费 revealActiveAuctionLotpendingDecisionssettleActiveAuctionLot
  • 主循环集成:
    • 未来切到拍卖 Tab 时,可比照设计稿暂停客栈营业 tick,但这一阶段不动主循环。
  • P2P 集成:
    • 房主广播 AuctionSyncEnvelope
    • 客机只发 action,不自行决定真值
    • 现有双人 PeerLobby 不改,等多人房与倒计时同步方案独立落地