卡牌:市场调研
skill_market_research 当前仅完成了:
- 加入随机技能池;
- 可以在技能节点被选中;
- 有新绘制图标;
- 有 Tooltip 设计说明;
- 能作为技能徽章显示。
但“选择后显示实时人数,并允许一次改选”的玩法逻辑尚未接入。
代码证据
1. Tooltip 明确标记为“设计中”
scripts/bullbear/Client.lua:830
当前内容仍是:
- 技能 · 侦察 + 改选 · 设计中
- “若倒计时未结束,可获得一次改选机会”
- “需要改选机制,真实效果待接入”
所以客户端配置本身就说明尚未实现。
2. 客户端选牌后立即锁定
scripts/bullbear/ClientUIPlaying.lua:740
Client.MakeChoice() 开头是:
luaif myChoice_ or mySpectating_ or not myAlive_ then return end
首次选择后 myChoice_ 已有值,后续点击会被直接拒绝。因此市场调研持有者目前也不能改选。
3. 服务端没有市场调研专用逻辑
scripts/bullbear/ServerGame.lua:334
Server_HandleChooseCard() 目前只是:
- 接收 Side;
- 写入 p.choice;
- 广播已选择;
- 检查是否全员完成;
- 全员完成后立即进入结算。
这里没有:
- 检查玩家是否持有 skill_market_research;
- 第一次选择后发送实时左右人数;
- 记录是否使用过改选;
- 限制最多改选一次;
- 改选成功事件;
- 消耗或阶段次数记录。
服务端实际上允许新请求覆盖 p.choice,但这不能算“已经支持改选”:
- 客户端根本不会发出第二次请求;
- 服务端没有验证玩家是否拥有市场调研;
- 没有“一次”的次数限制;
- 没有改选窗口;
- 可能在全员选完后立即结算;
- 这是普通赋值行为,不是完整、可靠的技能机制。
4. 左右人数只在揭示结算后广播
scripts/bullbear/ServerSettle.lua:543
现有 LeftCount、RightCount 属于 REVEAL_CHOICES 揭示结果。玩家看到时已经结算完成,不能用于改选。
目前没有“仅向市场调研持有者私发实时人数”的事件。
5. 文档写的是建议,不是完成状态
docs/项目文档/韭池肉林/插件化/技能系统设计.md:515
表格写的是:
改造成“选择后显示实时人数并允许一次改选”
不是“已接入”。
详细章节也明确列出待新增能力:
docs/项目文档/韭池肉林/插件化/技能系统设计.md:544
- 服务端允许一次改选;
- 私有信息事件;
- 客户端显示左右人数;
- 技能消耗与状态栏同步。
并标记为:
P3,不能作为第一批技能落地。
当前存在的问题
skill_market_research 已经在实际随机技能池中:
scripts/bullbear/ServerGame.lua:18
也就是说,玩家可能在技能节点抽到并选择它,但它目前只有徽章和说明,没有真实效果。虽然 Tooltip 标了“设计中”,实际放进正式随机池仍可能让玩家觉得选到了无效技能。
短期有两个合理选择:
- 暂时从运行池移除,等实现后再放回;
- 保留在池中,但明显标记为测试技能。
如果后续实现,建议先确定的规则
当前文档还有几个设计点需要在编码前明确。
推荐流程
- 市场调研作为持续持有技能,不因普通触发消失。
- 每阶段获得一次“调研机会”。
- 普通遭遇第一次选择后:
- 服务端保存初选;
- 仅向持有者发送当前 左 N / 右 M;
- 客户端重新开放左右牌;
- 显示“可改选一次”。
- 玩家可以:
- 保持原选择;
- 改到另一侧。
- 改选后立即锁定并消耗本阶段调研机会。
- 如果玩家不改选,建议在短窗口结束时也消耗机会,避免每回合反复窥探人数。
- 全员选择完成时,服务端需要给正在调研的玩家留一个很短的确认窗口,不能立即结算。
不建议显示的信息
只显示:
text当前左 2 / 右 1
不显示:
- 具体是谁选左或右;
- 玩家名称;
- AI 与真人身份;
- 最终正确答案;
- 牌面结算预测。
这样保留盲选和心理博弈。
关键规则建议
我建议采用:
每阶段第一次普通遭遇选择后,私下查看当前左右选择人数,并获得一次改选机会。确认或改选后,本阶段不再触发。
这比“玩家任意决定哪回合发动”更容易落地,因为不需要额外主动技能按钮。但策略性较弱。
如果希望更有策略,可以改成:
玩家每阶段可在任意一次普通遭遇初选后点击“市场调研”,查看实时人数并改选一次。
这种体验更好,但需要新增主动按钮、技能可用状态和移动端交互,开发复杂度更高。
本轮只进行了只读核对,没有修改代码或文档。

