Merge branch 'v2.0' of https://github.com/ckcz123/mota-js into v2.0
This commit is contained in:
commit
a68f3ccf74
@ -63,18 +63,19 @@ return code;
|
|||||||
*/;
|
*/;
|
||||||
|
|
||||||
shopsub
|
shopsub
|
||||||
: '商店 id' IdString '标题' EvalString '图标' IdString BGNL? Newline '快捷商店栏中名称' EvalString BGNL? Newline '使用' ShopUse_List '消耗' EvalString BGNL? Newline '显示文字' EvalString BGNL? Newline shopChoices+ BEND
|
: '商店 id' IdString '标题' EvalString '图标' IdString BGNL? Newline '快捷商店栏中名称' EvalString '共用times' Bool BGNL? Newline '使用' ShopUse_List '消耗' EvalString BGNL? Newline '显示文字' EvalString BGNL? Newline shopChoices+ BEND
|
||||||
|
|
||||||
|
|
||||||
/* shopsub
|
/* shopsub
|
||||||
tooltip : 全局商店,消耗填-1表示每个选项的消耗不同,正数表示消耗数值
|
tooltip : 全局商店,消耗填-1表示每个选项的消耗不同,正数表示消耗数值
|
||||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97
|
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97
|
||||||
default : ["shop1","贪婪之神","blueShop","1F金币商店",null,"20+10*times*(times+1)","勇敢的武士啊, 给我${need}金币就可以:"]
|
default : ["shop1","贪婪之神","blueShop","1F金币商店",false,null,"20+10*times*(times+1)","勇敢的武士啊, 给我${need}金币就可以:"]
|
||||||
var code = {
|
var code = {
|
||||||
'id': IdString_0,
|
'id': IdString_0,
|
||||||
'name': EvalString_0,
|
'name': EvalString_0,
|
||||||
'icon': IdString_1,
|
'icon': IdString_1,
|
||||||
'textInList': EvalString_1,
|
'textInList': EvalString_1,
|
||||||
|
'commonTimes': Bool_0,
|
||||||
'use': ShopUse_List_0,
|
'use': ShopUse_List_0,
|
||||||
'need': EvalString_2,
|
'need': EvalString_2,
|
||||||
'text': EvalString_3,
|
'text': EvalString_3,
|
||||||
@ -1638,7 +1639,7 @@ ActionParser.prototype.parse = function (obj,type) {
|
|||||||
choice.text,choice.need||'',text_effect,text_choices]);
|
choice.text,choice.need||'',text_effect,text_choices]);
|
||||||
}
|
}
|
||||||
return MotaActionBlocks['shopsub'].xmlText([
|
return MotaActionBlocks['shopsub'].xmlText([
|
||||||
obj.id,obj.name,obj.icon,obj.textInList,obj.use,obj.need,parser.EvalString(obj.text),text_choices,next
|
obj.id,obj.name,obj.icon,obj.textInList,obj.commonTimes,obj.use,obj.need,parser.EvalString(obj.text),text_choices,next
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
var next=null;
|
var next=null;
|
||||||
|
|||||||
@ -257,7 +257,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
"_type": "event",
|
"_type": "event",
|
||||||
"_event": "firstArrive",
|
"_event": "firstArrive",
|
||||||
"_range": "thiseval==null || thiseval instanceof Array",
|
"_range": "thiseval==null || thiseval instanceof Array",
|
||||||
"_data": "游戏开始前剧情。\n可以双击进入事件编辑器。\n如果无剧情直接留一个空数组即可。"
|
"_data": "游戏开始前剧情,可以执行任意自定义事件。\n双击进入事件编辑器。\n如果无剧情直接留一个空数组即可。"
|
||||||
},
|
},
|
||||||
"shops": {
|
"shops": {
|
||||||
"_leaf": true,
|
"_leaf": true,
|
||||||
|
|||||||
@ -129,6 +129,18 @@ functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"actions": {
|
||||||
|
"_leaf": false,
|
||||||
|
"_type": "object",
|
||||||
|
"_data": {
|
||||||
|
"onKeyUp": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "textarea",
|
||||||
|
"_lint": true,
|
||||||
|
"_data": "按键处理;可以在这里自定义快捷键,详见文档-个性化-自定义快捷键"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"_leaf": false,
|
"_leaf": false,
|
||||||
"_type": "object",
|
"_type": "object",
|
||||||
|
|||||||
@ -1587,6 +1587,7 @@ core.insertAction([
|
|||||||
"icon": "blueShop", // 商店图标,blueShop为蓝色商店,pinkShop为粉色商店
|
"icon": "blueShop", // 商店图标,blueShop为蓝色商店,pinkShop为粉色商店
|
||||||
"textInList": "1F金币商店", // 在快捷商店栏中显示的名称
|
"textInList": "1F金币商店", // 在快捷商店栏中显示的名称
|
||||||
"use": "money", // 商店所要使用的。只能是"money"或"experience"。
|
"use": "money", // 商店所要使用的。只能是"money"或"experience"。
|
||||||
|
"commonTimes": true, // 是否使用全局次数
|
||||||
"need": "20+10*times*(times+1)", // 商店需要的金币/经验数值;可以是一个表达式,以times作为参数计算。
|
"need": "20+10*times*(times+1)", // 商店需要的金币/经验数值;可以是一个表达式,以times作为参数计算。
|
||||||
// 这里用到的times为该商店的已经的访问次数。首次访问该商店时times的值为0。
|
// 这里用到的times为该商店的已经的访问次数。首次访问该商店时times的值为0。
|
||||||
// 上面的例子是50层商店的计算公式。你也可以写任意其他的计算公式,只要以times作为参数即可。
|
// 上面的例子是50层商店的计算公式。你也可以写任意其他的计算公式,只要以times作为参数即可。
|
||||||
@ -1634,6 +1635,7 @@ core.insertAction([
|
|||||||
- icon 为商店的图标,在icons.js的npcs中定义。如woman可代表一个商人。
|
- icon 为商店的图标,在icons.js的npcs中定义。如woman可代表一个商人。
|
||||||
- textInList 为其在快捷商店栏中显示的名称,如"3楼金币商店"等
|
- textInList 为其在快捷商店栏中显示的名称,如"3楼金币商店"等
|
||||||
- use 为消耗的类型,是金币(money)还是经验(experience)。
|
- use 为消耗的类型,是金币(money)还是经验(experience)。
|
||||||
|
- commonTimes 是否使用全局次数;如果为true则可以多个快捷商店共享相同的次数
|
||||||
- need 是一个表达式,计算商店所需要用到的数值。
|
- need 是一个表达式,计算商店所需要用到的数值。
|
||||||
- 可以将times作为参数,times为该商店已经访问过的次数,第一次访问时times是0。
|
- 可以将times作为参数,times为该商店已经访问过的次数,第一次访问时times是0。
|
||||||
- 如果对于每个选项都需要不同的数值,这里设为"-1";可参见下面经验商店的例子。
|
- 如果对于每个选项都需要不同的数值,这里设为"-1";可参见下面经验商店的例子。
|
||||||
@ -1873,8 +1875,6 @@ core.insertAction([
|
|||||||
|
|
||||||
它将显示全塔属性中的startText内容(可以修改成自己的),提供战斗动画开启选择,设置初始福利,并正式开始游戏。
|
它将显示全塔属性中的startText内容(可以修改成自己的),提供战斗动画开启选择,设置初始福利,并正式开始游戏。
|
||||||
|
|
||||||
全塔属性的startText只能使用纯文本类型,其他的事件均无效。
|
|
||||||
|
|
||||||
我们可以修改脚本编辑`setInitData`函数来对于不同难度分别设置初始属性。
|
我们可以修改脚本编辑`setInitData`函数来对于不同难度分别设置初始属性。
|
||||||
|
|
||||||
其参数hard分为对应全塔属性中levelChooseButtons中的第二项,分别对应不同的难度,并会在游戏中传输,在状态栏显示。
|
其参数hard分为对应全塔属性中levelChooseButtons中的第二项,分别对应不同的难度,并会在游戏中传输,在状态栏显示。
|
||||||
|
|||||||
@ -496,34 +496,28 @@ this.useEquipment = function (itemId) { // 使用装备
|
|||||||
|
|
||||||
如果需要绑定某个快捷键为处理一段事件,也是可行的。
|
如果需要绑定某个快捷键为处理一段事件,也是可行的。
|
||||||
|
|
||||||
要修改按键,我们可以在`actions.js`的`keyUp`进行处理:
|
要修改按键,我们可以在脚本编辑的`onKeyUp`进行处理:
|
||||||
|
|
||||||
比如,我们设置一个快捷键进行绑定,比如`W`,其keycode是87。(有关每个键的keycode搜一下就能得到)
|
比如,我们设置一个快捷键进行绑定,比如`Y`,其keycode是89。(有关每个键的keycode搜一下就能得到)
|
||||||
|
|
||||||
然后在`actions.js`的`keyUp`函数的`switch`中进行处理。
|
然后在脚本编辑的`onKeyUp`函数的`switch`中进行处理。
|
||||||
|
|
||||||
``` js
|
``` js
|
||||||
case 87: // W
|
case 89: // 使用该按键的keyCode,比如Y键就是89
|
||||||
if (core.status.heroStop) {
|
// 还可以再判定altKey是否被按下,即 if (altKey) { ...
|
||||||
// ... 在这里写你要执行脚本
|
|
||||||
// 请使用同步脚本,请勿执行任何异步代码,否则可能导致游戏过程或录像出现问题。
|
// ... 在这里写你要执行脚本
|
||||||
core.insertAction([...]) // 例如,插入一段自定义事件并执行。
|
// **强烈建议所有新增的自定义快捷键均能给个对应的道具可点击,以方便手机端的行为**
|
||||||
|
if (core.hasItem('...')) {
|
||||||
// core.status.route.push("key:"+keyCode); // 录像的支持,这句话加不加最好仔细进行测试
|
core.useItem('...');
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
强烈建议所有新增的自定义快捷键均给个对应的永久道具可点击,以方便手机端的行为。
|
||||||
|
|
||||||
在勇士处于停止的条件下,按下W键时,将执行你写的脚本代码。请只使用同步脚本而不要使用异步代码,不然可能导致游戏出现问题。
|
可以使用altKey来判断Alt键是否被同时按下。
|
||||||
|
|
||||||
`core.status.route.push("key:"+keyCode);` 这句话是对录像的支持。
|
|
||||||
|
|
||||||
**录像的支持可能比较诡异,在不同条件下都是不同的;因此加不加最好分开独立进行测试。**
|
|
||||||
|
|
||||||
!> H5不支持组合快捷键,所以不存在`W+1`这种组合快捷键的说法!
|
|
||||||
|
|
||||||
!> 手机端可以通过长按任何位置调出虚拟键盘,再进行按键,和键盘按键是等价的效果!
|
|
||||||
|
|
||||||
## 公共事件
|
## 公共事件
|
||||||
|
|
||||||
@ -609,7 +603,7 @@ core.statusBar.mana.style.fontStyle = 'normal'; // 这一行会取消斜体。
|
|||||||
- 技能的触发(按键与录像问题)
|
- 技能的触发(按键与录像问题)
|
||||||
- 技能的效果
|
- 技能的效果
|
||||||
|
|
||||||
从V2.5开始,魔力和技能的定义被内置到了样板中,因此十分方便。
|
从V2.5开始,内置了"二倍斩"技能,可以仿照其制作自己的技能。
|
||||||
|
|
||||||
### 魔力的定义添加;技能的定义
|
### 魔力的定义添加;技能的定义
|
||||||
|
|
||||||
@ -684,11 +678,10 @@ else { // 关闭技能
|
|||||||
下面是一个很简单的例子,当勇士按下W后,触发我们上面定义的二倍斩技能。
|
下面是一个很简单的例子,当勇士按下W后,触发我们上面定义的二倍斩技能。
|
||||||
|
|
||||||
``` js
|
``` js
|
||||||
case 87: // W
|
case 87: // W:开启技能“二倍斩”
|
||||||
if (core.status.heroStop) { // 当前停止状态;这个if需要加,不能在行走过程中触发不然容易出错。
|
// 检测技能栏是否开启,是否拥有“二倍斩”这个技能道具
|
||||||
if (core.hasItem('skill1')) { // 判定该技能道具是否存在
|
if (core.flags.enableSkill && core.hasItem('skill1')) {
|
||||||
core.useItem('skill1'); // 使用道具(该技能)
|
core.useItem('skill1');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
```
|
```
|
||||||
@ -724,13 +717,21 @@ if (core.getFlag('skill', 0)==1) { // 开启了技能1
|
|||||||
然后在脚本编辑的`afterBattle`中进行魔力值的扣除:
|
然后在脚本编辑的`afterBattle`中进行魔力值的扣除:
|
||||||
|
|
||||||
``` js
|
``` js
|
||||||
if (core.getFlag('skill', 0)==1) { // 开启了技能1
|
// 战后的技能处理,比如扣除魔力值
|
||||||
core.status.hero.mana -= 5; // 扣除5点魔力值
|
if (core.flags.enableSkill) {
|
||||||
core.setFlag('skill', 0); // 自动关闭技能
|
// 检测当前开启的技能类型
|
||||||
|
var skill = core.getFlag('skill', 0);
|
||||||
|
if (skill==1) { // 技能1:二倍斩
|
||||||
|
core.status.hero.mana-=5; // 扣除5点魔力值
|
||||||
|
}
|
||||||
|
// 关闭技能
|
||||||
|
core.setFlag('skill', 0);
|
||||||
core.setFlag('skillName', '无');
|
core.setFlag('skillName', '无');
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
!> 开启技能后,建议将全塔属性的useLoop置为true,即改用循环计算临界值,这样临界计算才不会出问题!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
通过上述这几种方式,我们就能成功的让H5支持技能啦!
|
通过上述这几种方式,我们就能成功的让H5支持技能啦!
|
||||||
|
|||||||
160
libs/actions.js
160
libs/actions.js
@ -8,7 +8,7 @@ function actions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
actions.prototype.init = function () {
|
actions.prototype.init = function () {
|
||||||
|
this.actionsdata = functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 按下某个键时 //////
|
////// 按下某个键时 //////
|
||||||
@ -291,150 +291,7 @@ actions.prototype.keyUp = function(keyCode, altKey) {
|
|||||||
if(!core.status.played)
|
if(!core.status.played)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// 0~9的AltKey
|
this.actionsdata.onKeyUp(keyCode, altKey);
|
||||||
if (altKey && keyCode>=48 && keyCode<=57 && core.status.heroStop) {
|
|
||||||
core.items.quickLoadEquip(keyCode-48);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keyCode) {
|
|
||||||
case 27: // ESC
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.openSettings(true);
|
|
||||||
break;
|
|
||||||
case 71: // G
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.useFly(true);
|
|
||||||
break;
|
|
||||||
case 81: // Q
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.openEquipbox(true);
|
|
||||||
break;
|
|
||||||
case 88: // X
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.openBook(true);
|
|
||||||
break;
|
|
||||||
case 65: // A
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.doSL("autoSave", "load");
|
|
||||||
break;
|
|
||||||
case 66: // B
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.ui.drawStatistics();
|
|
||||||
break;
|
|
||||||
case 83: // S
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.save(true);
|
|
||||||
break;
|
|
||||||
case 68: // D
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.load(true);
|
|
||||||
break;
|
|
||||||
case 69: // E
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.ui.drawCursor();
|
|
||||||
break;
|
|
||||||
case 84: // T
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.openToolbox(true);
|
|
||||||
break;
|
|
||||||
case 90: // Z
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.turnHero();
|
|
||||||
break;
|
|
||||||
case 75: case 86: // K/V
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.openQuickShop(true);
|
|
||||||
break;
|
|
||||||
case 32: // SPACE
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.getNextItem();
|
|
||||||
break;
|
|
||||||
case 72: // H
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.ui.drawHelp();
|
|
||||||
break;
|
|
||||||
case 82: // R
|
|
||||||
if (core.status.heroStop) {
|
|
||||||
if (core.hasFlag('debug')) {
|
|
||||||
core.drawText("\t[系统提示]调试模式下无法回放录像");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
core.ui.drawReplay();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 33: case 34: // PAGEUP/PAGEDOWN
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.ui.drawMaps();
|
|
||||||
break;
|
|
||||||
case 77: // M
|
|
||||||
if (core.status.heroStop) {
|
|
||||||
core.ui.drawPaint();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 37: // UP
|
|
||||||
break;
|
|
||||||
case 38: // DOWN
|
|
||||||
break;
|
|
||||||
case 39: // RIGHT
|
|
||||||
break;
|
|
||||||
case 40: // DOWN
|
|
||||||
break;
|
|
||||||
case 49: // 快捷键1: 破
|
|
||||||
if (core.status.heroStop && core.hasItem('pickaxe')) {
|
|
||||||
if (core.canUseItem('pickaxe')) {
|
|
||||||
core.useItem('pickaxe');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
core.drawTip('当前不能使用破墙镐');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 50: // 快捷键2: 炸
|
|
||||||
if (core.status.heroStop) {
|
|
||||||
if (core.hasItem('bomb')) {
|
|
||||||
if (core.canUseItem('bomb')) {
|
|
||||||
core.useItem('bomb');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
core.drawTip('当前不能使用炸弹');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (core.hasItem('hammer')) {
|
|
||||||
if (core.canUseItem('hammer')) {
|
|
||||||
core.useItem('hammer');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
core.drawTip('当前不能使用圣锤');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 51: // 快捷键3: 飞
|
|
||||||
if (core.status.heroStop && core.hasItem('centerFly')) {
|
|
||||||
core.events.useItem('centerFly');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 52: // 快捷键4:破冰/冰冻/地震/上下楼器/...
|
|
||||||
if (core.status.heroStop) {
|
|
||||||
var list = ["icePickaxe", "snow", "earthquake", "upFly", "downFly", "jumpShoes", "lifeWand", "poisonWine", "weakWine", "curseWine", "superWine"];
|
|
||||||
for (var i=0;i<list.length;i++) {
|
|
||||||
var itemId = list[i];
|
|
||||||
if (core.canUseItem(itemId)) {
|
|
||||||
core.useItem(itemId);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 118: // F7开启debug模式
|
|
||||||
if (core.status.heroStop)
|
|
||||||
core.debug();
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (core.isset(core.status.automaticRoute)&&core.status.automaticRoute.autoHeroMove) {
|
if (core.isset(core.status.automaticRoute)&&core.status.automaticRoute.autoHeroMove) {
|
||||||
core.stopAutomaticRoute();
|
core.stopAutomaticRoute();
|
||||||
@ -1199,6 +1056,8 @@ actions.prototype.clickShop = function(x,y) {
|
|||||||
});
|
});
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
shop.times++;
|
shop.times++;
|
||||||
|
if (shop.commonTimes)
|
||||||
|
core.setFlag('commonTimes', shop.times);
|
||||||
core.events.openShop(core.status.event.data.id);
|
core.events.openShop(core.status.event.data.id);
|
||||||
}
|
}
|
||||||
// 离开
|
// 离开
|
||||||
@ -2357,15 +2216,8 @@ actions.prototype.clickReplay = function (x, y) {
|
|||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
var hard=core.status.hard, route=core.clone(core.status.route);
|
var hard=core.status.hard, seed = core.getFlag('seed');
|
||||||
var seed = core.getFlag('seed');
|
core.startGame(hard, seed, core.clone(core.status.route));
|
||||||
core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
|
||||||
core.events.setInitData(hard);
|
|
||||||
core.setFlag('seed', seed);
|
|
||||||
core.setFlag('rand', seed);
|
|
||||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
|
||||||
core.startReplay(route);
|
|
||||||
}, true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@ -318,32 +318,6 @@ control.prototype.resetStatus = function(hero, hard, floorId, route, maps, value
|
|||||||
core.status.played = true;
|
core.status.played = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 开始游戏 //////
|
|
||||||
control.prototype.startGame = function (hard, callback) {
|
|
||||||
console.log('开始游戏');
|
|
||||||
|
|
||||||
this.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
|
||||||
|
|
||||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
|
||||||
if (core.isset(callback)) callback();
|
|
||||||
}, true);
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
// Upload
|
|
||||||
var formData = new FormData();
|
|
||||||
formData.append('type', 'people');
|
|
||||||
formData.append('name', core.firstData.name);
|
|
||||||
formData.append('version', core.firstData.version);
|
|
||||||
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
|
|
||||||
formData.append('hard', core.encodeBase64(hard));
|
|
||||||
formData.append('hardCode', core.getFlag('hard', 0));
|
|
||||||
formData.append('base64', 1);
|
|
||||||
|
|
||||||
core.utils.http("POST", "/games/upload.php", formData);
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
////// 重新开始游戏;此函数将回到标题页面 //////
|
////// 重新开始游戏;此函数将回到标题页面 //////
|
||||||
control.prototype.restart = function() {
|
control.prototype.restart = function() {
|
||||||
this.showStartAnimate();
|
this.showStartAnimate();
|
||||||
@ -1041,7 +1015,7 @@ control.prototype.updateViewport = function() {
|
|||||||
////// 绘制勇士 //////
|
////// 绘制勇士 //////
|
||||||
control.prototype.drawHero = function (direction, x, y, status, offset) {
|
control.prototype.drawHero = function (direction, x, y, status, offset) {
|
||||||
|
|
||||||
if (!core.isPlaying()) return;
|
if (!core.isPlaying() || core.status.isStarting) return;
|
||||||
|
|
||||||
var scan = {
|
var scan = {
|
||||||
'up': {'x': 0, 'y': -1},
|
'up': {'x': 0, 'y': -1},
|
||||||
@ -1679,14 +1653,7 @@ control.prototype.chooseReplayFile = function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
core.dom.startPanel.style.display = 'none';
|
core.startGame(obj.hard, obj.seed, core.decode(obj.route));
|
||||||
core.resetStatus(core.firstData.hero, obj.hard, core.firstData.floorId, null, core.initStatus.maps);
|
|
||||||
core.setFlag('seed', obj.seed);
|
|
||||||
core.setFlag('rand', obj.seed);
|
|
||||||
core.events.setInitData(obj.hard);
|
|
||||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
|
||||||
core.startReplay(core.decodeRoute(obj.route));
|
|
||||||
}, true);
|
|
||||||
}, function () {
|
}, function () {
|
||||||
|
|
||||||
})
|
})
|
||||||
@ -2263,15 +2230,7 @@ control.prototype.doSL = function (id, type) {
|
|||||||
if (data.version != core.firstData.version) {
|
if (data.version != core.firstData.version) {
|
||||||
// core.drawTip("存档版本不匹配");
|
// core.drawTip("存档版本不匹配");
|
||||||
if (confirm("存档版本不匹配!\n你想回放此存档的录像吗?\n可以随时停止录像播放以继续游戏。")) {
|
if (confirm("存档版本不匹配!\n你想回放此存档的录像吗?\n可以随时停止录像播放以继续游戏。")) {
|
||||||
core.dom.startPanel.style.display = 'none';
|
core.startGame(data.hard, data.hero.flags.seed, core.decodeRoute(data.route));
|
||||||
var seed = data.hero.flags.seed;
|
|
||||||
core.resetStatus(core.firstData.hero, data.hard, core.firstData.floorId, null, core.initStatus.maps);
|
|
||||||
core.events.setInitData(data.hard);
|
|
||||||
core.setFlag('seed', seed);
|
|
||||||
core.setFlag('rand', seed);
|
|
||||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
|
||||||
core.startReplay(core.decodeRoute(data.route));
|
|
||||||
}, true);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -356,8 +356,8 @@ core.prototype.resetStatus = function(hero, hard, floorId, route, maps, values)
|
|||||||
}
|
}
|
||||||
|
|
||||||
////// 开始游戏 //////
|
////// 开始游戏 //////
|
||||||
core.prototype.startGame = function (hard, callback) {
|
core.prototype.startGame = function (hard, seed, route, callback) {
|
||||||
core.control.startGame(hard, callback);
|
core.events.startGame(hard, seed, route, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 重新开始游戏;此函数将回到标题页面 //////
|
////// 重新开始游戏;此函数将回到标题页面 //////
|
||||||
|
|||||||
@ -76,38 +76,83 @@ events.prototype.initGame = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
////// 游戏开始事件 //////
|
////// 游戏开始事件 //////
|
||||||
events.prototype.startGame = function (hard) {
|
events.prototype.startGame = function (hard, seed, route, callback) {
|
||||||
|
|
||||||
if (core.status.isStarting) return;
|
if (core.status.isStarting) return;
|
||||||
core.status.isStarting = true;
|
core.status.isStarting = true;
|
||||||
|
|
||||||
core.hideStartAnimate(function() {
|
var start = function () {
|
||||||
core.drawText(core.clone(core.firstData.startText), function() {
|
console.log('开始游戏');
|
||||||
if (core.flags.showBattleAnimateConfirm) { // 是否提供“开启战斗动画”的选择项
|
core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||||
|
|
||||||
|
core.status.isStarting = true;
|
||||||
|
|
||||||
|
if (core.isset(seed)) {
|
||||||
|
core.setFlag('seed', seed);
|
||||||
|
core.setFlag('rand', seed);
|
||||||
|
}
|
||||||
|
else core.utils.__init_seed();
|
||||||
|
|
||||||
|
core.events.setInitData(hard);
|
||||||
|
core.clearMap('all');
|
||||||
|
core.clearStatusBar();
|
||||||
|
|
||||||
|
var post_start = function () {
|
||||||
|
|
||||||
|
core.status.isStarting = false;
|
||||||
|
|
||||||
|
core.changeFloor(core.status.floorId, null, core.status.hero.loc, null, function() {
|
||||||
|
if (core.isset(callback)) callback();
|
||||||
|
}, true);
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
// Upload
|
||||||
|
var formData = new FormData();
|
||||||
|
formData.append('type', 'people');
|
||||||
|
formData.append('name', core.firstData.name);
|
||||||
|
formData.append('version', core.firstData.version);
|
||||||
|
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
|
||||||
|
formData.append('hard', core.encodeBase64(hard));
|
||||||
|
formData.append('hardCode', core.getFlag('hard', 0));
|
||||||
|
formData.append('base64', 1);
|
||||||
|
|
||||||
|
core.utils.http("POST", "/games/upload.php", formData);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
core.insertAction(core.clone(core.firstData.startText), null, null, function() {
|
||||||
|
if (!core.status.replay.replaying && core.flags.showBattleAnimateConfirm) { // 是否提供“开启战斗动画”的选择项
|
||||||
core.status.event.selection = core.flags.battleAnimate ? 0 : 1;
|
core.status.event.selection = core.flags.battleAnimate ? 0 : 1;
|
||||||
core.ui.drawConfirmBox("你想开启战斗动画吗?\n之后可以在菜单栏中开启或关闭。\n(强烈建议新手开启此项)", function () {
|
core.ui.drawConfirmBox("你想开启战斗动画吗?\n之后可以在菜单栏中开启或关闭。\n(强烈建议新手开启此项)", function () {
|
||||||
core.data.flags.battleAnimate = true;
|
|
||||||
core.flags.battleAnimate = true;
|
core.flags.battleAnimate = true;
|
||||||
core.setLocalStorage('battleAnimate', true);
|
core.setLocalStorage('battleAnimate', true);
|
||||||
core.startGame(hard);
|
post_start();
|
||||||
core.utils.__init_seed();
|
|
||||||
core.events.setInitData(hard);
|
|
||||||
}, function () {
|
}, function () {
|
||||||
core.data.flags.battleAnimate = false;
|
|
||||||
core.flags.battleAnimate = false;
|
core.flags.battleAnimate = false;
|
||||||
core.setLocalStorage('battleAnimate', false);
|
core.setLocalStorage('battleAnimate', false);
|
||||||
core.startGame(hard);
|
post_start();
|
||||||
core.utils.__init_seed();
|
|
||||||
core.events.setInitData(hard);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
core.startGame(hard);
|
post_start();
|
||||||
core.utils.__init_seed();
|
|
||||||
core.events.setInitData(hard);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
|
||||||
|
if (core.isset(route)) {
|
||||||
|
core.startReplay(route);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (core.isset(route)) {
|
||||||
|
core.dom.startPanel.style.display = 'none';
|
||||||
|
start();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.hideStartAnimate(function() {
|
||||||
|
start();
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 不同难度分别设置初始属性 //////
|
////// 不同难度分别设置初始属性 //////
|
||||||
@ -589,11 +634,8 @@ events.prototype.doAction = function() {
|
|||||||
this.doAction();
|
this.doAction();
|
||||||
break;
|
break;
|
||||||
case "showImage": // 显示图片
|
case "showImage": // 显示图片
|
||||||
if (core.isset(data.loc) && core.isset(core.material.images.images[data.name])) {
|
if (!core.isset(data.loc)) data.loc=[];
|
||||||
core.canvas.image.drawImage(core.material.images.images[data.name],
|
core.events.showImage(data.name, data.loc[0], data.loc[1]);
|
||||||
core.calValue(data.loc[0]), core.calValue(data.loc[1]));
|
|
||||||
}
|
|
||||||
else core.clearMap('image');
|
|
||||||
this.doAction();
|
this.doAction();
|
||||||
break;
|
break;
|
||||||
case "animateImage": // 淡入淡出图片
|
case "animateImage": // 淡入淡出图片
|
||||||
@ -1361,6 +1403,14 @@ events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback
|
|||||||
}, 25);
|
}, 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 绘制图片 //////
|
||||||
|
events.prototype.showImage = function (name, x, y) {
|
||||||
|
if (core.isset(name) && core.isset(x) && core.isset(y) && core.isset(core.material.images.images[name])) {
|
||||||
|
core.canvas.image.drawImage(core.material.images.images[name], x, y);
|
||||||
|
}
|
||||||
|
else core.clearMap('image');
|
||||||
|
}
|
||||||
|
|
||||||
////// 图片淡入/淡出 //////
|
////// 图片淡入/淡出 //////
|
||||||
events.prototype.animateImage = function (type, image, loc, time, keep, callback) {
|
events.prototype.animateImage = function (type, image, loc, time, keep, callback) {
|
||||||
time = time||0;
|
time = time||0;
|
||||||
@ -1532,6 +1582,8 @@ events.prototype.vibrate = function(time, callback) {
|
|||||||
events.prototype.openShop = function(shopId, needVisited) {
|
events.prototype.openShop = function(shopId, needVisited) {
|
||||||
var shop = core.status.shops[shopId];
|
var shop = core.status.shops[shopId];
|
||||||
shop.times = shop.times || 0;
|
shop.times = shop.times || 0;
|
||||||
|
if (shop.commonTimes)
|
||||||
|
shop.times = core.getFlag('commonTimes', 0);
|
||||||
shop.visited = shop.visited || false;
|
shop.visited = shop.visited || false;
|
||||||
if (needVisited && !shop.visited) {
|
if (needVisited && !shop.visited) {
|
||||||
if (shop.times==0) core.drawTip("该商店尚未开启");
|
if (shop.times==0) core.drawTip("该商店尚未开启");
|
||||||
|
|||||||
@ -20,6 +20,7 @@ utils.prototype.replaceText = function (text) {
|
|||||||
|
|
||||||
////// 计算表达式的值 //////
|
////// 计算表达式的值 //////
|
||||||
utils.prototype.calValue = function (value) {
|
utils.prototype.calValue = function (value) {
|
||||||
|
if (!core.isset(value)) return value;
|
||||||
if (typeof value == 'number') {
|
if (typeof value == 'number') {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,8 +78,8 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
"mana": 0,
|
"mana": 0,
|
||||||
"atk": 100,
|
"atk": 100,
|
||||||
"def": 100,
|
"def": 100,
|
||||||
"mdef": 100,
|
"mdef": 0,
|
||||||
"money": 100,
|
"money": 0,
|
||||||
"experience": 0,
|
"experience": 0,
|
||||||
"equipment": [],
|
"equipment": [],
|
||||||
"items": {
|
"items": {
|
||||||
|
|||||||
@ -202,6 +202,19 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
}
|
}
|
||||||
// 增加仇恨值
|
// 增加仇恨值
|
||||||
core.setFlag('hatred', core.getFlag('hatred',0)+core.values.hatred);
|
core.setFlag('hatred', core.getFlag('hatred',0)+core.values.hatred);
|
||||||
|
|
||||||
|
// 战后的技能处理,比如扣除魔力值
|
||||||
|
if (core.flags.enableSkill) {
|
||||||
|
// 检测当前开启的技能类型
|
||||||
|
var skill = core.getFlag('skill', 0);
|
||||||
|
if (skill==1) { // 技能1:二倍斩
|
||||||
|
core.status.hero.mana-=5; // 扣除5点魔力值
|
||||||
|
}
|
||||||
|
// 关闭技能
|
||||||
|
core.setFlag('skill', 0);
|
||||||
|
core.setFlag('skillName', '无');
|
||||||
|
}
|
||||||
|
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
|
|
||||||
|
|
||||||
@ -476,6 +489,11 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
|
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
|
||||||
var enemyInfo = core.enemys.getEnemyInfo(enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId);
|
var enemyInfo = core.enemys.getEnemyInfo(enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId);
|
||||||
var mon_hp = enemyInfo.hp, mon_atk = enemyInfo.atk, mon_def = enemyInfo.def, mon_special = enemyInfo.special;
|
var mon_hp = enemyInfo.hp, mon_atk = enemyInfo.atk, mon_def = enemyInfo.def, mon_special = enemyInfo.special;
|
||||||
|
|
||||||
|
// 技能的处理
|
||||||
|
if (core.getFlag('skill', 0)==1) { // 开启了技能1:二倍斩
|
||||||
|
hero_atk *= 2; // 计算时攻击力翻倍
|
||||||
|
}
|
||||||
|
|
||||||
// 如果是无敌属性,且勇士未持有十字架
|
// 如果是无敌属性,且勇士未持有十字架
|
||||||
if (this.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
if (this.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
||||||
@ -563,6 +581,153 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// 别忘了在事件中调用“更新怪物数据”事件!
|
// 别忘了在事件中调用“更新怪物数据”事件!
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"onKeyUp": function (keyCode, altKey) {
|
||||||
|
// 键盘按键处理,可以在这里自定义快捷键列表
|
||||||
|
// keyCode:当前按键的keyCode(每个键的keyCode自行百度)
|
||||||
|
// altKey:Alt键是否被按下,为true代表同时按下了Alt键
|
||||||
|
// 可以在这里任意增加或编辑每个按键的行为
|
||||||
|
|
||||||
|
// 如果处于正在行走状态,则不处理
|
||||||
|
if (!core.status.heroStop)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Alt+0~9,快捷换上套装
|
||||||
|
if (altKey && keyCode>=48 && keyCode<=57) {
|
||||||
|
core.items.quickLoadEquip(keyCode-48);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据keyCode值来执行对应操作
|
||||||
|
switch (keyCode) {
|
||||||
|
case 27: // ESC:打开菜单栏
|
||||||
|
core.openSettings(true);
|
||||||
|
break;
|
||||||
|
case 88: // X:使用怪物手册
|
||||||
|
core.openBook(true);
|
||||||
|
break;
|
||||||
|
case 71: // G:使用楼传器
|
||||||
|
core.useFly(true);
|
||||||
|
break;
|
||||||
|
case 65: // A:读取自动存档(回退)
|
||||||
|
core.doSL("autoSave", "load");
|
||||||
|
break;
|
||||||
|
case 83: // S:存档
|
||||||
|
core.save(true);
|
||||||
|
break;
|
||||||
|
case 68: // D:独挡
|
||||||
|
core.load(true);
|
||||||
|
break;
|
||||||
|
case 69: // E:打开光标
|
||||||
|
core.ui.drawCursor();
|
||||||
|
break;
|
||||||
|
case 84: // T:打开道具栏
|
||||||
|
core.openToolbox(true);
|
||||||
|
break;
|
||||||
|
case 81: // Q:打开装备栏
|
||||||
|
core.openEquipbox(true);
|
||||||
|
break;
|
||||||
|
case 90: // Z:转向
|
||||||
|
core.turnHero();
|
||||||
|
break;
|
||||||
|
case 75: case 86: // K/V:打开快捷商店列表
|
||||||
|
core.openQuickShop(true);
|
||||||
|
break;
|
||||||
|
case 32: // SPACE:轻按
|
||||||
|
core.getNextItem();
|
||||||
|
break;
|
||||||
|
case 82: // R:回放录像
|
||||||
|
if (core.hasFlag('debug')) {
|
||||||
|
core.drawText("\t[系统提示]调试模式下无法回放录像");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.ui.drawReplay();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 33: case 34: // PgUp/PgDn:浏览地图
|
||||||
|
core.ui.drawMaps();
|
||||||
|
break;
|
||||||
|
case 77: // M:绘图模式
|
||||||
|
core.ui.drawPaint();
|
||||||
|
break;
|
||||||
|
case 66: // B:打开数据统计
|
||||||
|
core.ui.drawStatistics();
|
||||||
|
break;
|
||||||
|
case 72: // H:打开帮助页面
|
||||||
|
core.ui.drawHelp();
|
||||||
|
break;
|
||||||
|
case 49: // 快捷键1: 破
|
||||||
|
if (core.hasItem('pickaxe')) {
|
||||||
|
if (core.canUseItem('pickaxe')) {
|
||||||
|
core.useItem('pickaxe');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawTip('当前不能使用破墙镐');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 50: // 快捷键2: 炸
|
||||||
|
if (core.hasItem('bomb')) {
|
||||||
|
if (core.canUseItem('bomb')) {
|
||||||
|
core.useItem('bomb');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawTip('当前不能使用炸弹');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (core.hasItem('hammer')) {
|
||||||
|
if (core.canUseItem('hammer')) {
|
||||||
|
core.useItem('hammer');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawTip('当前不能使用圣锤');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 51: // 快捷键3: 飞
|
||||||
|
if (core.hasItem('centerFly')) {
|
||||||
|
core.events.useItem('centerFly');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 52: // 快捷键4:破冰/冰冻/地震/上下楼器/... 其他道具依次判断
|
||||||
|
{
|
||||||
|
var list = ["icePickaxe", "snow", "earthquake", "upFly", "downFly", "jumpShoes", "lifeWand", "poisonWine", "weakWine", "curseWine", "superWine"];
|
||||||
|
for (var i=0;i<list.length;i++) {
|
||||||
|
var itemId = list[i];
|
||||||
|
if (core.canUseItem(itemId)) {
|
||||||
|
core.useItem(itemId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 118: // F7:开启debug模式
|
||||||
|
core.debug();
|
||||||
|
break;
|
||||||
|
case 87: // W:开启技能“二倍斩”
|
||||||
|
// 检测是否拥有“二倍斩”这个技能道具
|
||||||
|
if (core.hasItem('skill1')) {
|
||||||
|
core.useItem('skill1');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// 在这里可以任意新增或编辑已有的快捷键内容
|
||||||
|
/*
|
||||||
|
case 0: // 使用该按键的keyCode
|
||||||
|
// 还可以再判定altKey是否被按下,即 if (altKey) { ...
|
||||||
|
|
||||||
|
// ... 在这里写你要执行脚本
|
||||||
|
// **强烈建议所有新增的自定义快捷键均能给个对应的道具可点击,以方便手机端的行为**
|
||||||
|
if (core.hasItem('...')) {
|
||||||
|
core.useItem('...');
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
|
|||||||
@ -236,7 +236,8 @@ icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
|||||||
'moneyPocket': 46,
|
'moneyPocket': 46,
|
||||||
'shoes': 47,
|
'shoes': 47,
|
||||||
'hammer': 48,
|
'hammer': 48,
|
||||||
'jumpShoes': 49
|
'jumpShoes': 49,
|
||||||
|
'skill1': 30,
|
||||||
},
|
},
|
||||||
'autotile': { // 所有的Autotile列表;后面的index简单取0即可
|
'autotile': { // 所有的Autotile列表;后面的index简单取0即可
|
||||||
'autotile': 0,
|
'autotile': 0,
|
||||||
|
|||||||
@ -295,6 +295,11 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"cls": "tools",
|
"cls": "tools",
|
||||||
"name": "跳跃靴",
|
"name": "跳跃靴",
|
||||||
"text": "能跳跃到前方两格处"
|
"text": "能跳跃到前方两格处"
|
||||||
|
},
|
||||||
|
"skill1": {
|
||||||
|
"cls": "constants",
|
||||||
|
"name": "技能:二倍斩",
|
||||||
|
"text": "可以打开或关闭主动技能二倍斩"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"itemEffect": {
|
"itemEffect": {
|
||||||
@ -373,7 +378,8 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"redJewel": "core.status.hero.atk += core.values.redJewel",
|
"redJewel": "core.status.hero.atk += core.values.redJewel",
|
||||||
"blueJewel": "core.status.hero.def += core.values.blueJewel",
|
"blueJewel": "core.status.hero.def += core.values.blueJewel",
|
||||||
"greenJewel": "core.status.hero.mdef += core.values.greenJewel",
|
"greenJewel": "core.status.hero.mdef += core.values.greenJewel",
|
||||||
"yellowJewel": "core.insertAction([\n\t{\"type\": \"choices\", \"choices\": [\n\t\t{\"text\": \"攻击+1\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:atk\", \"value\": \"status:atk+1\"}\n\t\t]},\n\t\t{\"text\": \"防御+2\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:def\", \"value\": \"status:def+2\"}\n\t\t]},\n\t\t{\"text\": \"生命+200\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:hp\", \"value\": \"status:hp+200\"}\n\t\t]},\n\t]}\n]);"
|
"yellowJewel": "core.insertAction([\n\t{\"type\": \"choices\", \"choices\": [\n\t\t{\"text\": \"攻击+1\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:atk\", \"value\": \"status:atk+1\"}\n\t\t]},\n\t\t{\"text\": \"防御+2\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:def\", \"value\": \"status:def+2\"}\n\t\t]},\n\t\t{\"text\": \"生命+200\", \"action\": [\n\t\t\t{\"type\": \"setValue\", \"name\": \"status:hp\", \"value\": \"status:hp+200\"}\n\t\t]},\n\t]}\n]);",
|
||||||
|
"skill1": "// 二倍斩的flag:skill为1\nif (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能\n\tif (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少\n\t\tcore.setFlag('skill', 1); // 开技能1\n\t\tcore.setFlag('skillName', '二倍斩'); // 设置技能名\n\t}\n\telse {\n\t\tcore.drawTip(\"魔力不足,无法开启技能\");\n\t}\n}\nelse { // 关闭技能\n\tcore.setFlag('skill', 0); // 关闭技能状态\n\tcore.setFlag('skillName', '无');\n}"
|
||||||
},
|
},
|
||||||
"canUseItemEffect": {
|
"canUseItemEffect": {
|
||||||
"book": "true",
|
"book": "true",
|
||||||
@ -401,6 +407,7 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"redJewel": "true",
|
"redJewel": "true",
|
||||||
"blueJewel": "true",
|
"blueJewel": "true",
|
||||||
"greenJewel": "true",
|
"greenJewel": "true",
|
||||||
"yellowJewel": "true"
|
"yellowJewel": "true",
|
||||||
|
"skill1": "true"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,6 +79,7 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
|
|||||||
'65':{'cls': 'items', 'id': 'hammer'}, // 圣锤
|
'65':{'cls': 'items', 'id': 'hammer'}, // 圣锤
|
||||||
'68':{'cls': 'items', 'id': 'lifeWand'}, // 生命魔杖
|
'68':{'cls': 'items', 'id': 'lifeWand'}, // 生命魔杖
|
||||||
'69':{'cls': 'items', 'id': 'jumpShoes'}, // 生命魔杖
|
'69':{'cls': 'items', 'id': 'jumpShoes'}, // 生命魔杖
|
||||||
|
'70':{'cls': 'items', 'id': 'skill1'}, // 技能:二倍斩
|
||||||
|
|
||||||
|
|
||||||
////////////////////////// 门、楼梯、传送点部分 //////////////////////////
|
////////////////////////// 门、楼梯、传送点部分 //////////////////////////
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user