无名杀制作扩展教程00.3 摸牌技
摘要:
英姿 独进 短视 幽明 摸金 幸宠
前言:
(2000字废话)
不积跬步,无以至千里。从这里开始,写一个原创的技能吧!
开场语:
摸牌,是最直接的收益,早期还有1血2牌的换算。这里不讨论技能设计,而是讲技能的实现,顺便能知道技能描述对技能代码量的影响。
正文:
讲到摸牌技,肯定绕不开英姿。下面是无名杀里英姿的代码

看到这里,你可能会疑惑:
1.我就想多摸一张牌,为什么要写这么多代码?
2.哪句代码让我多摸一张牌了?没找到
这是一个无名杀官方技能代码,所以很全。实际上,下面的代码大部分情况也能起到相同的效果。
{
trigger:{
player:"phaseDrawBegin",
},
content:function(){
trigger.num++;
},
}
这样看的话,第2个问题现在已经有答案了:
"trigger.num++;"这句代码是让你多摸一张牌的代码。
phaseDrawBegin,即为"摸牌阶段开始时"
trigger,词典查到的意思是"触发",这里指的是触发这个技能的事件。
"++"是自增运算符,简化了很多代码,完整的写法是:
trigger.num = trigger.num + 1;
整个代码可以这么理解:摸牌阶段开始时,摸牌阶段的摸牌数+1。

那么,多的那些代码有什么用?
首先

为了符合规则集,添加了phaseDrawBegin1和
phaseDrawBegin2这两个时机。phaseDrawBegin1这个时机可以放弃摸牌,而phaseDrawBegin2是改变摸牌数的。
那么,这个filter限制了哪些?

event.numFixed指摸牌数是否固定下来了,如果已经固定下来了,改变摸牌数的技能就不生效。
这个机制就是"放弃摸牌",将摸牌数变成0,然后不让摸牌数发生改变。
再后面是
audio:2,
audioname:["sp_lvmeng"],
这两句是技能配音的代码,不做过多阐述。
frequent:true,
默认设置为自动发动,这样就不需要每次发动技能点确认了(但不意味着这个技能变成锁定技了)
ai里面的threaten是嘲讽,1.3的嘲讽值比默认的大,敌人会优先打他。

英姿的技能代码已经讲解完了,接下来就是魔改时间了。
1.改成多摸两张牌
蠢办法,代码写2遍:
trigger.num++;
trigger.num++;
稍聪明的办法:
trigger.num=trigger.num+2;
推荐方法:
trigger.num+=2;
取巧方法:
trigger.num++;
player.draw();
2.多摸X张牌
例子为凌操的独进

Math.floor()就是向下取整的函数
其他的还有
Math.ceil()向上取整
Math.round()四舍五入
比如体力越低越强
trigger.num+=1+player.getDamagedHp();
还有随游戏轮数上升
trigger.num+=game.roundNumber;

差点偏了,这篇教程讲的是摸牌技,英姿只是其中一种。接下来看几个真实的设计

键盘侠是我的扩展《灵枢包》的一个武将。(第二个字念shu一声,不是灵柩,也不阴间)
技能强度不谈,直接看代码

phaseZhunbeiBegin 准备阶段开始时
player.skip("phaseUse");跳过出牌阶段
至于check的那一堆代码,可加可不加。大致意思是如果头上有乐,兵粮或草木,发动这个技能。否则只有在手牌数不比手牌上限多的情况下发动。

另一个例子,玩点论杀的神甄姬

神甄姬没有任何区域,摸牌阶段做这种改动也很合理。
还是直接看代码。

因为是放弃摸牌,所以时机选的是phaseDrawBegin1
trigger.changeToZero();这句代码把trigger.num设置为0,并且把数字固定了,也就是"放弃摸牌"

最后一个例子,小游戏摸牌,由于代码太长,就不放了。(这种设计真的没啥意思)

结语:
看完了新手教程,赶快开始实战吧,先从这个"简单"的技能开始(笑)
