官府抄缴库房竞标会 v1
本文只定义第一阶段的玩法数据、规则骨架和序列化状态,不承接复杂联机 UI、手机端交互壳和
PeerLobby主流程改造。
1. 当前边界
- 只做
src/data/auction/*静态表和src/utils/auctionRules.ts纯规则。 - 不改
src/App.tsx、src/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秒。 budgetMultiplier与lock_next_bid会直接影响席位下一轮是否还能出价。
2.4 封箱
- 落槌后进入
sealed。 - 只锁定赢家和成交价,不立刻结算官府抽成。
2.5 开箱
revealActiveAuctionLot将箱子推进到revealed,公开:- 真正内容
- 黑市估值
- 官府风险
- 整蛊效果
2.6 道具反转
- 第一阶段保留 4 类反转:
lock_next_bid:哭哭糖葫芦,指定一席下一箱禁拍budget_cut:陈年臭豆腐,全场下一箱预算打折official_fine:捕头戒尺,赢家立刻被罚,罚款值来自prankEffect.coinsDeltasuspicion_mark:伪造回执单,赢家疑点暴涨
- 若反转需要手选目标,会进入
pendingDecisions,由后续 UI 再补交互。
2.7 结算
- 单箱结算
settleActiveAuctionLot负责计算:- 成交价
purchasePrice - 黑市估值
grossValue - 官府抽成
officialFee - 即时罚款
immediateFine(当前由official_fine -> prankEffect.coinsDelta显式推导,不再解析描述文本) - 账面净收益
netCoinsDelta - 疑点增量
suspicionDelta - 名望增减
reputationDelta - 风险级别
AuctionRiskLevel
- 成交价
- 整局结算
finalizeAuctionSession汇总所有箱子的收益、亏损、抽成和风险。
2.8 作弊 / 官府风险
- 第一阶段不做复杂作弊博弈,只保留结构化风险账本
riskLedger。 - 风险来源先收口为五类:
overbidcontrabandprankcheatofficial_fee
- 后续如果要做“偷看封条”“串标”“假意抬价”,直接复用
riskLedger和pendingDecisions扩展。
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_fine,prankEffect.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驱动“角色探查按钮”和估值面板。 - 竞价期直接消费
validateAuctionBid和placeAuctionBid。 - 开箱页消费
revealActiveAuctionLot、pendingDecisions、settleActiveAuctionLot。
- 观察期用
- 主循环集成:
- 未来切到拍卖 Tab 时,可比照设计稿暂停客栈营业 tick,但这一阶段不动主循环。
- P2P 集成:
- 房主广播
AuctionSyncEnvelope - 客机只发 action,不自行决定真值
- 现有双人
PeerLobby不改,等多人房与倒计时同步方案独立落地
- 房主广播