017 Example:Time Traveler
这期教程,我们继续来讲解特性实例。
那么,这期教程我们要讲解的是时间旅者。
时间旅者(Time Traveler)——
濒死时,进行时间旅行,回到最后一次受到伤害之前的状态;
每打倒一个对手,就可以额外旅行一次。
首先是PBS部分——

这个特性分为两个部分,那我们就先来看第一部分——

第一部分到上面的代码为止,我觉得你应该是写得出来的。
唯一的难点应该就是,如何得到濒死之前的HP的值。
我们搜索pbReduceHP这个方法——

这个方法会在HP减少的时候调用。
我们加上这行代码——

也就是说,我们需要新加一个基于battler的变量,来记录造成濒死时受到的伤害。
那么,我们补上——

到这里的话,其实我想说,并不是所有的这些额外的变量都需要初始化,就比如说这个,其实就不需要,但是,为了以防万一,保证你绝对不会出错,我们还是初始化一下吧——

这样就好了,那么就是——

这样就能进行时间旅行了。
但是,目前这样的话可以进行无限次时间旅行,显然这并不是我们想要的,所以我们接着来做第二部分。
第二部分是,每打倒一个对手,就可以额外旅行一次。
我们很容易就可以想到,自信过度就有类似的效果——

也就是说,我们可以这样——

所以,这里我们还需要一个额外的基于battle的变量来存储进行时间旅行的次数。
那么——

初始化——

初始化到了1,也就是说,默认可以进行1次时间旅行。
接着,写两个方法,一个用来检测是否可以进行时间旅行,另一个用来控制可以进行额外时间旅行的次数。

这些基本上都没有必要过多解释了,看不懂的话去看前面的教程吧。
唯一需要说一下的就是这里出现了-=和+=,那么这两个是什么呢?
我们还是用例子来进行说明吧。
a = a - 1,可以直接简写成a -= 1,这样写更加简略;
同理,a = a + 1,可以直接简写成a += 1。
那我们就假设a = 5,a -= 2就是a = a - 2,先算右边,就是a = 5 - 2,就是a = 3,所以最后a == 3。
+的时候也是同理。
所以,上面的话就是新写了两个方法,第一个pbTravelOver?方法用来检测是否可以进行时间旅行,当可进行的时间旅行的次数是0的话,就不能进行时间旅行了;
当能进行时间旅行时,会把可进行的时间旅行的次数减少1。
而后一个pbExtraTravel方法是,通过amount参数来增加可进行的时间旅行的次数。
所以,我们把相应的特性部分的代码补完整——


这样就只有当可以进行时间旅行时,才会在自身濒死时进行时间旅行,而不是可以进行无限次数的时间旅行。
另外需要注意,因为travelTime是基于battle的变量,所以可以进行时间旅行的次数在精灵下场后是不会刷新的,是几次就是几次,不会多也不会少。
接着,增加一下出场提示——

想一下这样可以吗?
这样当然是不可以的,因为pbTravelOver?每调用一次,就会使可以进行的时间旅行的次数减少1。
而在这里,我们并不想让它减少1,那么该怎么做呢?
我们可以直接这样——

这样的话,在精灵上场时,如果能进行时间旅行,就会出现特性条提示,如果不能,就不会出现提示。
请自行进入游戏测试这个特性。
那么这期教程就到此为止。
视频预览(0730)——
浏览附件2024-08-01 22-26-54.mp4
感谢阅读。
这期教程,我们继续来讲解特性实例。
那么,这期教程我们要讲解的是时间旅者。
时间旅者(Time Traveler)——
濒死时,进行时间旅行,回到最后一次受到伤害之前的状态;
每打倒一个对手,就可以额外旅行一次。
首先是PBS部分——

这个特性分为两个部分,那我们就先来看第一部分——

第一部分到上面的代码为止,我觉得你应该是写得出来的。
唯一的难点应该就是,如何得到濒死之前的HP的值。
我们搜索pbReduceHP这个方法——

这个方法会在HP减少的时候调用。
我们加上这行代码——

也就是说,我们需要新加一个基于battler的变量,来记录造成濒死时受到的伤害。
那么,我们补上——

到这里的话,其实我想说,并不是所有的这些额外的变量都需要初始化,就比如说这个,其实就不需要,但是,为了以防万一,保证你绝对不会出错,我们还是初始化一下吧——

这样就好了,那么就是——

这样就能进行时间旅行了。
但是,目前这样的话可以进行无限次时间旅行,显然这并不是我们想要的,所以我们接着来做第二部分。
第二部分是,每打倒一个对手,就可以额外旅行一次。
我们很容易就可以想到,自信过度就有类似的效果——

也就是说,我们可以这样——

所以,这里我们还需要一个额外的基于battle的变量来存储进行时间旅行的次数。
那么——

初始化——

初始化到了1,也就是说,默认可以进行1次时间旅行。
接着,写两个方法,一个用来检测是否可以进行时间旅行,另一个用来控制可以进行额外时间旅行的次数。

这些基本上都没有必要过多解释了,看不懂的话去看前面的教程吧。
唯一需要说一下的就是这里出现了-=和+=,那么这两个是什么呢?
我们还是用例子来进行说明吧。
a = a - 1,可以直接简写成a -= 1,这样写更加简略;
同理,a = a + 1,可以直接简写成a += 1。
那我们就假设a = 5,a -= 2就是a = a - 2,先算右边,就是a = 5 - 2,就是a = 3,所以最后a == 3。
+的时候也是同理。
所以,上面的话就是新写了两个方法,第一个pbTravelOver?方法用来检测是否可以进行时间旅行,当可进行的时间旅行的次数是0的话,就不能进行时间旅行了;
当能进行时间旅行时,会把可进行的时间旅行的次数减少1。
而后一个pbExtraTravel方法是,通过amount参数来增加可进行的时间旅行的次数。
所以,我们把相应的特性部分的代码补完整——


这样就只有当可以进行时间旅行时,才会在自身濒死时进行时间旅行,而不是可以进行无限次数的时间旅行。
另外需要注意,因为travelTime是基于battle的变量,所以可以进行时间旅行的次数在精灵下场后是不会刷新的,是几次就是几次,不会多也不会少。
接着,增加一下出场提示——

想一下这样可以吗?
这样当然是不可以的,因为pbTravelOver?每调用一次,就会使可以进行的时间旅行的次数减少1。
而在这里,我们并不想让它减少1,那么该怎么做呢?
我们可以直接这样——

这样的话,在精灵上场时,如果能进行时间旅行,就会出现特性条提示,如果不能,就不会出现提示。
请自行进入游戏测试这个特性。
那么这期教程就到此为止。
视频预览(0730)——
浏览附件2024-08-01 22-26-54.mp4
感谢阅读。