赞 | 45 |
VIP | 0 |
好人卡 | 0 |
积分 | 105 |
经验 | 19469 |
最后登录 | 2024-11-23 |
在线时间 | 6142 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 10518
- 在线时间
- 6142 小时
- 注册时间
- 2015-4-26
- 帖子
- 356
|
本帖最后由 煎蛋流Kira☆ 于 2024-7-6 07:44 编辑
查了一下,Yanfly的插件Battle A.I. Core (YEP)可以设定敌人多个条件的行动模式,但是也有一点小问题。
Battle A.I. Core (YEP)插件地址: http://www.yanfly.moe/wiki/Battle_A.I._Core_(YEP)
如果将插件的Dynamic Actions设定为true,官方的说明是,这个选项为true时,敌人不会像默认情况下在战斗回合开始时就决定自己的行动,而是轮到这个敌人时再决定行动。所以如果把这个选项设为true,就算战斗回合开始时满足了敌人特殊行动的条件,只要轮到敌人实际行动前发生的事件使得不再满足条件(如敌人的HP临时得到恢复),敌人就不会采取特殊行动。同理,就算回合开始时不满足条件,只要轮到这个敌人时刚好满足条件,敌人就可以采取特殊行动。
敌人的备注栏写法参考:
- <AI Level: 100>
- <AI Priority>
- Turn % 5 == 0 +++ User HP% param <= 50% +++ Eval user.isStateAffected(11) : Skill 11, Random
- </AI Priority>
复制代码
同时满足回合数为5x、技能使用者HP为50%或以下、技能使用者正处于11号状态这三个条件时,使用11号技能,目标随机。(<AI Level: 100>是为了保证敌人100%会把这个规则加入到行动模式中)
虽然这种做法可以确保不会在条件不满足时采取特殊行动以及条件满足时就会采取特殊行动,但问题是,如果回合开始时不确定敌人要采取什么行动,那么要如何根据技能的速度补正等因素决定角色的行动顺序,从而得知什么时候轮到这个敌人?粗略试了一下我发现其他技能速度补正会影响轮到这个敌人行动的时间,但我并不清楚具体是如何影响的。
另外,因为敌人会灵活地根据轮到自己时的条件来采取行动,所以不会出现“本该采取某个行动但是由于当回合的某些因素而失败了”的情景。以及,Dynamic Actions的设置对所有敌人都有影响。
以上是将插件的Dynamic Actions设定为true的情况。如果将这个选项设为false,敌人将会像默认情况下在战斗回合开始时就决定自己的行动,所以就算像上面那样写出了技能的使用条件,敌人也会出现【当回合不再满足条件时敌人仍然会执行特殊行动】的问题。(另,似乎是因为决定行动的时机变了,需要将 Turn % 5 == 0 改为 Turn % 5 == 4 )
不过,可以结合Yanfly的另一个插件Skill Core (YEP)来在特定条件下禁用技能。在特殊行动所要执行的技能的备注中写入如下内容,这个技能将只能在使用者HP为50%或以下、正处于11号状态时使用(因为回合数不会被角色的行为改变,所以我没有写判定):
- <Custom Requirement>
- if ((user.hp <= user.mhp * 0.5) && (user.isStateAffected(11))) {
- value = true;
- } else {
- value = false;
- }
- </Custom Requirement>
复制代码
Skill Core (YEP)插件地址: http://www.yanfly.moe/wiki/Skill_Core_(YEP)
敌人在回合开始时已经决定使用这个技能但使用时技能不满足使用条件的话,什么都不会发生。如果想在敌人使用被禁用的技能时不是什么都不发生而是显示某些提示的话,或许可以写个插件修改系统的处理逻辑,不过我不会,所以算了。
其他的备选方案还有直接利用Skill Core (YEP)插件在一个空白的技能模板中完整写下这个特殊行动的执行内容,不过说不定修改使用被禁用技能时的处理逻辑还要简单一些。 |
评分
-
查看全部评分
|