仇恨

游戏中的各类“索敌”机制往往都依赖于仇恨这一系统，而仇恨排序、筛选的过程分为两个部分：权重计算和规则排序。而权重计算又分为“仇恨值计算”与“仇恨过滤器(postFilter)规则计算”两步。
===仇恨值===
每个单位的仇恨值都会根据自身的实体类型选用不同的计算式：
* 敌人类目标的仇恨值 = 1000 * 嘲讽等级 - 路径距离
** 若所在地块可到达目标路径点，则路径距离为：终点距离（以所在地块的坐标为起点，直接串联所有路径点的到终点曼哈顿寻路距离之和，“传送门”之间的距离除外）+修正值（先取“自身所在具体坐标→当前地块中心”的向量V，然后取前进方向上这个向量V的投影值（可负））。单位为“格”，
** 若所在地块不可到达目标路径点，或自身处于地图外，则路径距离为：当前坐标至当前目标路径点的直线距离。单位为“格”，
** 通俗易懂的来讲，这一仇恨值计算方式可以理解为“自身离终点/路径点越近，仇恨值越高”。
* 角色类目标的仇恨值 = 10000 * 嘲讽等级 + 创建时间
** 创建时间为从“战斗开始”到计算的该单位创建时取得的当前战斗计时，其上下限为[0，10000]，每个单位一经取值则不再变化。单位为秒。由于角色类的仇恨值在无嘲讽的情况下等同于其创建时间，而创建时间具有上限，因此可以认为10000s（≈2.78h）之后部署的所有角色类单位是“同时部署”的，在相同嘲讽等级情况下拥有相同的仇恨值。
** 通俗易懂的来讲，这一仇恨值计算方式可以理解为“越晚部署/出现，仇恨值越高”。
* 仇恨值的类型为32bit的float型变量。
===仇恨过滤器（索敌方式）===
* 仇恨过滤器(postFilter)即为最常说的“索敌方式”，每次索敌往往都需要框定所有可选索敌目标单位，列成一份列表（默认为实体创建顺序），对列表进行一次过滤器排序；仇恨过滤器可能会对仇恨值进行二次计算，可能根据仇恨值（或根据其他数值）对目标列表进行排序、筛选、甚至打乱。
*仇恨过滤器最近一次更新时，参考的游戏客户端版本号为1.8.01（简体中文版客户端）。该版本客户端中共有45个仇恨过滤器，5个二次过滤器。其中有10个占位用的仇恨过滤器（未实装进游戏或从未被使用过）。
* 下面提到的“参考值”为一个32bit的float型变量，若无特殊说明，使用到参考值进行排序时，将根据列表中每个单位的参考值，对索敌列表进行一次稳定性排序（逻辑类似插入排序法），最后列表中最靠前(即参考值最小)的一个或数个单位将会被此次仇恨过滤器筛出，成为此次“索敌”的目标。
: 因为排序算法具有稳定性，并不会改变同值项的顺序，所以在情况下目标之间的顺序将会保持为默认的实体创建顺序，故这一情况下，索敌者将无关乎具体数值，优先选择更早创建（通常是部署）的单位。
: 过滤器在比较两个参考值时默认省略小数点后第3位之后的小数，因此参考值较为接近的情况下可能会因此被过滤器视为参考值相同。虽然默认为保留到第3位，但大部分过滤器更常用的是保留到第1位。
*由于仇恨过滤器之间的差距过大，此处会将它们分章节而非列表格进行介绍。
如需查看各种仇恨过滤器的详细信息，请前往仇恨页面页面进行查阅。
====全部====
ID: 0 | ALL
不进行排序，直接使用默认的实体创建顺序。
典型使用者：各类群体攻击、无差别攻击。
====终点距离升序====
ID: 1 | DIST_TO_EXIT_ASC
不使用仇恨值，直接使用单位的终点距离（见上方“仇恨值”部分）作为参考值进行排序。
即“终点距离越短越容易被选中”。
暂未被使用。
====生命值比例升序====
ID: 2 | HP_RATIO_ASC
不使用仇恨值，直接使用单位的生命值百分比作为参考值。
即“生命值（百分比）越低越容易被选中”。
典型使用者：苦艾一技能、始海穿刺者、富营养的穿刺者。
====生命值比例升序(满生命值除外)====
ID: 3 | HP_RATIO_NOT_FULL_ASC
排除所有满生命值单位。
不使用仇恨值，直接使用单位的生命值百分比作为参考值。
即“除满生命值外，生命值（百分比）越低越容易被选中”。
典型使用者：各类医疗干员的普通治疗、各类治疗技能等。
====仇恨降序====
ID: 4 | HATRED_DES
参考值为仇恨值的相反数
即“仇恨值越高越容易被选中”。
典型使用者：一般的攻击、技能索敌、甚至一小部分群体攻击都是这个
====仅生命值未满目标====
ID: 5 | HP_RATIO_NOT_FULL
排除所有满生命值单位。
不进行排序，直接使用默认的实体创建顺序。
典型使用者：（待补充）
====优先飞行单位，仇恨降序====
ID: 6 | HATRED_DES_FLY_FIRST
参考值为仇恨值的相反数；若为非飞行单位，参考值+1000000
即“飞行单位更容易被选中，然后仇恨值越高越容易被选中”。
仅安德切尔使用，一般的速射手不会使用这一仇恨过滤器。
====优先远程单位，仇恨降序====
ID: 7 | HATRED_DES_RANGED_FIRST
参考值为仇恨值的相反数；若为非“图鉴中【攻击方式】包含远程的敌人”，参考值+1000000
即“远程单位更容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====防御降序====
ID: 8 | DEF_DES
参考值为 防御值 * (-1000) - 仇恨值
即“防御值越高越容易被选中，然后仇恨值越高越容易被选中”。
史都华德、刻俄柏二技能
====防御升序====
ID: 9 | DEF_ASC
参考值为 防御值*1000-仇恨值
即“防御值越低越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：神射手
====距离来源距离降序====
ID: 10 | DIST_TO_SOURCE_DES
不使用仇恨值，直接取单位与自身的距离平方的相反数作为参考值。
即“距离自身越远越容易被选中”。
典型使用者：钩索师
====距离来源距离升序====
ID: 11 | DIST_TO_SOURCE_ASC
不使用仇恨值，直接取单位与自身的距离平方作为参考值。
即“距离自身越近越容易被选中”。
典型使用者：推击手、工程蓄水炮
====只选未眩晕目标，仇恨降序====
ID: 12 | NOT_STUNNED_HATRED_DES
排除所有的单位。
参考值为 仇恨值的相反数。
即“除眩晕单位外，仇恨值越高越容易被选中”。
典型使用者：萨卡兹术师的捆绑技能
====距离来源垂直距离升序====
ID: 13 | DIRECTIONAL_DIST_TO_SOURCE_ASC
不使用仇恨值，计算“来源→单位”的向量V，取向量V在来源朝向方向上的投影值作为参考值进行排序。
可以粗略的理解为“横坐标（左右朝向）上或纵坐标上（上下朝向），距离自身越近越容易被选中”。
典型使用者：食铁兽二技能
====随机====
ID: 14 | RANDOM
不使用仇恨值，不进行排序，随机打乱。
典型使用者：刻刀一技能；艾雅法拉的3技能与阿米娅的2技能不使用这个。
====生命值降序====
ID: 15 | HP_DES
参考值为 生命值 * (-1000) - 仇恨值。
即“生命值(数值)越高越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：W三技能
====生命值升序====
ID: 16 | HP_ASC
参考值为 生命值 * 1000 - 仇恨值。
即“生命值(数值)越低越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====攻击力降序====
ID: 17 | ATK_DES
参考值为 攻击力 * (-1000) - 仇恨值。
即“攻击力越高越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====攻击力升序====
ID: 18 | ATK_ASC
参考值为 攻击力 * 1000 - 仇恨值。
即“攻击力越低越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====最大血量降序====
ID: 19 | MAX_HP_DES
参考值为 最大生命值 * (-1000) - 仇恨值。
即“最大生命越高越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：鼠王唱沙
====最大血量升序====
ID: 20 | MAX_HP_ASC
参考值为 最大生命值 * 1000 - 仇恨值。
即“最大生命越低越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：鼠王沙暴
====优先正前方，曼哈顿距离升序====
ID: 21 | FORWARD_FIRST_MANHATTAN_ASC
对于自身朝向的“正前方”的单位：参考值为 1000*曼哈顿距离两点在南北方向上的距离加上在东西方向上的距离，即两点的横坐标之差的绝对值+纵坐标之差的绝对值。 - 仇恨值。
对于除此之外的单位：参考值为 1000000*曼哈顿距离 - 仇恨值。
可以粗略的理解为“先看正前方的单位，距离越近越容易被选中，然后仇恨值越高越容易被选中；然后再看其他单位，距离越近越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：阿的两个爆发剂技能
====优先未阻挡目标，仇恨降序====
ID: 22 | HATRED_DES_UNBLOCKED_FIRST
参考值为仇恨值的相反数；被阻挡单位参考值+1000000
即“被阻挡的单位优先，然后仇恨值越高越容易被选中”。
典型使用者：刻俄柏1技能
====生命值未满目标中随机====
ID: 23 | HP_NOT_FULL_RANDOM
排除所有生命值未满的单位
不使用仇恨值，不进行排序，排除后随机打乱。
典型使用者：清流二技能
====优先隐形目标，仇恨降序====
ID: 24 | HATRED_DES_INVISIBLE_FIRST
参考值为仇恨值的相反数；不持有单位参考值+1000000。
即“持有隐形的单位优先，然后仇恨值越高越容易被选中”。
典型使用者：极境二技能
====优先最远，仇恨降序====
ID: 25 | HATRED_DES_DIST_FARTHER_FIRST
计算来源与单位之间的直线距离，参考值为 -1000000 * 直线距离 - 仇恨值。
即“距离来源越远越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：爱国者投枪
| 
====优先最近，仇恨降序====
ID: 26 | HATRED_DES_DIST_NEARER_FIRST
计算来源与单位之间的直线距离，参考值为 1000000 * 直线距离 - 仇恨值。
即“距离来源越近越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====重量降序====
ID: 27 | MASS_DES
参考值为 重量等级 * (-1000) - 仇恨值。
即“重量越高越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：攻城手
====重量升序====
ID: 28 | MASS_ASC
参考值为 重量等级 * 1000 - 仇恨值。
即“重量越低越容易被选中，然后仇恨值越高越容易被选中”。
典型使用者：（待补充）
====优先沉睡单位，仇恨降序====
ID: 29 | HATRED_DES_SLEEPING_FIRST
参考值为仇恨值的相反数；不持有单位参考值+1000000。
即“持有沉睡的单位优先，然后仇恨值越高越容易被选中”。
典型使用者：瑕光
====生命值百分比升序，具有可抵抗状态者优先====
ID: 30 | HP_RATIO_ASC_CONTAINS_STATUS_RESISTABLE_BUFF_FIRST
不使用仇恨值。以剩余血量比例为参考值进行排序；不具有可抵抗状态的单位参考值+1000000。
即“仇恨值越高越容易被选中，具有可抵抗状态者优先”。
典型使用者：絮雨
====忽略免疫睡眠目标，仇恨降序====
ID: 31 | HATRED_DES_IMMUNE_SLEEPING_EXCLUDE
排除持有或是的目标。
参考值为 仇恨值的相反数；未被阻挡单位+1000000权重
即“除免疫睡眠的目标外，仇恨值越高越容易被选中”。
典型使用者：爱丽丝2技能
====元素值降序====
ID: 32 | EP_DES
不使用仇恨值，以全种类元素中的最低值降序为参考值进行排序。
即“显示的元素值越低越容易被选中”。
典型使用者：首言者侵蚀液泡
====仇恨降序，被阻挡优先====
ID: 33 | HATRED_DES_BLOCKED_FIRST
参考值为 仇恨值的相反数；未被阻挡单位+1000000权重
即“仇恨值越高越容易被选中，被阻挡的单位优先”。
典型使用者：歌蕾蒂娅2技能
====创建时间降序====
ID: 34 | CREATED_TIME_DES
不使用仇恨值，直接使用单位的创建时间（见上方“仇恨值”部分）作为参考值进行排序。
即“越晚部署的越容易被选中”。
典型使用者：（待补充）
====创建时间升序====
ID: 35 | CREATED_TIME_ASS
不使用仇恨值，直接使用单位的创建时间（见上方“仇恨值”部分）的相反数作为参考值进行排序。
即“越早部署的越容易被选中”。
典型使用者：（待补充）
====满生命值目标以外，血量比例升序，优先我与我的召唤物====
ID: 36 | HP_RATIO_NOT_FULL_ASC_MY_TOKEN_OR_ME_FIRST
排除所有生命值均为满的单位。
若自身的召唤物处于范围内（且生命值不为满），排序前将自身的召唤物强制加入到列表末尾（无视）。
不使用仇恨值，以生命值百分比为参考值；自身与自身的召唤物以外的单位参考值+1000000。
即“生命值（百分比）最低者更容易被选中，优先治疗”
典型使用者：凯尔希（其召唤物为Mon3tr）
====元素值升序，生命值百分比升序优先，仅不全满====
ID: 37 | EP_MIN_ASC_HP_RATIO_ASC_FIRST_NOT_ALL_FULL
排除所有元素值(全种类)与生命值均为满的单位。
不使用仇恨值，不处理参考值，根据“全种类元素值中的最低值”升序排序，出现同值时单位之间以生命值百分比升序排序。
即“显示元素值最低者更容易被选中，然后生命值（百分比）最低者更容易被选中”
典型使用者：行医的技能
====生命值百分比升序，元素值升序优先，仅不全满====
ID: 38 | HP_RATIO_ASC_EP_MIN_ASC_FIRST_NOT_ALL_FULL
排除所有元素值(全种类)与生命值均为满的单位。
不使用仇恨值，不处理参考值，根据生命值百分比升序排序，出现同值时单位之间以“全种类元素值中的最低值”升序排序。
即“生命值（百分比）最低者更容易被选中，然后显示元素值最低者更容易被选中”
典型使用者：行医通常状态下的治疗
====血量百分比升序，创建时间降序优先====
ID: 39 | HP_RATIO_ASC_CREATED_TIME_DES_FIRST
未知
典型使用者：琴柳2技能
====仇恨降序，寒冷者优先，然后未冻结者====
ID: 40 | HATRED_DES_COLD_FIRST_THEN_NOT_FROZEN
未知
典型使用者：灵知3技能
====网格位置，行小，列大====
ID: 41 | GRIDPOS_BY_SMALL_COL_BIG_ROW
未知
====阻挡数降序====
ID: 42 | BLOCK_COUNT_DES
未知
====血量百分比升序，仅持有可抵抗状态者====
ID: 43 | HP_RATIO_ASC_CONTAINS_STATUS_RESISTABLE_BUFF
未知
====重量降序，沉睡者优先====
ID: 44 | MASS_DES_SLEEPING_FIRST
未知
===二次过滤器===
在进行完过滤器排序后，可能还会进行规则排序；有时会使用到二次过滤器(secondaryFilter)：
ID	名称  	解释
0 	FLY_FIRST 	优先飞行（所有的对空狙击）
1 	RANGED_APPLYWAY_FIRST 	优先“图鉴中【攻击方式】包含远程的敌人”（安德切尔）
2 	SPECIFIED_FILTER_TAG 	XXtag优先（需要配合filterTag变量填写对应的tag，例如格劳克斯）
3 	SPECIFIED_BUFF 	优先含有指定Buff（以BuffKey为识别目标）的单位
4 	SPECIFIED_BUFF_PAIR_OR	优先含有复数指定Buff（以BuffKey为识别目标）的单位
分类:游戏数据