无名杀代码教程 00.7
我又滚来写教程了!回顾我写了几篇专栏,我觉得你们应该会写些技能了吧?(滑稽)
这次讲些难点的
{
enable:"phaseUse",
usable:1,
content: function() {},
}
模板就这个,出牌阶段限一次,xxx
这次讲content里面该怎么写
1.基本效果(不分步)
player.draw();//摸一张牌
player.recover();//回复一点体力
player.damage();//受到一点伤害
2.选择效果(分步)
"step 0"
player.chooseControl("一","二","三",true).set("prompt","请选择要摸的牌数").set("ai", function(){
return 2;
});
"step 1"
player.draw(result.index+1);
//出牌阶段限一次,摸最多3张牌
这里举了个简单的例子,可以看到,分成了"step 0"和"step 1"这两步
像chooseControl chooseCard chooseBool chooseTarget chooseButton chooseCardButton chooseCardTarget等一堆带"choose"的函数,都需要分步
player.chooseControl();//选择一项
里面填选项,后面的true代表必须选一项(实际这个true必填,因为ai可能会点取消。如果需要取消,可以加个cancel2的选项)
player.chooseControl的返回值是一个事件,是一个对象类型。众所周知,事件对象可以用set函数添加键值对。set函数的返回值是修改过的该对象,所以可以继续set。
有些同学看到ai里面的return 2可能会有疑惑,这个技能不是最多摸3张牌吗,为什么不return 3,是不是在削弱ai?
其实不是。chooseControl的ai有2种返回,第一个是返回选项,比如返回"二"代表选了这个选项。也可以返回这个选项的index,也就是第几个选项。不过是从0开始的,所以return 2代表选第3个选项。
step 1里面的result.index和上面讲的index意思一样。比如选了第3个,那么
result.index是2,player.draw(2+1) ,摸三张牌,刚好是我们想要的。
player.chooseControl还有个result.control代表你选择的选项。但没有result.bool
//-----------华丽的分割线------------//
这里深挖一下,你们知道这个result是什么吗?
下一步中的result是上一步最后一个事件的event.result,或者是上一步的event._result
上一步最后一个事件是player.chooseControl,如果这个事件有event.result,那么下一步中的result就是这个event.result
但是
如果step 0没有player.chooseControl,直接写了event._result={index:2}
那么下一步的result.index是2,还是会摸3张牌。
分步,是因为下一步的行动,需要用到上一步的结果。意味着这个技能有策略性。(强行分步除外)
字数到了,溜了

