Files
shenleiandClaude Opus 5.5 ffe097ec57 Add world boss window (AVA2 uitrack world-boss tab, read-only)
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>
2026-10-15 22:36:04 +09:00

65 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 真机测试未做。