016 Example:Normalize Armor
这期教程,我们继续来讲解特性实例。
那么,这期教程我们要讲解的是一般化装甲。
一般化装甲(Normalize Armor):被攻击时,以一般属性计算伤害。
首先是PBS部分——

接着,找到这个方法——

这个方法就是在计算伤害时计算属性的伤害的。
我们在这个方法里增加一行——

这里的意思是,原本会计算目标精灵的全部属性,现在,我们在原本属性计算结果的后面,再额外加了一行代码。
意思就是,当满足某某条件时,就不再使用原本的计算结果,而是使用某某属性的计算结果。
而我们就是通过pbCalcTypeFake这个方法来实现这个目标的。
那我们接着就来看一下pbCalcTypeFake这个方法——

这个方法先是定义了new_ret和types,new_ret默认是效果一般,types默认是nil。
接着,根据你的条件,重新定义types,在这里是目标是否有一般化装甲,有就重新定义到[:NORMAL]。
接着,如果types有被重新定义过,那就重新计算属性的伤害,并且让ret等于新计算出的new_ret。
最后,返回ret,也就是说,返回的ret会根据types是否重新定义过而返回不同的值,而types是否被重新定义由是否有一般化装甲这个特性决定。
如果types被重新定义过,那么实际上会返回new_ret,如果types没有被重新定义过,那么会直接返回原本的ret,而原本的ret就是使用精灵原本的属性计算出来的结果。
通过这个方法,我们就可以快速新建装甲类特性,并且不仅仅局限于一种属性。
我们暂且把,被攻击时,以某某属性计算伤害,的这类特性,称为装甲类特性。
比如说这样——

这里我们就新建了一个新的特性XXX,这个特性的精灵被攻击时,会以水属性和火属性计算伤害。
那这个时候,可能会有同学有疑问,那这个装甲类特性和属性破坏类特性有什么区别呢?
的确,它们之间的区别很小,比如说这样,我们就可以实现斩龙的效果——

我只能说,目前没有区别,但是,以后可能就有区别了。
它们的区别在于,被攻击的精灵是否真的改变了属性。
装甲类特性没有改变属性,而属性破坏类是改变了属性的。
比如说,某个精灵的特性是,被攻击时会使用破坏死光进行反击,我们假设这只精灵的属性是一般。
那么,当这只精灵被斩龙攻击时,反击所使用的破坏死光将不会受到自身的本系加成。
另外,装甲类特性和属性破坏类特性并不矛盾,属性破坏是视为某某属性;
而装甲是以某某属性进行伤害计算,本身什么属性并不影响伤害计算。
举个例子,斩龙用暗影爪是打不到一般性装甲的。
最后,加个出场提示——

这期教程,我们继续来讲解特性实例。
那么,这期教程我们要讲解的是一般化装甲。
一般化装甲(Normalize Armor):被攻击时,以一般属性计算伤害。
首先是PBS部分——

接着,找到这个方法——

这个方法就是在计算伤害时计算属性的伤害的。
我们在这个方法里增加一行——

这里的意思是,原本会计算目标精灵的全部属性,现在,我们在原本属性计算结果的后面,再额外加了一行代码。
意思就是,当满足某某条件时,就不再使用原本的计算结果,而是使用某某属性的计算结果。
而我们就是通过pbCalcTypeFake这个方法来实现这个目标的。
那我们接着就来看一下pbCalcTypeFake这个方法——

这个方法先是定义了new_ret和types,new_ret默认是效果一般,types默认是nil。
接着,根据你的条件,重新定义types,在这里是目标是否有一般化装甲,有就重新定义到[:NORMAL]。
接着,如果types有被重新定义过,那就重新计算属性的伤害,并且让ret等于新计算出的new_ret。
最后,返回ret,也就是说,返回的ret会根据types是否重新定义过而返回不同的值,而types是否被重新定义由是否有一般化装甲这个特性决定。
如果types被重新定义过,那么实际上会返回new_ret,如果types没有被重新定义过,那么会直接返回原本的ret,而原本的ret就是使用精灵原本的属性计算出来的结果。
通过这个方法,我们就可以快速新建装甲类特性,并且不仅仅局限于一种属性。
我们暂且把,被攻击时,以某某属性计算伤害,的这类特性,称为装甲类特性。
比如说这样——

这里我们就新建了一个新的特性XXX,这个特性的精灵被攻击时,会以水属性和火属性计算伤害。
那这个时候,可能会有同学有疑问,那这个装甲类特性和属性破坏类特性有什么区别呢?
的确,它们之间的区别很小,比如说这样,我们就可以实现斩龙的效果——

我只能说,目前没有区别,但是,以后可能就有区别了。
它们的区别在于,被攻击的精灵是否真的改变了属性。
装甲类特性没有改变属性,而属性破坏类是改变了属性的。
比如说,某个精灵的特性是,被攻击时会使用破坏死光进行反击,我们假设这只精灵的属性是一般。
那么,当这只精灵被斩龙攻击时,反击所使用的破坏死光将不会受到自身的本系加成。
另外,装甲类特性和属性破坏类特性并不矛盾,属性破坏是视为某某属性;
而装甲是以某某属性进行伤害计算,本身什么属性并不影响伤害计算。
举个例子,斩龙用暗影爪是打不到一般性装甲的。
最后,加个出场提示——
