Merge pull request #230 from ckcz123/v2.0

Skill Documents
This commit is contained in:
Zhang Chen 2018-09-28 11:27:11 +08:00 committed by GitHub
commit fbc70ba521
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 27 deletions

View File

@ -639,47 +639,64 @@ core.statusBar.skill.innerHTML = core.getFlag('skillName', '无'); // 使用flag
### 技能的触发
我们可以按键触发技能。有关绑定按键请参见[自定义快捷键](#自定义快捷键)。
#### 使用道具作为技能
下面是一个很简单的例子当勇士按下W后如果魔力不小于5点则允许开启技能"二倍斩"再次按W则关闭技能。
由于手机端按键十分不方便,虚拟键盘不好用,因此强烈推荐**给每个技能设置一个道具图标,在道具栏点击使用!**
下面是个很简单的例子,要制作一个技能"二倍斩"。
我们可以设置一个道具其cls是`constants`永久道具ID比如是`skill1`。
该道具的使用判定`canUseItemEffect`是`true`(表示任意时候都可使用),使用效果`useItemEffect`是:
``` js
case 87: // W
if (core.status.heroStop) { // 当前停止状态这个if需要加不能在行走过程中触发不然容易出错。
if (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能
if (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少
core.setFlag('skill', 1); // 开技能1
core.setFlag('skillName', '二倍斩'); // 设置技能名
}
else {
core.drawTip("魔力不足,无法开技能");
}
}
else { // 关闭技能
core.setFlag('skill', 0); // 关闭技能状态
core.setFlag('skillName', '无');
}
core.updateStatusBar(); // 立刻更新状态栏和地图显伤
core.status.route.push("key:"+keyCode); // 录像的支持!这句话必须要加,不然录像回放会出错!
if (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能
if (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少
core.setFlag('skill', 1); // 开技能1
core.setFlag('skillName', '二倍斩'); // 设置技能名
}
break;
else {
core.drawTip("魔力不足,无法开技能");
}
}
else { // 关闭技能
core.setFlag('skill', 0); // 关闭技能状态
core.setFlag('skillName', '无');
}
```
简单的说用flag:skill判断当前开启的技能flag:skillName表示该技能名。可在状态栏显示
在勇士处于停止的条件下按下W键时判断当前是否开启了技能如果开启则关闭没开则再判断是否允许开启魔力值够不够等
该(技能)道具任何时候都可被使用;使用时,判断当前是否开启了技能,如果开启则关闭,没开则再判断是否允许开启(魔力值够不够等)。
`core.status.route.push("key:"+keyCode);` 这句话是对录像的支持,一定要加(这样录像播放时也会模拟该按键)。
#### 快捷键触发技能
在PC端我们还可以按键触发技能。
在技能的道具定义完毕后,再将该道具绑定到一个快捷键上。有关绑定按键请参见[自定义快捷键](#自定义快捷键)。
下面是一个很简单的例子当勇士按下W后触发我们上面定义的二倍斩技能。
``` js
case 87: // W
if (core.status.heroStop) { // 当前停止状态这个if需要加不能在行走过程中触发不然容易出错。
if (core.hasItem('skill1')) { // 判定该技能道具是否存在
core.useItem('skill1'); // 使用道具(该技能)
}
}
break;
```
在勇士处于停止的条件下按下W键时判断技能的道具是否存在如果存在再使用它。
!> 123这三个键被默认绑定到了破炸飞如果想用的话也是一样只不过是把已有的实现进行替换。
!> 手机端可以通过长按任何位置调出虚拟键盘,再进行按键,和键盘按键是等价的效果!
### 技能的效果
最后一点就是技能的效果其实到了这里就和RM差不多了。
技能的效果要分的话有地图类技能,战斗效果类技能,后续影响类技能什么的,这里只介绍最简单的战斗效果类技能。
其他的几类技能根据需求可能更为麻烦,有兴趣可自行进行研究。
战斗效果内技能要改两个地方:战斗伤害计算,战后扣除魔力值。

View File

@ -123,9 +123,8 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var equipAnimate = 'hand';
if (core.flags.equipment) {
var equipId = (core.status.hero.equipment||[])[0];
if (core.isset(equipId) && core.isset(core.material.items[equipId])
&& core.isset(core.material.items[equipId].equip.animate))
equipAnimate = core.material.items[equipId].equip.animate;
if (core.isset(core.material.items[equipId]) && core.isset(core.material.items[equipId].equip.animate))
equipAnimate = core.material.items[equipId].equip.animate;
}
core.playSound('attack.mp3');
core.drawAnimate(equipAnimate, x, y);