新元的无名杀扩展教程(一)技能_6继承inherit+子技能subSkill=模板技能
前言
在前面几期中,我们已经知道了trigger类一般技能和特殊技能的基本格式。为了节省我们编辑技能的时间,我现在要介绍一种方法,它的目的来创建一个作为技能模板的技能。
模板技能
我们创建一个技能模板,其目的,是为了引用它。因此他必须要两个基本的特点。
1.便于引用。引用的方法就是输入模板技能的名字(这一点,会在inherit中讲到),因此模板技能名字就必须一眼让人知道他是什么的模板,比如,模板技能名叫trigger,但是trigger的范围很大,就不如写trigger_usual,trigger_limited,trigger_zhuanhuanji等等。
2.模板内容只保留必要的,如果模板技能里面是过于详细,反而会造成诸多阻碍。因此trigger_usual中将trigger,content,filter写上,但其中内容不填;trigger_zhuSkill则只多加个标签,而filter用if语句(在前面提到过)加上player.hasZhuSkill()
多说无益,我们进入下一个话题。
inherit继承
继承,这是skill的一个标签。
inherit:"trigger_usual",
我们只需要这样一输入,保存,再重启,即可让我们的技能继承trigger_usual了。很简单。
在这个新技能中,它将模板技能的trigger,filter,content全部继承过来。
同理,你也可以写别的技能,若你写上
inherit:"yiji"
你这个新技能,保存,重启,就继承了遗计的全部内容。

既然谈到了继承其他技能,不妨说一下游戏本体技能id,这样对于编写技能也更快,游戏本体的技能是很多的,可以用来借鉴。
所以我们就有这样一个思路:对于自己创新的技能则继承模板,而游戏本体有相似的技能,则继承该技能。
无论如何继承都是十分重要的。不要因为只是这样一个小小的标签而忽视它强大的威力。
subSkill
我们已经在前面了解到了subSkill即子技能,它的写法是这样的。
subSkill:{
usual:{},
limited:{},
zhuanhuanji:{},
}
而子技能的技能id是,主技能的id+_+subSkill中写的id。
比如,我们模板技能的id是trigger,subSkill中写的usual这个子技能,它的id就是,trigger_usual
这样,我们就可以把一类技能模板写在同一个技能中。
而且在这里,主技能除了提供一个子技能的一个位置就再无用处,子技能成为真正的主人。
但是,我们也会发现一个严重的问题,那就是子技能越多,技能编辑器就显得有点臃肿了。我们不妨写在主代码中。
主代码怎么创建技能呢?
只需要在其中输入:
lib.skill.xx={}
写法和以前完全相同,比如我们要写模板技能trigger,就可以写成
lib.skill.trigger={
subSkill:{
usual:{
trigger:{},
filter:function(event,player){},
content:function() {},
sub:true
},
zhuSkill:{
trigger:{},
zhuSkill:true,
filter:function(event,player){
if(!player.hasSkill("")) return false
return true
},
content:function() {},
sub:true
},
}
}
在主代码写上以上代码并保存后,要在新技能中继承它,只需要写
inherit:"trigger_zhuSkill"
或者写
inherit:"trigger_usual"