目前未找到一下技能类型,等待以后实装。
降低范围内敌方tp,降低领域内敌方tp
降低敌方单体tp上升,降低敌方全体tp上升,降低范围内敌方tp上升
ps,笔者是国服才入坑的玩家,角色熟悉度不够,可能会有遗漏,欢迎大家在评论区留言补充举例!
以下是特殊类型
特殊类型
技能施加恐惧debuff,该状态下的角色无法通过普通攻击获得tp。(受伤,技能获取tp不受影响)
例如:专武凯露的ub
ps,事实上加速/减速技能也变相增加/降低了tp获取,这边不作展开了。
快排机制
快排代码
注记:
1,代码为升序结果;
2,arr[]为需要排列的数据,例如:hp,tp,magic str等
如果技能目标是我方角色,输入顺序为一号位-->五号位
如果技能目标是敌方角色,输入顺序为五号位-->一号位
3,A[]表示角色在编队中的位置,方便最后输出编队的位置结果。
输入顺序注记2相同,不再赘述。
4,l(left),r(right)为数组最左和最右的序号
五人编队,l=0,r=4;四人编队,l=0,r=3;以此类推
5,输入确实可以简化只需要arr[]。其他参数l,r,A[]之类的都可以根据arr[]的情形计算得,笔者主要是懒的写,直接做输入就完事了。
文字说明版本(没有代码基础的看这里)
简单的来说,我们可以将角色看成一个数组序列,[]中的值是需要排序的目标,比如magic str,tp,hp等等
我们随便举个例子,以arr[3,4,2,1,8]为例
1:首先选取一个中间值,记作index,pcr取的index=int((left right)/2)
这边left和right为数组最左边和最右边的下标,五个人时,left=0,right=4。
int表示整型,简单的理解就是这个数必须得是个整数,小数点之后的直接舍弃不要。
按照上面的数组arr[],index=int((0 4)/2)=2,此时我们记t=arr[index]=arr[2]=2
当然如果arr[]只有四个数,那么index=int((0 3)/2)=1,以此类推。
2:接着分别从两边遍历,将小于t的放在左边,将大于t的放在右边。
代码中具体实现就是指标i从左往右遍历,指标j从右往左遍历。
i去寻找大于等于t的值,j去寻找小于等于t的值,找到之后arr[i]和arr[j]这两个值进行交换。然后从下一个位置开始再找。当i大于j,就不再遍历。
这样可以做到大于等于t的值被换到右边,而小于等于t的值换到t左边。
按照上面的数组序列arr[],由于t=2
左边3比2大,需要交换;右边8比2大,跳过,下一个1比2小。
所以arr[0]和arr[3]进行交换
原数组变成arr[1,4,2,3,8]
然后继续找,发现左边4比2大,需要交换;右边2跟2相等,也要交换
于是arr[1]和arr[2]交换位置,数组进一步变成arr[1,2,4,3,8]
然后i变为2,j变为1。因为此时i>j,所以不在遍历,进入下一步。
3:以i和j将上述数组分成两部分,重复步骤1和2,直到所有部分都只有一个值。也就是所谓的递归。
按照第二步结果,数组变为arr[1,2,4,3,8],i=2,j=1。
于是数组分成arr[1,2]和arr[4,3,8],再分别对这两个数组重复步骤1和2
最后变成arr[1,2]和arr[3,4,8]
再分开变成arr[1],arr[2],arr[3],arr[4,8]
再重复步骤1,2
变成arr[1],arr[2],arr[3],arr[4],arr[8]
4:最后将分开的部分拼起来,就是最后结果。
最后排序结果为arr[1,2,3,4,8]
单充的目标判定(包含属性相同,阵亡,移动,升/降属性的情形)
单充目标的判定
接下来我们来聊聊关于单充的目标判定。我们以充电狼:tp弓(710) 充电宝(430) 狼(165) 狗(145) 黑骑(135) 为例。
第一步,指定需要排序的目标,例如tp,hp等,排成一个序列。
如果技能目标是我方角色,输入顺序为一号位-->五号位
如果技能目标是敌方角色,输入顺序为五号位-->一号位
充电狼以与充电宝的距离作为排序目标,序列从黑骑-->tp弓排列为,{295,285,265,max,280}
max表示数据类型最大值
第二步,对上述序列进行快排排序
得到结果为{265,280,285,295,max}
这一步也是影响很多充歪之类情形的罪魁祸首。
因为快排算法不稳定,即便你是全部相同的序列,依然会给你打乱顺序。
第三步,根据排序后的序列,选择对应的目标
由于排序结果为升序排列,如果要求是最近,最小,则取最左边;反之取最右边。
从排序结果可以看出,充电狼一般情况下充的是狼
注意,每次技能释放前都会重新排序一次,阵亡,移动,升/降对应属性,都会对排序结果造成影响。
单充目标判定之属性相同情形
part1,充电宝
懒人一图流