From 81ccf6a08f2999cedbae5301a269fc4a64f839b5 Mon Sep 17 00:00:00 2001 From: oc Date: Sat, 21 Apr 2018 12:59:58 +0800 Subject: [PATCH 1/4] Fix gameover & new map --- _server/editor_mode.js | 4 ++++ libs/events.js | 35 +++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 984ad072..a754ad2a 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -435,6 +435,10 @@ editor_mode = function (editor) { var newFileName = document.getElementById('newFileName'); newMap.onclick = function () { if (!newFileName.value) return; + if (core.floorIds.indexOf(newFileName.value)>=0) { + printe("该楼层已存在!"); + return; + } editor_mode.onmode(''); editor.file.saveNewFile(newFileName.value, function (err) { if (err) { diff --git a/libs/events.js b/libs/events.js index 0118fb00..f1e26f9c 100644 --- a/libs/events.js +++ b/libs/events.js @@ -132,24 +132,25 @@ events.prototype.gameOver = function (ending, fromReplay) { core.animateFrame.weather.level = 0; core.animateFrame.weather.nodes = []; core.setFg(null, 0); + core.ui.closePanel(); // 下载录像 var confirmDownload = function () { + core.ui.closePanel(); - setTimeout(function () { - core.ui.drawConfirmBox("你想下载录像吗?", function () { - var obj = { - 'name': core.firstData.name, - 'version': core.firstData.version, - 'hard': core.status.hard, - 'route': core.encodeRoute(core.status.route) - } - core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5route", JSON.stringify(obj)); - core.restart(); - }, function () { - core.restart(); - }) - }, 150); + core.ui.drawConfirmBox("你想下载录像吗?", function () { + var obj = { + 'name': core.firstData.name, + 'version': core.firstData.version, + 'hard': core.status.hard, + 'route': core.encodeRoute(core.status.route) + } + core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5route", JSON.stringify(obj)); + core.restart(); + }, function () { + core.restart(); + }) + } // 上传成绩 @@ -185,7 +186,10 @@ events.prototype.gameOver = function (ending, fromReplay) { formData.append('route', core.encodeRoute(core.status.route)); core.http("POST", "/games/upload.php", formData); - confirmDownload(); + + setTimeout(function() { + confirmDownload(); + }, 150); } core.ui.drawConfirmBox("你想记录你的ID和成绩吗?", function () { @@ -203,7 +207,6 @@ events.prototype.gameOver = function (ending, fromReplay) { }); } else { - // confirmDownload(); confirmUpload(); } From c80f2e1dabaeff8f9c1e47484fbe83f1d40f0183 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 21 Apr 2018 21:09:13 +0800 Subject: [PATCH 2/4] Update icons --- project/images/icons.png | Bin 17133 -> 17146 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/project/images/icons.png b/project/images/icons.png index f0539b2423f92114c53e0b579712b336a0fa17b6..dbd9658b7966e82e0a1588399d168c7bcfd81e7e 100644 GIT binary patch literal 17146 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 JWt~$(69Cfge2V}8 From c6ab9fb9b82115b313703aeecdbe54777b256683 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 22 Apr 2018 10:47:29 +0800 Subject: [PATCH 3/4] Reset numbers --- project/floors/sample0.js | 307 ++++++++++++++++++++++++-------------- project/floors/sample1.js | 24 +-- project/floors/sample2.js | 4 +- project/maps.js | 97 ++++++------ 4 files changed, 259 insertions(+), 173 deletions(-) diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 7b75facb..129c9f1b 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -1,121 +1,206 @@ -main.floors.sample0 = +main.floors.sample0= { - "floorId": "sample0", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 - // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 - // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 - // 楼层唯一标识符,需要和名字完全一致 - "title": "样板 0 层", // 楼层中文名 - "name": "0", // 显示在状态栏中的层数 - "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) - "canUseQuickShop": true, // 该层是否允许使用快捷商店 - "defaultGround": "ground", // 默认地面的图块ID(terrains中) - "images": [], // 该层默认显示的所有图片;详细用法请查看文档“自定义素材”中的说明。 - // "color": [0,0,0,0.3] // 该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组。 - // "weather": ["snow",5], // 该层的默认天气。本项可忽略表示晴天,如果写则第一项为"rain"或"snow"代表雨雪,第二项为1-10之间的数代表强度。 - "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。 - "item_ratio": 2, // 该层的宝石/血瓶倍率 - "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 - [ 0, 0,220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], - [ 0,246, 0,246, 0, 20, 0, 3, 58, 59, 60, 61, 41], - [219, 0, 0, 0,219, 20, 0, 3, 57, 26, 62, 63, 40], - [ 20, 20,115, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], - [216,247,263,235,248, 6, 0, 3, 49, 50, 51, 52, 38], - [ 6, 6,115, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], - [224,254,212,262,204, 5, 0, 1, 31, 32, 34, 33, 36], - [201,261,217,264,207, 5, 0, 1, 27, 28, 29, 30, 35], - [ 5, 5,115, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], - [ 0, 0,237, 0, 0, 0, 45, 1, 1, 1,111, 1, 1], - [ 4, 4,139, 4, 4, 4, 0, 0, 0, 0, 0, 85,114], - [ 87, 11, 12, 13, 14, 4, 4, 2, 2, 2,112, 2, 2], - [ 88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86] +"floorId": "sample0", +"title": "样板 0 层", +"name": "0", +"canFlyTo": true, +"canUseQuickShop": true, +"defaultGround": "ground", +"images": [], +"bgm": "bgm.mp3", +"item_ratio": 2, +"map": [ + [ 0, 0,220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], + [ 0,246, 0,246, 0, 20, 0, 3, 58, 59, 60, 61, 41], + [219, 0, 0, 0,219, 20, 0, 3, 57, 26, 62, 63, 40], + [ 20, 20,125, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], + [216,247,263,235,248, 6, 0, 3, 49, 50, 51, 52, 38], + [ 6, 6,125, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], + [224,254,212,262,204, 5, 0, 1, 31, 32, 34, 33, 36], + [201,261,217,264,207, 5, 0, 1, 27, 28, 29, 30, 35], + [ 5, 5,125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], + [ 0, 0,237, 0, 0, 0, 45, 1, 1, 1,121, 1, 1], + [ 4, 4,133, 4, 4, 4, 0, 0, 0, 0, 0, 85,124], + [ 87, 11, 12, 13, 14, 4, 4, 2, 2, 2,122, 2, 2], + [ 88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86] +], +"firstArrive": [ + "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", + "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", + "\t[仙子,fairy]你问我...?我也不知道啊...", + "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。" +], +"events": { + "10,9": [ + "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为三类:items, constants, tools。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\n\n后两类道具在工具栏中可以看到并使用。", + "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", + "\t[老人,man]constants 和 tools 各最多只允许12种,多了会导致图标溢出。", + "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + { + "type": "hide", + "time": 500 + } ], - "firstArrive": [ // 第一次到该楼层触发的事件 - "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", - "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", - "\t[仙子,fairy]你问我...?我也不知道啊...", - "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。", + "10,11": [ + "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", + "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + { + "type": "hide", + "time": 500 + } ], - "events": { // 该楼的所有可能事件列表 - "10,9": [ // 守着道具的老人 - "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为三类:items, constants, tools。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\n\n后两类道具在工具栏中可以看到并使用。", - "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", - "\t[老人,man]constants 和 tools 各最多只允许12种,多了会导致图标溢出。", - "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - {"type": "hide", "time": 500} // 消失 - ], - "10,11": [ // 守着门的老人 - "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", - "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - {"type": "hide", "time": 500} - ], - "2,10": [ // 守着楼梯、传送门、路障的老人 - "\t[少女,npc0]这些是路障、楼梯、传送门。", - "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", - "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", - {"type": "hide", "time": 500} - ], - "2,8": [ // 守着第一批怪物的老人 - "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", - "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", - "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - {"type": "hide", "time": 500} - ], - "2,5": [ // 守着第二批怪物的老人 - "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", - {"type": "hide", "time": 500} - ], - "2,3": [ // 守着第三批怪物的老人 - "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", - "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", - {"type": "hide", "time": 500} - ], - "12,10": { // 隐藏的仙子 - "enable": false, // enable: false代表初始时禁用事件 - "data": [ - "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", - {"type": "hide", "time": 500} - ] - }, + "2,10": [ + "\t[少女,npc0]这些是路障、楼梯、传送门。", + "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", + "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", + { + "type": "hide", + "time": 500 + } + ], + "2,8": [ + "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", + "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", + "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + { + "type": "hide", + "time": 500 + } + ], + "2,5": [ + "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", + { + "type": "hide", + "time": 500 + } + ], + "2,3": [ + "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", + "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", + { + "type": "hide", + "time": 500 + } + ], + "12,10": { + "enable": false, + "data": [ + "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", + { + "type": "hide", + "time": 500 + } + ] + } +}, +"changeFloor": { + "6,0": { + "floorId": "sample1", + "stair": "downFloor" }, - "changeFloor": { // 楼层转换事件;该事件不能和上面的events有冲突(同位置点),否则会被覆盖 - "6,0": {"floorId": "sample1", "stair": "downFloor"}, // 目标点:sample1层的下楼梯位置 - "0,11": {"floorId": "sample0", "loc": [0,12]}, // 目标点:sample0层的x=0,y=12位置 - "0,12": {"floorId": "sample0", "stair": "upFloor"}, // 注意,目标层有多个楼梯的话,写stair可能会导致到达位置不确定。这时候推荐写loc指明目标点位置。 - "1,12": {"floorId": "sample0", "loc": [1,12]}, - "2,12": {"floorId": "sample0", "loc": [2,12]}, - "3,12": {"floorId": "sample0", "loc": [6,1], "direction": "up"}, // 切换楼层后勇士面对上方 - "4,12": {"floorId": "sample0", "loc": [0,9], "direction": "left", "time": 1000}, // 切换楼层后勇士面对左边,切换动画1000ms - "5,12": {"floorId": "sample0", "loc": [6,10], "time": 0, "portalWithoutTrigger": false}, // time=0表示无切换时间 - "6,12": {"floorId": "sample0", "loc": [10,10], "direction": "left", "time": 1000}, + "0,11": { + "floorId": "sample0", + "loc": [ + 0, + 12 + ] }, - "afterBattle": { // 战斗后可能触发的事件列表 - "2,6": ["\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)"], + "0,12": { + "floorId": "sample0", + "stair": "upFloor" }, - "afterGetItem": { // 获得道具后可能触发的事件列表 - "11,8": ["由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。"], - "8,6": ["由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。"], - "8,7": ["如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。"], - "10,7": ["在 data.js 的系统Flag中设置是否启用魔防。\n如果不启用魔防则不会在状态栏显示。"], - "9,5": [ - "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", - "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" + "1,12": { + "floorId": "sample0", + "loc": [ + 1, + 12 + ] + }, + "2,12": { + "floorId": "sample0", + "loc": [ + 2, + 12 + ] + }, + "3,12": { + "floorId": "sample0", + "loc": [ + 6, + 1 ], - "10,5": ["破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。"], - "8,4": [ - "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。", + "direction": "up" + }, + "4,12": { + "floorId": "sample0", + "loc": [ + 0, + 9 ], - "10,4": ["“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。"], - "9,2": ["该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。"], - "10,2": ["屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。"], + "direction": "left", + "time": 1000 }, - "afterOpenDoor": { // 开完门后可能触发的事件列表 - "11,12": ["你开了一个绿门,触发了一个afterOpenDoor事件"] + "5,12": { + "floorId": "sample0", + "loc": [ + 6, + 10 + ], + "time": 0, + "portalWithoutTrigger": false }, - "cannotMove": { // 每个图块不可通行的方向 - // 可以在这里定义每个点不能前往哪个方向,例如悬崖边不能跳下去 - // "x,y": ["up", "left"], // (x,y)点不能往上和左走 - - }, - -} - + "6,12": { + "floorId": "sample0", + "loc": [ + 10, + 10 + ], + "direction": "left", + "time": 1000 + } +}, +"afterBattle": { + "2,6": [ + "\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)" + ] +}, +"afterGetItem": { + "11,8": [ + "由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。" + ], + "8,6": [ + "由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。" + ], + "8,7": [ + "如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。" + ], + "10,7": [ + "在 data.js 的系统Flag中设置是否启用魔防。\n如果不启用魔防则不会在状态栏显示。" + ], + "9,5": [ + "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", + "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" + ], + "10,5": [ + "破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。" + ], + "8,4": [ + "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。" + ], + "10,4": [ + "“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。" + ], + "9,2": [ + "该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。" + ], + "10,2": [ + "屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。" + ] +}, +"afterOpenDoor": { + "11,12": [ + "你开了一个绿门,触发了一个afterOpenDoor事件" + ] +}, +"cannotMove": {}, +} \ No newline at end of file diff --git a/project/floors/sample1.js b/project/floors/sample1.js index 90dedf71..54098420 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -15,18 +15,18 @@ main.floors.sample1 = // "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。 "item_ratio": 1, // 该层的宝石/血瓶倍率 "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 - [ 7,121, 8,152, 9,120, 10,352,176,175,122,175,176], - [ 0, 0, 0, 0, 0, 0, 0,352,175,174, 0,172,175], - [352,352,352,352,111,352,352,352, 0, 0,229, 0, 0], - [ 43, 33, 44,351, 0, 0, 0,352,175,171, 0,173,175], - [ 21, 22, 21,351, 0, 0, 0,352,176,175, 0,175,176], - [351,245,351,351, 0, 87, 0,352,352,352, 85,353,353], - [ 0,246, 0,351, 0, 0, 0,352,152,221, 0,221,353], - [246, 0,246,351, 0, 0, 0,111, 85, 0, 0, 0,353], - [351,246,351,351, 0,353,353,353,353,353,353,353,353], - [ 0, 0, 0, 0, 0, 0, 0,174, 0, 0,173, 0, 0], - [ 1, 1, 1, 1, 0, 20, 0, 0, 0,172, 0,171, 0], - [ 1, 0,113, 1, 0, 20,114, 0,111, 0,112, 0,116], + [ 7,131, 8,152, 9,130, 10,152,166,165,132,165,166], + [ 0, 0, 0, 0, 0, 0, 0,152,165,164, 0,162,165], + [152,152,152,152,121,152,152,152, 0, 0,229, 0, 0], + [ 43, 33, 44,151, 0, 0, 0,152,165,161, 0,163,165], + [ 21, 22, 21,151, 0, 0, 0,152,166,165, 0,165,166], + [151,245,151,151, 0, 87, 0,152,152,152, 85,153,153], + [ 0,246, 0,151, 0, 0, 0,152,152,221, 0,221,153], + [246, 0,246,151, 0, 0, 0,121, 85, 0, 0, 0,153], + [151,246,151,151, 0,153,153,153,153,153,153,153,153], + [ 0, 0, 0, 0, 0, 0, 0,164, 0, 0,163, 0, 0], + [ 1, 1, 1, 1, 0, 20, 0, 0, 0,162, 0,161, 0], + [ 1, 0,123, 1, 0, 20,124, 0,121, 0,122, 0,126], [ 1, 0, 0, 1, 88, 20, 86, 0, 0, 0, 0, 0, 0] ], "firstArrive": [ // 第一次到该楼层触发的事件 diff --git a/project/floors/sample2.js b/project/floors/sample2.js index 8467f162..666e5f64 100644 --- a/project/floors/sample2.js +++ b/project/floors/sample2.js @@ -21,8 +21,8 @@ main.floors.sample2 = [ 5, 4, 4, 4,247, 1,247, 1,247, 4, 4, 4, 5], [ 5, 4, 4, 4, 1,247,247,247, 1, 4, 4, 4, 5], [ 5, 4, 4, 4, 1,247, 30,247, 1, 4, 4, 4, 5], - [ 5, 4, 4, 4,247, 1,114, 1,247, 4, 4, 4, 5], - [ 5, 4, 4, 4, 4, 1,113, 1, 4, 4, 4, 4, 5], + [ 5, 4, 4, 4,247, 1,124, 1,247, 4, 4, 4, 5], + [ 5, 4, 4, 4, 4, 1,123, 1, 4, 4, 4, 4, 5], [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], [ 5, 4, 4, 4, 4, 1, 0, 1, 4, 4, 4, 4, 5], [ 5, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 5], diff --git a/project/maps.js b/project/maps.js index 45641367..07484df7 100644 --- a/project/maps.js +++ b/project/maps.js @@ -23,10 +23,10 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e = // Autotile '20':{'cls': 'autotile', 'id': 'autotile', 'noPass': true}, // autotile - // 更多的autotile只要不和现有的数字冲突即可 - '351':{'cls': 'autotile', 'id': 'autotile1', 'noPass': true}, - '352':{'cls': 'autotile', 'id': 'autotile2', 'noPass': true}, - '353':{'cls': 'autotile', 'id': 'autotile3', 'noPass': true}, + // 更多的autotile从151到160等,只要不和现有的数字冲突即可 + '151':{'cls': 'autotile', 'id': 'autotile1', 'noPass': true}, + '152':{'cls': 'autotile', 'id': 'autotile2', 'noPass': true}, + '153':{'cls': 'autotile', 'id': 'autotile3', 'noPass': true}, ////////////////////////// 物品部分 ////////////////////////// @@ -99,54 +99,55 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e = ////////////////////////// NPC部分 ////////////////////////// - // 111-150 NPC - '111':{'cls': 'npcs', 'id': 'man'}, - '112':{'cls': 'npcs', 'id': 'woman'}, - '113':{'cls': 'npcs', 'id': 'thief'}, - '114':{'cls': 'npcs', 'id': 'fairy'}, - '115':{'cls': 'npcs', 'id': 'magician'}, - '116':{'cls': 'npcs', 'id': 'womanMagician'}, - '117':{'cls': 'npcs', 'id': 'oldMan'}, - '118':{'cls': 'npcs', 'id': 'child'}, - '119':{'cls': 'npcs', 'id': 'wood'}, - '120':{'cls': 'npcs', 'id': 'pinkShop'}, - '121':{'cls': 'npcs', 'id': 'blueShop'}, - '122':{'cls': 'npcs', 'id': 'princess'}, - '123': {'cls': 'npcs', 'id': 'wlt'}, - '124': {'cls': 'npcs', 'id': 'wt'}, - '125': {'cls': 'npcs', 'id': 'wrt'}, - '126': {'cls': 'npcs', 'id': 'wl'}, - '127': {'cls': 'npcs', 'id': 'wc'}, - '128': {'cls': 'npcs', 'id': 'wr'}, - '129': {'cls': 'npcs', 'id': 'wlb'}, - '130': {'cls': 'npcs', 'id': 'wrb'}, - '131': {'cls': 'npcs', 'id': 'dlt'}, - '132': {'cls': 'npcs', 'id': 'dt'}, - '133': {'cls': 'npcs', 'id': 'drt'}, - '134': {'cls': 'npcs', 'id': 'dl'}, - '135': {'cls': 'npcs', 'id': 'dc'}, - '136': {'cls': 'npcs', 'id': 'dr'}, - '137': {'cls': 'npcs', 'id': 'dlb'}, - '138': {'cls': 'npcs', 'id': 'drb'}, - '139': {'cls': 'npc48', 'id': 'npc0'}, - '140': {'cls': 'npc48', 'id': 'npc1'}, - '141': {'cls': 'npc48', 'id': 'npc2'}, - '142': {'cls': 'npc48', 'id': 'npc3'}, - '143': {'cls': 'npc48', 'id': 'npc4'}, + // 121-150 NPC + '121':{'cls': 'npcs', 'id': 'man'}, + '122':{'cls': 'npcs', 'id': 'woman'}, + '123':{'cls': 'npcs', 'id': 'thief'}, + '124':{'cls': 'npcs', 'id': 'fairy'}, + '125':{'cls': 'npcs', 'id': 'magician'}, + '126':{'cls': 'npcs', 'id': 'womanMagician'}, + '127':{'cls': 'npcs', 'id': 'oldMan'}, + '128':{'cls': 'npcs', 'id': 'child'}, + '129':{'cls': 'npcs', 'id': 'wood'}, + '130':{'cls': 'npcs', 'id': 'pinkShop'}, + '131':{'cls': 'npcs', 'id': 'blueShop'}, + '132':{'cls': 'npcs', 'id': 'princess'}, + '133': {'cls': 'npc48', 'id': 'npc0'}, + '134': {'cls': 'npc48', 'id': 'npc1'}, + '135': {'cls': 'npc48', 'id': 'npc2'}, + '136': {'cls': 'npc48', 'id': 'npc3'}, + '137': {'cls': 'npc48', 'id': 'npc4'}, + + '181': {'cls': 'npcs', 'id': 'wlt'}, + '182': {'cls': 'npcs', 'id': 'wt'}, + '183': {'cls': 'npcs', 'id': 'wrt'}, + '184': {'cls': 'npcs', 'id': 'wl'}, + '185': {'cls': 'npcs', 'id': 'wc'}, + '186': {'cls': 'npcs', 'id': 'wr'}, + '187': {'cls': 'npcs', 'id': 'wlb'}, + '188': {'cls': 'npcs', 'id': 'wrb'}, + '189': {'cls': 'npcs', 'id': 'dlt'}, + '190': {'cls': 'npcs', 'id': 'dt'}, + '191': {'cls': 'npcs', 'id': 'drt'}, + '192': {'cls': 'npcs', 'id': 'dl'}, + '193': {'cls': 'npcs', 'id': 'dc'}, + '194': {'cls': 'npcs', 'id': 'dr'}, + '195': {'cls': 'npcs', 'id': 'dlb'}, + '196': {'cls': 'npcs', 'id': 'drb'}, ////////////////////////// 其他部分 ////////////////////////// // 171-200 其他(单向箭头、灯、箱子等等) - '171':{'cls': 'terrains', 'id': 'arrowUp', 'noPass': false}, // 单向上箭头 - '172':{'cls': 'terrains', 'id': 'arrowDown', 'noPass': false}, // 单向下箭头 - '173':{'cls': 'terrains', 'id': 'arrowLeft', 'noPass': false}, // 单向左箭头 - '174':{'cls': 'terrains', 'id': 'arrowRight', 'noPass': false}, // 单向右箭头 - '175':{'cls': 'terrains', 'id': 'light', 'trigger': 'changeLight', 'noPass': false}, // 灯 - '176':{'cls': 'terrains', 'id': 'darkLight', 'noPass': true}, // 暗灯 - '177':{'cls': 'terrains', 'id': 'ski', 'trigger': 'ski', 'noPass': false}, // 滑冰 - '178':{'cls': 'terrains', 'id': 'flower', 'noPass': false}, // 花 - '179':{'cls': 'terrains', 'id': 'box', 'trigger': 'pushBox', 'noPass': true}, // 箱子 - '180':{'cls': 'terrains', 'id': 'boxed', 'trigger': 'pushBox', 'noPass': true}, // 完成的箱子 + '161':{'cls': 'terrains', 'id': 'arrowUp', 'noPass': false}, // 单向上箭头 + '162':{'cls': 'terrains', 'id': 'arrowDown', 'noPass': false}, // 单向下箭头 + '163':{'cls': 'terrains', 'id': 'arrowLeft', 'noPass': false}, // 单向左箭头 + '164':{'cls': 'terrains', 'id': 'arrowRight', 'noPass': false}, // 单向右箭头 + '165':{'cls': 'terrains', 'id': 'light', 'trigger': 'changeLight', 'noPass': false}, // 灯 + '166':{'cls': 'terrains', 'id': 'darkLight', 'noPass': true}, // 暗灯 + '167':{'cls': 'terrains', 'id': 'ski', 'trigger': 'ski', 'noPass': false}, // 滑冰 + '168':{'cls': 'terrains', 'id': 'flower', 'noPass': false}, // 花 + '169':{'cls': 'terrains', 'id': 'box', 'trigger': 'pushBox', 'noPass': true}, // 箱子 + '170':{'cls': 'terrains', 'id': 'boxed', 'trigger': 'pushBox', 'noPass': true}, // 完成的箱子 ////////////////////////// 怪物部分 ////////////////////////// From c833626ce2fd4412e1d417a54cf0458bdf3b11a9 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 22 Apr 2018 10:49:41 +0800 Subject: [PATCH 4/4] Update Number --- project/floors/sample0.js | 312 ++++++++++++++------------------------ 1 file changed, 113 insertions(+), 199 deletions(-) diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 129c9f1b..78e04a85 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -1,206 +1,120 @@ -main.floors.sample0= +main.floors.sample0 = { -"floorId": "sample0", -"title": "样板 0 层", -"name": "0", -"canFlyTo": true, -"canUseQuickShop": true, -"defaultGround": "ground", -"images": [], -"bgm": "bgm.mp3", -"item_ratio": 2, -"map": [ - [ 0, 0,220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], - [ 0,246, 0,246, 0, 20, 0, 3, 58, 59, 60, 61, 41], - [219, 0, 0, 0,219, 20, 0, 3, 57, 26, 62, 63, 40], - [ 20, 20,125, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], - [216,247,263,235,248, 6, 0, 3, 49, 50, 51, 52, 38], - [ 6, 6,125, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], - [224,254,212,262,204, 5, 0, 1, 31, 32, 34, 33, 36], - [201,261,217,264,207, 5, 0, 1, 27, 28, 29, 30, 35], - [ 5, 5,125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], - [ 0, 0,237, 0, 0, 0, 45, 1, 1, 1,121, 1, 1], - [ 4, 4,133, 4, 4, 4, 0, 0, 0, 0, 0, 85,124], - [ 87, 11, 12, 13, 14, 4, 4, 2, 2, 2,122, 2, 2], - [ 88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86] -], -"firstArrive": [ - "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", - "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", - "\t[仙子,fairy]你问我...?我也不知道啊...", - "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。" -], -"events": { - "10,9": [ - "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为三类:items, constants, tools。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\n\n后两类道具在工具栏中可以看到并使用。", - "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", - "\t[老人,man]constants 和 tools 各最多只允许12种,多了会导致图标溢出。", - "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - { - "type": "hide", - "time": 500 - } + "floorId": "sample0", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 + "title": "样板 0 层", // 楼层中文名 + "name": "0", // 显示在状态栏中的层数 + "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) + "canUseQuickShop": true, // 该层是否允许使用快捷商店 + "defaultGround": "ground", // 默认地面的图块ID(terrains中) + "images": [], // 该层默认显示的所有图片;详细用法请查看文档“自定义素材”中的说明。 + // "color": [0,0,0,0.3] // 该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组。 + // "weather": ["snow",5], // 该层的默认天气。本项可忽略表示晴天,如果写则第一项为"rain"或"snow"代表雨雪,第二项为1-10之间的数代表强度。 + "bgm": "bgm.mp3", // 到达该层后默认播放的BGM。本项可忽略。 + "item_ratio": 2, // 该层的宝石/血瓶倍率 + "map": [ // 地图数据,需要是13x13,建议使用地图生成器来生成 + [0, 0, 220, 0, 0, 20, 87, 3, 65, 64, 44, 43, 42], + [0, 246, 0, 246, 0, 20, 0, 3, 58, 59, 60, 61, 41], + [219, 0, 0, 0, 219, 20, 0, 3, 57, 26, 62, 63, 40], + [20, 20, 125, 20, 20, 20, 0, 3, 53, 54, 55, 56, 39], + [216, 247, 263, 235, 248, 6, 0, 3, 49, 50, 51, 52, 38], + [6, 6, 125, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], + [224, 254, 212, 262, 204, 5, 0, 1, 31, 32, 34, 33, 36], + [201, 261, 217, 264, 207, 5, 0, 1, 27, 28, 29, 30, 35], + [5, 5, 125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], + [0, 0, 237, 0, 0, 0, 45, 1, 1, 1, 121, 1, 1], + [4, 4, 133, 4, 4, 4, 0, 0, 0, 0, 0, 85, 124], + [87, 11, 12, 13, 14, 4, 4, 2, 2, 2, 122, 2, 2], + [88, 89, 90, 91, 92, 93, 94, 2, 81, 82, 83, 84, 86], ], - "10,11": [ - "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", - "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - { - "type": "hide", - "time": 500 - } + "firstArrive": [ // 第一次到该楼层触发的事件 + "\t[样板提示]首次到达某层可以触发 firstArrive 事件,该事件可类似于RMXP中的“自动执行脚本”。\n\n本事件支持一切的事件类型,常常用来触发对话,例如:", + "\t[hero]\b[up,hero]我是谁?我从哪来?我又要到哪去?", + "\t[仙子,fairy]你问我...?我也不知道啊...", + "本层主要对道具、门、怪物等进行介绍,有关事件的各种信息在下一层会有更为详细的说明。", ], - "2,10": [ - "\t[少女,npc0]这些是路障、楼梯、传送门。", - "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", - "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", - { - "type": "hide", - "time": 500 - } - ], - "2,8": [ - "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", - "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", - "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", - { - "type": "hide", - "time": 500 - } - ], - "2,5": [ - "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", - { - "type": "hide", - "time": 500 - } - ], - "2,3": [ - "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", - "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", - { - "type": "hide", - "time": 500 - } - ], - "12,10": { - "enable": false, - "data": [ - "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", - { - "type": "hide", - "time": 500 - } - ] - } -}, -"changeFloor": { - "6,0": { - "floorId": "sample1", - "stair": "downFloor" - }, - "0,11": { - "floorId": "sample0", - "loc": [ - 0, - 12 - ] - }, - "0,12": { - "floorId": "sample0", - "stair": "upFloor" - }, - "1,12": { - "floorId": "sample0", - "loc": [ - 1, - 12 - ] - }, - "2,12": { - "floorId": "sample0", - "loc": [ - 2, - 12 - ] - }, - "3,12": { - "floorId": "sample0", - "loc": [ - 6, - 1 + "events": { // 该楼的所有可能事件列表 + "10,9": [ // 守着道具的老人 + "\t[老人,man]这些是本样板支持的所有的道具。\n\n道具分为三类:items, constants, tools。\nitems 为即捡即用类道具,例如宝石、血瓶、剑盾等。\nconstants 为永久道具,例如怪物手册、楼层传送器、幸运金币等。\ntools 为消耗类道具,例如破墙镐、炸弹、中心对称飞行器等。\n\n后两类道具在工具栏中可以看到并使用。", + "\t[老人,man]\b[up]有关道具效果,定义在items.js中。\n目前大多数道具已有默认行为,如有自定义的需求则需在items.js中修改代码。", + "\t[老人,man]constants 和 tools 各最多只允许12种,多了会导致图标溢出。", + "\t[老人,man]\b[up]拾取道具结束后可触发 afterGetItem 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + {"type": "hide", "time": 500} // 消失 ], - "direction": "up" - }, - "4,12": { - "floorId": "sample0", - "loc": [ - 0, - 9 + "10,11": [ // 守着门的老人 + "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", + "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + {"type": "hide", "time": 500} ], - "direction": "left", - "time": 1000 - }, - "5,12": { - "floorId": "sample0", - "loc": [ - 6, - 10 + "2,10": [ // 守着楼梯、传送门、路障的老人 + "\t[少女,npc0]这些是路障、楼梯、传送门。", + "\t[少女,npc0]血网的伤害数值、中毒后每步伤害数值、衰弱时攻防下降的数值,都在 data.js 内定义。\n\n路障同样会尽量被自动寻路绕过。", + "\t[少女,npc0]楼梯和传送门需要在changeFloor中定义目标楼层和位置,可参见样板里已有的的写法。", + {"type": "hide", "time": 500} ], - "time": 0, - "portalWithoutTrigger": false - }, - "6,12": { - "floorId": "sample0", - "loc": [ - 10, - 10 + "2,8": [ // 守着第一批怪物的老人 + "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", + "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", + "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + {"type": "hide", "time": 500} ], - "direction": "left", - "time": 1000 - } -}, -"afterBattle": { - "2,6": [ - "\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)" - ] -}, -"afterGetItem": { - "11,8": [ - "由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。" - ], - "8,6": [ - "由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。" - ], - "8,7": [ - "如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。" - ], - "10,7": [ - "在 data.js 的系统Flag中设置是否启用魔防。\n如果不启用魔防则不会在状态栏显示。" - ], - "9,5": [ - "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", - "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" - ], - "10,5": [ - "破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。" - ], - "8,4": [ - "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。" - ], - "10,4": [ - "“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。" - ], - "9,2": [ - "该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。" - ], - "10,2": [ - "屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。" - ] -}, -"afterOpenDoor": { - "11,12": [ - "你开了一个绿门,触发了一个afterOpenDoor事件" - ] -}, -"cannotMove": {}, -} \ No newline at end of file + "2,5": [ // 守着第二批怪物的老人 + "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", + {"type": "hide", "time": 500} + ], + "2,3": [ // 守着第三批怪物的老人 + "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", + "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", + {"type": "hide", "time": 500} + ], + "12,10": { // 隐藏的仙子 + "enable": false, // enable: false代表初始时禁用事件 + "data": [ + "\t[仙子,fairy]只有楼上启用事件后,才能看到我并可以和我对话来触发事件。", + {"type": "hide", "time": 500} + ] + }, + }, + "changeFloor": { // 楼层转换事件;该事件不能和上面的events有冲突(同位置点),否则会被覆盖 + "6,0": {"floorId": "sample1", "stair": "downFloor"}, // 目标点:sample1层的下楼梯位置 + "0,11": {"floorId": "sample0", "loc": [0,12]}, // 目标点:sample0层的x=0,y=12位置 + "0,12": {"floorId": "sample0", "stair": "upFloor"}, // 注意,目标层有多个楼梯的话,写stair可能会导致到达位置不确定。这时候推荐写loc指明目标点位置。 + "1,12": {"floorId": "sample0", "loc": [1,12]}, + "2,12": {"floorId": "sample0", "loc": [2,12]}, + "3,12": {"floorId": "sample0", "loc": [6,1], "direction": "up"}, // 切换楼层后勇士面对上方 + "4,12": {"floorId": "sample0", "loc": [0,9], "direction": "left", "time": 1000}, // 切换楼层后勇士面对左边,切换动画1000ms + "5,12": {"floorId": "sample0", "loc": [6,10], "time": 0, "portalWithoutTrigger": false}, // time=0表示无切换时间 + "6,12": {"floorId": "sample0", "loc": [10,10], "direction": "left", "time": 1000}, + }, + "afterBattle": { // 战斗后可能触发的事件列表 + "2,6": ["\t[ghostSkeleton]不可能,你怎么可能打败我!\n(一个打败怪物触发的事件)"], + }, + "afterGetItem": { // 获得道具后可能触发的事件列表 + "11,8": ["由于状态栏放不下,绿钥匙和铁门钥匙均视为tools,放入工具栏中。\n碰到绿门和铁门仍然会自动使用开门。"], + "8,6": ["由于吸血和夹击等的存在,血瓶默认自动被绕路。\n你可以修改data.js中的系统Flag来设置这一项。"], + "8,7": ["如需修改消耗品的效果,请前往 data.js ,找到并修改values内对应的具体数值即可。\n如果有更高级的需求(如每个区域宝石数值变化),详见doc文档内的做法说明。"], + "10,7": ["在 data.js 的系统Flag中设置是否启用魔防。\n如果不启用魔防则不会在状态栏显示。"], + "9,5": [ + "每层楼的 canFlyTo 决定了该楼层能否被飞到。\n\n不能被飞到的楼层也无法使用楼层传送器。", + "飞行的楼层顺序由 main.js 中 floorIds 加载顺序所决定。\n\n是否必须在楼梯边使用楼传器由 data.js 中的系统Flag所决定。" + ], + "10,5": ["破墙镐是破面前的墙壁还是四个方向的墙壁,由data.js中的系统Flag所决定。"], + "8,4": [ + "炸弹是只能炸面前的怪物还是四个方向的怪物,由data.js中的系统Flag所决定。\n如只能炸前方怪物则和上面的圣锤等价。\n不能被炸的怪物在enemys中可以定义,可参见样板里黑衣魔王和黑暗大法师的写法。", + ], + "10,4": ["“上楼”和“下楼”的目标层由 main.js 的 floorIds顺序所决定。"], + "9,2": ["该道具默认是大黄门钥匙,如需改为钥匙盒直接修改 data.js 中的系统Flag即可。"], + "10,2": ["屠龙匕首目前未被定义,可能需要自行实现功能。\n有关如何实现一个道具功能参见doc文档。"], + }, + "afterOpenDoor": { // 开完门后可能触发的事件列表 + "11,12": ["你开了一个绿门,触发了一个afterOpenDoor事件"] + }, + "cannotMove": { // 每个图块不可通行的方向 + // 可以在这里定义每个点不能前往哪个方向,例如悬崖边不能跳下去 + // "x,y": ["up", "left"], // (x,y)点不能往上和左走 + + }, + +}