Skip to content

条件与选择器

LyAttributeMythicMobs 为 MythicMobs 注册了标记条件、DungeonPlus 与 DungeonMaster 队友条件,以及对应的队伍目标选择器。

这些扩展仅在 config.ymlload-mythic-functiontrue 时注册。DungeonPlus 条件与选择器需要服务器已安装并启用 DungeonPlus;DungeonMaster 条件与选择器需要对应的 DungeonMaster 副本插件可用。

标记条件

标记条件用于判断目标身上由本插件写入的标记层数,通常配合 ly-settagly-addtagly-taketag 技能机制使用。

条件说明示例
gtag目标的指定标记层数大于判断值时通过gtag{t=bleed;l=2}
ltag目标的指定标记层数小于判断值时通过ltag{t=bleed;l=5}
etag目标的指定标记层数等于判断值时通过etag{t=bleed;l=3}

参数

参数说明
t / tag标记 ID
l / layer用于比较的整数层数

标记条件只读取由 LyAttributeMythicMobs 写入的同名标记。目标不存在该标记、标记 ID 为空、目标无效,或同名标记来自其他插件时,条件不会通过。

标记层数可以是负数。ly-addtagly-taketag 不会自动限制最小值或最大值,因此条件会直接比较当前保存的整数。

yaml
Skills:
  - ly-addtag{t=bleed;v=1} @target
  - skill{s=BleedDamage} @target ?gtag{t=bleed;l=2}

队友条件

队友条件比较施法者与目标之间的副本队伍关系,不会把施法者本人视为队友。

条件说明示例
dp判断目标是否为施法者的 DungeonPlus 队友dp{s=true}
dm判断目标是否为施法者的 DungeonMaster 队友dm{s=true}

参数

参数默认值说明
s / statetrue设置需要满足的队友关系
state说明
true目标必须是施法者的队友
false目标必须不是施法者的队友
allow不检查队友关系,条件直接通过

falseallow 外,其他值均按 true 模式处理。

施法者与目标解析

队友条件会按以下方式解析参与判断的玩家:

  1. 实体本身是玩家时,直接使用该玩家。
  2. 实体是生物时,沿 ly-summon 或被替换的 summon 所记录的召唤链向上查找最终主人。
  3. 最终主人是玩家时,使用该玩家进行队伍判断。
  4. 无法解析为玩家时,视为不是队友。

召唤链最多向上追溯 8 层。因此,召唤物代替玩家释放技能时,仍可按照最终玩家主人的队伍关系判断目标。

DungeonPlus 判断规则

dp 使用施法者当前所在的 DungeonPlus 队伍,并在队伍的 NO_DEATH 成员列表中查找目标。以下情况均视为不是队友:

  • 施法者或目标无法解析为玩家。
  • 施法者与目标是同一名玩家。
  • 施法者当前没有 DungeonPlus 队伍。
  • 目标不在队伍的 NO_DEATH 成员列表中。

DungeonMaster 判断规则

dm 根据施法者所在的 DungeonMaster 副本实例判断队友。目标玩家的 UUID 存在于该实例的玩家列表中时,视为队友。

以下情况均视为不是队友:

  • 施法者或目标无法解析为玩家。
  • 施法者与目标是同一名玩家。
  • 施法者当前不在 DungeonMaster 副本实例中。
  • 目标不在该副本实例的玩家列表中。
yaml
Skills:
  - heal-papi{v=10} @target ?dp{s=true}
  - damage-ap{物理伤害=100} @target ?dm{s=false}

DungeonPlus 选择器

DungeonPlus 选择器分为队友、非队友玩家和非队友实体三类。名称中带有 o 的选择器以技能基础坐标为搜索中心,其余选择器以施法者为搜索中心。

选择器搜索中心目标类型过滤规则
@dptm{r=3}施法者玩家选择 DungeonPlus 队伍内的队友
@dpotm{r=3}技能基础坐标玩家选择 DungeonPlus 队伍内的队友,适合放置物技能
@dpntp{r=3}施法者玩家排除施法者本人及其 DungeonPlus 队友
@dpontp{r=3}技能基础坐标玩家排除施法者本人及其 DungeonPlus 队友
@dpnte{r=3}施法者实体排除施法者本人及其 DungeonPlus 队伍成员
@dponte{r=3}技能基础坐标实体排除施法者本人及其 DungeonPlus 队伍成员
yaml
Skills:
  - heal-papi{v=10} @dptm{r=6}
  - damage-ap{物理伤害=100} @dpntp{r=8}

DungeonMaster 选择器

DungeonMaster 选择器根据施法者所在的副本实例过滤目标。名称中带有 o 的选择器以技能基础坐标为搜索中心,其余选择器以施法者为搜索中心。

选择器搜索中心目标类型过滤规则
@dmtm{r=3}施法者玩家选择 DungeonMaster 副本内的队友
@dmotm{r=3}技能基础坐标玩家选择 DungeonMaster 副本内的队友,适合放置物技能
@dmntp{r=3}施法者玩家排除施法者本人及其 DungeonMaster 队友
@dmontp{r=3}技能基础坐标玩家排除施法者本人及其 DungeonMaster 队友
@dmnte{r=3}施法者实体排除施法者本人及其 DungeonMaster 队伍成员
@dmonte{r=3}技能基础坐标实体排除施法者本人及其 DungeonMaster 队伍成员
yaml
Skills:
  - heal-papi{v=10} @dmtm{r=6}
  - damage-ap{物理伤害=100} @dmnte{r=8}

半径参数

所有队伍选择器都使用 r / radius 设置搜索范围。

参数说明
r / radius以方块为单位的搜索半径,支持纯数字、PlaceholderAPI 变量和四则运算
yaml
Skills:
  - heal-papi{v=10} @dptm{r=%player_level%+3}

半径表达式使用 PlaceholderAPI 变量时,需要 PlaceholderAPI 已安装并正常提供对应变量。表达式支持整数、小数、括号以及 +-*/ 运算。

表达式解析失败时会在控制台输出公式错误,并返回 0 作为计算结果。

不限距离

r=-1 表示不限制距离。不同选择器在不限距离时的范围如下:

选择器类型r=-1 的效果
@dptm@dpotm选择全部 DungeonPlus 队友,不限制世界
@dmtm@dmotm选择全部 DungeonMaster 队友,不限制世界
@dpntp@dpontp从全地图玩家中排除自身与 DungeonPlus 队友
@dmntp@dmontp从全地图玩家中排除自身与 DungeonMaster 队友
@dpnte@dponte从全地图实体中排除自身与 DungeonPlus 队伍成员
@dmnte@dmonte从全地图实体中排除自身与 DungeonMaster 队伍成员

使用不限距离的实体选择器可能一次选中大量实体,应根据技能触发频率控制使用范围。

启用与重载

条件与选择器受以下配置控制:

yaml
load-mythic-function: true

当该配置为 false 时,本页列出的条件和选择器均不会注册。修改配置后,可通过插件重载指令重新读取配置;MythicMobs 技能配置也需要在对应变更后重新加载。