mt_boss lists the server's timed boss regens from the MTF1 "bosses" query: alive/max, countdown, map-local position and period, paged by 8, with per-boss spawn reminders that only fire on a fresh alive snapshot. Teleport is left out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
65 lines
3.5 KiB
Markdown
65 lines
3.5 KiB
Markdown
# AVA2 世界 Boss 追踪进度(v1)
|
||
|
||
2026-10-15。参考 AVA2 `uitrack` 的世界 Boss 页,只读。服务端见 metin2-server `docs/FEATURE-BOSS-TRACK.md`。没有移植 AVA2 的传送按钮(它会改变游戏进程);副本页已经由 `mt_dungeons` 实现。
|
||
|
||
## 与 AVA2 的差异
|
||
|
||
| 项目 | AVA2 | 本实现 |
|
||
| --- | --- | --- |
|
||
| 数据来源 | 专用封包 | 原有 `/mt_features` 查询,种类 `bosses`(能力位 256) |
|
||
| 跨核心 | 不明(AVA2 服务端源码不在本机) | 每个核心用原 `HEADER_GG_RELAY` 广播自己的 Boss 刷新点,旧核心会忽略 |
|
||
| 传送 | 有 | 无 |
|
||
| 提醒 | 有 | 有:刷新后在聊天框提示,以服务器快照为准 |
|
||
|
||
## 窗口
|
||
|
||
- 入口:小地图左侧按钮列中的“Boss”(换线按钮下方)。
|
||
- 标题“世界Boss”,有“刷新”“上一页/下一页”按钮,每页 8 行。
|
||
- 每行显示:
|
||
- `[CHn]` 或 `[共享]`(频道 99)、Boss 名、地图名;
|
||
- 状态(存活 a/m、刷新倒计时、即将刷新、不再刷新)、坐标(地图内坐标 /100,`ANYWHERE` 显示“随机位置”)、刷新周期;
|
||
- “提醒:开/关”按钮,只能对未存活、有计时的 Boss 打开。
|
||
- 窗口打开时每 30 秒刷新一次。倒计时按服务器时间和本地经过时间计算。
|
||
- 名称:
|
||
- Boss 名取自 `nonplayer.GetMonsterName`;
|
||
- 地图名用服务端地图编号 → 地图目录(`MAPS`,取自服务端 `map/index`)在 `localeInfo.MINIMAP_ZONE_NAME_DICT` 中查找;
|
||
- 找不到时显示“地图N”。
|
||
|
||
## 提醒
|
||
|
||
- 提醒的键是 (vnum, 地图, 频道, x, y)。
|
||
- 窗口关闭时,提醒过的 Boss 计时到期 2 秒后,客户端会主动查询一次。
|
||
- 只有新快照显示它存活时,聊天框才提示“X 已在 Y 刷新”,然后清除这条提醒;只到计时不提示。
|
||
- 服务器不再列出的 Boss 会被移出提醒。
|
||
- 离开游戏(换线、换角色)时,清空快照和提醒。
|
||
|
||
## 客户端
|
||
|
||
- 模块 `mt_boss`(`src/platform/ScriptLib/BossScript.inc`),在 `PythonBoot.cpp` 中安装,挂接 `game.GameWindow.Open/Close`。
|
||
- `FeatureServiceScript.inc`:
|
||
- 新增 `bosses` 种类和 `boss` 行解析(13 项,X/Y 有符号);
|
||
- 校验 vnum/地图/周期非 0、频道 ≤ 255、alive ≤ max ≤ 255;
|
||
- 一次最多 128 行。
|
||
|
||
## 证据
|
||
|
||
- `tests/wiki/test_boss.py`(CTest:`port.boss`)共 5 项通过,覆盖:
|
||
- 入口位置、各状态文字、坐标、分页;
|
||
- 只在确认刷新后提示;
|
||
- 未启用和空列表的提示;
|
||
- 关闭时复位;
|
||
- 地图表。
|
||
- `tests/wiki/test_service.py` 新增 `boss` 行和旧服务端(cap 255)返回 unsupported 的测试。
|
||
- 2026-10-15 联机测试(203,macOS 原生客户端,账号 admin):
|
||
- 临时开了两个 channel5 核心:13040 放地图 1/21/41/68,13041 放地图 72/5。
|
||
- 从任一核心进入游戏,窗口都列出两个核心的 5 个 Boss(海盗 5001 ×2、2307、1192、5161),倒计时一致。
|
||
- 截图确认布局正常。测试后 channel5 已恢复原配置。
|
||
|
||
## 限制和未完成
|
||
|
||
- 只列出有定时刷新的 Boss 刷新点(regen 文件里 `time > 0`);由任务或事件刷出的 Boss 不在列表中。
|
||
- 共享频道(game99)的 Boss 要等 game99 换上新服务端才会出现。
|
||
- 副本内地图(如 5、72)在 `MINIMAP_ZONE_NAME_DICT` 中没有名称,显示“地图N”。
|
||
- macOS 桌面客户端没有中文字体,窗口文字显示为 `?`。
|
||
- Android 真机测试未做。
|