选择器

来自PRTS
跳转到导航 跳转到搜索
这个页面或章节尚在编辑中。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
这个页面或章节尚在编辑中。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
本条目需要随游戏客户端更新长期维护。
本条目的最后更新时,参考的游戏客户端(简体中文)版本号为2.7.61
本条目需要随游戏客户端更新长期维护。
本条目的最后更新时,参考的游戏客户端(简体中文)版本号为2.7.61

所有的“索敌”都始于选择器Selector)这一大类的东西。
根据运用方式不同,“是否有可选攻击目标”之类的被称为触发选择器,“一个弹道是否能选某个目标”之类的被选为能力选择器
明日方舟中绝大部分选择目标、选择地块、选择单位的行为均由选择器控制,包括干员是否会进入攻击状态、溅射效果是否可以选取某个目标、天赋是否能给予某个干员Buff、技能召唤的召唤物部署在哪个地快上等。

选择器的种类

为方便各类效果与机制的实现,明日方舟存在多种选择器,已知的包括:

  • 自我选择器SelfSelector)选择自己的选择器,没有什么额外参数。
  • 地块选择器TileSelector)选择某一地块的选择器,通常包括地块过滤器、需要可通行与否、需要可部署与否、限定位置等参数。
  • 所在地块选择器RootTileSelector)选择自己这一地块(或称所在格)的选择器,没有地块选择器那么多参数。
  • 进阶选择器AdvancedSelector)(及其变体)是最常用的选择器,通常包含仇恨过滤器、阵营(通常与发起者相同)、各类无可选性效果的无视与否、无视迷彩与否、是否是治疗行为等参数。已知的变体包括:
    • 阻挡+进阶选择器BlockedOrAdvancedSelector)是在过滤器处理之外,会将自己阻挡的目标按顺序添加进列表最前的选择器,适用于各类“优先选择自己阻挡的目标”。
    • 标签BUFF+选择器AdvancedSelectorWithTagAndBuffKey
    • 异常效果+选择器AdvancedSelectorWithAbnormalFlag),有关异常效果的内容请见异常效果
    • AdvancedSelectorWithinHpRatio
    • AdvancedSelectorWithTagAndBuffKeyIgnoredHitRange
    • AdvancedSelectorWithHostOrTokenRange
    • AdvancedSelectorWithTagAndBuffWithinHpRatio
    • 带阵营过滤器的进阶选择器AdvancedSelectorWithValidatorFilter),顾名思义,有关阵营过滤器的内容请见#阵营过滤器
    • 带二次过滤器的进阶选择器SecondaryFilterAdvancedSelector),顾名思义,有关二次过滤器的内容请见#二次过滤器
  • ParallelGroupSelector

进阶选择器的筛选参数

目标阵营(targetSide)

此处指的阵营与干员的势力阵营无关。

选择器可以根据目标阵营targetSide)对目标单位的阵营sideType)进行筛选。

  • 阵营仅接受参数:
    • 我方ALLY)、敌方ENEMY)、中立NEUTRAL)。
  • 目标阵营仅接受参数:
    • 我方ALLY)、敌方ENEMY)、我方或敌方BOTH_ALLY_AND_ENEMY)、中立NEUTRAL)、全部All)。
  • 进行主观阵营筛选时,目标阵营参数的含义变为:
    • 相同阵营ALLY)、对立阵营ENEMY)、相同或对立阵营BOTH_ALLY_AND_ENEMY)、不可用NEUTRAL)、任意阵营All)。
主观阵营对照表
自身阵营 主观阵营 目标阵营
我方 相同阵营 我方
敌方 敌方
中立 中立
我方 对立阵营 敌方
敌方 我方、中立
中立 敌方

选择器仅能选择目标阵营阵营相匹配的单位。
※由于绝大多数选择器筛选的阵营为主观阵营,站内默认能够选择我方单位的敌方单位也可以选择中立单位。

目标行动方式(targetMotion)

选择器可以根据目标行动方式targetMotion)对目标单位的行动方式motion)进行筛选。

  • 行动方式仅接受参数:
    • 地面WALK)、飞行FLY)。
    • 目前角色类单位行动方式均为地面。
  • 目标行动方式仅接受参数:
    • 仅地面WALK_ONLY)、仅飞行FLY_ONLY)、全部ALL)。

选择器仅能选择目标行动方式行动方式相匹配的单位。

目标实体类型(targetCategory)

选择器可以根据目标实体类型targetCategory)对目标单位的实体类型category)进行筛选。

  • 实体类型仅接受参数:
    • 默认类DEFAULT)、装置类TRAP_OR_ITEM)、障碍物类OBSTACLE)。
    • 目前敌人类单位实体类型均为默认类。
  • 目标实体类型可接受的参数与实体类型相同,但可同时筛选多个实体类型,此时仅需匹配其一即可。

