✓ ESS21仅限 【TA】【特性】节省(0713)

TAAAAAAA

天王
管理成员
2024/06/16
279
4
39
1,270
首先,这不是一篇教程。
请先去看原贴:https://bbs.pokefans.xyz/threads/244/

这篇帖子只是对原贴里面的一个特性进行了优化,也就是节省特性。
因为原贴中的写法缺少了一部分。
但是,在我自己尝试了之后才发现,情况有点复杂,所以单独发个帖子。

那么我们来看一下——
节省:拥有该特性的宝可梦使用招式时有30%几率不消耗PP值。

原贴中的写法并没有错,只是缺少了一部分,原贴中并没有考虑当技能本身的PP为0时候的情况。
也就是说,原贴中的写法,节省特性只会在PP大于等于1时才会发动。

我个人是觉得,根据特性的描述来看,特性的生效场合,应该是包括PP为0的情况的。

目前,在游戏中只有两种方式会减少PP,一种是在使用技能时,另一种是被压迫感时。

这是原贴中的写法和解释说明——
1720861994946.png
1720862075600.png
有个问题就是为什么move.pp是已经被扣过的?
这主要是因为原贴中pp_save = move.pp + 1 if user.hasActiveAbility?:)PPSAVE) 这行代码所在的位置的问题。
逻辑上是这样的,是先检查使用技能,PP减1,再如果目标有压迫感的话,PP再减1。

这里是检查使用技能的——
1720862403401.png

这里是检查压迫感的——
1720862448364.png

因为把pp_save = move.pp + 1 if user.hasActiveAbility?:)PPSAVE) 这行代码写在了检查使用技能之后,压迫感之前,所以move.pp是已经减过一次PP之后的了。

那么,在解决了原贴中的问题之后,我们来看一下我优化之后的写法。
 

TAAAAAAA

天王
管理成员
2024/06/16
279
4
39
1,270
首先是PBS部分——
1720862886337.png
这里手快打成节约了,一个意思,不影响。

接着,增加一个基于battler的变量——
1720862837826.png

接着,初始化这个变量——
1720862955896.png
PS:你不要问我在哪里增加和初始化。

接着,找到pbCanShowFightMenu?这个方法——
1720863168473.png
注意,此方法在DBK中被覆盖了。
以上的截图是DBK中的方法,如果你没有使用DBK的话,只要复制相应的代码到ESS中原方法的相应的位置就好了。

这一段代码是为了兼容在精灵的所有技能的PP都为0的情况下,依然可以选择技能,而不是点战斗就直接使用挣扎。

接着,找到pbCanChooseMove?这个方法——
1720863546180.png
增加上“这一行”。
注意,此方法也在DBK中被覆盖了。

这一行是为了兼容在技能的PP为0的情况下,依然可以使用技能。

也就是说,这里有两部分,先是所有技能都没有PP时依然可以选择技能,接着,选择的技能如果PP是0也依然可以使用技能。

接着,找到pbReducePP这个方法——
1720870478553.png
将这个方法改成上面的这样。

这里是为了兼容在使用技能时,如果技能的PP为0,技能也不会使用失败。

也就是说,实际上有3步——
1.所有技能都没有PP时依然可以选择技能;
2.选择的技能如果PP为0也依然可以使用技能;
3.使用的技能如果PP为0也不会使用失败。

最后,找到pbEndOfRoundPhase这个方法——
1720870835024.png
然后,往下拉——
1720870892554.png
增加“这一行”。

这里是为了兼容在所有技能的PP都为0,并且节省没有发动的情况。

视频预览——

浏览附件2024-07-13 19-45-40.mp4

感谢阅读。
 

TAAAAAAA

天王
管理成员
2024/06/16
279
4
39
1,270
额外补充的非必要简易AI部分。

首先,找到pbGetMoveScores这个方法——
1720875741341.png
如图所示进行修改。

接着,找到pbReducePP这个方法——
1720875038640.png
同样,如图所示进行修改。

视频预览——

浏览附件2024-07-13 20-53-00.mp4

感谢阅读。
 

在线成员

论坛统计

主题
543
消息
2,480
成员
3,147
最新成员
执余-