条件与选择器
LyAttributeMythicMobs 为 MythicMobs 注册了标记条件、DungeonPlus 与 DungeonMaster 队友条件,以及对应的队伍目标选择器。
这些扩展仅在 config.yml 的 load-mythic-function 为 true 时注册。DungeonPlus 条件与选择器需要服务器已安装并启用 DungeonPlus;DungeonMaster 条件与选择器需要对应的 DungeonMaster 副本插件可用。
标记条件
标记条件用于判断目标身上由本插件写入的标记层数,通常配合 ly-settag、ly-addtag 和 ly-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-addtag 与 ly-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 / state | true | 设置需要满足的队友关系 |
state 值 | 说明 |
|---|---|
true | 目标必须是施法者的队友 |
false | 目标必须不是施法者的队友 |
allow | 不检查队友关系,条件直接通过 |
除 false 和 allow 外,其他值均按 true 模式处理。
施法者与目标解析
队友条件会按以下方式解析参与判断的玩家:
- 实体本身是玩家时,直接使用该玩家。
- 实体是生物时,沿
ly-summon或被替换的summon所记录的召唤链向上查找最终主人。 - 最终主人是玩家时,使用该玩家进行队伍判断。
- 无法解析为玩家时,视为不是队友。
召唤链最多向上追溯 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 技能配置也需要在对应变更后重新加载。