示例,充电狼
我们依然以充电狼为例子,如果狼和tp弓因为某些原因跟充电宝的距离相同,该充谁?
我们简单的将输入改为{295,285,272,max,272},实战不一定有这个结果,这边只是示例
结果,快排输出的顺序为35214,三号位狼在序列最左,所以充狼
小结:考虑充电宝前后角色与充电宝的距离相同
充电宝二号位,充三号位
充电宝三号位,充四号位(已经考虑一号位和五号位的影响,结论不变)
充电宝四号位,充三号位
part2,露娜
懒人一图流
待更新
露娜是根据hp做的排序,考虑不满血hp比例相同的情形太复杂, 这边只考虑满血相同的情形。
注意,露娜的充电技能是伤害己方队友,所以在逻辑判断上把己方当做了敌人,快排排序的输入得从五号位-->一号位
直接放结论(硬核数据版):
单充目标判定之阵亡
角色阵亡等同于少人,五人排序和四人排序的结果是不一样的。
我们以猫剑打:tp弓,鸭梨瞎,毛二力,狼,狗为例,不考虑属性升降等因素影响。对魔攻进行排序
排序结果为21354,猫剑第一个技能打鸭梨瞎
如果鸭梨瞎阵亡,我们对剩下四个人进行排序,排序结果为2143
所以猫剑下一个技能会打毛二力
如果换成狗阵亡,排序结果仍然为2143
但是猫剑打的人会变成鸭梨瞎
单充目标判定之移动
移动主要影响的是以距离为判据的充电技能
由于取整原因,多走
这块我在站位机制和先后手机制的帖子里面详细描述过了,就不赘述了。
大家最熟悉的例子应该是,充电狼打龙会充歪
实战中,开局的移速为12/帧,由于时间有最小单位帧,移动的距离得是12的整数倍。初始我方角色两两相距200,由于目标位置和受击宽度的不同,使得移动的距离会有不同。这直接导致了tp弓,充电宝,狼最终多走的距离有差异,使得tp弓离充电宝更近,充电宝充了tp弓而不是狼。
由于击退等原因,“顺手牵羊”
大家最熟悉的例子应该是,充电狼打金牛座
黑骑被击退后,黑骑跑回来路过充电宝时正好赶上充电宝释放充电技能,顺路偷走了本来应该充给狼的tp。
当然妈的1技能,兔子的后跳等技能都有位移判定,都会对以距离为判据的充电技能产生影响。
特别强调,黑骑的后撤步没有位移判定!!!
单充目标判定之属性升/降
猫剑偷电
懒人一图流
待更新
猫剑偷电机制解释
一,猫剑1技能攻击目标为魔法攻击力最高的角色,同时降低该目标魔法攻击力。(魔法攻击力可以为负)
二,不考虑阵亡因素影响。条件分歧,如果偷电/ub时,降低魔法攻击力的debuff消失,则目标与一完全相同;如果偷电/ub时,降低魔法攻击力的debuff还在,则重新排序,确定此时魔法攻击力最高角色,并作为目标。
以下情形不考虑嘲讽等其他因素影响
全0攻的技能目标
五个敌方单位
五个单位全0攻,排序结果21354,目标为四号位
四号位被降魔攻,排序结果42153,目标为三号位
三号位被降魔攻,排序结果32145,目标为五号位
四个敌方单位
四个单位全0攻,排序结果2143,目标为三号位
三号位被降魔攻,排序结果2134,目标为四号位
四号位被降魔攻,排序结果4123,目标为三号位
三个敌方单位
三个单位全0攻,排序结果123,目标为三号位
三号位被降魔攻,排序结果312,目标为二号位
二号位被降魔攻,排序结果213,目标为三号位
两个敌方单位
两个单位全0攻,排序结果12,目标为二号位
二号位被降魔攻,排序结果21,目标位一号位
一号位被降魔攻,排序结果12,目标为二号位
单T阵容,T有魔攻,其余魔攻全为0的技能目标
五个敌方单位,T被降魔攻, 排序结果12354,目标为四号位
四个敌方单位,T被降魔攻, 排序结果1243,目标为三号位
三个敌方单位,T被降魔攻, 排序结果123,目标为三号位
两个敌方单位,T被降魔攻, 排序结果12,目标为二号位
其他常见实例,黄骑首充(逻辑判定与动画实现)
懒人一图流
想把黄骑首充单独拎出来讲,主要是因为黄骑首充涉及到逻辑判定和动画实现。即公主连结游戏机制中,逻辑运算与动画渲染完全独立,虽然初始看起来都是0tp,实际上逻辑判断中已经获得了tp,只是还没有渲染成动画。
黄骑首充机制
第一步,输入我方的tp序列。
比黄骑先停下的角色tp=90(100 tp上升)/100,实战中前排角色还会由于判定受击,导致tp获取更多。
比黄骑后停的角色tp=0。
黄骑,因为技能判定在技能回复tp之前,所以在充电目标判定时,黄骑的tp=0。
第二步,快排排列,此处不再赘述。
硬核数据版本详见笔者的黄骑首次充电机制解析
tp断点问题
tp上升的影响,只有质变没有量变,没有到达一个特定的值,是没有影响的。
只考虑行动回复的tp
单次行动回复的tp=90*(100 tp上升)/100
想要对战局造成影响,那么回复的tp必须让ub更快,即少动一次开ub
于是我们进行如下计算:
设N为行动次数,N和tp上升均为自然数,需要满足如下不等式才能开出ub:
N*90*(100 tp上升)/100>1000
分别取对应的N可以得到
N=11,tp上升=0
N=10,tp上升=12
N=9,tp上升=24
N=8,tp上升=39
N=7,tp上升=59
N=6,tp上升=86
…………以此类推
可以看到tp上升造成的影响并不是一个光滑的函数,而是有断点的。例如tp上升0和11在这个情况下就没有任何区别。
进一步,我们加入攻击间隔的因素
因为战斗是限时的,我们以公会战为例子。
若A角色在一分半的限定时间内,行动了24次
只考虑行动回复tp时,假设释放ub的次数为M,其中M,N为自然数。
想要在限定时间内多一个ub,必须满足:
N*M≥24,
M=2,N=12,tp上升=0
M=3,N=8,tp上升=39
M=4,N=6,tp上升=86
…………以此类推
再进一步,我们可以考虑受击和充电技能的影响
这两个因素会让tp上升的断点距离变得更近。
举个例子
36tp上升的角色A在一场战斗中确实只能释放两次ub
但是如果A角色吃到了伤害或者吃到了充电,那么就可以释放三次ub。
这边我只是想告诉大家tp上升存在断点这个事实人为考虑这么多因素难度挺大的,但是我们可以大致知道tp上升在哪个范围,可以多出来一个ub。
事实上,因为角色的技能起手和循环已知,技能间隔已知,回复tp途径已知,tp上升的影响已知,角色和boss属性已知,boss的循环已知,伤害计算公式已知。
不考虑miss等不可控因素的影响,完全可以做出一个程序,大致的判断哪一个角色,在什么等级,多少tp上升的条件下,可以多出来一个ub。
有没有大佬有兴趣试试,这个还是挺有趣的。