简体中文
镶嵌流程
镶嵌 (含开孔) 时插件按什么顺序检查, 每一步看哪些配置, 以及排查时先从哪里入手
Gem 镶嵌流程依次校验目标装备, 插槽物品配置, 宝石物品, 插槽状态和费用, 然后把宝石数据写入装备并重建展示. 遇到问题时先确认装备是否匹配 items/*.yml, 再看宝石兼容性和插槽状态
流程步骤
- 玩家打开宝石 GUI 或执行宝石相关命令. 镶嵌, 开孔, 升级界面打开时目标槽为空, 不会自动从玩家主手或背包克隆/转移装备
- 模块读取目标装备, 并通过
items/*.yml顶层的item_sources,matcher与slot_groups确定适用的插槽物品配置 - 读取
slots, 过滤未开放, 已占用或不允许当前操作的槽位 - 读取宝石定义, 检查宝石
socket_compatibility是否兼容slots[].type - 检查插槽物品级限制, 例如
allowed_gem_types,max_same_type,max_same_id - 检查条件与费用, 例如
inlay_cost,extract_cost, 开孔器或升级材料 - 写入装备 PDC, 记录宝石 ID, 当前等级, 槽位索引和 gem layer 数据
- 通过 CoreLib 的物品操作账本 (
ItemOperationLedger) 重建名称, Lore, 属性 payload 和技能 payload - 重新评估宝石共鸣, 并应用或撤销共鸣效果
- 执行动作并刷新玩家背包
关键校验字段
| 配置位置 | 字段 | 说明 |
|---|---|---|
items/*.yml | item_sources + matcher + slot_groups | 哪些物品会获得这套插槽配置. 见模板与插槽 |
items/*.yml | slots[].type | 插槽类型, 例如 attack, defense, universal |
items/*.yml | default_open_slots | 初始开放的插槽索引. 未列出的插槽需要开孔 |
items/*.yml | allowed_gem_types | 装备允许镶嵌的宝石类型白名单 |
items/*.yml | max_same_type | 同类型宝石最大数量. 未配置时不限制 |
items/*.yml | max_same_id | 同 ID 宝石最大数量, 默认 1 |
gems/*.yml | gem_type | 宝石自身类型 |
gems/*.yml | socket_compatibility | 宝石可放入哪些插槽类型 |
gems/*.yml | inlay_cost / extract_cost | 镶嵌与提取费用 |
IMPORTANT
旧文档中出现过 slot_types, 当前源码使用的是 socket_compatibility 与 slots[].type
排查入口
| 现象 | 先检查 |
|---|---|
| 装备不支持宝石 | items/*.yml 顶层的 item_sources, matcher 与 slot_groups 是否匹配目标装备 |
| 找不到可用插槽 | slots, default_open_slots, 插槽是否已占用 |
| 宝石无法放入 | gems/*.yml > socket_compatibility 与 slots[].type 是否一致 |
| 同类宝石超限 | allowed_gem_types, max_same_type, max_same_id |
| 属性不生效 | EmakiAttribute 是否安装, 宝石效果是否写入 ea_attribute |
边界情况
- 装备没有匹配的插槽物品配置: 界面会提示该装备不支持宝石
- 插槽未开放: 先用开孔器解锁
- 插槽已占用: 禁止覆盖, 除非进入提取或替换相关流程
- 宝石物品堆叠: 只消耗 1 个, 剩余数量保留
- 背包满: 提取宝石时放入背包, 放不下则安全掉落
- GUI 打开: 目标装备和材料必须由玩家手动放入; 模块不会自动读取主手作为初始槽位, 避免误吞或误移动物品
- 配置重载: 已镶嵌的旧宝石优先保留 ID, 并在重建展示时再补查一遍. 宝石本体在获取, 重载和 GUI 复刻时会按当前定义刷新名称, Lore, 模型与等级展示