卡牌:市场调研

13 小时前综合

skill_market_research 当前仅完成了:
  • 加入随机技能池;
  • 可以在技能节点被选中;
  • 有新绘制图标;
  • 有 Tooltip 设计说明;
  • 能作为技能徽章显示。
但“选择后显示实时人数,并允许一次改选”的玩法逻辑尚未接入。

代码证据

1. Tooltip 明确标记为“设计中”

scripts/bullbear/Client.lua:830
当前内容仍是:
  • 技能 · 侦察 + 改选 · 设计中
  • “若倒计时未结束,可获得一次改选机会”
  • “需要改选机制,真实效果待接入”
所以客户端配置本身就说明尚未实现。

2. 客户端选牌后立即锁定

scripts/bullbear/ClientUIPlaying.lua:740
Client.MakeChoice() 开头是:
lua
if myChoice_ or mySpectating_ or not myAlive_ then return end
首次选择后 myChoice_ 已有值,后续点击会被直接拒绝。因此市场调研持有者目前也不能改选。

3. 服务端没有市场调研专用逻辑

scripts/bullbear/ServerGame.lua:334
Server_HandleChooseCard() 目前只是:
  1. 接收 Side
  2. 写入 p.choice
  3. 广播已选择;
  4. 检查是否全员完成;
  5. 全员完成后立即进入结算。
这里没有:
  • 检查玩家是否持有 skill_market_research
  • 第一次选择后发送实时左右人数;
  • 记录是否使用过改选;
  • 限制最多改选一次;
  • 改选成功事件;
  • 消耗或阶段次数记录。
服务端实际上允许新请求覆盖 p.choice,但这不能算“已经支持改选”:
  • 客户端根本不会发出第二次请求;
  • 服务端没有验证玩家是否拥有市场调研;
  • 没有“一次”的次数限制;
  • 没有改选窗口;
  • 可能在全员选完后立即结算;
  • 这是普通赋值行为,不是完整、可靠的技能机制。

4. 左右人数只在揭示结算后广播

scripts/bullbear/ServerSettle.lua:543
现有 LeftCountRightCount 属于 REVEAL_CHOICES 揭示结果。玩家看到时已经结算完成,不能用于改选。
目前没有“仅向市场调研持有者私发实时人数”的事件。

5. 文档写的是建议,不是完成状态

docs/项目文档/韭池肉林/插件化/技能系统设计.md:515
表格写的是:
改造成“选择后显示实时人数并允许一次改选”
不是“已接入”。
详细章节也明确列出待新增能力:
docs/项目文档/韭池肉林/插件化/技能系统设计.md:544
  • 服务端允许一次改选;
  • 私有信息事件;
  • 客户端显示左右人数;
  • 技能消耗与状态栏同步。
并标记为:
P3,不能作为第一批技能落地。

当前存在的问题

skill_market_research 已经在实际随机技能池中:
scripts/bullbear/ServerGame.lua:18
也就是说,玩家可能在技能节点抽到并选择它,但它目前只有徽章和说明,没有真实效果。虽然 Tooltip 标了“设计中”,实际放进正式随机池仍可能让玩家觉得选到了无效技能。
短期有两个合理选择:
  1. 暂时从运行池移除,等实现后再放回;
  2. 保留在池中,但明显标记为测试技能。

如果后续实现,建议先确定的规则

当前文档还有几个设计点需要在编码前明确。

推荐流程

  1. 市场调研作为持续持有技能,不因普通触发消失。
  2. 每阶段获得一次“调研机会”。
  3. 普通遭遇第一次选择后:
  4. 服务端保存初选;
  5. 仅向持有者发送当前 左 N / 右 M
  6. 客户端重新开放左右牌;
  7. 显示“可改选一次”。
  8. 玩家可以:
  9. 保持原选择;
  10. 改到另一侧。
  11. 改选后立即锁定并消耗本阶段调研机会。
  12. 如果玩家不改选,建议在短窗口结束时也消耗机会,避免每回合反复窥探人数。
  13. 全员选择完成时,服务端需要给正在调研的玩家留一个很短的确认窗口,不能立即结算。

不建议显示的信息

只显示:
text
当前左 2 / 右 1
不显示:
  • 具体是谁选左或右;
  • 玩家名称;
  • AI 与真人身份;
  • 最终正确答案;
  • 牌面结算预测。
这样保留盲选和心理博弈。

关键规则建议

我建议采用:
每阶段第一次普通遭遇选择后,私下查看当前左右选择人数,并获得一次改选机会。确认或改选后,本阶段不再触发。
这比“玩家任意决定哪回合发动”更容易落地,因为不需要额外主动技能按钮。但策略性较弱。
如果希望更有策略,可以改成:
玩家每阶段可在任意一次普通遭遇初选后点击“市场调研”,查看实时人数并改选一次。
这种体验更好,但需要新增主动按钮、技能可用状态和移动端交互,开发复杂度更高。
本轮只进行了只读核对,没有修改代码或文档。