简体中文
饰品套装
plugins/EmakiAccessory/sets/ 里的饰品套装这样定义: 套装由哪些成员组成, 每一件要戴在哪里, 以及戴够几件会触发哪一档效果
饰品套装放在 plugins/EmakiAccessory/sets/ 下. 文件名不参与识别, 套装 id 取文件内的 id 字段
饰品套装与 EmakiItem 的装备套装是两套独立机制, 互不影响: 这里只统计"戴在饰品槽里"的件数, EmakiItem 只统计装备栏. 同一件物品可以同时属于两边的套装, 两边各自独立计数
件数只统计生效页: 其他页的饰品即使凑齐也不算件数. 玩家失去生效页权限时, 该页贡献按 0 计算, 套装随之失效
完整示例
yaml
id: "example_set"
display_name: "<gold>试炼者饰品</gold>"
pieces:
necklace:
item: "example_necklace"
slot: "necklace"
display: "<gray>试炼者项链</gray>"
ring:
item: "example_ring"
slot: "ring"
display: "<gray>试炼者戒指</gray>"
charm:
item: "example_charm"
slot: "charm"
display: "<gray>试炼者护符</gray>"
thresholds:
2:
effects:
- ea_attributes:
max_health: 4.0
defense: 2.0
3:
effects:
- ea_attributes:
max_health: 6.0
crit_chance: 0.05
es_skills:
- "example_dash"顶层与 pieces 字段
| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
id | string | 是 | — | — | 套装 id, 规范化后为空时该文件被跳过 |
display_name | string | 否 | "" | — | 套装显示名, 支持 MiniMessage |
pieces | map<string, object> | 是 | — | — | 套装成员; 成员数为 0 时整份定义被跳过 (记录 accessory.set_without_pieces) |
pieces.<成员键>.item | string | 是 | — | — | EmakiItem 的物品定义 id, 规范化后为空时该成员被跳过 (记录 accessory.set_piece_invalid) |
pieces.<成员键>.slot | string | 否 | 空 (内部按 all 处理) | 部位 id / 槽位实例 id / 留空 | 这件饰品要戴在哪里才算数; 取值不能在任意槽位命中时该成员恒不计数 |
pieces.<成员键>.display | string | 否 | "" | — | 在界面上展示该成员时使用的文案 |
thresholds | map<integer, object> | 否 | {} | 键须为 1~成员总数的整数 | 件数阈值; 整节缺失或全部被跳过时套装本身仍存在, 但没有任何加成 |
成员键名只是本文件内的标识, 真正生效的是 item 和 slot
没有 EmakiItem 时整个套装不生效: 少了定义 id, 系统就无法判断"是这件饰品"
slot 的三种写法
| 写法 | 含义 |
|---|---|
部位 id, 如 ring | 该部位任意一格都算 |
实例 id, 如 ring_1 | 只有这一格算 |
| 留空 | 任意饰品槽都算 (内部值 all) |
thresholds 件数阈值
键名是"戴够几件", 要填 1 到成员总数之间的整数; 非整数或越界的档位会被跳过, 并记录 accessory.set_threshold_not_numeric / accessory.set_threshold_out_of_range
阈值是累加的, 不是互斥的: 戴够 3 件时, 2 件档和 3 件档同时生效. 拿上面的示例来说, 戴够 3 件的玩家实际获得 max_health: 10.0 (4.0 + 6.0), defense: 2.0, crit_chance: 0.05 以及技能 example_dash
effects 效果
| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
thresholds.<件数>.effects | list<object> | 否 | [] | — | 该档位的效果列表; 列表内多个条目的同名属性会累加, 技能去重 |
thresholds.<件数>.effects[].ea_attributes | map<string, number> | 否 | {} | 值须为有限数值 (NaN/Infinity 被丢弃) | 属性名到数值的映射, 接入 EmakiAttribute. 属性名规范化后为空时丢弃 |
thresholds.<件数>.effects[].es_skills | list<string> | 否 | [] | — | 技能 id 列表, 接入 EmakiSkills; 重复项去重 |
yaml
thresholds:
2:
effects:
- ea_attributes:
max_health: 4.0
defense: 2.0
3:
effects:
# 多个条目, 多个技能都可以叠在同一档
- ea_attributes:
max_health: 6.0
es_skills:
- "example_dash"
- es_skills:
- "example_leap"属性名与数值的含义按 EmakiAttribute 来, 技能 id 按 EmakiSkills 来. 这两项怎么接入对应模块, 见 属性与技能接入
件数变化通知
套装的已装备件数一变, 就会触发 AccessorySetBonusChangeEvent. 这个事件只在件数变化的那一刻发出, 件数不变时不重复发出, 也不能取消, 详见 事件 API
孤儿槽里的饰品永不计入件数, 因此从 parts.yml 移除一个部位会降低这里统计的件数