测试结果好奇怪
我刚才调整了一下
我把WaitUpdate那些全部改到了技能脚本里,原来是在AI脚本里的。现在技能脚本里的加血居然不延迟了。
A 1 B
1代表应该释放吟唱后技能的瑾轩;A表示他前面的ID,B表示他后面一位
写法1、
global.WaitForBattleSEEnd(183)
if nextid==1 and battle.CheckPlayerStat(1,157)==1 then
global.WaitForBattleUpdate()
battle.Skip()
player.RemoveStat(0,1,157)
battle.MagicToNpc(id,25082,1)
end
此情况,A完毕,1被跳过,活动ID显示B,但表观正常,是1做出了施法动作;同时,通过调整仙攻,得出吟唱技能确实是1放出的。行动完以后,B再次执行了他自己的AI。表面看起来整个流程并没有不对。
写法2、skip和update换了下顺序
battle.Skip()
global.WaitForBattleUpdate()
此情况,未发现和写法1有区别,完全相同。
写法3、把update搬到了最后
global.WaitForBattleSEEnd(183)
if nextid==1 and battle.CheckPlayerStat(1,157)==1 then
battle.Skip()
player.RemoveStat(0,1,157)
battle.MagicToNpc(id,25082,1)
global.WaitForBattleUpdate()
end
此情况,A完毕,1被跳过,活动ID显示B,表观也不对了,是B做出的施法动作,根据伤害大小得出吟唱技能是B放出的……但是行动完以后,B还是再次执行了自己的AI。
写法4、把battle.Skip()去掉了
global.WaitForBattleSEEnd(183)
if nextid==1 and battle.CheckPlayerStat(1,157)==1 then
global.WaitForBattleUpdate()
player.RemoveStat(0,1,157)
battle.MagicToNpc(id,25082,1)
end
此情况,居然和写法1结果也相同,也就是说skip变成了无用的语句,但是昨天不行,难道就因为从AI改到skill里来写的原因??
写法5写法6,去掉global.WaitForBattleUpdate()、以及把skip和update都去掉。
global.WaitForBattleSEEnd(183)
if nextid==1 and battle.CheckPlayerStat(1,157)==1 then
(battle.Skip())
player.RemoveStat(0,1,157)
battle.MagicToNpc(id,25082,1)
end
这是令我最诧异的结果,这两种也是一样的(所以关键的是update?)
ID1直接被跳过了,B执行它自己的内容,按理说没有update应该就跟他无关了,seend后面再有magicto应该id不变继续活动才对,一时间实在是不能理解。。。