Skip to content

饰品套装 ​

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 字段 ​

字段类型必填默认值取值范围说明
idstring是——套装 id, 规范化后为空时该文件被跳过
display_namestring否""—套装显示名, 支持 MiniMessage
piecesmap<string, object>是——套装成员; 成员数为 0 时整份定义被跳过 (记录 accessory.set_without_pieces)
pieces.<成员键>.itemstring是——EmakiItem 的物品定义 id, 规范化后为空时该成员被跳过 (记录 accessory.set_piece_invalid)
pieces.<成员键>.slotstring否空 (内部按 all 处理)部位 id / 槽位实例 id / 留空这件饰品要戴在哪里才算数; 取值不能在任意槽位命中时该成员恒不计数
pieces.<成员键>.displaystring否""—在界面上展示该成员时使用的文案
thresholdsmap<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.<件数>.effectslist<object>否[]—该档位的效果列表; 列表内多个条目的同名属性会累加, 技能去重
thresholds.<件数>.effects[].ea_attributesmap<string, number>否{}值须为有限数值 (NaN/Infinity 被丢弃)属性名到数值的映射, 接入 EmakiAttribute. 属性名规范化后为空时丢弃
thresholds.<件数>.effects[].es_skillslist<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 移除一个部位会降低这里统计的件数