选择器仅能选择目标实体类型实体类型相匹配的单位。

限制目标数(limitTargetNum)、最大目标数(maxNum)

选择器可以被定义限制目标数与否,以及限定的话,最多能选择多少目标。
在限制目标数参数为False的情况下(即不限制目标数的话),最多能被选中的目标数为128个(但如果专门配置目标数,此处的数量可以超过128)。
反之,最多能被选中的目标数为选择器内被定义的最大目标数。
绝大部分选择“单个目标”的选择器都是依靠限制目标数参数+最大目标数设置为1实现的。
注意,这不是“选择器的列表大小”,目标数的处理是在仇恨过滤器之后,用于筛出合适数量的目标所用的。

无视迷彩

通常选择器会在初始化过程中,根据选择器的各种情况自行判断并为自己添加“无视迷彩”或“强制无视迷彩”

  • 所有触发选择器通常不无视迷彩。
    • 即使旗下的能力选择器可以无视迷彩,单位也不会选择迷彩单位发动攻击。
  • 不具有弹道的能力选择器在会根据对应能力(ability)检查是否可以无视迷彩:
    • 能力攻击类型attackType)为溅射Splash),则本选择器改为“无视迷彩”(也即非弹道类型的溅射攻击会自动无视迷彩)。
    • 能力useDynamicAttackType参数为真,则本选择器改为“无视迷彩”。
  • 具有弹道的能力选择器只根据其独立参数(待补充)决定是否“无视迷彩”。
  • 此外,所有选择器还有一个选项forceIgnoreCamouflage,可以控制本选择器是否“强制无视迷彩”。

可选判定(敌对)

(待重置)

迷彩判定

若目标的掩码中包含迷彩异常效果: 迷彩
无法被敌对方的部分能力和部分弹道选中;会因隐匿免疫而失效,但在因隐匿免疫而失效的情况下依旧能被检测到
※由特殊逻辑实现,不属于“无法选择”效果
※所有光环类能力、以及涉及中点判定/格子判定的效果均不受迷彩制约,但存在主动排除受迷彩影响单位的情况(此时站内会特别标注)
※迷彩与“阻挡时解除”没有直接关系,该机制通常由其他效果实现
,选择器会在处理完可选性后(若需要)再进行一次迷彩判定:

  • 若本选择器“无视迷彩”或“强制无视迷彩”,可选中
  • 检查目标是否具有隐匿免疫异常效果: 隐匿
    无法被不同阵营选中(属于无法选择类效果)
    ※隐匿与“阻挡时解除”没有直接关系,该机制通常由其他效果实现
    隐匿免疫: 使自身的隐匿失效,但不会清除相关Buff
    此外,隐匿免疫还会使自身的迷彩失效(但依旧能被检测到持有迷彩
    (即反隐),若有则可选中
  • 若仍未被判定为可选中,若选择器的阵营与目标为敌对关系,则不可选中

迷彩不属于“无法选择”效果,因此即使选择器“无视无法选择”,也可能受迷彩制约。

索敌冷却

(待补充)

仇恨过滤器

仇恨过滤器是一整套对选择器中候选单位进行排序的系统,其排序规则大体上基于干员与敌人的仇恨值,不过也有大量不使用仇恨值的排序规则。
进阶选择器中会将已经过可选性筛选的目标列表传递给仇恨过滤器,过滤器进行常规筛选与排序后返还给选择器——通常,列表最前的若干个目标会被选为此次选择器的对象。
详见仇恨#仇恨过滤器

阵营过滤器

(待补充)

二次过滤器

有些干员与敌人在其索敌方式之外,可能还会使用到二次过滤器secondaryFilter)。
应用二次过滤器时,会在已应用完仇恨过滤器后,从头开始检查列表中的每个单位是否符合过滤条件(例如检查是否为飞行单位),若单位满足条件,则列表中将其与最前一个不满足条件的单位进行互换(而非排序)

ID 名称  解释 范例
0 FLY_FIRST 飞行单位优先 速射手特性
1 RANGED_APPLYWAY_FIRST “图鉴中【攻击方式】包含远程”者优先 安德切尔
2 SPECIFIED_FILTER_TAG 拥有指定tag者优先(以filterTag变量填写对应的tag为准) 格劳克斯
3 SPECIFIED_BUFF 拥有指定Buff者优先(以BuffKey为准) 泥岩小队掷能者
4 SPECIFIED_BUFF_PAIR_OR 自身拥有指定Buff的情况下,拥有指定Buff者优先(以BuffKey为准,存在多对允许的Buff时仅需满足其中一对) “匕现”
5 MELEE_APPLYWAY_FIRST