【只狼】巨型忍者 枭——AI机制解析
今天又头秃了一晚上终于大体上搞明白AI机制怎么看了,555我太难了

先对AI机制进行分类:主动计划、反击计划、干扰对策

枭的主动计划:太复杂了,略

变招计划:之前说过了:


开始今天的正文,枭的反击计划:
AI在执行反击计划时,需要检测反击节点,即何时反击,对枭而言,有以下节点会采取反击计划:
1、枭在自身的右手侧弹开
反斩、蹬大狼
2、左手侧弹开
反斩、肘击+鞭炮斩、烟雾弹、蹬大狼
3、神秘数字大于等于22(神秘数字后面介绍)
后跳
4、被弹开后做出刀往自身右侧撇的动作(比如义父在左手侧招架后直接出刀反击,如果此到被弹开则进入第四种反击计划)
如果神秘数字大于等于25:
反斩、后跳撒鞭炮
神秘数字<25:
反斩、假动作反斩、后跳撒鞭炮
5、被弹开后做出刀往自身左侧撇的动作(比如义父平砍三连的第三刀被弹开)
反斩、假动作反斩、烟雾弹
6、枭在自身的右手侧招架
反斩、假动作反斩
7、左手侧招架
反斩、假动作反斩、烟雾弹
顿号之间表示都有可能,具体可能性的计算我还没有参透
最后还有一条,如果没被忍杀过一次,则不能出烟雾弹
除了这7种情况外,均为主动计划或者干扰响应。

神秘数字:
什么,你是心算大佬?那么听好了,预判后跳的方法就在这里:
当义父做出任何攻击动作后,会增加神秘数字的值,而后跳和后跳撒鞭炮会让这个值清零
不论是主动后跳还是反击后跳都会清零!
平砍三连或平砍二连+转身二连:+2+5+3(全出完共+10)
手里剑+追斩:+9
跳劈:+9
蹬大狼:没蹬到+1
蹬大狼+手里剑:共+5
蹬大狼+撒毒:共+25
二连飞镖+跳劈:+1+1+7=9(一般不会被打断)
荡刀+禁药或转身二连:+5+3=8(右前方垫步躲第一刀的话不出禁药或转身二连)
原地直接扔禁药球:+6
上面是常见的主动计划对应的神秘数字变化
下面是反击的情况:
鞭炮斩:+25(所以可以稳定招架后接后跳)
各种反斩:+6
蹬大狼:没蹬到+10,蹬到了同上
烟雾弹:+6

亲爱的小伙伴,你学废了吗?

代码附录:
local local0 = ReturnKengekiSpecialEffect(arg1[S1] )
if local0 == 0 then
return false
end
local local1 = {}
local local2 = {}
local local3 = {}
Common_Clear_Param(local1, local2, local3)
local local4 = arg1:GetDist(TARGET_ENE_0)
local local5 = arg1:GetSp(TARGET_SELF)
if local0 == 200226[S2] then
local1[9] = 200
local1[10] = 100
elseif local0 == 200210[S3] then
if 4 <= local4 then
local1[26] = 100
else
local1[1] = 150
local1[12] = 300[S4]
end
elseif local0 == 200211[S5] then
if 4 <= local4 then
local1[26] = 100
else
local1[2] = 150
local1[4] = 300
local1[8] = 800
local1[12] = 200
end
elseif 25 - 3 <= arg1:GetNumber(5) then
if 4 <= local4 then
local1[26] = 100
elseif local0 == 200201 or local0 == 200211 or local0 == 200216 then
local1[8] = 300
local1[24] = 100
else
local1[24] = 100
end
elseif local0 == 200200[S6] then
if 4 <= local4 then
local1[26] = 100
elseif 25 <= arg1:GetNumber(5) then
local1[1] = 200
local1[3] = 100
local1[26] = 100
else
local1[1] = 100
local1[6] = 100
local1[3] = 100
local1[26] = 100
end
elseif local0 == 200201[S7] then
if 4 <= local4 then
local1[26] = 100
else
local1[2] = 100
local1[7] = 100
local1[8] = 1500
local1[26] = 100
end
elseif local0 == 200215[S8] then
if 4 <= local4 then
local1[26] = 100
elseif 25 <= arg1:GetNumber(5) then
local1[1] = 200
local1[6] = 200
else
local1[1] = 200
local1[6] = 200
end
elseif local0 == 200216[S9] then
if 4 <= local4 then
local1[26] = 100
else
local1[2] = 100
local1[7] = 100
local1[8] = 1500[S10]
end
end
if arg1:HasSpecialEffectId(TARGET_SELF, 200051) == false then
local1[8] = 0
end
注释:
[S1]产生变招的反击信号
[S2]抱杀被弹开……但是这一招不会出啊
[S3]右手侧弹开
[S4]实测23,有20次选在1,3次选在12
[S5]左手侧弹开
[S6]被弹开后做出刀往自身右侧撇的动作
[S7]被弹开后做出刀往自身左侧撇的动作
[S8]右手侧招架
[S9]左手侧招架
[S10]应该是数字越小概率越大