世界 Boss
世界 Boss 基本上是个挂机型活动。你维护一台随时间开火的投石机,给它买弹药和升级, 把它瞄准当前虚弱的那段塔身,然后收宝箱。协议里根本没有「开火」这条指令:伤害是投 石机自己累积出来的。
正是这个形态让这个模块值得存在。几乎全部价值都在于连续两周规律地做些小事,而这恰 恰是人会忘、机器人不会忘的事。

用 auto_world_boss 打开它。
它做什么,按顺序
每次走过这个活动,都会跑同一份决策清单,并在第一件值得做的事上停下。
- 领取每日免费宝箱,然后领掉任何还在等着的战斗奖励宝箱。宝箱在其他一切之前 处理,所以哪怕这一趟被打断,白拿的东西也已经拿到了。
- 重新瞄准弱点。 如果战斗报告了弱点而投石机正指着别处,就换目标。清单上没有 别的项有这么重:一台打错区段的投石机,输出只是它本可以达到的一小部分。
- 剩下五轮或更少时补充弹药,按催化剂买得起的最大一批买。
- 若商店给出的升级在你的上限之内,就买一次投石机升级。
- 若三个报价一个都买不了,就刷新升级商店。
为什么在五轮时补而不是零时补
以前只在正好归零时才买。于是投石机打空、在这一周期剩下的时间里干等,到下一趟才补 上。趁手上还有几轮就先添满,能让它持续开火,而这正是一台会自己开火的投石机的全部 意义。
它花什么,以及绝不花什么
这一点在这里比在这个应用的任何别处都要紧,因为蘑菇是真金白银,而这个活动几乎在每 个按钮旁边都配了一个蘑菇按钮。
| 购买项 | 支付方式 | 可能用到蘑菇吗? |
|---|---|---|
| 弹药 | 催化剂,一种活动专属货币 | 否 |
| 投石机升级 | 金币、木头、石头、金属、奥术 | 否 |
| 刷新商店 | 免费 | 否 |
这份保证是结构性的,而不是在报价上加一层过滤。购买指令带一个「以替代价格支付」的 参数,Mercy SF 每次都往里送零,那正是商店的第一个按钮。代码里不存在会送别的值的 路径。
在此之上,每一次购买都会在前后测量账号的七项余额。只要看到有哪怕一个蘑菇发生变 动,投石机的购买就会对该账号永久停用,并在日志里写明。
这不是理论上的担忧
购买确实扣过蘑菇,扣了好几周。原因是购买指令的两个参数在传输时被对调了:游戏把它 们读作 {slot}/{pay_with_mushrooms},于是机器人把报价编号送到了货币标志该在的位 置,等于每一次都在申请用蘑菇支付。现在这一点是依据游戏客户端自身的请求定义确定下 来的,而不是从相关性里推测出来的。余额闩锁照样保留,作为兜底。
设置

| 设置 | 默认 | 作用 |
|---|---|---|
auto_world_boss | 开 | 模块本身。 |
world_boss_auto_upgrade | 开 | 购买投石机升级。默认开启:未升级的投石机输出只有一小部分,把它留在关闭状态,等于多数人都在不知不觉中拿到了这个活动最差的结果。 |
world_boss_max_upgrade_level | 5 | 投石机槽位会被升到的最高等级。见下文。0 表示取消上限。 |
world_boss_max_catalysts_spend | 0 | 对催化剂的可选上限。0 表示放开了花,对一种带不走的活动货币来说这是对的。 |
world_boss_reroll_upgrade_shop | 开 | 三个报价一个都买不了时,按下「换新货」。 |
world_boss_use_mushrooms | 关 | 为通用的蘑菇闸门保留。反正这个模块里没有任何一项用蘑菇购买。 |
world_boss_max_mushroom_spend | 0 | 未使用。 保留它只是为了让旧的配置文件仍然能加载。没有代码会读它。 |
升级上限为什么默认是 5
升级到某个阶段之前都可以用金币和催化剂付账,过了那个点,商店就只剩蘑菇按钮了。从 5 级到 6 级这一步就是其中的第一步。所以到 5 级为止的每一步都是免费的,而默认值会 把这些全买下来。
这个上限是玩法偏好,不是安全装置。机器人从不按蘑菇按钮,所以越过免费档的那一 步会被服务器拒绝,而不是扣款。调高上限只会把请求花在注定被拒的报价上。
刷新为什么默认开启
商店只有在你买了东西之后才会自己变。因此,一个三个报价全都绑定在你的投石机没有瞄 准的那段塔身上的商店,就是一条永远不会自行解开的死路,而这种局面很常见。
刷新是有额度的:每周期几次,每个账号每小时十次。每一次都会测量蘑菇余额。
新账号与解锁探测
如果你的角色从未加入过世界 Boss,服务器就完全不会发送世界 Boss 的数据,而一个等着 检测到活动才动的模块会一直等下去。症状是模块闲着不动,同时毫不相干的请求不断带回 world boss join first。
因此,一旦角色过了解锁等级,Mercy SF 就会按定时尝试进入,哪怕什么都没检测到,并 把判断交给服务器。这一点在活动是怎么识别的里有更详细的说明。
它什么时候停
这个模块以活动正在进行为前提。一旦服务器回答 event not active,这个结论会被相信 一小时,然后再探一次。所以一个已关闭的世界 Boss 花的是每小时一次请求,而不是每分 钟一次;而一个刚开的活动会在一小时之内加入。