5.0 KiB
AVA2 迁移:掉落、宝箱和角色属性查询
日期:2026-10-15。阶段 0 查询基础、阶段 2/3 的只读查询、阶段 4 属性面板已实现;生产服联机验收尚未完成。
这批代码
- metin2-server:
ITEM_MANAGER::PortWikiDrops/PortWikiChest读取已加载的同一份数据;/mt_features提供能力协商、怪物掉落、物品反查来源、宝箱和自身属性快照。 - metin2-client:
mt_feature_service管理会话请求、能力、超时、分页与原子提交;百科的详情页接入远程数据和来源跳转,增加详细属性面板。 - 怪物目标栏有“掉落”入口。触控背包单击显示固定提示,提示中的“百科 / 宝箱预览”可打开查询;开始拖动前隐藏固定提示,保留原穿脱、背包移动和出售流程。
- 百科“详细属性”可查看当前服务器实际支持的属性,分类、筛选和翻页;面板可见时每三秒同步,没有数据时显示未知,不用零值代替失败。
- 原始 AVA2/root、ava2-client、现有游戏物品和经济规则没有更改。本批查询没有开箱、洗练、奖励或 DB 写入。
数据和语义
怪物:通用掉落的角色等级范围、独立掉落组、击杀组候选、等级组、手套/增益资格组及怪物模板额外掉落。通用变身球按原规则过滤,其他组保持原生成分支的候选行为。返回权重/条件,不把经过等级、倍率和特殊事件修正的最终概率伪算成静态百分比。
仍未覆盖全部 CreateQuestDropItem、硬编码事件、矿石额外掉宝石和各地图特殊分支。UI 明确标示范围;零行只表示当前已覆盖范围没有配置,不能宣布没有任何获取途径。
宝箱:仅处理走 GiveItemFromSpecialItemGroup 的 GIFTBOX/TREASURE_BOX,以及 NORMAL/PCT 两种已确认模式。NORMAL 为按权重抽一项;PCT 为各项独立与 1..100 随机数比较,支持多项/无奖励。金币、经验、召唤怪物、减速、扣血、中毒和怪物组均单独标示,不当成物品 ID。钥匙、资格和消耗保留原校验;没有新增批量开箱。QUEST/SPECIAL 组与自定义开箱不伪装通用宝箱。
属性:服务端用当前编译的 POINT 常量访问实际属性,客户端仅使用稳定文字键;不复制 AVA2 面板的点号。HP/SP/等级用原角色 getter,其他用实际 point。研究怪物加成对 Boss 的排除规则及活动倍率另行显示的边界在面板说明,不把汇总值当伤害计算器。
协议与旧服
只复用现有聊天命令/命令回包的封装,不复制 AVA2 包头,不改变物品/属性数组布局。契约见 metin2-server docs/FEATURE-QUERY-PROTOCOL.md。
未协商能力前不发送业务查询。旧服不支持时会超时并显示“未启用”,不显示空掉落;服务端每角色限流,客户端串行发送,有限次 rate 重试。响应与 request ID/种类/目标/偏移匹配,完整 begin/row/end 后才更新 UI。换角色清理等待队列和回调。mt_wiki.ServerCapabilities() 返回 None/布尔以区分未知与已协商。
验证
tests/wiki/test_service.py:7 项协议测试,含旧服、过期包、缺行、错误行、负数属性、限流重试、关闭取消和两端属性键一致。tests/wiki/test_catalogue.py:7 项已有模板目录测试通过。- 服务端
tests/features/test_queries.py:编译真实查询/命令主体及原始分组类,对通用/独立/击杀/等级/手套/附加掉落、宝箱模式和特殊奖励、反查、分页、限流、参数、HP getter 和 RNG 未推进进行验证。结合真实 FreeBSD 完整游戏构建,不用模拟编译替代目标编译。 build/wiki-source/features-integration-final.log:隔离加密登录/游戏连接、能力协商、来源跳转、跨页、宝箱奖励和属性同步,加原有触控穿脱/拖动/商店/战斗回归。features-server-build.log:203 独立副本的 FreeBSD 编译;只输出至/root/metin2-features-dev/bin/game。features-english-regression.log:原英文资源完整回归通过。features-tooltip-lifecycle.log:实际 Python 2 宿主验证原固定提示跟随设置不被重置,过期弱引用不会中断下一次拖动。- macOS 实际渲染:
chest-preview.png、character-details.png。截图数据来自隔离协议 fixture,不是 203 实际宝箱奖励;fixture 未提供的属性显示未知。 features-android-build-final.log:Android 编译成功;没有安装/真机验收。
明确剩余
没有替换运行中的 203 游戏二进制,也没有迁移 DB;当前连接旧服会显示查询未支持。生产联机与 Android 真机验证仍需后续安排。
后续已接入龙穴共享场次、个人周任务、真实门票/冷却查询与提醒,以及活动日历和月光/圣诞袜实际排期效果;范围和验证见 AVA2-DUNGEON-CALENDAR.md。其余副本尚未适配。
自动洗练与属性锁定、战令任务、Vulkan 模型预览、批量开箱仍未实现。完整剩余范围见迁移计划,不能把这批查询实现记为全部七项已完成。