From 2c3fba90e1b90465c162663bdb549424aa0541ec Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Thu, 13 Sep 2018 19:31:10 +0800 Subject: [PATCH 1/5] editor: fgmap bgmap data-support --- _server/editor.js | 54 +++++++++++++++++++++++++++--------------- _server/editor_file.js | 12 +++++++--- editor-mobile.html | 3 ++- editor.html | 3 ++- libs/maps.js | 1 + 5 files changed, 49 insertions(+), 24 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 9c9603cc..0fb176e8 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -12,14 +12,7 @@ editor.prototype.init = function (callback) { editor.reset(function () { editor.drawMapBg(); - var mapArray = core.maps.save(core.status.maps, core.status.floorId); - editor.map = mapArray.map(function (v) { - return v.map(function (v) { - return editor.ids[[editor.indexs[parseInt(v)][0]]] - }) - }); - editor.currentFloorId = core.status.floorId; - editor.currentFloorData = core.floors[core.status.floorId]; + editor.fetchMapFromCore(); editor.updateMap(); editor.buildMark(); editor.drawEventBlock(); @@ -170,7 +163,11 @@ editor.prototype.mapInit = function () { editor.map[y][x] = 0; } } + editor.fgmap=JSON.parse(JSON.stringify(editor.map)); + editor.bgmap=JSON.parse(JSON.stringify(editor.map)); editor.currentFloorData.map = editor.map; + editor.currentFloorData.fgmap = editor.fgmap; + editor.currentFloorData.bgmap = editor.bgmap; editor.currentFloorData.firstArrive = []; editor.currentFloorData.events = {}; editor.currentFloorData.changeFloor = {}; @@ -326,26 +323,45 @@ editor.prototype.buildMark = function(){ } } -editor.prototype.changeFloor = function (floorId, callback) { - editor.currentFloorData.map = editor.map.map(function (v) { +editor.prototype.fetchMapFromCore = function(){ + var mapArray = core.maps.save(core.status.maps, core.status.floorId); + editor.map = mapArray.map(function (v) { return v.map(function (v) { - return v.idnum || v || 0 + return editor.ids[[editor.indexs[parseInt(v)][0]]] }) }); + editor.currentFloorId = core.status.floorId; + editor.currentFloorData = core.floors[core.status.floorId]; + for(var ii=0,name;name=['bgmap','fgmap'][ii];ii++){ + var mapArray = editor.currentFloorData[name]; + if(!mapArray || JSON.stringify(mapArray)==JSON.stringify([])){//未设置或空数组 + //与editor.map同形的全0 + mapArray=eval('['+Array(editor.map.length+1).join('['+Array(editor.map[0].length+1).join('0,')+'],')+']'); + } + editor[name]=mapArray.map(function (v) { + return v.map(function (v) { + return editor.ids[[editor.indexs[parseInt(v)][0]]] + }) + }); + } +} + +editor.prototype.changeFloor = function (floorId, callback) { + for(var ii=0,name;name=['map','bgmap','fgmap'][ii];ii++){ + var mapArray=editor[name].map(function (v) { + return v.map(function (v) { + return v.idnum || v || 0 + }) + }); + editor.currentFloorData[name]=mapArray; + } core.changeFloor(floorId, null, {"x": 0, "y": 0, "direction": "up"}, null, function () { core.bigmap.offsetX=0; core.bigmap.offsetY=0; editor.moveViewport(0,0); editor.drawMapBg(); - var mapArray = core.maps.save(core.status.maps, core.status.floorId); - editor.map = mapArray.map(function (v) { - return v.map(function (v) { - return editor.ids[[editor.indexs[parseInt(v)][0]]] - }) - }); - editor.currentFloorId = core.status.floorId; - editor.currentFloorData = core.floors[core.status.floorId]; + editor.fetchMapFromCore(); editor.updateMap(); editor_mode.floor(); editor.drawEventBlock(); diff --git a/_server/editor_file.js b/_server/editor_file.js index 4f534d2a..e4c46b1c 100644 --- a/_server/editor_file.js +++ b/_server/editor_file.js @@ -106,8 +106,8 @@ editor_file = function (editor, callback) { }); for (var ii in editor.currentFloorData) if (editor.currentFloorData.hasOwnProperty(ii)) { - if (ii == 'map') - datastr = datastr.concat(['\n"', ii, '": [\n', formatMap(editor.currentFloorData[ii]), '\n],']); + if (['map','bgmap','fgmap'].indexOf(ii)!==-1) + datastr = datastr.concat(['\n"', ii, '": [\n', formatMap(editor.currentFloorData[ii],ii!='map'), '\n],']); else datastr = datastr.concat(['\n"', ii, '": ', JSON.stringify(editor.currentFloorData[ii], null, 4), ',']); } @@ -704,7 +704,13 @@ editor_file = function (editor, callback) { return true } - var formatMap = function (mapArr) { + var formatMap = function (mapArr,trySimplify) { + if(!mapArr || JSON.stringify(mapArr)==JSON.stringify([]))return ''; + if(trySimplify){ + //检查是否是全0二维数组 + var jsoncheck=JSON.stringify(mapArr).replace(/\D/g,''); + if(jsoncheck==Array(jsoncheck.length+1).join('0'))return ''; + } //把二维数组格式化 var formatArrStr = ''; var arr = JSON.stringify(mapArr).replace(/\s+/g, '').split('],['); diff --git a/editor-mobile.html b/editor-mobile.html index ad395cc3..641e5763 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -211,6 +211,7 @@ + @@ -406,7 +407,7 @@ - + diff --git a/editor.html b/editor.html index 446aaaaf..28ddbce2 100644 --- a/editor.html +++ b/editor.html @@ -210,6 +210,7 @@ + @@ -391,7 +392,7 @@ - + diff --git a/libs/maps.js b/libs/maps.js index 4ec056a9..89ae1ff1 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -433,6 +433,7 @@ maps.prototype.drawMap = function (mapName, callback) { if (main.mode=='editor'){ main.editor.drawMapBg = function(){ core.clearMap('bg'); + core.clearMap('fg'); drawBg(); } } else { From f0d5c04db51f6537b74a40194e64ddd63ee60323 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 15 Sep 2018 23:54:39 +0800 Subject: [PATCH 2/5] editor: fgmap bgmap draw-support --- _server/editor.js | 33 +++++++++++++++++++++++++++++---- _server/editor_file.js | 16 ++++++++++------ _server/vm.js | 2 +- editor-mobile.html | 19 ++++++++++++------- editor.html | 6 ++++++ libs/maps.js | 2 ++ 6 files changed, 60 insertions(+), 18 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 0fb176e8..56b3f292 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -2,6 +2,7 @@ function editor() { this.version = "2.0"; this.material = {}; this.brushMod = "line";//["line","rectangle"] + this.layerMod = "map";//["fgmap","map","bgmap"] } editor.prototype.init = function (callback) { @@ -177,6 +178,7 @@ editor.prototype.mapInit = function () { editor.currentFloorData.cannotMove = {}; } editor.prototype.drawMapBg = function (img) { + return var bgc = bg.getContext('2d'); if (!core.isset(editor.bgY) || editor.bgY == 0) { editor.main.editor.drawMapBg(); @@ -253,6 +255,8 @@ editor.prototype.updateMap = function () { } // 绘制地图 start var eventCtx = document.getElementById('event').getContext("2d"); + var fgCtx = document.getElementById('fg').getContext("2d"); + var bgCtx = document.getElementById('bg').getContext("2d"); for (var y = 0; y < editor.map.length; y++) for (var x = 0; x < editor.map[0].length; x++) { var tileInfo = editor.map[y][x]; @@ -260,6 +264,10 @@ editor.prototype.updateMap = function () { addIndexToAutotileInfo(x, y); drawAutotile(eventCtx, x, y, tileInfo); } else drawTile(eventCtx, x, y, tileInfo); + tileInfo = editor.fgmap[y][x]; + drawTile(fgCtx, x, y, tileInfo); + tileInfo = editor.bgmap[y][x]; + drawTile(bgCtx, x, y, tileInfo); } // 绘制地图 end @@ -502,7 +510,7 @@ editor.prototype.listen = function () { holdingPath = 0; e.stopPropagation(); if (stepPostfix && stepPostfix.length) { - preMapData = JSON.parse(JSON.stringify(editor.map)); + preMapData = JSON.parse(JSON.stringify({map:editor.map,fgmap:editor.fgmap,bgmap:editor.bgmap})); if(editor.brushMod==='rectangle'){ var x0=stepPostfix[0].x; var y0=stepPostfix[0].y; @@ -522,7 +530,7 @@ editor.prototype.listen = function () { reDo = null; // console.log(stepPostfix); for (var ii = 0; ii < stepPostfix.length; ii++) - editor.map[stepPostfix[ii].y][stepPostfix[ii].x] = editor.info; + editor[editor.layerMod][stepPostfix[ii].y][stepPostfix[ii].x] = editor.info; // console.log(editor.map); editor.updateMap(); holdingPath = 0; @@ -590,7 +598,9 @@ editor.prototype.listen = function () { e.preventDefault(); //Ctrl+z 撤销上一步undo if (e.keyCode == 90 && e.ctrlKey && preMapData && currDrawData.pos.length && selectBox.isSelected) { - editor.map = JSON.parse(JSON.stringify(preMapData)); + editor.map = JSON.parse(JSON.stringify(preMapData.map)); + editor.fgmap = JSON.parse(JSON.stringify(preMapData.fgmap)); + editor.bgmap = JSON.parse(JSON.stringify(preMapData.bgmap)); editor.updateMap(); reDo = JSON.parse(JSON.stringify(currDrawData)); currDrawData = {pos: [], info: {}}; @@ -598,7 +608,7 @@ editor.prototype.listen = function () { } //Ctrl+y 重做一步redo if (e.keyCode == 89 && e.ctrlKey && reDo && reDo.pos.length && selectBox.isSelected) { - preMapData = JSON.parse(JSON.stringify(editor.map)); + preMapData = JSON.parse(JSON.stringify({map:editor.map,fgmap:editor.fgmap,bgmap:editor.bgmap})); for (var j = 0; j < reDo.pos.length; j++) editor.map[reDo.pos[j].y][reDo.pos[j].x] = JSON.parse(JSON.stringify(reDo.info)); @@ -881,6 +891,21 @@ editor.prototype.listen = function () { editor.brushMod=brushMod2.value; } + var layerMod=document.getElementById('layerMod'); + layerMod.onchange=function(){ + editor.layerMod=layerMod.value; + } + + var layerMod2=document.getElementById('layerMod2'); + if(layerMod2)layerMod2.onchange=function(){ + editor.layerMod=layerMod2.value; + } + + var layerMod3=document.getElementById('layerMod3'); + if(layerMod3)layerMod3.onchange=function(){ + editor.layerMod=layerMod3.value; + } + editor.moveViewport=function(x,y){ core.bigmap.offsetX = core.clamp(core.bigmap.offsetX+32*x, 0, 32*core.bigmap.width-416); diff --git a/_server/editor_file.js b/_server/editor_file.js index e4c46b1c..8e340f4b 100644 --- a/_server/editor_file.js +++ b/_server/editor_file.js @@ -98,12 +98,16 @@ editor_file = function (editor, callback) { editor.currentFloorData.map = []; for (var i=0;i脚本编辑 - -
- - - - + +
+ + + +
- + + + 图层: + 前景 + 事件 + 背景 +
diff --git a/libs/maps.js b/libs/maps.js index 89ae1ff1..da8c8fc7 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -351,11 +351,13 @@ maps.prototype.drawBgFgMap = function (floorId, canvas, name) { var getMapArray = function (name) { var arr = core.clone(core.floors[floorId][name+"map"] || []); + if(main.mode=='editor')arr = core.clone(editor[name+"map"])||arr; for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { arr[y] = arr[y] || []; if (core.hasFlag(name + "_" + floorId + "_" + x + "_" + y)) arr[y][x] = 0; else arr[y][x] = core.getFlag(name + "v_" + floorId + "_" + x + "_" + y, arr[y][x] || 0); + if(main.mode=='editor')arr[y][x]= arr[y][x].idnum || arr[y][x] || 0; } } return arr; From d1fdc2825ddd7dbc55d4526eb67016fdedbbb04a Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sun, 16 Sep 2018 00:08:29 +0800 Subject: [PATCH 3/5] editor: ban 48*32 blocks in fgmap/bgmap --- _server/editor.js | 14 ++++++++++---- libs/maps.js | 13 ++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 56b3f292..07741e42 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -178,13 +178,15 @@ editor.prototype.mapInit = function () { editor.currentFloorData.cannotMove = {}; } editor.prototype.drawMapBg = function (img) { - return - var bgc = bg.getContext('2d'); + return; + + //legacy if (!core.isset(editor.bgY) || editor.bgY == 0) { editor.main.editor.drawMapBg(); return; } + var bgc = bg.getContext('2d'); for (var ii = 0; ii < 13; ii++) for (var jj = 0; jj < 13; jj++) { bgc.clearRect(ii * 32, jj * 32, 32, 32); @@ -529,8 +531,12 @@ editor.prototype.listen = function () { currDrawData.info = JSON.parse(JSON.stringify(editor.info)); reDo = null; // console.log(stepPostfix); - for (var ii = 0; ii < stepPostfix.length; ii++) - editor[editor.layerMod][stepPostfix[ii].y][stepPostfix[ii].x] = editor.info; + if (editor.layerMod!='map' && editor.info.images && editor.info.images.indexOf('48')!==-1){ + printe('前景/背景不支持48的图块'); + } else { + for (var ii = 0; ii < stepPostfix.length; ii++) + editor[editor.layerMod][stepPostfix[ii].y][stepPostfix[ii].x] = editor.info; + } // console.log(editor.map); editor.updateMap(); holdingPath = 0; diff --git a/libs/maps.js b/libs/maps.js index da8c8fc7..6ad50ff5 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -433,11 +433,14 @@ maps.prototype.drawMap = function (mapName, callback) { } if (main.mode=='editor'){ - main.editor.drawMapBg = function(){ - core.clearMap('bg'); - core.clearMap('fg'); - drawBg(); - } + // just do not run drawBg + + // //---move to main.editor.updateMap + // main.editor.drawMapBg = function(){ + // core.clearMap('bg'); + // core.clearMap('fg'); + // drawBg(); + // } } else { drawBg(); } From d2af698252167750e9c1f7c5ec7719f5eee13629 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 16 Sep 2018 04:54:32 +0800 Subject: [PATCH 4/5] V2.4.1 --- _server/css/editor_mobile.css | 2 +- _server/data.comment.js | 8 +- _server/functions.comment.js | 12 +++ editor-mobile.html | 9 +- editor.html | 10 +-- libs/control.js | 149 +++++----------------------------- libs/enemys.js | 5 ++ libs/events.js | 23 ++---- libs/items.js | 42 +++++++--- main.js | 2 +- mota-js | 1 - project/data.js | 7 +- project/functions.js | 145 ++++++++++++++++++++++++++++++++- project/icons.js | 3 +- project/images/items.png | Bin 31760 -> 33137 bytes project/items.js | 45 +++++++--- 16 files changed, 273 insertions(+), 190 deletions(-) delete mode 160000 mota-js diff --git a/_server/css/editor_mobile.css b/_server/css/editor_mobile.css index 36ca92ae..6d024248 100644 --- a/_server/css/editor_mobile.css +++ b/_server/css/editor_mobile.css @@ -112,7 +112,7 @@ body { #tip { float: right; - width: 50%; + width: 45%; /* height: 95%; */ min-height: 9rem; padding: 5px 10px 10px 10px; diff --git a/_server/data.comment.js b/_server/data.comment.js index 69715eaf..9b678051 100644 --- a/_server/data.comment.js +++ b/_server/data.comment.js @@ -50,7 +50,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "equipName": { "_leaf": true, "_type": "textarea", - "_data": "装备位名称,为不超过6个的数组,此项的顺序与equiptype数值关联" + "_data": "装备位名称,为不超过6个的数组,此项的顺序与equiptype数值关联;例如可写[\"武器\",\"防具\",\"首饰\"]等等。" }, "statusLeftBackground": { "_leaf": true, @@ -152,7 +152,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "equipment": { "_leaf": true, "_type": "textarea", - "_data": "初始装备" + "_data": "初始装上的装备,此处建议请直接留空数组" }, "items": { "_leaf": false, @@ -429,11 +429,11 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_bool": "bool", "_data": "剑和盾是否作为装备。如果此项为true,则作为装备,需要在装备栏使用,否则将直接加属性。" }, - "equipboxBotton": { + "equipboxButton": { "_leaf": true, "_type": "checkbox", "_bool": "bool", - "_data": "若此项为true则将状态栏中的楼层转换器按钮换为装备栏按钮,同时启用装备栏,无论equipment是否为true" + "_data": "若此项为true则将状态栏中的楼层转换器按钮换为装备栏按钮" }, /* "enableDeleteItem": { diff --git a/_server/functions.comment.js b/_server/functions.comment.js index 0b2901ae..23e99f25 100644 --- a/_server/functions.comment.js +++ b/_server/functions.comment.js @@ -55,6 +55,12 @@ functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_lint": true, "_data": "开一个门后触发的事件" }, + "afterGetItem": { + "_leaf": true, + "_type": "textarea", + "_lint": true, + "_data": "获得一个道具后触发的事件" + }, "afterChangeLight": { "_leaf": true, "_type": "textarea", @@ -103,6 +109,12 @@ functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_lint": true, "_data": "获得战斗伤害信息(实际伤害计算函数)" }, + "updateCheckBlock": { + "_leaf": true, + "_type": "textarea", + "_lint": true, + "_data": "领域、阻击、夹击的伤害计算函数" + }, "updateEnemys": { "_leaf": true, "_type": "textarea", diff --git a/editor-mobile.html b/editor-mobile.html index da1d6d2e..5d5a7d8b 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -248,6 +248,7 @@ +
@@ -273,10 +274,10 @@ - + + +
diff --git a/editor.html b/editor.html index bfdcc48b..6b5aa4ef 100644 --- a/editor.html +++ b/editor.html @@ -246,11 +246,11 @@ 画线 画矩形 - - 图层: - 前景 - 事件 - 背景 +
+ + 背景层 + 事件层 + 前景层
diff --git a/libs/control.js b/libs/control.js index c8c9c5a3..5181700e 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1183,116 +1183,7 @@ control.prototype.updateFollowers = function () { ////// 更新领域、夹击、阻击的伤害地图 ////// control.prototype.updateCheckBlock = function() { - core.status.checkBlock = {}; - if (!core.isset(core.status.thisMap)) return; - var blocks = core.status.thisMap.blocks; - - // Step1: 更新怪物地图 - core.status.checkBlock.map = []; // 记录怪物地图 - for (var n=0;n=core.bigmap.width || ny<0 || ny>=core.bigmap.height) continue; - if (!zoneSquare && Math.abs(dx)+Math.abs(dy)>range) continue; - core.status.checkBlock.damage[nx+ny*core.bigmap.width]+=enemy.value||0; - } - } - } - // 存在激光 - if (core.enemys.hasSpecial(enemy.special, 24)) { - for (var nx=0;nx=core.bigmap.width || ny<0 || ny>=core.bigmap.height || Math.abs(dx)+Math.abs(dy)>1) continue; - core.status.checkBlock.damage[nx+ny*core.bigmap.width]+=enemy.value||0; - } - } - } - } - } - } - - - // Step3: 更新夹击点坐标,并将夹击伤害加入到damage中 - core.status.checkBlock.betweenAttack = []; // 记录(x,y)点是否有夹击 - for (var x=0;x0 && x0 && y1) - core.status.checkBlock.damage[x+core.bigmap.width*y] += Math.floor((leftHp+(core.flags.betweenAttackCeil?0:1))/2); - } - } - } + return core.enemys.updateCheckBlock(); } ////// 检查并执行领域、夹击、阻击事件 ////// @@ -1944,23 +1835,25 @@ control.prototype.replay = function () { if (core.canUseItem(itemId)) { var tools = Object.keys(core.status.hero.items.tools).sort(); var constants = Object.keys(core.status.hero.items.constants).sort(); - var index; + var index=-1; if ((index=tools.indexOf(itemId))>=0) { - core.status.event.data = {"toolsPage":Math.floor(index/12)+1, "constantsPage":1, "selectId":null} + core.status.event.data = {"toolsPage":Math.floor(index/12)+1, "constantsPage":1, "selectId":null}; index = index%12; } else if (index=constants.indexOf(itemId)>=0) { - core.status.event.data = {"toolsPage":1, "constantsPage":Math.floor(index/12)+1, "selectId":null} + core.status.event.data = {"toolsPage":1, "constantsPage":Math.floor(index/12)+1, "selectId":null}; index = index%12+12; } - core.ui.drawToolbox(index); + if (index>=0) { + core.ui.drawToolbox(index); setTimeout(function () { core.ui.closePanel(); core.useItem(itemId, function () { core.replay(); }); }, 750 / Math.max(1, core.status.replay.speed)); - return; + return; + } } } else if (action.indexOf("unEquip:")==0) { @@ -1979,16 +1872,18 @@ control.prototype.replay = function () { var equipId = action.substring(6); var ownEquipment = Object.keys(core.status.hero.items.equips).sort(); var index = ownEquipment.indexOf(equipId); - core.status.event.data = {"page":Math.floor(index/12)+1, "selectId":null} - index = index%12+12; - core.ui.drawEquipbox(index); - setTimeout(function () { - core.ui.closePanel(); - core.loadEquip(equipId, function () { - core.replay(); - }); - }, 750 / Math.max(1, core.status.replay.speed)); - return; + if (index>=0) { + core.status.event.data = {"page":Math.floor(index/12)+1, "selectId":null}; + index = index%12+12; + core.ui.drawEquipbox(index); + setTimeout(function () { + core.ui.closePanel(); + core.loadEquip(equipId, function () { + core.replay(); + }); + }, 750 / Math.max(1, core.status.replay.speed)); + return; + } } else if (action.indexOf("fly:")==0) { var floorId=action.substring(4); @@ -2691,7 +2586,7 @@ control.prototype.clearStatusBar = function() { core.statusBar[e].innerHTML = " "; }); core.statusBar.image.book.style.opacity = 0.3; - if (!core.flags.equipboxBotton) { + if (!core.flags.equipboxButton) { core.statusBar.image.fly.style.opacity = 0.3; } } @@ -2769,7 +2664,7 @@ control.prototype.updateStatusBar = function () { core.statusBar.image.book.src = core.statusBar.icons.book.src; core.statusBar.image.book.style.opacity = core.hasItem('book')?1:0.3; - if (!core.flags.equipboxBotton) { + if (!core.flags.equipboxButton) { core.statusBar.image.fly.src = core.statusBar.icons.fly.src; core.statusBar.image.fly.style.opacity = core.hasItem('fly')?1:0.3; } diff --git a/libs/enemys.js b/libs/enemys.js index d7e0d5d0..b9ab7499 100644 --- a/libs/enemys.js +++ b/libs/enemys.js @@ -221,6 +221,11 @@ enemys.prototype.updateEnemys = function () { return this.enemydata.updateEnemys(); } +////// 计算领域、夹击、阻击的伤害值 ////// +enemys.prototype.updateCheckBlock = function () { + return this.eventdata.updateCheckBlock(); +} + ////// 获得当前楼层的怪物列表 ////// enemys.prototype.getCurrentEnemys = function (floorId) { floorId=floorId||core.status.floorId; diff --git a/libs/events.js b/libs/events.js index 748782ae..f1a585a0 100644 --- a/libs/events.js +++ b/libs/events.js @@ -988,12 +988,7 @@ events.prototype.getItem = function (itemId, itemNum, itemX, itemY, callback) { core.canvas.event.clearRect(itemX * 32, itemY * 32, 32, 32); core.updateStatusBar(); - // 检查处理后的事件。 - var event = core.floors[core.status.floorId].afterGetItem[itemX+","+itemY]; - if (core.isset(event)) { - core.events.doEvents(event, itemX, itemY, callback); - } - else if (core.isset(callback)) callback(); + this.eventdata.afterGetItem(itemId, itemX, itemY, callback); } ////// 开门 ////// @@ -1087,17 +1082,17 @@ events.prototype.battle = function (id, x, y, force, callback) { } else { + var nowEquipment = 'hand'; if (core.flags.equipment) { - var equipId = core.status.hero.equipment[0]; - if (core.isset(equipId)) - if (core.isset(core.material.items[equipId].equip.animate)) - core.drawAnimate(core.material.items[equipId].equip.animate, x, y); - } - else { - core.playSound('attack.mp3'); - core.drawAnimate('hand', x, y); + 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)) + nowEquipment = core.material.items[equipId].equip.animate; } + core.playSound('attack.mp3'); + core.drawAnimate(nowEquipment, x, y); + core.events.afterBattle(id, x, y, callback); } } diff --git a/libs/items.js b/libs/items.js index 4b477361..fe052929 100644 --- a/libs/items.js +++ b/libs/items.js @@ -98,8 +98,12 @@ items.prototype.hasItem = function (itemId) { ////// 是否装备某件装备 ////// items.prototype.hasEquip = function (equipId) { + + if (!core.isset(equipId)) return null; + if (!core.isset((core.material.items[equipId]||{}).equip)) return null; + var equiptype = core.material.items[equipId].equip.type; - return core.status.hero.equipment[equiptype] == equipId; + return equipId == (core.status.hero.equipment||[])[equiptype]; } ////// 设置某个物品的个数 ////// @@ -149,10 +153,16 @@ items.prototype.addItem = function (itemId, itemNum) { ////// 换上 ////// items.prototype.loadEquip = function (equipId, callback) { - + + if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = []; + core.playSound('equip.mp3'); var loadEquip = core.material.items[equipId]; + if (!core.isset(loadEquip)) { + if (core.isset(callback)) callback(); + return; + } var loadEquipType = loadEquip.equip.type; var unloadEquipId = core.status.hero.equipment[loadEquipType]; @@ -171,23 +181,29 @@ items.prototype.loadEquip = function (equipId, callback) { core.status.route.push("equip:"+equipId); // 装备更换完毕:删除换上的装备 - core.status.hero.items["equips"][equipId]--; - if (core.status.hero.items["equips"][equipId]==0) - delete core.status.hero.items["equips"][equipId]; + core.removeItem(equipId); // 装备更换完毕:增加卸下的装备 if (core.isset(unloadEquipId)) core.addItem(unloadEquipId, 1); + core.log("已装备上"+loadEquip.name, core.material.icons.items[equipId]); + if (core.isset(callback)) callback(); } ////// 卸下 ////// items.prototype.unloadEquip = function (equipType, callback) { - + + if (!core.isset(core.status.hero.equipment)) core.status.hero.equipment = []; + core.playSound('equip.mp3'); var unloadEquipId = core.status.hero.equipment[equipType]; + if (!core.isset(unloadEquipId)) { + if (core.isset(callback)) callback(); + return; + } var unloadEquip = core.material.items[unloadEquipId]; // 处理能力值改变 @@ -206,6 +222,8 @@ items.prototype.unloadEquip = function (equipType, callback) { // 装备更换完毕:增加卸下的装备 core.addItem(unloadEquipId, 1); + core.drawTip("已卸下"+unloadEquip.name, core.material.icons.items[unloadEquipId]); + if (core.isset(callback)) callback(); } @@ -213,15 +231,15 @@ items.prototype.compareEquipment = function (compareEquipId, beComparedEquipId) var compareAtk = 0, compareDef = 0, compareMdef = 0; if (core.isset(compareEquipId)) { var compareEquip = core.material.items[compareEquipId]; - compareAtk += compareEquip.equip.atk || 0; - compareDef += compareEquip.equip.def || 0; - compareMdef += compareEquip.equip.mdef || 0; + compareAtk += (compareEquip.equip||{}).atk || 0; + compareDef += (compareEquip.equip||{}).def || 0; + compareMdef += (compareEquip.equip||{}).mdef || 0; } if (core.isset(beComparedEquipId)) { var beComparedEquip = core.material.items[beComparedEquipId]; - compareAtk -= beComparedEquip.equip.atk || 0; - compareDef -= beComparedEquip.equip.def || 0; - compareMdef -= beComparedEquip.equip.mdef || 0; + compareAtk -= (beComparedEquip.equip||{}).atk || 0; + compareDef -= (beComparedEquip.equip||{}).def || 0; + compareMdef -= (beComparedEquip.equip||{}).mdef || 0; } return {"atk":compareAtk,"def":compareDef,"mdef":compareMdef}; } \ No newline at end of file diff --git a/main.js b/main.js index 53ef15ce..7a31642e 100644 --- a/main.js +++ b/main.js @@ -397,7 +397,7 @@ main.statusBar.image.fly.onclick = function () { } if (main.core.isPlaying()) { - if (!main.core.flags.equipboxBotton) { + if (!main.core.flags.equipboxButton) { main.core.useFly(true); } else { diff --git a/mota-js b/mota-js deleted file mode 160000 index 45645884..00000000 --- a/mota-js +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 45645884940c700b6121ffdd3624f9ed0ed062cb diff --git a/project/data.js b/project/data.js index 42dafb53..ce29702f 100644 --- a/project/data.js +++ b/project/data.js @@ -72,10 +72,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "mdef": 100, "money": 100, "experience": 0, - "equipment": [ - null, - null - ], + "equipment": [], "items": { "keys": { "yellowKey": 0, @@ -204,7 +201,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "snowFourDirections": false, "bigKeyIsBox": false, "equipment": true, - "equipboxBotton": false, + "equipboxButton": false, "enableAddPoint": false, "enableNegativeDamage": false, "hatredDecrease": true, diff --git a/project/functions.js b/project/functions.js index 8d6468b0..ecba7c1c 100644 --- a/project/functions.js +++ b/project/functions.js @@ -16,7 +16,7 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = if (core.flags.snowFourDirections) core.material.items.bomb.text = "可以将四周的熔岩变成平地"; // 是否启用装备栏 - if (core.flags.equipboxBotton) { + if (core.flags.equipboxButton) { core.statusBar.image.fly.src = core.statusBar.icons.equipbox.src; core.flags.equipment = true; } @@ -221,9 +221,9 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 在这里增加其他的自定义事件需求 /* if (enemyId=='xxx') { - core.unshift(todo, [ - {"type": "...", ...}, - ]); + core.unshift(todo, [ + {"type": "...", ...}, + ]); } */ @@ -266,6 +266,24 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } if (core.isset(callback)) callback(); }, +////// 获得一个道具后触发的事件 ////// +"afterGetItem" : function(itemId,x,y,callback) { + // 获得一个道具后触发的事件 + + var todo = []; + if (core.isset(x) && core.isset(y)) { + var event = core.floors[core.status.floorId].afterGetItem[x+","+y]; + if (core.isset(event)) { + core.unshift(todo, event); + } + } + + if (todo.length>0) { + core.events.insertAction(todo,x,y); + } + + if (core.isset(callback)) callback(); +}, ////// 改变亮灯之后,可以触发的事件 ////// "afterChangeLight" : function(x,y) { // 改变亮灯之后,可以触发的事件 @@ -449,6 +467,125 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = "damage": damage }; }, +"updateCheckBlock": function () { + // 领域、夹击、阻击等的伤害值计算 + + core.status.checkBlock = {}; + if (!core.isset(core.status.thisMap)) return; + var blocks = core.status.thisMap.blocks; + + // Step1: 更新怪物地图 + core.status.checkBlock.map = []; // 记录怪物地图 + for (var n=0;n=core.bigmap.width || ny<0 || ny>=core.bigmap.height) continue; + if (!zoneSquare && Math.abs(dx)+Math.abs(dy)>range) continue; + core.status.checkBlock.damage[nx+ny*core.bigmap.width]+=enemy.value||0; + } + } + } + // 存在激光 + // 如果要防止激光伤害,可以直接简单的将 flag:no_laser 设为true + if (core.enemys.hasSpecial(enemy.special, 24) && !core.hasFlag("no_laser")) { + for (var nx=0;nx=core.bigmap.width || ny<0 || ny>=core.bigmap.height || Math.abs(dx)+Math.abs(dy)>1) continue; + core.status.checkBlock.damage[nx+ny*core.bigmap.width]+=enemy.value||0; + } + } + } + } + } + } + + // Step3: 更新夹击点坐标,并将夹击伤害加入到damage中 + core.status.checkBlock.betweenAttack = []; // 记录(x,y)点是否有夹击 + // 如果要防止夹击伤害,可以简单的将 flag:no_betweenAttack 设为true + if (!core.hasFlag('no_betweenAttack')) { + for (var x=0;x0 && x0 && y1) + core.status.checkBlock.damage[x+core.bigmap.width*y] += Math.floor((leftHp+(core.flags.betweenAttackCeil?0:1))/2); + } + } + } + } +}, "updateEnemys" : function () { // 更新怪物数据,可以在这里对怪物属性和数据进行动态更新,详见文档——事件——怪物数据的动态修改 // 比如下面这个例子,如果flag:xxx为真,则将绿头怪的攻击设为100,金币设为20 diff --git a/project/icons.js b/project/icons.js index 98e69bb6..314c671a 100644 --- a/project/icons.js +++ b/project/icons.js @@ -203,12 +203,13 @@ icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = 'greenPotion': 22, 'yellowPotion': 23, 'lifeWand': 33, - 'blank': 60, + "sword0": 60, 'sword1': 50, 'sword2': 51, 'sword3': 52, 'sword4': 53, 'sword5': 54, + "shield0": 61, 'shield1': 55, 'shield2': 56, 'shield3': 57, diff --git a/project/images/items.png b/project/images/items.png index 4979dc246aa7a4fb514a8a099176639e98541b6b..cce829ccbbc72f4a2d3783fb8b770ededfd430fd 100644 GIT binary patch delta 31146 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%0DunnYTx0{=Gmfdr1Yi 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 V^h@hL4){{Uf36~1EN$ff{{Tp#VMhP} diff --git a/project/items.js b/project/items.js index 08fa5407..a3ee85b7 100644 --- a/project/items.js +++ b/project/items.js @@ -45,8 +45,18 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "绿血瓶" }, + "sword0": { + "cls": "items", + "name": "破旧的剑", + "text": "一把已经生锈的剑", + "equip": { + "type": 0, + "atk": 0, + "animate": "sword" + } + }, "sword1": { - "cls": "item", + "cls": "items", "name": "铁剑", "text": "一把很普通的铁剑", "equip":{ @@ -95,6 +105,15 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "animate": "sword" } }, + "shield0": { + "cls": "items", + "name": "破旧的盾", + "text": "一个很破旧的铁盾", + "equip": { + "type": 1, + "def": 0 + } + }, "shield1": { "cls": "items", "name": "铁盾", @@ -279,11 +298,13 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "bluePotion": "core.status.hero.hp += core.values.bluePotion * ratio", "yellowPotion": "core.status.hero.hp += core.values.yellowPotion * ratio", "greenPotion": "core.status.hero.hp += core.values.greenPotion * ratio", + "sword0": "core.status.hero.atk += 0", "sword1": "core.status.hero.atk += 10", "sword2": "core.status.hero.atk += 20", "sword3": "core.status.hero.atk += 40", "sword4": "core.status.hero.atk += 80", "sword5": "core.status.hero.atk += 100", + "shield0": "core.status.hero.def += 0", "shield1": "core.status.hero.def += 10", "shield2": "core.status.hero.def += 20", "shield3": "core.status.hero.def += 40", @@ -302,16 +323,18 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "bluePotion": "',生命+'+core.values.bluePotion * ratio", "yellowPotion": "',生命+'+core.values.yellowPotion * ratio", "greenPotion": "',生命+'+core.values.greenPotion * ratio", - "sword1": ",攻击+10", - "sword2": ",攻击+20", - "sword3": ",攻击+40", - "sword4": ",攻击+80", - "sword5": ",攻击+100", - "shield1": ",防御+10", - "shield2": ",防御+20", - "shield3": ",防御+40", - "shield4": ",防御+80", - "shield5": ",防御+100,魔防+100", + "sword0": "',攻击+0'", + "sword1": "',攻击+10'", + "sword2": "',攻击+20'", + "sword3": "',攻击+40'", + "sword4": "',攻击+80'", + "sword5": "',攻击+100'", + "shield0": "',防御+0'", + "shield1": "',防御+10'", + "shield2": "',防御+20'", + "shield3": "',防御+40'", + "shield4": "',防御+80'", + "shield5": "',防御+100,魔防+100'", "bigKey": "',全钥匙+1'", "superPotion": "',生命值翻倍'", "moneyPocket": "',金币+'+core.values.moneyPocket" From f95b316ff55e443586afc5fb6c2710e42651a2bc Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 16 Sep 2018 16:23:27 +0800 Subject: [PATCH 5/5] V2.4.1 --- _server/comment.js | 10 +-- _server/functions.comment.js | 24 ++++-- libs/control.js | 51 +------------ libs/enemys.js | 5 -- project/data.js | 2 +- project/floors/sample0.js | 6 ++ project/functions.js | 143 ++++++++++++++++++++++------------- 7 files changed, 123 insertions(+), 118 deletions(-) diff --git a/_server/comment.js b/_server/comment.js index f2aeffdd..9f7bb124 100644 --- a/_server/comment.js +++ b/_server/comment.js @@ -44,28 +44,28 @@ comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "type": { "_leaf": true, "_type": "textarea", - "_data": "装备的类别,与equipName按顺序对应" + "_data": "如果是装备,其类别,与equipName按顺序对应(从0开始)" }, "atk": { "_leaf": true, "_type": "textarea", - "_data": "装备增加的攻击数值" + "_data": "如果是装备,其增加的攻击数值" }, "def": { "_leaf": true, "_type": "textarea", - "_data": "装备增加的防御数值" + "_data": "如果是装备,其增加的防御数值" }, "mdef": { "_leaf": true, "_type": "textarea", - "_data": "装备增加的魔防数值" + "_data": "如果是装备,其增加的魔防数值" }, "animate": { "_leaf": true, "_type": "textarea", "_string": true, - "_data": "装备的攻击动画,仅对type为0的装备有效" + "_data": "如果是装备,其攻击动画,仅对type为0的装备有效" } } }, diff --git a/_server/functions.comment.js b/_server/functions.comment.js index 23e99f25..ecc6ac0f 100644 --- a/_server/functions.comment.js +++ b/_server/functions.comment.js @@ -109,12 +109,6 @@ functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_lint": true, "_data": "获得战斗伤害信息(实际伤害计算函数)" }, - "updateCheckBlock": { - "_leaf": true, - "_type": "textarea", - "_lint": true, - "_data": "领域、阻击、夹击的伤害计算函数" - }, "updateEnemys": { "_leaf": true, "_type": "textarea", @@ -123,6 +117,24 @@ functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = } } }, + "control": { + "_leaf": false, + "_type": "object", + "_data": { + "updateStatusBar": { + "_leaf": true, + "_type": "textarea", + "_lint": true, + "_data": "更新状态栏" + }, + "updateCheckBlock": { + "_leaf": true, + "_type": "textarea", + "_lint": true, + "_data": "阻激夹域的伤害值计算" + }, + } + }, "ui": { "_leaf": false, "_type": "object", diff --git a/libs/control.js b/libs/control.js index 5181700e..8b9bc67b 100644 --- a/libs/control.js +++ b/libs/control.js @@ -9,7 +9,7 @@ function control() { } control.prototype.init = function () { - + this.controldata = functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.control; } ////// 设置requestAnimationFrame ////// @@ -1183,7 +1183,7 @@ control.prototype.updateFollowers = function () { ////// 更新领域、夹击、阻击的伤害地图 ////// control.prototype.updateCheckBlock = function() { - return core.enemys.updateCheckBlock(); + return this.controldata.updateCheckBlock(); } ////// 检查并执行领域、夹击、阻击事件 ////// @@ -2594,52 +2594,7 @@ control.prototype.clearStatusBar = function() { ////// 更新状态栏 ////// control.prototype.updateStatusBar = function () { - // 检查等级 - core.events.checkLvUp(); - - // 检查HP上限 - if (core.flags.enableHPMax) { - core.setStatus('hp', Math.min(core.getStatus('hpmax'), core.getStatus('hp'))); - } - - // 更新领域、阻击、显伤 - core.updateCheckBlock(); - - var lvName = core.getLvName(); - core.statusBar.lv.innerHTML = lvName; - if (/^[+-]?\d+$/.test(lvName)) - core.statusBar.lv.style.fontStyle = 'italic'; - else core.statusBar.lv.style.fontStyle = 'normal'; - - var statusList = ['hpmax', 'hp', 'atk', 'def', 'mdef', 'money', 'experience']; - statusList.forEach(function (item) { - if (core.isset(core.status.hero[item])) - core.status.hero[item] = Math.floor(core.status.hero[item]); - core.statusBar[item].innerHTML = core.formatBigNumber(core.getStatus(item)); - }); - - // 进阶 - if (core.flags.enableLevelUp && core.status.hero.lv