From 86bcd55c9e5861fb407369880ed2367b54ae3800 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 16 May 2020 09:35:05 +0800 Subject: [PATCH 01/80] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 12 ++--- _server/editor_datapanel.js | 88 +++++++++++++++++------------------ _server/editor_mode.js | 5 +- _server/editor_table.js | 2 +- _server/table/data.comment.js | 10 ++-- libs/core.js | 2 +- main.js | 2 +- project/data.js | 4 +- 8 files changed, 64 insertions(+), 61 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index e1560d21..56487191 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -40,12 +40,12 @@ function editor() { layerMod3:document.getElementById('layerMod3'), viewportButtons:document.getElementById('viewportButtons'), appendPicCanvas : document.getElementById('appendPicCanvas'), - bg : document.getElementById('appendPicCanvas').children[0], - source : document.getElementById('appendPicCanvas').children[1], - picClick : document.getElementById('appendPicCanvas').children[2], - sprite : document.getElementById('appendPicCanvas').children[3], - sourceCtx:document.getElementById('appendPicCanvas').children[1].getContext('2d'), - spriteCtx:document.getElementById('appendPicCanvas').children[3].getContext('2d'), + appendBgCtx : document.getElementById('appendPicCanvas').children[0].getContext('2d'), + appendSource : document.getElementById('appendPicCanvas').children[1], + appendPicClick : document.getElementById('appendPicCanvas').children[2], + appendSprite : document.getElementById('appendPicCanvas').children[3], + appendSourceCtx:document.getElementById('appendPicCanvas').children[1].getContext('2d'), + appendSpriteCtx:document.getElementById('appendPicCanvas').children[3].getContext('2d'), appendPicSelection : document.getElementById('appendPicSelection'), selectAppend : document.getElementById('selectAppend'), selectFileBtn :document.getElementById('selectFileBtn'), diff --git a/_server/editor_datapanel.js b/_server/editor_datapanel.js index 827c57ff..b0f6a9bd 100644 --- a/_server/editor_datapanel.js +++ b/_server/editor_datapanel.js @@ -621,7 +621,7 @@ editor_datapanel_wrapper = function (editor) { editor.uifunctions.fixCtx_func = function () { - [editor.dom.sourceCtx, editor.dom.spriteCtx].forEach(function (ctx) { + [editor.dom.appendSourceCtx, editor.dom.appendSpriteCtx].forEach(function (ctx) { ctx.mozImageSmoothingEnabled = false; ctx.webkitImageSmoothingEnabled = false; ctx.msImageSmoothingEnabled = false; @@ -644,10 +644,10 @@ editor_datapanel_wrapper = function (editor) { editor_mode.appendPic.imageName = 'autotile'; for (var jj = 0; jj < 4; jj++) editor.dom.appendPicSelection.children[jj].style = 'display:none'; if (editor_mode.appendPic.img) { - editor.dom.sprite.style.width = (editor.dom.sprite.width = editor_mode.appendPic.img.width) / editor.uivalues.ratio + 'px'; - editor.dom.sprite.style.height = (editor.dom.sprite.height = editor_mode.appendPic.img.height) / editor.uivalues.ratio + 'px'; - editor.dom.spriteCtx.clearRect(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); - editor.dom.spriteCtx.drawImage(editor_mode.appendPic.img, 0, 0); + editor.dom.appendSprite.style.width = (editor.dom.appendSprite.width = editor_mode.appendPic.img.width) / editor.uivalues.ratio + 'px'; + editor.dom.appendSprite.style.height = (editor.dom.appendSprite.height = editor_mode.appendPic.img.height) / editor.uivalues.ratio + 'px'; + editor.dom.appendSpriteCtx.clearRect(0, 0, editor.dom.appendSprite.width, editor.dom.appendSprite.height); + editor.dom.appendSpriteCtx.drawImage(editor_mode.appendPic.img, 0, 0); } return; } @@ -668,9 +668,9 @@ editor_datapanel_wrapper = function (editor) { for (var jj = num; jj < 4; jj++) { editor.dom.appendPicSelection.children[jj].style = 'display:none'; } - editor.dom.sprite.style.width = (editor.dom.sprite.width = img.width) / editor.uivalues.ratio + 'px'; - editor.dom.sprite.style.height = (editor.dom.sprite.height = img.height + ysize) / editor.uivalues.ratio + 'px'; - editor.dom.spriteCtx.drawImage(img, 0, 0); + editor.dom.appendSprite.style.width = (editor.dom.appendSprite.width = img.width) / editor.uivalues.ratio + 'px'; + editor.dom.appendSprite.style.height = (editor.dom.appendSprite.height = img.height + ysize) / editor.uivalues.ratio + 'px'; + editor.dom.appendSpriteCtx.drawImage(img, 0, 0); } editor.dom.selectAppend.onchange(); } @@ -787,8 +787,8 @@ editor_datapanel_wrapper = function (editor) { newsprite.style.width = (newsprite.width = image.width) / editor.uivalues.ratio + 'px'; newsprite.style.height = (newsprite.height = image.height) / editor.uivalues.ratio + 'px'; } - editor.dom.spriteCtx.clearRect(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); - editor.dom.spriteCtx.drawImage(image, 0, 0); + editor.dom.appendSpriteCtx.clearRect(0, 0, editor.dom.appendSprite.width, editor.dom.appendSprite.height); + editor.dom.appendSpriteCtx.drawImage(image, 0, 0); } else { var ysize = editor.dom.selectAppend.value.endsWith('48') ? 48 : 32; @@ -800,7 +800,7 @@ editor_datapanel_wrapper = function (editor) { } //画灰白相间的格子 - var bgc = editor.dom.bgCtx; + var bgc = editor.dom.appendBgCtx; var colorA = ["#f8f8f8", "#cccccc"]; var colorIndex; var sratio = 4; @@ -814,8 +814,8 @@ editor_datapanel_wrapper = function (editor) { } //把导入的图片画出 - editor.dom.sourceCtx.drawImage(image, 0, 0); - editor_mode.appendPic.sourceImageData = editor.dom.sourceCtx.getImageData(0, 0, image.width, image.height); + editor.dom.appendSourceCtx.drawImage(image, 0, 0); + editor_mode.appendPic.sourceImageData = editor.dom.appendSourceCtx.getImageData(0, 0, image.width, image.height); //重置临时变量 editor.dom.selectAppend.onchange(); @@ -851,8 +851,8 @@ editor_datapanel_wrapper = function (editor) { editor.util.setPixel(nimgData, x, y, convert(editor.util.getPixel(imgData, x, y), delta)) } } - editor.dom.sourceCtx.clearRect(0, 0, imgData.width, imgData.height); - editor.dom.sourceCtx.putImageData(nimgData, 0, 0); + editor.dom.appendSourceCtx.clearRect(0, 0, imgData.width, imgData.height); + editor.dom.appendSourceCtx.putImageData(nimgData, 0, 0); } } @@ -877,7 +877,7 @@ editor_datapanel_wrapper = function (editor) { return pos; } - editor.dom.picClick.onclick = function (e) { + editor.dom.appendPicClick.onclick = function (e) { var loc = eToLoc(e); var pos = locToPos(loc); //console.log(e,loc,pos); @@ -907,12 +907,12 @@ editor_datapanel_wrapper = function (editor) { printe("不合法的Autotile图片!"); return; } - var imgData = editor.dom.sourceCtx.getImageData(0, 0, image.width, image.height); - editor.dom.spriteCtx.putImageData(imgData, 0, 0); - var imgbase64 = editor.dom.sprite.toDataURL().split(',')[1]; + var imgData = editor.dom.appendSourceCtx.getImageData(0, 0, image.width, image.height); + editor.dom.appendSpriteCtx.putImageData(imgData, 0, 0); + var imgbase64 = editor.dom.appendSprite.toDataURL().split(',')[1]; // Step 1: List文件名 - fs.readdir('./project/images', function (err, data) { + fs.readdir('./project/autotiles', function (err, data) { if (err) { printe(err); throw (err); @@ -926,7 +926,7 @@ editor_datapanel_wrapper = function (editor) { } // Step 3: 写入文件 - fs.writeFile('./project/images/' + filename + ".png", imgbase64, 'base64', function (err, data) { + fs.writeFile('./project/autotiles/' + filename + ".png", imgbase64, 'base64', function (err, data) { if (err) { printe(err); throw (err); @@ -953,23 +953,23 @@ editor_datapanel_wrapper = function (editor) { var ysize = editor.dom.selectAppend.value.endsWith('48') ? 48 : 32; for (var ii = 0, v; v = editor_mode.appendPic.selectPos[ii]; ii++) { - // var imgData = editor.dom.sourceCtx.getImageData(v.x * 32, v.y * ysize, 32, ysize); - // editor.dom.spriteCtx.putImageData(imgData, ii * 32, editor.dom.sprite.height - ysize); - // editor.dom.spriteCtx.drawImage(editor_mode.appendPic.img, v.x * 32, v.y * ysize, 32, ysize, ii * 32, height, 32, ysize) + // var imgData = editor.dom.appendSourceCtx.getImageData(v.x * 32, v.y * ysize, 32, ysize); + // editor.dom.appendSpriteCtx.putImageData(imgData, ii * 32, editor.dom.appendSprite.height - ysize); + // editor.dom.appendSpriteCtx.drawImage(editor_mode.appendPic.img, v.x * 32, v.y * ysize, 32, ysize, ii * 32, height, 32, ysize) - editor.dom.spriteCtx.drawImage(editor.dom.sourceCtx.canvas, v.x * 32, v.y * ysize, 32, ysize, 32 * ii, editor.dom.sprite.height - ysize, 32, ysize); + editor.dom.appendSpriteCtx.drawImage(editor.dom.appendSourceCtx.canvas, v.x * 32, v.y * ysize, 32, ysize, 32 * ii, editor.dom.appendSprite.height - ysize, 32, ysize); } - var dt = editor.dom.spriteCtx.getImageData(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); - var imgbase64 = editor.dom.sprite.toDataURL('image/png'); + var dt = editor.dom.appendSpriteCtx.getImageData(0, 0, editor.dom.appendSprite.width, editor.dom.appendSprite.height); + var imgbase64 = editor.dom.appendSprite.toDataURL('image/png'); var imgName = editor_mode.appendPic.imageName; - fs.writeFile('./project/images/' + imgName + '.png', imgbase64.split(',')[1], 'base64', function (err, data) { + fs.writeFile('./project/materials/' + imgName + '.png', imgbase64.split(',')[1], 'base64', function (err, data) { if (err) { printe(err); throw (err) } - var currHeight = editor.dom.sprite.height; - editor.dom.sprite.style.height = (editor.dom.sprite.height = (currHeight + ysize)) + "px"; - editor.dom.spriteCtx.putImageData(dt, 0, 0); + var currHeight = editor.dom.appendSprite.height; + editor.dom.appendSprite.style.height = (editor.dom.appendSprite.height = (currHeight + ysize)) + "px"; + editor.dom.appendSpriteCtx.putImageData(dt, 0, 0); core.material.images[imgName].src = imgbase64; editor.widthsX[imgName][3] = currHeight; if (appendRegister && appendRegister.checked) { @@ -992,29 +992,29 @@ editor_datapanel_wrapper = function (editor) { if (value != 'enemys' && value != 'enemy48' && value != 'npcs' && value != 'npc48') return printe("只有怪物或NPC才能快速导入!"); var ysize = value.endsWith('48') ? 48 : 32; - if (editor.dom.sourceCtx.canvas.width != 128 || editor.dom.sourceCtx.canvas.height != 4 * ysize) + if (editor.dom.appendSourceCtx.canvas.width != 128 || editor.dom.appendSourceCtx.canvas.height != 4 * ysize) return printe("只有 4*4 的素材图片才可以快速导入!"); - var dt = editor.dom.spriteCtx.getImageData(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); - editor.dom.sprite.style.height = (editor.dom.sprite.height = (editor.dom.sprite.height + 3 * ysize)) + "px"; - editor.dom.spriteCtx.putImageData(dt, 0, 0); - if (editor.dom.sprite.width == 64) { // 两帧 - editor.dom.spriteCtx.drawImage(editor.dom.sourceCtx.canvas, 32, 0, 64, 4 * ysize, 0, editor.dom.sprite.height - 4 * ysize, 64, 4 * ysize); + var dt = editor.dom.appendSpriteCtx.getImageData(0, 0, editor.dom.appendSprite.width, editor.dom.appendSprite.height); + editor.dom.appendSprite.style.height = (editor.dom.appendSprite.height = (editor.dom.appendSprite.height + 3 * ysize)) + "px"; + editor.dom.appendSpriteCtx.putImageData(dt, 0, 0); + if (editor.dom.appendSprite.width == 64) { // 两帧 + editor.dom.appendSpriteCtx.drawImage(editor.dom.appendSourceCtx.canvas, 32, 0, 64, 4 * ysize, 0, editor.dom.appendSprite.height - 4 * ysize, 64, 4 * ysize); } else { // 四帧 - editor.dom.spriteCtx.drawImage(editor.dom.sourceCtx.canvas, 0, 0, 128, 4 * ysize, 0, editor.dom.sprite.height - 4 * ysize, 128, 4 * ysize); + editor.dom.appendSpriteCtx.drawImage(editor.dom.appendSourceCtx.canvas, 0, 0, 128, 4 * ysize, 0, editor.dom.appendSprite.height - 4 * ysize, 128, 4 * ysize); } - dt = editor.dom.spriteCtx.getImageData(0, 0, editor.dom.sprite.width, editor.dom.sprite.height); - var imgbase64 = editor.dom.sprite.toDataURL('image/png'); + dt = editor.dom.appendSpriteCtx.getImageData(0, 0, editor.dom.appendSprite.width, editor.dom.appendSprite.height); + var imgbase64 = editor.dom.appendSprite.toDataURL('image/png'); var imgName = editor_mode.appendPic.imageName; - fs.writeFile('./project/images/' + imgName + '.png', imgbase64.split(',')[1], 'base64', function (err, data) { + fs.writeFile('./project/materials/' + imgName + '.png', imgbase64.split(',')[1], 'base64', function (err, data) { if (err) { printe(err); throw (err) } - var currHeight = editor.dom.sprite.height; - editor.dom.sprite.style.height = (editor.dom.sprite.height = (currHeight + ysize)) + "px"; - editor.dom.spriteCtx.putImageData(dt, 0, 0); + var currHeight = editor.dom.appendSprite.height; + editor.dom.appendSprite.style.height = (editor.dom.appendSprite.height = (currHeight + ysize)) + "px"; + editor.dom.appendSpriteCtx.putImageData(dt, 0, 0); core.material.images[imgName].src = imgbase64; editor.widthsX[imgName][3] = currHeight; if (appendRegister && appendRegister.checked) { diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 4bf207ad..3339d993 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -169,9 +169,10 @@ editor_mode = function (editor) { return true } - editor_mode.prototype.checkImages = function (thiseval) { + editor_mode.prototype.checkImages = function (thiseval, directory) { + if (!directory) return true; if (!editor_mode.checkUnique(thiseval)) return false; - fs.readdir('project/images', function (err, data) { + fs.readdir(directory, function (err, data) { if (err) { printe(err); throw Error(err); diff --git a/_server/editor_table.js b/_server/editor_table.js index 4a404428..1788515b 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -362,7 +362,7 @@ editor_table_wrapper = function (editor) { var tokenstyle = document.createElement("style"); document.body.appendChild(tokenstyle); - tokenPoolRender = function() { + var tokenPoolRender = function() { var content = ""; Object.keys(tokenPool).forEach(function(k) { content += /* CSS */`[data-field|=${k}]{ display: none }`; diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index 48c722f9..238b7c62 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -20,7 +20,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "images": { "_leaf": true, "_type": "material", - "_range": "editor.mode.checkImages(thiseval)", + "_range": "editor.mode.checkImages(thiseval, './project/images/')", "_directory": "./project/images/", "_transform": (function (one) { if (one.endsWith('.png') || one.endsWith('.jpg') || one.endsWith('.jpeg') || end.endsWith('.gif')) @@ -33,8 +33,8 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "tilesets": { "_leaf": true, "_type": "material", - "_range": "editor.mode.checkImages(thiseval)", - "_directory": "./project/images/", + "_range": "editor.mode.checkImages(thiseval, './project/tilesets/')", + "_directory": "./project/tilesets/", "_transform": (function (one) { if (one.endsWith('.png')) return one; @@ -248,7 +248,9 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "select", "_select": { - "values": [null].concat(Object.keys(editor.core.material.images)) + "values": [null].concat(Object.keys(editor.core.material.images.images).filter(function (name) { + return name.endsWith('.png'); + })) }, "_data": "勇士行走图" }, diff --git a/libs/core.js b/libs/core.js index 6b5d45ec..d853edbc 100644 --- a/libs/core.js +++ b/libs/core.js @@ -192,7 +192,7 @@ function core() { 'equipName': main.equipName || [], "statusLeftBackground": main.statusLeftBackground || "url(project/materials/ground.png) repeat", "statusTopBackground": main.statusTopBackground || "url(project/materials/ground.png) repeat", - "toolsBackground": main.toolsBackground || "url(project/images/materials.png) repeat", + "toolsBackground": main.toolsBackground || "url(project/materials/ground.png) repeat", "borderColor": main.borderColor || "white", "statusBarColor": main.statusBarColor || "white", "hardLabelColor": main.hardLabelColor || "red", diff --git a/main.js b/main.js index 89864d06..be30e993 100644 --- a/main.js +++ b/main.js @@ -200,7 +200,7 @@ main.prototype.init = function (mode, callback) { var mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main; for(var ii in mainData)main[ii]=mainData[ii]; - main.dom.startBackground.src="project/images/"+main.startBackground; + main.dom.startBackground.src = main.startBackground; main.dom.startLogo.style=main.startLogoStyle; main.dom.startButtonGroup.style = main.startButtonsStyle; main.levelChoose.forEach(function(value){ diff --git a/project/data.js b/project/data.js index 6cf996f6..fad424a9 100644 --- a/project/data.js +++ b/project/data.js @@ -40,7 +40,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "背景图.jpg": "bg.jpg", "背景音乐.mp3": "bgm.mp3" }, - "startBackground": "bg.jpg", + "startBackground": "project/images/bg.jpg", "startLogoStyle": "color: black", "levelChoose": [ [ @@ -65,7 +65,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "盾牌" ], "startBgm": null, - "statusLeftBackground": null, + "statusLeftBackground": "url(project/materials/ground.png) repeat", "statusTopBackground": "url(project/materials/ground.png) repeat", "toolsBackground": "url(project/materials/ground.png) repeat", "borderColor": "#CCCCCC", From fbf3b1b6119e503bf19ddbce5cfbeba4a6510637 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 16 May 2020 10:28:52 +0800 Subject: [PATCH 02/80] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E7=B4=A0=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/event.md | 4 +- _server/editor_mode.js | 4 +- project/enemys.js | 149 +++++++++++++++++++-------------- project/floors/sample3.js | 92 ++++++++++---------- project/icons.js | 110 ++++++++++++++---------- project/maps.js | 106 ++++++++++++++--------- project/materials/animates.png | Bin 33308 -> 35354 bytes project/materials/enemys.png | Bin 40888 -> 73550 bytes project/materials/icons.png | Bin 22740 -> 8634 bytes project/materials/items.png | Bin 42983 -> 23440 bytes project/materials/keyboard.png | Bin 76719 -> 26517 bytes project/materials/npcs.png | Bin 16480 -> 17272 bytes v2.x-final更新.txt | 2 + 13 files changed, 271 insertions(+), 196 deletions(-) diff --git a/_docs/event.md b/_docs/event.md index be88228b..87fab1b2 100644 --- a/_docs/event.md +++ b/_docs/event.md @@ -81,8 +81,8 @@ "一段普通文字", "\t[勇士,hero]这是一段勇士说的话", "\t[hero]如果使用勇士默认名称也可以直接简写hero", - "\t[黑暗大法师,blackMagician]我是黑暗大法师", - "\t[blackMagician]如果使用怪物的默认名称也可以简写怪物id", + "\t[黑暗大法师,magicMaster]我是黑暗大法师", + "\t[magicMaster]如果使用怪物的默认名称也可以简写怪物id", "\t[小妖精,fairy]这是一段小妖精说的话,使用仙子(fairy)的图标", "\t[你赢了]直接显示标题为【你赢了】", "\t[1.png]绘制1.png这个头像图", diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 3339d993..5ca0f7b0 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -97,14 +97,14 @@ editor_mode = function (editor) { } editor_mode.prototype.onmode = function (mode, callback) { - setTimeout(function(){ + //setTimeout(function(){ if (editor_mode.mode != mode) { if (mode === 'save') editor_mode.doActionList(editor_mode.mode, editor_mode.actionList, callback); if (editor_mode.mode === 'nextChange' && mode) editor_mode.showMode(mode); if (mode !== 'save') editor_mode.mode = mode; editor_mode.actionList = []; } - }) + //}) } editor_mode.prototype.showMode = function (mode) { diff --git a/project/enemys.js b/project/enemys.js index e2024616..f5e49f15 100644 --- a/project/enemys.js +++ b/project/enemys.js @@ -1,67 +1,88 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = { - "greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"exp":1,"point":0,"special":[1,5,7,8]}, - "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[16,18],"value":10}, - "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]}, - "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]}, - "bigBat": {"name":"大蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redBat": {"name":"红蝙蝠","hp":100,"atk":120,"def":0,"money":5,"exp":0,"point":0,"special":[4]}, - "vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeleton": {"name":"骷髅人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonSoilder": {"name":"骷髅士兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonCaptain": {"name":"骷髅队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "ghostSkeleton": {"name":"冥队长","hp":100,"atk":120,"def":0,"money":8,"exp":0,"point":0,"special":[7]}, - "zombie": {"name":"兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "zombieKnight": {"name":"兽人武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "rock": {"name":"石头人","hp":100,"atk":120,"def":0,"money":4,"exp":0,"point":0,"special":[3]}, - "slimeMan": {"name":"影子战士","hp":100,"atk":0,"def":0,"money":11,"exp":0,"point":0,"special":[10,21],"atkValue":2,"defValue":3}, - "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"exp":0,"point":1,"special":[2]}, - "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"exp":0,"point":0,"special":[15],"value":100,"range":2}, - "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"exp":0,"point":0,"special":[15],"value":200,"zoneSquare":true}, - "yellowGuard": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[]}, - "blueGuard": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redGuard": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"exp":0,"point":0,"special":[5,23]}, - "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redKnight": {"name":"红骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "darkKnight": {"name":"黑骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blackKing": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"exp":1000,"point":0,"special":[],"notBomb":true}, - "yellowKing": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "greenKing": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blueKnight": {"name":"蓝骑士","hp":100,"atk":120,"def":0,"money":9,"exp":0,"point":0,"special":[8]}, - "goldSlime": {"name":"黄头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "poisonSkeleton": {"name":"紫骷髅","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "poisonBat": {"name":"紫蝙蝠","hp":100,"atk":120,"def":0,"money":14,"exp":0,"point":0,"special":[13]}, - "steelRock": {"name":"铁面人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonPriest": {"name":"骷髅法师","hp":100,"atk":100,"def":0,"money":0,"exp":0,"point":0,"special":[18,23],"value":20}, - "skeletonKing": {"name":"骷髅王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonWizard": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redSkeletonCaption": {"name":"骷髅武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "badHero": {"name":"迷失勇者","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "demon": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "goldHornSlime": {"name":"金角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redKing": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "whiteKing": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":[16]}, - "blackMagician": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"exp":0,"point":0,"special":[11],"value":0.3333333333333333,"add":true,"notBomb":true}, - "silverSlime": {"name":"银头怪","hp":100,"atk":120,"def":0,"money":15,"exp":0,"point":0,"special":[14]}, - "swordEmperor": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "badPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "badFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "grayPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redSwordsman": {"name":"剑王","hp":100,"atk":120,"def":0,"money":7,"exp":0,"point":0,"special":[6],"n":8}, - "whiteGhost": {"name":"水银战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"exp":0,"point":0,"special":[12]}, - "magicDragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "darkFairy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[18],"value":20}, - "evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":1,"def":0,"money":0,"exp":0,"point":0,"special":[2,3]} + "greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"experience":1,"point":0,"special":[1,5,7,8]}, + "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":[16,18],"value":10}, + "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"experience":0,"point":0,"special":[1,9]}, + "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"experience":0,"point":0,"special":1}, + "bigBat": {"name":"大蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "redBat": {"name":"红蝙蝠","hp":100,"atk":120,"def":0,"money":5,"experience":0,"point":0,"special":4}, + "vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeleton": {"name":"骷髅人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeletonCaptain": {"name":"骷髅队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "zombie": {"name":"兽人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "zombieKnight": {"name":"兽人武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "rock": {"name":"石头人","hp":100,"atk":120,"def":0,"money":4,"experience":0,"point":0,"special":3}, + "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"experience":0,"point":1,"special":2}, + "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"experience":0,"point":0,"special":15,"value":100,"range":2}, + "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"experience":0,"point":0,"special":15,"value":200,"zoneSquare":true}, + "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"experience":0,"point":0,"special":[5,23]}, + "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "redKnight": {"name":"红骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "darkKnight": {"name":"黑骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "blueKnight": {"name":"蓝骑士","hp":100,"atk":120,"def":0,"money":9,"experience":0,"point":0,"special":8}, + "goldSlime": {"name":"黄头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "poisonSkeleton": {"name":"紫骷髅","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "poisonBat": {"name":"紫蝙蝠","hp":100,"atk":120,"def":0,"money":14,"experience":0,"point":0,"special":13}, + "skeletonPriest": {"name":"骷髅法师","hp":100,"atk":100,"def":0,"money":0,"experience":0,"point":0,"special":18,"value":20}, + "skeletonKing": {"name":"骷髅王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "evilHero": {"name":"迷失勇者","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "goldHornSlime": {"name":"金角怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "silverSlime": {"name":"银头怪","hp":100,"atk":120,"def":0,"money":15,"experience":0,"point":0,"special":14}, + "whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "redSwordsman": {"name":"剑王","hp":100,"atk":120,"def":0,"money":7,"experience":0,"point":0,"special":6,"n":8}, + "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"experience":0,"point":0,"special":12}, + "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":18,"value":20}, + "evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":1,"def":0,"money":0,"experience":0,"point":0,"special":[2,3]}, + "frozenSkeleton": {"name":"冻死骨","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "silverSlimelord": {"name":"银怪王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "goldSlimelord": {"name":"金怪王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeletonWarrior": {"name":"骷髅士兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "ghostWarrior": {"name":"冥队长","hp":100,"atk":120,"def":0,"money":8,"experience":0,"point":0,"special":7}, + "whiteSlimeman": {"name":"水银战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "slimeman": {"name":"影子战士","hp":100,"atk":0,"def":0,"money":11,"experience":0,"point":0,"special":[10,21],"atkValue":2,"defValue":3}, + "yellowGT": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"experience":0,"point":0,"special":0}, + "blueGT": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "redGT": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "blackMS": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"experience":1000,"point":0,"special":0,"notBomb":true}, + "yellowMS": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenMS": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "magicMaster": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"experience":0,"point":0,"special":11,"value":0.3333333333333333,"add":true,"notBomb":true}, + "blueMS": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"experience":0,"point":0,"special":16}, + "redMS": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "devilWarrior": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "fairyEnemy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeletonKnight": {"name":"骷髅武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeletonPresbyter": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "ironRock": {"name":"铁面人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "grayRock": {"name":"灰色石头人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "blademaster": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "blueRock": {"name":"鬼邪石","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "skeletonLite": {"name":"骷髅精英","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "blueSkeleton": {"name":"蓝骷髅","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "bowman": {"name":"弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "liteBowman": {"name":"精锐弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "crismonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "mutantSlimeman": {"name":"变异战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenGT": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "ghostSoldier": {"name":"冥队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "goldBat": {"name":"金蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "pinkSoldier": {"name":"红战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "pinkGhostSoldier": {"name":"红队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenSoldier": {"name":"青战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenGhostSoldier": {"name":"青队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0} } \ No newline at end of file diff --git a/project/floors/sample3.js b/project/floors/sample3.js index e0c28451..a3b996b0 100644 --- a/project/floors/sample3.js +++ b/project/floors/sample3.js @@ -117,7 +117,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我的真名为——黑暗大法师,第四区域的头目。", + "\t[magicMaster]我的真名为——黑暗大法师,第四区域的头目。", { "type": "playSound", "name": "item.mp3" @@ -127,7 +127,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]以杰克的名义利用了你这么久,真是抱歉啊。", + "\t[magicMaster]以杰克的名义利用了你这么久,真是抱歉啊。", { "type": "playSound", "name": "item.mp3" @@ -137,7 +137,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]盗贼杰克这个人类从未存在过,他只是我用来接近你的一副皮囊而已。", + "\t[magicMaster]盗贼杰克这个人类从未存在过,他只是我用来接近你的一副皮囊而已。", { "type": "playSound", "name": "item.mp3" @@ -147,7 +147,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]为什么你看上去丝毫不生气?", + "\t[magicMaster]为什么你看上去丝毫不生气?", { "type": "playSound", "name": "item.mp3" @@ -167,7 +167,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]能够如此淡定的面对背叛,看来跟五年前相比,你确实成长了很多啊。", + "\t[magicMaster]能够如此淡定的面对背叛,看来跟五年前相比,你确实成长了很多啊。", { "type": "playSound", "name": "item.mp3" @@ -177,12 +177,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]五年前那场屠城你应该这一生都不会忘记吧。", + "\t[magicMaster]五年前那场屠城你应该这一生都不会忘记吧。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]很不巧,那场屠城的主谋,也是我。", + "\t[magicMaster]很不巧,那场屠城的主谋,也是我。", { "type": "playSound", "name": "item.mp3" @@ -197,7 +197,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]你的双亲?这种事情我怎么可能会记得?\n你难道在踩死蚂蚁的时候还会一只只记下他们的样子吗?", + "\t[magicMaster]你的双亲?这种事情我怎么可能会记得?\n你难道在踩死蚂蚁的时候还会一只只记下他们的样子吗?", { "type": "playSound", "name": "item.mp3" @@ -207,17 +207,17 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]你应该对我心怀感激才对,如果不是那时的我看出了你隐藏的稀有勇者体质,你绝对不可能活到今天。", + "\t[magicMaster]你应该对我心怀感激才对,如果不是那时的我看出了你隐藏的稀有勇者体质,你绝对不可能活到今天。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]在暗中动手脚让你通过勇者选拔的人也是我,我一直一直在暗中引导你走到今天这一步。", + "\t[magicMaster]在暗中动手脚让你通过勇者选拔的人也是我,我一直一直在暗中引导你走到今天这一步。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]是我救赎了一无是处的你。", + "\t[magicMaster]是我救赎了一无是处的你。", { "type": "playSound", "name": "item.mp3" @@ -232,12 +232,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我刚才不是说过了吗?因为我看出了你有稀有勇者体质啊。", + "\t[magicMaster]我刚才不是说过了吗?因为我看出了你有稀有勇者体质啊。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]你刚刚跟鬼帝交过手,应该已经很清楚这稀有勇者体质意味着什么了吧?", + "\t[magicMaster]你刚刚跟鬼帝交过手,应该已经很清楚这稀有勇者体质意味着什么了吧?", { "type": "playSound", "name": "item.mp3" @@ -247,7 +247,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]愚蠢!这意味着只要我对你加以引导跟培养,你就能成为这世间实力最强的存在!", + "\t[magicMaster]愚蠢!这意味着只要我对你加以引导跟培养,你就能成为这世间实力最强的存在!", { "type": "playSound", "name": "item.mp3" @@ -257,7 +257,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我利用你干的事情,你不是已经完成了吗?", + "\t[magicMaster]我利用你干的事情,你不是已经完成了吗?", { "type": "playSound", "name": "item.mp3" @@ -267,7 +267,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]不知不觉间,你已经在我的指引下跟鬼帝正面交手并且杀掉了他啊。", + "\t[magicMaster]不知不觉间,你已经在我的指引下跟鬼帝正面交手并且杀掉了他啊。", { "type": "playSound", "name": "item.mp3" @@ -277,12 +277,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]你们两个一个是人类勇者,一个是魔物勇者,迟早会有交手的一天。", + "\t[magicMaster]你们两个一个是人类勇者,一个是魔物勇者,迟早会有交手的一天。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我只不过是操纵了一系列的连锁事件让这一天提早了数十年到来而已。", + "\t[magicMaster]我只不过是操纵了一系列的连锁事件让这一天提早了数十年到来而已。", { "type": "playSound", "name": "item.mp3" @@ -292,22 +292,22 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]一个惧怕征战,爱好和平的懦夫,也配叫救世主?", + "\t[magicMaster]一个惧怕征战,爱好和平的懦夫,也配叫救世主?", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]获得了力量,却只会被动挨打而不主动向人类世界出击,龟缩在第二区域惶惶度日,他根本就不配拥有稀有勇者体质。", + "\t[magicMaster]获得了力量,却只会被动挨打而不主动向人类世界出击,龟缩在第二区域惶惶度日,他根本就不配拥有稀有勇者体质。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]为了不让这种人霸占着积累多年的庞大灵魂能量无作为,我设计让你杀掉了他。", + "\t[magicMaster]为了不让这种人霸占着积累多年的庞大灵魂能量无作为,我设计让你杀掉了他。", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]你没有辜负我的期待,成功战胜了那个废物,现在你体内累积的灵魂能量……也就是魔力,已经达到了能跟魔王匹敌的地步。", + "\t[magicMaster]你没有辜负我的期待,成功战胜了那个废物,现在你体内累积的灵魂能量……也就是魔力,已经达到了能跟魔王匹敌的地步。", { "type": "playSound", "name": "item.mp3" @@ -317,12 +317,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]不止如此,你现在的力量之强就算是统治世界也是绰绰有余!", + "\t[magicMaster]不止如此,你现在的力量之强就算是统治世界也是绰绰有余!", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]怎么样?要不要加入我的麾下,跟随我去征战人类世界?", + "\t[magicMaster]怎么样?要不要加入我的麾下,跟随我去征战人类世界?", { "type": "playSound", "name": "item.mp3" @@ -337,12 +337,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]……什么?!", + "\t[magicMaster]……什么?!", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]等一下!别冲动!你先等我把这利害关系理一理——", + "\t[magicMaster]等一下!别冲动!你先等我把这利害关系理一理——", { "type": "playSound", "name": "item.mp3" @@ -391,7 +391,7 @@ main.floors.sample3= "trigger": "action", "enable": false, "data": [ - "\t[blackMagician]听不进去人话的蠢货,就要用疼痛来管教!", + "\t[magicMaster]听不进去人话的蠢货,就要用疼痛来管教!", { "type": "changePos", "direction": "up" @@ -400,7 +400,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]出来吧!禁忌——紫电凶杀阵!", + "\t[magicMaster]出来吧!禁忌——紫电凶杀阵!", { "type": "show", "loc": [ @@ -427,7 +427,7 @@ main.floors.sample3= "type": "sleep", "time": 500 }, - "\t[blackMagician]感受绝望吧!冥顽不化的蠢货!", + "\t[magicMaster]感受绝望吧!冥顽不化的蠢货!", { "type": "animate", "name": "yongchang", @@ -482,12 +482,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我的魔力可是充足的很啊!我会一直折磨到你屈服于我为止!", + "\t[magicMaster]我的魔力可是充足的很啊!我会一直折磨到你屈服于我为止!", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]人类!好好感受吧!当初你们施加于我的痛苦!如今我要百倍奉还!", + "\t[magicMaster]人类!好好感受吧!当初你们施加于我的痛苦!如今我要百倍奉还!", { "type": "show", "loc": [ @@ -590,7 +590,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]可恶…多管闲事的妖精族…明明只要再让他承受一点疼痛来瓦解他的意志力,我的计划就成功了!", + "\t[magicMaster]可恶…多管闲事的妖精族…明明只要再让他承受一点疼痛来瓦解他的意志力,我的计划就成功了!", { "type": "playSound", "name": "item.mp3" @@ -600,7 +600,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]不甘心!我不甘心!妖精公主又如何!\n只要是阻挡我的,不管是谁我都要铲除!", + "\t[magicMaster]不甘心!我不甘心!妖精公主又如何!\n只要是阻挡我的,不管是谁我都要铲除!", { "type": "playSound", "name": "item.mp3" @@ -610,12 +610,12 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]呵呵呵……那个昏庸的魔王,掌握着那么庞大的魔物军队却只知道固守魔塔,而不主动侵略人类世界扩张领土!", + "\t[magicMaster]呵呵呵……那个昏庸的魔王,掌握着那么庞大的魔物军队却只知道固守魔塔,而不主动侵略人类世界扩张领土!", { "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]我实在是看不过眼,所以我才决定把这个具备稀有勇者体质的家伙培养成新一任魔王!\n来让这个世界的势力重新洗牌!", + "\t[magicMaster]我实在是看不过眼,所以我才决定把这个具备稀有勇者体质的家伙培养成新一任魔王!\n来让这个世界的势力重新洗牌!", { "type": "playSound", "name": "item.mp3" @@ -625,7 +625,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]恼人至极的妖精族!呵呵呵……我干脆一不做二不休,连你也一块收拾了吧!", + "\t[magicMaster]恼人至极的妖精族!呵呵呵……我干脆一不做二不休,连你也一块收拾了吧!", { "type": "playSound", "name": "item.mp3" @@ -635,7 +635,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]只会耍嘴皮子的恼人苍蝇!我倒要看看一块焦炭会不会说话!\n——招雷弹!!", + "\t[magicMaster]只会耍嘴皮子的恼人苍蝇!我倒要看看一块焦炭会不会说话!\n——招雷弹!!", { "type": "animate", "name": "yongchang", @@ -689,7 +689,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]哼!翅膀都被烧焦了还要嘴硬?你难不成真以为我不会对你动真格?", + "\t[magicMaster]哼!翅膀都被烧焦了还要嘴硬?你难不成真以为我不会对你动真格?", { "type": "playSound", "name": "item.mp3" @@ -719,7 +719,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]什么?!难不成你是想!!不可能……\n就为了一个渺小的人类,不可理喻!!", + "\t[magicMaster]什么?!难不成你是想!!不可能……\n就为了一个渺小的人类,不可理喻!!", { "type": "playSound", "name": "item.mp3" @@ -734,7 +734,7 @@ main.floors.sample3= "type": "playSound", "name": "item.mp3" }, - "\t[blackMagician]不!!不应该是这样的!我完美的计划竟然会被一只小小的妖精破坏!", + "\t[magicMaster]不!!不应该是这样的!我完美的计划竟然会被一只小小的妖精破坏!", { "type": "playSound", "name": "item.mp3" @@ -773,7 +773,7 @@ main.floors.sample3= "type": "sleep", "time": 200 }, - "\t[blackMagician]不可能!!!!!", + "\t[magicMaster]不可能!!!!!", { "type": "hide", "loc": [ @@ -919,7 +919,7 @@ main.floors.sample3= }, "afterBattle": { "6,4": [ - "\t[blackMagician]天真!你以为这样就能战胜我吗?", + "\t[magicMaster]天真!你以为这样就能战胜我吗?", { "type": "show", "loc": [ @@ -933,7 +933,7 @@ main.floors.sample3= } ], "7,5": [ - "\t[blackMagician]你打败的不过是我众多分身中的其中一个而已。", + "\t[magicMaster]你打败的不过是我众多分身中的其中一个而已。", { "type": "show", "loc": [ @@ -947,7 +947,7 @@ main.floors.sample3= } ], "5,4": [ - "\t[blackMagician]你的身体已经伤痕累累了,可我还留有着九成多的魔力。", + "\t[magicMaster]你的身体已经伤痕累累了,可我还留有着九成多的魔力。", { "type": "show", "loc": [ @@ -961,7 +961,7 @@ main.floors.sample3= } ], "5,5": [ - "\t[blackMagician]顽固的家伙!放弃抵抗吧!", + "\t[magicMaster]顽固的家伙!放弃抵抗吧!", { "type": "show", "loc": [ @@ -975,7 +975,7 @@ main.floors.sample3= } ], "7,4": [ - "\t[blackMagician]哈哈哈哈!我的灵魂远比你想象的强大!\n我即是永恒!", + "\t[magicMaster]哈哈哈哈!我的灵魂远比你想象的强大!\n我即是永恒!", { "type": "show", "loc": [ diff --git a/project/icons.js b/project/icons.js index bb14aa99..f821a482 100644 --- a/project/icons.js +++ b/project/icons.js @@ -93,7 +93,11 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "downPortal": 23, "leftPortal": 24, "rightPortal": 25, - "upPortal": 26 + "upPortal": 26, + "steelDoor2": 27, + "steelDoor3": 28, + "iceDoor": 29, + "iceDoor2": 30 }, "npcs": { "man": 0, @@ -108,22 +112,24 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "pinkShop": 9, "blueShop": 10, "princess": 11, - "wlt": 12, - "wt": 13, - "wrt": 14, - "wl": 15, - "wc": 16, - "wr": 17, - "wlb": 18, - "wrb": 19, - "dlt": 20, - "dt": 21, - "drt": 22, - "dl": 23, - "dc": 24, - "dr": 25, - "dlb": 26, - "drb": 27 + "man2": 28, + "woman2": 29, + "octopusLeftTop": 12, + "octopusTop": 13, + "octopusRightTop": 14, + "octopusLeft": 15, + "octopusCenter": 16, + "octopusRight": 17, + "octopusLeftBottom": 18, + "octopusRightBottom": 19, + "dragonLeftTop": 20, + "dragonTop": 21, + "dragonRightTop": 22, + "dragonLeft": 23, + "dragonCenter": 24, + "dragonRight": 25, + "dragonLeftBottom": 26, + "dragonRightBottom": 27 }, "npc48": { "npc0": 0, @@ -141,57 +147,77 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "redBat": 6, "vampire": 7, "skeleton": 8, - "skeletonSoilder": 9, "skeletonCaptain": 10, - "ghostSkeleton": 11, "zombie": 12, "zombieKnight": 13, "rock": 14, - "slimeMan": 15, "bluePriest": 16, "redPriest": 17, "brownWizard": 18, "redWizard": 19, - "yellowGuard": 20, - "blueGuard": 21, - "redGuard": 22, "swordsman": 23, "soldier": 24, "yellowKnight": 25, "redKnight": 26, "darkKnight": 27, - "blackKing": 28, - "yellowKing": 29, - "greenKing": 30, "blueKnight": 31, "goldSlime": 32, "poisonSkeleton": 33, "poisonBat": 34, - "steelRock": 35, "skeletonPriest": 36, "skeletonKing": 37, - "skeletonWizard": 38, - "redSkeletonCaption": 39, - "badHero": 40, - "demon": 41, "demonPriest": 42, "goldHornSlime": 43, - "redKing": 44, - "whiteKing": 45, - "blackMagician": 46, "silverSlime": 47, - "swordEmperor": 48, "whiteHornSlime": 49, - "badPrincess": 50, - "badFairy": 51, - "grayPriest": 52, "redSwordsman": 53, - "whiteGhost": 54, "poisonZombie": 55, - "magicDragon": 56, "octopus": 57, - "darkFairy": 58, - "greenKnight": 59 + "greenKnight": 59, + "skeletonWarrior": 9, + "frozenSkeleton": 69, + "silverSlimelord": 60, + "goldSlimelord": 61, + "whiteSlimeman": 54, + "slimeman": 15, + "yellowGT": 20, + "blueGT": 21, + "redGT": 22, + "blackMS": 28, + "yellowMS": 29, + "greenMS": 30, + "magicMaster": 46, + "blueMS": 45, + "redMS": 44, + "devilWarrior": 41, + "fairyEnemy": 58, + "dragon": 56, + "skeletonKnight": 39, + "skeletonPresbyter": 38, + "ironRock": 35, + "grayRock": 62, + "yellowPriest": 52, + "evilPrincess": 50, + "blademaster": 48, + "evilFairy": 51, + "blueRock": 63, + "skeletonLite": 64, + "blueSkeleton": 65, + "bowman": 66, + "liteBowman": 67, + "crismonZombie": 68, + "watcherSlime": 70, + "mutantSlimeman": 71, + "goldBat": 72, + "devilKnight": 73, + "grayPriest": 74, + "greenGT": 75, + "pinkGhostSoldier": 77, + "greenSoldier": 78, + "greenGhostSoldier": 79, + "pinkSoldier": 76, + "ghostSoldier": 11, + "evilHero": 40 }, "enemy48": { "angel": 0, diff --git a/project/maps.js b/project/maps.js index b21de5b9..c09ef345 100644 --- a/project/maps.js +++ b/project/maps.js @@ -86,6 +86,10 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "102": {"cls":"animates","id":"crystalBottom"}, "103": {"cls":"animates","id":"fire"}, "104": {"cls":"animates","id":"switch"}, + "105": {"cls":"animates","id":"steelDoor2","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, + "106": {"cls":"animates","id":"steelDoor3","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, + "107": {"cls":"animates","id":"iceDoor","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, + "108": {"cls":"animates","id":"iceDoor2","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, "121": {"cls":"npcs","id":"man"}, "122": {"cls":"npcs","id":"woman"}, "123": {"cls":"npcs","id":"thief"}, @@ -115,22 +119,24 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "168": {"cls":"terrains","id":"flower","canPass":true}, "169": {"cls":"terrains","id":"box","trigger":"pushBox"}, "170": {"cls":"terrains","id":"boxed","trigger":"pushBox"}, - "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"}, + "181": {"cls":"npcs","id":"octopusLeftTop"}, + "182": {"cls":"npcs","id":"octopusTop"}, + "183": {"cls":"npcs","id":"octopusRightTop"}, + "184": {"cls":"npcs","id":"octopusLeft"}, + "185": {"cls":"npcs","id":"octopusCenter"}, + "186": {"cls":"npcs","id":"octopusRight"}, + "187": {"cls":"npcs","id":"octopusLeftBottom"}, + "188": {"cls":"npcs","id":"octopusRightBottom"}, + "189": {"cls":"npcs","id":"dragonLeftTop"}, + "190": {"cls":"npcs","id":"dragonTop"}, + "191": {"cls":"npcs","id":"dragonRightTop"}, + "192": {"cls":"npcs","id":"dragonLeft"}, + "193": {"cls":"npcs","id":"dragonCenter"}, + "194": {"cls":"npcs","id":"dragonRight"}, + "195": {"cls":"npcs","id":"dragonLeftBottom"}, + "196": {"cls":"npcs","id":"dragonRightBottom"}, + "197": {"cls":"npcs","id":"man2"}, + "198": {"cls":"npcs","id":"woman2"}, "201": {"cls":"enemys","id":"greenSlime"}, "202": {"cls":"enemys","id":"redSlime"}, "203": {"cls":"enemys","id":"blackSlime"}, @@ -140,61 +146,81 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "207": {"cls":"enemys","id":"redBat"}, "208": {"cls":"enemys","id":"vampire"}, "209": {"cls":"enemys","id":"skeleton"}, - "210": {"cls":"enemys","id":"skeletonSoilder"}, + "210": {"cls":"enemys","id":"skeletonWarrior"}, "211": {"cls":"enemys","id":"skeletonCaptain"}, - "212": {"cls":"enemys","id":"ghostSkeleton"}, + "212": {"cls":"enemys","id":"ghostSoldier"}, "213": {"cls":"enemys","id":"zombie"}, "214": {"cls":"enemys","id":"zombieKnight"}, "215": {"cls":"enemys","id":"rock"}, - "216": {"cls":"enemys","id":"slimeMan"}, + "216": {"cls":"enemys","id":"slimeman"}, "217": {"cls":"enemys","id":"bluePriest"}, "218": {"cls":"enemys","id":"redPriest"}, "219": {"cls":"enemys","id":"brownWizard"}, "220": {"cls":"enemys","id":"redWizard"}, - "221": {"cls":"enemys","id":"yellowGuard"}, - "222": {"cls":"enemys","id":"blueGuard"}, - "223": {"cls":"enemys","id":"redGuard"}, + "221": {"cls":"enemys","id":"yellowGT"}, + "222": {"cls":"enemys","id":"blueGT"}, + "223": {"cls":"enemys","id":"redGT"}, "224": {"cls":"enemys","id":"swordsman"}, "225": {"cls":"enemys","id":"soldier"}, "226": {"cls":"enemys","id":"yellowKnight"}, "227": {"cls":"enemys","id":"redKnight"}, "228": {"cls":"enemys","id":"darkKnight"}, - "229": {"cls":"enemys","id":"blackKing"}, - "230": {"cls":"enemys","id":"yellowKing"}, - "231": {"cls":"enemys","id":"greenKing"}, + "229": {"cls":"enemys","id":"blackMS"}, + "230": {"cls":"enemys","id":"yellowMS"}, + "231": {"cls":"enemys","id":"greenMS"}, "232": {"cls":"enemys","id":"blueKnight"}, "233": {"cls":"enemys","id":"goldSlime"}, "234": {"cls":"enemys","id":"poisonSkeleton"}, "235": {"cls":"enemys","id":"poisonBat"}, - "236": {"cls":"enemys","id":"steelRock"}, + "236": {"cls":"enemys","id":"ironRock"}, "237": {"cls":"enemys","id":"skeletonPriest"}, "238": {"cls":"enemys","id":"skeletonKing"}, - "239": {"cls":"enemys","id":"skeletonWizard"}, - "240": {"cls":"enemys","id":"redSkeletonCaption"}, - "241": {"cls":"enemys","id":"badHero"}, - "242": {"cls":"enemys","id":"demon"}, + "239": {"cls":"enemys","id":"skeletonPresbyter"}, + "240": {"cls":"enemys","id":"skeletonKnight"}, + "241": {"cls":"enemys","id":"evilHero"}, + "242": {"cls":"enemys","id":"devilWarrior"}, "243": {"cls":"enemys","id":"demonPriest"}, "244": {"cls":"enemys","id":"goldHornSlime"}, - "245": {"cls":"enemys","id":"redKing"}, - "246": {"cls":"enemys","id":"whiteKing"}, - "247": {"cls":"enemys","id":"blackMagician"}, + "245": {"cls":"enemys","id":"redMS"}, + "246": {"cls":"enemys","id":"blueMS"}, + "247": {"cls":"enemys","id":"magicMaster"}, "248": {"cls":"enemys","id":"silverSlime"}, - "249": {"cls":"enemys","id":"swordEmperor"}, + "249": {"cls":"enemys","id":"blademaster"}, "250": {"cls":"enemys","id":"whiteHornSlime"}, - "251": {"cls":"enemys","id":"badPrincess"}, - "252": {"cls":"enemys","id":"badFairy"}, - "253": {"cls":"enemys","id":"grayPriest"}, + "251": {"cls":"enemys","id":"evilPrincess"}, + "252": {"cls":"enemys","id":"evilFairy"}, + "253": {"cls":"enemys","id":"yellowPriest"}, "254": {"cls":"enemys","id":"redSwordsman"}, - "255": {"cls":"enemys","id":"whiteGhost"}, + "255": {"cls":"enemys","id":"whiteSlimeman"}, "256": {"cls":"enemys","id":"poisonZombie"}, - "257": {"cls":"enemys","id":"magicDragon"}, + "257": {"cls":"enemys","id":"dragon"}, "258": {"cls":"enemys","id":"octopus"}, - "259": {"cls":"enemys","id":"darkFairy"}, + "259": {"cls":"enemys","id":"fairyEnemy"}, "260": {"cls":"enemys","id":"greenKnight"}, "261": {"cls":"enemy48","id":"angel"}, "262": {"cls":"enemy48","id":"elemental"}, "263": {"cls":"enemy48","id":"steelGuard"}, "264": {"cls":"enemy48","id":"evilBat"}, + "265": {"cls":"enemys","id":"silverSlimelord"}, + "266": {"cls":"enemys","id":"goldSlimelord"}, + "267": {"cls":"enemys","id":"grayRock"}, + "268": {"cls":"enemys","id":"blueRock"}, + "269": {"cls":"enemys","id":"skeletonLite"}, + "270": {"cls":"enemys","id":"blueSkeleton"}, + "271": {"cls":"enemys","id":"bowman"}, + "272": {"cls":"enemys","id":"liteBowman"}, + "273": {"cls":"enemys","id":"crismonZombie"}, + "274": {"cls":"enemys","id":"frozenSkeleton"}, + "275": {"cls":"enemys","id":"watcherSlime"}, + "276": {"cls":"enemys","id":"mutantSlimeman"}, + "277": {"cls":"enemys","id":"goldBat"}, + "278": {"cls":"enemys","id":"devilKnight"}, + "279": {"cls":"enemys","id":"grayPriest"}, + "280": {"cls":"enemys","id":"greenGT"}, + "281": {"cls":"enemys","id":"pinkSoldier"}, + "282": {"cls":"enemys","id":"pinkGhostSoldier"}, + "283": {"cls":"enemys","id":"greenSoldier"}, + "284": {"cls":"enemys","id":"greenGhostSoldier"}, "300": {"cls":"terrains","id":"ground"}, "301": {"cls":"terrains","id":"grass"}, "302": {"cls":"terrains","id":"grass2"}, diff --git a/project/materials/animates.png b/project/materials/animates.png index 3a901cb8372c2ba6bef791d50b38033d47440a09..774a7990301db6b08a75304b7581550a5cc141ab 100644 GIT binary patch literal 35354 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 m0OZ{_N&bBJ<>TRk@u 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 diff --git a/project/materials/enemys.png b/project/materials/enemys.png index 2c29805b21a0acbd905cf8ba793542b28085038f..673612bb102b73227d86c285be8f97cd52903d54 100644 GIT binary patch literal 73550 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 literal 40888 zcmc$_c|4Tu|295j8Dtqt8e4``x(P|LWEhQbx1oqEBNQ@aO)+B`DZ5aK>{5|!C~J(7 zC9*X3LAGpTUuQ9f@l5yqdA{H0dH#4_&mX_n>-UH2IL}fPR-xbWu0@IY@k`}DT&@1HbiZUAcSwx)t45ug3_tI)TTgryxH#Gi zxp)(mzsm4L3kdTLyt~x*`JOK(zBYSu)CIP#LEa6b|8k(d_`aY?-d6vvK}OT{^M8Kw zTSA%XZMKO0bFkYSClZ)_F0X@he)H__MP^U-Z1-->eOs7%OK;$!C>#H%gxBjnNU#P! zn{XGxiR4jbgi$B6rC$Xm6Fd@I1(e^fDXqIswB#dnJXLdF8C>AvxgAiFh(;qk3|### zjPXE&dQNqv2nQ1RVzQ6EWB6$^44toc_CNVv7sS++W4gKq!f^Ef^tM3LieRkXzR7+a zq*0zMe{5YRY_AtsxJB`=ogv)PDJ7uPlVS=r*p4THRcu# zbQ@P-i@?y%ZJ8u`M$V4pK}29w{QHS)`AX@f%>7l-XN--q_Wn@Uh+k&kKsQ21gPNM` zA|qNd-q0m4E@^AG$LID62FA$yNG#Nlq;OfeK=su4F=6B7`#FjUvOkzN1)@=50j;NM zW!B0cyGxWf>d%Jj=FLVcW(7?DZ-*LA{r!#b6xqDlPCg+f zuo(nr;cR)P)%&$W>(2u(yq0&os21uPg^!FJ=*P4ZboB_pMS|g9c^0fL;jYGS?|Gti zU}lpR?0Ypb8owDsrp!P(XSrB`AgosL76rPwjszT*a8?Pui!Itys|9EQQ*m<%LOpeW z&}sD!D3!qAb>@oJ@ylW@G~ z{%7{I{5IcC9u8sXZ0?`c#*7PX9=am8Znhc6xaGAlq1Sp7BDW*weV5lv+H4rjH@p8A zQXLWgtT48~^kGGoF^w8-9T{Q$^GtYiyu^nTj@6*{7<$Ic?_Y}I(yqH~!p?r1U-)wsm?lv(a+B4SVt^?*OLX>V6I`xd`Mv@|1)K}D3 zH&^7`T(y_SyOh7lICi3-FYCut-7>{bYAmwS$|RaFl^|V-N6?KQqEf>RMb&u=i88k%0It5DQ9>7vnK6B z81y~O4fsSE{CF4eDA!JT&(*RObHrREZdFkYB8M@m)XJ_ zgb5DjDjPG#8=W*1f?<2!d%+aEj4$-GS-J!0%J<*GlNC-Skq58r^b#>xlO^F0X#7oj4@$4B-!^lni-k2=q) zO)u(Oo%VZmaKw-2;|mRh-au%#jPsJQRdL&du-)DVH5mq1Q`W&ezxP(;>q7ekJg{oV z&t?h&5OQcdvVHYv(C&!I%*d7D8Dj2!j@5&fl>--l;C03t^~jflW*+TnwaFr6<8OZL z4!uT^1Kb{Wlb_#d0!p{=&h5B&OXAA77%QB_ z)-Q`_8K?GD;}8DNkW*al~VBeI; zi=n7e-`Jd3C`UHLK))eNI_pntWv&PHrgE!?iFo!jkg6f>_p*C!>zgp=4_3aUJeTuv z`#G1D=dDKS82o4tYZm)1t zDooV>+(GP`LHWC>0ZNK5jBe`%18;ltWPFIY&K zppR&)+|kaXCL+@c9WCTjW-hAb!)$f5IH>wO>a-Ub{eIPItsW~5*pS?t6niyQ_jR<6 zW7t={$Sk{k>ezCf`;z7jgpg?LXArU0^?h9ddO^WN;A>TzJ)%|>eeFz#l<(2XB+rcr z`xMksJG5_BnyFV`jiIM^UtD8_J1Tg#T{%LiOV?ay@YZmjqFM=tRSWJ5tWx?!-K#nIn$Mu%$W~a0=o&(UdKUKTe+>F)r;+YdSrvqZN(^ z))PsCa(44MDKaYzX4cm-O!E;JVj!#%56o%%1ZGP9>C)DOg-+gtJoXxP&hT4uTAz1b z%l-M!V{%o4lk@@h7oxw*c5e0poCnEFkHiU?!2b-wDXvk91X}Pp*Pf+A+f4|%;?kO- zbG~q$ib-&GGH71DGqmA9=SbBS=daV6y_lvjzGYP`x;hv$qR^*ND79q6)JIuqIuBWT zhS}SQQ=Ks$4g~90%f|-ISE~n#8RyNlPwN676@}~6yINL@FBCI=K5u^aYIwT*gR9#4 z`<_a=(Iv9h#PZwg9y4(zyZ^HV+qM2#er0(ABHa0(O@7BBl64w+8az|{{VnU}M0Uu| zw^)f^&Dwc>k0YA*&t<9em{h)?=?LBL$uW5TR{FB?sY-kC6M>XQ8CYlYEm;XX#L-yP;f4@_ym9Q+o6TY1P z2Ucn$@$`U+t+X8_a_QLR$fQ0xiEMOVk!NXaN|7`YUdhUyET?ZG=L0 zN5GdXalh*@-hOcPf@OHze0w>b)uJ>xBH^*VG8Y6GE-LYLGRQ0ZftQtLSgTJv(IX1g zZ>X3|_@Q?JdA8sDW)(CQ$e)}tU0|UL$zO9}{Px{2pGsCuCe(wBde$@LIpD zH+t}gpWpo+XB82T>U9}Nvv<6Id0SVm_@LmEbo@f4ydU3~OUo$&NOT}<&pbPn)i?YL z6WlHnf%-f#P1L>ng459G-uudQ^l4ILmy_No;R3c@xPgGinlLAWxTqJ-NVqAHE1lbA zKxoYVC-B>Sa}DRfczJ@{w+3sqh!xM8p<4(24XUrXTbES4nPp30#x?KE`tOr!jgujz z5X9r7=VC;~M-)z;ZCTi`3LO^sEj4k)p4eeP(h=upsJqj?-Bu71ZyVED0;j7kpe`lG3+zV|7d_Yt>dR=U7pu*v%8FClO6;)~ z+=Rlq{AFu>aK53e?m55Cm(-bo1w&_N=2O4}nuJXD#Eyu_~Vg}hT?T$?%EKi4r(y0FP?V(hT3}juk z+KOk{$5-G&^!g7*jKTqw!S6lMeDD%Dbk3O5{x{)!X{g!VEA`cD7Mf0VjcRj{V??Jt$m)R#QGZ3c9k)oCMg{9Yt8j8}rTuPJmO2mW(%qpn15ve{Jzkno z!oa-E@Oewkz)3sna*s?*1(>OI%0@GR{RI_AnmvKI?cGX$@uDG}BUPG~Q-bGoU@6;p z`}QYE%V--Z-^MsNX_Nc_udnkG3RHjDIyVCVML zw)WxY)kCYTdHWEr9Ou^$OMk^)?v%XuWP5%33sE2QNn)`sZ|jIcutCl32=co<-x`xY zCtFIK#+qhJ-u^E@QzSG*TWoe11_~%3a9z@By4voul(&CQcGYpBfwyocnNx2xbZ3)O z=gB&MdwXrC8dhEg?^KXL>kp_1MaXh&>$Ny^Db}YSm;y9FxohP_Yk=B zVpbe6>4w#TJk+Q^fAPvG`4$>zmIM;6NT`yI+lrxY&2B7ONKmb7L5G~{u)b0JE14Aj zmAqi!97gAy^94?WM7rI6a?!LPZ_8t#ujpeX)%ltp4XL?}=v9H~5fdNvw&xvr5U?&T!lIgAd2jxL+>|_NM<<3T?$qH1ju}xw&bfItq~x%ni_NZg+VdOOsSs|IKaM z6ZThQPp(acT8_O})P#UFLwRD`bNwOSifnMFaUh%@RRk(=x1yRxIadZ_GJn-|=cW6{LBnJazYySmgAeP|}WM zOv!dwqeP6DK>^?Vz2Hs{AnxP9r654B$U}Z}$S>&{=Qomcn>9{Jp5uTxk<~)O7-)>%npVavP4uZ8|LZTQX+cAIqlzZp{#B0Eu$JIH&P@ zw~H6Wc&xhReO zofiC_w0qpD@L3n(E*oXYJ*}McRT>NNt4hW!i_g$&PEUuTs*E`1^`A|t!~Q@{o+SMH zTC>+?LZ9?0Qn!L}5-w98ehDXHh>U#5Sv&kQ{MMs~^lqP_>pA{5Duyqey+oB1+{Edj ze!pg%bP&5s_f*{1H$v(G7@W`SsB4-CARD!~uU@Qo#Hr$XH&g7f123wpPl0x`wz?~ElGZ4j;40+~ z66-m9%)foot*4(fi(m;JR$7GQ81sCbvI_8s)0}@NG{H_M9$wP}!wn)ukNFQfqI^2} zQ*)mQsTsSocwNsvcrj_;_$a{V5%8%H{O5N5{&PW=kJVfPXV6sX7cb$NS( z7Iyc?k8CNbcGYg|D#!T-ERCiip5lJ#?b*0jNJ;zq;b&cLXO;@)P-rO*YqlDDlPbiGuYMz3ZXKo@{4rgq< zYLIJ6aeBtJopL_8T5z=|;X7F@Q zp$^xx%p_ZEMxJ#YPqM37N`}Ubbxtj$^kaUd5)E|9@7VPa$_@4Z26zgQP?z%$$F|im z>2VtC{}SxkjqJzHX)bh$DNoiedDiB!ykT$rnNH5A0Tbr^u|da4Czn4s&zk_mJe0k| zxweGkw_zT(ANpny~UDan}c(WvxH@J5FAyUnXCFG;(?+mn_>{6M^|gvQA0UYLa~o=w>KDR5spW(v9OI}pR~L-n{hnCUF28T^?AT{wN+N-)_05@6^DNknaFYc2 zx|Y}Xp_f{Y=}k5ej(X&PPjL#_Ibc&G8|_f{qgB*%$;5^&y5tbDQ6M6bH$JAW=B7`C z&)3>h*Lqz70fDg#9cnl7_p9r%Akc?Y{=@@89)R)G~_ z^K-6zi-Swh#Nyd}!kv%PR%`Pd)2lC3;W?m8UPAf-X)nS^TuIf!)2`(;eki8=P0ez< z4P|(gyWnIK*&xhL4f{T1_)bZUk#fgtrwmd06?iAuQLyon1?D?cO~fI=ilrg^;vutq zL{NRTMDnTO9!FFpMR4!kv5JvN17Lt#sL#U)X;TTGC?6z(>eK>2eHY*z%-cbRQm38^ zLCVe}AOi9oXTWmkYZc>rc!G%Pw;aY5bMIBn1NV`Aj$6M!!U|7zfWtXkAAc7K6$;+n z;0UKiEdLjulNBU#CG*Ct0xAxynHX|L`tHllA4AA#fYf#Jj*+wo>DJ7bj zk)+G>59(z&?KO=)jP#!%#|dKPv=#l2PU;BWu1)U5kfM0?f=Fb(e)o zW8c}QE=DA)8*$zpFUxjpEI9I2Yxrz<$0ZU!(>mbhC8)94TOC;2C_N8Y|K_XxGK%4| zu(W~vJ}d+ORkqpJ*lMQhYY2m}fnqrY@}KZeuT9)f3;1cm?EZZ$C>(i| z`Gu9C(o}7Jqaa53+k2CxcMl_+QJirehsBi56#aY8Bg!X6T#Lp3QWbMb+l~+rp5rgR z&yUiKnd~Qsm*B%n;;JGl>&tH4oHL25l8g~F2%8X4&?N6Ee60LZ7)=|IK?}usR2=z| z@aO9Hi0dgEL3s0Fj{)10E0>^8Wr9luqb?lggoV-@d0x7hL8S&qj^ywLe2EHMw^BvF zNG%8!%Z5+5NLs}Y-M+cPc;ylgT0mmqH&r)wj?4pp=JbtqB)TuOK0$D>ES_4Ow!Pl0 zNvhAA3rUO)eVx%}^pIusb1 zA}Ol_uw7XGYhiM~jYJ=?Ki{0k18-AvM6Ru42JLC0!buwwzzY2f&zQ?Z$Q3(B&m9lq z)nkq^g@deOwpQ5A(&yC258n^fH`X(8wd%r91xC8tSqxDMm#mo1o>Qo1&*|TJoISC~ zcHG5Ew$>uKF|Bn;FQS^hR6COGgnvuT0@kzP)%=maesS*Ahsp(Hqszd39CB#7&;ZeQ zH80>UAnM4jll42Y+VpxzU?%<&9h@#Tk`WfYE-6R9xXKQg2WWfIGs&N1y702#x)Z+Y z7{%HS`?0=G{RfbOrHmNsYylgG4Ejrcc3%?YGd)cfe}1&HGk$<0hKvx7Ed5<68#%FD z8KVYI;y3b$Aen1P$&I=SI~FYpUItqVR+jSRl^8My`Mq;_)pBZXR@(6ZDAXY1z~Jb) zpmpwo^P^I}`b}Or@Ta!cm)ts>jn!NzA`i|9Zk(dvv=$31kPXdd7N{3A8 z>ddQQ_cl1VTF~4kJl^K)umsqu>F#B-DsC-%RC`JC{@T+tw&c#^p8Kk@{WtVCBQcpk zqm;iG2$8FB!{W^i;(7#HU+gG@6e^&+?FCu@AEE=_;slfXQBwCdU>YBpxMoe`cpn`~ zlbBNt<5FLgoDH(_11SX4vJwU~hn*9*t-398B27N5>PUR@OH2%{s1op=GZBHEBkkd7 z6`^JoTG)k3w@7m}R;l%UQM&C?-dzLX?l_8Ip{;sfoyGm=qy|GPW#ipW?)}lc0?yCu zWGqzA1G~~`GXB3JRB@7>zx@ZG`=Gc2|B1qp_s-H1n1tlj5F?k{%=IGrzS(k=u)70&!XLnD7p}|3>eT0~+Yr@cDu;S3c-b zERu3DBrLIJGe0Gth$Y=Sc!33NBsj}r|3NTu;zW>js7a~=V1lysqtEt{+LZcIg|!;0 z9K)B}|56}EUGFTG20K5)#}I4hz8jkSTkUHDZu9ZGK|BE31SZ~#!tmU2NE&t3&wXpw zV~dA{TA+3{208IsZRz(TKvSJ^{80iq_V-ks-)TmE0PmhSH^avcQHW&%2 zHzRRJA3o*VO*4jDUMG40v?4_nak7g(0YkItn_LH6^N3R)^HEdpWzDa2m z4gn^45HyVZWU)??SldCm9KB zt7|RWfS>~rG(_%eb%E~EB|7<1hxJ`Y2GNmxT;0O+9Dv6F*2uN@Db_oj2$+l1@~a`7 znv6(>^r*rupCXJ4bEO&yPIEvbq3};oq`)F*@6$F!F7e4UQNTG6D6JpXjSX+^1xQ$P z&R+2r1&>HBQPWn`x>sWJ+x9qijxSCf!{}Yy6+HBEqq58&u)2NXZp18y`(H%TFhyc~cJ2lcWo@r9ky3et7LK_T4vOC-8O_4>Q z@ukpNv6@4CE(6lo8gl8gN9zoZi1ztFz~%(Pl&*{c_O%#b;(Sx!Pg5xZz72&s;Ys=! zqREof1NC-B;rywd=Da?dOx%EuX}f`~9jIn2FG@BI#X@3635uiAaLVWxL;)m}RCF#H zqe5k;YEiDnyCAC)iN*1P3U;|Er%+sBpIy{`z-5rq5F=kFnfzTcV&!~~Ww3@$6CS~q zD_G=^-q2HNUgjk9L?&PanoL?{+Y9 zi-k_0_Y2r_&rtgQ)uf^@!*8~-25Y~-yo&a9bREi7YpYjXS5~TS%TB9z33)tfuDYL~b z(pf(CU9h)yd##u4UOz!3A9gq$>-Mr}N%^7ridT;PkS{D@&K~DB`y_kA~XdzC%2oVn>Av`|i8_PjI3l8v=rugS9^R;{u9JxkLONzxj zAK+6RTlR5qvQ&7`>vPBopNK*G3nm*5!ZW8TQB=I1P0@D!&0$-|K^6F`erdh+CRlhe zx%N;V+7~v7#P@GI1h{z0rE~|c!W2qm(XbZf$qu`P`z04!VdW2OTNggGxu6QrQTMWy z-UL?=%MtB}GmWFdCZKkht+oD$0md;#?-`gK{DaxkA*s*xJw}8+Hi*#ctNX@N5T}PD zCx_>(?!wlULivWSuIaQW;H5u*8kKA*gHmK`o8x)P<&Hjk@LS#aK6k4P}c3J(4gSHc?O4`wSjs`r`pjTgX) z`zCrTxQMO<{oTlI+a^06;YB8``hduPRHCXVCo9}4>$<8(N<#W9r!e{UTV4E+W>lcw zigdkdKc=EIsMWshtMhQfbnN<7=x<^}zo^F}be#V^RoYT!%#SNsP6X{Bt8BV6t#o%g zOG1EI&EGRwbNQA2}P>#ks*|+Il|Xmz|q#!Szmkgz*)!{Lf8^ViwwfX$5+RZdTL(Z$zYEwCMIxtZV~zo&_`b9=#*$5TZPW?5|vx-Fd#hh3b(Wx!~~H#tV?@$KZ&Xl4G$k>*R&O z!1^ZvQ<^^&f|EugFSol`R7sbL=ZXecjrG;Fxi; zvGQv$zy$1|j<~S^+#pV@&l$+T>&bus9AolfgbHUAUE)qrwdwdh4O4gG?_jKQ#PE{J zjTwz+UFtPD)3BFx^k$c^n-Cbxgu?X9$Vu|DtDzd$FK)JPW3BD6+ps<90d1+f@s!9h zPxfX5x`>fn&9}Jkl8?kg{Q&1+6A7}VNC?(VE1Rn&oHKzF-xkM^3VyvB49;>FIM{CKAw#s*dA0LTk$^j zAZlQhW{vpRmLPzQXw+{b!S`<;$d9#TTh*WSr=81bYi{_4I*WHZhbVP%P=DZTe%cY9FrvJ!{PIb5S?EzYi0UB@)a#B%g3;#Ixqsv&-fR2IQ=X z%CGXm+GiWZ8>J0QPj{^GX!$je00CA(;Dbn^sfpbro`zonjE!{|fEBW%*IdUQb`(ai zY+mIhfjv_)cVe~bgFt)_k7A`jHO^5b6UQ|55$!VJ=?W7Hfj9_Jz-NAAqwJu!dHa#9 z7XEBBeJ(Dw)Ric!-&eaXKy@MDaz= z6Uf_9R~olPCc5o;$Ph^FGt02iTys4MLn_4!Ze96^Z~q5kbqcBtkZ2w2_U zXm~NyY0hBEtaXl#7}1{22bre2tSCp!%IC-@1a0W?ppvpB%E7hj_Kkv{M^1g;?E!#x z?Zt>n-;s|dyEO{n7ehLQfn8&XQVCG0I~@M+mKk3=Fjvh2r|Xy;IgS7$Q;Ifh_Ju&s zUYeTz+NEnRn!6!#0eR_+Ge5IF`K@!u>Gg`h*8IE~iMwSZLQ4^?qA{AFJLXUG|Tb z0RxdMu5o+4T`V+m&H#)Jly&X|3_v9Tf{&C!-TZenSmXTO7VL(-bYD8$jGg6JGm*ij zUWgNKxIg{)r+M*1Xx;fQaA9ibB9uH3L`7djcnVyf=f>})PJp*(| z0PFdCwgHq~Q+5sTS|73JAraEP6S9sh)-{6<*3_`o>ye@BR|;Hf>YlKMncpTKM)9q) zIJVllNrAjuy=YzrN*b>h$^05BrW5V~P~;&pW%@OaYc=Dy&7QY*XgOki<*T7Abs}et z4%6Z^x%pje(2j?Ss{>8vqZ@lB^n;KtO%GowzWB7@#jOOrbwVi=HlD5b&#fO5DuG5u z`*&uI5)kN?GNoP&@C=4rW7@T!yX9n+M;9rMa=Lf?C1jB=UA|DwaCrLzlA=wy-Sjb` zgwuRx`udi99si)#Zx2wpZrOsS`?EdWJ<&T}SbLsN?1H$~mW+P*g5TX6VmI1)nNFY1 z`tRn*`|~pTr@q=r-e@a358(L;H6Y$U>RT6PpquE(p+N3ZUu7GiwoHV}t5iV+LSTe1 z1kKv&CTKiQz-7wUf(7Kl6gYPjFS3Oo35G^ElT5ySke)EPCnEr;bOS{2j&yq;jHJ7D zVWC}>k!p2Mu%9if?YNvDX`8U9p#EEAeq36OE)VR%t&=HjL zmX4vRW7=!$TOulhJT^%cZ6^_AYv@gY9%9XXw2J9u%HG{e1(tmq(g; z1GHCo@U=koPP{&Xc0`Nm=BJutvQ#Ai54ITxc&%?w$bRy340fExyh52n-dx%F9e7cz z>%B3|`y5u{jmF*v1x{b;UG6P#-AF47L4+`Q1G@s}0B-e}vy0stvq8fI`GZ*nEp5N} zS7~}!dc<7ZL<&GXpNx55l@^v(hHMHIpiN)J{h$QN!Uc*%?e<`kc_gb8;m0nsPB~zW zW7O0?R!q13)-mb6wj_en!+RCkY?{p8xtzEA#8=6fF;`H}K32jrvNx##IC~026 zb{9sFtsFEZd6o=Jt4RX-?ja$G!4sVa53wzQ*keyp_)Y5v zpz8TXa!pp5{XAGJhhfhqivxE@6BOuV#AYw>PA9NPkO@jakhE8`C8}`l-_B)3m4oHx zbr&=zer-Ju8D2*N-;uQOA1RPx{S{{Qx-$w9ph`kzF1MCVQaJ3*x+=4_(J;Gfxlmd) zB(eMRLKI%N^|RS9t^u&CJl<7!o!OzV;z;;GIRzB2lcS_vMcXTDtVF5-GGi7jb$T&Y zWLf87f&<{1^AVa9ZLcPMrXd^Ej}%~DQv-Z8p36o#uy3CXN!^@RntyuMGb%f{d-K!D z{z|>nNgNetP&uo(vL`(;dIglhj1Sm& z4b#=I7hylX7)#JR^s@Y$L;CsUh-qVQq=-q@dMlHl_DhFpHTfU=1et@79tD3Zp=s;I zi2Y>%QXu-3Uy>{ae|_4Cu*eS~Hl968eN_6Cys?4TjE8_75_h%t9Iz0RFv-a(t z#%rNo2aHwzsJr2(f{WtoN#xOzR88otL2Q!;^urtgKUz|7ZcG0%j&9u?#rC*;bbie? zVERuCW;^rw=Dnkh9Jf8fiKAY+0yLdmj9EOmY#WIfTS7jQ`Hwj|o#$r%6IE#7?@& zuNJv%uNJZY5i*5#E~RFWmOll3`2PgSlbNjBc3nP`#LD~sd_TY;Z;M!2nk-54GUy8M z6ZbQeti}~VL-fIhW*Oa;=!3?v z#2qGGoF<{zfV%sg@^UjOkwms*nt%qn?U8Le#rTl@QyBlv2 zqN9Y1u?Ue#KGj7Kd3&4MnCN(EkYCx%ZIBZYB0Z3JX~fLY^aO@#%Z|!sLnf^!oN>tI z#Bm;@s#Jv5oTP6Zo3=rGakc6Lf}~uV zq}-_4jKiLY-({}L=U#nPBI8T>n*W3IG+|x~5f^CVws{ z|Cp}TbqaE@Hd2Dt2}S+w>V$J55}s!L-+6myj|x8C^?zY*?2j>?|Nn?P4@EV-_CcD4 z;|x$ge*Nbq^a@osI`R)K)QS}8uT$Au{?iEAFXkr$ZSHF~SA`9mhTF`kptEhL^Y+8^ z-^Z>;Th6nUT3>`^Fl>#Alc;hj5Z-+7Sy9%v&b!6!FnDA&M`SmiEJM+H>Bm-XYY*`I zZ>RLjtZ+Kxq3dz+yC-X+1nQ*Si zj*RUvCGbY)uFF@lbG|h}jE1?gF*8suDrrb!>67D|lg7w6nkq$2qs5n(VxR4J2N*y)u!4AKzpX6;qA4RWAXY$LD^xs^1 z>Fc9_cd<8SC;@BR$S&@Z=fe%@p&`I#p!+~S39XCq9|UYoH*rG?Ncs6V>Lc0`n)P%@ z5XITEa=hV$+R@g}DF}7dOO5fn zdGt7S%N~VQ@7^q`3_`2j(FPpjUA|pjNJY4-jE%9lK%G>y>ou72t;)U)P2OKx4On-mL@U|k3TGY16@7~UN>dkWzy5TTcYHRe07m>T5jryf(`3q6A zb zQ%y<`dei+Ei=$o#oMUro{f7^1@e){R@|j@FoGxjBVd*pcOtD55mV^#}>UllfccOiC zxiBM(BI;HW@Elo!dI@EGG44lwvR(rz89%F>9__c`yH#8I1DLUCef7B7`CeE%hpn66 zmQG0f8S}sr#w&vv3@7Aq-c?^DL^Lvq8gPrEtA4yRyk&n#y~Ar}3D~pDKwY~|bgw&- zYIXM%sHROg#5Abz_MHj`P9sSUbcVmHsf_W5zg$BVHxsqNTGN8Uojw7ra(2{9L=pbC zs3}*^oP2OW<*Tm>@L!Ai`UqFC05wZa?YswCN-A!zVVlC1p~~U^Wh1>~xj!y5jpqq0 zAf)r}&75G%-w8A?&O1;4avcC&!hc%%EL(gb^# zTPTuv!?twfqSiO*scp?$;#^@Z_KEci&iVk#sQo&lEUWyM;~Z%(8u-&lzj#vLIp+y* z_vn!!S?FL?jurspZ5Em>zcQ(c<r=9)u(wGmy= z&b)st9D}({Aq`k$Ci%7(m2UI%`Mz@fw-MBYsAG}f@*t$_$S+Z%z_Qk}j~n(cwk1%?fI zrqZty=j2~tS;dQ4XUM~mmVs5*a(;l{S87W&y0BlF45)P#@0V5EDn=~H2>0OG1p*i+C}81zS?cHCu+FIv{7 z89YzNLP9vtb{in-oP|kG9)4p3Ozi&wU_uG36!EpS1jB^A@=7JLKrOqBp^A^9XeKd`MxH5y}568;`9KQ%r$v4*lH4yZwvC7fE!t-=HvRro`3-u&VXxc zMd#*loo(4Qq;+tDCi`0hu?bl3W}f1FI*wZ_k~_V4vg_U>&!ab2X-LDSO-?XZiyVMrG)X5 z_fJ(l0l>KRpD%oUJdxnM)}0?cy0_>7N#v3H%T;WMw^pte&pD-LzqlUwNbh4>D>tw0 z%{V!uc9-kE7#{QB^_x-W(K_?T$*j`3M+fOZdvl{=r|^X};K_pgA7(D@t85{34WM-E zx1NzXrbREGngsl8uv^^g2d&V{uVf- zNl^5$6;yBc56sF6AfR?W%^+~73xGgF?T1@6eguw>06)tTV~~mwE&hoC>)+Ycz|8My zW-m;BRW=qo%TCE6a+dW6PoH7$*6%pNiv!69NB+9UZYl*Oy)Z9=hqD@_&163U4kr75DiMN-b#Gdg#PRhRdGlfnWk%cGig{ zu}B!~73PfEqhDClX-Dis=3mKU0@mewf?tP9HwsofM%%NgTA;LhbkPTvx2nrF;(v;* z>fA6tcu<^>&iWRC9}437JtR+wEiYf0&SKSp8f&z$;LrYmV71tL5ITjx1fX5d_hR=L zf^U%}S?sq=eTcw?&PNX!{5y1y%86y-%G($s@4@q&S0@vwpbaUs)JGXg{ocOTUEc)K zXHUjo)vX5fIeT`U1pXu9T(MSQ@iG5A+pR6HX0xfA1$wNmvP)v~UnAa=E1QA7>SkIS z^(0f2a@f!kp~--(@hO{K_QV$U&}Hd*W7U6>=!{Qc#8-4ju}t+twLYVMi)FLtf{6ZfV$ zxIpdSqvldIz&YrWORQU_G=Z>C*4dhlY{|k(4|c(+K`1zC==fE$>9V{JZDGSzby~*I(zeZoM|-vtL;UdU%H`g= zPC_(&Ka%s#^gH%T0{{4zvqsAj%zhUU&LtC?93Mm?1KDBCmT(V`cVAxRql)jZD}9~D z;oyl#&XO&xkr;!U$U?UD0G(n=-;>I`}Pwwq~h3{X^=qkyeRD4foKeT_y ztKb>zyOaf5kBkUVVU{@n)TrggU$)?1I;Wj2vUBDBibW5xCp8oUA{*BU#6hxUHdX;IJ2RyRMtM0-11uXVG5OtqvgF`1iO-&T1FW2h}fp^^ihf2D=8A{6?c=0?JT36R=L` znaX9QQYG#^LCh_(%U%Gn{cELq!PoRV)OdEmnBs`T(v3+?I7_!^XeF;iM(>8;7WqV+N99l1!L;Ct5*H%C`Cc07`t)_*zGMQ{ z1a|~oUw!0*V%ZbpCGp>rPouQ&7Y-r&JNXB6l1Yxy-CphO1ky}e1F{nn|0+X|JSj0~ z`?tJS)a@D*+-8VkpaV8&?vqXhbddSg#A9JK)5J1!&zeWrVW1n0xnENL*3A9pb#sCE zE=@wc+qeR(i1Y5I$}E;b8}3rv_^ZCd@ot1jbBGQWyzsq&UjHg%xhMN?ed8L&;dxg5 zx`n1pVwNnM5CZ{_!@=u;iaK3>^|q1w(>GI5=>4~|dmFW&mtf{EAezHU;N>=o7G-?$AogdJ0hklmKbCkI81sYT3j%+{N+gPh3=FzZ0Xv=b8~Y6lY5ThmEZ14fK1 zeas2UjF@)=TLNWJ6cb9 zp7F;jdPMSjJUbFM;5H~@28_837%~0XEZ+cN^LJ_F$zs>A-Vi}y|LscPoj>vK+mUqT z<3IDx{tv$1J&?)&|Kr{W$+6I!52;9H4#^?2q44R1A`#|Lh(aWXVH25S_;f&NP8G_r z$Z(nf`@U&(X=wR~2hy~Qp|>Dz*Q*~ISH#C=X*U%@jX(Tc^Aej(8v&SsqGRT6X2 z(tf$m36vlnoo2QY53R3~ICEF9311%l3VvMn$byALoJ4cj?J!BBdC@<0JgsDT?iYSP zQPPgdIL23E-N+OdyJpMyg8G8j#^ovkP7J!0inw&O>VDot_`vCCrgy##Twr{uWY{>I zUnRmEzW?|nT*&6Rf`(ejUJnAkQj?{6Q__pI_CjJ)%gRDP@RhN>NzJ3IZSwl{bKjqU zTTTnm2fr>*w8oRT_W-M<Zrl2{7)d@f@=kCR-W)3)tGJl*DuVSn5lwh@;dxWg6m3SCS|sdMva5ZaL=Hjw|O2lQzJ zcXgmGpL0{&iXw}qbgsyRZ&(%zPIJ!M%QmD3ytPfdgq*iT=Xu_>IwrJ~*!=NJ%lPuk z?bg{O8LfH9NXK9Xk_9aA8XQ7em-PN*!LfD^T6t=G9t!;#T>#*xhThzQAF<2-V zsr~g(b#g`P$1k*gQ^9#@6lE(w^K|#}#*oz@&Wlz3e-A<8UT4*LyK#lUWZ(W8-jZdF zfp44oqsCn^j!AzGP={qFt#Fk-9|vBcrJRlncdjnZ>n_0R2Q`;2TfwT)DqciI)-4kD zP{z5&g1aeObqh|vgi=uUnG3+lbSb)&jf#PyNEi1L-%cn+uc-JT2j5<TSH3M4rHS-HLS>sn1zdZ4&^GnpcOE*jeu5@YsCgr!wpN5;}Mf#URJiNCd#GO>1 zMu~fGmsOZOa{E1*v2y}{o;u%cP8`_p^*^IMV`eUtL}R}R--o^CTVLKRbC~=E26}Em zLhRm{A!W!&U%u*_v@|H$lg)imy`yaxm|DV})SK|zz$1$KTXXpMt-BbY`c7WP4#ow- zn3eGT5QekcDu>n9=bI199k}m@&qz(|hy`0=AaN8 z;clK(U{Zl)ic{&V9xN2fUTlRz3GBa6mxX(FZzf}Oo4$qjC7;}LCUFIXyePbMKY{tm zKeHpbB>QR0WNbKZ9WQ40O>~UOkZM-YhpBNrCmLyluARyFGdRaFzNepSzg{#Z{}k3> zujipXyR7loNxTg1#|y*fu=K^BN)hcO=3euebB8v0c}Hy2f@%*aXx$g*?JLa7zmi_vWQ7cssDb;`Qz1h<_$ST=+8?+N`%5ZB&ffko)nQEj?I%AF-!bWE z{a|g842(ucge5QkZwfa0ImAnvDC(8*5N%UcK(S|$BE1*6h+pB^vtIS2# z%3Saav&S8+C)7xipTPIz=hum#{lm9SrG+;hRp%?Fr`sF&n17WCDj!pJ?XWh*g-}(N5Np@W zFHutJ2iJ(QJ~Z3b0!i2i*TL$BpN+tXT`Wj?Sp2!%Y3RI1()EvW2OQ|wxO)@!oIU&u zZFvjJME(>4?w=9s7Cpwn@1RakV!m6NyK(^?i(Nh9Y1BUvGdTLj(}XiWTIccEfv7Qo zm&=cm2%dOt%@yy)^)zQt7-&f+Lue9q%s5->iM9nCM&8q8pjO-D1OOj#Am1DHEt3?m zXx%T(avgRTv9bDgRwR{yzW195D>c{ zkPucd7fXM^ZJ`Zx&|Sv9MKBDi!IH$G0HOQ{?B;R(yxjrC+wMFTnP-9YC2+QAi9f$AA_}g#`{HImGULG>+4VY-Vz( z{4V5Kz!DisUhPkJ2 zzV!6&k@CSj*K5WX6(2w>>Uw>BU~|^Hs6={hMEDZ(rd_N~i*g;j>E%=Ace7d_;+^wmXRJoV+LNkHf`Pn-YIb{F!t+r`xkkCQ zQL1v@#{YW6d*|HPTU^|DQ^ zwrs9z^)E=~Z922LxqWze%V-Hn_%|=xwM(=h81=Al1+|rPpK?SDd+VIKdx`4ZC&u{n-g~R# zL35JsZEKN|C%UqA#G@_GldLPSol5zn?e5VfC~gBf@l^BIdD7~oKMttc-ID2L`0gSA zDhX^I+gB%VRI-~=fBfHq+HCFw)5S0X+?+vZ4*j0HFSRMGahyBspbOBSAj5tU44^JP=3#1Mh3y4cv3t1#7We36z@M`2QfA`zBgR+uzE2mbXkSs;TgHg+^2371`e)`9 zp?#Me+&zt~s*CDt0+W#mK-I{{Eo9nqJLSU6!~nVk9QDhXwI`aDmvK`oL?y6UPR28q z*bUkft&+bcs_5$mI;XGHhHPWiyAep4^_R^@VW1U(Nv-OV-j{@N16DKsJUtGe?1{ML9Ptr_Mxr&-X7tm;MD z-O)i}vbN3A@U1Z7&Br1eg#D5;nQG`mi`Zgh%V+&z+0Q^%zP;huR=DWM1q_ZO)9A6o z1&XOUeZKGIU-b?MSm??1Eg%oCrjUmt8-ShC=Bn?VU`?}UGkP9V!B@mESmj5+BRi}4o3|u z&g&K>@h9*1xF_NmS#!EYW61Y{ArAqeM)yefO%&vWdDo07w?$IjB~PlAz4?Hf9N?m3 z#P^3>)pBO*VZy~KB;}DD7taBr&@9;$$;bN74K8Z7F7`-5Jx^1(wSNJH`GZ!4aeaBC zgW$UHfTW#xa_sNSpxcBTZ4g!5Yv6mv2w*<()H!$2*qqkv)b*Dl5%Es^^%bYv0`g`U z*wgEN)7ju7Un)_hfg#t4`kef`50jO@*B>3rsB7&K#H4x^@4j&Fs zYI9hQ=&e3KY!!*4`T>xFy{YP09m_UDA{bCmzf`L|_Q(Ek5+{{4^3M~`4> zSI~cz1G@BBmK~y^eIkw-JEM1tcr;wDSc1O=vygt5a_J{=6Nr@!D3z z=^G18QT@)dk?!VXt?B!e2Za+Cq6R>-)C(QMNc9+E^1jLqQ(^((uddFKY=PY)!`T9} z11Ks-e=Bm3?CA9#_giR}F}2XNIFa{ML}xZs_tL-ld`g?V?N-vgf&D1wdYvqo#NC&v zKT;Id3F!(L?T+BpMffzFE%r*ACrZRF)R@%<8iQDnlQscq7|-pr18T^2IhiaJnAV(| z3g6on!LAJb6wGzBDmuT$oa`6x=NB^LW@lsVA5QU8UcehG+52%8}WG)vPM10yZmmha$N{JhFe7wHN5+$bjY)7wk-qa5ObHI=3 zm`1OcZ$z2aW4MmbHc|7T5}vu+=f0H4)#;VDNh>^((Xqc2c7vMGdnJNr;)MzD2PD`} z`lj30i+}hRx^Gl~JvlRh+8sB&q5?<=XPjByOcY`N%Or|_(}GP2qh7k7@l*bvMiE?K z-BWgi`>N|mgK!z1KX8lfC0ES8l6a)>;%9J_fO-@ zfD7-aBDzf_S5pW}Ptdy$cQt(1wH7&xWZn!9b?s301H-*jD@&>9uv18>S74iv_08dxRlMWK{!5R8Y|-+pMpwHl zZ317`l_uCDP(>5lNK~!c749$fn_UOB9}DR|MT?#W3rdenfu#S2A7YFknfoTR-6LND z2Sr5v*|PbKGq3i%wnGV_V9j#}F|!&JU+FqHY5VA`WPe07?py482S=dv$xu zRB@TcbSEn=d=GCwCijpva+#|4Er{X2fA2*OZ431SG9)#&WTf0F}8X4pozy1x(ul#o`475|ihO(yE|xTs zEdGrGKPBpZs+Ahe;Oo}wt&Nc7LAPc9VTod=CK!7Yp@&^-rSkTOZz6N`sPEDZ@tNWK z+B7d|?=!wuSGL)yLWJAY>|FOKH!IzuuRm0T3nYJ5^U6DJ10*Kvtn&a;jLmqFYC`IL z6I7gPqGiJ?<~&-9!C8ty%1wQi<;Qa?=*h-c%-y;I`seK-6q$pX+Hnx#2sz%mNXr zd-Th89-`!@Q$1cs)J;K6o}ht-%U3SueYeY;@17bX>_-%wI4^x?O*CqXD_Bj~++@*2RWTU#T;sKXbS7l%#pX1R0F8dq#JuDcnSh$1BMiTDX7&2vbrjGnW(WttX@~q1FJm%sx^! z&GplzBmvwI{8fW@#m9EjFuHfECB&lBBiZr!ZioR+>VEU) z(Wco0bGt9CeA@i)l)F?*ZN|(A02ma&7h{qdIPao8GsXE|K(P6!6daHn?E0NBexj+8 zsLB8PVb-EMn&yrSpLY*;6G2tPQDmO(T`pj*~xl+^yIFiP zX2GlsNV8S+S%40XY#)AI1YsvVGmo5?2g$gNLg1z>i;|enDx(|0LcIZP3 zv3uz6#~`IxMFGEAya{JgNM)~HR`vvHnP|MifA@VC^6)B`cNRx>DYdtnlq8QP0Ka50bF zM-ccubVS7O0UacTnaB2pmYz5{JEV$+m#Svf9N>++>Dy=qRYklv=*^43$-Qhkq+8#P z#Li9T@^u4*xfa7aenw&w`VHJ!uY`vG7WuTJiY7#b24&Y^UaQTHj`Jn^%$>D@bRUV% z7@1>t3bE`peHQEQ*RP*G*yT!Am?pk(i38Omq8@w{Vqjt2(992;% zAh%ikEuwxxlb4L%86G(YjPDQhK?3Gr=X4J1uj|c!kY_)HKapfj?tf04<0nLoPdzJQ z9d<;r54VLURE@kkRuHGgDTBZKGo`usaJEG8>K9+5#_|CQJ@R9>pFlD0UAe*i6Ix$s9I8jM z-|{(~y~P>h2+GIHe7VNbz9hlNzp3^jygXF7-G7 zEa%QccEEVq?CClVJTQ_4IlG^}n(v1nKCHriebCAP1MsF8SzwoHzTZ1-e>}#6j`%C< ztL6mO-vx%$2Rr6)$7T)Vc|gHHr}`u(Cpe98CVhD00Z%k#Xq$Ckn^(Af$3Ed(J7#Tc zAJw@Rb1n8aqT}P)^8*03sp0t`(~xMU2G*spD;2It85o`VXJoyPCaF z(xhwnoX&LBHPOm%mh3fj7v1p06dBLjF}Dm2#RA!|@uIXO>!>BZHnVDd#Gtfcz$>)D zd&LD+0%rFJ|3830W60#TJ5w9=8Pq%3VeEv%W~tKMJ4??_Z6B_wjsoCCBTvAWZzyld zsqEv?RAL_+;!UcV}{FlzgwJC>L-OS=z#mb z`Kl@z^v7T554v6$#r<5B0M#4~QCpFU`58Y2@T>rP7(-V@ru;ii>|E91i!s}SV3o7e z{ZV0&w6&&Ea*$xj)wz5T2Ts7ZTVm00%~sJ&6SeV!Nr$KVJHFMjT~G++E_&y&Yc~te zT~=48H{s~ne8Q%jRo5%Jj91=e?_QsTf4pkHa=)x=+`%7NTU~V?VU7)u&C!m;6&5t! zS!d^*tAL#y{Ec!hb|1K!SalCXDH;qun3?^FB;pV}wan@-xqpx1FhBhoOqISr51bD6 z+41oLXWivxT>?om?W z9-qrdO)2$=4BbUnin{vn;M7O88+^(BO^&OwR&QVqeqF{`gG2vCzhO5P*vw4yE}F%| zE`q?qh$YRwX)^)F?E8b?__*-Z5C zpe_`Ed}jq}qh&IDGzL!GeFOtqncVBr%fRrh-SZD(?K75+?AWyvgjHPC|L_nylYO>1 z*5)Z#pBQ*V3e?cW=sbsYXdj5%Z4nP>*A9Q$Veys1pMII+(D3sna_vY{)(CE@{{tkB z60(DMf%}A0%+k8NPz2zUEZLprxMlE+zMiR|S$3pt;(>US-QX;6DsE5LS`5-CAjr7{ zU9JV7BPBCKH}_L1;q-W0(aTr6g|yQc!cSYNqB~Q6mDx+Z=JVy1#u=nY&~_*r-jf`l z&Lh*UceD%4o`-PTNPEb<*6wcHU&lzS3j<`&q@YxYyt0zIIxw+a4-*jtCN@Wmgv*5) z0N6z7db7qgR9hL66ZV4MnTm*#I{q;ekY;kwX04YwK}*dC&#Kjc!lP5&F>4OHsE1Ln z8<>uqAk{P9_^7IgWE}dC$}OJ>^-b>~Jq+@I)q{tiDKeLt&E)bOS>}jb$H$DUfbz3h zqf>kU$7BJRfj;SmfO}1l^&D)Ld6(%3hax2!B_y8^J+#H!!MbA*@qfO5nOC<3i1eO+ z<9c~vn^)L`Gss}rJL^p@M1Hk`PkcA2&IX-U<$}>l!e=7rNXCKU;7Shfe3cqckp40K z$k10J?@tNc-fdb*@+Q_saAd3e;`D&Jmi@XklAsl~88Tl-?b;~;n(k-jlbr8asFN-- z_^H7EU|ODJH7w?Ttz0{y4gzSO4!0_^k01OS+f&cWuWaxgZ9?I=D5r5lQ$NrRfCLjc zXB7^_+Q?ZtzZ{9|NjgB8ngG-r8?u}k!Qh;F(XK9wdM-!_zv!|+C6Bu!D0r%0Iv8`t zK30S#3cDrMX%Dc$0N2173dhYIE zMX~terBz8P3REV2Y}qD(s>;5WJPCNs9n$VoI&@*VVKHYRlW*3h{&}4M79u~|PS`*6a}a#DTXTC9ui5}B-kf+0KJr*Z zE(bE97ZtKIHhFLiD8(cD~hAjcCp=yr(a8M18;l z`py26z;6iy&I)SvQC2u_e@GYVdk%x+)&%Avm3Zvf$xmL(lXW;hyU(w|;@wz*MTw;r zB#Lrszo~Wc5nah(6B))i04f@kc*MQ)f;~y(mlzaSN+l5G- z;J3CK1~-fnF+y=qCih+>3F+2E-IB6Pc>_hTgK+L``fcT@!o z&gx$5ivy(ph1?crG;d&;mv&c!!DHI;JHo*rVga$Uyo<3064^;P@lA8owG(aEfmU-KI0gpbRe04S6Y(RPBMSZwFiVZj z^a&B_gY_P2%gPUbc(cD#ytk0bBuLww!atEHM0I)rW`7{eys;$qnp9HB! zR>6VlcwIU{wz%dIu?d(FwD&(i{b%(PXj{p*&%2gT+GOeW<(bjt-q2c#x#}>nsfED) zxt!Euw`F{U5&9R<%_-L1BrGc-nx$Dk-3eo4y&G+krRfP4TCuZtH6$CnPOI2N)UkHM_e}9z zKX>!87Kn474VKNMirkjuQ+OsJGHuJz5-vAvL#d8F1a$H^2p?jWDOfo`=#3yh+y4d* zJqVLHE>&_r)}R5mM_O1mf9k!z8{4z9p7S^~dUIx)8cmBA>U$H9i91#K@kEX8cHD-P zM*8nN>P%!N64~EF>JwRz0G0xgIR2cxk^)O}S5tEcN==i*fQhn)lZ)HA*G{4tzR_jatPKU0lkwXC>?jjW0L^epPz_g`Vb<`pyHPPX$-uB_zj3)PTmEWgA@oVV`M{ z_eu`>-I>{7u_*r7o^}`?E?!L?^u3dpD+w(_A+_$xalm!*f z5kOR`%V;aUEjX<0oYkJDXkm26Q&S%CHzf$YV@MM_8`e|L(LhLuas3F0b25>IVpLw4 z6rgjrB@FiEmyeA=5#4%r#HMTS20(?s;}!hH$yUR`NcFqV!70%?rDpm<76U+oWpZY? zSjaz-D0YJpQTkOIw5|Ju>x=i`Anx~OUG)<&m`E1VTUPzoTJ*0ziF=I3Y?L-VQjY25 z{JswU?o;BoF{kH&^weazah_y(PIBz2vO0i;s|_YDas63JX?M+oEb}D?y$|I+)C5-I zTl}`{8|(+NQ(RT|V?SRvkI*t7i0%2ty9V{lT&Q}Bz9(D2C4BT=)TtldswN{RclhmW zG^=PISOZ+4TW|Nl;uc;Bzb^oA@x|{4SHl5o=@of0=Rt!rIYr)kN|$;_D+Sr%+3G$2 z7@>8R&n=W+UNi%O_J@j!}$FstnOleRk!b>%xQ3Aov*OyXK zX$3v?iqW1IQ9&=sm@;L^GBuz#rpARbj-w&q-*PJ(5PRc7<^ni0=I9j;4o*b63%>+{ zc({qx&DD@Xu(;0;H8htq@&&_mLD9)o{868{RUm_aJ+gemknaeZ(4!@nk0c!y@(o3|;qj{6MhfO#QKOO}m@? z3K~&|wl9>1=)Lqw3z^?O5Zw^^!^*VC&!e_7rZPWZn8awlUj!21UnN3S{Sm z1_`LYL^Vg@CC1>7^;m1^`5qN{28(vJmk*Bqxk2xp0fDkDA0R%qPmLx+F zqzGofrf%Hu2C9=zQq>{J{&bUrAI!gUY`G@7a(n2QH=Www&Z{_J7#LXXjcdZK1ycfr1jxLNPFPWUh@v zeb$>&^d)oAyPPHMWsaE(O;5OC)q+*m&HG3kSX$Eyp^+0W^P{4q-5pv?!d!;NFwCPe zgVty0DXub4!Ys)0-0J=}(+u@zZ7df(C ziB8jty&x)--jp0YbsSIKw~J@dOZt67ji#6qTREJc?c{zPh! z5T;Nkobw#l)hQEZ7XVTzp+U}(?0yZ#SA&^} z$y7`=K-$*Pe7k&>`58S$^p^aN4~wR6`p9Wnehd$aU4P^PVvEMuEsW%u^T#W!cVP*& zgt$u`$2U*2bN|xGlDcR%9USvO^+t)~VIlXSiJdKu20TzjM_jW9?2U^B!}=G`+Xz$? zUYe|y<6`d$Sm*$9tr!KW9reBDbkb9FWSm44cqrZgL+jsqv@NccW>(T#3SVJYu-B1Z z)S<)dmOBEI}p)Gck! zv|ufO*tY-{wfZV`(EGqon@9K0M2n}JBNi+HZ4C&upj_-O%Q2p2Zn3Wjm@+&BVj~=% zUT-Z0 z@Q8ulG*9eNE03yA0_03w+Rcqp6~J`v2eSM=01~GyW$+)pb>a_M0kIL2W?e1Y^f4YN zmw8}rpYOIG``Bt&%nKNNI9yOO0$;GC*&wrrruCpkE{C*=w-*XV;+8m691i;|X}oPf zWoZPO{C2a-#K`_9oa@TQ=S*2Pqmdxm&1E0J3xAzjkWJWWmHT!@Cj=CdM3vjFl~He3>>lxbaeDlxbpBG&J~hGBSNy2u$z&F z#8_&qX=e}O#gHWadYHT0?Sl$~iou=(dHc>=ydGH#U#&W{IzHYuTQfd!{#XE2%>qCv zg?w1>pPZs*m}LeH!QU>Ge2VfG{JH4!u74cM`*X~qgqQ+*H#=s-XkvMf3f`McR$Hh( z&dvMN!9q^6iWJkYq5UT@Pdt8A&4?*wi!tsBZuAtT8ybaZZccpwVh4XZZ1O(da#Oy_ z^FqhxtzjFnx(Za3Bp3nLoa7x2k88?s|CY-_GM)s0MVOdfjw<;{V`)65Fsaga26{Vj z`j5n+NG|b3#Va zxAx?1O+SO-Vy@`{VoOWy8*{|O#J8;EbggJUY1F7zB6;Sw!5H+qMNBanjN zl4PK%2?R&YjbRkN1P?4fepl*q`)wnGy0V*e?&1**2_;2xDHJiZ+*1SC4n%r#!dVBp z?R%t#C+0N&e-!^_WrA)0ll=dx)rN`T-8Z*(SXy@LW;-7Av~6Z>lr zzWVk{WDL_TG>Kk!K&Eu_@%ZWy=6Yrr&6Xi%i*=c$JmL)x+V{5LCKw+dpF2_ol6gs~ zO1J+GgEk1g`D-m0><&fnfM; zJ5&CIss+~byf}&i#OB;zSAZVIe`Xoq6(zzBCxg@No*bneFQuZEiOHqeMv5(B0*PQcL}9;tO6iz z)+J+)zM>n)?Vz6Toz?5i;JmM6NAH&`V*qvEaY~I!gre{9{^dk5KUDcc>Rw^H+uf9;3IgQ87^d6>{V)@Y)y{P*)UpokR{-Z zQQUn3<}kLIb?O!p5Ni*3bre90d`FJGlSJ`7ovw%9+ z<=i>q0+;?I$L-}{I-j@`Vl5gDWK}A!Ge8S>KXo9w7zvft_r?RI^ zc)DL0-vWHEOW(cuUh`l zjc@65{ZHQFv*S%@9gucWRrqQ9e;!;{!}yj&=0?_kDsA!Sc&;rHfXxd%3Wlf*RA2gcLDNvA36Xeu_1S9TMOkWD5Mtgr`V1MPy}XG z>DT3|7oSL~XVPyzukio?m`08m0Q0~o5tJ_n-_?`Q`T?qkyQs>s91%=g20wk10+j2M zt5`3pzCOzF3kL0JD#B393#;^XWXmw<4z_Kcn$-x;xQn;X3!o_#@8MZ6li&5=i|KzJ zL>%=!tHkN3%@R|}Sv zp3V-Xh~#g}_AXfI7kcK)BSEv=6}Mzi+CYmdZ`#?~Xm^~i;q7gjyZNlyH#2MFTtRyGcTMRy7-qLs!CMEnz{o%^udG53s5 zn03tTxmkxb9ZK(PK!2_W*3E93w~gyT*-Af#d3=Gy4zC)IuTTEp#>)Q__e^;z$DHJW zPB6ylj?}1?KY7~lbqF%_Q4@6g64}WmVEwAnPofA2h?`LLw9@Un-ZIsHA2GbI$PA-u^|zVHl^<>=NRGJEBAhmIj? z7xyPq8+$iK*GJdT_%!rg^60a#thnX%Jm{ob3@;F`O{@cNk9nB$+)ct#wz$-c&DJ8h z+fqUQq-^JMPM*a}&|Yt(17{V5&rCGj8M?eA!AhtmU|LRGom?;7lWm+LcBrw`i=N7huuBBVROS{+R=4jn%zRulr`tU-luDpJzlx{YQu6@ zNFuI+xG&C;PpvDAM&jP>3Usk>E~+v@aLZ8toZK_Rtlqc3NrV8j4JtpDH|MaB9p*EqU0D8J30dQh~AY>cB#P$K83(3tRjzt~VJ4)nhIia9Qv`{y1SPi^N{!OHn;I z&x})3%(J|zq5f9y-ImgO4h;Liu5sjnAo6R{PV>LbvuJDatuZ%=9IF_1 zB72JP#GiNgG*AlzIy`;w@2BVE>sMAagWiQc%Y{09!Z(J3*)JxTt8ND?h>&DLy=c>I z?0n)<(MG`4PHKmT?qZT^!+rpHN#r0{6@F(c~n({ZaV;BeQ~=WX;vFon>jX`Lgk=^aRAiu9~K(VnsbY>&j>Wu z=nRy|33bxNv`wKn*N<+3^s`&<^*45MHQ-s(5fEPnFD3~HU9XR1Ck-kgtX5?9(NqKQ zx-(>wNUsN3st;1a!RZ5_E|us4v+xjF={iYvZG+BfoMay0aE4nvjKjX0B-?I<^k1Br z=U`U1!24#X*NCb|Ib);^gyfxJy9bZ-jl*9vjj+wylRqY^TjVC0VNZBe#G&`AF5lY1p?Pyek7r|9$SyoyPA4+6w9bRkO4G0jNRv@HO5#12W7zqKwMX4?6cF51i1@*JZ@ z>mH>t3;3Lb<=hS|kqv=_dQN1ksH1f0sv^$6VIggr(Fhj)Wvp9g@?QJ>lYhO}J*B&s z<{Br*Y3wUrL?Ty&ME85&C7#WCE_=?%4=(O>!{egwMNbL&_k!SSg8gob4PF;RjF-ei zL4x0&*$7}NiDf1w1De1MldG};doZ@imvaBY^7H(f)9xO=k!KUWUBS#NIyNNn>vYSS zEdMhT>4xr2k$md2nUUx@!Y+{Nr}=4I?gCjjTo}GiVUNhE;#^*iQDrWDh_G>c?`}Ue zagplduzc!8s0aEB4VSFTf4}NE)fs1)@TJ`mA<~ORTd=Ps;Q)Z_r&}-^e)&YeP_cXR zLYwqdnt{)WUWiP_3eDVhL+fOFQs(LDX-{zz%N01N}+LlNt4>m zY&{$cV1esK$f_4b_6w?*=M(O(HuHb(=!fVcmqe)r*CaIU2-$ z0LVwy*`P%NH=wTMF>ZlEr0vvCN%eHA0eb$B}8E77an zhNx35F}h;xc^-7J40B8FdReU9>GMld66YO)ig1FY7w+M_voif#{BPB*bdEtLXE{vx zcNMG_jNMhjiI7sniTpG&y43c#;{bNlEo(p#i*Mz-jmdP3<1o@&=V#2U&T>%%s>gf< z2o`R>NAkK*0JgcmO$f@5iQso1;sV%BLccr7yYVperp*pe>r}txrGrF>GeF|T+n0?2 zWF`ML|9;~;CIqN+GSBM7y7HG)f%1o5LndKZraB!g>IyP&yY2!=v{6`#hs4ZyT0126 zX5bIBIta)b;`EylH=4G8`ZgZLExyaRcLDZf5G{)^ALIw$oyBs0Y8+*3^Y2;*2`&GI z>+f$~n*Idn7`Q!*kfG}F2p;XVw(a7>o1e2Bd0Yh=$y_=PinEo*odXJ$7=!y!quy0$ zttLBr{TaBBuc$k>MJBSru^W56&AU~?f6_Q=#jT2+B2h=Da>byg@IYKal~^_9Z$1o= z$^q17$0a`5JvMqG=V8#EJd${M`JnL{kdUGS3TOO9m_B9_B-Y<2HzfyEW2ST3XKx7G z>+XozEsgD+qM9S4Xc5l4MGFVDcYH3+qEFK8Uusv~8XV!+qfuoS?`Qo)Q(!j)^z0d} zeL7StwXdsr_7sli_8i;RLYfT+iQ?N&vR$HA1qwM`^iKE;S`H%6g9%jO@hd`^YV@e# z7kPxh=p&-@&R;?Ed(U{#*DtL~-1~~Vec!}3cGMIvmweg}2>ypW?H0zUlWuOflm zJR1M88+Y!<{(AN>b~GO6_mw!wWs#}%^0cLvl~v-^LDj6KfN2Pg&+4nNNaaq_x$kbg zP#jCavnLmuAizDk$EL+Mt*Fo{vaIh>fOl>){ z8Wiju2DbGfaRqeFs;RYI*9i!yfZ!6Pxu_~GTo4fvP#_c$Tr9h&v_!FhLK;`6hF|&vQT5W!tK! z6iw$#T6#?S#LfK$>DdUJPz26L+$k0y+Q!fCnpPSJ8w$aD(~CZ9jhq({!=9Gwvdnys zWs4!}^LyCw@^|@xKH2Z27}DG|%S~}UQ{Pv|+ce_V{>aWS;n0q^=aZ$vurnctrmwnQ zt1~$VcBW89Q)rrmGK1vTBf97&Lss57Hn+Pi-zRLZ+xzqSxXOj16G1;T2mbyYqXoOt z^XgLNI>5^IO1~_(9&*lS%m}EYXa=YYjSzzb@~Bn?9HBri)Ecyp1){Bk!;O+23q^fjec1)wvu8YJ$9=Ejuh27$1~HjQzdcY`hzZz zYXuKp_o9N*LC_%O1A7JD-cMpY%}l6yUG@>R9P zcgH_f?#X!K-A7A(Z>y7yYA-98}$rgwt5pDO0tlDe{+?wL-qJjK- zjK-V(faeQu^|#c{a9x@=dQ>DzEpiPCO)q4B=v)u7To_p)84l4234_3oiNw8l4I3Vv ziM@aN_Fm2gtsr-!=9>pOj}!kt5{^6%tb1wjb58cxfZNM*)+I$e|6c`Jy!Htr&O+fG zEZZ;w^gc0uAuj7v|Mr`Cs<$#6U6V(5xBkU^1<=F)7xVRH_Wy(V$_zF6#e5Ytr38*6T7UP5{2Y&tN;X2VSha{C?27Rc6|O$xJ=K=<(oe#99=Rxc5l z^7*#h>G^Tj>$XV3F{@$A^Wjidjc=RcBSb_v*{dP>vWEHBd=_oisclTg_*h&%~ zu|00=AKXR{eYs)$s+ntg)(^39@^T$QczN}Y%tF*FMCFK!wVTn<2~qkO#p>Wb7)asL9Ocr}eW-xp;ZNPf+4qDQvZ}5v4n;(Hq z!# zfve5i3?{CyVoR0>QC7xoD6i`wSpJ(!`0RoJ`MUwX+K1zvt;V%KR#jeJj=gx-ufODj zzma_%+!VW(Y>%1)ak39Gh)=$(s?_B^IcB42J@;{A`QFPohi{dMu8#em-WR_LsGd23 zKqYbyQa?O|YOerf^B)#c+-5WXxIEtgL3c@flqERy9 z#x@LoazI#T%m-;y%pFd16 zWTg+Vl+WIu&2X#=Vc&s{iw+8v92}-p>R;B(Xg%SsN_x@iXwJ`IK*u}Ep*zo48YA`t zgR@^K{KE!%HK$1K!~wf85IE)BYS5Wf#Z$W81KC__;EJN#oZLW$RQ;hP8)Zf>F!%LZ zNA7g?%OXQfs==y1DX{mv2!+=b+fwW!&)I+7G7}4y7yR%cp2Q6vlY6~MWIt(0?CnGk z(3#Zfg;K2dXaActyAyCYFmln=9{Yu_7tVkj%Lu)VWSMmBwOtwL))~8ZWXlTND%Hdo zzB1B1*>AY^@mQNAG$c8<-uurBRjE%JQVUX`{`+3uNo@XhwZ|EdpZePGI)utF6D znJN^H%fsubdK1FbbuuszRJ4d;N)Z@Kfl+#!8kW=&-?R!&QtUWxhB+qQPTss=bqTD`Ce-y4#RaU$n&RZ2pG{bCb#Z4B*E3#@Xqq6I@*gOx7KurZ1BmCdY5c!{85BST^2 zA+n&$$7z@hs*1*v5Qj<8Sjuw~Yy!*DN*-;aUm)OyGs$x0(^)5SIz5AKC*a*2k`${% z8hPTsywxfnbq@VfzU3y{Ca()x$M4s7f2(D%KH6NMm;Hkrn$dD85+Wpm6F4r!OkGot zwZA|3VgOaH$TuuoLV&Q}o{5_4V>@=nn7H2i@v-ZjK~y8FXX{itz80NWO}Mt5^2ozb z)8c|@@-A8LM8~_ngvxv>L==LH-@D}{!&9FgqH6N zzi;)FN1W=rG*rn}$=3Rpu7Uh2yfweda4Rtc>mPVmHLbI|_o0MvRaNsa)oOZcj%V?tb=Qki z{?3tWf{h-E(c^@8Ek;_^X{CFFdV^+RgBQx$1a+sGh0CJpN5dTyq!+!CiDGQ%W3n;Qt{xMY=6)~`6%|hDJ!9J@E{A9QGr1vyip6qu zBO9=rTF>sr4NPwIh-^rK4iy^kIwFUudy}>ve#QuUrZ%R||BDtoL<9}v?6_2q)IXm_ zFfxk}(ozo=@^UuG)L{;uwbr`g%+@(&<+-KifE?IKS2%mRJ#BgOVj(;wY3eE2@M7pp z4@_BBgW&8;S<_Xj(A;&RrXccA#oW!ltKBf?-R8a@*>e3^m=;C&g^67c@Q+Z(3wHh^ zY%Nu7qc9Z;djscf2gLkl)_Ub4E8|3k6j=09w~S+es$y5cch0VXy&Ul5Xs+g}p6q-B zrdZ6ZA#z?fT*&~{XW2*!X_P4>H2mCZVm3im4o!|*Ed)*j9}B~WB~i4~m`lHjkDsg* zgvgCuTm?dX?rh6p>5|Q)f=#rmp?^{H*; z3J}irQrimqnsHm4aQ5ca!I)Hga?;z{O=Ic_xA)HXxBCb3L%j1Z>)xBz~QwCh271LNDdy8YIdI9pCX&I&*eWzH-4 zK0C2EcMn>gwSQ znlhDZN6v7Lu_9*n>=E8cnko6Jr=6)s1KarepBPTOVzbyKr9g{TnM#f^0*5<8Wc`4w zn`>EZRaCD!uUSr>{93B)Wl=j=vyAlMfRpzZs%XUt!glyveaT$_j$DDdrwyB z(ohJ@-Zu1^(09JgV>Ahxh%+je*x@(FHyY(5+Fcm+8H~3N>*~cy3;a!lgz?fRat5zq zK*-zFq|1s?{+skLx$2rG@gkY8G$`ENVhJCn>vr#G!&G`@vZtdfIl@5KZ6KaK@=!EG z(`E?Y_FOtBb8fFJfh_B|Z+ib}sW1!GzQD zHLxT0!KoKs+4@mWW2a{;(1SjP36yZN@uPN9%C0zc_>2Cf(C?|1^hTaexxc`)2@-3s zYjV=8Vn=jHKh0&zux-YnOv0~l@+2-6+e=5IN%!u8BUvDQBipgi7y`M4ET zKtQrRJ)Ukl5P5`is_unD7CW(D8&#iI7v?`U5Uk5sx@G#lh_`9Xe&&6`399JvSuMZ7 zBXFnmsm4&yL39W8wrlj;JZO`0U8c>9=D&RNPPOxAPgdpZapI6Juv15DSnswc`g>z2 z%x!+4u_H;`mHUzn21mn^ku3+%N_{6F5T`u z%A?W$dWSX@UN~|sE1QuO&8nfhpn%EfzOiOCuE)MFM9sTerSdkzGHc;KumgU&ylzKw zT@Wq}oig?yEG4+<1UR`&tJWpSQ-oea|z;%H6Ky`d9P5KHr0?-;+;M zPr!rF!R17F;{%K5FJDcZ90QBf1pURYddGWvBMIxU=(EH;@bw!Ry92=vUW5*&v+vev zjUq&0@tn}52UCNs>NM!mT&l_g~y=F*uWBvuOW0+NS^xQYv#U;_SV%ys>9;GOKy2d&-TO6hZF@d_rYJ( zDKJkTXxHpr%GaM4+Hu-q+K_W9Hk>=F3WSi#zkJE>%OckKJH1pIjv zoYXU98QH5hIIOkf_uvQFGbJ)r#64*-WB-VuQ$x88NQp8=AF3S#x1qTR&wlppw=RTj zHvg2Dp`RTS{Hn=++5qorgMaoCl|$Ec!gp}#>bWVpJC$#9rH~VV+6yq2B1{tM;>5bl zo3z#%gUN4rD*Oggzu2c)BS9e3I={R2Zwj!;j>w=S37!f13f%PE<+2x+lfHR7rB@Q5 znXL5Fx~BKySYOWQ7J|;C(Bb`A5vO$`x>~YKg<^qGef|DgRw8cywZf%}hH+ zb{bAqgSp1e&3G=PKrIEz^{cl9y1S4VA9Kd8|7Ct$b3v1VfcTqMYp%Zdb=CQ+$cnIM zrcG=6!_LBSsK{=a(tXCg_ICN9B-qY4$;3Izstg?1JOInHTCBYwm#yup+8wdBBtCiP z0K*uWuJPM^mU6e@>&~+of3Ld@8xQt1j*=D~(CjkR{^-4|&P~|xDDu*32~S;n+7yh^ zPZ@F4XXlG@FTsnzIl(GN<-{;iDa@6>9JS^aQq}n59pd$jjNvAH0Saa!M6Szd<~o0H z0|nrxOnbe8a4Tj96(<-g5lUnxQFyxABk^hqq*(o5^U`m{-!~YgK=GeXOSoXK#5_&Q zMgCgX<~=7nQ*_=^(V2%wrbx21X2^QK;=kqCJ)Ir2{Ua9>9%1Q^9JZwJO@26iLMl0* z$5*z1iQ_)0H?Rk%?yLH^;V?TVz_Y4zFNI^n0Cjz~gfnZd2OjMU=!x)t!)QdGaPqji zk-$eYBIj)t!?0k<5(z!NWgGbSsV7wBx{>Us3~K2%IhZ6OsOz&7*vS)C zsqG9_j!aqx)6kQ|x=}FDY}gFX&}qbVsAOnkr;)Oc?R5$<(K?J#HcVZlA(O=eSg}ty zP|9MOoOg>3)w~?Mx~yJR^Z+gzSb(O83scxDQ;$pyTxi7VmJ~5wG2Bj6^bqHbSOI{H zflz$LDzd_j1zJKpeu548>ugDakrE9lqo*jQOR-{hmV;wR7j_v2M~m6mQ0Db*D-JeX zZinxq&h^)^ay<5$HuUVmA zlxZ*hIb~Bo-91*KDvIBB{wC0r4pof(0mN@3oKlwYjF~A~N5@KKhM}y1;#I3$9u7?Dw+o-17P6cER0d>rqkg0VYOf{Bl4M-h@O*kHAprKgkD}g{R;b4!UyI~H!3GB zTQJdLF;;MT*kvjXoOknE#>%i~7Jz@?(kvKt8HT0oYeq_G5fs@pTm*h)cc0|)KY`(X zHSH~`H)&K606g|g`M{KNkN9r5`-C-&W^?A@%E~S&W;VxEKc##Jq|^lQ4Y;HnTpmb8 z)Hj%X5ty51N&xwdhw2TTNAZ}wi<>ypRGgvvByd2ZSsO0Q1Q#1juAm>5)ge+A3V|05 zaWJmi$ib>fU&WJLwKBaIO~)=fmR1yhrENbb8fGX^kMF9vc+_!bA>i$x=i&WT?q}2f E3rX<4X#fBK diff --git a/project/materials/icons.png b/project/materials/icons.png index d7494bb4e7663eaced77b6d036a06d38374e4388..5164f041ddcc6f9c6e90515bd104b6ce69d5aec7 100644 GIT binary patch literal 8634 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%0A+7A=u^v!Xg{s;p_Gmx2C` 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 ln07hZqrZA~#+wt`!L~{ZO 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 literal 42983 zcma&NbyQT}7dUz+fT3aNkS^&GkQ@+c2?a!2kQ8x1=^8+g?hXm*Mp{4yMClTchLMnN z>3Z||zTaDKt@qbkYu1``?mg$+efHVC_X*e4RwX8&CjbC|SY1u|DfXWQ0PxT-Tx=^h z-QxVezPhrazGv1>yN@sB_^lf=WN=W&H!p_;$59uzTiJ5s~0sK1ncRc>uEd05irXn3+)yoM*vb{j@W)nqxW;%lGZP)Q6fT%DUBYAb_^_>rSsG&B};QP_g! z2gdS(#4w1UjJ$7)LqQNbR(Udf#<2XrhzQ>AhbW0>Z#FA~K62&)JrvBs5NEaA{CwWM zbJU9iGO+Q1(F(*69XRsL7g6n94%gfahVdjsk=l1A9tPI2=H#5CGalHu{J^tv2tu!m z$Xl+)#RzqPE z0aFSJyc6Vd?7}Y0@$6SO*jdeTT!Y3Tu<|Ef1?nT&XiyKFxrTtm_tP@Od(tG?NP}4! z5&y~;LAV#1dmF<3fEP-6pw^)pjaGQ;YdL8vDdt-H$Nx3w@Bg8GQ*lJY7v0PH82o=w zk9gkz2_ux{2g#AMhto*iS67c<`@ER+Z5RJjz3iXss1-=n6TaKd6^M7TDj09r)i-zS z39@?jXr>!43ay%qqC>JM4(VF#+ja)(#gHmP@bc{uOSV*Fw*L_sl0{2QA7%HoYyK^Q zpBjlq{I{4Iq0<9-OB~q`C~Dc1bCdxRb4-an+QqW&rn zGAQdGjxKK{f#$J&J@$hU24?KnyZ*UVC96FV|NpzEi+Qy!0j~k(-=zX}KRkZd+OMnH z*y{W4J`YAD-#r_aQ}{4gLRNA$XQ8AnzsmF@LS!)gM?vt^*B_3+F$d9e0ptjqOA zkK*P^W1yOw{M!7nh}+)_Rt$bqAkvMAm{BbkH=_E6ckA{vmF#IennDSovuw1|Q>5`p z7fgUJ=2n&ZVH%YzJ*7DvX}lei6mNKA*h!4P(VoJllKzvBNeNM^`naBV68_>a+l`+b zgGke>1vAE|<)edP8=B18N#eD%rpn+5YGTNA7LZUjM&It^XV#YvR5qH8R2MzM@fHHTel`3Sg1{R zmKFqivqkU#ws^ei7hP%-mp}6J>m6Gbre~}P9gOqDf>(fJ$Y>mScEiGE3{SCAwk3Kdw~r@zS(%(R`z4;M z9!{dAUOcI!r6>C6iT!O?_*g^Q_xA+&ew!w3`ya0#C#2ETZDyvYL^ba7Ak9Om_pf-6 zrjBY{whW^tt<+g}o``m?tQ_(Qj+083sx{wBX#;e%?~y-%{?r-(xm^Llq-d9EC~KV{ zm%lzH>hL-WzxkW0q%I>wSoSR~S~#I$zvW62KLh#wi zhA((Hk`!=!^^F7LHKGyqeo9IvfneK-O=aooV?wGr{L%CH_m#1k&|bG48F8)S68N4`i9Y@V?fcEuz+Mg*|O;Nq9=^ zLJ_9FJ_~0Egy5G2*}E~3{72TNf;98a9HkC@yLa*E>K7lrJrCX zWdtc1zG=MYe@p-xB#W}c+pme7t8^l#b?`Z~hu2cUf&lYi?t@N=xUhTk?B8DIp^h^p z`tZsP6;YPmBgg1aVm+~CFZrUfu*-x<U|zn8gLw8EClogW6a zbk9vl5{l|J4j417+Vr(%Mc8yq(~Brh1`j-0XMUDd6X%hC6}toiqVDnKympiqu*ej_ zCFm@}OMNB|7kQ#(xVqajEpvytd%(3}{Os6)lIc2nv(1VXUDf>8yrOq5_HoBK1bIvv ztTz9zPT@sAf0gd;yf$gdkek)gd=HD~*NNl(*c%#O3ZcAyWhRjkVwu*jKyPm9XF{8c zYyee7!`v-NNE)>MSz#h95^JX@kY@M0m}A68EJ9zWD8Ql&`9`h&Ud5hyJRCb&Ztvw| ze0@LmgVu-)=>0|cca6JD;?Ec3Ea08^kp9PPxhBZYh#sTK; z2fvT&oj;fXf_NytDuf)W1(4PY_b#Wq`03Q`a#yz9TN*W5HPs( zg#n9Dtr=x;Ft60nkZ03IUeRV{GH? zX5#pI_kgyR6Pn(Ufk)=@)r}sVON;B&0${+@WvKn~>I5h3y%|*@-LHtsx69NMcpwij zF2-wPhd_pV!nmVhctg|c0{M5qtx_%d=lFdL;<;3;-Pegw=zqxC-#0z=Sj#J~)7)KZ zz+7!FiDot}($K;Qk3PtJJsQQy9eC^1i9xAKk@X$XiED4r#NA8IAK_a)ewmX-2AI|^ z)11>xl*naLGj2rKdK%-i>5=AYagn=rUX>_;* zjh)rHNcZqU(~_f~D5M0F2lEp$*C#sK+di=7{oh33pp{vG6x?)jqBPhq(PkHC^T(&d z_vy{O7_1pM@RmRDT{A;s(L=zQtj6w#va-(4r&QveZ3hJAS{a4_a%yl~<1C zWpQpQXtSx5(PshWHYu=w|K786+wsfqFg_g#VgJkt1#0Z_CdXj_?LSb<44tF&I8?jg z{j$C$_fIM)E4a#Hl&8$_}D0d_I;&z}!MDU%@(&kiA7 z*T+dKRXPm0%EVM%G%-2=sHf%GD>v}DhCA-?KN4V5^!~nOs0N}oo`u*96PAO}9yXe6 z_V)fNG8}M=MTX!I?r=eIiNlh@gM3FdR!W+{HOUmqjT&3a3`tyOcbvHiDFr$f{YNh3 z(>Fg8R~h$yBJv<{;)^kf_eK!64*?XZ%*VJyF={!v1=bIt)~p9R3?>e^mq;5$T;t5v zU^J*V8;<&|W5Y(XR@_HJR6j0i6_2QHN|BdRiSwqPco&mSQZLa|(m}OUO*W>1I~4>1 zW2S~Rqk~x;i12s(SJb~AWyyw3eB>(v8owQ)s&#galI|*p1bWrfNw-k-`J9FS$jR|} ztmOej*^_%0y`^6O3ufa?6JcRdSdW$}jP5b6GRybB3QTm+W<-D`hXl^NPX$geKZDh} z%lXgMM@}+yx#qyOUv6ksYdDwKk=D~oz-u=49+j?ZPCVmq1;(VYk(-KQ!nmvWkUe7j==x{oaB=QnjB-7M^ z3mBPxrG;22U+c10_~t$3d>3%Rf7wjqxsQM#b3u*QrRV)orcr#os>9!6kt;SKtnAFd zfrQWGQim&Zj2il%C+6eb;Uj6?0L1P^{VNUIEQo3zgigW>Ljc5V;+#)vUr3qWn6Tw0 zTik6;>0dbuTn=X`4d}fP!%}YG%KUvJ&!GoM5|5SjIZ{=e*mRWP?ZMqmVB3&6V~GMP z<@5d@(zB%^>1=xpernF$&U(RMeu9qCDk(g>OpX@R1lq|lC z2;&5gp&K}WG&ZXY^yjq!`>{tO>?a*vsiyJeFSJMZr+j>Bj_=&NruGS0ts)Qw36d6y zM#u&Cld~$xs?esH$h_b9tPU3Yd!56xmTY?X%3vYWGu!E_+x0_D;fV}uH89}*d#~Ga zpCwX_C1IB8!0fGQbnMoup6={9iBuK|f3vfUd%Md6e}jdf?K%j@t;8svgWA)84!sjx zLK)r|!*zo5C=WVYVY*jW>b*MR#LA>qw8ej(i5cvYqceY-1=H>0QZ{FMBOeeNK3oA$ zRS)$NfbSLrngC&1^7J>3fUcMdu!H)(i7wkd1ptCTvXhRnB|>^Gs_QQ;fvWzB&^`(#J27url}uiO0;0_- z&HtUt_JZ7bEM8TQN2_+4;LT_se%aWKx9NHG7+WC3pSV89xo67xoIWGw!Jk(1^zQv* zu8$n2{yRTZ-2$K9dCy;*cb3KmCSDPD2AnrNuU)<548>HRokC$eqFf$CCAy8j_a#E$ zFFZ3ykFph{PHHujEN~QjcMbRjO`<9W`Axky3sIzL;tuftRMl+$M<#zJ3) zT?SaSUBivnEg01cQ=+s&BAC|K*Z%%#y=!{T`2~BJ_SdF^r*ml1yHnn(R+n0WDoPmO zcs6OJ?eUhZSp&hay+Y`f^^8UJ!L0Et04OD*gv@yNIdfl~FZ8DZGDx{=Om%w%!`<3X z7G%izANG&LouCeNIpc3pK*>5? zCaqyraNTYKa=G+bzXo0@fQW=>`5^u~CNnk!8^j^wBL_+b`X(PUz!LmDlwY`qztW|VornRy*RL9QgB~j%JaFo+V4>C{7x+S%GTC4VZqt% zczwiVlWqO-<;xisR$g9Stm6~BD8!Alj0@TuE1KIlRT;cH zoqId-6pzCd|Dn@+pNULfK0cr1r`v%&$#T@a;k42VXFy!gFS@>14KMt-12s2_vq7LaS1-pm^%`7oG+RBli@Sn)CSw@l7;258?CoB24Wz9ZH;X1V z2$Fqhfb#U`GOR!bIp~J>TI{3$4rRt$oI(-ktw|de;AEdXrP*})k30KP1Ag)RndMqU zD}YqIfF4;Nc+0UQ94D2dl2W(=*Vl?!kA?!Nd0=3)h%l1JEg1|fmU9aWt7SZXN(861 zMoQhI-&J=s?{9VJ=ad0tmrsR@CKFRcAhbATAFc^)wziX31Lr8eW=g&_e2`mU7ggFL zTI7_w6C<;i_OIjas-qI+M5xgoy4c;hyGUMg_vLB&J+fDx*?R_~f64V}*>>hzC>YA1 zxc@s!4xfO4fa+iKn4A%Y_K9f@@k`L2;+wU%#1MZg(VX89&)^JP&Y?_KkSfrD|YT}hun6$ z-KWh&b*b=m!eD*8m{OHO`h;1nwFJlgu}BtioD14Qj5}adV;Ok!-@vQOsg6&F>k4;X zh#)l}t&vv>%)u2blO@~61kzT;OzM10#8ZbBKO=$n;o3u36v?0lgecRqh=mZhWCdP< zB-(M6G4PY{FiXhyWzpxOKAWP?UOfA9R}-iPB_Cs-e3E58PL99vcryxnlo>dr9Jom- zDP<``97=ibxS$=iD%*HKE|%&ZY+d23t*vdj@_hUbLUa)=g4hyFSh*!9mAFY~;tw4M znr}|$>e!+Qu>|*#UH+SpkdV$~V;mwHS|QC6$V<-@&jCpJo*y9n{QT1J&b}y5AZ%>b zY665oG2*{N0o-{Btj4=N0jb39>1L@fR+=%L)&=gEgP7aODr9x6a{CiIURB3M#B5J5B z&Huw(B^uSiyINS!KWf4&F*7l-%3uJ-4$l8omCU84jN&M_oT@TQ!8bA=JpG&bwoH>3 zpAii(tJRX@5(+*1q0GXP5m;PuI&=6o=%x89Ek!a!8MtDk(V7dPRR?(#@uY8kNB-+w z{D8W`FD*4J&&M6?mwfDf)3lJ{GiByMr&6}pc04?~{$Bl}EppAa&Y_Smzp#3Cr!lG6 zq1*uVeaL&_{cVwbirR#-H^#oTn&*+1%~$GZweHAF!>?+jjBg~F{G^-a?!_xl^Xj5c z=rR^a)LKT?TwhWk{;1J@nh5$h7tH%B1uxZlBA-%0P0>60~^&d9I6Vt|3k|bm~E0tv~-_2nWOWnhfiW-?x~u z#_$*IJ+qLmD}0bp0=4>^0nE9z-ckR0~k z%{(rtfP+);P+k5={aZ8mnFwC8Z$j*WUY@tp`p#z>0p=&+;SG)d%1lQ;7}X#A7)QO_ zqzYFgOo6LHW8;-|yF4?KUW~zsUeY%v(TKA;ZhkI&FgmC7VMqO}m3ZCSD|DFXjv4Y8Y9=Q$NU0yp2FT_5R$`bQobnykT)1_PAbx zY!cQ`I2B}4Nq{8{XoVU!)VCI#Zp-;gEHsQB_WaVQyW}5&h`#1h{k|euSCA?PS?NDR znlH-m0s64U6lI}!4bl&_fylxpN6#@di15)DdP`Fwwg9Y#qAjC z)DKgA7s_~CBBh6Yv;wJB>sp3{XR)esASG;jMI2b-#a3%*hJO>y{F-nQx9v??h8R9J zxx}Vaz$k1Y#_9}WNHnrTCRjkQTbm3(bKUCOLyWU*74UQ3zR6L4Uu3N zMaAzNOtrS^n3&^;(Afc{Q;D(brRS8lpe`ygU|0s{8oywBU8c z54bkxt8o+;?>q2Md zt!0ur?eor1Vo^`L_$3O}6mKw9f1C5;deicKLkd4m1}Bq3=euzSAk zA47ikSCEDld;SwXvsIP7BN3Sshkp)^t6LlNEB)Jjl~OlZ_w#}pLEX$J}y_r4umdKevz0I!o2!8X?M z#{9Xn5FELl+(Je8C7DZ(S=ys2rT)yA&<9FI_&jvSva!i+d@!|bY^cdLJdOT`{S{<) zv49|K@#_BiP*j4J!+%MpNPV`?4sA268JoPiY8%nRCI1Y6eiYdqE=Fz1FqdNxL@{a> z_xfGCjaCAB%f05|c>L(uj!u-9cyrmbu zYO_u^k370esD?2Y<0ZdpO`yWO5Po$GG9Ej{GnQmu?^aN4fdo`<`B z0Ub>d(dnM-_Sexc^Z5DR_iJ(DR|XQED5*QhYcStk&V-XD$?0i7|9XUEQlJ2kYx#!& z9;HyMRI6S7+otrG;4XqIJ{!l zg@+&IlGedN3ZR{c06gyf?&~kUNzUImYYzi|=p>C}dkycV)Rf6?&Qu1Lp8BG~ zFoy)w&lW;13cslM#tC;&PMb~QCxLw2KXqMyaRIK^;fe@ND-Q$izo~21_wLfXcXfs> zK#aO3li_?f7~3C8d~w?}@E~-~&wyasz(7RQW`}By8rZb=p3X|gq%}Bkq3n(VqYNGH zJ{$cEx6GPfq@(qXo6u^&#H~J!q~wva*1Dke^o6P=B$C10!vpW9YviTR0rrI1WW)e! zs_+SqJ&}te0ot9;4e-wm>>$nzBB+HnnFYphX&%*K@ z9-hjVL_H^^JwnAicI5w43m`=|AL{@?*CJBz%fY}G8Yt3c({rb4>%-I>rMOOon@3&& zKeLYqG>bG{S4AHz@e`puZ6;thcr5#^*3mgGwY+jqIh>C)4wdl57dx$cuS`1*KgZIM zvd(jSNPOvmBA4!luHP;8@igtDzU8*u{GCM?0!t#9Cs;l+=o~f>5^3l*MSg-){6R_u z4aXA~p`TCyt37!DZFgK!CH}x^2UEX*0^q2+SFNZa}9!TM+fh?p(VnU906tU6`Zk2{z zo6VTU$|-`CcPix6=8*jxf9jYj7D$qg$2QR zaAwae=rUexBEpJ81ss0A-2pt?_~x%i7dGM(fj18a;izq2)MFw@OJ=qi?twLa{s-vo zZjqZJ;(?E!k-Jwx-zPD1Py~gJvu8)4exlKmQ~7B;0Q~HBC(`T!oM}ils^(>sh3V#G19#KKiqGWa&y(Ed%B-`SMk@bbhjTk zdD*eY7I0Psd$*q9sf$TX3w@=+JRN@WSth0ZIb!HCr0_9dS^A$nB8(eGj6EwrSD%uA zshq>oTsL-fOR5~YoX8Q#0UCgYbzNL}M>$$pLY=NJL|$w6&4;@CAE+(K@E!RSBk12{ zKb?RYA7GsgB2}(5wfFEMCp5oj{p%F`wCb}_anU~;p>%HUrWO{lZ9|!XPcm65j6-CH z8mgeaolDLdo3Hz^(TZ30ts!b&ZWSi09%1+Go-Xe4M z>iP;b0SbEYGL3$!TV~}HD|q~UTazgXnXW&I>T`iB4+oKF-s9M64}dIMtzDBVVRX1R zOie1>#vZE=j1sUa8=$<&qEr8$0vB4G7glFc$7*pHci%ZG9Sg6o^D@NQgC-&ZMa&Rn z*DCnjJgs$5bK)Fz%T8~&43S+5v3DmsUjM)b;$wq(g-O(E|HRY6R&6Xe1g~GzF*Cy! z3%S3hVQUn|gTNIxvTG&Xc=_adJO9}X{R&kaD-clb#`>U|sC--$sqf+6P<606xDTt^ zu>cL4)@fnhQ81^;$kIT;<;1`L-cH=;^(iNo90s<0zvbZEUcGDB&R^fsY3;bh&6+$% zY5Wp;7kL|Ta}wXWy#dwu-B&2V>lNPlFw#mJf)5aI7cE2HMOyh(+XvjtVqs&cXh>Ro z@5_=wO=f7Z}^$A+c)cv))K4$pl%=l&^0wB3a@K45hHsvyFBgd_O5)!-|)ipK#<~6zt{T<;8^kY|rqb`1MHn*(~V1VntQyn0{_v~t^ zr`4@NF|?S80um9ac`&zhOOns=XBTg4`fb1o0}?p>J!!Sr1|Q6P4u@8~@$YXDN~N?m zR~I?G4D`P$U&3HVra>`h9XA3R8h>&8yjiAU4{^g1zCM%@Nxw;TD>N)qUAnF}4t(lL z&2yi9#z=kTLGY}e*{-?o+3kLLM+3EqsVThqzDDbF@$XWCJhA(WcYYHN(n5&Ofmph* z{-qN4G@@LBIx!Y(R!wF1xj;bh8zVad$Co;^mtQR1j=C~=Lxay@JM%m#1K1$%c_p3R z-XB`a;1ByZ82^did&CY^ict4EPX(XiMiMvd$n5<)#ErHJ|2Ol)1UP8vrjzt=_*1(l z_HC;no($WgcEM>~tslo=lKa%ez>(!+Xk6EfZmZ8*m=sx&%wogWm@yTv{f9qrE5bO) zx3(NXz?I`R0K8>DLCB>){|7Pqch`5N<>g{H^u5V}E3fS2St7_)`^j7DW^?we_a}ZU zCUloTDF;$Hl(0xpO9=CD+^*4?iZx=(rK$@pDOs#gzL(H`gSdD62Dp#=0*jpA+&t{B z^uUfwrQa8YPn^R6V8_g?r#YI1pp}&?VVl?(1*0r#=nz3}(msQ$odW4AMz>lhfkaeP8_GK_foBLX-{$O849>5M# z%mg8Ufx*EZm-sPo&|^=${f_j~caJ^>llt!W2X*V>FqGEU6AdzxP+l_|gMrTN&V&b~ zQU3q;0+)Y@a7Dl{rPu+8b%RyhLv_R>2P7O*z1P7=Sn2U7=WjqgJlzQ*H z+Aann;HpQBxKgpw+AZN@adm_#qY`rG1=NMCekeIoI33HJC8#E+W9?R z0O7D{&zTi?J8;Rwjeyq8DB&@QVLm?6;s$f z+mOjAWmpE<9&PixS9x(Ch{7>xFR!Nz>S0Kd;3>XG#n88Aod26nF=$+5yypFw@&m26 z>}efYg3syZ_wFgm*~Z~=s5g42mQ%85R}z$CW_@UB5sao)Phm_tYVU|I-G+4hyP?%U z=gQ;K*R^+I3AGpAg&8pD^B4DJnS`L#sPZYO$4qE)OZ#$1-zE}qiZs=t2a+7)dZMD4 zbYPxFU<8`;m}F5D#1=Gl7txGKzWexY^QFvZ&e#6kNh6Wo?Tg61AOzLRs0pK7j%a1Z z`>H#{)mMk~T%IAh&E`^i+gY%n9>N3;m^oQ_tut>7L}82k}a4quMMPKz0J8`e#X<2 z!0{&|r{X`u!AiY?VNhV?u{%uYc6;Lo9&+H_hht}0z)c%NK1Ea{in@33AqD&y6~Dzd z)0>utZ`{b;UJHTeicZ>(RKY-_^MWHCW0elB3&oOO}2f4?nNm|H>lGW5cX-NVnZV-G;6)uIOwCbfwiU4 zb5BSDcHrvZ2%&Z{d}6iuj9F2o1g9tRu76^MJs??35|~;nhs*BcUNAv@dMizuLgyJC z=(f0R{|-ZkasW<0hy%Nn<5-BDD)$xRVy9>|#Sd!ohrZ_$>?q>D^@`D5<<2cXPV2V! z&D|Dx#HbfWO=hxraz>jhpM=JK1G!oq%CSsNHE-EwxnudBgyZ+6q?i%@{vV>*cUqX+ zzqG@dq5DzdlHGFWVVHjQvrzxc8s5;Vhg@KhFoQSg+iP9#^~pP*#KaAG)Y;y9M)^51 z8}$imwRr%ENdeNePQs+^M@08u;{mwp31|_pC4}~mokgqPzh%gOFCH?6z-04}g?w!o z(Xh79qdLeW7|$|>5aMz54$It%BI0P;GRzBJ0kZ-xN*W^t3{}QqUG;**r9UR``KP=l zACrj=GdXVi-SUy2|DZBIhr>GAJwa@D6ygk4eki7uOAwd^q~%pcc{}4Gu3p6)HiNs2 zW605s`!9y0&2B}!Y@Mv?vBJOpIw%}u3nAOO|Ip70&jN-w^61tgEa%(5;!y%F@>x5y za{gTw$@Q9DxW^#sd*AoY5!Cn2mAus8%<}%fSU^~3zPlK0wb5P`G7100kjowrJmEe5 zXzrE57()jHUy7T#s00<`-?=4b?I~E?QXFb?d#b)1&F8l2B;nJ=xphNmF9t^Mb(~L; zCUy1Y5URL_0vL?l`8duePH8W0*&w{OI^Eq0&mN+KHVPD0Owa?m##=#{Hy;}NaLZ6G zn0vBiQ<)I>Xayr{|&YhDdK6W=1paTkqvpU*2MKC=nYe$ zAdPI-SZ=-ILpdzYR$T=Qw~4wj$k5*{bb3VN+YW{nmM$$Cf86(pwnW^v@l>#=K(_QF z4od%31mP`w2ZBfipQmeSOqmA5uCM>T6|EkH#v&=JesPx7{;cx{ph+!Np*`>Porfj; z*u8x*d8s*E9}_h3|nx|95z1yK(t^aDW$40)n z%dqF{WK~o%*Wj2R#u;_TyLK-gbbPxd{!5iHkvhv3?*8At2*NqA5*rIZuXXo_YGz&i zw}w~=L)w1L|1j$)pL&rTyL)LRE)w(3$eaaAzYk8{%7>$TBmI#Rj3HZQ{e-Rsed;eN zY~4Mb{mc)J>W&<7+~UZkQaJDxIxd#5#&>}cd;qs@C1mt*mGO%&gR^YZulH%%bQR;} z`Mw|f>Ib=ykAl-5+NoHTfm3a#i*9NnSYRpTEL<~(N;vApr+7Cn4BFX5bhNE+x^%i= z92yBw`FG&FeVUDmhl{pU0t&72wTpQ>o_Rr5oG-Z)Y?F+95|7kH*0?^u*GLrCC?3(w z!O9rVPalsSNMb|Cwz(z0!U~Rd#ok!t;!OShKjOvWixcs)nB>7|bi`3(81aJS)yo-YMkd` z+kLNzwKWkYoUHV^&ZD-J#HKA(QyV=$+8o zSF@^h;=6FU?Cw9;xv1NksrcLTFC4UTj_R7{$#y3z)1eWR&n*zU$E=&C8cAwD{)39y zsIG|rM6(Gj>OJ^+EH|gCalUNbk#m!-3sHapBYYghmF!kp8KiI1h8|oh*l5Awdo67X} zLw2L;C3(^xXBK^IWhzw&pJv!H2~965aZ|GW8Do~4h^%c$PCBE z3e^SJ6DB0mQrwHyS7JZPaA_AjN=~jfZ{=mOd_7fVv!gm9Z+LxJ`xz{B-n?;N$Dy=oOMC&8NqnIs3i2<1_DO!YRH}Q1g@3 zzD})|uW4ej9r-jg{c&xr)Go})tEJ^szBL;neB}K0?JQD7Wy>vrBe1qKYsej6#PG|D z67z<<6OW##3Q)=hKKt@o;iEO)Zq)g2jSL|y-dOiVa%-rO+j z4E7%tdbqiKs~6w;GNa7T|Dp2zVq4Irgo!gn&%+Vc{v8{qu3p`Ir@44z}NTT0<|L{!-^TPJSmdnkZ$`9PM+-`&|9EjEp=yQ!P5 z=3Y85g#GKSM&B=6ph3OUgIDf97_KrD0m4CWH*ohxs2@Yew6cx zY2(Wr-RnIz4d#LArOsN0K#X9j2rd^neLFY|W=wtTJI!h zaqxr%vCzQIWklTdgQkaX*BO@5L`Q5H9=Ts}GGbOOI2S)6EV6Ni9GwA z1S6N2u6a?Cl6vtvjIT2AI^!jD-puHdW5!9wkFJqarATYT^6i3)s`n?Jzo!L-LmA!E zKZuOlS~e@I5BmqSr2oLAW;sw0!WVxZj(5J+sNf`pDNz_w3wnppmZzZnKK>flIT|l+ znjM>1os)S(Pfg~fGvj1^92nePP>oZjbYlsnwYH~}MM|INdIh`k!|4P;DGQCz@D&nK zJtyDPl>(t~t2yq{Qh8iddxK@*oBoN?bSq=y!0Z)409%$_dZ|Eckn8ZY&_>WxPURS{ zl09*x0@>_O@^dRQT%Jx+mOsqF!A}kcXKU`|&iA7uN@G+vFF6-)O zezHQjH8-K822qNkAUt?trCF^L7db(;7%MCqKw*UnJqazyni;OguKtvw$4D&PO2*iD zm~pW0@LvCb<}+Ec2Y?kr&q?_A@4MIpw+P-&qO!{wP{SNW42sxJ77q46g{`K}NzG6b zWV^Z@wzX}gKvcZLPjf(vi6}pLJz0(X>D%8JmV3;!WTXvEVw99bWr^d3$;oVhgNav5 zQbwYfY+^}k@``;1Pf*>AD9H4l{T!%VqKuvm%u)LC!wSi|`mew<&QcGF9=ES}c)K*8 zq{iy(rvzJCc4n#Ita;d_*k6MzjtN<0+uxOPl;AcmPwL zy4h>(!8=u`A{pjT=v7CgM;cj@tCaVJgkm!~k^!6(P#i~}YE(43gPr+U zhQ(@7@>A`%c1B4ifCNOB?0Ui(1-Q~Ou;#N0|NiXxNRe#S1;uevPd-xx%(@OMyev{JNb*NpuKUq^QNvZIVZsnm~BqwNq3%JZT=fSZ4_CK z@55}F7vwG14 zJC-Gjn_ zW_5c@Ls1cz&*{$0mIS@*$h+3qonf7oUtB|G!jktG1udfl=TEB#3@IQfa>u?yjdRXs zFr?At&btS5&aG~F(5}jnH*-LKEWN_NMj0V@CQJ66_apJ2{ydJPcDM&OX>}JcX(nTw z>$nq2mm7C&&RS&5EFQ9cH;g1{JZp&Lrq?boH}ZX{5+Ptip!)uPAm7FD?tr1=%6~8M(K6lZ-6mduiO(p-D` zBBokZdU9;Y>A9)l`?2@_DiP}|KM4u!4ofR@8mU)v5_6=nW@HwnMmiCL;HwW_$xQ+# zg_AkIz_iv|BIKRhC;5MV^yj~5;(s%co#su14FUdFav>H11ddLfdg}Z1O$UqXKbCM7E_}={`Y+Cy2`29PTW1kJP zC24v$yzdZnHteYXyruTv%(^6b^P}#PV2FCR%Vu0$SDJWl{KSlVeSBT<^o-Z5IvpSX zi!Ud@N1GA3J5f+OV_H&rayF^j!zfglqsOTEoF<>St|FcFbfYcZYIJRRgKdC3s*kZ* z8(|d}XLeEDv`D1Ze9}_+x_Bt-`u^2HyX0^A8?@hcR}WrpSw(!^2o}s{R}$+A~*gBj$Ybn3DsSawwe;DB1TW z#n7?zb~oOLcmAVu!1E0N>mQ%!(tMT5_Bfy>8^ZzmyB zcWu5iCzt0acktHYX23lomKVDRIvqF{3|vRB^t?d>f}2(S`zOQMGKVL2=AOhKLRX%= zSvXw;S(Hz_mo2pXJ3-o6yKQq461s|`2yiH^#ir(8|5*pI<~p=(^fIPvPZ2ExRW$D|!eG*gOi}#)Kzocznjajur(_u4n)J5&f*}tsZs87ernd1^XqK6#pGAm)kLJOB& zendN_Y^KnJ9oH!a>=CZsZ=Ko>A?D|iufdY|>)xN?%J0L}cX;9_y2D<}za94471s); zkmgc*05r$M%s_$a>p#gZ?Hjwtol}2;_hA>){_0(yh8wF$(NZ~JTM2nIy5L!5vAok8 zM>+m@eNx-kNof;$$EHty*NXLY(@$95_&q1#JVQKSyySD$p5#DLeA3iV zKO@xV$D{ZE)B>1!I(QuW45iahXFul_`2s<{2qz``99ln-bau?OdT-jI-6F$4wA}4( z>9klnRVubYze)Ige>!q|s=D~ymyw4vV`GZr)AcXkTVnEqB4^LOHF~6VM7=#=x-7_1 z*NP_X1;$n&&^`P0@WkR%gWX4mLCZe_;{yX9Kj+`tqTj)KM_&hL>g>dTJm$Rkj~aw6 zG5GgPpWlS5Kb{&INn*(!K>sxqw786G+)PgCGq3xq;UAi7dUg4m<~A~LQgY|@#y3m? zp?t-xVY2jk=)-Kf940?RvceO>epV`A^#9ZT>6)vqbwCnJIy5Dv~li(*g4~a}E zzj;sLxyL9YDE>;*g8OS-U(3z9ktwnjX}S_~tMi%_qn^?>7q2IiLeGn7%uL>Efu5tN zM55yO&A#eyZEUdQX&xlcKm8Ra`Cvo_ylJfmCk?7SLkq)o+dD>TT-Z<$=&3y3UT^n( zijax;iNy;Tyn&(LWsw)_uDpg`}Ve^qj3^;d-pjKt$~@!^#mzqpHKd}hO3dTdNs zCYQv*W19SC-7hx+KSLe}O{?)Sy{7X zCj0EMXXcnvw(xkKuP-4?^@WXC{mdA@2m0Jtt0or_-o1OoT`fPyvVvT-v>uFYSvNe! zS$Q5nk*`Cb_O_Kf>xbywfNHN7x54AFV^~O98c7nHw|pPchA4?X5xAd#%gM&+;`r9U zHUU^4Q&LiFrW`hBp}U`Lt(m=@)v{iIs{h`H z#6valKvd#PDK?ta4Q{I_BSh#y&cBv~jiG&+r>NFi>#z z6zSuSg(@cgeT<}ajHLfAfww==_XiSBg0dH0`y*A(sRlAuI(C`6WgLkz*4m5jrty7Y zfu{~Xp@iMWu9?=o-vWOsdrfYfycbh#Pip3B&3;xb4Gvi@{GndR(^F2kdChQXwUoUL z`xZYE8`Zf3g0QoDe9S{w6nYpp0-v59WOZPyi6#EBG`!1*U0h=d_VmOA!kDRZ7cC5# zm|@<)OSL81P+UNclA0fJ|48daZ-HN8BAt;1=aT4VJ_Hf|y#>9|@H@%Z8`xz;j9|D! z6Qa36QN2*w%#t?m?P^l?_Y6AU39PnQdr4f@PYdRB`EsE46CKok@{;o)jpVZ-6-eJ= zr5;Haq9*3l1`P289mjTOx*<((<%PQiPn-;J+{-unAxU|sOVx@n20dFvoWh+F5)s!m ze5nTrk53Zvch~wZ6PY)UkQ{Az1T?`ISkKjaIvXZGr+iximJs6n86iGp!|?j_Ky+X7ixQLemHmv1(SL-fIlNuC9Sx<`)#b;4A$d6p!l(RSLw|>zP2Nw8 zbH8IG#tcW7fR)|UR9NeuUM5-^X1KEorW3Te+xpCjF;6C0?8hznK31MG2Yo(+c4OM7 z*D5)+zWRz=e^KSm;v1UHf9&Y)QeIt{5T_JL7 zy>V&^2_b0xS5jJW#M^|mAHn^Dg89CIAyB-Fhrv7}s82)Cc1%U9^(DXH9`gL-9oc#} zVpsyyK!WgrwQha{TJQU}9PAHR^*MN4m-J~gzrLL=7=98QU$ZA*wMQ-7dva$~YXeNE z1>YsxD?w>VaO9v8|BK@}|$hk9y zLv>lY+k6~@Q0sPKksSex_WOVy@8+LX1^4YCavh%qIlZ5dR4#m)Nc0|JMdx|8{|N3M zf~}0th#quK@okxxjs$eJ6B4`Z{d*Kv?zW*=n^QN3o}%^qkC-h_w@az8Q%p3Gp6f1q z=cUd~m8DI;M84Wz372Lu8%=M*uJ4nw%--w1{L=QYRiC193M;Q${cfJl3|j6-WMyNs zgzsJ$MXVsry75=_WX z4|5YE8lK5Lf6>@P@tKQDqqqPR$5;}392K|br?REW?$Uc_y_cWiGE&lX|$O0mx4s$ zw*6r*@?ic#`Rcp@)!lDT(pm@se)UeMy+bdkek%u)Np5taTsrQ^xM6x8<- z**#wPAS)wG^-nh4y8fSjMrrBim4ji^SVXxsH^Z4R!2SrK^`?99jXZ+m4lO7zH1tZy z^J-+uC>L!{ML_|S%B@72=6!_y`Z!X&+W+n%CjKxzr6L^f%~O|k zFx63h;nUn)-7&;C^a~aefhs8{_q$8{p-hjdZcF0j!Y2sjJ=E4x(9v;SzCAhN!FeIM`{(EYTN+v*E7iMnQS6UkeRftW z3o|{rkwg)|<*bE`u0us&>zN0TE%+n(o!h|_S1vKeDWLtG57elEJ;L$tC@zZIMo!Om zs)R>*^iXOC<$u)72#>{w!d?Ob0>tjSb=ye=0W&6gS-#op3B||xKTe}t1C^gw8OeQW z%;zd^j+}qhDR49wSH^sgFB<}j-Ecb8>geS8B5 zq6inp_n>iBcG(kH&*Ndm$8kyBcwumQf3D6vm4WAZ$R`uTW#*x@y+KmQn5^-yhh^1| zV?jES8Q%!nN_6Bz@$0?41RpqNKUz+{Ms2$3WLOE;@HXzg)k%W ze-k&YP4FlCBh`yki*zoBNf=5Q!2Fyt|L${wKR(J?XKx(6)-0oAQO;`9VcHsaX6DeU zCOd9McK0bQWp84tfzeFDbvHe$dIEmL%DbM{U`U4 z=)`UMA%gWjCk{HceBPPOo)PZ zTbv*>gMJX*KNNC4L=kCJL?6MC64XLC#|mk~2$x6aHvrMU&F-Zvpg_RQUE?PaS|p5impv)trcp_OmHzBdTcPr>z!AJtOWmK?~fXN~0T zx>I)Y=43PZ0w02^Z7&~QC#3((>jj>2-$HeUZ=Z1KEOjp(r~hxUu9Rp^t+zk|bO@9I zY7mt0jsPlo0lO_H;3+2;9PVFj^>}K1YUku%tu3J6B!b=l8C2}Z|MGiZAKl!@ou#OG~|si^n#cIV_lhw+uk-$D2N`h1bf%&gn=Q|tySLd4^{Qh zY=NR~wYkwz41c?VP%3ooEtkiV;#26l&6nwj%f$^3nMp_Hd~Oc?bNZNzgYg;lYI z6a2qMKC4NVVJq%Nx0BQDC=1UMt?|__mP?yF3!iWNMSvqi?vyft7LJ{KXLtKjVd@F7 zuJ4P_y8zD@b`lY>i`;n*Z;desr(2C6q3nA$mR<+b!q0z-haGr^xN?aOFYMBs!|six z2a<~Ngmo!r;cj#j>@P+cP6Tu^;0m%~PWzB@c$WQg@cv?ClocV~-}uOz$km4zy!|ck z7=utI9zt$<_=M8VK=kh}Tfk1V7D>;vcFmG6u_z76F@ilj;*0C>t8Z^WFYVz!OB?HQ z)v^i3C@!W*9lOCN6w0mQ*vzkIl@BX9KBuh|x(ogq!(;@^9o_yDz-SYlLg+1D&}9uH zoh{k0%{4Nd(8M~dK zWSiG0(#ayv*NLOOn{TVFn%_9Q1rd9({;YR>M(ZcsWtS*RzEYuk2s*`umHs!2!GD5{ zcaX`o0>Msz9>FyP|vupt)YG2#2i@8qOG zdr{A9t+8exT~n7ACG5#)()xpb4gYrh>%|?OVkz#V%-2^ood)g3;#fkNkFbCK3egEg zX$p&K;Pbde(FzE)3v#r!Wt^#kOIWE}um)pq@$m5w!(ESGVKB38OLzC62pJ$@E7{0g zM8)Y2FG@^2*f?Rb1RTZR*%gvWA9TxDdafj4CBglNH4m=+9|F5vOeBHPEgthY4f3|| zeWqE}2pz_ZkC_CyQ`poJ^>F~5$QQ9lM71mFeLNAp){7%*A@s+~a6OuS6gzYb$9^+- z$ZX2&dTxjuvVJjGN)tOeJM!@8NDSFM@s{O@Es(2V79+6A8?tAXB&fj zq@Bh)sSRS~yD7AoF&V3Rq*w1J0z@AmVZ2`>R=^%19;%hY7aTadTx0_&$5f7hh@m z)&l8xzxl0-sNQBnBt|WsQ3n}{ z2dH8lQzyqLGpi~f#}{Q6(yQS4(S0~$m)&KM_@TeZAAK&~sWnCE)u;7Rt4_LeNknvv zWvEJYf@dQCC2WpxmIzf1&M%3c5mjbMD!EkKex%W^iTI&`Gv|ASrhSUMIbD?)S&Y|UPuAFg^kf6sDO*VOn)W|Xvi zuq?4;9#t9ler_}KaMid*`U0oOSfz|SPDGy6CCi50V@5$9`pG{5;T$@R-YX~RIN#Bq zHf8Kvmao!MVj|gNLhYevlBYCz&S4t}*zlnVN?$0K0W1ujP{wAvBIMmx*E%m9X`-xf zLU60K$=)g54wyEn>Z2czaZo-F0Ju-1Nx@yLhN^5LxcyvlOGiGBy+qT$IKhWI-@bc8 zLiY~@zy9>6m!Hq_s^2Z?T<_sx-9<>qQR%_HLIar1_kJv{kYvfywYk6eJLW@`+W3xQk1UTA*x(=U+bWGkl4*evPU>kXml$lii8p z=V{|i1hB3n04YJzUTfluRFBDR56|>Eb-4M3Za5e-ak`Ic;?EHC)j~?(G-A!T8|`|u z(UA}GB7AL1ihiITEaLa$IOEtL*T}QVdPT?W;IGsJ$hpsl?h4kkN~j{4DgtEs2XiAD zLrc=q+IntxxB+Iu^t!pnkPfaJp%)Eshz%OU_^mk@-Kt;yl?JFboB3pXdt77(C^5n@ zC}9`UwN&#JJqw=|E4*U0kBBacnbefDyyTY^6wp~Q|96n*PjXx#-=%vOeOv(snDSV} zTBz7G2-OF|!28LbM<6;LX;GSB8&u(@SPwGv@h1<#_j@}xro-=q0DRjoc%6IktaS=g z^ai0~w-`!bVUS4@tB^izp8?r5u1N}r85{9Dst0pd|2&N3y>C*I@&ibCc4lV4hMUQ- z2KW8Wt~mFtgY)1sfKdZHrc#t_;mCBtQ^RrE2FQMw9jca73_h5RQMkVO8wru@11vcYcD^Su~RXgY-@2^DoLIGM4Jnmi#H`pq&*~IcaLQ6{*)7iyRN80`@s6oEc4Ys$U} z@9|n%8eyZNvV3j(x%ijak$TTpeVXk~Ix-#M)4C1%y} zUsl%k;&57NoBFIQ3L^XZ>TS5FFRwoH?`{zx`zy}gQV62yr79o2AmaY$y26i(OA4q^ zBsnMaX<1j4yo0sV_7a{FrNyp%G#VTs;n=wLmVQ9M?&(w}rxkVc5~h0S*aZUsnIOYj@b&3 zqg_&|10zEB1p@+gJ-1uaQ@v$fUS-zF9?O??l{|S{7^6;{WX=Mr#a?BUFfKl1u_c~mr*uXFmRVIddtnR-l_=ridn=V+`E(BD3 z=fZ%1r9b%&fJ0WF5k+2=rY1c~qU%F#RojF5=H=)>4^c|*ezWFvbK7Iq4YoWU z>|YIYPCC=ok8;iRB&!E%<$juSsp4wNF_7F=DDSWqu25bn2^{Yo{ zTLS?#;LGw|DS@Xh($y;%J+wA;&3*52@%waXQ8-=<_xqu4@~opMDoQrZ!KhFE{h^}G zuu^-V?P+#*Q6-aMzy!U#KjBN{tbQitKrq%s_rHb*A%I`8;dIG2Uxv!J$3%uCsinf~ zZ{|_s6tyT4QiZQjk!THn!BF%!{VZ&QHpKzBJ8^dTW{kNkf9YdSwwj(o*Lvj zg-8NZLR0y>Ssk)cce^$WZlZnDeM&SU6n@y_JNT)bnMp1!goO<|D*7X7?ZaK{YRgMe1~!<;)7K@pPgyT4QG=T5YAX{RS=0)wfS~XMJAB zWBCNKuKHdl_OjQbLAf=IMuJ?5it8$lRGaoU_0^A>%}hn5PWKRkhjwjr26;;%@{qk; zS&ge{6J~Sowdck7FVn|ymm&s~le~(`o94*BkImQ%-9ml)Zr(u@W@o->D%o8*w5ZZb z-_+K=IM&ouEVi|RpYC39v$VK-89fwedWltpnZZBTEz)A~{CId;&zsJ~196#Z3rD9m zNRyJcOB;DHpav4WGHylTD17<6g*(73QjD1nn=LOXVb0J&xtYe4SYBYZ!pWRI?fBvg zEL)N&+~4L>2j}J*IGSInw~z>*_6H@YXeO{ps(yo0B}~%`g;ozxxq8`+OeF}-p2$uK zDb}1Clk@Hxw-4>6mjHLD^& zMWT%v4K6J$jm*^2@DCFk=$wVZ`T49hU&p*_A6_;e{%`~}6xCyw?R1!cD__e!y*A60 zM@P*%Cjs5HCcG!3WG(R#!S7e9B(zo_7?S+rm3O;XuF7cx6o+dMlQJ6t(=>Tahll<# z@jq1(Lp9a*Ft5nTv#3Skh>5^Y8e?E{kV#10%RXEUae8{42^VZ12i+34$z#CwZD!MH z<7Wwacx>q6g8G69cox>)TeZ*tRj=LL8z=6S+zyg6J1hN{3IiUt4t$zgKaeC@L}MbK zfaq6HAjQ0)tm3A!h6at-<5c=PRVt>jS(M>Y^i2N*yzokclu}?AS{efIB^p_T_()k0o=1dUU#V=JA=8ncHy(Zi1>cZc7iIbv;j>$6rL7_2Z&g z>IL$yR%d&aDxT-*BqU@%_~wUm|$lt06NzGeZ>-Q;?nAEuDAP z=3OFEZDRh^YE6yG9)#$AcNz{$M!w9|b}L-mN&!6TdpzRf>(lXRLY3W>uskz&P)Eo4 zL^D5w$>T+O8WuCwu-d>0T|51jwH>qHc-7urNvpNj$&ldgmOR-i*br4bu`6alBl{>d zB+~_kB=XHOQ_^>VCMBg%RJHcxxpgdQH^qDP+5rU0aBS^vbUfO8C54<4t+$Zqv~j<$ z50;EH{r)2$^F4`uQw?rbnZn~Rx2~F@6A0#LZpQG{)dybal?B)00Ry)?bJf=gUbHut znj8ie#AII|w%>UnnSG|o&ClIua>UQVig`aQ!}L2BiiTB{Psl)SXP$RXhcUGff7QgK zaKd=tpxe2@V{!v!FvQ_|ehS$F5XWPLz3=!WQ%ZUWCy73QK+J(%(Lqkj8;Z;Bx1v~` z=AVLWfA-k|^!|KaP8Mhtu2VeTul(WyRnauzyGu5;o8rD9}a#CKtI!)>b&-BD)x zHeiXQ82-~=YxP|B?_<~%R5lu`0Q|Y(cjYmH--lP%Nnj32alJPQt0ko(k}<<|v)<~J zuGB2_N7wi=XuPy^w`LvTF?@8EuGjQIltFoLt1-5OpOy9gU$3~gh!3QrUS&|_QWZi( z7}T8_al7oSr$nICfq3PMNgj`$>6=Zznc&A7Ey3y>kaKKXWTq!WxhaH&EVf)Y7?O!7 zHzhgesEkczWu-HhlSxbTB(GldcX&&AFn`8u#=_4py2raEVCMPxdHrcl?{d}4-N-%U z0qCB*UujuP`YBf0l;u1d@_^GbXIniFGm0053XDsM2DV^e%!nl}l-yq|cVpyLzTHsSFD@%nh%fy8*{VR%GK7J~EGvdbO$~>% zG`9S&n2(3zGdyxR9!UL{u8b^PoFV~$EG-)VC}A4z+zivL>-AY^l%$i6{-TAUHPuoEhUQ7M|Y3*7OYdAxZc3lhlEIWSA*bsa9L) z_A~k#2DGqyzmueA?Ok2iLa=&zD7BU`)hR6frE9LFG+A5Bwd(SDs9E zK-`#x)>72)pW6woX~}6X*F_0@3JK4Ohdv6O9}qXC!QQ84FwLt!{2R0n;oMhw!jjJ~ zE5nOJ`$m+ck^DszI;Ht@d!F;DM`A*9;8Oq-wgz^c-S%dG8KD-@r^hD>S~?IwU!;|L zXffo7ttlN`@R-9V_=m#_k`N)2S%n(EW!Pp#P_R!p$;?lwMz2%I!OnhOs?+5EdE0K@ z@tY`a*6qS3f|d70k0t$%6a!HMK)C#mYq7IUaHdCi!zP8n8=9;y9^Ii5+W?IPqR1eZ zc^{1OwJB*eaSD>RYJ0Ua3!L0MJ&*9jrBvYsForF^{#(lG8Y zk9?wMpf}bg5d!qz3kl281iTC2t;Q%(h<968-J(>6;1_D6jc<0I|(318~SJ~H8Y8PP>H$UN< zfqnW}nvS}fdM7<}QRwm9Q((P!VJG6X9%4E|3pcSOK@t9`bvpdOcGZ#p+LP)m8w#$s z+zV|25&fl)xN&rFR1SK~8f_hS83YN>`=7!Xp!z4^3fU};;(5zvymXzmH=Ulgat>6o zC4jGad5O0!U<2UW2Ux(&r{9BzIEG2D4pRBh@R56hNKcKVDBx~=n1KwxL_T`;kNpgv zJ~}k5Z1hhA)$ZPM*m{xH%2MJ$Sh2|2yw>rYmn$Bp_?%mbJ|dBf4b-#=@iSvj6Bx{L z=xq#ljw()XRv?AGZ64uKAep4QSmh(ea;#n?atp10uS1&MQ12Qp^i30b<_rdtD%PzW zxRkvquk{#M&xf08qW$_OsrzkJf9-eZ_aW==la6&4Ae$7hCdyo+oMx*B52^Y1u>j0b zFlQ{Z_W$~MqYm2Gl0%porVBRB<|1Vir4O~01P-!!B*eRXBcA*`e3G6R6+wW|zAybz zD}#7_$Mlv21c;Uv``(Bm3kk3LCc?kwhYcPHIkeybk4uZ(RIo<7KoEB@*px(iptG33 z3rnw|3lS05U{dmF=R)t3*lDKerr&7nCCwg!uni4Kd7A0h?ZLu(=X~)omIn~}^6>H5 z4cs-D|Jo0F_{YAYi5K?E~NkzP}!Gw)%;g>Xq&-%3xz0 z2qu+t68Qqq+C4B8~MNmuC6 zQ1DUemJRU3T$Y`d`sjSvxO#BoDi9$rvCsOK;)a)Z`9XTL|7j!|7J<|!z$GL?tw?<# zIVq|0=H|xXWN$gnu!MiE^Se^4OF-_>CbN>y4<`TugS_OA$cHV8jj06h+YzJ2O8w!4 zc!L~B;2WD9lO+qlSI_3m{*|Qha#9wd?fTO9ITD00J`TC>jm^!?MF*DcWa`W!WBJtn z%4FpK)lVA39fngRO{9l5!IDz6kgLO(rW4FIND>;;T%kzJg8N9Ft6QMhgnR_==(sZC zH+fP+uZ1hAn@4CQkunNNUEuV?p~uYFS$cCaSD!^&Zrbr_`zap6T@LR_AZU(P~%RV)o)j; z)8mC$gdq4aFM}n^Z(2gu|Iz;BCOXb~d@LK$ZCRW!%C+G2aQS0a7mrs|=vkm>I#P>}{$P>X&F0~;|LO8_`BB4XCm@}_Uf}a{yXV`*L;SaM-EcbR(-tFz0U ztk7IlpxIm_)v#LNFZPa>^cT(8k{eibkLA5^T^sKFrZTivScJhp#wUc$iLtIZVWJNfPH{4*@qWu#m%y#B0L^_mg1&ZqIY{YC3^Z6qeLl6nl* zaQy5p;N!>ES&aOeHLd^@!JCKI*@D@w#PugZx7h~!;19< zgu2-hJq;9-kSo}Lz{pG3yO+K_GyuRRF%(Awbq$~UG55Dq&0dc-6TQzr?9W&``#{XC zSgOFOqW(LZmF~yPes~vAgQ;edpz%xlnqbvq8bkV<8hbXlVsV;{_b9C#{9SSiM(knM zYoL>l9jAL^!M zQXpFXpv10N`bW$SFnslb0K!zhGQJgFIt=t&s`@u_3XsGJXjjPUG#$hzIb+0@1uSSZ z3kE8~nT$qfqH1C18*R!!(By!W;RuP?$`b!p#ZY*kwd=N$vN9NpInKGd7;xfM* zz{f>&`dPEK*jSnrj;$$Ni{T3f=1ED`M(xdU=R8+5ce~A>(N{^zVlH;}gPWTSr~zHh zTP!a0yy3I4YofsjcwB_053v=qZeXXv2l1XQ*}dJqxZjaon{YW4WZWE!K-mJs_Mu#% z2pg^)J=w0sJ=OW;+tZT1L(js7y`C96;Hz{D*I0 z;5W$+P6F>IGnJ`QgQ-+M_`=KRV6q_nQx^S+N(a$93X`dnIM=Gs5+ANZqHwVlD~a;t&E=h%|1rYxkh+hwna}2BAvCCd%{Z5Ty6$RTUdJ z8S|Z%?|%8ZXi85ge5yNgs`+Y}y0C~0_!#@p%7aXS_|s3uDZZ<&Q{&^qHsfSGd9qZF zWLR_CuSZ%?L+?4Vw0KVKa{`np#f2)x97EC6&)atlJhPeP+={4T zj6+YS;5M~nDlh#vl_$byy@mtOjQgLuCMYdUw&f3YU>;ss8y>e(3L%;mFGeud(hGv* z#1VH)jXL`5;JOGmrV|s2IN}qIyZwCB!Dn98)<&8S(_W}n1XZfr+BtV>uNVe*xRJ>*qUhQ`^gtZtGNTL*Y#a=wsFKM~lbh(_I?Bbvd2aSS$GVYu)R=sWe znr}}BP>g}cN$(1rt7^av3i(HpX?|h@%HtzxcVhMR-Sl6L_Xh?pc526U^@I?agnr_*Ot1qWr!Chnba8 zHW`e_@787V4m`!+*5oKjxM=^BhS-a`fe%rP_S2?T8kC*6JtJx^xy_0nL%VNnwBy2v zkklcel1rJI-d{gZc?sT%ZjziT9^hT%;s3Wa}kqTzE8%iVMW&ylP3 zzsVE^FtkNbM}zwNA+u*ll#~)#|3&O*;-UxvXc^XEE^-GORp{Zfx98EV7hX`^d(Wid*6bua|M4ye~^AeMJ;?u{fF0>bR*g)GyJXB`eLlF z3Qaa{d)}>^t!ZeS?q=A7yo~B3lT(2~KC+UbTt5jf^ojqji>kk zEtv+Wd|Op%i@bszV@UtK7Z<PO0jTf%d=sUNp&k(_-R59lEPB>>0y?FL z=)LD3d43wqz%DY-z6b>BI-mseoSjcCSeAd#f9mjF{k;9kcB70iXb~g z@VjmOr)@S?g`E0u#>}gC@<$4*2~oJycp9SR=ct!YmuLai6+=biedt+XoId` z?{d#!nIAyJ#mqI5yYe%oA8y*Fz^R%&-FC0fu9gEaRDzG4Md>BJzMshUKSAPn+MWVg zp4PsAI>!WzM(x_yrCrL`dg-%z3BzPS8v_3uNj^drbm$;Ad6*&kSJ=QQ zHt>@!^{X;(u_y-NL_Y+*!-}p3OIWw9)Lv6MFm^JRHl%Y{R1`*7>6j1JhOG(?ii%cK z3k8Iys=WX*plg_4RJ7~xLH~8Lc5?O43~|n4W2>M-b!I1wSOs^d!M~mD{x};=&-8B% zlsTVCMOh#X!`g+k(t>P7qN2*um?GWQKPEj|RAkvl_L)VosWJ^rPT|KH{p&M6fl-^j zzKFOMZ_t<|_nxT(`&jAs{#6+n87cnxFy$U5cgfI;w{b}0wIvqw(}%^~BjgX17K$vt z&CSfFJ3Bi)Oc)W$i;JJ`prNAMv$w$0%fEL86NwlKqfvi!O`ly0r-Hs!nJj>?F(>#l zp?(Lt2)C*-H!uA!+0G>BGfD;REU$scq9EOnUw!2KZ4V(k_KTXS9i>Hh_B)&;4)eIw z#GlOebb^p)Sb?3-Z(@iOIU$nmOKY1_Fp4TFS&iC^d8J2GK;cm1YGKjHc%C@gh~2sb zvo-w>x7OIo_rf>Br(9LFZ5er+x#{Q=20C*J0V4lU$uA2+m|Dd`4-XG%iBOk}d`uYa zZ)g8Y)jt@=ReqCpO$%bgh%T$BU@3ItPt)(L$=$*wzOpqDBn%hlJ9cVn ztEfiX;W^e0n7|u8P>Cdmct&tiA?YOI{xA5d9WBJ zS+YB~M0YJqiK67hq6{`cr@S6(Jur^D%#W?qL1YnAVpt1P^^&$=pwHal)9pB2*y4(>oW>Cuxm!;7z79gLO zB!~(HUCSc{c5w!FDRmFq|3-)Y{cc0n%Ok@QpcDk=1T!~azTCi14p6kSv%B<14^4FK z7#>|)i3`7h6?K4X?~$aOOdh=kOvlm$3^<^Yg4%$4l5{9xiwcoo0PaqG`JPh7RTk0K zihruh!z4C7KE8-nx^&{!THgFcSfNL*DR^H}7Me|?WbHjt5&Io|?}m!Oz)qnf9nJ~` ze|)xD>>SPu+J}KuDGz=rnn@bH9sq*!-wQjs-gPt%-20qf;tP@b;|ZfdFidVSCIA^% zDMVW->4mc!H-XgD)PD(=QnP4?EPoQ&z6&X?dfGS+4@)@e2+4_(0AzAg9-`Y9PcOQ8 zQv@zMe>Em+Tnq6d&p@$%ox#t=zt-m5cFAy)+vzVZE+evUV1Y&l9czQ#yUYpGwjRR? z^5~%6;b^GWxi7=i!fwFZF1kYv;TAgoKF05H=Dxb>gp6GHzaNT^MLb>r40ymL zYr^ymTFmKAqr{E@tk&CZ$$p7#M=KBei~y9?eW-YV$DBixOpF63gfIim=bb1mzC1o) zQVb2jUF3+hH9t}83e8*&0WeijFy=idj+P$(Lmm9Z8PYQlttCx>E+QM6!R&)bXZ-W5 zIJxd@tqBdxbO!WcUDLU9BH1hx$XYVBqKUw(dM*w$-( ztA_3wfI41)Jd1r^?yr`Wm6gPESS&{|s4-W1q!W^vvQMY=fJ6Sh)_Uy-8tqxVOs>UH z3N1bAgU%?JKE@^QKjiSzo)3>LrsSw&UG=?0UT2Qa{bvb($FP`ab}!NNh_ch*eEQg) zy?e{*I(H3}T3CC!(7dRz^ku)M^P8q!KQe5uBpm9QvdV3;@GlfKD;3Eag&Qx@@ zVAMzb$-&m`J3M_~>V$seU!J5lJBYtfN=ihu0_3@sc%*<~#pHR|NinV}zC=sizcw!} zdr73!Hz2lYT`SX6GuL0qq=X@C4AyQfq$rm^0T`^Zw^wTrM2IR#$Q4VL&ef|>`&5`+ zNfzY?|G6X=J6D_DC}1LOneJ94{dXuhBYp>VD?EfrBKP=ZAuUNKE<3_5k1Zs3ZuKp* z1W~LOhPVL|Basd5;=&_}E`qEhEkK%c&3Z%uc)YwImVBFvLc&WR0J?V%p#ALBM9A_( zV2VaeR75_ZG>NmKqbEJEcB}Rb508wDKm)T6#>uHs#|Q*-Ax7B-_V#RmEK0XA3ft92 zS76=@c06&2YwSv|!x!z^XCVV0Bx~^kcpBc17|}@NGa#BqMm6f1_N_>vh(544|B1B; zTEd~D3Jd@wa}l1g$QCa^CuzvdeaFGUVH825%f`UtanGFWT~kwI8^{O!%EmS~J8NfY z$w0$vwArw`Cd$i-Oi}>t3j{6YeY}y{J6>sWmi_ZXfIDZFe}cCluD>x`#Y$RTI6(*c zZUOS00_i?j7Nvy?tlmEZu?p`D$w7ubrkSt&Is^5`-Bz*pzr51rv1C=9dM|zWHgfHko^oSIORIS(ACU@UC6;QW~_=EYSL_1RVP)w==ymA-nT=0mL^_L2pL zz?_-NWl%Jl+P3haFJfaZ9jMY&mnt)y6j&=z@%%SG+j5YU2Gx{spb8Bsn2;e7)viXv z5o2W-C$(*Vc7hrDq-37SwMp=cOdr>uv~t1Mdp8)!Nb;Rs<5nUh0rN|R>y>V435RY# zxpg|tL0$Kj3V^ORZT4zR36-v6qW&HB zg?e0O+1ZqHfpFRLd%>(D7I~un>DU4}=EUqHB&s`SV{U&_^tTx=vPrur1V z6uQLa4C*l0DNyvm3JYwd+o5xPfp&5kSyG!cp=W~zTN;7F)fy>|MJQXQ0ylhb5@74E` z*=S+X^`oOBl%83#pVpwSI;kCKaDHEEpd&uzsQPwf*l-iE#xYP#uC0MbayKafq_?-V zm9%fsotflmWUA^$-r(xiY(@UB`Oi)#d5WGlnAIc#;d}4ywg$L(@d5S%Ptq3;2hTFa zhigmcK5rXbw!zZ+cO?jsNy6t}poXqyt0B)>akJZSfOru49?|lCNZ2~2ZqW_UP znVtZU$Ps%$9f($9_S9>}o71-c0Iav%t$wBb(QKP>jUdz!xr@7AlRCC(5s%hBolHA` z0Ii5FBzPC~8OW~Q`t8&FkV(0+3`R=(cCTZ~7Fm19BxFm21q%SRB1d}DdPj9lU zB6|TNSZgD%ZA*(SLW|uQ=I1R+YmB`Cro3L~Pw5d}z?oZ5^Mh7wAdw;UIhQE4&k06U+EVxZM-*R&nls z>=%A2QdIl)yY`lo|GNL{)^`zjh(2Yk8xfzxs)+HEnW~z4&zE^MKJ_4bmr6^3W>K6N zclN~y!vEx*CT8$u!v!Z2r9fn-@6}L#F{#;e$PAE#xzJPSu5{D#q4752UhE9f_AsmX zY=u#^x7>Va0*JE#?RV*~ulRYCK)s<8nfIYI9y$whD~&a=D5%dbf=(iWxC4*TO{wMb z&_$~Y`T5cxgShNJ$ul^RRu2REgCj*&5q|e&8f((X+6S;0K;R6CGo{M#=^j0&N8xdZ z`S{gpGz-i6KM9h~JfqjED!gzji|>>r@UrN8t3qMFaT)*!VQDkW?;)#poY2ysbdOh! zw=nn1-T_*=@PRWCm2WpV&3CWvHmPnO%-de+f&Z}5&M!AQ2cU$QdE-)D zFOJ=@^vLID4{TiQPOt5FU~-Kqr6&yB`sUXBvb4CgiF@?4*%3*;H(0+WO7}ITUPyv+FPGyGLJohT4MGgkDb&-rlL@KmV0zV{HthNu`A7 z%Y9tJ7|X)%;+gGio zievXJPePV$;?An2G&y&ngxP%R3tX#PZ@`wO*?nu}&+3ON)?!v4{#p}MkvV+QB(FLD zu0YhcJ9*6+|BdGus<{`}n5&-;RX?CFQkp8WTuxAme;h?&l5JR1aPcX)AJ|J*;9d1z zZ%?pKm*$~SVI}}c(nPL$-qp|L_)5j9>c``JQt^?4qgG0Ddwn1i2^*eHnR+y|sYw)C7|nk;E+z>)_(_!|ce)x+ZBEP^?L+u*O2x@eKK82-eOn zwAYYvi1l?C5~q{<1@+;jqX`Y7VR$_8RW8qZ`1S)VI<3F|4iDFP^LVZ`2#}jRdFmp# zNhF)QpV&Bnd2MHjC!j2WE?yGvl(>JPI(<}E<27O6MsEA*xyN`S6qVv`K}nQ3Oq3Bw zm$>91x#BWzHp-p$-R3Ip-ZTjzCa|S^@oC)FDXA1l0iI`bMCs6bQFKhRZf3 zp;Sm~1w56|Nlu6>DH^UW`{RCyDxQr9xgk*_SJKxI)Vqq+1_ziHj*_1Kl)RpCe^pa} z^*beEg9XPr+_l<;vKGNOJa$~pq2PKb@?~yjIS*5mr(UK6LTU4Bo!7n|{Wzr|NH*4myP{7{PFjHkGjqS>YLHxEYJK>W=kb{UqetY{R-n|sdRCLa?hHY znxa40MY6OoZh}>eKwW{Hsi+M$tJ*LDGBY4LBPYX2##ZYCh_tW2h>jkw`~3a|P~y%i zJ-zSwA?OyJH%<&MbZ2dE)I3PH28v@3=U?XXs)lnl`B*vK<$vIYfKYsNCpAm4JL_i# zu9EAKrx*R|HtH~-i23gE?4wFK(A4POa)l8*eputF?`YCZ+Vt*+T={dr$T$)Jn8(RY z1oA6KWAVD(?Aut?nXoyZDL(StfwU|k@S^zeBGyiQf1Ub5s4SHIq)EMexT!_V?hi;u z3Vm`${EmJxe&h!n&9F7RTbNv!VOCgNhnQ4B0UY1k$bpc4eq%lGC_kCk-#f6r8zVyj zvJxC@fM?YT!v&n=GI`nmX;?3KMp{@oT2W~U$tWkU3Ny{~xm#v@f5#$w;(F=Y<{r=c zBQ*avU7;JCcyO2sIJrz@>|0fEr(6ws_qrqf?OR-Y*vnV1ARR#Noh9BaD6EZ8XjHdd zffULH&&^Qq;x1KMpPZ7K1!L#{YJh3)Xp6~s21{VgPVkQU(dCf7WkU;XcivQdH--)I zUeN6DC<0Hj1yVdd@@_km<7i{rzaw&Xed_o?xoeOB>C!O|7G+i=MsVaj$K9wb=*%|O zr;kJtQ@(#HXpu0xF(mlgRbc@GcWN!)wfG(?WFAeW;O&i9b23(J-Ljq2iSm(6eTa%3 z8Sw*s$>JU|4t+mE@CbYT_+j>Y{I&jAT6FGQEt4x3*XUZ$6YCWFlLCJ0M1BFm?K63c zZJHW%Ui>N!AUC-jAKBji>jJA1kPGbn?g~Y)ICEQK#V@;EG1Bu zffbu`n)~g0oPK+o&^Gfr|BqW2PV-*C7tiA74}uk_9p)dK)Zd3lzG2$IN-u9bUvON4 z0)i}p;rL|CP;|bI_g`jPJElZcX%Q~UBNgej5Q@xP9>Hgi59Y>mj|R-;>*#QVD$dB3 zm*<4uskX)IemIjq96F7q$r?UG2WRfyb!U)7I=#iYJ)-E13p&{QCJWqF6+-VOmgCt= zVSE_XWse_8@+$-#g&lG;)MyAX7C~O#!K2WOk&#~kRYV!NIO$9k$lm2;q4if;Qv`{t zi7s*ck{s!AWDp?RwU>-6?vaZ`{|BDV_A<9jN0HaO$beFU@6p^e+w12+-s=nEn-K+8XRbbyYo5?Rg@qDq zq!7eNpKf_<6K~D4aN$_8?Ezv>9=B$Oq$E{fV7E#X@CI67N2@^4y?ysQ^%`~Fs9Io7 z>P^Ingj6l#t?$2gRvOmN|1e`IF(9^S1tWZX>2QR%#i{lC;r=2Jp%y5T4ARUX)zS0i zH3hM*|Jt)ZZ0pT4B(>|B+$Tgqm>?hZWIo)L&2t8w*?+92N^ zZ_OQ&O9KDHR&+i?_eD=ihpIk|Z^o&TFB>sMb``JHyxLGmU|)fgvK$x$$hD5SjK8!6Klr7HsGU1oplY;!kEjrI=h}qidEI$sTVU zOx$CFPqMA^Ub2iDL61nrd`IO6NH_!rXzaPyuwy`0>j5UQ98OVAoQM?P$|ErEQg;1zm`GwW@b$)ks90r*vbJ4&vhhKTB=Q7L_et{Ua{S~% z`x>L&xsA#aLF|ffHnED3-}hJ}GRU-(XKkU6Rl1R-r<(4P>o;nTf9%|GxqyP4@V1)W zZ41u#PIPW&$jlR4-ME==8YRE!Q1Z8v5?VVcN140Jn!S=Hu*_9#IG@G4t^#D5_S6jZ zQ!Sw$>i!Q+&O*OK3w{FD7#DjdwJ6B?^dskBsi>y83Z4==|ED)d91dt#eb1HWA*7}k zfYQO}JR0Qa3ApugkMM92^2We;=+nm|mNV{R`2GCkx_Z>Is~@oYVZ3=egIAevwVwY{ zt?U2dfDT33p9q7yUp+Pj6?c9q!f(6|=K_ir_NP_@Zn(9uL>x$d&hr)#!BdIY2cw2O z(7ZZQrLFz*FSZO=9Uxy6Uo)Bm0MEe-VKFCHT>QZmMc;?So-o@^^WZUM(}7wx z+*=|z4x-NB@#;`GPbTD^P*e1Jkbi#8^IC(2y=vSw;V<#!`a!r14f_^&C+ln+q1GiWFGO@xfN7h{V2O@vl z{E234dHE+3fi5q64hII~0a7}1|3~kkF0<(cKb-N{Bi19vNa%*!g{st7NWzDoB?jIr zm~TJ5Sd91`V2sc=7Y&qjEGA4l&69|_znN5OEn1Lc*(;p<-nkGn6kzdV(E9@K(Eb62 z$DKVWJjn5%2#~+*PkAN9N{VmMCv{x?2v@GrTi{(tJ$c(#Cg22P3>*R8N7=ZD{Xp7p zBw9hl1wG+&?|Tgaz~4Zr~^}9@7Z7DeZ);JNma!kLJ7g$RD|9b*?&sHjl8$Rfz_Brx8BxL z<42b=fGBpevK)DAar*Pm3EwP|I+VD*1zu77P6D>p?WhGfVrMoQU{jQP7gTZUxc`I@VZ z-l{+Ssb^x@cH?kUd1diLk~CoAbWAyf?5I-p zJ&WE4aR3%)up8tX;HLg>Sy00&=KUgrF>&*;Cq$MvxD$4PV_#OXPAqgeRZcA8MQ+~m z`w?UA!N3NeC?^L%1MD%BNuM1mEX1>1-qJe1=PzV=w?iATp3C)NT-CbnJqrKdM2qG% z8Fq#iSMkWMe(uA;w`G>WK`+~dqXIjwvw|RIS*It4MWU2i19sMEmWjK{-|fg?;^9kr zA7UqbNvrb%HqUOEDXBkDkFu?usiEB^Y4*cJF{Yr`QV-ioDHgY?z8zkJe>%YXr|qu~ zm3#KMXTWThcJ5PnpawpRgIl$etNjR+a3sZ}h*KEkuToh`G;V5*i1+4yv; z-{anww5M~NipuvU-^`9HRZU%K8lzLTgDIc$6y*Ow(UzlP+h`q5Zi=2Bi7Jml&anRx-Ib$K}o2utri zNtN|OS2s|hP<}r5W3gMhq?QS!5A`oz*e*hqlt=f{?adw~n?88h2pDHCndrQIO<;bM z@A|LJ0r^;-HKvo+{TY<-vGW5Y8MIvJp?UsVB)Qff1g*R5_(Bz)Z}3nI-Rbcz38|CE z^X^?!-1ZH`hK4}lSlFxn-(ifd1~5u!F15W6_bf`yQL)LZsNF=4!uhD0mMeG`p~h2y z-F~v3jo@Z(hMxOZm-i0N+%0+9FE^1HoSjr8!emcqedMtK-&S;X(ui)}iR3Y+_U~W2 zYSY9~AH?--dZo}3{zTsGK8IhzF_ZZ1Oy#YN#A@xNw?!5I#P!XVTyvA4w>0T?$~dg8 z4*84hB44AS^(!4n5zahQnf@rfxo0^Z*i745zwVr!-joV-x*4x^{xkb|;~nM!2O{E` zC;PYN7XWa~bR(hPw^6jO?R{tZRNl=B@BB))Bq}5$gjS(bEHYd9v089cc2zOq3&OyQ z1>=@q-)oXETY^l0?HOWy%KK8Oi;ddnF6WN#{_6X|r#vKynM>?M_@eajy(|YkjU&e* zch$x>UTW?%au6NxIjBGi2UB`f!y{gqs`{(FXl zId5;S?auno5hs$s6?NJz`$@_-xm<^P|HPYzpWGcXq(gnvg>VcWksuCnS|PG3L*+5Y zomHfHcT0atdWi&^);GsI)>>h6Ufc0WE!2}>i#3{w!2`P9nrdY~n}c`c_hjMchd13z z{5U|XUx-h{&vJhPt{B_&3-4w11cQeW?Z;*%fbyFJFVoqNj#27VCgAqekLOkSPPiU1m9Khs2wQX=puA|a+C!$Z*<|GC>|Li^xeM#bll> zgQwC@KGC{Ez3D~EFTN!M3Zr`l$j|I}QhxcF8-TdRwk@7IL16yQ78et}h?3x*le9~w znHZ!PHsVae|D3XBG~U(IkbZr)Pen`0vHOu+M;1;0ty2m|CX-@ESS_Jx*32vi=}6FejT=odMtat<*^y(M6! zvCtol#;;BqSo@oD9ZvlUrCADknj z@PpcH$ob~f4Si&DQ`B4u!jD=ck`-d{r1$8~r*xOGqm5mnf@?duBkF^|5V>zc!?S`x z`n?NejcBj#ZbzZ93dn9SNc`O=W-(|SVrkX85P}*tGjfO~Du8zF!;(J485ICqOJAae zn4#o}PM!-;)szQh+^gYXRX{;BHB?Zl8Cm{ah&KiuNgg=lNdO0bt7Djw#h^;0ojW`Q z&t9#skj+|*N;uuix4Eg6ErYOz;~QV=XFylUiGSwlA^^1a8f*NQ46>uA#C}(Qw<$;? zYsH%wYVA?9?*35xg@x~loT?av7jx7-(+4ToOv!p-92~Z}Cv9W)hJ*kj3IM|53!gn# z^ek;o)3ek-5vXz^zdzw!Z*ym!vQ7%z8{V`AtH%W|$t{?P_;G{fJrqEF66tk^ zNM%Yj)B5Fc`N2qjgH~D}u&BsJleYcS05czNpgzhRoN6bn=A=t96@Ga2C;E2h8?b!c zf=oQCx8`G`V)uWcQgk)RUEx4+E`EwLuK>>o$i?qQL9!%;lEy0lg(ko_SCCchN~|`A zw%C^jj&e9jDYCdEt09{2_=o4qVO=`JE@jTj#ht%TQ2xdkmju`e<@2OiPmVQX*rXw3 zE8T_=C~dH}@KU#X|Jm#0=fD0g&D`1i`Llf_10X}DjYjl`(Zu$X6S?%y%sB(Cs@lXn z@ZHb%?!QM_N(-IBI)0>WBmI+eS;)PtS_W?pIx;2*RLX~lw0s>Tj&Zq~168I*L(dmn z4O96RwuY{2+q#Em25k9!WCKlzc*IOPA0aY7G~_c0Uv_e+K?=`}8Qx~yk83L6__0^^ zbMD<&n%K(PWn4c;K7e&;23Kj(m{uJ}H9#jNIJO!X z2CJzVGoWa%R8a>3_GY55fDSSKJQB%x#=t(H#b z3Z5eFM?0nohKX{@@y${6p!pWeQiUyGEG}i z*&8^e83*(9A<~E3G9UZg#c&%af7@PspJx5JSGjus!-+r6$fqQ)`r%#8Jc?U5)JpIv z1q0lDwUK) zW3IRmW1f|jKcUq1sL2I-;eANEY7aF$!&oQIJF@xHI?iMtHdBNOxsMai3pICH3gyIv zXohMf)VHP_JYQk**Am?KAM?OJ5IYg?ItK2n9%P#T_sQFe>x_d?_Y<}pA4+Kgyc3;M z!#SZEQ9>P6q`r1Cu4H3^87lWW23A`5;5K@O z2ZzWD`x)K`*`HQwfn0ogXA~1rzB2g>)@B2l91d6c0&OEV!2;}VB)?2u`|AqlUDs=; zTr2`avqD^4h!XpfToyW<7LYw>x4@$8&!(lhsrdW&>DYh@=kpCMF7{IC^yDey_wzZk z=RPwme3{e_4#_5hDN!W{ezz4D^jr9AA7@6)C|BwqMm|6kNAm;_pgzIH=#{Z8mB=OX zYK=6KZ55$1lCj^Pp?19rc&@5*i=qwPs{lQ0GA=*Ia%m-QcAJ`46t(QW%CQOZ!6-t# zw2T_6ld3!Rkiw`Uq^%>5C>zPOr0hmI)CSuO(?Yq%X~7-HZ#%T%;QTD?6^O7}QGC3|D&LQ*k`4CI9?vC~3XzjZsXojWNrI?LPS)z&7-ewkdw0KFewSoz)HqKk(5q9QrU<8)*-n8$DTsWeF17F z&}=|Su6WKkl57W&xOk}Yy->EuZ#)_vIb`&>?Y&l3D(x4Qe3-!z3+ugv`y_|oI~)Cr zUtb7#82aRdH#}3?zEDv^5lc0oA=bNrwtsVJ`q0NlK-MB!NK}%Q9=1U7>ozJ<3y%|x zJ<&RiI>b;5$u4%Q;=FEWUK5<9XWv;!u#vhB6L4Gqo8dOMpxjFoHTK6F6N{uqa$%X4 zC%cb*O63}L6vf`cV|4z-8a$;O&+lGWwm3;cYScQlKvF~NUw}}ofV3?=?rBzZbaXzo z@#t6vgZs(>CsCGXL+^yrA2~@HgRvSK$$r>cy-idh!>2j)mdHXGwHCIN49K!)r^wR4 zWAnr3?jgY3pZn(x$f{lwkgc28(cIVr}`CJKW2HyvFcFM zJ<0UyUgQ8#95%{%&`voD<$%((>$gf#6R8|aMYnA_kLB~#F=Wia?WbaB>Xh^-!>fM; z*W1+1ouu!*9*_Fw<8{R(WMyf_5?Wc6@mHKO)AYsJ>YOz*WMQEOyqLDLJ@Rqh-)Wwn zx4f>WK&y=H7;q`lG;y8TJ5Wa!S?kR4nvT6L=3Ec!we+x)zgapunPF65p8%yhykiT` z0&B2j7ylhbX-8AaD$e~Lki{HvUX%c`8|)O`L&}ULK)W6}g<&$MrIuS(U~PkbQw{iyf)=vxr8Bk=3&43s$v$W+_MBe9 z6894oPFw1k()z>pd%jZJ)Rvq^+CeDMk;W{zz=8cD+n>8gYly@a2*hj3ZO8Bin7ltppP0RW!6 zs?y_^&BEL*8#Fb`i5#srRkFv!ZVKKQI)tIxT)cG8{bqzUWH5n6)S85j#X05* zY(cQ1fJf!?3zdZX!ctOK8N2H5L=b@ItMT{fXqTh#l>O-oOCY^B?c z;Jtc<;|V8v({eboI59UD1qz(mh}^3}z*!MW?7<+TF{AG~@Z+mkJ}~b@le)K2xGOzn zZ77}p1Z=^$|bjul%#;4CtMaY)+{MXN~x>u)KfpJ~8kG?>t z=hbP--u&E{cbf4uUTC4pa$X3->&CExqkj7IsVnBnt>adq`Z8TBog*JN0eU5+50^=; zswginH|cyM{^m)e@Ak5f>(P=lfZPe!fkQyVVgwGFHovQjIW#mBK!8dzzcz+arDQ#6 zhH5!4K&}>X{TTo(3Ed-iCSD)VS~2iz_{RexM)g%awg@vd?VgCURs7wd_v~B^UojA* zjK&5_AaqP$#h2~znl$e4K74BsGu)b%X)ehEXd4sqrK@1!gctYdSS3Xwo7yzdDyOI6v^hcvw>Cql!+!`fhSna=7M8^?mQaOxTw;AT5bQBe^OAKw#0!+Q~tkrc80 z+F;Oui1xU+IJgegP8l<5gs&nr<<*N_&vzZ|?F=KmBem}R&-<)|&;R^kOIFFRtD__# zAyFxv(tbrTLi_JNWwgo%-jJ3EJZ)ylLOAuA~wer9(KLC9r~NOGWtW=5jT%!~rysj)mn} zPzQ_d*9V|Wuy|`+?z#wUDD+-=b$>=2E;g6KrlX5VZ(<7SpG=66Fu2S`f%IE!Gqk-M z8=T*M3DGk!B&%>HsdMU>n5_CO!X5u0Sz3z#ySGB}SaX6apTtw`MLF zx=Ok&1Yqx-M=Jp`9{H5)XhIk7c@=)9k6!dLduafYSkY@ZGUY4Ov`2bwtMl^CokX<*}kM1 z<{6k@(NW0?Ty=EZg-l)71f9CnfQcqoC$T z!3=Ewv5S`A4+joi$4?QjHAW_=oWFe(wflj$DkFvYzN%1<(rjt6d!80PTsM|5)+yd7 zE(un^t|g2wB~Ni5#9scIjSP&RL>J+KJ#w0Q8}}&yX8(iQKSm$DkC%p9&2x>VeJ&iB z=onaf=dR{_e(3IIIahL!iS@5w8i<)x2akh~`&toa;=amdE4 z%_7`)xz-g)xxl{%eFXRbWY)oZ2+$xq572-oS1aU_a$?^PR9M6XC<7ne|F<=RNe816KO5uDmpppHDP71H226$r z>9}>z*a6EBfqMAlyh>~kKVTWApRi=T9RI>bVcRLU2FwZ*6WbLLQeq|}sxOI7;o4N5 zlm=RgM{>A~b&@(_oVhE7$Dqf5nZ3dPkMyh6&9!d9g>|o0yY1^PE&#ZQQTtau&E0rexOy4^bc3tVzz+$#X>l~hyyxrar+YQAem`0lKL4O!Yv5B?XIDVj zvsW@hGR~TOqk70UqoI*T)|wJ?dnzj&A}!Ufc~6)*d&U}6!#SIPX#<+Fdz;fT9^H*K z{MLT*$IY5xZdY(JpS|SS`)A#;6_9C^ha;4MD(3A(Oo~JYUg?%I12!n?2|N9lE?VJ? z5_+emJ@2>$yJsN8nykZ@?lKX~b`X|tP~?{bnE&WDr{aKGP4kcRt<+?NMGDMJ<4=YK z?`S+s4R{FF4~QDiUFsl0t;+5xKaH{Tuwv`Y2OClzGr6f5@5TFrCEM=Xd?KZa#MmQz zqEYS9#2onQaZnD0#Qsjtz>QP3Wh*V(7?w1Qd)9|@ zDs4FNnJ=PF@gch3`VA`je&Z|dyt3_LX8#n?@w#h?+KM&w3oqXZuIVT{Q*(Rk{rnm- ztv8b9w^U{d?BbZwr{Sn&?B@t8xUUnH0*A1$s5s_e-3vj+NEiOXu50A$e4^;}LJ`Mw zJiI>K|GBw;GMq11WRMXJO19LbX5q<7VxpzV8`yar z)A8~8>_qWD9qr>IcmZ1{YBhy(Q8pUHgFanx9zw!aimbWR=r6sStDrnmiH@eb54ph< zNJim^W%z#kS{_|4jl*Oj%430e8&vmXr>EcvFJVhzB$@SS9xH7I7vPNx_(fXJ!0Xt; zGr}vIGRBGTRZqrAOQttsqw~SyM3~HrB&l~(d3$L@x`<08A0dGvQD8*$?euh0h%Mj{ z#C0u+^Su$_`K`b0pTG&?i9Co)cEM=>MxgR!pMKbA3iLcYVHVFXC8lN~*4gqU6{u+W zQn%)5=2K$3mC3TU3>XWs4ogJuSuc3ZiRzV1qqkAtWcg0a?4i&|HWW$~)9Jbm&8lxP zm>|GS6_(t8p}*-?MJQ_5W-#gCVFo?%d=U50YdS1G*Hm8Xqx;GGwd9IpzFv74@Ak-#_8U~)H5JW zh6d}bxt+WiRr+m`?vlX!LPFQpH<9 z0$pDeg-}gCw~WT{7I9SUi0y;}K}-COcajAUeQzeO07VN^zE|+r0=0z_{ygX-%V<|+O!y;jHw5Cw(CbH)d>w}CASwRIu73A zfxGC+QXfI1<6Bx^JeHsxNIo&PkF-skK@9a*mQTGgfpr-be>NaAudNo*msJMxFsP^2 z$0rxRvK_Ep8<>P_P=wrk{7D-Uzj?#^IJ?>Qf$=cUfXU0mV$r(xZB7$mwSwXt0vR&* z@t~?arg5yz!`Q-+_Y66u&q?SbK?~YnYh~Sb7#NxGVxNW<_s47v4AIbDG$}FasQHnk z5|il=Y@ZnvF!aquE^3npgmVKF(EW?VaUc`lPCrFA# zPD6dVK!}Od-|Jlbd#WvclCKVaf=;boAyW(4fB|jeSunGQ2t;+Wkn`d>9pY1yJ6$%j zC@L<%T>T9$x20Blv~%wNU(~<+ zC5Kmk7W3nHW&VK$7dEjXaG}+goF_#_JNf#mW4LE;bWa!CJB@-qn-A`9ATdZX+~(-l zdc8N0NP8@mx!S||QO0TFsH2!fV8bNg!}k7n?OU_4yY*OC^Q)0I`-hJUZ&Y zIZ{%$y5l(jx4=SKY~mxgk-Eg&o~EAS*Wx5S*InDm2l&y3`RM{WoKIaRrj zn`}b+HC)NnTxtSWJe}rcd}1qTx3I{U_DbLj{IV4I%1G|7K8mkAXREx6d7k2V^iKw4N8BsCUlB%4*TrIqO zfBiwcv%!sTS#D!&m4Ees@3KfTmym9(=92aoDqC4{?4rKV)n@)@ zzV7<23L&O!_`aiRKe@Bgw@M>cob0Z}Uh@nPmKkb1!}n z0#l_%>@#jHO?I`?O~L9K#40y~7$_%)2qUQQ?!*!TKFM@EZ;Vz}NUA$OLq(BBM{{e94s_^cNZ3#s3bz_pqAz*`~`f5@D!e-BrA7YYl8R zHwIZx0LC5A0Rvu~iVl7@BJRXpuwyJSOSeq-#v z*Ws>Co%XAEouq~TnZRLGsCJp!w&LhRQxU8Lgz4~f2s|F2os5h1^Bg2CjC)35kps|# z!VHy~=Knpn;~ezvny+un%-NJA<;bQG}I?M6*2#t=)1bWHCIGL|v-pE>h{cmqM^ zjjR<7^9J6T-^-#2gmwAnR6wr`XRF9m9j@x@flkj}>n4mMOjHn-8rv!cU%}3*Ckcqc zd|5~Y@`&BoGrSx;w@E|FK^Go1;w1UB7_xHD=re1LH^#|WJ;P?t=lN5}xZ+emo#^T| zkV&QQ@e%7JI5WwV+4(WHhZ@ih@MTL6o&BKIh>5kTiR;Uol7F&w1^hM$yFFit8~#O631r@-mP$wNpO18y_Cv@-Z^&QDLZ%?!~`8d{#c%9`Xzz0z1otPqKZ zmj&#ErJzI@>CRMT4|&J>@B)6IWT@B;uSp#ipUKzU@27cGEX>Wfe$I~9XFiTP!dRHLXnb?BS5P0f+lz%*sDp0xbO+pJO3~>Q)n^gZQ z*zNj5US5u-s$maCxJ`h-GAk^}x-^8>x)I_~FyJxa>v~4k!jq$C*unIK+z|KpEhHW| zg)bb|pE8%w+`M^8#(f2arjx@DG3&*j+n}@0|B_2g{J;*f zk(HGd0^eary*GA)DJa(|XlnZh!uHh* z$sQ(WaR7}z#Dw7IF>0W3a(PzWB+1vgNU){!hX!hK%f0&yD{#e2T<8bmw+Rn$rODH*V9*H*81qO?Z;&O?C>{wZE z_{=_h!^7qbj~)q?jDQh}!0X(tSx2}i(|-;1pW1FFKZ&2TwS9#vX^6^$fN&qMZino$ zbuE>Pn$jP!9&nq)eZ?YL=mH ztB`!{blVlIpXGLLOi6s(eUzB^cxu~hJVk5g(6RE;tVj8#_H(#HgT8Q6th|$t6W&K( zeahZZ2l7}rq`#>AlK@Hs;$<~w!A~NCBVbV;rY=}R(?$s-g9q%+l8(*4M#ZrLYrB^S z%hlJ#vC(J3+i*?P{pIm(sT$4F&|{-ke&Kv`ZGFNWPZePZe7uF__1c&S51u`m$`Dg2 zh#H4p-z+lUoH-61-v}5YilVsM@ZNVYRrw|YsqexAiSF(jwX46|m=-UCC-2r5@;O{4 zX}8$-=zfhqk!HhG{w3rC92NRtpYeDE-igZs|A>vEPZ!xnYSNQc<3TQQQqaiNoOeawJe?Pg(=8GK?lD53Mv|W>S%Jq& zQu9`W^mrifsE*__!qQY{YJ?{p66=-{eG3X{SV`qSmRJQhW}q$n@`FK zp!s0E$@Rw^$|Y50*1=ACUlvU8H&#LDMUne`qxyffG)`ghVFu~#_3=`dlheEzk5-#T z54mKs=KXfY?~MGiBU4R`wgM5!_S6AYE$byVK(Kq#b3^`BR+oe%;AUQIMN-64V z;ZUhE3rVDAiF5)XIa$g|4@J9mIIDu`x?}0e#MW%r+E}vyJyLA@+4g-`=cpX7XhxrN zQ^{A9a@_fTQ#+=3t7>hhS*eAt*>}g1=S3~-GA}9dv4|+~J>i32p1~nCkd*cUYp1JF z0`D(^0WA$-bOH}1;=Aq?WSJLgpc?+t+L@2B0P{VLAu)0JtgqAYjr1k-PV=KBHa0BK z045oeG9`5H2l$+$VX!vKu_%8+Im0}1v3;A(CJQEkcyw1FYrjhkSzn1JIoos*@%iM6 zMabIgjiIkdb$H&;RAYt01AnjfHL0>OW z@Y=pKot=<$CA@C?BOFv)NK+ldSS>q9E>2BqEp|LNMiC#?op?}jc5Y}hyR!3;I<77y zH@e2fm)Ska zu@tQXDJCkxBe5v@x+7mx%x#h{zZKg|R!FEWR%lnxt6zxLysmKHQLLr=0rPrXXk*~^ z?0&8ErTsy}q32#l7(<1D}`^eQRLvPw|?f8N!McRR@Ka{27=?$52~5 zByX54&UI+%C}*chQ}tv-bIs4}y5Fq3lZpKYC%LK;={OTw2zYny%C5THlMnB_vi%t? zvwlZ(oG|=I2L_yaDzW-<(+gq~=U}Qi;7@L(#o!_OVI#QNkbPtX;_Zr!u%3hik!t_T zf}L)Yqxh|k0VN^2xFtyM?0uVpBOiv7tadR0Ea;opmJOzLyjx+`Kqdm$gmRBt!d>TM z$xJIsx-}!ndb+#p(ZFRdvG}pdB|Yg$vK{U9^nf||*UGNfm`At$>xbpV4dymBGUi5* zhKzB8`55%CJ!Ns&3Ch+j?QLVq<=n-VLGjLUan8PzwZ2S?H89X+!FCxaW~ z)@bwXR(RhC0(Y!566Eb#GJ^Q|UbrfSEo^vQooo+&O-2l%%xkxji2$1npCmN_-_@J7 zuIIcb+sm)l83P8jctWyfz;Z|mc4oHVskT`5=Ha^=Ew`lLp*IdTK7$dKT*Sj~2=FaY zH_EEuLU=7=svH`HSA;~Gmgw$KR%}_p~3EjW7I~Pllx0QcVSHC z3rBf{m(1tbR}`2hms~TWc;GL5L9ij~Nb-?=C^fc7M+yjNSEGy%2DOL)(jn;8geG=j z(Y(sueov=TQ8*1a7qAYaCL{0r>S&y6b({-vvz(4qL;GcKtdS3BjR5^9buyjFv;={_ z4+>6f5$xX~Fb07;MfMhz(C(Eseh+@9+tH!3X_YLLUF_SzfWAppsay>Q9%;GJ?4qL$ z1SxCGn(9tTh0R&2D`U_Nl%6Dz8G98c$Kydc6ZXzXT~X<`T@vGP=d1dZkbI_BbBbv2 zPDaFxiu#bwlvp2e+Yw989{)Z#P+%+v>jRq9UmI4mp8yf<2@Mkg-9y zt2@>!!73sXk>Elj)!ID@v-+=A3!HQdO*YtdZ|2xX*?4+G`F{+X7g*Ha1~~v9uH+|@Oxmm&tFeJJ z9>)TSXbwL@%&e#}A!f*8E;fW&?R(J$p(HokM2Gn%ZWj`~{bzXYjEuDtp7Ox5Nm#)T zJ6qAR{7natP&8A{hbjXJ`nuIw)hS7B z)N1M*vDFpl&X)-o{Dg<~8GXsDH?Q62ZjmFSQV06nOG%h>=Tkg~_u<{um)n6v3vO=h ziul5VZOM1~>pLDH3go9W4~o^@5~;Hj3G2NLMC~--F{N$*J+hlX@uATs6wU&9U>%o&KA1tWBW%uqvAg z=Cf9`dltLOz;I_4yBgDwPjMv7&{RHef#x#jpxsX`ww)j<7~}g6hCZUpeeZoE4%^<2 zF`Xsl98o-a6d^jk16Z~uCifN~F=+I%#@~nfUL85DG0OVig$CBn7|)nH3lBvR-Hs0k zquvvOZClRKkT~;snrgzQ4_eTgu92?q%oG(ZGBuIu0Udj-wlnUU?rX0u%NgCdm^!4U zb12b-2HK}QA%)`7WqfR(OqH%ilYFy(uQ3L%qqnR66CuTG?>wetcYIEVs?~oQcRvvC zkJCo>0c~ddt1T#@p)4ZzxzIl|t%D5BXvFqhynjP43|+K)C|`;;6aK^A5LRa~?Blfn zi|lXt3rlQrp!OZ_Qg>P3OVYO@YLnaxD>=^%##DIrcL$0yE>+jdg`UszTAPN;TOm*vI;I-xs6GaK z|0ZUd+B){GBq)VvbQ99T9T43@fE+oiZ72I``|0G@ppzlJiuc^0sN)8>x+6u_JLr?N zOyy>-P+HXbT!!cH4+SIX(1i;-wkoy-_@(mJhqZW-@*m2qbR(EkRlNQ7?h4BzHI&iM zS*Yx-kALABu~07w#%Zq7q&l1w_Rk3bfJ{I(RrPZ-sTdaJ6QzM4DNO``QP72S5JuHf z=2?W>er^zXL}6kg1$$8mvA|e6)J4MBqRc$gnbX@^n3}&bc|9#MxlhLzz9|}BS3r2L z_gy`GLzm_}Ku7*0>|#5qlz*e*zowZ`QeE2n_N=%f?)UT|xK&6GE(7-)YqBsY!cR zjAO(eao9*Axunz?7~)6D`?kN=*^A4Xf%?=Mf7!?=1I;zY-6Jp(@HrUp*&{UzN*h~P z{3x3i&%+i>1OmGisOOCoi!~R>c^NU~NeiKV*dk-ilGn{>K~@Gw1BqrDnr>1LnP;XpK!8xzL`JY=Us#$YyU^MQUlv z3xATcmlM@(j4h;nPb)S!eAo9fysmYL2cU;O_GL}IF!2=?Atw8zZ?%k02LThRShY0A zBs+Od$3F=J3QEP_s`SIk7jV`5t$txm<&C+BPjm;cDxJLc2uh3bD7Oq9bNfg%QPDuH z>tP}3E&8AjCa&<2&&X(uL8nCnkbq!tC>U2akcl2Bp5J(w4T|#0)~@!xJt`HGj=9`} zsE-^giL#E=h(}Y*d}Ja^QdTf9D|~i8$xYlv*@fq;0#K2u$p~Z0H%6SulQM&JgNAgD z9VCo%KIG|t@WC(pV85Q7M#r}Uh7fG$?!X$qd=|GxP?`GN@T~^7;uNglglRYPctzid z7LmFMZX=5zO={q4vN^)IGb25>n9+&XBmtoI{41($u65iWR-c?R@cB?;Kg7vj{U=+K z%+9I$&fAN88vj&|23=3BOSOx%OW(h_IulzaVa&NJa|PwFU;VM-_=n$YuXJqdR>_PV z{o%j)WCYr9D8EvRxTr}cn1T!XdYylK_eK8l;9$4Lhlo(^Ow|1w8x!H;ROPyxG|~B2 zW!Zq+`84FK@5H}O_FiuvT(m7fbjc;rS{;n6hV3e2xflKs@NNGDt5(OaW?jO8a6zR* zYQF%ax)nVa{$S(Ow+c6>BLf$FJj{#B6Nd_Au{i&W!?g+S=b3+quLLSR(-=p}k&AwQ z0O{!o>RQAx;Waqeb)Q>c4{awSyM1ROJb}h-)#QpyxyWjHvRwC7G?rC(IEj&wdZ0=~ z=IgfEN@LOd_qj*dI1e&7eyq|&PdU;RZvCEqivsZ|JUpx zs=$1!pvmkhU6$NX!A}okxw1iv28;-;%Jft z3z-%AONad_njrHwd3>;FND>SRQCn5K0!70>)5%Zj@i^-V-o~zCy|TOM@7E}Gbo5O= zgFDW#nCwoVq0oz$(314#{M^gWVk#}bcbH*CQnRS-O+C(9jY|qkE|^`t;vdkH1cru& zQto%B9%to@t=4Ai$mkeIA{N;lcHnNRPQeek}w>dn!2^rLG`z80=2 zntbBUiD|j0$FX6`UgZ3enPCIImiG#@#&GMc=G`Y{T%r8C4&kp!`zix*&lY>^ktmCQ zrhLeJB0Ou7+Id=^zQzbAHPj>XX-S+=0fkA2Q0@$oSS@SDu8)!&xtO^|ZK$l96v@XjW1x-nS1E*N48GJJL%j)s&$u)c`a^;y<6U?GD51Q5kN?~; zd~9378n&ad6rdiq$d=_>{AR^GqqdsE@$kP+BINKtCvjhz%2t(g_V;sh6F{|4MS08q z5iIwjCZL|)Dpp?M1lV|cTFp>rNKz1q^ZCP4KW=6+JmeI$|H=OZD2c{Y=>$;<3Wy#W zTSb3@xps9|(4WK+G$F#ji)Ey>8n-4$X`^WR;3*pk5izhuw~ufU_d>v_uazdqwPYO?dAF?8TF zoN)hN+KZk+7&#%MMTIQutop_YQH8X{{msL0+H$-N6#^wd*PC)xQlm9F-}5tq%WP_@ z9N8OcgPiy^b(1H3DHn%r0>eKJU;j?@l)3*SbU<3%Ph}warv&Nw?qHLh1M~IE&xMa> zGdZEUfPj6X#tlK41&87W-`)4D*w{p@?s=o$Nwx3Qd2p3FEcWJaIvh33@2wWTdydZ$ zE9T_iWIj3MKn#;knXne>v|Pf!luzZrQaapnsx$}Zq~~ywOg$9>v>f9oy&E%EDEG3d zk%T(^=5C`0P<4o;wCoxD)UYWfVx#uIQ$1s!H_`QZs64(tmqWeUW){46>4$kj+lom5 z{ZZ*szStO?<6)lALK+?^m)yQLDxr4w0hoO}w#URn-|@9qO5cfqgUE@*rz(Is-fsHf z^>5Y|{yylM{KAL0pQj20=AWbjgFg_GOJ9;gWFrOtj74hZ#fl z?L3RIVR2vpqjbbxNVKR^} z1=uc@UbcQS9%Dk~ieqrdpafkF>2;tlr2yCI+8fcOIX{T&8#$|2d@vM!|Gv6-?t?xo zS&4X^_lK<-w+A1z8?c0^J}bm@ zIA%Bq3w=PDKyhm3`wnoHy0z}FM;<*c%%YEdjKwa={VA~UDFDZC0M=Yupo$ep_*V2A zZ=X~sRIoN)^`5o3AhQIspzizS^>WSd$qa33rESM0tv=jioA6Mr7Nlc@ox!-F09IZN zgV7^z<^08K*R&lq#g4JSvjh&6K8>13>}{H56Evjqksg_PukDXM(=6%*sYxx?9lDvR z8t;XdV=g_+JPlW3i+?!xlrk+nKc822PqPwvsm?~v{#HvVH+3&U(InGN$Kbnc4M9w5 z;$%Pt)(2y({$rKU#5KQr^G9yR3&x&H)fHW>)*Rdfx$1tp$FeJDWkr?s2j8Wj{P(o@ zeC*@4iN#B^QQq7d11hW4J3q{vzYIkCt4sa#%DNbmFz@cb+tzl8d-BOOEazBlw_WS$ zZTI$<$Y-;I-Jb0>p2)zgA6f_$j_16rVg!U?#Xyc}j@6iP`-Ct4ig(4NGnUL(N8g$9 zp(Wclm5t*}F+JeShV?=MSh(+M>kSlzaL zwY%$H+{5-@Z6jKqNenGaJ@KZFd%BfSVM)~>uAX+20^S;%V}P8 zf~Le%eIulK_uQHa0l>GYL>ZS)AA3CVRq}t{+oBfQ9cWApsd)2WZ=$mY_D@3aFp5k)%f5>vr}%8P~tKN+B4|CEeKu{sYTHNTS; z<(Iqrud=OhXk_UydGol-cc$O{`Tudmo|dP=On7=boNfL$G?klL>=v!Q-Y0~xC2Wz# z>~RW?+%&{rJQf+76ebivKl-0=^XH(p6%;aI1~cg{ZT5l|h~=ztb;1?%H8#Ujzs0o4 zyQgHN^Q$Eyh9`ciW0GKOknV{= z9ZUo|?#cf^J{OM@Moy2Zx`4&~ouwp)a%3p<5zl+$Ip_)KCP%ljC%_Ek-0$Pn;y?Yh zw9>V;=XPs)E&|IN9s?S+kVnXFfY3z36-qm{+C(HpNWsAmmVCM-{(fz z3i97=9c2O}FxwD74& zGQE0x6Mn`TR0;c+?^v^C3b+1#ak`X~YL9uCy}SN~JmRNC?Y8Nq4ffDa#={-lSd(QJ z@IAKp9wV$eoE=dYiJ**j2?tb`e zh;yE26SFccj32NYSWA=7FuSsX=uGOrx0FL3;X@u-+ISLRL$3 zQCAcHVC1PN%=X=ybQ{8Kyo1%p?*x@ncQ5JWtFk{1zD;qh$(F7SitJ11t#c>LmkN`4 zNmc*(we6>#QHsUh!AJ4-Bso`{_BbP9iwQcWYUO!1I2okBS)rd(7yx<;per@rfZ>}Z z9l#;YYRQy0lYQXRJb#+%Ar@2kTh=Wr8_!z2-_W4i`kb^j9EG{&3e*LIsbLQ&w(`ZP zEa^r|Y$WVAtJdd~|8nmFvfKelwY&n zS{ulI*)2z;!$=+)&zyOm@q3CX0iWCFwl+O7x_F6#vUvtjl~7Hxe(hMS@Xd6axi2>0 z+Kvv{=WnN3zsk>SPgSO3i4HLRshR&_VIfRyoJ?Kqx~`ls$+17yF1Lw>U^D4Ry?I+~ z^uTcH4(@-Y_1C8z3MTu(gK4|UuUj40pj4#`A3sIblAKVt|ZE5)1{7tgi$5qV%|lzwFTKUI;lq(K-vLj;=0Iv%l7FJ!gkI{??)=! zG_s=e$-0p#)Mf$K+$eS>WSbwetIQzbpP}&qNEbNH|K$rR;h%BKiS3B)sNh!k=YWW! z;~o59dI0>dHczJ0^>=3D!?(wHCD_NC1I2d42d|;XgyjBqiB0;6aMu)VVdOO$tnIcg z1kHbBPxUJwEBU2|YgGQ$&bcKl>+J<4-=0ia80ua}rC>?Gqj~B7Yn+r*=>@&!BX3BM z5)DA-z-NAb)`kXO?`Oq2F7~?B;HvKu&S#}NC4OyBhNWSVU%{NL&A$n;9 zaI%XcIxk3bWb2lewl#}AH#m?ZxXFRW&Z~GZA`3@CIt@4;w*3K$c9^^Tv30IyjbQrMJE#nVBlhaUvp3Oopb~MJWwWO?k_G@;r9j zFZf6H)kelsCMWZF01F)X681^j3~PB?eq7d!AR>tx`7(vr>32rT+P0_x2OFGrvE(DF z)4h1(66q*ye6sQj^QY=72xpZLO}4Vlbs!;bA8y;xaFp!4R&#k$sg>q&Ift$9PBQ#_ zPuW@X0)4H1KgLe4ez}VZDNPI zPH~L0pD)HUC+vpQZGU#Fah#byon7>&k$)UzMky8zZ072lm-&0n(q2V<|)4 zv$fvT4m?k%3L*HoS=3GAp_6;58JqS}q7#AZCPVf%U$mfv3tt7Up$_zRsU5qcsP%fY z84pJd(G>y5hHkNx6_ct9ckO_>UHG)P`s|DAJtwJC-7D}rBD^n#R#LB2n;#DE9PM+yMBwddY^643v$au-YhM>E&%sE z1c>2Dqt#f#vkq-9ifE#FeTaH{n!wGs8 zhht~|7cIm=X(9Ahk6ht!Cclk!%T)3gGweV~Z3BGJR^#;2ejDs3604UAi}P*uzmXL9 zo|ygzR{1d5I`Q$Orgd*+|N6Q}M8cD><#7uwpwF?VQkF)KG&We;1%P@jZGS*g@C0Q6 zM<0s-Z$s73?E$8xT?}lPz|%tbM42@geTZ5#mU5c-5BlN%u2cg098Oj0syT*Z#Bzkg zP9JI;T(fdT9Zqf08lV&aH0Un91KShiA5g7j$G7Z4gK8CC$CXorn1s^_yCoO+kjlNTE4(cTwoX4LR+Dbl$OFIbd$ zv2JK`=l&pet5WeI^v2J2AnpAMf`QSgAuQ;QghZ~PKA%vgM^Sey$hD65Y%2Zzc306! zO5Y;O%;HPsI8!E-DdI~u z<+6Y%D#^kzo zhe6QXU|A+_aHu@!tifkHKcjdt*J_IFMvk#!Z<|wJyvHUR^jqO;Ee;?mWV5NzU+=;^ zi_brb_d%D9fa?Zs&nuog5TZ-dOxKr}afs?pSg^P;c0@%C-Em7gFmypSB6)r^)%@lq z-cK<=2VR)10-37d(@sJzyjQimm9du9q$`S2y~*1R6D3d-jp@?iWkdnQY@NemnRsJ3!$htwGHx>-B^06kn1C zMX{l`_@4%?EVy`X4R58|)lEEawDJ6w^a}sQ|8MHR@rQJ`6Q>3+8}$8Y-}0w-Ghgrr zYPdi4wBdM{Hqg=6dQD|Y)UYKNRj5pq^Klqo~3 zJpTkKa%&2BgFngr|8@y@{qbDA`?sL~_>q}Z8J$2zJn#EA{7Z;l1aoES z2G*%Ax zwOp77wAmg8qn@%tNZ3*q!yZ*(NUEDpJLiQ{)J^ZuEe4T0&C{1`aEt&}fUs-Qwc8!efnKj@I9I}_Co(UM6s@)_^i6H}x z3S#Rnzfbx&urcr2-sevsKSWl6UedkXEs6(C#p^zq61aH#?2&WZ(>rG+HNP4mfl^uN z-qNVlto;n;QP74khY7F4L>8_`Q3YRCuxRemsz$8DfeNnjOoqoWB!7vF-ub1AwPjA1 zjzfkjorcTjnRS=@J=sLj(&sJc>ielwwm)Q_9FosaE^One2qY_p6LaaA)4-9iGY~h8 zr5Y>#_Tx2CZ##N;WKyA5qu1gntYu7EV?N6P& zHKpBp%$DEo-P05%4bcyW<4+Tp2jB2$?b9qdAPSF?NLgeZvSc|#?Bl{O^MlZy$-K|x zE5Wjb!NMzFC?|Bnb<$xXdJjSn^+=iIAP76;s*bX?U1C2v-Hn9uijjXZr-A|E6Gme^xQ$BHm@5|U(P0NLi=>U+F>&;w$7M7ELA=Bn;Sd%V%Jy!WFi^jWHJc;*_t=d$ z$?=zPvNKSboJsO*60DpoAUIh3%0WJu$iZ(^BrBFqnDya+lfYGcKjP=K!Fo~j&H;LY z%t`7u$FhBW_!R!x&xi4s;7gMlBJ<%CkFj1}J<5Uk2m}%(6dB|mYwdp0IUH7ly3xF% zi4J2q3n`RKyoo7sh>dYd{hrY(0F<5S**m5?(Qf2VPVHa(8baWy-zY2dWx4Uzv$K=j>ue_|!p~q0tdt zDPG6E`I7lw(6ihR_P<((mjy1A_Z|)J;Tf3w5;wN;U04SxV9f(M8oAD&YKhDfv74Rs z>#)>Gz7*j6S{XmoN$`_X?cG)YR zM_XH#zs#m21BTBu*SFnQQLhHdn%wWaM1^lPZk6}u!1T~n(Hr`au7mAuz{bg#G2swD z;i0m=gE7v|yV-Q@YiYj7g-s4PWl9(HX!D-G`60nU!d6e^C)vxso3&dtaieqaE@)PC z)FYk?w^WvO_~3Nqi=|n;$EWI@rR58F7j;96^6b9&FZTmfLQ3l7>o2lu=5J^T-rtnjw|{j*EM%9iGryI)%g09&QNWWK+(G4aQMrgP!Z*9wN_lz%73 zkJ0^G<3Z;C+W`zh|Jw!X#w)J#-Ps1p{R%^7Qu*9v_V;>y80eYGN4SpxNnR1b+%KiE zxy_}6w6q0*xv`SSC(CDIbebf`nk3GqsAN`h_~8c=*MC2Av$}) zkB{O;5oW7%8ZX&Xn0KSGNRYMJ6t=ymDOy}VP@Vfco&WY~MKAUJ4?gT`z6t1$KE6CN zfMvC)!}cG=6ARgn>A4dvd%I}%dWjj3<$0Zo&IaFxG4;4;}bE<3j*!ldzN0yAVH@73nMHm;gBRLIY>y`E1@fX|6cN)v+P8Qmey3x zl(Sgl0>-pNkk?B?E%frwoM5KNSfJXx>gCCRlw8q_{w%_{!2oN%U-G@u$c~rG+SHRa zIwe&r5?xv9v=7&NF;w0{CCuw<UeWI9DaTrZ06pUtA7?XI9oerjeqg!A@sTQK%F2W7kRvM2XypC`AfhlTJoB;fVGoQ zxF=D?`N+9W<|yx<*wf&4ON}GLfU1XG*{;Cd^2Hv}N|=e<;Su#W_ps#0)s9I0bHRg^kx@!T>pNv(8l)_&r2;(|(<_^G@jS!h@6okw+xWV6mzc1Mq3@#Mnp z4`oDdqL7(xF10_js8X<^t&Yd`sPk?XNq`C#BA#m$b8HG6*lt$`edt1%3Q;1^SK z_aUm2DAoG3jNh(TLzt!z3E;vn1SpLZ3G)I4 z&wq>%EY`#o*>~DX$EX`OL`QrH#Eh!fHtE+k@o?{k3$!O@XK}2tD(^-ZZ~k8W+Iv=a znN8VB(qd;}QYH!g1(nw|nXi+K8T(Rg=XqJ?@D#x)X`FDv5QPAV&F<~+JuJzw|TY&gmxRVC5{8!^br0?$h z+pdyN|AU_sz^ujRHd4h*h%L5)5M@$&A?WOgM~-SBmOWGt(H8)P_b>G2?@@lBDgW`Tkzly`Y1|c{< z5~Cu2-z4g@FqN~GcAX+wt@==wz}|R@d<}Q`4o!4QPTG!h#J4UcWKCcHJ((!0Ftq8D z9N`E4wh3rm&FHGvG&o7-2QCNi+&W<^O>|W37pUp<{@zNmX1cjTPg=GC&eRb|(cUj( ztk?%Sf;@tDMP7DPa5M8~>ud9dep5Hg9$Uqqu#FvKME_}jH5A&s8%=pC*ah-&URgUC z`;p$fbTs4FNXw=@eU`uy=F{R7Pg)psaVVL^8E9>_PBx%Zw1HZD302Te#^?ydt_(&# znnT{Gw*Sm#59aa?t%o!A#?DLCuBo+!IX*KGi`;^ozpo}Y1U zb~dl6e7?^+5-W!ROfXiIW@Mzq)EzVVk*8o|_>oYE9P)DnSE7fn0o_GS7cW zv!x!DP^`gWnWE292#fAd7M#aIkrPG2cij=Oc}IzFTav|H@W>u*9|xAC?{Xb)CXhX@ zEgLnM?owOBna%DDe#kHQg*XF@!(n~~RODN2#pEF49PqtdD*^nF zK4dZNK+&%vNV8GU0mXV?2o}tY30zb0y$p^Ome1xa7}3Q08Q4jgKNh2|mVu5HRF}rf zC=0F?@3Mn%B`1ZOu1l+hFg4|a*>|EB?dM<4b zfJb*~1_@_)|E=6^pJPiWXZW-;VCt=gLe<1|L8H5w14DZ#gv&u;i*^@tx28^0RH`zK zlU*rC#rRwESIJal=Swd#=W2uW_emy7}0L8}prJR-&dW?N;R6)Qz3fWCXVy-G9UYk`8Yw#t2g+9+CS@Nzs&CM=ygjD{oW8uZ?W6%Y4 zDei$5^uyoov57`vx+6w->2x{hs$m{Uh%{hF@;YquwWGN8C!Gr&78II4U^C$$rZcVg zBfSpvdLTO!M0+M^*^^_hsenV`X2A=VbLWAI8=X)|>dbQpUScsS(zG3P!+3OT(YT~V zxfbaCUi%y`Gs?5pjYdgk=s4c$dda6MGZS5IDTk?2b~lBtI*AwFQ!%7i#+>ZitS-?? zh|Eu{)jVQ$(}H53C)Eq2b#d2Pp_e~dq|e5Wv0f?zgK%~sK|z7%?7@|j4dcrB@u_b= z2MEUv)uwIWuZxurD&$btIorEhVaQPC?4d;`O zV?3mguXD^+!!By&Mp)5j^fgb%*t+%o&6`bfxvJY=q$&UMk>Zf(c3=tVJ^y)%DVMWm z)+JXt@k1n@K8T6>Bgnv!o8pG~+PblEJ!}M`##xEaq)Co}&y0w{Pf?O$pXPzPMZRFd zGG^&9OD1|pv*8J>#et2-RO`L1n8t+Zu_D#+B9tV#bv%=CYrYPq1|%CE_vYh8b?d>4 zpv{M6m>-<#tIZ+DGWq%=MeFkz1sxdeq|EL0n__HM9nqcp<5nVEJ7c>Ni-95+3^P_X z+FeVmRO@@=W>~^_rp{06_LfE!hm+U?v4yWV)M>i|`;t@!;GyW>@9rNNdZ z`LCH~DebJo7G^#efx6#}9IMV5CITA6>$(Gb1NJ0$G0j&%q;kbFY+w?yH=P&k*#s7yq9UA#mzx>@TIsZYE*EJ#q zHyVn681v6rkVt%tQvVuBH!epEL&0OWc%qy2f`cHUt<~B649%X6NHt;q1&*lkaa{S)>X7=~)J>d#Z z4+BGvwU0JS&Ve3{U%@jh6Msk#^QEAIJJBRl;7j$+}O~3EwKl-Do6!UL8 z3ft)`@8RpqSQs~Q;$uim{5<;@G_A%>`#ss>32|zfr$f~W>K;Z|?G~PwK89`Hbdj5N zG-LaXX)f5TO`CS1?&M8%i=s);peAb_G2Zz0k=^t0ent9AX(hX6h5Nd@b{z6g-I;KK z@AYFysiQ;8zIOUtSUTNaqXO$7(OnREPHHXfT?RMN;X}9l5F>2>zPk;f6}Y)z=X}6( zAVGQ?@F~63CtsKguxmll+9r5T_d{obUP_m;Lu&DQy+)5dbf}|KaJ~4T`#2=x$DPfk zV(*XbtRcf&!!jWpkmD>uosZck%Nc1UE1>wd)TYLwCa)}%;{LHjJ?-iDDV<%dTCsW- zOnQl&*`sx~`V{vHKxZB=nQND`5EyLkWg`cn*=HYcE)tftLVqYmriwK51HBO&ST>91DNxn+7^k()OrVZO-#Zv1F};m+fnJ*R&n*| zbjkyh8EXNDN#vqKeN1G=>jmb`mHIZL>a9?{J~DB<3pmHSog&Y7iChz|tEssH$Z6HG zFnu<3ueP%t;Ce%9?X;~U%5%FN22%P7Pgbm=3DC)@(|l~UT46}0r8r|p+HLSXpaF>E zBhCK+qUz@*U&{o|;}YaeJ%;SWj+VxuMjvVakiI+FE!n^kY(DbeFgFXr_wPw~a~v#< z-c~JX`fPmB;AYjd<^Hbkt8OOgSMReFLYOe?Y2uH!=01-t?+Tuz#fT-n7H;f~jHtZO z2^M2X%!?5G9{r4TZf%sEeF?q^>>l(jUMZ`#xQ)-8u>+~uSO(iDR>SExJw^P;S zwwu7}*42u%ocd$W1*(?EQ-y`ZD+lQ7mYj6b4^|F3LY!}tV;?=~ss5kOii9o9+~CVY zz<(@`{co4JRBshv^S8D8EKDSAids^Z{Qqnj@|>i`uzxy0_3Y)U>gC4}*A85)P;2Qs zkSv2qC}1}^-d8;K^^x&tZf^8kGF`O|wu*rUlR$&IY_Gewy}qy@x2tF`|1+*1{|XKX ztZwKbW^u$`fHq8mb8$X1_~`qLgyDKFazp?ihlFHd@F*nT|2OsAwVX-!aj@VP7dh{z zW$WPg4ap-gyycGNr{PxRc;0Abcl&|GLibiJWz<}?X2>S;v~rHgrIje9g{y4hq8=0( zNu$d_WJvq2XNR-x9mVnD#I(izVoEkt59Kbn#1=kKNEaWjn7`ORwd)d^y05hy5LM1_gJ1A-_vxn5z%3h}Oi}fQA0@!Jm{ZQ02ccQt z9Slxq(0)Bu%fHh&0&0(p8QKplYwE0^OT>2Ujyi#jwrR|I{i7dQ((Y%>Y z!#r8v>VMd84$)|o{5$clz6Zl;m2qwqT zbS@=qv(n!g{^0?pY5|uL#LtutkX3^7ejD^BGVgA;!g5+2!%x)@z;ATnJJBM;6xK5U z=%X$#-nXGU-bJl{hAzw^tA`$UM1MR|bxozhwqCwvp%r8o^*rArJ<^Jc8iyA?+>6j)vqEYYO=}YuiEZ%B=={LI=TFO9a$R(1 zjZh6uK;*BhxSbUaFuZ+34ZtK+!C)@(G|UJqc+xKSU_Lbi{ZMPU*bQlPWXiaafVvy% zLH?CobK=#Z^!fNOa5go^FJ}t7Tr)DT9zPzJ91D6eNz*xOSh^%ix@^UjwlbOUXw~Wt z!dH3tZH`3u3-tv>-Vs;Ur=~L&6kSyAI|m$k7CwdQalnbR$$LZLerd|gqztoVt0ciE z`!wPDAir>G<)}Hpi{xJZh|$#x=UtP?7Ue0MS&^P<5COJUzy5433dY)Qra*1{uI=ly z(R%%;vr(08TZB0{7kCuc4MWTWyPuz<-K`Tt(-UQS-}e{Z6I1R8wXUCtT%d6tz`-z= z@iubv0IwGPcn8h8JTcIgb5@nTX=u?FYE8u2zQuRsrUb6fpZRJN2v68~C_=A?F{Qv(WN!i8Vx6qA+n6AT=S7{Y(Xr3ypN#=Y_(P$*z%H|VpP zuBNNVY!&y-FVnE2aY7Jnw8U_@ou1;*0V8ZmmjAkLUVTnxHEmd^X+RRr``*ya zK^De2>)+7eWxDTU&}#qWxE;A*(|kQVHtg^DlNe?>O9fR++VqN?(x>o=-+2&V^$*(u z7?LFOsXWVIYC8AIA~^GIx4*OcZ(1lqYBftQ#U1mpOe5_aD{Gu4@>j2(528||82!p7 zKr+O|pgVU&>Hy)H0~a;Oa{6a6R(|(&UwyNJT-Cqj*BAMSt12`SS0C`L!hW2~c&?W) z>`3Br^W}2*fjw+ko3ffy3<}JFH`8As7b1cBFNqU#kQ28eX=f4*G;~jUvUH-1x{^HM z+UItZ>$U^*5k(bRtv*>=+k+m)F)u~W)@0m2FVIRl`Y>fbIaXzNR+5llb0=mW8-M6;9r5-`;PQ??uHloILcQLW~8M|4NN0HE#NC7-)KaJd??cJzHqPHEER`OCATBdkn+(AAEhftl)kv zaVn`~ut>Oum@pNH@)eumHXnJun#;(>vXm>Xcs~A_t;2(=8c;G(Y-G7!hV`}2BH4wo2nB_Bi*&b*xR{FdD9YG_V3Gq>jfiz<85<%t(J>s4S%!t za+j;)r>!dB+6q~{M1uo=mT0+m=_L&~m%FiPPIDv0&@gAfE0Uv*9#Qc5(KAg~(7^4A zc&F;4CfTc?I%bs_s9~Pf>EI(6-ni~6RD|r^MzP#1W;X%%d`c+D2w8QmL(q^CNgKkz zHO-uaQIX?MVdR=h+P|H?-Ntw{n;T^`1vKy;J5i-Ri(jGdh{lxl(&Qw&#~5IRWnRn{ju@tz0*F<&FxXqtC#97; zN9f;AhVXsesl65B&o|uQH4+Uck3npf+m_}i3%>bPqveK9?A0a}k#fZZrim~X+`mWc zy;He(wy_(UtSn%_v4K+s3N5E40RP6^ZXK1?*U8JLR4_8Ys3{#@w`}>nOon4zU5)YW zQ2c98o#@dN<7Q~INI@$kHo6F+r36}9ncRAb1&MDQ9I2+qj#m7yTYaKIe0ohA^TFUhQsx$~7Afa(5lb0V8d~xGxovmQe^NUM zz4HR?QB>KRlfi-JXFIEH8b4%o$3?bmC*ncf&si#HZ1!fKa_f0fkw;omZBN*T+G_1cS$jlmnl=FK3*6V%NJ0UULkJFC@ou)eBtx(H{Xf&U zAjwIOV>#g8wurl^s&_Nei}F&)4gl-O)$2Ak7Q)Y*kU(ijN8@ByBeQzG$_uWgpvN*XEQ2!ziFI*F$nJgb!zY?QYqvI>!I!1$)LQD zrfY=SJq{8hpk+tNQvvv^Y`3D?RDV(RWE~^IezWh@XR-8jn_eILh03=RXL#=qc=9>K zUKR9+dHKOk#C&*trQY+~QDGOvf60+ecKQ)0$X@aC{akXTC1=0WGKrG@?eCT&m<8l6 zYJgJ-4M7W&0gf4Qt<+0J9{d=FH2)_j)nx!OcJxS~_-%rp@kkXDa+OFHb!&3vE zv*b=LoZhgfOzv+S{n*{Bab@CpE%TFG35A}gGb7=(xJsGiQbnGrE(kDJwW4Yd0g_V5 zg+5gf2ES_ZVt4s7TzeKYn)lG(9ojJynWJ0W@Qxh6LXe(4rAe(TX(^K7hQ%6!r51}I zhDRx?O&_P{d-qII`Y@;dv9SNer7Royk5QNvs)LzWFt2!Q( zKjMCz6N-Sh6R?F1CG!Q}s1U*`(>G?nj3^e;x^EhY==boP=x7!!^!0#hlw#ReVud_E zu+WQ&F7S@zPJ|XDX!^ai`qYUv%64SYc_Mvt0Rq^Jt_w=2ylPrdUMYy*^_;L9F&Cl?U?KKXfF+4N%E*}akEG5IbXgoHCO8k7%Tkh20GbM93h7n9v&s^sx7 z$HdfateXX|ALk8k-skq#QnYC zQmFAM=IVEP`9zBwohWfw_Q{^el1V2uhH)VVhs60IC zlKRb>(6IVK8TY)7I_$FSSDC72J*z>tfn+OLa;E`+*3c4vZvjP&R|ZObRHi(i4JstC zGcJ5qa32C!#5F!1xV<0~fTsqBSif;?y^J{%*QwQ&qHrIw2Y4WIlRw_Rnfh4N?S9X~ z^77;`1v~2SAZYH-f#s|THPzkT(8;EWP_-X{OR1s%G{S5al8f8G$B#Uh@Wgez$p)yt zjJD!+%YVG^4!KYlB%tk#BT4!^Qrw9)q1@Hw|Hl>pQXNgJ*?W1>i1J?tiXJs>OQ+Lw zviq(nt|@;}9P>=jZy$29B9PA`zi?J|``41Eq1^1949UW?>|!VB+`2Ox z%p=$mi+kQsK+&Dv(YS_cpSfy}%i4*=mw)6Vea8rT+S(6Nqpg?uc}El>6@{}+H%sA- z9(I+UJ4s3f3B^?Yl0lm5RDM((}Rd)s#FLb~U z+KoL=9`L}eWlDLt362Mf=geQDr}>6`Iy>VlW$yCNf!8%QVJkZn=;)}q>9T?3KE}r) z+R7`upD{E;aUj)wf!2?fikeb&ZBD$m(!f%VLYUTs^#hjdu#>#noU7op#=ueqJZHL# ztzr}h_Uu5c&ug{cVH6*w6`E)GK&o?A@9chwk@fFxx3COhvXl2;%G;mKFdQ2j=!;2>XZ>iz?eVQCf4L6>rKo9}Bw&_a&2aZb$! zs;jj4;)pZ+tRM!*L(w)XDn>(Rx{qqb6 z-giY_5|en$j0t&r4^eqSQr=CRM0F6OcnynHkCRIS--zBfH26{ z*346B7C+_ASzYDrumf}PQ()k1v>IC~?lG+f6d@7Edy5W-@Y8f49znmFkR>cHDs=vF znsXx5x>Tw*0oC^sc+Rr8?*pyUFVtPCz zbs78Ix3^|j-MAasM4`!5j?gwalGT!3FWJZI)rPME%|<(C>(*>L;G!+LD```I;4o<< z0AX~o?+-t>{61fX;Az1lhJ=)g1rycKa=C_IhE!A9EMoHZF6@+kuLE_r+K)uRBg8C) zY}yL^XTDR9DcI*-TibA^QJCW4MN)MmZekoz1uFTGisyHaZfK;gfBAKFL5tlm{;{P2{4iUJx45L`$$kBjsYJ@OA}u{W+%(F5o}>{ z@y|EvwMFHRd&)>ZH=ykah@aGn1B|N7Pj|up f5GjQISQVWMVmSAxBK~jAl`FbhMw(UXPhR~We}|TB literal 76719 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 LN4Z(iCi?#X?3*k` diff --git a/project/materials/npcs.png b/project/materials/npcs.png index a2830bc9ceeb18894cca657c64b4de92ac9b178b..9f02067ae1c84f9eac7ff558fee18607e2a96bde 100644 GIT binary patch literal 17272 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 diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 83661cb1..2fc4b1c5 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -49,6 +49,8 @@ (已完成!) 素材列表选择 (已完成!) 油漆桶,动态更改地图大小 地图拉框选择复制剪切删除 +(已完成!) 素材替换 +大屏幕下放大游戏界面 ------------- From d4836d492b6cda9f8d48b44b88eac271015f6725 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 16 May 2020 10:38:02 +0800 Subject: [PATCH 03/80] Fix bug --- _server/table/data.comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index 238b7c62..4e6f5320 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -69,7 +69,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "material", "_range": "editor.mode.checkUnique(thiseval)", - "_directory": "./project/sounds/", + "_directory": "./project/bgms/", "_transform": (function (one) { if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || end.endsWith('.wav')) return one; From 7d05e23d4c52b185ee25e8e4aacef581ceeb3f2d Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 16 May 2020 11:21:33 +0800 Subject: [PATCH 04/80] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=97=B6=E5=88=87=E6=8D=A2=E7=9B=AE=E6=A0=87=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_mode.js | 14 ++++++-------- _server/editor_table.js | 8 ++++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/_server/editor_mode.js b/_server/editor_mode.js index 5ca0f7b0..d7b8e728 100644 --- a/_server/editor_mode.js +++ b/_server/editor_mode.js @@ -97,14 +97,12 @@ editor_mode = function (editor) { } editor_mode.prototype.onmode = function (mode, callback) { - //setTimeout(function(){ - if (editor_mode.mode != mode) { - if (mode === 'save') editor_mode.doActionList(editor_mode.mode, editor_mode.actionList, callback); - if (editor_mode.mode === 'nextChange' && mode) editor_mode.showMode(mode); - if (mode !== 'save') editor_mode.mode = mode; - editor_mode.actionList = []; - } - //}) + if (editor_mode.mode != mode) { + if (mode === 'save') editor_mode.doActionList(editor_mode.mode, editor_mode.actionList, callback); + if (editor_mode.mode === 'nextChange' && mode) editor_mode.showMode(mode); + if (mode !== 'save') editor_mode.mode = mode; + editor_mode.actionList = []; + } } editor_mode.prototype.showMode = function (mode) { diff --git a/_server/editor_table.js b/_server/editor_table.js index 1788515b..bfb38185 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -224,8 +224,10 @@ editor_table_wrapper = function (editor) { var listen = function (guids) { // 每个叶节点的事件绑定 + var tableid = editor.util.guid(); + editor.mode.currentTable=tableid; guids.forEach(function (guid) { - editor.table.guidListen(guid, obj, commentObj) + editor.table.guidListen(guid, tableid, obj, commentObj) }); } return { "HTML": outstr.join(''), "guids": guids, "listen": listen }; @@ -309,7 +311,7 @@ editor_table_wrapper = function (editor) { * 监听一个guid对应的表格项 * @param {String} guid */ - editor_table.prototype.guidListen = function (guid, obj, commentObj) { + editor_table.prototype.guidListen = function (guid, tableid, obj, commentObj) { // tr>td[title=field] // >td[title=comment,cobj=cobj:json] // >td>div>input[value=thiseval] @@ -318,6 +320,7 @@ editor_table_wrapper = function (editor) { var field = thisTr.children[0].getAttribute('title'); var cobj = JSON.parse(thisTr.children[1].getAttribute('cobj')); var modeNode = thisTr.parentNode; + thisTr.setAttribute('tableid',tableid) while (!editor_mode._ids.hasOwnProperty(modeNode.getAttribute('id'))) { modeNode = modeNode.parentNode; } @@ -341,6 +344,7 @@ editor_table_wrapper = function (editor) { */ editor_table.prototype.onchange = function (guid, obj, commentObj, thisTr, input, field, cobj, modeNode) { editor_mode.onmode(editor_mode._ids[modeNode.getAttribute('id')]); + if (editor.mode.currentTable!=thisTr.getAttribute('tableid')) return; var thiseval = null; if (input.checked != null) input.value = input.checked; try { From f264ba9e533eae0d97c163438155d8fa1a678335 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 16 May 2020 11:51:26 +0800 Subject: [PATCH 05/80] fix types of some eval-blocks --- _server/MotaAction.g4 | 32 ++++++++++++-------------------- _server/editor_blockly.js | 10 +++++----- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index bc5e64cd..ef872b1f 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2510,6 +2510,10 @@ expression | idString_e | evFlag_e | evTemp_e + | enemyattr_e + | blockId_e + | blockCls_e + | equip_e | evalString_e @@ -2597,13 +2601,11 @@ return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_3_e +enemyattr_e : '怪物' IdString '的' EnemyId_List -/* idString_3_e -colour : this.idstring_eColor +/* enemyattr_e default : ['greenSlime',"攻击"] //todo 将其output改成'idString_e' var code = 'enemy:'+IdString_0+':'+EnemyId_List_0; @@ -2611,39 +2613,33 @@ return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_4_e +blockId_e : '图块ID:' Int ',' Int -/* idString_4_e -colour : this.idstring_eColor +/* blockId_e default : [0,0] var code = 'blockId:'+Int_0+','+Int_1; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_5_e +blockCls_e : '图块类别:' Int ',' Int -/* idString_5_e -colour : this.idstring_eColor +/* blockCls_e default : [0,0] var code = 'blockCls:'+Int_0+','+Int_1; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_6_e +equip_e : '装备孔:' Int -/* idString_6_e -colour : this.idstring_eColor +/* equip_e default : [0] var code = 'equip:'+Int_0; return [code, Blockly.JavaScript.ORDER_ATOMIC]; @@ -2901,10 +2897,6 @@ this.evisitor.mapColor=175; delete(this.block('negate_e').inputsInline); this.block('idString_1_e').output='idString_e'; this.block('idString_2_e').output='idString_e'; -this.block('idString_3_e').output='idString_e'; -this.block('idString_4_e').output='idString_e'; -this.block('idString_5_e').output='idString_e'; -this.block('idString_6_e').output='idString_e'; this.block('evFlag_e').output='idString_e'; this.block('evTemp_e').output='idString_e'; */ diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index c1908d51..f47ca6d2 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -227,10 +227,10 @@ editor_blockly = function () { MotaActionBlocks['idString_e'].xmlText(), MotaActionBlocks['idString_1_e'].xmlText(), MotaActionBlocks['idString_2_e'].xmlText(), - MotaActionBlocks['idString_3_e'].xmlText(), - MotaActionBlocks['idString_4_e'].xmlText(), - MotaActionBlocks['idString_5_e'].xmlText(), - MotaActionBlocks['idString_6_e'].xmlText(), + MotaActionBlocks['enemyattr_e'].xmlText(), + MotaActionBlocks['blockId_e'].xmlText(), + MotaActionBlocks['blockCls_e'].xmlText(), + MotaActionBlocks['equip_e'].xmlText(), MotaActionBlocks['evalString_e'].xmlText(), ], '常见事件模板':[ @@ -1011,7 +1011,7 @@ function omitedcheckUpdateFunction(event) { } // 对怪物ID提供补全 - if ((type == 'idString_3_e' || type == 'battle_s' || type == 'setEnemy_s') && name == 'IdString_0') { + if ((type == 'enemyattr_e' || type == 'battle_s' || type == 'setEnemy_s') && name == 'IdString_0') { return filter(allEnemys, content); } From 80a5d6491842e49826f4fc333855a4611149763d Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 16 May 2020 12:41:52 +0800 Subject: [PATCH 06/80] =?UTF-8?q?=E8=B0=83=E6=95=B4blockly=E4=B8=ADidStrin?= =?UTF-8?q?g=E7=B1=BB=E5=88=AB=E7=9A=84id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 39 ++++++++++++++++++--------------------- _server/editor_blockly.js | 12 ++++++------ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index ef872b1f..c92c3f26 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2507,9 +2507,11 @@ expression : expression Arithmetic_List expression | negate_e | bool_e + | idFixedList_e + | idFlag_e + | idTemp_e + | idIdList_e | idString_e - | evFlag_e - | evTemp_e | enemyattr_e | blockId_e | blockCls_e @@ -2575,27 +2577,23 @@ var code = IdString_0; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_1_e +idIdList_e : Id_List ':' IdText -/* idString_1_e +/* idIdList_e colour : this.idstring_eColor default : [null,"自定义flag"] -//todo 将其output改成'idString_e' var code = MotaActionFunctions.replaceFromName(MotaActionFunctions.replaceToName(Id_List_0+':'+IdText_0)); return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -//这一条不会被antlr识别,总是会被归到idString_e -idString_2_e +idFixedList_e : FixedId_List -/* idString_2_e +/* idFixedList_e colour : this.idstring_eColor -//todo 将其output改成'idString_e' var code = FixedId_List_0; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; @@ -2607,7 +2605,6 @@ enemyattr_e /* enemyattr_e default : ['greenSlime',"攻击"] -//todo 将其output改成'idString_e' var code = 'enemy:'+IdString_0+':'+EnemyId_List_0; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; @@ -2646,11 +2643,11 @@ return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -evFlag_e +idFlag_e : '独立开关' Letter_List -/* evFlag_e +/* idFlag_e colour : this.idstring_eColor default : ["A"] var code = "switch:"+Letter_List_0; @@ -2658,11 +2655,11 @@ return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; -evTemp_e +idTemp_e : '临时变量' Letter_List -/* evTemp_e +/* idTemp_e colour : this.idstring_eColor default : ["A"] var code = "temp:"+Letter_List_0; @@ -2895,10 +2892,10 @@ this.evisitor.mapColor=175; /* Function_1 delete(this.block('negate_e').inputsInline); -this.block('idString_1_e').output='idString_e'; -this.block('idString_2_e').output='idString_e'; -this.block('evFlag_e').output='idString_e'; -this.block('evTemp_e').output='idString_e'; +this.block('idIdList_e').output='idString_e'; +this.block('idFixedList_e').output='idString_e'; +this.block('idFlag_e').output='idString_e'; +this.block('idTemp_e').output='idString_e'; */ /* Functions @@ -3822,12 +3819,12 @@ ActionParser.prototype.tryToUseEvFlag_e = function(defaultType, args, isShadow, var match=/^switch:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return MotaActionBlocks['evFlag_e'].xmlText(args, isShadow, comment); + return MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment); } match=/^temp:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return MotaActionBlocks['evTemp_e'].xmlText(args, isShadow, comment); + return MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment); } return MotaActionBlocks[defaultType||'evalString_e'].xmlText(args, isShadow, comment); } diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index f47ca6d2..75754601 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -97,7 +97,7 @@ editor_blockly = function () { ], '数据相关':[ MotaActionBlocks['setValue_s'].xmlText([ - MotaActionBlocks['idString_1_e'].xmlText(['status','生命']), '=', '', false + MotaActionBlocks['idIdList_e'].xmlText(['status','生命']), '=', '', false ]), MotaActionBlocks['setEnemy_s'].xmlText(), MotaActionBlocks['setFloor_s'].xmlText(), @@ -217,16 +217,16 @@ editor_blockly = function () { ], '值块':[ MotaActionBlocks['setValue_s'].xmlText([ - MotaActionBlocks['idString_1_e'].xmlText(['status','生命']), '=', '', false + MotaActionBlocks['idIdList_e'].xmlText(['status','生命']), '=', '', false ]), MotaActionBlocks['expression_arithmetic_0'].xmlText(), - MotaActionBlocks['evFlag_e'].xmlText(), - MotaActionBlocks['evTemp_e'].xmlText(), + MotaActionBlocks['idFlag_e'].xmlText(), + MotaActionBlocks['idTemp_e'].xmlText(), MotaActionBlocks['negate_e'].xmlText(), MotaActionBlocks['bool_e'].xmlText(), MotaActionBlocks['idString_e'].xmlText(), - MotaActionBlocks['idString_1_e'].xmlText(), - MotaActionBlocks['idString_2_e'].xmlText(), + MotaActionBlocks['idIdList_e'].xmlText(), + MotaActionBlocks['idFixedList_e'].xmlText(), MotaActionBlocks['enemyattr_e'].xmlText(), MotaActionBlocks['blockId_e'].xmlText(), MotaActionBlocks['blockCls_e'].xmlText(), From d5989d9d53ba399b95322ecfc540378dfb0597b9 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 16 May 2020 12:54:53 +0800 Subject: [PATCH 07/80] expandevalblock --- _server/MotaAction.g4 | 49 ++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index c92c3f26..ebd6571d 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2946,7 +2946,7 @@ ActionParser.prototype.parse = function (obj,type) { var text_choices = null; for(var ii=obj.length-1,choice;choice=obj[ii];ii--) { text_choices=MotaActionBlocks['levelCase'].xmlText([ - MotaActionBlocks['evalString_e'].xmlText([choice.need]),choice.title,choice.clear||false,this.parseList(choice.action),text_choices]); + this.expandEvalBlock([choice.need]),choice.title,choice.clear||false,this.parseList(choice.action),text_choices]); } return MotaActionBlocks['level_m'].xmlText([text_choices]); @@ -3403,14 +3403,14 @@ ActionParser.prototype.parseAction = function() { break case "setValue": this.next = MotaActionBlocks['setValue_s'].xmlText([ - this.tryToUseEvFlag_e('idString_e', [data.name]), data["operator"]||'=', - MotaActionBlocks['evalString_e'].xmlText([data.value]), + this.expandIdBlock([data.name]), data["operator"]||'=', + this.expandEvalBlock([data.value]), data.norefresh || false, this.next]); break; case "setEnemy": this.next = MotaActionBlocks['setEnemy_s'].xmlText([ - data.id, data.name, MotaActionBlocks['evalString_e'].xmlText([data.value]), this.next]); + data.id, data.name, this.expandEvalBlock([data.value]), this.next]); break; case "setFloor": this.next = MotaActionBlocks['setFloor_s'].xmlText([ @@ -3439,14 +3439,14 @@ ActionParser.prototype.parseAction = function() { case "if": // 条件判断 if (data["false"]) { this.next = MotaActionBlocks['if_s'].xmlText([ - this.tryToUseEvFlag_e('evalString_e', [data.condition]), + this.expandEvalBlock([data.condition]), this.insertActionList(data["true"]), this.insertActionList(data["false"]), this.next]); } else { this.next = MotaActionBlocks['if_1_s'].xmlText([ - this.tryToUseEvFlag_e('evalString_e', [data.condition]), + this.expandEvalBlock([data.condition]), this.insertActionList(data["true"]), this.next]); } @@ -3462,11 +3462,10 @@ ActionParser.prototype.parseAction = function() { var case_caseList = null; for(var ii=data.caseList.length-1,caseNow;caseNow=data.caseList[ii];ii--) { case_caseList=MotaActionBlocks['switchCase'].xmlText([ - this.isset(caseNow.case)?MotaActionBlocks['evalString_e'].xmlText([caseNow.case]):"值",caseNow.nobreak,this.insertActionList(caseNow.action),case_caseList]); + this.isset(caseNow.case)?this.expandEvalBlock([caseNow.case]):"值",caseNow.nobreak,this.insertActionList(caseNow.action),case_caseList]); } this.next = MotaActionBlocks['switch_s'].xmlText([ - // MotaActionBlocks['evalString_e'].xmlText([data.condition]), - this.tryToUseEvFlag_e('evalString_e', [data.condition]), + this.expandEvalBlock([data.condition]), case_caseList,this.next]); break; case "choices": // 提供选项 @@ -3483,30 +3482,28 @@ ActionParser.prototype.parseAction = function() { break; case "for": // 循环遍历 this.next = MotaActionBlocks['for_s'].xmlText([ - this.tryToUseEvFlag_e('evalString_e', [data.name]), + this.expandEvalBlock([data.name]), data.from || 0, data.to || 0, data.step || 0, this.insertActionList(data.data), this.next]); break; case "forEach": // 循环遍历列表 this.next = MotaActionBlocks['forEach_s'].xmlText([ - this.tryToUseEvFlag_e('evalString_e', [data.name]), + this.expandEvalBlock([data.name]), JSON.stringify(data.list), this.insertActionList(data.data), this.next]); break; case "while": // 前置条件循环处理 this.next = MotaActionBlocks['while_s'].xmlText([ - // MotaActionBlocks['evalString_e'].xmlText([data.condition]), - this.tryToUseEvFlag_e('evalString_e', [data.condition]), + this.expandEvalBlock([data.condition]), this.insertActionList(data.data), this.next]); break; case "dowhile": // 后置条件循环处理 this.next = MotaActionBlocks['dowhile_s'].xmlText([ this.insertActionList(data.data), - // MotaActionBlocks['evalString_e'].xmlText([data.condition]), - this.tryToUseEvFlag_e('evalString_e', [data.condition]), + this.expandEvalBlock([data.condition]), this.next]); break; case "break": // 跳出循环 @@ -3815,7 +3812,7 @@ ActionParser.prototype.Colour = function(color) { return color?JSON.stringify(color).slice(1,-1):null; } -ActionParser.prototype.tryToUseEvFlag_e = function(defaultType, args, isShadow, comment) { +ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { var match=/^switch:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] @@ -3826,7 +3823,25 @@ ActionParser.prototype.tryToUseEvFlag_e = function(defaultType, args, isShadow, args[0]=match[1] return MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment); } - return MotaActionBlocks[defaultType||'evalString_e'].xmlText(args, isShadow, comment); + return MotaActionBlocks['idString_e'].xmlText(args, isShadow, comment); +} + +ActionParser.prototype.expandEvalBlock = function(args, isShadow, comment) { + var match=/^switch:([A-Z])$/.exec(args[0]) + if(match){ + args[0]=match[1] + return MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment); + } + match=/^temp:([A-Z])$/.exec(args[0]) + if(match){ + args[0]=match[1] + return MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment); + } + // todo + // 1. 将「数值设置」的名称尽可能替换掉;如果是 FixedId_List 那就用它;否则如果是 独立开关/临时变量 那就用对应的;否则用 A:B 的那个框 + // 2. 将「值块」尽可能替换掉,主要是「独立开关」,「临时变量」,「非 - 独立开关」,「非-临时变量」;以及true/false替换成勾选框;对于其他变量/属性等之类也尽可能进行替换 + + return MotaActionBlocks['evalString_e'].xmlText(args, isShadow, comment); } MotaActionFunctions.actionParser = new ActionParser(); From a67cc8595bc3e44de80c345597a7e181136514a1 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 16 May 2020 15:00:53 +0800 Subject: [PATCH 08/80] expand id --- _server/MotaAction.g4 | 45 +++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index ebd6571d..95e2450e 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3812,31 +3812,48 @@ ActionParser.prototype.Colour = function(color) { return color?JSON.stringify(color).slice(1,-1):null; } -ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { - var match=/^switch:([A-Z])$/.exec(args[0]) +ActionParser.prototype.matchId = function(args, isShadow, comment) { + var rt=function(xml){ + return {xml:xml,ret:true} + } + var match = /nothing/.exec('nothing') + // 固定列表 + var FixedId_List=MotaActionBlocks.idFixedList_e.json.args0[0].options; // [["生命", "status:hp"], ...] + match=new RegExp('^('+FixedId_List.map(function(v){return v[1]}).join('|')+')$').exec(args[0]) + if(match){ + return rt(MotaActionBlocks['idFixedList_e'].xmlText(args, isShadow, comment)); + } + // 独立开关 + match=/^switch:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment); + return rt(MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment)); } + // 临时变量 match=/^temp:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment); + return rt(MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment)); } + // id列表 + var Id_List = MotaActionBlocks.idIdList_e.json.args0[0].options; // [["变量", "flag"], ...] + match=new RegExp('^('+Id_List.map(function(v){return v[1]}).join('|')+'):([a-zA-Z0-9_\\u4E00-\\u9FCC]+)$').exec(args[0]) + if(match){ + args=[match[1],match[2]].concat(args.slice(1)) + return rt(MotaActionBlocks['idIdList_e'].xmlText(args, isShadow, comment)); + } + return {xml:'',ret:false} +} + +ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { + var ret=this.matchId(args, isShadow, comment) + if (ret.ret) return ret.xml; return MotaActionBlocks['idString_e'].xmlText(args, isShadow, comment); } ActionParser.prototype.expandEvalBlock = function(args, isShadow, comment) { - var match=/^switch:([A-Z])$/.exec(args[0]) - if(match){ - args[0]=match[1] - return MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment); - } - match=/^temp:([A-Z])$/.exec(args[0]) - if(match){ - args[0]=match[1] - return MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment); - } + var ret=this.matchId(args, isShadow, comment) + if (ret.ret) return ret.xml; // todo // 1. 将「数值设置」的名称尽可能替换掉;如果是 FixedId_List 那就用它;否则如果是 独立开关/临时变量 那就用对应的;否则用 A:B 的那个框 // 2. 将「值块」尽可能替换掉,主要是「独立开关」,「临时变量」,「非 - 独立开关」,「非-临时变量」;以及true/false替换成勾选框;对于其他变量/属性等之类也尽可能进行替换 From 8a890bb55ea5d548beceae813f4d9c00c37feaf6 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 16 May 2020 22:34:17 +0800 Subject: [PATCH 09/80] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A5=E6=A1=A3?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_table.js | 3 +- libs/events.js | 24 +++++++---- v2.x-final更新.txt | 4 ++ v266-v2.7接档说明 | 91 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 9 deletions(-) create mode 100644 v266-v2.7接档说明 diff --git a/_server/editor_table.js b/_server/editor_table.js index 1788515b..40dad003 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -27,7 +27,8 @@ editor_table_wrapper = function (editor) { return /* html */`\n` } editor_table.prototype.checkboxSet = function (value, keys, prefixStrings) { - if (!(value instanceof Array)) value = []; + if (value == null) value = []; + if (!(value instanceof Array)) value = [value]; keys=Array.from(keys) prefixStrings=Array.from(prefixStrings) for (var index = 0; index < value.length; index++) { diff --git a/libs/events.js b/libs/events.js index 460e676c..2a613771 100644 --- a/libs/events.js +++ b/libs/events.js @@ -937,13 +937,6 @@ events.prototype._popEvents = function (current, prefix) { events.prototype.insertAction = function (action, x, y, callback, addToLast) { if (core.hasFlag("__statistics__")) return; if (core.status.gameOver) return; - - // ------ 判定commonEvent - var commonEvent = this.getCommonEvent(action); - if (commonEvent instanceof Array) { - // 将公共事件视为一个do-while事件插入执行,可被break跳出 - action = [{"type": "dowhile", "condition": "false", "data": commonEvent}]; - } if (!action) return; action = this.precompile(action); @@ -960,6 +953,16 @@ events.prototype.insertAction = function (action, x, y, callback, addToLast) { } } +////// 往当前事件列表之前或之后添加一个公共事件 ////// +events.prototype.insertCommonEvent = function (name, x, y, callback, addToLast) { + var commonEvent = this.getCommonEvent(name); + if (!commonEvent) { + if (callback) callback(); + return; + } + this.insertAction(commonEvent, x, y, callback, addToLast); +} + ////// 获得一个公共事件 ////// events.prototype.getCommonEvent = function (name) { if (!name || typeof name !== 'string') return null; @@ -1562,7 +1565,7 @@ events.prototype._action_insert = function (data, x, y, prefix) { } if (data.name) { // 公共事件 core.setFlag('arg0', data.name); - core.insertAction(data.name); + core.insertCommonEvent(data.name); } else { var loc = this.__action_getLoc(data.loc, x, y, prefix); @@ -1632,6 +1635,11 @@ events.prototype._action_setValue = function (data, x, y, prefix) { core.doAction(); } +events.prototype._action_addValue = function (data, x, y, prefix) { + data.operator = '+='; + this._action_setValue(data, x, y, prefix); +} + events.prototype._action_setEnemy = function (data, x, y, prefix) { this.setEnemy(data.id, data.name, data.value, prefix); core.doAction(); diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 2fc4b1c5..680d4953 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -51,6 +51,10 @@ 地图拉框选择复制剪切删除 (已完成!) 素材替换 大屏幕下放大游戏界面 +最近使用/最常使用的图块 +loader并行加载 +合并items.js +增加fonts目录,全塔属性增加fonts引用 ------------- diff --git a/v266-v2.7接档说明 b/v266-v2.7接档说明 new file mode 100644 index 00000000..baac3b03 --- /dev/null +++ b/v266-v2.7接档说明 @@ -0,0 +1,91 @@ +V2.6.6 -> V2.7 接档说明: + +此版本仅可接档【地图】,【事件】和【怪物数据】。脚本编辑等不可进行接档。 + +请严格按照此说明进行每一步操作以避免可能的bug。接档前请做好备份。 + +接档准备: + - Visual Studio Code + - 需要进行接档的V266的样板 + - 两个全新的V2.7的样板(一个用于接档结果,一个用于抄部分修改后的内容) + +接档步骤: +1. 将V266的样板中,【project】目录下的如下文件和文件夹,直接复制并覆盖到V2.7的样板中的project目录下: + - animates/ + - floors/ + - enemys.js + - events.js + - icons.js + - items.js + - maps.js + +2. 将V266样板中,【project/images】目录下的图片,拆分后放入V2.7的对应图片目录下: + - 系统默认图片放入materials中 + - 自动元件放入autotiles中 + - 额外素材放入tilesets中 + - 使用到的其他图片放入images中 +【请注意】hero.png在V2.7请放入images目录(而不是materials目录) + +3. 将V266样板中,【project/sounds】目录下的音乐和音效,分别放入V2.7的bgms和sounds目录。 + +4. 使用VSCode直接分别打开V266和V2.7的【project/data.js】,并执行以下操作: + - 将【main】一项的全部内容从V2.6.6直接复制到V2.7 + - 将【firstData】一项中的,【title】,【name】,【floorId】,【hero】直接复制到 + - 在注册的图片中,请手动补上【hero.png】项 + - 在【hero】中【name】上方增加 "image": "hero.png" + - 在【hero】中【steps】上方新增一项 "followers": [] + - 将【hero】中的【experience】改成【exp】 + - 删除【hero】中【items】中的【keys】项 +请勿覆盖或复制其他内容(例如全塔数值或全局开关),否则可能导致编辑器无法打开。 + +5. 使用VSCode分别打开接档后的V2.7和纯净的V2.7的【project/items.js】,并执行以下操作: + - 将三色钥匙的cls从"keys"改成"tools",并新增 "hideInToolbox": true + - 如下道具的【useItemEffect】和【canUseItemEffect】有所改变,请直接从纯净的V2.7覆盖到你要接档的V2.7: + - earthquake, pickaxe, icePickaxe, snow, bigKey, bomb, upFly, downFly + - 如果确认你的塔不会使用该道具,可忽略 + - 黄宝石和生命魔杖增加了【useItemEvent】;如需使用请进行复制 + +6. 使用VSCode打开接档后的V2.7的【project/icons.js】,并执行如下操作: + - 找到【terrains】中的三色墙和六色门,删除对应的这几行 + - yellowWall, blueWall, whiteWall, yellowDoor, blueDoor, redDoor, greenDoor, specialDoor, steelDoor + - (在V2.7中,terrains不再保留门的引用,门效果仅由animates决定) + - 将【terrains】中的 blueShop-left, blueShop-right, pinkShop-left, pinkShop-right 分别重命名为 + blueShopLeft, blueShopRight, pinkShopLeft, pinkShopRight + +7. 使用VSCode分别打开接档后的V2.7和纯净的V2.7的【project/maps.js】,并执行以下操作: + - 将纯净的V2.7中如下ID的行,直接替换掉要接档的V2.7: + - yellowWall, whiteWall, blueWall, blueShopLeft, blueShopRight, pinkShopLeft, pinkShopRight, + lavaNet, poisonNet, weakNet, curseNet, yellowDoor, blueDoor, redDoor, greenDoor, specialDoor, steelDoor, + arrowUp, arrowDown, arrowLeft, arrowRight, light + - 将所有的 "noPass":false 改成 "canPass":true 原来是 "noPass":true 的请直接删除 + - V2.7中,不再在图块属性使用noPass,而是全部改成了canPass;请检查此文件的全部noPass是否被替换或删除 + +8. 到这一步后已经可以打开编辑器了。 + - 如果打开编辑器白屏或报错,请检查一下上面是否每个步骤都完成了 + - 如果还有问题请联系小艾 + +9. 在编辑器中,切换到「全塔属性」标签,并进行修改: + - V2.7中,全局商店的结构完全重写了,请重新实现一遍 + - 全塔开关中,是否在状态栏显示XXX改成在同一个方框中 + - 删除了部分全局数值和全塔开关 + +10. 在编辑器中,切换到「脚本编辑」标签,并进行修改: + - setInitData已经被删除;移动到了开场剧情的startText中 + - 删除了afterChangeLight和afterPassNet脚本 + - 很多函数的实现有所改变,改变较为严重的有: + - resetGame, changingFloor, afterBattle, getDamageInfo, saveData, loadData, + updateStatusBar, updateCheckBlock, moveOneStep + - 修改脚本编辑(例如getDamageInfo)时,请勿直接拿原来的脚本进行覆盖,而是重新对函数进行修改! + +11. 在编辑器中,切换到「插件编写」标签,并重新增加新增的插件插件 + - 请勿随意修改已有的默认插件 + +12. 逐楼层检查firstArrive以及每个点的事件列表;主要事件API变化如下: + - 所有的「数值增减」事件已被删除,被数值设置+运算符替代 + - 编辑器将无法再解析「数值增减」事件(会被解析成自定义事件),但是游戏中仍然可以正确执行 + - 「隐藏事件」将不再默认删除该点(而只是纯粹的隐藏);请给有需要的「隐藏事件」勾选「同时删除」选项 + - 「重启当前事件」已经被删除并且无法在游戏中使用。请替换成等价的循环处理或者插入事件 + - 在V2.7中,所有的experience全部改名exp;请检查所有对经验值进行操作的地方 + + + From a4e3bd904f52a59a98529e6095fc7ac58dbe5659 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 00:44:23 +0800 Subject: [PATCH 10/80] =?UTF-8?q?=E5=90=88=E5=B9=B6loader=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E8=BF=87=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/loader.js | 407 +++++++++++++++++++++++++++------------------ libs/utils.js | 8 +- main.js | 2 +- v2.x-final更新.txt | 2 +- 4 files changed, 258 insertions(+), 161 deletions(-) diff --git a/libs/loader.js b/libs/loader.js index 8f4ea8f6..0252d88a 100644 --- a/libs/loader.js +++ b/libs/loader.js @@ -25,115 +25,199 @@ loader.prototype._setStartLoadTipText = function (text) { } loader.prototype._load = function (callback) { - this._loadIcons(); - this._loadAnimates(); - this._loadMusic(); + if (main.useCompress) { + this._load_async(callback); + } else { + this._load_sync(callback); + } +} - core.loader._loadMaterialImages(function () { - core.loader._loadExtraImages(function () { - core.loader._loadAutotiles(function () { - core.loader._loadTilesets(callback); +loader.prototype._load_sync = function (callback) { + this._loadAnimates_sync(); + this._loadMusic_sync(); + core.loader._loadMaterials_sync(function () { + core.loader._loadExtraImages_sync(function () { + core.loader._loadAutotiles_sync(function () { + core.loader._loadTilesets_sync(callback); }) }) }); } -loader.prototype._loadIcons = function () { - this.loadImage("materials", "icons.png", function (id, image) { - var images = core.splitImage(image); - for (var key in core.statusBar.icons) { - if (typeof core.statusBar.icons[key] == 'number') { - core.statusBar.icons[key] = images[core.statusBar.icons[key]]; - if (core.statusBar.image[key] != null) - core.statusBar.image[key].src = core.statusBar.icons[key].src; +loader.prototype._load_async = function (callback) { + core.loader._setStartLoadTipText('正在加载资源文件...'); + var all = {}; + + var _makeOnProgress = function (name) { + if (!all[name]) all[name] = {loaded: 0, total: 0, finished: false}; + return function (loaded, total) { + all[name].loaded = loaded; + all[name].total = total; + var allLoaded = 0, allTotal = 0; + for (var one in all) { + allLoaded += all[one].loaded; + allTotal += all[one].total; } + if (allTotal > 0) { + if (allLoaded == allTotal) { + core.loader._setStartLoadTipText("正在处理资源文件... 请稍后..."); + } else { + core.loader._setStartLoadTipText('正在加载资源文件... ' + + core.formatSize(allLoaded) + " / " + core.formatSize(allTotal) + + " (" + (allLoaded / allTotal * 100).toFixed(2) + "%)"); + } + core.loader._setStartProgressVal(allLoaded / allTotal * 100); + } + }; + } + var _makeOnFinished = function (name) { + return function () { + setTimeout(function () { + all[name].finished = true; + for (var one in all) { + if (!all[one].finished) return; + } + callback(); + }); } + } + + this._loadAnimates_async(_makeOnProgress('animates'), _makeOnFinished('animates')); + this._loadMusic_async(_makeOnProgress('sounds'), _makeOnFinished('sounds')); + this._loadMaterials_async(_makeOnProgress('materials'), _makeOnFinished('materials')); + this._loadExtraImages_async(_makeOnProgress('images'), _makeOnFinished('images')); + this._loadAutotiles_async(_makeOnProgress('autotiles'), _makeOnFinished('autotiles')); + this._loadTilesets_async(_makeOnProgress('tilesets'), _makeOnFinished('tilesets')); +} + +// ----- 加载资源文件 ------ // + +loader.prototype._loadMaterials_sync = function (callback) { + this._setStartLoadTipText("正在加载资源文件..."); + this.loadImages("materials", core.materials, core.material.images, function () { + core.loader._loadMaterials_afterLoad(); + callback(); }); } -loader.prototype._loadMaterialImages = function (callback) { - this._setStartLoadTipText("正在加载资源文件..."); - if (main.useCompress) { - this.loadImagesFromZip('project/materials/materials.h5data', core.materials, core.material.images, callback); - } else { - this.loadImages("materials", core.materials, core.material.images, callback); +loader.prototype._loadMaterials_async = function (onprogress, onfinished) { + this.loadImagesFromZip('project/materials/materials.h5data', core.materials, core.material.images, onprogress, function () { + core.loader._loadMaterials_afterLoad(); + onfinished(); + }); +} + +loader.prototype._loadMaterials_afterLoad = function () { + var images = core.splitImage(core.material.images['icons']); + for (var key in core.statusBar.icons) { + if (typeof core.statusBar.icons[key] == 'number') { + core.statusBar.icons[key] = images[core.statusBar.icons[key]]; + if (core.statusBar.image[key] != null) + core.statusBar.image[key].src = core.statusBar.icons[key].src; + } } } -loader.prototype._loadExtraImages = function (callback) { +// ------ 加载使用的图片 ------ // + +loader.prototype._loadExtraImages_sync = function (callback) { core.material.images.images = {}; - - var images = core.clone(core.images); - this._setStartLoadTipText("正在加载图片文件..."); - if (main.useCompress) { - // Check .gif - var gifs = images.filter(function (name) { - return name.toLowerCase().endsWith('.gif'); - }); - images = images.filter(function (name) { - return !name.toLowerCase().endsWith('.gif'); - }); - - this.loadImagesFromZip('project/images/images.h5data', images, core.material.images.images, callback); - gifs.forEach(function (gif) { - this.loadImage("images", gif, function (id, image) { - if (image != null) { - core.material.images.images[gif] = image; - } - }); - }, this); - } else { - this.loadImages("images", images, core.material.images.images, callback); - } + core.loadImages("images", core.images, core.material.images.images, callback); } -loader.prototype._loadAutotiles = function (callback) { +loader.prototype._loadExtraImages_async = function (onprogress, onfinished) { + core.material.images.images = {}; + var images = core.images; + + // Check .gif + var gifs = images.filter(function (name) { + return name.toLowerCase().endsWith('.gif'); + }); + images = images.filter(function (name) { + return !name.toLowerCase().endsWith('.gif'); + }); + + this.loadImagesFromZip('project/images/images.h5data', images, core.material.images.images, onprogress, onfinished); + // gif没有被压缩在zip中,延迟加载... + gifs.forEach(function (gif) { + this.loadImage("images", gif, function (id, image) { + if (image != null) { + core.material.images.images[gif] = image; + } + }); + }, this); +} + +// ------ 加载自动元件 ------ // + +loader.prototype._loadAutotiles_sync = function (callback) { core.material.images.autotile = {}; var keys = Object.keys(core.material.icons.autotile); var autotiles = {}; - var _callback = function () { - keys.forEach(function (v) { - core.material.images.autotile[v] = autotiles[v]; - }); - setTimeout(function () { - core.maps._makeAutotileEdges(); - }); - - callback(); - } this._setStartLoadTipText("正在加载自动元件..."); - if (main.useCompress) { - this.loadImagesFromZip('project/autotiles/autotiles.h5data', keys, autotiles, _callback); - } else { - this.loadImages("autotiles", keys, autotiles, _callback); + this.loadImages("autotiles", keys, autotiles, function () { + core.loader._loadAutotiles_afterLoad(keys, autotiles); + callback(); + }); +} + +loader.prototype._loadAutotiles_async = function (onprogress, onfinished) { + core.material.images.autotile = {}; + var keys = Object.keys(core.material.icons.autotile); + var autotiles = {}; + + this.loadImagesFromZip('project/autotiles/autotiles.h5data', keys, autotiles, onprogress, function () { + core.loader._loadAutotiles_afterLoad(keys, autotiles); + onfinished(); + }); +} + +loader.prototype._loadAutotiles_afterLoad = function (keys, autotiles) { + // autotile需要保证顺序 + keys.forEach(function (v) { + core.material.images.autotile[v] = autotiles[v]; + }); + + setTimeout(function () { + core.maps._makeAutotileEdges(); + }); +} + +// ------ 加载额外素材 ------ // + +loader.prototype._loadTilesets_sync = function (callback) { + core.material.images.tilesets = {}; + this._setStartLoadTipText("正在加载额外素材..."); + this.loadImages("tilesets", core.tilesets, core.material.images.tilesets, function () { + core.loader._loadTilesets_afterLoad(); + callback(); + }); +} + +loader.prototype._loadTilesets_async = function (onprogress, onfinished) { + core.material.images.tilesets = {}; + this.loadImagesFromZip('project/tilesets/tilesets.h5data', core.tilesets, core.material.images.tilesets, onprogress, function () { + core.loader._loadTilesets_afterLoad(); + onfinished(); + }); +} + +loader.prototype._loadTilesets_afterLoad = function () { + // 检查宽高是32倍数,如果出错在控制台报错 + for (var imgName in core.material.images.tilesets) { + var img = core.material.images.tilesets[imgName]; + if (img.width % 32 != 0 || img.height % 32 != 0) { + console.warn("警告!" + imgName + "的宽或高不是32的倍数!"); + } + if (img.width * img.height > 32 * 32 * 3000) { + console.warn("警告!" + imgName + "上的图块素材个数大于3000!"); + } } } -loader.prototype._loadTilesets = function (callback) { - core.material.images.tilesets = {}; - core.tilesets = core.tilesets || []; - var _callback = function () { - // 检查宽高是32倍数,如果出错在控制台报错 - for (var imgName in core.material.images.tilesets) { - var img = core.material.images.tilesets[imgName]; - if (img.width % 32 != 0 || img.height % 32 != 0) { - console.warn("警告!" + imgName + "的宽或高不是32的倍数!"); - } - if (img.width * img.height > 32 * 32 * 3000) { - console.warn("警告!" + imgName + "上的图块素材个数大于3000!"); - } - } - callback(); - } - this._setStartLoadTipText("正在加载额外素材..."); - if (main.useCompress) { - this.loadImagesFromZip('project/tilesets/tilesets.h5data', core.tilesets, core.material.images.tilesets, _callback); - } else { - this.loadImages("tilesets", core.tilesets, core.material.images.tilesets, _callback); - } -} +// ------ 实际加载一系列图片 ------ // loader.prototype.loadImages = function (dir, names, toSave, callback) { if (!names || names.length == 0) { @@ -159,37 +243,6 @@ loader.prototype.loadImages = function (dir, names, toSave, callback) { } } -loader.prototype.loadImagesFromZip = function (url, names, toSave, callback) { - if (!names || names.length == 0) { - if (callback) callback(); - return; - } - - core.unzip(url + "?v=" + main.version, function (data) { - var cnt = 1; - names.forEach(function (name) { - var imgName = name; - if (imgName.indexOf('.') < 0) imgName += '.png'; - if (imgName in data) { - var img = new Image(); - var url = URL.createObjectURL(data[imgName]); - cnt++; - img.onload = function () { - cnt--; - URL.revokeObjectURL(url); - if (cnt == 0 && callback) callback(); - } - img.src = url; - toSave[name] = img; - } - }); - cnt--; - if (cnt == 0 && callback) callback(); - }, null, false, function (percentage) { - core.loader._setStartProgressVal(percentage * 100); - }); -} - loader.prototype.loadImage = function (dir, imgName, callback) { try { var name = imgName; @@ -211,28 +264,63 @@ loader.prototype.loadImage = function (dir, imgName, callback) { } } -loader.prototype._loadAnimates = function () { - this._setStartLoadTipText("正在加载动画文件..."); - if (main.useCompress) { - core.unzip('project/animates/animates.h5data?v=' + main.version, function (animates) { - for (var name in animates) { - if (name.endsWith(".animate")) { - var t = name.substring(0, name.length - 8); - if (core.animates.indexOf(t) >= 0) - core.loader._loadAnimate(t, animates[name]); - } - } - }, null, true); - } else { - core.animates.forEach(function (t) { - core.http('GET', 'project/animates/' + t + ".animate?v=" + main.version, null, function (content) { - core.loader._loadAnimate(t, content); - }, function (e) { - main.log(e); - core.material.animates[t] = null; - }, "text/plain; charset=x-user-defined") - }) +// ------ 从zip中加载一系列图片 ------ // + +loader.prototype.loadImagesFromZip = function (url, names, toSave, onprogress, onfinished) { + if (!names || names.length == 0) { + if (onfinished) onfinished(); + return; } + + core.unzip(url + "?v=" + main.version, function (data) { + var cnt = 1; + names.forEach(function (name) { + var imgName = name; + if (imgName.indexOf('.') < 0) imgName += '.png'; + if (imgName in data) { + var img = new Image(); + var url = URL.createObjectURL(data[imgName]); + cnt++; + img.onload = function () { + cnt--; + URL.revokeObjectURL(url); + if (cnt == 0 && onfinished) onfinished(); + } + img.src = url; + toSave[name] = img; + } + }); + cnt--; + if (cnt == 0 && onfinished) onfinished(); + }, null, false, onprogress); +} + +// ------ 加载动画文件 ------ // + +loader.prototype._loadAnimates_sync = function () { + this._setStartLoadTipText("正在加载动画文件..."); + + core.animates.forEach(function (t) { + core.http('GET', 'project/animates/' + t + ".animate?v=" + main.version, null, function (content) { + core.loader._loadAnimate(t, content); + }, function (e) { + main.log(e); + core.material.animates[t] = null; + }, "text/plain; charset=x-user-defined") + }); +} + +loader.prototype._loadAnimates_async = function (onprogress, onfinished) { + core.unzip('project/animates/animates.h5data?v=' + main.version, function (animates) { + for (var name in animates) { + if (name.endsWith(".animate")) { + var t = name.substring(0, name.length - 8); + if (core.animates.indexOf(t) >= 0) + core.loader._loadAnimate(t, animates[name]); + } + } + onfinished(); + }, null, true, onprogress); } loader.prototype._loadAnimate = function (name, content) { @@ -283,26 +371,36 @@ loader.prototype._loadAnimate = function (name, content) { } } -////// 加载音频 ////// -loader.prototype._loadMusic = function () { +// ------ 加载音乐和音效 ------ // + +loader.prototype._loadMusic_sync = function () { + this._setStartLoadTipText("正在加载音效文件..."); core.bgms.forEach(function (t) { core.loader.loadOneMusic(t); }); + core.sounds.forEach(function (t) { + core.loader.loadOneSound(t); + }); + // 直接开始播放 + core.playBgm(main.startBgm); +} - this._setStartLoadTipText("正在加载音效文件..."); - if (main.useCompress && core.musicStatus.audioContext) { - core.unzip('project/sounds/sounds.h5data?v=' + main.version, function (data) { +loader.prototype._loadMusic_async = function (onprogress, onfinished) { + core.bgms.forEach(function (t) { + core.loader.loadOneMusic(t); + }); + core.unzip('project/sounds/sounds.h5data?v=' + main.version, function (data) { + // 延迟解析 + setTimeout(function () { for (var name in data) { if (core.sounds.indexOf(name) >= 0) { core.loader._loadOneSound_decodeData(name, data[name]); } } }); - } else { - core.sounds.forEach(function (t) { - core.loader.loadOneSound(t); - }); - } + onfinished(); + }, null, false, onprogress); + // 直接开始播放 core.playBgm(main.startBgm); } @@ -317,19 +415,12 @@ loader.prototype.loadOneMusic = function (name) { } loader.prototype.loadOneSound = function (name) { - if (core.musicStatus.audioContext != null) { - core.http('GET', 'project/sounds/' + name + "?v=" + main.version, null, function (data) { - core.loader._loadOneSound_decodeData(name, data); - }, function (e) { - main.log(e); - core.material.sounds[name] = null; - }, null, 'arraybuffer'); - } - else { - var music = new Audio(); - music.src = 'project/sounds/' + name; - core.material.sounds[name] = music; - } + core.http('GET', 'project/sounds/' + name + "?v=" + main.version, null, function (data) { + core.loader._loadOneSound_decodeData(name, data); + }, function (e) { + main.log(e); + core.material.sounds[name] = null; + }, null, 'arraybuffer'); } loader.prototype._loadOneSound_decodeData = function (name, data) { diff --git a/libs/utils.js b/libs/utils.js index 7cd1ff71..1698c02e 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -392,6 +392,12 @@ utils.prototype.setTwoDigits = function (x) { return parseInt(x) < 10 ? "0" + x : x; } +utils.prototype.formatSize = function (size) { + if (size < 1024) return size + 'B'; + else if (size < 1024 * 1024) return (size/1024).toFixed(2) + "KB"; + else return (size/1024/1024).toFixed(2) + "MB"; +} + utils.prototype.formatBigNumber = function (x, onMap) { x = Math.floor(parseFloat(x)); if (!core.isset(x)) return '???'; @@ -1227,7 +1233,7 @@ utils.prototype.http = function (type, url, formData, success, error, mimeType, }; xhr.onprogress = function (e) { if (e.lengthComputable) { - if (onprogress) onprogress(e.loaded / e.total); + if (onprogress) onprogress(e.loaded, e.total); } } xhr.onabort = function () { diff --git a/main.js b/main.js index be30e993..6409434c 100644 --- a/main.js +++ b/main.js @@ -85,7 +85,7 @@ function main() { 'data', 'enemys', 'icons', 'maps', 'items', 'functions', 'events', 'plugins' ]; this.materials = [ - 'animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48' + 'animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48', 'icons' ]; this.statusBar = { diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 680d4953..9d9991d1 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -53,7 +53,7 @@ 大屏幕下放大游戏界面 最近使用/最常使用的图块 loader并行加载 -合并items.js +(已完成!) 合并items.js 增加fonts目录,全塔属性增加fonts引用 ------------- From 47283d30a9469b689e8e6a7ccf77261bf664cfda Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 10:42:00 +0800 Subject: [PATCH 11/80] =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=A2=9D=E5=A4=96?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E4=BD=93=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/table/data.comment.js | 12 ++++++++++++ main.js | 14 ++++++++++++++ project/data.js | 3 +++ project/fonts/number.ttf | Bin 0 -> 4312 bytes styles.css | 2 +- v2.x-final更新.txt | 7 ++++--- 6 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 project/fonts/number.ttf diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index 4e6f5320..7e0a246f 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -91,6 +91,18 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "本塔使用音效", "_data": "在此存放所有的SE,和文件名一致 \n音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好" }, + "fonts": { + "_leaf": true, + "_type": "material", + "_range": "editor.mode.checkUnique(thiseval)", + "_directory": "./project/fonts/", + "_transform": (function (one) { + if (one.endsWith(".ttf")) return one.substring(0, one.lastIndexOf('.')); + return null; + }).toString(), + "_docs": "本塔使用字体", + "_data": "在此存放所有可能使用的字体 \n 字体名不能使用中文,不能带空格或特殊字符" + }, "nameMap": { "_leaf": true, "_type": "textarea", diff --git a/main.js b/main.js index 6409434c..71421aca 100644 --- a/main.js +++ b/main.js @@ -215,6 +215,7 @@ main.prototype.init = function (mode, callback) { main.dom.levelChooseButtons.appendChild(span); }); main.createOnChoiceAnimation(); + main.importFonts(main.fonts); main.loadJs('libs', main.loadList, function () { main.core = core; @@ -371,6 +372,19 @@ main.prototype.selectButton = function (index) { } } +////// 创建字体 ////// +main.prototype.importFonts = function (fonts) { + if (!(fonts instanceof Array) || fonts.length == 0) return; + var style = document.createElement('style'); + style.type = 'text/css'; + var html = ''; + fonts.forEach(function (font) { + html += '@font-face { font-family: "'+font+'"; src: url("project/fonts/'+font+'.ttf") format("truetype")'; + }); + style.innerHTML = html; + document.body.appendChild(style); +} + main.prototype.listen = function () { ////// 窗口大小变化时 ////// diff --git a/project/data.js b/project/data.js index fad424a9..396be475 100644 --- a/project/data.js +++ b/project/data.js @@ -36,6 +36,9 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "bomb.mp3", "centerFly.mp3" ], + "fonts": [ + "number" + ], "nameMap": { "背景图.jpg": "bg.jpg", "背景音乐.mp3": "bgm.mp3" diff --git a/project/fonts/number.ttf b/project/fonts/number.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bcf90fae15a92f26dae9f2bf31c86319c458ea77 GIT binary patch literal 4312 zcmchbe@xZa6~NE;fjr>B;{iSp0ePZ8iwKAg;Tzn-ox35h$nw*Tgm^ zZD!i6>$-JK)}~8cQ;S`eCTiW*)i|ei^JlgGER@=+P_bHFYug0QKKJ{+dyc4hneM}FBYGHN4pPSn>`*N*Nu>|yKZnhJR4h@+gAC+ zY%TD*>8H^ZZr#uPbjObpDnAu(q%A(QBV(;0!cV;#vDVWE>l2SX!=C5q)2s4|XS0Zw zM67k>_H6sdZ%h1g7rrsz!Amn~Lx==rPl~b6$V7L9pNyL7k!UmLKM>a8@U^QtS{N0Q zb&;Zr*h8Ph(`9TC>*YxE2-#ecbcdx#j8E(l{QBU+v`4&>=g<*SE`<&q$(ZF1Jqr3k zhmL}N$f3Ph_LxIQvx5!rR%8t8l*=;?ZApq8bZC$G<*Y+TNQ+!`=txPiY8-kLbcaJn zLI2#Ly%J^p-l3yqtktc-HWjny>| zET~(ty0N;|c&x5sQr_qeO2Ys#5#$KDH34V&bqp#O-IWbCRs#87Gm_ z!!r^z{5s|2kdXarArqp1bBLstqR8iHiIG_HG|sMyo6q_G_m;Edux3G9k8>C-!@w7e z`LrI9s4=v5k!S=lmF7@1V4il{EFGLY$7t!a8rp2yGFm%r6KyH2!JZ_N$ur>dMoCnZ z*M+!f!$-RiALA9TH^v43b$mi>v_wb8x)AUg-seK1FGgZwT-KKqXZSc5lH+3~Ha6ac z(bw@ozfXKVzY8e|hEH%IH6c#o;#@XiOu+B~7t)jb;`b-HkeQqy2?@zAgn|JH1cEM% zPf3)-#1t2D(vl@PIn9OqjGzRA87>rNrAlgQmJ220($t@ro zGWDhhv|G>VSv>>3uZQ&u{X&Ygls$Z)*Yp~dn8b`CSt2jV{TytwWgJx+sb4a(A3P3j z(dGIZeO9+y52AmAOqJV=CAuH&P5K;K59>$zk&)Sb)C|3y`X}(X?qQ`fMj}gDWv|@J zK{tuREJW^)WA!A{rLXE{Ey9jt_~EngTQh8_Z9e|EpUr?v^qsl{@r4 zIUs|K7yYxnkN5Om3Cb8rmE1wqs4@PWo=4XqeMK+JH;|>-(q8S=_Xt`SA$)^XjW(kPu%w1ODa9r(O(Qb` zR}I-^o+Fsy9bwwCeuuhrY#1jKzSwg)(Xx}Oo=g6j_$(tn_j$VH*0A=Go_B&WEH=*KYjhf^VqWl> zteS`;sVhB+%ikfXF6u?xp09%#7faC68Pm>P@Y`SoSC%x%ww?SGwXj9Xta(y4nBnOf zT%+f4g`a(ieG0s(J4mb^!^>E33Tx~m$+~dtS-qlHkWY|oE<3YiE?1B$C?TM|TtY-% zqcqafa^HzZvHk9@DdBx-}PSx}CkF*&#sgY}9Gm!D00WvqK|8N0xm;%;P3#Zc_le z{#Z|QkDN$t82%FcF;mr+Y$EU0k{98uGj1442FuFRzgs^hr(Og*WglkE;GA0~-y;S^ z1Fw3zlus&Mt&i!W`W^H>B0rS1oZ0hPc7s`nY+g!SX4!F>KsmbFhy0CTSk{H5!zEwo z95!(l3nbY!m4jE3Bv~(G*-7Gb+DXoUm~x1-eUgLq0ZGuSoF?Yg)5XY7IN##64I{P_ zm$yxFla_v7C%18v?!eoVx#8YQ9`L?r<`q3iL_>C7WD?E&ME)0e|JUfdhzot>4b@E5 zoAV1m{yyjEA>tX1q=`E+xw#g6;5&+tgcNUpXp`#ifks&DFF^`Dgf zS^bb+b5%7(QpEQ_8AWDZmgdD3;w3gk7I9%LH%gefo9x(2e)dpqfJYjLMZy1|Mm+P; z-;e)JqWw5Nzf3*`?UU{nc42&VVUUk+4u&8-lgRbO@-*KKZIo`IeV!Y8o??I7!MDI( z^0NS}!FL6Cy_hq$2OADz^;JHey;@*hK;v%LlObxzyt}d-Pj^!_y9T%0W6aJjXuq+V zI$SEd`S@HQ3)x|=5fPI!x(nQ Date: Sun, 17 May 2020 11:11:31 +0800 Subject: [PATCH 12/80] =?UTF-8?q?blockly=E8=A7=A3=E6=9E=90=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_blockly.js | 40 ++++++++++++++++++++++++++++++--------- editor-mobile.html | 2 +- editor.html | 2 +- v2.x-final更新.txt | 2 +- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 75754601..8b23bce8 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -398,22 +398,22 @@ function omitedcheckUpdateFunction(event) { } } if(editor_blockly.workspace.topBlocks_.length>=2){ - codeAreaHL.setValue('入口方块只能有一个'); + editor_blockly.setValue('入口方块只能有一个'); return; } var eventType = document.getElementById('entryType').value; if(editor_blockly.workspace.topBlocks_.length==1){ var blockType = editor_blockly.workspace.topBlocks_[0].type; if(blockType!==eventType+'_m'){ - codeAreaHL.setValue('入口方块类型错误'); + editor_blockly.setValue('入口方块类型错误'); return; } } try { var code = Blockly.JavaScript.workspaceToCode(workspace).replace(/\\\\(i|c|d|e|z)/g, '\\\\\\\\$1'); - codeAreaHL.setValue(code); + editor_blockly.setValue(code); } catch (error) { - codeAreaHL.setValue(String(error)); + editor_blockly.setValue(String(error)); if (error instanceof OmitedError){ var blockName = error.blockName; var varName = error.varName; @@ -529,13 +529,19 @@ function omitedcheckUpdateFunction(event) { xhr.open('GET', '_server/MotaAction.g4', true); xhr.send(null); - codeAreaHL = CodeMirror.fromTextArea(document.getElementById("codeArea"), { + var codeAreaHL = CodeMirror.fromTextArea(document.getElementById("codeArea"), { lineNumbers: true, matchBrackets: true, lineWrapping: true, continueComments: "Enter", - extraKeys: {"Ctrl-Q": "toggleComment"} + extraKeys: {"Ctrl-Q": "toggleComment"}, }); + codeAreaHL.on('changes', function () { + editor_blockly.highlightParse(!changeFromBlockly); + changeFromBlockly = false; + }); + var changeFromBlockly = false; + var shouldNotifyParse = false; editor_blockly.showXML = function () { var xml = Blockly.Xml.workspaceToDom(editor_blockly.workspace); @@ -561,6 +567,11 @@ function omitedcheckUpdateFunction(event) { } } + editor_blockly.setValue = function (value) { + changeFromBlockly = true; + codeAreaHL.setValue(value); + } + editor_blockly.parse = function () { MotaActionFunctions.parse( eval('obj=' + codeAreaHL.getValue().replace(/[<>&]/g, function (c) { @@ -580,7 +591,7 @@ function omitedcheckUpdateFunction(event) { var type = args.type; if (!type) return false; editor_blockly.id = id_; - codeAreaHL.setValue(input.value); + editor_blockly.setValue(input.value); document.getElementById('entryType').value = type; editor_blockly.parse(); editor_blockly.show(); @@ -604,6 +615,13 @@ function omitedcheckUpdateFunction(event) { } } + var blocklyParseBtn = document.getElementById('blocklyParse'); + editor_blockly.highlightParse = function (shouldHighLight) { + if (shouldNotifyParse == shouldHighLight) return; + shouldNotifyParse = shouldHighLight; + blocklyParseBtn.style.background = shouldNotifyParse ? '#FFCCAA' : 'unset'; + } + editor_blockly.cancel = function () { editor_blockly.id = ''; editor_blockly.hide(); @@ -614,15 +632,19 @@ function omitedcheckUpdateFunction(event) { editor_blockly.id = ''; return; } + if (shouldNotifyParse) { + alert('你尚未解析修改后的内容,请进行解析或放弃操作'); + return; + } if(editor_blockly.workspace.topBlocks_.length>=2){ - codeAreaHL.setValue('入口方块只能有一个'); + editor_blockly.setValue('入口方块只能有一个'); return; } var eventType = document.getElementById('entryType').value; if(editor_blockly.workspace.topBlocks_.length==1){ var blockType = editor_blockly.workspace.topBlocks_[0].type; if(blockType!==eventType+'_m'){ - codeAreaHL.setValue('入口方块类型错误'); + editor_blockly.setValue('入口方块类型错误'); return; } } diff --git a/editor-mobile.html b/editor-mobile.html index 143408e6..2b9bf8b0 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -219,7 +219,7 @@ - +
-

最近使用的图块列表(Ctrl+滚轮放缩)

+

(Ctrl+滚轮放缩)

diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 7cbd5c2f..cc988fc5 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -51,11 +51,12 @@ 地图拉框选择复制剪切删除 (已完成!) 素材替换 大屏幕下放大游戏界面 -最近使用/最常使用的图块 +(已完成!) 最近使用/最常使用的图块 (已完成!) loader并行加载 合并items.js (已完成!) 增加fonts目录,全塔属性增加fonts引用 (已完成!) 右边框输入完后解析按钮高亮 +32x48的门 ------------- From 7d9653f6e6521cdccb37c9ff5203c1db967d1ac0 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 19:27:37 +0800 Subject: [PATCH 18/80] =?UTF-8?q?=E7=BD=AE=E9=A1=B6=E5=B8=B8=E7=94=A8?= =?UTF-8?q?=E5=9B=BE=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 5 +++++ _server/editor_listen.js | 1 + _server/editor_mappanel.js | 22 +++++++++++++++++----- editor.html | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 8704fea1..6f282c4c 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -423,6 +423,7 @@ editor.prototype.setLastUsedType = function (type) { editor.prototype.updateLastUsedMap = function () { var lastUsed = editor.uivalues.lastUsed.sort(function (a, b) { + if ((a.istop || 0) != (b.istop || 0)) return (b.istop || 0) - (a.istop || 0); return (b[editor.uivalues.lastUsedType] || 0) - (a[editor.uivalues.lastUsedType] || 0); }); @@ -430,6 +431,7 @@ editor.prototype.updateLastUsedMap = function () { var ctx = editor.dom.lastUsedCtx; ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.strokeStyle = 'rgba(255,128,0,0.85)'; + ctx.fillStyle = 'rgba(255,0,0,0.85)'; ctx.lineWidth = 4; for (var i = 0; i < lastUsed.length; ++i) { try { @@ -444,6 +446,9 @@ editor.prototype.updateLastUsedMap = function () { var per_height = info.images.endsWith('48') ? 48 : 32; ctx.drawImage(core.material.images[info.images], 0, info.y * per_height, 32, per_height, x * 32, y * 32, 32, 32); } + if (info.istop) { + ctx.fillRect(32 * x, 32 * y + 24, 8, 8); + } if (selectBox.isSelected() && editor.info.id == info.id) { ctx.strokeRect(32 * x + 2, 32 * y + 2, 28, 28); } diff --git a/_server/editor_listen.js b/_server/editor_listen.js index 7fff8ff5..f5994f4e 100644 --- a/_server/editor_listen.js +++ b/_server/editor_listen.js @@ -35,6 +35,7 @@ editor_listen_wrapper = function (editor) { editor.dom.clearLoc.onmousedown = editor.uifunctions.clearLoc_click editor.dom.lastUsed.onmousedown = editor.uifunctions.lastUsed_click; + editor.dom.lastUsed.oncontextmenu = function (e) { e.preventDefault(); } editor.dom.clearLastUsedBtn.onclick = editor.uifunctions.clearLastUsedBtn_click; editor.dom.lockMode.onchange = editor.uifunctions.lockMode_onchange; diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index e84a600d..f6c7687c 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -792,21 +792,33 @@ editor_mappanel_wrapper = function (editor) { var index = x + core.__SIZE__ * y; if (index >= editor.uivalues.lastUsed.length) return; var lastUsed = editor.uivalues.lastUsed.sort(function (a, b) { + if ((a.istop || 0) != (b.istop || 0)) return (b.istop || 0) - (a.istop || 0); return (b[editor.uivalues.lastUsedType] || 0) - (a[editor.uivalues.lastUsedType] || 0); }); + + if (e.button == 2) { + lastUsed[index].istop = lastUsed[index].istop ? 0 : 1; + printf("已"+(lastUsed[index].istop ? '置顶' : '取消置顶')+"该图块"); + editor.config.set('lastUsed', editor.uivalues.lastUsed); + editor.updateLastUsedMap(); + return false; + } var one = Object.assign({}, lastUsed[index]); delete one['recent']; delete one['frequent']; + delete one['istop']; editor.setSelectBoxFromInfo(one); - return; + return false; } editor.uifunctions.clearLastUsedBtn_click = function () { if (editor.isMobile) return; - - editor.uivalues.lastUsed = []; - editor.config.set('lastUsed', []); - editor.updateLastUsedMap(); + + if (confirm("你确定要清理全部最近使用图块么?\n所有最近使用和最常使用图块(含置顶图块)都将被清除;此过程不可逆!")) { + editor.uivalues.lastUsed = []; + editor.config.set('lastUsed', []); + editor.updateLastUsedMap(); + } } ///////////////////////////////////////////////////////////////////////////// diff --git a/editor.html b/editor.html index fda967c7..c5dcf5b9 100644 --- a/editor.html +++ b/editor.html @@ -366,7 +366,7 @@
-

(Ctrl+滚轮放缩)

+

(Ctrl+滚轮放缩,右键置顶)

From 107d155819540b88a2ac65c2259a431061b79f7d Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sun, 17 May 2020 19:48:46 +0800 Subject: [PATCH 19/80] expend eval blocks --- _server/MotaAction.g4 | 145 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 125 insertions(+), 20 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a7dc1ce6..fe6deb78 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2592,10 +2592,11 @@ return [code, Blockly.JavaScript.ORDER_LOGICAL_NOT]; */; bool_e - : Bool + : ':' Bool /* bool_e +tooltip : 逻辑是否 var code = Bool_0; return [code, Blockly.JavaScript.ORDER_ATOMIC]; */; @@ -3859,53 +3860,143 @@ ActionParser.prototype.Colour = function(color) { return color?JSON.stringify(color).slice(1,-1):null; } -ActionParser.prototype.matchId = function(args, isShadow, comment) { - var rt=function(xml){ - return {xml:xml,ret:true} +ActionParser.prototype.matchId = function(args) { + var rt=function(xml,args){ + // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 + return {ret:true,xml:xml,args:args} } var match = /nothing/.exec('nothing') // 固定列表 var FixedId_List=MotaActionBlocks.idFixedList_e.json.args0[0].options; // [["生命", "status:hp"], ...] match=new RegExp('^('+FixedId_List.map(function(v){return v[1]}).join('|')+')$').exec(args[0]) if(match){ - return rt(MotaActionBlocks['idFixedList_e'].xmlText(args, isShadow, comment)); + return rt(MotaActionBlocks['idFixedList_e'].xmlText, args); } // 独立开关 match=/^switch:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return rt(MotaActionBlocks['idFlag_e'].xmlText(args, isShadow, comment)); + return rt(MotaActionBlocks['idFlag_e'].xmlText, args); } // 临时变量 match=/^temp:([A-Z])$/.exec(args[0]) if(match){ args[0]=match[1] - return rt(MotaActionBlocks['idTemp_e'].xmlText(args, isShadow, comment)); + return rt(MotaActionBlocks['idTemp_e'].xmlText, args); } // id列表 var Id_List = MotaActionBlocks.idIdList_e.json.args0[0].options; // [["变量", "flag"], ...] match=new RegExp('^('+Id_List.map(function(v){return v[1]}).join('|')+'):([a-zA-Z0-9_\\u4E00-\\u9FCC]+)$').exec(args[0]) if(match){ - args=[match[1],match[2]].concat(args.slice(1)) - return rt(MotaActionBlocks['idIdList_e'].xmlText(args, isShadow, comment)); + args=[match[1],MotaActionFunctions.replaceToName_token(match[2])] + return rt(MotaActionBlocks['idIdList_e'].xmlText, args); } - return {xml:'',ret:false} + return {ret:false} +} + +ActionParser.prototype.matchEvalAtom = function(args) { + var rt=function(xml,args){ + // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 + return {ret:true,xml:xml,args:args} + } + var match = /nothing/.exec('nothing') + // 勾选框 + match = /^(true|false)$/.exec(args[0]) + if(match){ + return rt(MotaActionBlocks['bool_e'].xmlText, args); + } + // 怪物属性 + var EnemyId_List=MotaActionBlocks.enemyattr_e.json.args0[1].options; // [["生命", "hp"], ...] + match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) + if(match){ + args=[MotaActionFunctions.replaceToName_token(match[1]),MotaActionFunctions.replaceToName_token(match[2])] + return rt(MotaActionBlocks['enemyattr_e'].xmlText, args); + } + // 图块ID + match=/^blockId:(-?\d+),(-?\d+)$/.exec(args[0]) + if(match){ + args=[match[1],match[2]] + return rt(MotaActionBlocks['blockId_e'].xmlText, args); + } + // 图块类别 + match=/^blockCls:(-?\d+),(-?\d+)$/.exec(args[0]) + if(match){ + args=[match[1],match[2]] + return rt(MotaActionBlocks['blockCls_e'].xmlText, args); + } + // 装备孔 + match=/^equip:(-?\d+)$/.exec(args[0]) + if(match){ + args[0]=match[1] + return rt(MotaActionBlocks['equip_e'].xmlText, args); + } + return {ret:false} +} + +ActionParser.prototype.matchEvalCompare=function(args, isShadow){ + var raw=args[0].replace(/>/g,'>').replace(/</g,'<') + if (raw[0]+raw.slice(-1)=='()') raw=raw.slice(1,-1); + var str=raw + var xml=MotaActionBlocks['expression_arithmetic_0'].xmlText + if (!/<=|<|>=|>|==|!=/.exec(str)) return {ret:false}; + str=str.replace(/[^<>=!()]/g,' ') + // 处理括号匹配 + var old; + do { + old=str; + str=str.replace(/\([^()]*\)/g,function(v){return Array.from({length:v.length+1}).join(' ')}) + } while (old!=str); + // 按优先级依次寻找以下符号 + var oplist=['<','<=','>','>=','==','!='] + for (var index = 0,op; op=oplist[index]; index++) { + var match=new RegExp('(?<= )'+op+'(?= )').exec(str) + if (!match) continue; + args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op,this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] + return {ret:true,xml:xml,args:args} + } + return {ret:false} } ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { - var ret=this.matchId(args, isShadow, comment) - if (ret.ret) return ret.xml; - return MotaActionBlocks['idString_e'].xmlText(args, isShadow, comment); + args[0]=MotaActionFunctions.replaceFromName(args[0]) + var xml=MotaActionBlocks['idString_e'].xmlText + var ret=this.matchId(args) + if (ret.ret){ + xml=ret.xml; + args=ret.args; + } else { + for (var index = 0; index < args.length; index++) { + args[index]=MotaActionFunctions.replaceToName(args[index]) + } + } + return xml(args, isShadow, comment); } ActionParser.prototype.expandEvalBlock = function(args, isShadow, comment) { - var ret=this.matchId(args, isShadow, comment) - if (ret.ret) return ret.xml; - // todo - // 1. 将「数值设置」的名称尽可能替换掉;如果是 FixedId_List 那就用它;否则如果是 独立开关/临时变量 那就用对应的;否则用 A:B 的那个框 - // 2. 将「值块」尽可能替换掉,主要是「独立开关」,「临时变量」,「非 - 独立开关」,「非-临时变量」;以及true/false替换成勾选框;对于其他变量/属性等之类也尽可能进行替换 - - return MotaActionBlocks['evalString_e'].xmlText(args, isShadow, comment); + args[0]=MotaActionFunctions.replaceFromName(args[0]) + var xml=MotaActionBlocks['evalString_e'].xmlText + var ret=this.matchId(args) + if (ret.ret){ + xml=ret.xml; + args=ret.args; + } else if( (ret=this.matchEvalAtom(args)).ret ){ + xml=ret.xml; + args=ret.args; + } else if(/^(!.*|\(!.*\))$/.exec(args[0])){ + // 非 + xml=MotaActionBlocks['negate_e'].xmlText + var content=args[0][0]=='!'?args[0].slice(1):args[0].slice(2,-1) + args[0]=this.expandEvalBlock([content],isShadow) + } else if( (ret=this.matchEvalCompare(args, isShadow)).ret ){ + // 大小比较 + xml=ret.xml; + args=ret.args; + } else { + for (var index = 0; index < args.length; index++) { + args[index]=MotaActionFunctions.replaceToName(args[index]) + } + } + return xml(args, isShadow, comment); } MotaActionFunctions.actionParser = new ActionParser(); @@ -4095,6 +4186,20 @@ MotaActionFunctions.pattern.replaceEnemyList = [ MotaActionFunctions.disableReplace = false; +MotaActionFunctions.replaceToName_token = function (str) { + if (!str || MotaActionFunctions.disableReplace) return str; + var list = []; + list=list.concat(MotaActionFunctions.pattern.replaceStatusList) + list=list.concat(MotaActionFunctions.pattern.replaceItemList) + list=list.concat(MotaActionFunctions.pattern.replaceEnemyList) + for(var index=0,pair;pair=list[index];index++){ + if (pair[0]==str) { + return pair[1] + } + } + return str; +} + MotaActionFunctions.replaceToName = function (str) { if (!str || MotaActionFunctions.disableReplace) return str; var map = {}, list = []; From 3c2e4850810b76b9d8e8c54c8e79f901801b2ae0 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 23:50:44 +0800 Subject: [PATCH 20/80] =?UTF-8?q?=E4=BF=AE=E5=A4=8DchangeFloor=5Fs?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 28 +++++++++++++++++----------- _server/editor_blockly.js | 4 ++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a7dc1ce6..54c2834a 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -271,16 +271,19 @@ return code; //changeFloor 事件编辑器入口之一 changeFloor_m - : '楼梯, 传送门' BGNL? Newline Floor_List IdString? Stair_List 'x' Number ',' 'y' Number '朝向' DirectionEx_List '动画时间' IntString? '穿透性' IgnoreChangeFloor_List BEND + : '楼梯, 传送门' BGNL? Newline Floor_List IdString? Stair_List 'x' PosString? ',' 'y' PosString? '朝向' DirectionEx_List '动画时间' IntString? '穿透性' IgnoreChangeFloor_List BEND /* changeFloor_m tooltip : 楼梯, 传送门, 如果目标楼层有多个楼梯, 写upFloor或downFloor可能会导致到达的楼梯不确定, 这时候请使用loc方式来指定具体的点位置 helpUrl : https://h5mota.com/games/template/_docs/#/element?id=%e8%b7%af%e9%9a%9c%ef%bc%8c%e6%a5%bc%e6%a2%af%ef%bc%8c%e4%bc%a0%e9%80%81%e9%97%a8 -default : [null,"MTx",null,0,0,null,"",null] +default : [null,"MTx",null,"","",null,"",null] var toFloorId = IdString_0; if (Floor_List_0!='floorId') toFloorId = Floor_List_0; -var loc = ', "loc": ['+Number_0+', '+Number_1+']'; +var loc = ''; +if (PosString_0 && PosString_1) { + loc = ', "loc": ['+PosString_0+', '+PosString_1+']'; +} if (Stair_List_0===':now') loc = ''; else if (Stair_List_0!=='loc')loc = ', "stair": "'+Stair_List_0+'"'; if (DirectionEx_List_0 == 'null') DirectionEx_List_0 = ''; @@ -1189,7 +1192,7 @@ return code; */; changeFloor_s - : '楼层切换' Floor_List IdString? Stair_List 'x' Number ',' 'y' Number '朝向' DirectionEx_List '动画时间' IntString? Newline + : '楼层切换' Floor_List IdString? Stair_List 'x' PosString? ',' 'y' PosString? '朝向' DirectionEx_List '动画时间' IntString? Newline /* changeFloor_s @@ -1199,8 +1202,11 @@ default : [null,"",null,"","",null,"",null] colour : this.dataColor var toFloorId = IdString_0; if (Floor_List_0!='floorId') toFloorId = Floor_List_0; -toFloorId = toFloorId ? (', "floorId": ' + toFloorId) : ''; -var loc = ', "loc": ['+Number_0+', '+Number_1+']'; +toFloorId = toFloorId ? (', "floorId": "' + toFloorId +'"') : ''; +var loc = ''; +if (PosString_0 && PosString_1) { + loc = ', "loc": ['+PosString_0+', '+PosString_1+']'; +} if (Stair_List_0===':now') loc = ''; else if (Stair_List_0!=='loc')loc = ', "stair": "'+Stair_List_0+'"'; if (DirectionEx_List_0 == 'null') DirectionEx_List_0 = ''; @@ -2956,9 +2962,9 @@ ActionParser.prototype.parse = function (obj,type) { case 'changeFloor': if(!obj)obj={}; - if(!this.isset(obj.loc)) { - obj.loc=[0,0]; - if (!this.isset(obj.stair)) obj.stair=':now'; + if (!obj.loc) { + obj.loc = obj.loc || ['','']; + obj.stair = obj.stair || ':now'; } if (obj.floorId==':before'||obj.floorId==':next'||obj.floorId==':now') { obj.floorType=obj.floorId; @@ -3259,8 +3265,8 @@ ActionParser.prototype.parseAction = function() { data.floorType=data.floorId; delete data.floorId; } - return MotaActionBlocks['changeFloor_s'].xmlText([ - data.floorType||'floorId',data.floorId,data.stair||'loc',data.loc[0],data.loc[1],obj.direction, + this.next = MotaActionBlocks['changeFloor_s'].xmlText([ + data.floorType||'floorId',data.floorId,data.stair||'loc',data.loc[0],data.loc[1],data.direction, data.time, this.next]); break; case "changePos": // 直接更换勇士位置, 不切换楼层 diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index f3d74b07..df6ed146 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -850,9 +850,9 @@ function omitedcheckUpdateFunction(event) { // id: [x, y, floorId, forceFloor] var selectPointBlocks = { - "changeFloor_m": ["Number_0", "Number_1", "IdString_0", true], + "changeFloor_m": ["PosString_0", "PosString_1", "IdString_0", true], "jumpHero_s": ["PosString_0", "PosString_1"], - "changeFloor_s": ["Number_0", "Number_1", "IdString_0", true], + "changeFloor_s": ["PosString_0", "PosString_1", "IdString_0", true], "changePos_s": ["PosString_0", "PosString_1"], "battle_1_s": ["PosString_0", "PosString_1"], "openDoor_s": ["PosString_0", "PosString_1", "IdString_0"], From 618f572ba1d2116ec3ceb20e6581f41ad3d1fb5f Mon Sep 17 00:00:00 2001 From: tocque Date: Mon, 18 May 2020 11:29:37 +0800 Subject: [PATCH 21/80] update server --- _server/fs.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 启动服务.exe | Bin 57856 -> 55808 bytes 2 files changed, 60 insertions(+) diff --git a/_server/fs.js b/_server/fs.js index 7a74d647..7672310c 100644 --- a/_server/fs.js +++ b/_server/fs.js @@ -142,4 +142,64 @@ }); return; } + + fs.mkdir = function (path, callback) { + //callback:function(err, data) + //path:支持"/"做分隔符,不以"/"结尾 + //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 + if (typeof(path) != typeof('')) + throw 'Type Error in fs.readdir'; + var data = ''; + data += 'name=' + path; + postsomething(data, '/makeDir', function (err, data) { + try { + data = JSON.parse(data); + } catch (e) { + err = "Invalid /mkdir"; + data = null; + } + callback(err, data); + }); + return; + } + + fs.moveFile = function (src, dest, callback) { + //callback:function(err, data) + //path:支持"/"做分隔符,不以"/"结尾 + //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 + if (typeof(src) != typeof('') || typeof(dest) != typeof('')) + throw 'Type Error in fs.readdir'; + var data = ''; + data += 'src=' + src + "&dest=" + dest; + postsomething(data, '/moveFile', function (err, data) { + try { + data = JSON.parse(data); + } catch (e) { + err = "Invalid /moveFile"; + data = null; + } + callback(err, data); + }); + return; + } + + fs.deleteFile = function (path, callback) { + //callback:function(err, data) + //path:支持"/"做分隔符,不以"/"结尾 + //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 + if (typeof(path) != typeof('')) + throw 'Type Error in fs.readdir'; + var data = ''; + data += 'name=' + path; + postsomething(data, '/deleteFile', function (err, data) { + try { + data = JSON.parse(data); + } catch (e) { + err = "Invalid /deleteFile"; + data = null; + } + callback(err, data); + }); + return; + } })(); \ No newline at end of file diff --git a/启动服务.exe b/启动服务.exe index 61a35828fb92f5a641c952689792b43100f669de..432806218c7fda96436a56ff0fd40c1b51963421 100644 GIT binary patch literal 55808 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

htKWu$osgyDY4} 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ⅈ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 From ea40e0bc8efa17557c97671b7b130c45fdfaafd3 Mon Sep 17 00:00:00 2001 From: tocque Date: Mon, 18 May 2020 11:30:02 +0800 Subject: [PATCH 22/80] fix suffix --- v266-v2.7接档说明 => v266-v2.7接档说明.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename v266-v2.7接档说明 => v266-v2.7接档说明.txt (100%) diff --git a/v266-v2.7接档说明 b/v266-v2.7接档说明.txt similarity index 100% rename from v266-v2.7接档说明 rename to v266-v2.7接档说明.txt From 65a2d19ab254fe85fc81b977301ab4c7cb2f3f46 Mon Sep 17 00:00:00 2001 From: tocque Date: Mon, 18 May 2020 11:53:27 +0800 Subject: [PATCH 23/80] fix comment --- _server/fs.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/_server/fs.js b/_server/fs.js index 7672310c..0ece7748 100644 --- a/_server/fs.js +++ b/_server/fs.js @@ -143,10 +143,12 @@ return; } + /** + * @param {string} path 支持"/"做分隔符 + * @param {() => {err: string, data}} callback + */ fs.mkdir = function (path, callback) { //callback:function(err, data) - //path:支持"/"做分隔符,不以"/"结尾 - //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 if (typeof(path) != typeof('')) throw 'Type Error in fs.readdir'; var data = ''; @@ -155,7 +157,7 @@ try { data = JSON.parse(data); } catch (e) { - err = "Invalid /mkdir"; + err = "Invalid /makeDir"; data = null; } callback(err, data); @@ -163,10 +165,11 @@ return; } + /** + * @param {string} path 支持"/"做分隔符, 不以"/"结尾 + * @param {() => {err: string, data}} callback + */ fs.moveFile = function (src, dest, callback) { - //callback:function(err, data) - //path:支持"/"做分隔符,不以"/"结尾 - //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 if (typeof(src) != typeof('') || typeof(dest) != typeof('')) throw 'Type Error in fs.readdir'; var data = ''; @@ -183,10 +186,11 @@ return; } + /** + * @param {string} path 支持"/"做分隔符, 不以"/"结尾 + * @param {() => {err: string, data}} callback + */ fs.deleteFile = function (path, callback) { - //callback:function(err, data) - //path:支持"/"做分隔符,不以"/"结尾 - //data:[filename1,filename2,..] filename是字符串,只包含文件不包含目录 if (typeof(path) != typeof('')) throw 'Type Error in fs.readdir'; var data = ''; From ea85ac5d755e8783fe7642014d6c98af2f7f0ec9 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Mon, 18 May 2020 18:21:35 +0800 Subject: [PATCH 24/80] split g4 --- _server/MotaAction.g4 | 1325 +---------------------------------- _server/MotaActionParse.js | 1327 ++++++++++++++++++++++++++++++++++++ editor-mobile.html | 1 + editor.html | 1 + 4 files changed, 1330 insertions(+), 1324 deletions(-) create mode 100644 _server/MotaActionParse.js diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 1e23f8ff..38cf35bf 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2942,1329 +2942,6 @@ this.block('idTemp_e').output='idString_e'; /* Functions -function ActionParser(){ -} - -ActionParser.prototype.parse = function (obj,type) { - switch (type) { - case 'event': - if(!obj)obj={}; - if(typeof(obj)===typeof('')) obj={'data':[obj]}; - if(obj instanceof Array) obj={'data':obj}; - return MotaActionBlocks['event_m'].xmlText([ - obj.trigger==='action',obj.enable,obj.noPass,obj.displayDamage,this.parseList(obj.data) - ]); - - case 'autoEvent': - if(!obj)obj={}; - return MotaActionBlocks['autoEvent_m'].xmlText([ - obj.condition,obj.priority,obj.currentFloor,obj.delayExecute,obj.multiExecute,this.parseList(obj.data) - ]); - - case 'changeFloor': - if(!obj)obj={}; - if (!obj.loc) { - obj.loc = obj.loc || ['','']; - obj.stair = obj.stair || ':now'; - } - if (obj.floorId==':before'||obj.floorId==':next'||obj.floorId==':now') { - obj.floorType=obj.floorId; - delete obj.floorId; - } - return MotaActionBlocks['changeFloor_m'].xmlText([ - obj.floorType||'floorId',obj.floorId,obj.stair||'loc',obj.loc[0],obj.loc[1],obj.direction, - obj.time,obj.ignoreChangeFloor - ]); - - case 'afterGetItem': - if (!obj) obj = []; - if (obj instanceof Array) obj = {'data': obj}; - return MotaActionBlocks['afterGetItem_m'].xmlText([ - obj.disableOnGentleClick||false, this.parseList(obj.data) - ]); - - case 'level': - if(!obj)obj={}; - var text_choices = null; - for(var ii=obj.length-1,choice;choice=obj[ii];ii--) { - text_choices=MotaActionBlocks['levelCase'].xmlText([ - this.expandEvalBlock([choice.need]),choice.title,choice.clear||false,this.parseList(choice.action),text_choices]); - } - return MotaActionBlocks['level_m'].xmlText([text_choices]); - - case 'shop': - var buildsub = function(obj,parser,next){ - var text_choices = null; - for(var ii=obj.choices.length-1,choice;choice=obj.choices[ii];ii--) { - text_choices=MotaActionBlocks['shopChoices'].xmlText([ - choice.text,choice.need||'',choice.icon,choice.color,'rgba('+choice.color+')',choice.condition,parser.parseList(choice.action),text_choices]); - } - var info = parser.getTitleAndPosition(obj.text || ''); - return MotaActionBlocks['shopsub'].xmlText([ - obj.id,obj[0],info[1],info[3],obj.textInList,obj.mustEnable,obj.disablePreview,text_choices,next - ]); - } - var buildcommentevent = function(obj,parser,next){ - if (obj.args instanceof Array) { - obj.args = JSON.stringify(obj.args); - } - else obj.args = null; - return MotaActionBlocks['shopcommonevent'].xmlText([ - obj.id,parser.EvalString(obj.textInList),obj.mustEnable,parser.EvalString(obj.commonEvent),obj.args,next - ]); - } - var builditem = function (obj,parser,next){ - var text_choices = null; - for(var ii=obj.choices.length-1,choice;choice=obj.choices[ii];ii--) { - text_choices = MotaActionBlocks['shopItemChoices'].xmlText([ - choice.id, choice.number == null ? "" : (""+choice.number), choice.money == null ? "" : (""+choice.money), - choice.sell == null ? "" : (""+choice.sell), choice.condition || "", text_choices - ]); - } - return MotaActionBlocks['shopitem'].xmlText([ - obj.id,obj.textInList,obj.mustEnable,text_choices,next - ]); - } - var next=null; - if(!obj)obj=[]; - while(obj.length){ - var shopobj=obj.pop() - if(shopobj.item) - next=builditem(shopobj,this,next); - else if(shopobj.choices) - next=buildsub(shopobj,this,next); - else if(shopobj.commonEvent) - next=buildcommentevent(shopobj,this,next); - else - throw new Error("[警告]出错啦!\n"+shopobj.id+" 无效的商店"); - } - return MotaActionBlocks['shop_m'].xmlText([next]); - - default: - return MotaActionBlocks[type+'_m'].xmlText([this.parseList(obj)]); - } -} - -////// 开始解析一系列自定义事件 ////// -ActionParser.prototype.parseList = function (list) { - if (!this.isset(list)) return MotaActionBlocks['pass_s'].xmlText([],true); - if (!(list instanceof Array)) { - list = [list]; - } - if (list.length===0) return MotaActionBlocks['pass_s'].xmlText([],true); - this.event = {'id': 'action', 'data': { - 'list': list - }} - this.next = null; - this.result = null; - this.parseAction(); - return this.result; -} - -////// 解析当前自定义事件列表中的最后一个事件 ////// -ActionParser.prototype.parseAction = function() { - - // 事件处理完毕 - if (this.event.data.list.length==0) { - this.result = this.next; - this.next = null; - return; - } - - var data = this.event.data.list.pop(); - this.event.data.current = data; - - // 不同种类的事件 - - // 如果是文字:显示 - if (typeof data == "string") { - data={"type": "text", "text": data} - } - this.event.data.type=data.type; - switch (data.type) { - case "_next": - this.result = this.next; - this.next = data.next; - return; - case "text": // 文字/对话 - var info = this.getTitleAndPosition(data.text); - if (info[0] || info[1] || info[2]) { - this.next = MotaActionBlocks['text_1_s'].xmlText([ - info[0], info[1], info[2], info[3], this.next]); - } - else { - this.next = MotaActionBlocks['text_0_s'].xmlText([info[3],this.next]); - } - break; - case "autoText": // 自动剧情文本 - var info = this.getTitleAndPosition(data.text); - this.next = MotaActionBlocks['autoText_s'].xmlText([ - info[0],info[1],info[2],data.time,info[3],this.next]); - break; - case "scrollText": - this.next = MotaActionBlocks['scrollText_s'].xmlText([ - data.time, data.lineHeight||1.4, data.async||false, this.EvalString(data.text), this.next]); - break; - case "comment": // 注释 - this.next = MotaActionBlocks['comment_s'].xmlText([this.EvalString(data.text),this.next],null,data.text); - break; - case "setText": // 设置剧情文本的属性 - data.title=this.Colour(data.title); - data.text=this.Colour(data.text); - if (!/^\w+\.png$/.test(data.background)) - data.background=this.Colour(data.background); - this.next = MotaActionBlocks['setText_s'].xmlText([ - data.position,data.offset,data.align,data.title,'rgba('+data.title+')', - data.text,'rgba('+data.text+')',data.background,'rgba('+data.background+')', - data.bold,data.titlefont,data.textfont,data.lineHeight,data.time,data.interval,this.next]); - break; - case "tip": - this.next = MotaActionBlocks['tip_s'].xmlText([ - data.text,data.icon||"",this.next]); - break; - case "show": // 显示 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['show_s'].xmlText([ - x_str.join(','),y_str.join(','),data.floorId||'',data.time,data.async||false,this.next]); - break; - case "hide": // 消失 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['hide_s'].xmlText([ - x_str.join(','),y_str.join(','),data.floorId||'',data.remove||false,data.time,data.async||false,this.next]); - break; - case "setBlock": // 设置图块 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['setBlock_s'].xmlText([ - data.number||0,x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "turnBlock": // 事件转向 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['turnBlock_s'].xmlText([ - data.direction,x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "showFloorImg": // 显示贴图 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['showFloorImg_s'].xmlText([ - x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "hideFloorImg": // 隐藏贴图 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['hideFloorImg_s'].xmlText([ - x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "showBgFgMap": // 显示图层块 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['showBgFgMap_s'].xmlText([ - data.name||'bg', x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "hideBgFgMap": // 隐藏图层块 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['hideBgFgMap_s'].xmlText([ - data.name||'bg', x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "setBgFgBlock": // 设置图块 - data.loc=data.loc||[]; - if (!(data.loc[0] instanceof Array)) - data.loc = [data.loc]; - var x_str=[],y_str=[]; - data.loc.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['setBgFgBlock_s'].xmlText([ - data.name||'bg', data.number||0, x_str.join(','),y_str.join(','),data.floorId||'',this.next]); - break; - case "setHeroIcon": // 改变勇士 - this.next = MotaActionBlocks['setHeroIcon_s'].xmlText([ - data.name||"",this.next]); - break; - case "move": // 移动事件 - data.loc=data.loc||['','']; - this.next = MotaActionBlocks['move_s'].xmlText([ - data.loc[0],data.loc[1],data.time,data.keep||false,data.async||false,this.StepString(data.steps),this.next]); - break; - case "moveAction": // 前进一格或撞击 - this.next = MotaActionBlocks['moveAction_s'].xmlText([this.next]); - break; - case "moveHero": // 无视地形移动勇士 - this.next = MotaActionBlocks['moveHero_s'].xmlText([ - data.time,data.async||false,this.StepString(data.steps),this.next]); - break; - case "jump": // 跳跃事件 - data.from=data.from||['','']; - data.to=data.to||['','']; - this.next = MotaActionBlocks['jump_s'].xmlText([ - data.from[0],data.from[1],data.to[0],data.to[1],data.time,data.keep||false,data.async||false,this.next]); - break; - case "jumpHero": // 跳跃勇士 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['jumpHero_s'].xmlText([ - data.loc[0],data.loc[1],data.time,data.async||false,this.next]); - break; - case "changeFloor": // 楼层转换 - if (!data.loc) { - data.loc = data.loc || ['','']; - data.stair = data.stair || ':now'; - } - if (data.floorId==':before'||data.floorId==':next'||data.floorId==':now') { - data.floorType=data.floorId; - delete data.floorId; - } - this.next = MotaActionBlocks['changeFloor_s'].xmlText([ - data.floorType||'floorId',data.floorId,data.stair||'loc',data.loc[0],data.loc[1],data.direction, - data.time, this.next]); - break; - case "changePos": // 直接更换勇士位置, 不切换楼层 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['changePos_s'].xmlText([ - data.loc[0],data.loc[1],data.direction,this.next]); - break; - case "follow": // 跟随勇士 - this.next = MotaActionBlocks['follow_s'].xmlText([data.name||"", this.next]); - break; - case "unfollow": // 取消跟随 - this.next = MotaActionBlocks['unfollow_s'].xmlText([data.name||"", this.next]); - break; - case "animate": // 显示动画 - var animate_loc = data.loc||''; - if(animate_loc && animate_loc!=='hero')animate_loc = animate_loc[0]+','+animate_loc[1]; - this.next = MotaActionBlocks['animate_s'].xmlText([ - data.name,animate_loc,data.alignWindow||false,data.async||false,this.next]); - break; - case "setViewport": // 设置视角 - data.loc = data.loc||['','']; - this.next = MotaActionBlocks['setViewport_s'].xmlText([ - data.loc[0],data.loc[1],this.next]); - break; - case "moveViewport": // 移动视角 - this.next = MotaActionBlocks['moveViewport_s'].xmlText([ - data.time,data.async||false,this.StepString(data.steps),this.next]); - break; - case "vibrate": // 画面震动 - this.next = MotaActionBlocks['vibrate_s'].xmlText([data.time||0, data.async||false, this.next]); - break; - case "showImage": // 显示图片 - data.loc=data.loc||['',''] - if (data.sloc) { - this.next = MotaActionBlocks['showImage_1_s'].xmlText([ - data.code,data.image||data.name,data.sloc[0],data.sloc[1],data.sloc[2],data.sloc[3],data.opacity, - data.loc[0],data.loc[1],data.loc[2],data.loc[3],data.time||0,data.async||false,this.next - ]); - } - else { - this.next = MotaActionBlocks['showImage_s'].xmlText([ - data.code,data.image||data.name,data.loc[0],data.loc[1],data.opacity,data.time||0,data.async||false,this.next]); - } - break; - case "hideImage": // 清除图片 - this.next = MotaActionBlocks['hideImage_s'].xmlText([ - data.code,data.time||0,data.async||false,this.next]); - break; - case "showTextImage": // 显示图片化文本 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['showTextImage_s'].xmlText([ - this.EvalString(data.text),data.code,data.loc[0],data.loc[1],data.lineHeight||1.4,data.opacity,data.time||0,data.async||false,this.next]); - break; - case "moveImage": // 移动图片 - data.to=data.to||['',''] - this.next = MotaActionBlocks['moveImage_s'].xmlText([ - data.code, data.to[0], data.to[1], data.opacity, data.time||0, data.async||false, this.next]); - break; - case "showGif": // 显示动图 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['showGif_s'].xmlText([ - data.name,data.loc[0],data.loc[1],this.next]); - break; - case "setCurtain": // 颜色渐变 - if(this.isset(data.color)){ - data.color = this.Colour(data.color); - this.next = MotaActionBlocks['setCurtain_0_s'].xmlText([ - data.color,'rgba('+data.color+')',data.time,data.keep||false,data.async||false,this.next]); - } else { - this.next = MotaActionBlocks['setCurtain_1_s'].xmlText([ - data.time,data.async||false,this.next]); - } - break; - case "screenFlash": // 画面闪烁 - data.color = this.Colour(data.color); - this.next = MotaActionBlocks['screenFlash_s'].xmlText([ - data.color,'rgba('+data.color+')',data.time||500,data.times,data.async||false,this.next]); - break; - case "setWeather": // 更改天气 - this.next = MotaActionBlocks['setWeather_s'].xmlText([ - data.name,data.level||1,data.keep||false,this.next]); - break; - case "openDoor": // 开一个门, 包括暗墙 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['openDoor_s'].xmlText([ - data.loc[0],data.loc[1],data.floorId||'',data.needKey||false,data.async||false,this.next]); - break; - case "closeDoor": // 关一个门,需要该点无事件 - data.loc=data.loc||['',''] - this.next = MotaActionBlocks['closeDoor_s'].xmlText([ - data.loc[0],data.loc[1],data.id,data.async||false,this.next]); - break; - case "useItem": // 使用道具 - this.next = MotaActionBlocks['useItem_s'].xmlText([ - data.id,this.next]); - break; - case "loadEquip": // 装上装备 - this.next = MotaActionBlocks['loadEquip_s'].xmlText([ - data.id,this.next]); - break; - case "unloadEquip": // 卸下装备 - this.next = MotaActionBlocks['unloadEquip_s'].xmlText([ - data.pos,this.next]); - break; - case "openShop": // 打开一个全局商店 - this.next = MotaActionBlocks['openShop_s'].xmlText([ - data.id,data.open||false,this.next]); - break; - case "disableShop": // 禁用一个全局商店 - this.next = MotaActionBlocks['disableShop_s'].xmlText([ - data.id,this.next]); - break; - case "battle": // 强制战斗 - if (data.id) { - this.next = MotaActionBlocks['battle_s'].xmlText([ - data.id,this.next]); - } - else { - data.loc = data.loc || []; - this.next = MotaActionBlocks['battle_1_s'].xmlText([ - data.loc[0],data.loc[1],this.next]); - } - break; - case "trigger": // 触发另一个事件 - data.loc = data.loc || []; - this.next = MotaActionBlocks['trigger_s'].xmlText([ - data.loc[0],data.loc[1],this.next]); - break; - case "insert": // 强制插入另一个点的事件在当前事件列表执行,当前坐标和楼层不会改变 - if (data.args instanceof Array) { - data.args = JSON.stringify(data.args); - } - else data.args = null; - if (this.isset(data.name)) { - this.next = MotaActionBlocks['insert_1_s'].xmlText([ - data.name, data.args||"", this.next]); - } - else { - data.loc = data.loc || []; - this.next = MotaActionBlocks['insert_2_s'].xmlText([ - data.loc[0],data.loc[1],data.which,data.floorId||'',data.args||"",this.next]); - } - break; - case "playSound": - this.next = MotaActionBlocks['playSound_s'].xmlText([ - data.name,data.stop,this.next]); - break; - case "playBgm": - this.next = MotaActionBlocks['playBgm_s'].xmlText([ - data.name,data.startTime||0,data.keep||false,this.next]); - break - case "pauseBgm": - this.next = MotaActionBlocks['pauseBgm_s'].xmlText([ - this.next]); - break - case "resumeBgm": - this.next = MotaActionBlocks['resumeBgm_s'].xmlText([ - data.resume||false,this.next]); - break - case "loadBgm": - this.next = MotaActionBlocks['loadBgm_s'].xmlText([ - data.name,this.next]); - break - case "freeBgm": - this.next = MotaActionBlocks['freeBgm_s'].xmlText([ - data.name,this.next]); - break - case "stopSound": - this.next = MotaActionBlocks['stopSound_s'].xmlText([ - this.next]); - break - case "setVolume": - this.next = MotaActionBlocks['setVolume_s'].xmlText([ - data.value, data.time, data.async||false, this.next]); - break - case "setValue": - this.next = MotaActionBlocks['setValue_s'].xmlText([ - this.expandIdBlock([data.name]), data["operator"]||'=', - this.expandEvalBlock([data.value]), - data.norefresh || false, - this.next]); - break; - case "setEnemy": - this.next = MotaActionBlocks['setEnemy_s'].xmlText([ - data.id, data.name, this.expandEvalBlock([data.value]), this.next]); - break; - case "setFloor": - this.next = MotaActionBlocks['setFloor_s'].xmlText([ - data.name, data.floorId||null, data.value, this.next]); - break; - case "setGlobalAttribute": - this.next = MotaActionBlocks['setGlobalAttribute_s'].xmlText([ - data.name, data.value, this.next]); - break; - case "setGlobalValue": - this.next = MotaActionBlocks['setGlobalValue_s'].xmlText([ - data.name, data.value, this.next]); - break; - case "setGlobalFlag": - this.next = MotaActionBlocks['setGlobalFlag_s'].xmlText([ - data.name, data.value, this.next]); - break; - case "input": - this.next = MotaActionBlocks['input_s'].xmlText([ - data.text,this.next]); - break; - case "input2": - this.next = MotaActionBlocks['input2_s'].xmlText([ - data.text,this.next]); - break; - case "if": // 条件判断 - if (data["false"]) { - this.next = MotaActionBlocks['if_s'].xmlText([ - this.expandEvalBlock([data.condition]), - this.insertActionList(data["true"]), - this.insertActionList(data["false"]), - this.next]); - } - else { - this.next = MotaActionBlocks['if_1_s'].xmlText([ - this.expandEvalBlock([data.condition]), - this.insertActionList(data["true"]), - this.next]); - } - break; - case "confirm": // 显示确认框 - this.next = MotaActionBlocks['confirm_s'].xmlText([ - this.EvalString(data.text), data.timeout||0, data["default"], - this.insertActionList(data["yes"]), - this.insertActionList(data["no"]), - this.next]); - break; - case "switch": // 多重条件分歧 - var case_caseList = null; - for(var ii=data.caseList.length-1,caseNow;caseNow=data.caseList[ii];ii--) { - case_caseList=MotaActionBlocks['switchCase'].xmlText([ - this.isset(caseNow.case)?this.expandEvalBlock([caseNow.case]):"值",caseNow.nobreak,this.insertActionList(caseNow.action),case_caseList]); - } - this.next = MotaActionBlocks['switch_s'].xmlText([ - this.expandEvalBlock([data.condition]), - case_caseList,this.next]); - break; - case "choices": // 提供选项 - var text_choices = null; - for(var ii=data.choices.length-1,choice;choice=data.choices[ii];ii--) { - choice.color = this.Colour(choice.color); - text_choices=MotaActionBlocks['choicesContext'].xmlText([ - choice.text,choice.icon,choice.color,'rgba('+choice.color+')',choice.condition||'',this.insertActionList(choice.action),text_choices]); - } - if (!this.isset(data.text)) data.text = ''; - var info = this.getTitleAndPosition(data.text); - this.next = MotaActionBlocks['choices_s'].xmlText([ - info[3],info[0],info[1],data.timeout||0,text_choices,this.next]); - break; - case "for": // 循环遍历 - this.next = MotaActionBlocks['for_s'].xmlText([ - this.expandEvalBlock([data.name]), - data.from || 0, data.to || 0, data.step || 0, - this.insertActionList(data.data), - this.next]); - break; - case "forEach": // 循环遍历列表 - this.next = MotaActionBlocks['forEach_s'].xmlText([ - this.expandEvalBlock([data.name]), - JSON.stringify(data.list), - this.insertActionList(data.data), - this.next]); - break; - case "while": // 前置条件循环处理 - this.next = MotaActionBlocks['while_s'].xmlText([ - this.expandEvalBlock([data.condition]), - this.insertActionList(data.data), - this.next]); - break; - case "dowhile": // 后置条件循环处理 - this.next = MotaActionBlocks['dowhile_s'].xmlText([ - this.insertActionList(data.data), - this.expandEvalBlock([data.condition]), - this.next]); - break; - case "break": // 跳出循环 - this.next = MotaActionBlocks['break_s'].xmlText([ - this.next]); - break; - case "continue": // 继续执行当前循环 - this.next = MotaActionBlocks['continue_s'].xmlText([ - this.next]); - break; - case "win": - this.next = MotaActionBlocks['win_s'].xmlText([ - data.reason,data.norank?true:false,data.noexit?true:false,this.next]); - break; - case "lose": - this.next = MotaActionBlocks['lose_s'].xmlText([ - data.reason,this.next]); - break; - case "restart": - this.next = MotaActionBlocks['restart_s'].xmlText([ - this.next]); - break; - case "function": - var func = data["function"]; - func=func.split('{').slice(1).join('{').split('}').slice(0,-1).join('}').trim().split('\n').join('\\n'); - this.next = MotaActionBlocks['function_s'].xmlText([ - data.async||false,func,this.next]); - break; - case "update": - this.next = MotaActionBlocks['update_s'].xmlText([ - this.next, this.doNotCheckAutoEvents||false]); - break; - case "showStatusBar": - this.next = MotaActionBlocks['showStatusBar_s'].xmlText([ - this.next]); - break; - case "hideStatusBar": - this.next = MotaActionBlocks['hideStatusBar_s'].xmlText([ - data.toolbox||false,this.next]); - break; - case "showHero": - this.next = MotaActionBlocks['showHero_s'].xmlText([ - this.next]); - break; - case "hideHero": - this.next = MotaActionBlocks['hideHero_s'].xmlText([ - this.next]); - break; - case "sleep": // 等待多少毫秒 - this.next = MotaActionBlocks['sleep_s'].xmlText([ - data.time||0,data.noSkip||false,this.next]); - break; - case "wait": // 等待用户操作 - var case_waitList = null; - if (data.data) { - for(var ii=data.data.length-1,caseNow;caseNow=data.data[ii];ii--) { - if (caseNow["case"] == "keyboard") { - case_waitList = MotaActionBlocks['waitContext_1'].xmlText([ - caseNow.keycode || "0", this.insertActionList(caseNow.action), case_waitList - ]); - } else if (caseNow["case"] == "mouse") { - case_waitList = MotaActionBlocks['waitContext_2'].xmlText([ - caseNow.px[0], caseNow.px[1], caseNow.py[0], caseNow.py[1], this.insertActionList(caseNow.action), case_waitList - ]); - } - } - } - this.next = MotaActionBlocks['wait_s'].xmlText([ - data.timeout||0,case_waitList, this.next]); - break; - case "waitAsync": // 等待所有异步事件执行完毕 - this.next = MotaActionBlocks['waitAsync_s'].xmlText([ - this.next]); - break; - case "callBook": // 呼出怪物手册 - this.next = MotaActionBlocks['callBook_s'].xmlText([ - this.next]); - break; - case "callSave": // 呼出存档界面 - this.next = MotaActionBlocks['callSave_s'].xmlText([ - this.next]); - break; - case "autoSave": // 自动存档 - this.next = MotaActionBlocks['autoSave_s'].xmlText([ - data.nohint||false, this.next]); - break; - case "callLoad": // 呼出读档界面 - this.next = MotaActionBlocks['callLoad_s'].xmlText([ - this.next]); - break; - case "exit": // 立刻结束事件 - this.next = MotaActionBlocks['exit_s'].xmlText([ - this.next]); - break; - case "previewUI": // UI绘制预览 - this.next = MotaActionBlocks['previewUI_s'].xmlText([ - this.insertActionList(data.action), this.next - ]); - break; - case "clearMap": // 清除画布 - if (data.x != null && data.y != null && data.width != null && data.height != null) { - this.next = MotaActionBlocks['clearMap_s'].xmlText([ - data.x, data.y, data.width, data.height, this.next - ]); - } - else { - this.next = MotaActionBlocks['clearMap_1_s'].xmlText([this.next]); - } - break; - case "setAttribute": // 设置画布属性 - data.fillStyle=this.Colour(data.fillStyle); - data.strokeStyle=this.Colour(data.strokeStyle); - this.next = MotaActionBlocks['setAttribute_s'].xmlText([ - data.font,data.fillStyle,'rgba('+data.fillStyle+')',data.strokeStyle,'rgba('+data.strokeStyle+')', - data.lineWidth,data.alpha,data.align,data.baseline,data.z,this.next]); - break; - case "fillText": // 绘制一行文本 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillText_s'].xmlText([ - data.x, data.y, data.style, 'rgba('+data.style+')', data.font, data.maxWidth, this.EvalString(data.text), this.next - ]); - break; - case "fillBoldText": // 绘制一行描边文本 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillBoldText_s'].xmlText([ - data.x, data.y, data.style, 'rgba('+data.style+')', data.strokeStyle, 'rgba('+(data.strokeStyle||"0,0,0,1")+')', - data.font, this.EvalString(data.text), this.next - ]); - break; - case "drawTextContent": // 绘制多行文本 - data.color = this.Colour(data.color); - this.next = MotaActionBlocks['drawTextContent_s'].xmlText([ - this.EvalString(data.text), data.left, data.top, data.maxWidth, data.color, 'rgba('+data.color+')', - data.align, data.fontSize, data.lineHeight, data.bold, this.next - ]); - break; - case "fillRect": // 绘制矩形 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', this.next - ]); - break; - case "strokeRect": // 绘制矩形边框 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['strokeRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "drawLine": // 绘制线段 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['drawLine_s'].xmlText([ - data.x1, data.y1, data.x2, data.y2, data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "drawArrow": // 绘制线段 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['drawArrow_s'].xmlText([ - data.x1, data.y1, data.x2, data.y2, data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "fillPolygon": // 绘制多边形 - data.style = this.Colour(data.style); - var x_str=[],y_str=[]; - data.nodes.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['fillPolygon_s'].xmlText([ - x_str.join(','), y_str.join(','), data.style, 'rgba('+data.style+')', this.next - ]); - break; - case "strokePolygon": // 绘制多边形 - data.style = this.Colour(data.style); - var x_str=[],y_str=[]; - data.nodes.forEach(function (t) { - x_str.push(t[0]); - y_str.push(t[1]); - }) - this.next = MotaActionBlocks['strokePolygon_s'].xmlText([ - x_str.join(','), y_str.join(','), data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "fillEllipse": // 绘制椭圆 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillEllipse_s'].xmlText([ - data.x, data.y, data.a, data.b, data.angle, data.style, 'rgba('+data.style+')', this.next - ]); - break; - case "strokeEllipse": // 绘制椭圆边框 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['strokeEllipse_s'].xmlText([ - data.x, data.y, data.a, data.b, data.angle, data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "fillArc": // 绘制弧 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillArc_s'].xmlText([ - data.x, data.y, data.r, data.start, data.end, data.style, 'rgba('+data.style+')', this.next - ]); - break; - case "strokeArc": // 绘制弧 - data.style = this.Colour(data.style); - this.next = MotaActionBlocks['strokeArc_s'].xmlText([ - data.x, data.y, data.r, data.start, data.end, data.style, 'rgba('+data.style+')', data.lineWidth, this.next - ]); - break; - case "drawImage": // 绘制图片 - if (data.x1 != null && data.y1 != null && data.w1 != null && data.h1 != null) { - this.next = MotaActionBlocks['drawImage_1_s'].xmlText([ - data.image, data.x, data.y, data.w, data.h, data.x1, data.y1, data.w1, data.h1, this.next - ]); - } - else { - this.next = MotaActionBlocks['drawImage_s'].xmlText([ - data.image, data.x, data.y, data.w, data.h, this.next - ]); - } - break; - case "drawIcon": // 绘制图标 - this.next = MotaActionBlocks['drawIcon_s'].xmlText([ - data.id, data.frame||0, data.x, data.y, data.width, data.height, this.next - ]); - break; - case "drawBackground": // 绘制背景 - if (!/^\w+\.png$/.test(data.background)) - data.background=this.Colour(data.background); - this.next = MotaActionBlocks['drawBackground_s'].xmlText([ - data.background, 'rgba('+data.background+')', data.x, data.y, data.width, data.height, this.next - ]); - break; - case "drawSelector": // 绘制光标 - if (data.image) { - this.next = MotaActionBlocks['drawSelector_s'].xmlText([ - data.image, data.code, data.x, data.y, data.width, data.height, this.next - ]); - } - else { - this.next = MotaActionBlocks['drawSelector_1_s'].xmlText([data.code, this.next]); - } - case "animateImage": // 兼容 animateImage - break; - default: - this.next = MotaActionBlocks['unknown_s'].xmlText([ - JSON.stringify(data),this.next]); - } - this.parseAction(); - return; -} - -////// 往当前事件列表之后添加一个事件组 ////// -ActionParser.prototype.insertActionList = function (actionList) { - if (actionList.length===0) return null; - this.event.data.list.push({"type": "_next", "next": this.next}); - this.event.data.list=this.event.data.list.concat(actionList); - this.next = null; - this.parseAction(); - return this.result; -} - -////// 判断某对象是否不为undefined也不会null ////// -ActionParser.prototype.isset = function (val) { - if (val === undefined || val === null) { - return false; - } - return true -} - -ActionParser.prototype.StepString = function(steplist) { - var stepchar = { - 'up': '上', - 'down': '下', - 'left': '左', - 'right': '右', - 'forward': '前', - 'backward': '后' - } - var StepString = ''; - var last = null, number = 0; - steplist.forEach(function (v) { - if (v != last) { - if (last != null) { - StepString += stepchar[last]; - if (number > 1) StepString += number; - } - last = v; - number = 1; - } else { - number++; - } - }); - if (last != null) { - StepString += stepchar[last]; - if (number > 1) StepString += number; - } - return StepString; -} - -ActionParser.prototype.EvalString = function(EvalString) { - return EvalString.split('\b').join('\\b').split('\t').join('\\t').split('\n').join('\\n'); -} - -ActionParser.prototype.getTitleAndPosition = function (string) { - string = this.EvalString(string); - var title = '', icon = '', position = ''; - string = string.replace(/\\t\[(([^\],]+),)?([^\],]+)\]/g, function (s0, s1, s2, s3) { - if (s3) title = s3; - if (s2) { icon = s3; title = s2; } - if (icon && !/^(.*)\.(jpg|jpeg|png)$/.test(icon) - && !/^[0-9a-zA-Z_][0-9a-zA-Z_:]*$/.test(icon)) { title += "," + icon; icon = ''; } - return ""; - }).replace(/\\b\[(.*?)\]/g, function (s0, s1) { - position = s1; return ""; - }); - return [title, icon, position, string]; -} - -ActionParser.prototype.Colour = function(color) { - return color?JSON.stringify(color).slice(1,-1):null; -} - -ActionParser.prototype.matchId = function(args) { - var rt=function(xml,args){ - // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 - return {ret:true,xml:xml,args:args} - } - var match = /nothing/.exec('nothing') - // 固定列表 - var FixedId_List=MotaActionBlocks.idFixedList_e.json.args0[0].options; // [["生命", "status:hp"], ...] - match=new RegExp('^('+FixedId_List.map(function(v){return v[1]}).join('|')+')$').exec(args[0]) - if(match){ - return rt(MotaActionBlocks['idFixedList_e'].xmlText, args); - } - // 独立开关 - match=/^switch:([A-Z])$/.exec(args[0]) - if(match){ - args[0]=match[1] - return rt(MotaActionBlocks['idFlag_e'].xmlText, args); - } - // 临时变量 - match=/^temp:([A-Z])$/.exec(args[0]) - if(match){ - args[0]=match[1] - return rt(MotaActionBlocks['idTemp_e'].xmlText, args); - } - // id列表 - var Id_List = MotaActionBlocks.idIdList_e.json.args0[0].options; // [["变量", "flag"], ...] - match=new RegExp('^('+Id_List.map(function(v){return v[1]}).join('|')+'):([a-zA-Z0-9_\\u4E00-\\u9FCC]+)$').exec(args[0]) - if(match){ - args=[match[1],MotaActionFunctions.replaceToName_token(match[2])] - return rt(MotaActionBlocks['idIdList_e'].xmlText, args); - } - return {ret:false} -} - -ActionParser.prototype.matchEvalAtom = function(args) { - var rt=function(xml,args){ - // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 - return {ret:true,xml:xml,args:args} - } - var match = /nothing/.exec('nothing') - // 勾选框 - match = /^(true|false)$/.exec(args[0]) - if(match){ - return rt(MotaActionBlocks['bool_e'].xmlText, args); - } - // 怪物属性 - var EnemyId_List=MotaActionBlocks.enemyattr_e.json.args0[1].options; // [["生命", "hp"], ...] - match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) - if(match){ - args=[MotaActionFunctions.replaceToName_token(match[1]),MotaActionFunctions.replaceToName_token(match[2])] - return rt(MotaActionBlocks['enemyattr_e'].xmlText, args); - } - // 图块ID - match=/^blockId:(-?\d+),(-?\d+)$/.exec(args[0]) - if(match){ - args=[match[1],match[2]] - return rt(MotaActionBlocks['blockId_e'].xmlText, args); - } - // 图块类别 - match=/^blockCls:(-?\d+),(-?\d+)$/.exec(args[0]) - if(match){ - args=[match[1],match[2]] - return rt(MotaActionBlocks['blockCls_e'].xmlText, args); - } - // 装备孔 - match=/^equip:(-?\d+)$/.exec(args[0]) - if(match){ - args[0]=match[1] - return rt(MotaActionBlocks['equip_e'].xmlText, args); - } - return {ret:false} -} - -ActionParser.prototype.matchEvalCompare=function(args, isShadow){ - var raw=args[0].replace(/>/g,'>').replace(/</g,'<') - if (raw[0]+raw.slice(-1)=='()') raw=raw.slice(1,-1); - var str=raw - var xml=MotaActionBlocks['expression_arithmetic_0'].xmlText - if (!/<=|<|>=|>|==|!=/.exec(str)) return {ret:false}; - str=str.replace(/[^<>=!()]/g,' ') - // 处理括号匹配 - var old; - do { - old=str; - str=str.replace(/\([^()]*\)/g,function(v){return Array.from({length:v.length+1}).join(' ')}) - } while (old!=str); - // 按优先级依次寻找以下符号 - var oplist=['<','<=','>','>=','==','!='] - for (var index = 0,op; op=oplist[index]; index++) { - var match=new RegExp('(?<= )'+op+'(?= )').exec(str) - if (!match) continue; - args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op,this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] - return {ret:true,xml:xml,args:args} - } - return {ret:false} -} - -ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { - args[0]=MotaActionFunctions.replaceFromName(args[0]) - var xml=MotaActionBlocks['idString_e'].xmlText - var ret=this.matchId(args) - if (ret.ret){ - xml=ret.xml; - args=ret.args; - } else { - for (var index = 0; index < args.length; index++) { - args[index]=MotaActionFunctions.replaceToName(args[index]) - } - } - return xml(args, isShadow, comment); -} - -ActionParser.prototype.expandEvalBlock = function(args, isShadow, comment) { - args[0]=MotaActionFunctions.replaceFromName(args[0]) - var xml=MotaActionBlocks['evalString_e'].xmlText - var ret=this.matchId(args) - if (ret.ret){ - xml=ret.xml; - args=ret.args; - } else if( (ret=this.matchEvalAtom(args)).ret ){ - xml=ret.xml; - args=ret.args; - } else if(/^(!.*|\(!.*\))$/.exec(args[0])){ - // 非 - xml=MotaActionBlocks['negate_e'].xmlText - var content=args[0][0]=='!'?args[0].slice(1):args[0].slice(2,-1) - args[0]=this.expandEvalBlock([content],isShadow) - } else if( (ret=this.matchEvalCompare(args, isShadow)).ret ){ - // 大小比较 - xml=ret.xml; - args=ret.args; - } else { - for (var index = 0; index < args.length; index++) { - args[index]=MotaActionFunctions.replaceToName(args[index]) - } - } - return xml(args, isShadow, comment); -} - -MotaActionFunctions.actionParser = new ActionParser(); - -MotaActionFunctions.workspace = function(){return workspace} - -MotaActionFunctions.parse = function(obj,type) { - try { - obj = JSON.parse(MotaActionFunctions.replaceToName(JSON.stringify(obj))); - } catch (e) {} - MotaActionFunctions.workspace().clear(); - xml_text = MotaActionFunctions.actionParser.parse(obj,type||'event'); - xml = Blockly.Xml.textToDom(''+xml_text+''); - Blockly.Xml.domToWorkspace(xml, MotaActionFunctions.workspace()); -} - -MotaActionFunctions.EvalString_pre = function(EvalString){ - if (EvalString.indexOf('__door__')!==-1) throw new Error('请修改开门变量__door__,如door1,door2,door3等依次向后。请勿存在两个门使用相同的开门变量。'); - EvalString = MotaActionFunctions.replaceFromName(EvalString); - return EvalString.replace(/([^\\])"/g,'$1\\"').replace(/^"/g,'\\"').replace(/""/g,'"\\"'); -} - -MotaActionFunctions.JsonEvalString_pre = function (JsonEvalString) { - if (JsonEvalString == '') return ''; - JsonEvalString = MotaActionFunctions.replaceFromName(JsonEvalString); - try { - return JSON.stringify(JSON.parse(JsonEvalString)); - } catch (e) { - throw new Error('此处需要填写一个合法的JSON内容'); - } -} - -MotaActionFunctions.IntString_pre = function (IntString) { - if (!/^\d*$/.test(IntString)) throw new Error('此项必须是整数或不填'); - return IntString; -} - -MotaActionFunctions.IdString_pre = function(IdString){ - if (IdString.indexOf('__door__')!==-1) throw new Error('请修改开门变量__door__,如door1,door2,door3等依次向后。请勿存在两个门使用相同的开门变量。'); - IdString = MotaActionFunctions.replaceFromName(IdString); - if (IdString && !(MotaActionFunctions.pattern.id.test(IdString)) && !(MotaActionFunctions.pattern.idWithoutFlag.test(IdString))) - throw new Error('id: '+IdString+'中包含了0-9 a-z A-Z _ - :之外的字符'); - return IdString; -} - -MotaActionFunctions.PosString_pre = function(PosString){ - if (!PosString || /^-?\d+$/.test(PosString)) return PosString; - //if (!(MotaActionFunctions.pattern.id.test(PosString)))throw new Error(PosString+'中包含了0-9 a-z A-Z _ 和中文之外的字符,或者是没有以flag: 开头'); - return '"'+MotaActionFunctions.replaceFromName(PosString)+'"'; -} - -MotaActionFunctions.StepString_pre = function(StepString){ - //StepString='上右3下2左上左2' - var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R').replace(/前/g,'F').replace(/后/g,'B'); - - //copyed from core.js - var ans=[], index=0; - - var isset = function(a) { - if (a == undefined || a == null) { - return false; - } - return true; - } - var getNumber = function (noparse) { - var num=""; - while (index 1) StepString += number; + } + last = v; + number = 1; + } else { + number++; + } + }); + if (last != null) { + StepString += stepchar[last]; + if (number > 1) StepString += number; + } + return StepString; +} + +ActionParser.prototype.EvalString = function(EvalString) { + return EvalString.split('\b').join('\\b').split('\t').join('\\t').split('\n').join('\\n'); +} + +ActionParser.prototype.getTitleAndPosition = function (string) { + string = this.EvalString(string); + var title = '', icon = '', position = ''; + string = string.replace(/\\t\[(([^\],]+),)?([^\],]+)\]/g, function (s0, s1, s2, s3) { + if (s3) title = s3; + if (s2) { icon = s3; title = s2; } + if (icon && !/^(.*)\.(jpg|jpeg|png)$/.test(icon) + && !/^[0-9a-zA-Z_][0-9a-zA-Z_:]*$/.test(icon)) { title += "," + icon; icon = ''; } + return ""; + }).replace(/\\b\[(.*?)\]/g, function (s0, s1) { + position = s1; return ""; + }); + return [title, icon, position, string]; +} + +ActionParser.prototype.Colour = function(color) { + return color?JSON.stringify(color).slice(1,-1):null; +} + +ActionParser.prototype.matchId = function(args) { + var rt=function(xml,args){ + // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 + return {ret:true,xml:xml,args:args} + } + var match = /nothing/.exec('nothing') + // 固定列表 + var FixedId_List=MotaActionBlocks.idFixedList_e.json.args0[0].options; // [["生命", "status:hp"], ...] + match=new RegExp('^('+FixedId_List.map(function(v){return v[1]}).join('|')+')$').exec(args[0]) + if(match){ + return rt(MotaActionBlocks['idFixedList_e'].xmlText, args); + } + // 独立开关 + match=/^switch:([A-Z])$/.exec(args[0]) + if(match){ + args[0]=match[1] + return rt(MotaActionBlocks['idFlag_e'].xmlText, args); + } + // 临时变量 + match=/^temp:([A-Z])$/.exec(args[0]) + if(match){ + args[0]=match[1] + return rt(MotaActionBlocks['idTemp_e'].xmlText, args); + } + // id列表 + var Id_List = MotaActionBlocks.idIdList_e.json.args0[0].options; // [["变量", "flag"], ...] + match=new RegExp('^('+Id_List.map(function(v){return v[1]}).join('|')+'):([a-zA-Z0-9_\\u4E00-\\u9FCC]+)$').exec(args[0]) + if(match){ + args=[match[1],MotaActionFunctions.replaceToName_token(match[2])] + return rt(MotaActionBlocks['idIdList_e'].xmlText, args); + } + return {ret:false} +} + +ActionParser.prototype.matchEvalAtom = function(args) { + var rt=function(xml,args){ + // 此处刻意不写成 xml:MotaActionBlocks[str].xmlText 来方便搜索 + return {ret:true,xml:xml,args:args} + } + var match = /nothing/.exec('nothing') + // 勾选框 + match = /^(true|false)$/.exec(args[0]) + if(match){ + return rt(MotaActionBlocks['bool_e'].xmlText, args); + } + // 怪物属性 + var EnemyId_List=MotaActionBlocks.enemyattr_e.json.args0[1].options; // [["生命", "hp"], ...] + match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) + if(match){ + args=[MotaActionFunctions.replaceToName_token(match[1]),MotaActionFunctions.replaceToName_token(match[2])] + return rt(MotaActionBlocks['enemyattr_e'].xmlText, args); + } + // 图块ID + match=/^blockId:(-?\d+),(-?\d+)$/.exec(args[0]) + if(match){ + args=[match[1],match[2]] + return rt(MotaActionBlocks['blockId_e'].xmlText, args); + } + // 图块类别 + match=/^blockCls:(-?\d+),(-?\d+)$/.exec(args[0]) + if(match){ + args=[match[1],match[2]] + return rt(MotaActionBlocks['blockCls_e'].xmlText, args); + } + // 装备孔 + match=/^equip:(-?\d+)$/.exec(args[0]) + if(match){ + args[0]=match[1] + return rt(MotaActionBlocks['equip_e'].xmlText, args); + } + return {ret:false} +} + +ActionParser.prototype.matchEvalCompare=function(args, isShadow){ + var raw=args[0].replace(/>/g,'>').replace(/</g,'<') + if (raw[0]+raw.slice(-1)=='()') raw=raw.slice(1,-1); + var str=raw + var xml=MotaActionBlocks['expression_arithmetic_0'].xmlText + if (!/<=|<|>=|>|==|!=/.exec(str)) return {ret:false}; + str=str.replace(/[^<>=!()]/g,' ') + // 处理括号匹配 + var old; + do { + old=str; + str=str.replace(/\([^()]*\)/g,function(v){return Array.from({length:v.length+1}).join(' ')}) + } while (old!=str); + // 按优先级依次寻找以下符号 + var oplist=['<','<=','>','>=','==','!='] + for (var index = 0,op; op=oplist[index]; index++) { + var match=new RegExp('(?<= )'+op+'(?= )').exec(str) + if (!match) continue; + args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op,this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] + return {ret:true,xml:xml,args:args} + } + return {ret:false} +} + +ActionParser.prototype.expandIdBlock = function(args, isShadow, comment) { + args[0]=MotaActionFunctions.replaceFromName(args[0]) + var xml=MotaActionBlocks['idString_e'].xmlText + var ret=this.matchId(args) + if (ret.ret){ + xml=ret.xml; + args=ret.args; + } else { + for (var index = 0; index < args.length; index++) { + args[index]=MotaActionFunctions.replaceToName(args[index]) + } + } + return xml(args, isShadow, comment); +} + +ActionParser.prototype.expandEvalBlock = function(args, isShadow, comment) { + args[0]=MotaActionFunctions.replaceFromName(args[0]) + var xml=MotaActionBlocks['evalString_e'].xmlText + var ret=this.matchId(args) + if (ret.ret){ + xml=ret.xml; + args=ret.args; + } else if( (ret=this.matchEvalAtom(args)).ret ){ + xml=ret.xml; + args=ret.args; + } else if(/^(!.*|\(!.*\))$/.exec(args[0])){ + // 非 + xml=MotaActionBlocks['negate_e'].xmlText + var content=args[0][0]=='!'?args[0].slice(1):args[0].slice(2,-1) + args[0]=this.expandEvalBlock([content],isShadow) + } else if( (ret=this.matchEvalCompare(args, isShadow)).ret ){ + // 大小比较 + xml=ret.xml; + args=ret.args; + } else { + for (var index = 0; index < args.length; index++) { + args[index]=MotaActionFunctions.replaceToName(args[index]) + } + } + return xml(args, isShadow, comment); +} + +MotaActionFunctions.actionParser = new ActionParser(); + +MotaActionFunctions.workspace = function(){return workspace} + +MotaActionFunctions.parse = function(obj,type) { + try { + obj = JSON.parse(MotaActionFunctions.replaceToName(JSON.stringify(obj))); + } catch (e) {} + MotaActionFunctions.workspace().clear(); + xml_text = MotaActionFunctions.actionParser.parse(obj,type||'event'); + xml = Blockly.Xml.textToDom(''+xml_text+''); + Blockly.Xml.domToWorkspace(xml, MotaActionFunctions.workspace()); +} + +MotaActionFunctions.EvalString_pre = function(EvalString){ + if (EvalString.indexOf('__door__')!==-1) throw new Error('请修改开门变量__door__,如door1,door2,door3等依次向后。请勿存在两个门使用相同的开门变量。'); + EvalString = MotaActionFunctions.replaceFromName(EvalString); + return EvalString.replace(/([^\\])"/g,'$1\\"').replace(/^"/g,'\\"').replace(/""/g,'"\\"'); +} + +MotaActionFunctions.JsonEvalString_pre = function (JsonEvalString) { + if (JsonEvalString == '') return ''; + JsonEvalString = MotaActionFunctions.replaceFromName(JsonEvalString); + try { + return JSON.stringify(JSON.parse(JsonEvalString)); + } catch (e) { + throw new Error('此处需要填写一个合法的JSON内容'); + } +} + +MotaActionFunctions.IntString_pre = function (IntString) { + if (!/^\d*$/.test(IntString)) throw new Error('此项必须是整数或不填'); + return IntString; +} + +MotaActionFunctions.IdString_pre = function(IdString){ + if (IdString.indexOf('__door__')!==-1) throw new Error('请修改开门变量__door__,如door1,door2,door3等依次向后。请勿存在两个门使用相同的开门变量。'); + IdString = MotaActionFunctions.replaceFromName(IdString); + if (IdString && !(MotaActionFunctions.pattern.id.test(IdString)) && !(MotaActionFunctions.pattern.idWithoutFlag.test(IdString))) + throw new Error('id: '+IdString+'中包含了0-9 a-z A-Z _ - :之外的字符'); + return IdString; +} + +MotaActionFunctions.PosString_pre = function(PosString){ + if (!PosString || /^-?\d+$/.test(PosString)) return PosString; + //if (!(MotaActionFunctions.pattern.id.test(PosString)))throw new Error(PosString+'中包含了0-9 a-z A-Z _ 和中文之外的字符,或者是没有以flag: 开头'); + return '"'+MotaActionFunctions.replaceFromName(PosString)+'"'; +} + +MotaActionFunctions.StepString_pre = function(StepString){ + //StepString='上右3下2左上左2' + var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R').replace(/前/g,'F').replace(/后/g,'B'); + + //copyed from core.js + var ans=[], index=0; + + var isset = function(a) { + if (a == undefined || a == null) { + return false; + } + return true; + } + var getNumber = function (noparse) { + var num=""; + while (index + diff --git a/editor.html b/editor.html index c5dcf5b9..77cb455c 100644 --- a/editor.html +++ b/editor.html @@ -610,6 +610,7 @@ + From cc46a86915572bda5d52a54dd5d65e8ee3ee2b96 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Mon, 18 May 2020 20:01:32 +0800 Subject: [PATCH 25/80] expand --- _server/MotaAction.g4 | 12 +++++------- _server/MotaActionParse.js | 14 ++++++++------ _server/config.json | 2 +- _server/editor.js | 2 ++ _server/editor_blockly.js | 11 +++++++++++ editor-mobile.html | 2 ++ editor.html | 2 ++ 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 38cf35bf..78f1cf66 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2564,9 +2564,7 @@ expression //todo 修改recieveOrder,根据Arithmetic_List_0不同的值设定不同的recieveOrder var code = expression_0 + Arithmetic_List_0 + expression_1; var ops = { - '^': 'Math.pow('+expression_0+','+expression_1+')', - '和': expression_0+' && '+expression_1, - '或': expression_0+' || '+expression_1, + '^': 'Math.pow('+expression_0+','+expression_1+')' } if (ops[Arithmetic_List_0])code = ops[Arithmetic_List_0]; var orders = { @@ -2581,8 +2579,8 @@ var orders = { '<': Blockly.JavaScript.ORDER_RELATIONAL, '>=': Blockly.JavaScript.ORDER_RELATIONAL, '<=': Blockly.JavaScript.ORDER_RELATIONAL, - '和': Blockly.JavaScript.ORDER_LOGICAL_AND, - '或': Blockly.JavaScript.ORDER_LOGICAL_OR + '&&': Blockly.JavaScript.ORDER_LOGICAL_AND, + '||': Blockly.JavaScript.ORDER_LOGICAL_OR } return [code, orders[Arithmetic_List_0]]; */; @@ -2774,8 +2772,8 @@ ShopUse_List /*ShopUse_List ['money','exp']*/; Arithmetic_List - : '+'|'-'|'*'|'/'|'^'|'=='|'!='|'>'|'<'|'>='|'<='|'和'|'或' - ; + : '+'|'-'|'*'|'/'|'^'|'=='|'!='|'>'|'<'|'>='|'<='|'且'|'或' + /*Arithmetic_List ['+','-','*','/','^','==','!=','>','<','>=','<=','&&','||']*/; AssignOperator_List : '='|'+='|'-='|'*='|'/='|'**='|'//='|'%=' diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 4dabb99d..3b723d2e 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -997,12 +997,13 @@ ActionParser.prototype.matchEvalAtom = function(args) { } ActionParser.prototype.matchEvalCompare=function(args, isShadow){ - var raw=args[0].replace(/>/g,'>').replace(/</g,'<') + if (MotaActionFunctions.disableExpandCompare) return {ret:false}; + var raw=args[0].replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'"').replace(/ /g,' ').replace(/&/g,'&') if (raw[0]+raw.slice(-1)=='()') raw=raw.slice(1,-1); var str=raw var xml=MotaActionBlocks['expression_arithmetic_0'].xmlText - if (!/<=|<|>=|>|==|!=/.exec(str)) return {ret:false}; - str=str.replace(/[^<>=!()]/g,' ') + if (!/<=|<|>=|>|==|!=|&&|\|\|/.exec(str)) return {ret:false}; + str=str.replace(/[^<>=!()&|]/g,' ') // 处理括号匹配 var old; do { @@ -1010,11 +1011,11 @@ ActionParser.prototype.matchEvalCompare=function(args, isShadow){ str=str.replace(/\([^()]*\)/g,function(v){return Array.from({length:v.length+1}).join(' ')}) } while (old!=str); // 按优先级依次寻找以下符号 - var oplist=['<','<=','>','>=','==','!='] + var oplist=['<','<=','>','>=','==','!=','&&','||'].reverse() for (var index = 0,op; op=oplist[index]; index++) { - var match=new RegExp('(?<= )'+op+'(?= )').exec(str) + var match=new RegExp('(?<= )'+(op=='||'?'\\|\\|':op)+'(?= )').exec(str) if (!match) continue; - args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op,this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] + args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),(op=='&&'?'&&':op),this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] return {ret:true,xml:xml,args:args} } return {ret:false} @@ -1248,6 +1249,7 @@ MotaActionFunctions.pattern.replaceEnemyList = [ ]; MotaActionFunctions.disableReplace = false; +MotaActionFunctions.disableExpandCompare = false; MotaActionFunctions.replaceToName_token = function (str) { if (!str || MotaActionFunctions.disableReplace) return str; diff --git a/_server/config.json b/_server/config.json index 9c9888dc..4965dae4 100644 --- a/_server/config.json +++ b/_server/config.json @@ -1 +1 @@ -{"lastUsed":[],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample0","disableBlocklyReplace":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}} \ No newline at end of file +{"lastUsed":[],"foldPerCol":50,"folded":false,"editorLastFloorId":"sample0","disableBlocklyReplace":false,"disableBlocklyExpandCompare":false,"shortcut":{"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0}} \ No newline at end of file diff --git a/_server/editor.js b/_server/editor.js index 6f282c4c..31d1f954 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -87,6 +87,8 @@ function editor() { ratio : 1, // blockly转义 disableBlocklyReplace: false, + // blockly展开比较 + disableBlocklyExpandCompare: false, // 绑定机关门事件相关 bindSpecialDoor: { diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index df6ed146..b7bc1166 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -497,6 +497,16 @@ function omitedcheckUpdateFunction(event) { alert("已" + (replaceCheckbox.checked ? "开启" : "关闭") + "中文变量名替换!\n关闭并重开事件编辑器以生效。"); } + editor.uivalues.disableBlocklyExpandCompare = editor.config.get("disableBlocklyExpandCompare", false); + var expandCompareCheckbox = document.getElementById('blocklyExpandCompare'); + expandCompareCheckbox.checked = !editor.uivalues.disableBlocklyExpandCompare; + + editor_blockly.triggerExpandCompare = function () { + editor.uivalues.disableBlocklyExpandCompare = !expandCompareCheckbox.checked; + editor.config.set("disableBlocklyExpandCompare", !expandCompareCheckbox.checked); + if (MotaActionFunctions) MotaActionFunctions.disableExpandCompare = !expandCompareCheckbox.checked; + } + var input_ = ''; editor_blockly.runOne = function () { //var printf = console.log; @@ -527,6 +537,7 @@ function omitedcheckUpdateFunction(event) { input_ = xhr.responseText; editor_blockly.runOne(); MotaActionFunctions.disableReplace = editor.uivalues.disableBlocklyReplace; + MotaActionFunctions.disableExpandCompare = editor.uivalues.disableBlocklyExpandCompare; } xhr.open('GET', '_server/MotaAction.g4', true); xhr.send(null); diff --git a/editor-mobile.html b/editor-mobile.html index 5fdeb1f2..37949d9b 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -234,6 +234,8 @@ 开启中文名替换 + + 展开值块逻辑运算 diff --git a/editor.html b/editor.html index 77cb455c..17ff7d97 100644 --- a/editor.html +++ b/editor.html @@ -229,6 +229,8 @@ 开启中文名替换 + + 展开值块逻辑运算 From 01b4dc2e8921f9e4cc5be02f5fa49297a44c8def Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Mon, 18 May 2020 20:03:05 +0800 Subject: [PATCH 26/80] fix expand enemy:xx:xx --- _server/MotaActionParse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 3b723d2e..b75a0331 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -972,7 +972,7 @@ ActionParser.prototype.matchEvalAtom = function(args) { var EnemyId_List=MotaActionBlocks.enemyattr_e.json.args0[1].options; // [["生命", "hp"], ...] match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) if(match){ - args=[MotaActionFunctions.replaceToName_token(match[1]),MotaActionFunctions.replaceToName_token(match[2])] + args=[match[1],match[2]] return rt(MotaActionBlocks['enemyattr_e'].xmlText, args); } // 图块ID From a0f51eee74e70d6a6598657d82f3e4a6b8f63052 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Mon, 18 May 2020 20:10:49 +0800 Subject: [PATCH 27/80] fix escape --- _server/MotaActionParse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index b75a0331..fd08d8f2 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -1015,7 +1015,7 @@ ActionParser.prototype.matchEvalCompare=function(args, isShadow){ for (var index = 0,op; op=oplist[index]; index++) { var match=new RegExp('(?<= )'+(op=='||'?'\\|\\|':op)+'(?= )').exec(str) if (!match) continue; - args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),(op=='&&'?'&&':op),this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] + args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op.replace(/&/g,'&').replace(//g,'>'),this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] return {ret:true,xml:xml,args:args} } return {ret:false} From 969bd0de12b2ed8cae714f3a56527a56928b7781 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 18 May 2020 23:11:17 +0800 Subject: [PATCH 28/80] =?UTF-8?q?=E5=A4=A7=E9=87=8F=E4=BF=AE=E6=94=B9ID?= =?UTF-8?q?=E5=92=8C=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/element.md | 2 +- _docs/event.md | 2 +- _docs/personalization.md | 10 ++--- _server/MotaAction.g4 | 6 +-- _server/MotaActionParse.js | 16 ++++---- _server/editor_blockly.js | 2 +- _server/editor_file.js | 6 +-- _server/table/data.comment.js | 6 +-- extensions/dynamicMapEditor.js | 2 +- libs/control.js | 8 ++-- libs/maps.js | 2 +- libs/utils.js | 2 +- project/data.js | 10 ++--- project/enemys.js | 10 ++--- project/events.js | 6 +-- project/floors/sample0.js | 16 ++++---- project/floors/sample1.js | 26 ++++++------- project/floors/sample3.js | 2 +- project/functions.js | 20 +++++----- project/icons.js | 51 ++++++++++++------------- project/items.js | 68 ++++++++++++++++----------------- project/maps.js | 55 +++++++++++++------------- project/materials/animates.png | Bin 35354 -> 35375 bytes project/materials/enemys.png | Bin 73550 -> 70690 bytes project/materials/ground.png | Bin 600 -> 817 bytes project/materials/icons.png | Bin 8634 -> 8414 bytes project/materials/items.png | Bin 23440 -> 18170 bytes project/materials/npcs.png | Bin 17272 -> 20746 bytes runtime.d.ts | 2 +- v2.x-final更新.txt | 4 +- v266-v2.7接档说明.txt | 7 ++-- 31 files changed, 169 insertions(+), 172 deletions(-) diff --git a/_docs/element.md b/_docs/element.md index 3b622883..2b10effc 100644 --- a/_docs/element.md +++ b/_docs/element.md @@ -139,7 +139,7 @@ N连击怪物的special是6,且我们可以为它定义n代表实际连击数 领域怪还可以设置`range`选项代表该领域怪的范围,不写则默认为1。
**将 `flags.no_zone` 设置为 `true` 可以免疫领域效果。**
阻击怪同样需要设置value,代表阻击伤害的数值。如果勇士生命值扣减到0,则直接死亡触发lose事件。 -
**将`flags.no_snipe`设置为true可以免疫阻击效果(包括伤害和移动!)。**
+
**将`flags.no_repluse`设置为true可以免疫阻击效果(包括伤害和移动!)。**
!> 阻击怪后退的地点不能有任何事件存在,即使是已经被禁用的红绿事件或重生怪!(会导致此事件意外被重新启用)
激光怪同样需要设置value,代表激光伤害的数值。
请注意如果吸血、领域、阻击、生命光环中任何两个同时存在,则 `value` 会冲突。**因此请勿将吸血、领域、阻击或激光放置在同一个怪物身上。退化和攻防光环同理!
** diff --git a/_docs/event.md b/_docs/event.md index 87fab1b2..c27e53b2 100644 --- a/_docs/event.md +++ b/_docs/event.md @@ -2174,7 +2174,7 @@ if (core.flags.enableAddPoint && point > 0) { ``` json "shops": [{ "id": "shop1", - "text": "\t[贪婪之神,blueShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", + "text": "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", "textInList": "1F金币商店", "mustEnable": false, "disablePreview": false, diff --git a/_docs/personalization.md b/_docs/personalization.md index e49bde8a..82fbccaf 100644 --- a/_docs/personalization.md +++ b/_docs/personalization.md @@ -254,7 +254,7 @@ ID必须由数字字母下划线组成,数字在1000以内,且均不能和 ``` js // ratio为楼层的item_ratio值,可以进行翻倍宝石属性 -core.status.hero.atk += core.values.redJewel * ratio +core.status.hero.atk += core.values.redGem * ratio ``` 这里我们可以直接写ratio来取用该楼层中定义的`item_ratio`的值。 @@ -263,7 +263,7 @@ core.status.hero.atk += core.values.redJewel * ratio ``` js // 一个二倍线性增加的例子 -core.status.hero.atk += core.values.redJewel + 2*ratio +core.status.hero.atk += core.values.redGem + 2*ratio ``` ### 消耗类道具(cls: tools);永久类道具(cls: constants) @@ -308,11 +308,11 @@ function (enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId) { [ // 写在获得道具后事件 // 设置不同的flag可以分别无视对应的阻激夹域效果 {"type": "setValue", "name": "flag:no_zone", "value": "true"}, // 免疫领域 - {"type": "setValue", "name": "flag:no_snipe", "value": "true"}, // 免疫阻击 + {"type": "setValue", "name": "flag:no_repluse", "value": "true"}, // 免疫阻击 {"type": "setValue", "name": "flag:no_laser", "value": "true"}, // 免疫激光 {"type": "setValue", "name": "flag:no_betweenAttack", "value": "true"}, // 免疫夹击 {"type": "setValue", "name": "flag:no_ambush", "value": "true"}, // 免疫捕捉 - {"type": "setValue", "name": "item:shoes", "value": "1"} // 免疫路障 + {"type": "setValue", "name": "item:amulet", "value": "1"} // 免疫路障 ] ``` 4. 如果有更高的需求,例如想让吸血效果变成一半,则还是在上面这些地方进行对应的修改即可。 @@ -666,7 +666,7 @@ if (core.flags.statusBarItems.indexOf('enableSkill')>=0) { - **`flag:hard`**: 当前的难度标志;此flag变量在setInitData中被定义,可以直接取用来判定当前难度分歧。上传成绩时将根据此flag来对不同难度进行排序。 - **`flag:posion`**, **`flag:weak`**, **`flag:curse`**: 中毒、衰弱、诅咒状态。 -- **`flag:no_zone`**, **`flag:no_snipe`**, **`flag:no_laser`**, **`flag:no_betweenAttack`**: 是否分别免疫领域、阻击、激光、夹击效果。 +- **`flag:no_zone`**, **`flag:no_repluse`**, **`flag:no_laser`**, **`flag:no_betweenAttack`**: 是否分别免疫领域、阻击、激光、夹击效果。 - **`flag:hatred`**: 当前的仇恨数值。 - **`flag:commonTimes`**: 全局商店共用次数时的访问次数。 - **`flag:input`**: 接受用户输入的事件后,存放用户输入的结果。 diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 78f1cf66..cbb5b2bf 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -109,7 +109,7 @@ shopsub /* shopsub tooltip : 全局商店 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 -default : ["shop1","贪婪之神","blueShop","勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:","金币商店",false,false] +default : ["shop1","贪婪之神","moneyShop","勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:","金币商店",false,false] var title=''; if (EvalString_0==''){ if (IdString_1=='') title=''; @@ -1887,7 +1887,7 @@ choices_s /* choices_s tooltip : choices: 给用户提供选项 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=choices%EF%BC%9A%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E9%80%89%E9%A1%B9 -default : ["","流浪者","woman",0] +default : ["","流浪者","trader",0] var title=''; if (EvalString_1==''){ if (IdString_0=='')title=''; @@ -2813,7 +2813,7 @@ Global_Attribute_List Global_Value_List : '血网伤害'|'中毒伤害'|'衰弱效果'|'红宝石效果'|'蓝宝石效果'|'绿宝石效果'|'红血瓶效果'|'蓝血瓶效果'|'黄血瓶效果'|'绿血瓶效果'|'破甲比例'|'反击比例'|'净化比例'|'仇恨增加值'|'动画时间' - /*Global_Value_List ['lavaDamage','poisonDamage','weakValue', 'redJewel', 'blueJewel', 'greenJewel', 'redPotion', 'bluePotion', 'yellowPotion', 'greenPotion', 'breakArmor', 'counterAttack', 'purify', 'hatred', 'animateSpeed']*/; + /*Global_Value_List ['lavaDamage','poisonDamage','weakValue', 'redGem', 'blueGem', 'greenGem', 'redPotion', 'bluePotion', 'yellowPotion', 'greenPotion', 'breakArmor', 'counterAttack', 'purify', 'hatred', 'animateSpeed']*/; Global_Flag_List diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index fd08d8f2..72108439 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -1191,10 +1191,10 @@ MotaActionFunctions.pattern.replaceItemList = [ ["yellowKey", "黄钥匙"], ["blueKey", "蓝钥匙"], ["redKey", "红钥匙"], - ["redJewel", "红宝石"], - ["blueJewel", "蓝宝石"], - ["greenJewel", "绿宝石"], - ["yellowJewel", "黄宝石"], + ["redGem", "红宝石"], + ["blueGem", "蓝宝石"], + ["greenGem", "绿宝石"], + ["yellowGem", "黄宝石"], ["redPotion", "红血瓶"], ["bluePotion", "蓝血瓶"], ["yellowPotion", "黄血瓶"], @@ -1210,14 +1210,14 @@ MotaActionFunctions.pattern.replaceItemList = [ ["shield4", "圣盾"], ["shield5", "神圣盾"], ["superPotion", "圣水"], - ["moneyPocket", "金钱袋"], + ["silverCoin", "银币"], ["book", "怪物手册"], ["fly", "楼层传送器"], ["coin", "幸运金币"], - ["snow", "冰冻徽章"], + ["freezeBadge", "冰冻徽章"], ["cross", "十字架"], - ["knife", "屠龙匕首"], - ["shoes", "绿鞋"], + ["dagger", "屠龙匕首"], + ["amulet", "护符"], ["bigKey", "大黄门钥匙"], ["greenKey", "绿钥匙"], ["steelKey", "铁门钥匙"], diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index b7bc1166..cba4dcaf 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -39,7 +39,7 @@ editor_blockly = function () { MotaActionBlocks['changeFloor_m'].xmlText(), MotaActionFunctions.actionParser.parse([{ "id": "shop1", - "text": "\t[贪婪之神,blueShop]勇敢的武士啊, 给我\${20+2*flag:shop1}金币就可以:", + "text": "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我\${20+2*flag:shop1}金币就可以:", "textInList": "1F金币商店", "choices": [ {"text": "生命+800", "need": "status:money>=20+2*flag:shop1", "action": [ diff --git a/_server/editor_file.js b/_server/editor_file.js index edf8ae27..4229701e 100644 --- a/_server/editor_file.js +++ b/_server/editor_file.js @@ -499,7 +499,7 @@ editor_file = function (editor, callback) { /*actionList:[ ["change","['items']['name']","红宝石的新名字"], ["add","['items']['新的和name同级的属性']",123], - ["change","['itemEffectTip']","',攻击力+'+editor.core.values.redJewel"], + ["change","['itemEffectTip']","',攻击力+'+editor.core.values.redGem"], ] 为[]时只查询不修改 */ @@ -574,7 +574,7 @@ editor_file = function (editor, callback) { editor.file.editMapBlocksInfo = function (idnum, actionList, callback) { /*actionList:[ - ["change","['events']",["\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。"]], + ["change","['events']",["\t[老人,wizard]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。"]], ["change","['afterBattle']",null], ] 为[]时只查询不修改 @@ -618,7 +618,7 @@ editor_file = function (editor, callback) { editor.file.editLoc = function (x, y, actionList, callback) { /*actionList:[ - ["change","['events']",["\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。"]], + ["change","['events']",["\t[老人,wizard]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。"]], ["change","['afterBattle']",null], ] 为[]时只查询不修改 diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index 7e0a246f..e99b0fd1 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -456,19 +456,19 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "衰弱效果", "_data": "衰弱状态下攻防减少的数值\n如果此项不小于1,则作为实际下降的数值(比如10就是攻防各下降10)\n如果在0到1之间则为下降的比例(比如0.3就是下降30%的攻防)" }, - "redJewel": { + "redGem": { "_leaf": true, "_type": "textarea", "_docs": "红宝石效果", "_data": "红宝石加攻击的数值" }, - "blueJewel": { + "blueGem": { "_leaf": true, "_type": "textarea", "_docs": "蓝宝石效果", "_data": "蓝宝石加防御的数值" }, - "greenJewel": { + "greenGem": { "_leaf": true, "_type": "textarea", "_docs": "绿宝石效果", diff --git a/extensions/dynamicMapEditor.js b/extensions/dynamicMapEditor.js index 83690a51..eff1ec7c 100644 --- a/extensions/dynamicMapEditor.js +++ b/extensions/dynamicMapEditor.js @@ -8,7 +8,7 @@ function dynamicMapEditor() { // 所有显示的ID this.displayIds = [ 'none', 'yellowWall', 'blueWall', 'whiteWall', 'yellowDoor', 'blueDoor', 'redDoor', 'star', 'lava', 'lavaNet', - 'yellowKey', 'blueKey', 'redKey', 'redJewel', 'blueJewel', 'greenJewel', 'yellowJewel', + 'yellowKey', 'blueKey', 'redKey', 'redGem', 'blueGem', 'greenGem', 'yellowGem', 'redPotion', 'bluePotion', 'yellowPotion', 'greenPotion', 'pickaxe', 'bomb', 'centerFly', 'cls:autotile', 'cls:enemys', 'cls:enemy48' ]; diff --git a/libs/control.js b/libs/control.js index 40527187..5590d0b7 100644 --- a/libs/control.js +++ b/libs/control.js @@ -984,7 +984,7 @@ control.prototype.checkBlock = function () { core.updateStatusBar(); } } - this._checkBlock_snipe(core.status.checkBlock.snipe[loc]); + this._checkBlock_repluse(core.status.checkBlock.repluse[loc]); this._checkBlock_ambush(core.status.checkBlock.ambush[loc]); } @@ -998,10 +998,10 @@ control.prototype._checkBlock_disableQuickShop = function () { } ////// 阻击 ////// -control.prototype._checkBlock_snipe = function (snipe) { - if (!snipe || snipe.length == 0) return; +control.prototype._checkBlock_repluse = function (repluse) { + if (!repluse || repluse.length == 0) return; var actions = []; - snipe.forEach(function (t) { + repluse.forEach(function (t) { actions.push({"type": "move", "loc": [t[0],t[1]], "steps": [t[3]], "time": 250, "keep": true, "async": true}); }); actions.push({"type": "waitAsync"}); diff --git a/libs/maps.js b/libs/maps.js index ae76cecb..438d30f8 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -688,7 +688,7 @@ maps.prototype._automaticRoute_deepAdd = function (x, y) { // 绕过路障 if (id.endsWith("Net")) deepAdd += 100; // 绕过血瓶和绿宝石 - if (core.hasFlag('__potionNoRouting__') && (id.endsWith("Potion") || id == 'greenJewel')) deepAdd += 100; + if (core.hasFlag('__potionNoRouting__') && (id.endsWith("Potion") || id == 'greenGem')) deepAdd += 100; // 绕过传送点 // if (block.block.event.trigger == 'changeFloor') deepAdd+=10; } diff --git a/libs/utils.js b/libs/utils.js index 1698c02e..7eaba683 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -1149,7 +1149,7 @@ utils.prototype._export = function (floorIds) { }) // values - content += ["redJewel", "blueJewel", "greenJewel", "redPotion", "bluePotion", + content += ["redGem", "blueGem", "greenGem", "redPotion", "bluePotion", "yellowPotion", "greenPotion", "sword1", "shield1"].map(function (x) { return core.values[x] || 0; }).join(" ") + "\n\n"; diff --git a/project/data.js b/project/data.js index 4f33fa23..9e84f565 100644 --- a/project/data.js +++ b/project/data.js @@ -303,7 +303,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "shops": [ { "id": "shop1", - "text": "\t[贪婪之神,blueShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", + "text": "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", "textInList": "1F金币商店", "mustEnable": false, "disablePreview": false, @@ -368,7 +368,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, { "id": "shop2", - "text": "\t[贪婪之神,pinkShop]勇敢的武士啊, 给我一定经验就可以:", + "text": "\t[贪婪之神,expShop]勇敢的武士啊, 给我一定经验就可以:", "textInList": "1F经验商店", "mustEnable": false, "disablePreview": true, @@ -465,9 +465,9 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "lavaDamage": 100, "poisonDamage": 10, "weakValue": 20, - "redJewel": 3, - "blueJewel": 3, - "greenJewel": 5, + "redGem": 3, + "blueGem": 3, + "greenGem": 5, "redPotion": 100, "bluePotion": 250, "yellowPotion": 500, diff --git a/project/enemys.js b/project/enemys.js index f5e49f15..c3de9b33 100644 --- a/project/enemys.js +++ b/project/enemys.js @@ -36,7 +36,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "redSwordsman": {"name":"剑王","hp":100,"atk":120,"def":0,"money":7,"experience":0,"point":0,"special":6,"n":8}, "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"experience":0,"point":0,"special":12}, "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "princessEnemy": {"name":"假公主","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":18,"value":20}, @@ -70,7 +70,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "blueRock": {"name":"鬼邪石","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "skeletonLite": {"name":"骷髅精英","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "blueSkeleton": {"name":"蓝骷髅","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, + "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "bowman": {"name":"弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "liteBowman": {"name":"精锐弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "crismonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, @@ -80,9 +80,5 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "greenGT": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, "ghostSoldier": {"name":"冥队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "goldBat": {"name":"金蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "pinkSoldier": {"name":"红战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "pinkGhostSoldier": {"name":"红队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenSoldier": {"name":"青战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenGhostSoldier": {"name":"青队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0} + "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0} } \ No newline at end of file diff --git a/project/events.js b/project/events.js index af347cde..8847951f 100644 --- a/project/events.js +++ b/project/events.js @@ -175,7 +175,7 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 = "data": [ { "type": "choices", - "text": "\t[商人,woman]你有多余的钥匙想要出售吗?", + "text": "\t[商人,trader]你有多余的钥匙想要出售吗?", "choices": [ { "text": "黄钥匙(10金币)", @@ -204,7 +204,7 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 = } ], "false": [ - "\t[商人,woman]你没有黄钥匙!" + "\t[商人,trader]你没有黄钥匙!" ] } ] @@ -236,7 +236,7 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 = } ], "false": [ - "\t[商人,woman]你没有蓝钥匙!" + "\t[商人,trader]你没有蓝钥匙!" ] } ] diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 4af03e43..7d70dcd8 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -46,8 +46,8 @@ main.floors.sample0= } ], "10,11": [ - "\t[老人,woman]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", - "\t[老人,woman]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + "\t[老人,trader]这些是门,需要对应的钥匙打开。\n机关门必须使用特殊的开法。", + "\t[老人,trader]开门后可触发 afterOpenDoor 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", { "type": "hide", "time": 500 @@ -63,24 +63,24 @@ main.floors.sample0= } ], "2,8": [ - "\t[老人,magician]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", - "\t[老人,magician]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", - "\t[老人,magician]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", + "\t[老人,wizard]这些都是各种各样的怪物,所有怪物的数据都在enemys.js中设置。", + "\t[老人,wizard]这批怪物分别为:普通、先攻、魔攻、坚固、2连击、3连击、4连击、破甲、反击、净化。", + "\t[老人,wizard]打败怪物后可触发 afterBattle 事件。\n\n有关事件的各种信息在下一层会有更为详细的说明。", { "type": "hide", "time": 500 } ], "2,5": [ - "\t[老人,magician]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", + "\t[老人,wizard]模仿、吸血、中毒、衰弱、诅咒。\n\n请注意吸血怪需要设置value为吸血数值,可参见样板中黑暗大法师的写法。", { "type": "hide", "time": 500 } ], "2,3": [ - "\t[老人,magician]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", - "\t[老人,magician]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", + "\t[老人,wizard]领域、夹击。\n请注意领域怪需要设置value为伤害数值,可参见样板中初级巫师的写法。", + "\t[老人,wizard]夹击和领域同时发生时先计算领域,再夹击。\n自动寻路同样会尽量绕过你设置的这些点。", { "type": "hide", "time": 500 diff --git a/project/floors/sample1.js b/project/floors/sample1.js index 9c769745..a3468def 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -419,23 +419,23 @@ main.floors.sample1= { "case": "0", "action": [ - "\t[老人,woman]这是个很复杂的例子,它将教会你如何使用if 语句进行条件判断,以及 choices 提供选项来供用户进行选择。", - "\t[老人,woman]第一次访问我将显示这段文字;从第二次开始将会向你出售钥匙。\n钥匙价格将随着访问次数递增。\n当合计出售了七把钥匙后,将送你一把大黄门钥匙,并消失不再出现。", - "\t[老人,woman]这部分的逻辑比较长,请细心看样板的写法,是很容易看懂并理解的。" + "\t[老人,trader]这是个很复杂的例子,它将教会你如何使用if 语句进行条件判断,以及 choices 提供选项来供用户进行选择。", + "\t[老人,trader]第一次访问我将显示这段文字;从第二次开始将会向你出售钥匙。\n钥匙价格将随着访问次数递增。\n当合计出售了七把钥匙后,将送你一把大黄门钥匙,并消失不再出现。", + "\t[老人,trader]这部分的逻辑比较长,请细心看样板的写法,是很容易看懂并理解的。" ] }, { "case": "8", "action": [ - "\t[老人,woman]你购买的钥匙已经够多了,再继续卖给你的话我会有危险的。", - "\t[老人,woman]看在你贡献给我这么多钱的份上,送你一把大黄门钥匙吧,希望你能好好用它。", + "\t[老人,trader]你购买的钥匙已经够多了,再继续卖给你的话我会有危险的。", + "\t[老人,trader]看在你贡献给我这么多钱的份上,送你一把大黄门钥匙吧,希望你能好好用它。", { "type": "setValue", "name": "item:bigKey", "operator": "+=", "value": "1" }, - "\t[老人,woman]我先走了,拜拜~", + "\t[老人,trader]我先走了,拜拜~", { "type": "hide", "time": 500 @@ -450,7 +450,7 @@ main.floors.sample1= "action": [ { "type": "choices", - "text": "\t[老人,woman]少年,你需要钥匙吗?\n我这里有大把的!", + "text": "\t[老人,trader]少年,你需要钥匙吗?\n我这里有大把的!", "choices": [ { "text": "黄钥匙(${9+flag:woman_times}金币)", @@ -473,7 +473,7 @@ main.floors.sample1= } ], "false": [ - "\t[老人,woman]你的金钱不足!" + "\t[老人,trader]你的金钱不足!" ] } ] @@ -502,7 +502,7 @@ main.floors.sample1= } ], "false": [ - "\t[老人,woman]你的金钱不足!" + "\t[老人,trader]你的金钱不足!" ] } ] @@ -528,7 +528,7 @@ main.floors.sample1= } ], "false": [ - "\t[老人,woman]你的金钱不足!", + "\t[老人,trader]你的金钱不足!", { "type": "continue" } @@ -560,8 +560,8 @@ main.floors.sample1= } ], "12,11": [ - "\t[老人,womanMagician]使用 {\"type\":\"function\"} 可以写自定义的JS脚本。\n本塔支持的所有主要API会在doc文档内给出。", - "\t[老人,womanMagician]例如这个例子:即将弹出一个输入窗口,然后会将你的输入结果直接加到你的攻击力上。", + "\t[老人,recluse]使用 {\"type\":\"function\"} 可以写自定义的JS脚本。\n本塔支持的所有主要API会在doc文档内给出。", + "\t[老人,recluse]例如这个例子:即将弹出一个输入窗口,然后会将你的输入结果直接加到你的攻击力上。", { "type": "input", "text": "请输入你要加攻击力的数值:" @@ -584,7 +584,7 @@ main.floors.sample1= ], "false": [] }, - "\t[老人,womanMagician]具体可参见样板中本事件的写法。" + "\t[老人,recluse]具体可参见样板中本事件的写法。" ] }, "changeFloor": { diff --git a/project/floors/sample3.js b/project/floors/sample3.js index a3b996b0..a1a6e12d 100644 --- a/project/floors/sample3.js +++ b/project/floors/sample3.js @@ -871,7 +871,7 @@ main.floors.sample3= "\t[hero]好温暖……", { "type": "setValue", - "name": "item:yellowJewel", + "name": "item:yellowGem", "value": "1" }, { diff --git a/project/functions.js b/project/functions.js index 145d6ead..4a4dd7d0 100644 --- a/project/functions.js +++ b/project/functions.js @@ -432,7 +432,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = return [ [1, "先攻", "怪物首先攻击"], [2, "魔攻", "怪物无视勇士的防御"], - [3, "坚固", "勇士每回合最多只能对怪物造成1点伤害"], + [3, "坚固", "怪物防御不小于勇士攻击-1"], [4, "2连击", "怪物每回合攻击2次"], [5, "3连击", "怪物每回合攻击3次"], [6, function (enemy) { return (enemy.n || '') + "连击"; }, function (enemy) { return "怪物每回合攻击" + (enemy.n || 4) + "次"; }], @@ -833,7 +833,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = break; case 52: // 快捷键4:破冰/冰冻/地震/上下楼器/... 其他道具依次判断 { - var list = ["icePickaxe", "snow", "earthquake", "upFly", "downFly", "jumpShoes", "lifeWand", "poisonWine", "weakWine", "curseWine", "superWine"]; + var list = ["icePickaxe", "freezeBadge", "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)) { @@ -1051,7 +1051,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var damage = {}, // 每个点的伤害值 type = {}, // 每个点的伤害类型 - snipe = {}, // 每个点的阻击怪信息 + repluse = {}, // 每个点的阻击怪信息 ambush = {}; // 每个点的捕捉信息 // 计算血网和领域、阻击、激光的伤害,计算捕捉信息 @@ -1065,7 +1065,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = type[loc] = type[loc] || {}; // 血网 - if (id == 'lavaNet' && !core.hasItem('shoes')) { + if (id == 'lavaNet' && !core.hasItem('amulet')) { damage[loc] = (damage[loc] || 0) + core.values.lavaDamage; type[loc]["血网伤害"] = true; } @@ -1096,8 +1096,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } // 阻击 - // 如果要防止阻击伤害,可以直接简单的将 flag:no_snipe 设为true - if (enemy && core.hasSpecial(enemy.special, 18) && !core.hasFlag('no_snipe')) { + // 如果要防止阻击伤害,可以直接简单的将 flag:no_repluse 设为true + if (enemy && core.hasSpecial(enemy.special, 18) && !core.hasFlag('no_repluse')) { for (var dir in core.utils.scan) { var nx = x + core.utils.scan[dir].x, ny = y + core.utils.scan[dir].y, @@ -1112,7 +1112,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var rnx = x + core.utils.scan[rdir].x, rny = y + core.utils.scan[rdir].y; if (rnx >= 0 && rnx < width && rny >= 0 && rny < height && core.getBlock(rnx, rny, floorId) == null) { - snipe[currloc] = (snipe[currloc] || []).concat([ + repluse[currloc] = (repluse[currloc] || []).concat([ [x, y, id, rdir] ]); } @@ -1207,7 +1207,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.status.checkBlock = { damage: damage, type: type, - snipe: snipe, + repluse: repluse, ambush: ambush, cache: {} // clear cache }; @@ -1391,9 +1391,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = return [ 'yellowDoor', 'blueDoor', 'redDoor', 'greenDoor', 'steelDoor', 'yellowKey', 'blueKey', 'redKey', 'greenKey', 'steelKey', - 'redJewel', 'blueJewel', 'greenJewel', 'yellowJewel', + 'redGem', 'blueGem', 'greenGem', 'yellowGem', 'redPotion', 'bluePotion', 'greenPotion', 'yellowPotion', 'superPotion', - 'pickaxe', 'bomb', 'centerFly', 'icePickaxe', 'snow', + 'pickaxe', 'bomb', 'centerFly', 'icePickaxe', 'freezeBadge', 'earthquake', 'upFly', 'downFly', 'jumpShoes', 'lifeWand', 'poisonWine', 'weakWine', 'curseWine', 'superWine', 'sword1', 'sword2', 'sword3', 'sword4', 'sword5', diff --git a/project/icons.js b/project/icons.js index f821a482..c8988970 100644 --- a/project/icons.js +++ b/project/icons.js @@ -97,23 +97,26 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "steelDoor2": 27, "steelDoor3": 28, "iceDoor": 29, - "iceDoor2": 30 + "iceDoor2": 30, + "magentaWall": 31 }, "npcs": { "man": 0, - "woman": 1, + "trader": 1, "thief": 2, "fairy": 3, - "magician": 4, - "womanMagician": 5, - "oldMan": 6, - "child": 7, - "wood": 8, - "pinkShop": 9, - "blueShop": 10, + "wizard": 4, + "recluse": 5, + "king": 6, + "youngMan": 7, + "sign": 8, + "expShop": 9, + "moneyShop": 10, "princess": 11, - "man2": 28, - "woman2": 29, + "greenMan": 28, + "blueTrader": 29, + "redMSNpc": 30, + "blackTrader": 31, "octopusLeftTop": 12, "octopusTop": 13, "octopusRightTop": 14, @@ -173,7 +176,7 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "redSwordsman": 53, "poisonZombie": 55, "octopus": 57, - "greenKnight": 59, + "princessEnemy": 59, "skeletonWarrior": 9, "frozenSkeleton": 69, "silverSlimelord": 60, @@ -202,20 +205,16 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "evilFairy": 51, "blueRock": 63, "skeletonLite": 64, - "blueSkeleton": 65, + "greenKnight": 65, "bowman": 66, "liteBowman": 67, "crismonZombie": 68, "watcherSlime": 70, "mutantSlimeman": 71, - "goldBat": 72, + "frostBat": 72, "devilKnight": 73, "grayPriest": 74, "greenGT": 75, - "pinkGhostSoldier": 77, - "greenSoldier": 78, - "greenGhostSoldier": 79, - "pinkSoldier": 76, "ghostSoldier": 11, "evilHero": 40 }, @@ -232,10 +231,10 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "greenKey": 3, "steelKey": 4, "bigKey": 6, - "redJewel": 16, - "blueJewel": 17, - "greenJewel": 18, - "yellowJewel": 19, + "redGem": 16, + "blueGem": 17, + "greenGem": 18, + "yellowGem": 19, "redPotion": 20, "bluePotion": 21, "greenPotion": 22, @@ -262,7 +261,7 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "upFly": 15, "downFly": 14, "coin": 11, - "snow": 41, + "freezeBadge": 41, "cross": 40, "superPotion": 29, "earthquake": 8, @@ -270,9 +269,9 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "weakWine": 25, "curseWine": 27, "superWine": 28, - "knife": 42, - "moneyPocket": 46, - "shoes": 47, + "dagger": 42, + "silverCoin": 46, + "amulet": 47, "hammer": 48, "jumpShoes": 49, "skill1": 30, diff --git a/project/items.js b/project/items.js index 0a68a3f0..86c61b84 100644 --- a/project/items.js +++ b/project/items.js @@ -19,22 +19,22 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "可以打开一扇红门", "hideInToolbox": true }, - "redJewel": { + "redGem": { "cls": "items", "name": "红宝石", - "text": "',攻击+${core.values.redJewel}'" + "text": "',攻击+${core.values.redGem}'" }, - "blueJewel": { + "blueGem": { "cls": "items", "name": "蓝宝石", - "text": "',防御+${core.values.blueJewel}'" + "text": "',防御+${core.values.blueGem}'" }, - "greenJewel": { + "greenGem": { "cls": "items", "name": "绿宝石", - "text": "',护盾+${core.values.greenJewel}'" + "text": "',护盾+${core.values.greenGem}'" }, - "yellowJewel": { + "yellowGem": { "cls": "items", "name": "黄宝石", "text": "可以进行加点" @@ -178,9 +178,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "圣水" }, - "moneyPocket": { + "silverCoin": { "cls": "items", - "name": "金钱袋" + "name": "银币" }, "book": { "cls": "constants", @@ -200,7 +200,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "name": "幸运金币", "text": "持有时打败怪物可得双倍金币" }, - "snow": { + "freezeBadge": { "cls": "constants", "name": "冰冻徽章", "text": "可以将面前的熔岩变成平地" @@ -210,14 +210,14 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "name": "十字架", "text": "持有后无视怪物的无敌属性" }, - "knife": { + "dagger": { "cls": "constants", "name": "屠龙匕首", "text": "该道具尚未被定义" }, - "shoes": { + "amulet": { "cls": "constants", - "name": "绿鞋", + "name": "护符", "text": "持有时无视负面地形" }, "bigKey": { @@ -317,10 +317,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = } }, "itemEffect": { - "redJewel": "core.status.hero.atk += core.values.redJewel * ratio", - "blueJewel": "core.status.hero.def += core.values.blueJewel * ratio", - "greenJewel": "core.status.hero.mdef += core.values.greenJewel * ratio", - "yellowJewel": "core.status.hero.hp+=1000;core.status.hero.atk+=6;core.status.hero.def+=6;core.status.hero.mdef+=10;", + "redGem": "core.status.hero.atk += core.values.redGem * ratio", + "blueGem": "core.status.hero.def += core.values.blueGem * ratio", + "greenGem": "core.status.hero.mdef += core.values.greenGem * ratio", + "yellowGem": "core.status.hero.hp+=1000;core.status.hero.atk+=6;core.status.hero.def+=6;core.status.hero.mdef+=10;", "redPotion": "core.status.hero.hp += core.values.redPotion * ratio", "bluePotion": "core.status.hero.hp += core.values.bluePotion * ratio", "yellowPotion": "core.status.hero.hp += core.values.yellowPotion * ratio", @@ -339,13 +339,13 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "shield5": "core.status.hero.def += 100;core.status.hero.mdef += 100", "bigKey": "core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;", "superPotion": "core.status.hero.hp *= 2", - "moneyPocket": "core.status.hero.money += 500" + "silverCoin": "core.status.hero.money += 500" }, "itemEffectTip": { - "redJewel": "',攻击+'+core.values.redJewel * ratio", - "blueJewel": "',防御+'+core.values.blueJewel * ratio", - "greenJewel": "',护盾+'+core.values.greenJewel * ratio", - "yellowJewel": "',全属性提升'", + "redGem": "',攻击+'+core.values.redGem * ratio", + "blueGem": "',防御+'+core.values.blueGem * ratio", + "greenGem": "',护盾+'+core.values.greenGem * ratio", + "yellowGem": "',全属性提升'", "redPotion": "',生命+'+core.values.redPotion * ratio", "bluePotion": "',生命+'+core.values.bluePotion * ratio", "yellowPotion": "',生命+'+core.values.yellowPotion * ratio", @@ -364,7 +364,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "shield5": "',防御+100,护盾+100'", "bigKey": "',全钥匙+1'", "superPotion": "',生命值翻倍'", - "moneyPocket": "',金币+500'" + "silverCoin": "',金币+500'" }, "useItemEffect": { "book": "core.ui.drawBook(0);", @@ -372,7 +372,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "earthquake": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap(core.status.floorId, function () {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t});\n})();", "pickaxe": "(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable) return false;\n\t\treturn block.block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否四方向破;如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 四方向破\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('pickaxe.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\t// 无法使用\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", "icePickaxe": "(function () {\n\tcore.removeBlock(core.nextX(), core.nextY());\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();", - "snow": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花;如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", + "freezeBadge": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花;如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", "bigKey": "(function () {\n\tvar actions = core.searchBlock(\"yellowDoor\").map(function (block) {\n\t\treturn { \"type\": \"openDoor\", \"loc\": [block.x, block.y], \"async\": true };\n\t});\n\tactions.push({ \"type\": \"waitAsync\" });\n\tactions.push({ \"type\": \"tip\", \"text\": core.material.items[itemId].name + \"使用成功\" });\n\tcore.insertAction(actions);\n})();", "bomb": "(function () {\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable || block.block.event.cls.indexOf('enemy') != 0) return false;\n\t\tvar enemy = core.material.enemys[block.block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar bombFourDirections = false; // 是否四方向可炸;如果是将其改成true。\n\tif (bombFourDirections) {\n\t\t// 四方向炸\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBomb(nx, ny)) {\n\t\t\t\tbombList.push([nx, ny]);\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tif (canBomb(core.nextX(), core.nextY())) {\n\t\t\tbombList.push([core.nextX(), core.nextY()]);\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t}\n\t}\n\n\tif (bombList.length > 0) {\n\t\tcore.playSound('bomb.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip('当前无法使用' + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\t// 炸弹后事件\n\t// 这是一个使用炸弹也能开门的例子\n\t/*\n\tif (core.status.floorId=='xxx' && core.terrainExists(x0,y0,'specialDoor') // 某个楼层,该机关门存在\n\t\t&& !core.enemyExists(x1,y1) && !core.enemyExists(x2,y2)) // 且守门的怪物都不存在\n\t{\n\t\tcore.insertAction([ // 插入事件\n\t\t\t{\"type\": \"openDoor\", \"loc\": [x0,y0]} // 开门\n\t\t])\n\t}\n\t*/\n})();", "centerFly": "core.playSound('centerFly.mp3');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');", @@ -388,10 +388,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "bluePotion": "core.status.hero.hp += core.values.bluePotion", "greenPotion": "core.status.hero.hp += core.values.greenPotion", "yellowPotion": "core.status.hero.hp += core.values.yellowPotion", - "redJewel": "core.status.hero.atk += core.values.redJewel", - "blueJewel": "core.status.hero.def += core.values.blueJewel", - "greenJewel": "core.status.hero.mdef += core.values.greenJewel", - "yellowJewel": null, + "redGem": "core.status.hero.atk += core.values.redGem", + "blueGem": "core.status.hero.def += core.values.blueGem", + "greenGem": "core.status.hero.mdef += core.values.greenGem", + "yellowGem": null, "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": { @@ -404,7 +404,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "centerFly": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();", "upFly": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index < core.floorIds.length - 1) {\n\t\tvar toId = core.floorIds[index + 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();", "downFly": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index > 0) {\n\t\tvar toId = core.floorIds[index - 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();", - "snow": "true", + "freezeBadge": "true", "bigKey": "(function () {\n\treturn core.searchBlock('yellowDoor').length > 0;\n})();", "poisonWine": "core.hasFlag('poison');", "weakWine": "core.hasFlag('weak');", @@ -416,15 +416,15 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "bluePotion": "true", "greenPotion": "true", "yellowPotion": "true", - "redJewel": "true", - "blueJewel": "true", - "greenJewel": "true", - "yellowJewel": "true", + "redGem": "true", + "blueGem": "true", + "greenGem": "true", + "yellowGem": "true", "skill1": "true" }, "equipCondition": {}, "useItemEvent": { - "yellowJewel": [ + "yellowGem": [ { "type": "choices", "choices": [ diff --git a/project/maps.js b/project/maps.js index c09ef345..7d297646 100644 --- a/project/maps.js +++ b/project/maps.js @@ -11,9 +11,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "9": {"cls":"terrains","id":"pinkShopLeft"}, "10": {"cls":"terrains","id":"pinkShopRight"}, "11": {"cls":"animates","id":"lavaNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 血网的伤害效果移动到 checkBlock 中处理\n\n\t// 如果要做一次性血网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})();","name":"血网"}, - "12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行毒处理\n\tif (!core.hasItem('shoes')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [0] });\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"}, - "13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行衰处理\n\tif (!core.hasItem('shoes')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [1] });\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"}, - "14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行咒处理\n\tif (!core.hasItem('shoes')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [2] });\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"}, + "12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行毒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [0] });\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"}, + "13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行衰处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [1] });\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"}, + "14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行咒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [2] });\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"}, "15": {"cls":"animates","id":"blueWater"}, "16": {"cls":"animates","id":"water"}, "20": {"cls":"autotile","id":"autotile"}, @@ -23,10 +23,10 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "24": {"cls":"items","id":"greenKey"}, "25": {"cls":"items","id":"steelKey"}, "26": {"cls":"items","id":"bigKey"}, - "27": {"cls":"items","id":"redJewel"}, - "28": {"cls":"items","id":"blueJewel"}, - "29": {"cls":"items","id":"greenJewel"}, - "30": {"cls":"items","id":"yellowJewel"}, + "27": {"cls":"items","id":"redGem"}, + "28": {"cls":"items","id":"blueGem"}, + "29": {"cls":"items","id":"greenGem"}, + "30": {"cls":"items","id":"yellowGem"}, "31": {"cls":"items","id":"redPotion"}, "32": {"cls":"items","id":"bluePotion"}, "33": {"cls":"items","id":"greenPotion"}, @@ -50,7 +50,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "51": {"cls":"items","id":"upFly"}, "52": {"cls":"items","id":"downFly"}, "53": {"cls":"items","id":"coin"}, - "54": {"cls":"items","id":"snow"}, + "54": {"cls":"items","id":"freezeBadge"}, "55": {"cls":"items","id":"cross"}, "56": {"cls":"items","id":"superPotion"}, "57": {"cls":"items","id":"earthquake"}, @@ -58,9 +58,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "59": {"cls":"items","id":"weakWine"}, "60": {"cls":"items","id":"curseWine"}, "61": {"cls":"items","id":"superWine"}, - "62": {"cls":"items","id":"knife"}, - "63": {"cls":"items","id":"moneyPocket"}, - "64": {"cls":"items","id":"shoes"}, + "62": {"cls":"items","id":"dagger"}, + "63": {"cls":"items","id":"silverCoin"}, + "64": {"cls":"items","id":"amulet"}, "65": {"cls":"items","id":"hammer"}, "68": {"cls":"items","id":"lifeWand"}, "69": {"cls":"items","id":"jumpShoes"}, @@ -90,22 +90,27 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "106": {"cls":"animates","id":"steelDoor3","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, "107": {"cls":"animates","id":"iceDoor","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, "108": {"cls":"animates","id":"iceDoor2","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, + "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":[null,"door.mp3","door.mp3"]}, "121": {"cls":"npcs","id":"man"}, - "122": {"cls":"npcs","id":"woman"}, + "122": {"cls":"npcs","id":"trader"}, "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"}, + "125": {"cls":"npcs","id":"wizard"}, + "126": {"cls":"npcs","id":"recluse"}, + "127": {"cls":"npcs","id":"king"}, + "128": {"cls":"npcs","id":"youngMan"}, + "129": {"cls":"npcs","id":"sign"}, + "130": {"cls":"npcs","id":"expShop"}, + "131": {"cls":"npcs","id":"moneyShop"}, "132": {"cls":"npcs","id":"princess"}, "133": {"cls":"npc48","id":"npc0","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"}}, "134": {"cls":"npc48","id":"npc1","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"}}, "135": {"cls":"npc48","id":"npc2","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"}}, "136": {"cls":"npc48","id":"npc3","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"}}, + "137": {"cls":"npcs","id":"greenMan"}, + "138": {"cls":"npcs","id":"blueTrader"}, + "139": {"cls":"npcs","id":"redMSNpc"}, + "140": {"cls":"npcs","id":"blackTrader"}, "151": {"cls":"autotile","id":"autotile1"}, "152": {"cls":"autotile","id":"autotile2"}, "153": {"cls":"autotile","id":"autotile3"}, @@ -135,8 +140,6 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "194": {"cls":"npcs","id":"dragonRight"}, "195": {"cls":"npcs","id":"dragonLeftBottom"}, "196": {"cls":"npcs","id":"dragonRightBottom"}, - "197": {"cls":"npcs","id":"man2"}, - "198": {"cls":"npcs","id":"woman2"}, "201": {"cls":"enemys","id":"greenSlime"}, "202": {"cls":"enemys","id":"redSlime"}, "203": {"cls":"enemys","id":"blackSlime"}, @@ -196,7 +199,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "257": {"cls":"enemys","id":"dragon"}, "258": {"cls":"enemys","id":"octopus"}, "259": {"cls":"enemys","id":"fairyEnemy"}, - "260": {"cls":"enemys","id":"greenKnight"}, + "260": {"cls":"enemys","id":"princessEnemy"}, "261": {"cls":"enemy48","id":"angel"}, "262": {"cls":"enemy48","id":"elemental"}, "263": {"cls":"enemy48","id":"steelGuard"}, @@ -206,21 +209,17 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "267": {"cls":"enemys","id":"grayRock"}, "268": {"cls":"enemys","id":"blueRock"}, "269": {"cls":"enemys","id":"skeletonLite"}, - "270": {"cls":"enemys","id":"blueSkeleton"}, + "270": {"cls":"enemys","id":"greenKnight"}, "271": {"cls":"enemys","id":"bowman"}, "272": {"cls":"enemys","id":"liteBowman"}, "273": {"cls":"enemys","id":"crismonZombie"}, "274": {"cls":"enemys","id":"frozenSkeleton"}, "275": {"cls":"enemys","id":"watcherSlime"}, "276": {"cls":"enemys","id":"mutantSlimeman"}, - "277": {"cls":"enemys","id":"goldBat"}, + "277": {"cls":"enemys","id":"frostBat"}, "278": {"cls":"enemys","id":"devilKnight"}, "279": {"cls":"enemys","id":"grayPriest"}, "280": {"cls":"enemys","id":"greenGT"}, - "281": {"cls":"enemys","id":"pinkSoldier"}, - "282": {"cls":"enemys","id":"pinkGhostSoldier"}, - "283": {"cls":"enemys","id":"greenSoldier"}, - "284": {"cls":"enemys","id":"greenGhostSoldier"}, "300": {"cls":"terrains","id":"ground"}, "301": {"cls":"terrains","id":"grass"}, "302": {"cls":"terrains","id":"grass2"}, diff --git a/project/materials/animates.png b/project/materials/animates.png index 774a7990301db6b08a75304b7581550a5cc141ab..e3b74ee96223657f806ec07f83bd5c633290fe56 100644 GIT binary patch literal 35375 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 literal 35354 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 m0OZ{_N&bBJ<>TRk#!iiC8h)F2@#og*bRv><-- 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 zⅅ?Tj7OH* zoa=oeznP_NJo6ULh#d2gm`t3Qj0K|SY~eZ%FY%a>b3Q}W4Ojchc8@cdFD%?8CoX1f z4}uyPWr2P{4fotOSWNXy*0uZm-h61Bs#hL!9yr1lB!>8263guhZG35)3=`I3f2+N*-AcnBpfA5L- zETVkRE2(WmoxsndA?NYI-)w-^gR_)wcNaq-?gwrMeG1hsrBogGyGN{n5c%tZnTA}x z_%er74zEZr)cozkgM*eJP9;v4O>8`lR1M~0ls86gp(fI31F3KcjEBRyR(|GTLfpyP9_HxSKY?QR(voW_fvs2fUA2x*%&9=pU`dj z&ap$UHo2W3D+i1}(w?vU>z2yBmOusJev~)DP{R6wRdZ&ex>FY5;?^3nON$m`MT>K@ zek9S`N7k9�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%0Dup25~} zSOZ$~ULD|mF zLVure%fP<}m<@&vD+|YPjS=_=L*xkOLpvMv@1`1GnVIzcySdq&oPx+^p%6=> z>=I&MpAbn0Hd9&ZRVZ@{ULpVpSeDl-~G-t|O%hlYE9y_O zBkFw#kO`sMtPzIt>T^}pb629t^j~nNzpSi!Sy=Pqx@ZEpI=hW}g}cJU_9wFV2^Geg z&@+fQ;^nI**+LZgYDcsyP{1*P5`tVO!=&Z09X8OJQA}Uu*o7JyS*4^g2MyX%q7aEa z+LO!cPDt3=&Ehn1<{?N+ena^Pi3IgAvc=Y66g5lKSYEh5ZuIZrbq}98xFxRF>X{Ji zF9xa(DzMF%+0U<-&iFgl=5vCgmlU`i6sq##mMhYXNfRJzg8^Wk8TS)!p-=raugMDa zT@KyIz zFe&S+vY0qrWwf17R6yMMNjEYp-YasxEAgJwOfA9M^_135oe54_fVA9|O5&@uSsEEq zDPS4`q~#WgR$W;FADjoJ6a)F3WpGx&v;;^48#e&d>vbtZ8l>7NnSUfe-2H`dAe1k- zx3{;kt$3pNE@Y@wDv4cHz)1nMT8-6eHD>{8wVJa4u81ghLrc!J?`e#XZ91GFz%-yv z!m8SoTK}Hr-G)*DCX3bUbs~;u5ujG9$ylJ*?;0b<@g$YshKO*LN(GHZL;e>~kDL0x zMry1>uM3DOA+Dk7HGgq32yXov69l&h0IL;>&04hal}ZKbkSC7Uw40K)#;ezf@1l;) zS_P}hlT2#k)v~5~8jXgrk5fvma;tUfoFhTdWIbK0NdlLz7Jo$aB{B7v-h=>?UI#G2l$>Qn z=0|5EKXRriVj4(Vj}-iAjo_>RoBQdQh8MVUXHi083{Z!iBmo3OUj)WqCUr0Q^}k9!tsh&N7Jp(F z0J4wyE`RCiaq~}gWp+|`hmM>71b?5A%0r9PGQdq0{M% zEm$1COFoc>-zw1hHh+*wtyDDL_szQi+k+=Pgc8*2(|U!8U;U9+6Z9d{h2NS7tX0>D zs?DUvtLIcN$+~6Cqs)|A#)xD1QS@puVEqpKC%M-+6M!nLG(2N;u$a zfhK3Y4b}3?6T2UPUuTq3r{QPy{ver<{Y>M;=rb?Ei)vR$Ss!NmYVp15PGtS$zK z#D4(WjRqCA2Aa<4!rJN=1}J0n-5+`#al@SLr@;Y0uU{x!DnJ)bzYVUA?u=03DbW;}lNuj)PF049KS_Sw0I>=Xg@2al zl8m53LAHQk;DR$-*2Yg_jj)VzW_}&I0jzTY5io)vz*evo8AAnGFtarzFVaYvNO#G2 z*GOFN#7{^0)&DlcPKH#$x0F7nTQ&#+1f3vKMz15S5>x{?@du;)E(VBn0X0~d5(`_V zWm>MbAx)Ri18)}oBm<1RL&TO*C4U7e{TkD{y{TRmHUo^qZ{koPCnHJgZLX^^w(mOB zsjA?P3u5E&+v;7bt|k3AnOP~iHIlUMGB0;s@XW#=CzI2&!zye;n=RnD3Z*M4&MUI; z+l&yqD5`$9ZA3PeF$tMvQS>PI6NkZ7`QoF|-Pdc?H6kiDxun?Jn-xdFpMQ9FcuSdR zq{-|ib*FgR{Kgm{+|L$SZCZ`nB)z`9&eGl(IST#}1*pNt7HN}$knK7bB^)(>qzkCz zOUkS8#4!_rdOqnomBWPN;2-e-QBdU7CfF=MDUH3(rC%O3|A+#zjN9Vo#Uz5>QS<-* Y^*P4Kf$F#e00000NkvXXt^-0~f;jUd&;S4c delta 72045 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

593-r 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 YzY|fV?SZ~t1ONa407*qoM6N<$f)wg7XaE2J delta 575 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 nNaqlOgtQwK1(;88?2V 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 diff --git a/project/materials/npcs.png b/project/materials/npcs.png index 9f02067ae1c84f9eac7ff558fee18607e2a96bde..9647d7d9d55d67330ab8ccc4554d1824c76e3990 100644 GIT binary patch literal 20746 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 z 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 J5i}g4{sT_{nUMeh literal 17272 zcmb4qXH-*N(DhA1sG&=5p((utq!}ReE=4*>kY$ zrCBJ_1q1>Dp}sudTHpWo{gHKZlC|!+XYQOid(Z57VRloGmYS0q003G8eQk@&D+&N0 zI7;%%Z%<_-UtL~60Tz0iK=las`sIMkQ^Q090P3(br>@Y;F_oXbT>t>kb^rGP_4$^e z0YHn^KwHBy*lFvDQCXlv(4_Zwrp_eFr=@V0Yl+ih8ro%ijErOQWGv26AFbAftSgeq zBrW|3Rd8DtH#-nNPyEjdYeH!o)=b3K%=UsMT*&2D7(P?u#&>;Ah00IA++M3rk|w7Y zl~)~o&M#U|a31QDjsXd~iN44cN1yG0$B$3K{xKZ&`Vek@Uz9QO5XJe=eTv-D#$xm5 zr0F9FeUBk`-hzc3I7a|46pX^P87#zi;nWsfhrl>3@+JO)V(h48j^42m6rV|L_jqzM zX=!9v0r+c+pZ7PvZp46agdnI(CRqESacISA4rtYLh(bPdgoBm5fd$8&^}_V?Dmw=q zV2acNA#|^PypLdbzkv9h13En1e!VkRj>&shoctD|qVWu*Ox`{xjm;#cC+tZN!N?Dguum}x@ z83;2|woD7-5htqw3ST&dZ8a@NQEA_N>u#CTDhM@8f`J|Z1LH)DHUE-l=4@%j3g!k4 zCZTqaUGzC9Tk?V$m|+O{H&Z?{$;}Co04jSWz`uOfm^&Qt5G}x*PcuITT{J=2m+Nx#S~@9I^mC5 zDMi~69BPBdoXi$o(v?Ht0#^;|zgLBHMMlAz6^HIp^C5=40XO@g=nLe&lah88g0%|X6yQQj&x7kB|!}Kp!^}0Qu9*=3X7RcbR zKdTJSEPf?dCQ#8jc_E6_ZS2wJs*z8!}I!S$;H@Wo-*m=z%cLh~q`x#2T zZqR3DN?wr>^|*m0nfPLb5s-f-T@Ry}_kxbvCOw21we@!v?6s`CdQ%+BD$4NM`Hf&S zuI~OovZ7(eqH`wlUPMc^F1g3b4oZJm`azapjoh!2J(HO-rGuIJ_9YoyeN2JQUTt)) z0LRWz_{b6WwpYs|$8sHy1^*O{?T1C3y?3cA`_g+}=IMbMKz*?E5K1?mW&Cw5N=+6Z z*v~uvHL1w$;yg%ql-C55RD9uVX^qnu05a!F{QFvVlIJ+l2yKBLijGRLY zsBRR-(B9R1i~2dODJy6=xT?|Rxu^Na%M*RJ_c6lGKUj2iwf(=Pilks;^$aaF$~gH3 zq@&DsBQjq~0x~7_^A7ha2b~6sSi@2TtjSkNVotS##qVOSbqIt(;eTk_QlEx+R=Sj$if|=ViuC%@~robhBm>Nlij2H z4CHrW1*}Md?$W)t5?pD9=Hy)o4)6rTXC1XD8O`(F6HdxgN!ULcDu_I4n@`G_xw>b; z33j>PUY>g)otuP1ix0hrfIjJ4{W~}8&kZ9LSPPcjeJmdc0rJ}tBrf2{Xs|N*AYWq| zg5e;t0Xqm~E|JJiPz@eS7nMU~)ALX8>6pc2m5@}AuIPnkR zMgC+oZwK@`z4C(k;@X6vATK+r-*;dRcRixoq?8@c>tXGuhH2p*F^xVk!Mu;}Q#vU~ zydCsh;B0@R=tmO8x@MGN;E8>w{;{VOC(-EPsViOIu_p1QcRhRzRp!k|xqdTi{bD%b z)CToikzcPlM!bTTGa!0r7AgHI!rM~1U^+BUW_}xD_a4$wZGLZbbQQ$_$-9rFz(d>O zL?elWwLU`w)RJ{N8ESTz1q5I1o6h2rX+eDB9wh^)(T!E*a4oXL)c`wh>q!WpD#fOn zNteo4mS)}alL0rqtV_=P>dM>pRU}4Sc|Yk5W`9M5lx_4=`<^JAcI*J;&V&|x$kR!i z+6UabTbri+tDGpS{p+t~^*TotFS(0NmSjwQ*k+3FOsPr~c|cBQY7cckx_5sn)`cB? z19d-dIYi<^Zumjt&l=ck%p(m>y#JCYZoc)AQE_n;cF(78Mz$q2z0&YyB=?H2x*fS3 zm2?Hhdc`losAlu@%|mVhM9x-~w!Hd*G=Gl~YkVgq#@a_Ta`QdTlH^3`@?nC<=h^dM zr=OvRkN!N|pJ>hAayMD-6)pCz(41`RM^&-#rC@Ac+fn(LF9~-#>C_vTeXU}7^ba}A zJk3A&_nxKjd`KgS!_nwN5fGdfQl}IR3VS-`3j8Ab#n8gJD?++*U;h61 z-^DkCBr?}>2m?Smret`l;-Zr;RX9F%ONtQwK><8}X6Z?9_UQ)hgkPR%#KzkzWblW( zz5(LqIfFf(Ui>cH>hgsk#HvA^z>XT=EUO6w(~%%sCe$y|>gimrrAJQO6f@PG7b?a4 z6uNx?m71IUU3YX6VhT%ga|o=74B3lL(^Y*0nQLivDr@ybVXo8oxQZ zd!1eEas{jXv50?C*Y;Ih$RM|Wr9df-D>}c2w9~E8#q_gRg2$%E`mlbevOQx!2BsJ5 z=vApOPmWvWD;Oc-?om``%rn#CoLJz@Y0^-LM+je7lDEpx{(1jf@ot5{A^9cg??XW- zIlq#dd0QCspr0!tI*dnuLbkBjlHqKz3yq_!?VI>T#<&txOaD31PEFOCCn=TCYif>S zk8Gn`WSQq#&bxq-xUMp2(L~Czz-RDt%Y6<{n)vsp_t?5+uNd*mIz;K5FVDG8+hp<4 zu7-D$^f;YH48F1`eRA}icgyTUhrJGNLZ9x~eKZ`l#%z;6Ded4{m4e7fXvZP*JWq$M zap{qw4My*o>G%JxuonpC{{WQqqkMq=TlHhDOQ1gdRHLaiWEiq|CGL|B5Ab%whQQ|S zT-o8`x-P8#E?``F-W+6o&wz?3zbz&! zQZ&eett?pM7H(^j8t4y^FEQ3C%9!2f4*_aDzboi+=v1@u+528h|Ghh$-Ar^qQ*40R zcR%(|fr3xRG@nce0s0~?!*2Hr|7;yK3oFvH8O?35{9SA#BwIk&^W`%NUu~?dp~@NvcO)gw+bmVUrqL&rOom${OVJM~lvK5JBe=m%B*usD zq%{_mex4u4>VHm(aVoak)<3DW#&A90trWC7Tblvmm{r}hG5+GT~5 zcZ;-=pWcQg1KjU1P}Eg6$wJ5TYh8YT0CZaLbk4KHm6CXx5KuiHFoa?7a9R^22EMW2)gODcsnh7H#PE?V%w> zA>A*!P%t!xyRY_+QJ+kp!B8XAo9@S5Fuye~ZD|Ue@ZszEcJsq4HBbhT_xo(c^=mmxhCXw=Qza`qI z8A2OBI2-li;UPctactOQepxUhQ)yI#pQ$GhC^(99c!3m7naN=cm;b5 zmOfY}elYAdHmK;Ysjd0RtnFTL7b%{cqbT=w;OK_|6J(v$T!dNQbC|2JWGxt{sgq?NT>4#%WpF*!5}Q)RDTXUYKqmfFWGW z8zgZpWBT3@mknvSuv1Hu^%G&&b;m-RA*>mbJ~5~CIX#ExImgHcBF9-)0?vO_zJuZ= z_lFs_?#ei`ce>Hf{opxKoB*9ZX{VqM4>E|uKiJG=R}X6yA^P1Lz{Y4~{{haO7`Tkd z1puNdmaix3Jsn(Y_s8OC!12CvR#BkmN*CqvUC!591z6zn@SRpNM4qxZkb2xtBbVf# z^%6tc0pmb`D+*q#$ZGF&S2p5V?;@!RWgGzXDqU-@@J)0&fB*6HcjKwYV;_(ymwteLX;?-^boEnd@RZ1|C(uJ+wk%l?b0X%CA$evNgm#Gah^7Ci3$ z+#d1dwHy-sGz8PP$Sv=wKtB|O;{ory;%g5qrg+i|Z#(#|m??2l@Of`Fi=zE4fs%|< z%Z-F2F9Kg4c@jx?gc*S21YWcR$LG_tzie4k`y6~(fMtT-4B0GU<{K zWCM)!3IgGIm($oC@3o{uVo%NKY!jS+%m%zKIphY?+&%~5Pv_-ot^arD`cv;A%ih9Nm@UV~>ZUF%T|!MNAZx_%=b~*6B z6AvHZsG})xjMSHgr_SPaStQv#0~BQ^u2QbA4q!F?Vo%?2p^pa;{dI(wJ95`L8L5YY zFf^D-upSswxV?^H0gN@LsqWC>R`d^csxna3qP2|i+!&uYYtmJKEP9h{w?P%8G!EJ* zXJF%)K9j9K;z-&uz}S*YlI-^~3YOFud2yZOB&=WY-4yGv;P=qV*%aHW@N=#eE! z!jbaPBBcpGXs>kDjWVloRS!x`a__DgUoUsd-f&ES~{62TzQjl_M*eT zxX=IfPI%5smeRvVbR3tol!KVn;t4s*Y2R6yJ1&XugaMZ>$_|7$v5=W4JO>Yy4N5nl z#Bj6PfGw4R6Bq-7FFT)3(ce_R*t?LagkA15fjGgXcN(Ktjv$dcGcR~yKuBlkC_Ard zz(P2OFnc(8!iaAM7Vg1QYvC-0>m6-yM<(&VX^pKDSQ;oJ_W#rf7M64W$hwxdTe@@A}r{`f{ISwRcnap{e8qsvZ9bs(TB!;&o--->z-1& znzmcwH^10Ue4}dDx}kKLy5VUIB@D==?bN><%IsJ(Ff0^6mxVLvBc*&CgMQv4Jy!q6 z9C^C07)hj;q_@^p+uJpL^5>RoGl6qt@zM)Gg%3<4xKhr(={A(GX>1Zxt_#ASjm&& z!}=<{vujey&%~EbDT$19wqcM`o~t4>dCB$zpavcW1mGs)eJdoJW%aoXrtz2RSUP`* z(t=<6`9GV8gMIb$t*I%BcHeL9>y0zS?Q=rpc_J;ae@+ugyhaakz4U$}Aliv_K5Oj= z5&=H-UlXjSw*dHHsDp6MYpu@8k6XfXcP`FrF8q(%BQLODu@~pBogI4b687!(ac!~= z=bGMNlv=;|K8N|Qu!E#0tIp@YuR5}`qdV_iX0#-+Y!`p{UiYK6H1@_;Be&mO9D{)l zPh}=d&ZUp{!!3mNjNL+c$zZD>1vSB}e;X+#tHq~K%q-P1Y3}%4WMobn(xfKxA71@K z+f_RuN3hJTh?k%$>bvt6US9n3vM#2i$E67@`0uOSCshO{%zrEFbv|mKF)^q!ComQY zr3K*bk>Ytv$yDR&xhqcF!h@1rliWk!Qe2ZJ+2<2X=+N@z%NIn{8 zOfsT#sqsI!`c#*rVmQX&GDJXu_od4zhDo+~z6{hZ4x!`_(MqlFS8v=YWd=^Bjmj@a z4|FW{#-_2*qD|d4KTO_{%#$Iz^aOTX`|)fYVb6$sD1Gh-*-H`}_Y{XvF#Kcb35mK|Y~0@ypk=Tp^chLxq$tM|v;B&JeTm`1uq8H3QhF zf=Lqk(tMBch^)t9(i?Gtm+8w$(EM=ZPF5C+plZMjQjBUO)46}D1~>Y6`+~H-uuI5X zeLQ(cUvr(=YxBloM|kK7TSqhUYmD00-a(StWXWa-aa--^-v?8^&!mI(k`J>p$giIJ zaN#kT(2LH!=Wa)Zgr(`nP8TeJH`TUFR=4v#@Es>R!@kmn=W9LmH~He9lSQ?WI$vFQ zaA4gc_s=exqjwLa&j-QmQJt%Mw&}Zm31~t_WM6((Z$o|M{BKhH?mIa%w0wR5n1MI( z;sBu=ZM0e=(IVrUd7AicTEv2ZMYDWwRf*iW#FY!owonJ`U^bRlvCGn)w$64vgK8aAE zcG^YAQ$t>8v4kdKm-lFb_em7Lk0=Tvl?v3}P5r#3E%CcF8`Sn2X>`uhCq@hZ(*Q0# z?c<9KKOW=qmB2D1*HpnM^8ASX-Sx$jy$iOG#jKGF=)uENNZb_QrAje)P1P#_%AV!|sNZ@VvIqZR!n_QNLR{%1K#<{L5}4J3bLt z7i}M_5vX|-?9)0B7{)IjCB{-;>TTy(A=+x&1`PumPiX;tjhVl?y`g2e0J{ii%Qa*+bbk^zhF1u2rI)Z75kuagfIoJCN6=|A?^Z&K=RT8D%oG z(_nu5B7!)K5CI)6tVXWn{pujv(tf_vriLx5V+CdqWgv#v;`m~6OkTH1w6V$1xh0*u z-4{ZmVUe(gq^Fl_SHZ)>wZQj}VB#Ri{D2L}g|j~O%3D^FE*N?@8(d z2Eh5A(j*)AWH)1vTj$7^8uub9l^c0uXjSb$+mnx-%w#w84h-eJuK9W}_A%FN4i zXUBW=Hwgui!J!*fSOvm9hpN6SS=6k0_sQ|bc3D96>XVIo3-^`2SO0JKuDqh}U7X&IywDS8ubJy;2bzJNfW0<&Oj63`Wq6w28xJOrWf6+u zO;mr~za~lfZo)+&f8=(rW7LUKQ1j)ss%w@VDwBKaa-wYz)yeUJMPIG7g3VxZPjFKkh$;;+14>7PSb)h?3f)Zuxls;Mb%4rS{$4u=vYEf-EW{6Edh4LHFtT5D5?|YtD8de9fAWShRVlWf z&`a}fDAN}+&xP($*gSqZ-@|Z+*8S)Wl}g9KUwWKOw-A0HMf|BH(|ddkDd&+;Nh{T2 z%Vc&paR!uK$VPsummNp`u*)7PVU+82_w&WM-HSafpHeiF8@-vEHlk^Sx&6_Ef!M0! z0LvN8)o)g6>4!HCx=yl!GPN+V0eo;DQZpOonZEbC0o!WuX4H1aQKZdlq2U+&IHD?~ zp-%`hntz=_#-dUvH15Yjq8?$WFts)Bon+FaQir_7>Y=4@FkOYlxYtYnI^(_7Nly_i zJm^ul_tU1gWQ+Cx&Vd7gUT=j@__kza(*~^-DrJu?Nb`$7-5JG8XUlKjJv)H}%fKX4KUvJIw6VU>m&H_DUVA-X` zmNrE^HS8GM60ZN_Ry(rF6&4z z+z|ap4RT4(DsCo=wn(_7FHIQ+B=T5mF8V2Je$F8aYkt!hAR5#_mHg@RU@*5sN(}dt+K!Qq!R8WogWexh1?aKz`Oy`y=8FwhP+4!}Hblh2=HrsM>w;KqSCpVgX< z-!U1T!Ft_qc8RBVr7oYq;=CuGjRx2ss$nDpYpNZ!AhCoR%;o*PkQcA+(^9Sr%X1U7 zP;zkN#~5;eBNmPfJGkdcsqWLer_2JB?#gld&5HaQFQDx+gLgZhZU+SC@$KhMW8nP( z^{y_ULS>Xnl>2Y>=Xwrae_@bq^r`o*e%Ed%5WMOU>$9&u4&vguj;)XSc}$dxOd9lP zmx>xt!gOO_%M60VfK&^#e1@t*zH?e9=NTe@s&~jA)elDGg#zRlXY7s|wI|@A>@uNa zF@6W-yO-wPX-?;t0}sF$TUIrGK%xAwk8s6Ut68DtLvqmSe{%sNuYgtOv{vU_fsH_) zgAcY1-t|)T*LUn{iimIgHir~|9gvyKuVAI!Vh(~yN;=_YXHwIRD^11{Kfao5eQM)a zfNn}!PZrhEaJgs9*M&#OQCdgVa7d_gEkJX^BseBlf8E?^D}WYVhoL=lQm*CT0QvRN z#V7ZnHg8;)&M1@rzLa+WRqgBQ8qI&|8ZAFdVX_aoTU6N8lDa{gcrbnxh*u2M0<~>(%;eSKgcDWG z>os4)+j7Rhz($&T)c!{?b#S5Bw>=du(@Q3bY`#wKVWik5>VUvdg#0f_-V zT9j_^7Yr{jNMyu}HGU!@D_z?eM%mNelNIgehLaak1R4idu6d}n<}fT_SOLey4BCka zkRYg^)0q~;xqaQ!YEh9W2?!MFyIR7D;YLi_w;Rh#pY96i{V?pf_x?F7F4lhe0TfmA zq!|{<4+rT-5vCaDLqq_ZZ}bVe?T#zBXy1%rT+vhNJL$OC=8iI&(Wg9c54wgzziydSs-gsOMFt` z@{$OU+NvknEje&ad#)%l9fF`D8LooQh8fBzKXd+Aj56Yt(V|h&s03H-)_{{uV&7Mb z$3@12+TNBa3H%5iK!-Q6Z;->iRJEWOs0mOQevOnIyyF^0UOw&O#X@_F6`UPyT;nwCxr{%Ind>(D?8!+i4~ zL|)CV6V+0mQnGJ(~T`HOHPd4w9RKez|=Ta<7XH_&Y+vBP8 zv#ii>Pd_mZ8?#E#CvS4AF3OW0t1>s|$G>bG84KVYEC2(46%N_Q!=ym6EEp$e+Ug3SX)BtKQr;of_vhPK2G{vB#KT>A4(^N>s?;sME3 z(b&=~?@eqvehQ$6x@IzEI+AGw{?>nFpUy5k_mRL)25f(<9z`CHHv~!Mr>CzbCi8&^ z2+I?6o|mBq#@p&nZ1}#KQ>f`Ou>RiK&_l#a76|l8A=K9~rw8QTY%H^PkG9l=Sl=qP zQA5;F0V>|~!u7!ZAa-rLS3N{KKF4xX#5tg3uaYF8`)`miI_KV?^QtzSY;F(V8(4D+ z10FDC8TDtDPM2t7PyZhEF?hYXQ^UjvI2DZYTyO$T7B6!P?w%eFVzb$<;>yAHh;=K? zA3X!sZ}fx8-_Bfjm?2K_zSG_`Td(oSM#a8avaK|vq znFI_er%9o4Vswj&S*c=N(j&;Qd-5|`g42W-Bk=(@jWLyNg9LI*7rYa7IP?S37nF9l6& z1w%1j8&yqmCZO7^9SI<;d4(Scqn@L|7>dkZW>n0mqNtBeQ$f-+fSoFWtmWfT(biX4 zqjLOWI`{>Rj4f15rF2P;jo;zvHV4>_VGz*%)EJCxP);>R{V2xQ%0M)A&##h+0SOkU zXIbB(K&b={&sYF{oVjaH*sche-X_&&YERPdo-A?WS}$rDjzJ^#<$J@p3isbimDDEWT4Z=*7HS zn|NuWNNzbA`qIr87W~qwYWk5I3R?Al`%`@kW?OBdrc>i_KbH;@v>;FszTNU~+;&^L zYBlUbRpUsG^7bF%(U{YYl)F33i^px?_QmSjEJ}N72VwKrApyJe0GN)+Oaad<+ATKh zRVl;6x}2!d%iGsS&^RZsb90CVhoSo=$+*evwPeyD#itEr6XiI3K19DGiySabv8M1kq`|+Opha1NIox^sdM&T) z0y|5df4Pt_j4{&QyO0GS>u4f-t_<(SIO#k9*gJ$XLF(OYGB62x^p!G8uu%#xNsGx9 z3uXdBolRm@iO+?)c%cj!7*CUS*#O_L+F|CA6I9IA4}#JtoB~x11!Q%zP$zkytPcEu za_XNzi^LNLRoB3Wc6yD2R$6dzORlN%ep-ytwQ1@I@f{nOmz9e)-CBw&8HV?=YOt14 z6&RiI=BO*07ut4Hra~Wk>LrN-T3@?h!81*mcbDS_$5=EV6)VzE;yRnUPY&EGG8)ZR z*8j&yQ){BXAB-8Z5M@Up*&%ajnrHas++e)>tnnl3rc zhqo-f!;mfxm+3mz#9t0_;qV!&Rb=*gSl}v*oq+k^(`fWCQ3s>bJ-pkTQcO_KU(djM)I`5cH_;Kg{wI z>65S@8&1krAok@mR(f>%c2sH8Dl4-IP)rnFS098}ZF@>@zXQb~8LqR>{xPng^xy4y zX;1TB^y^<97!4eYSWWZ#-*JmRjhl4rdK#I<49e5kdZ_K@=fnFFR9 zeD&^jDht#Yk%KY6#Lth~n8=ZOR}W@DV@%)6%{cWp9PPIElxm_}8PLW1B3?Zay(boI zSXztcv_Sr$?0GRu`Wwu06zqs&+kuLOhY>t~-_5&@O_u*oRMY%;SD8S;Y6iK{wMucd z#Av40{yh${yS#B?rca+(@eB#qY`!gDbMx1NT&K4+sF(tA@E8N7JJx`_SaBzUtPyIR z9xOMMj`LkfK#sb#tw1fW(x7_#y%NZ~SRjq1*TKL5**<0!!#MllIAfw(KZe(*f?X;^58*sW8;{*rYwrh(F8eFK) ziur`dFM@mp5f<7A{P$%Yh9F4cZ&2$8kF6e0P#oGvg1z4Fdp9IQX-LMDMlT+^97rR6 zV-UjrHRW*GP^LKY3%Dli3$JI%lo!2a8x{z5_#^)=({pIK3dP%ZI|}U{K;W`pd2n0H zYpB664;oGJkyY%KOx@iY%dVH*o99tF8u(9k48;ex9sc;*jxI(q{Gwq|r9J?g{X4fx zx@(1^fk;y6z>C818@ybCK&A4Oj29HM5g`rL18{IJE-8M%iI1;`zy1gm{yCKLLT~Lm~rhYbe@!_3$|Vwh2w2K|D!&3frvWj4SNx~x4cei zmDgWBkRnj;j3Q_c-~(6{EUlfshGwu}cKG^tPzFG5d^_%@y#hwe>guuvL#``+%0$F5L?~QzlgG|C+1z@`t78WTv#ZDz;5>>MFif(jt zuKS1*Ap5OP+Ms`D$+F|+yG(-x-CFY5#~1o?@V&0sVse`tS>l!^={OwN(0LU_Hfwqf z+5(ns>J||>=c-*)$xeVSz5@&|uC;`7N@Mi^?Y+cIXKW z+|$JE0a8xEAM_rS+VZ=}0)3w7uk7i!Gx!iVBF3?`NPy$JHBhU`^kLe5SrIhqgM5u0 z$jZC{x`eSq>_pMn%=7Bt8V9uF ze$u;jyTgF~HlBTm`j8#2fqJ9IF$cvo1vtp6(EwrUkhYAS4nGU z;@FZYcW*m~h-a&wxHurAPc9&{&-VWPUKd{&q2hkrT^3=%8V&}Plq;lJY^3k6;t{cw z+e{ARwVRb~Fa}#uiNYFI)c4Ph-xAP?S;DZ@L>OT(4)ZW-Uh3w-l08kXRX^vo#H?RS zA~}qUexPR3;E-2MScM{Of-&>0htVGN&wh=^h49?|Hqj*FHt>~IGlL{onf7`Kj45>u zG*2puC$FpBbWjnN5E?&x`$5H*|KfAkbID~30`%JMM;h99g3 zyY_tM1Wy{qvta$TWBq$SImKBrHDsM#=fEc=HyeKwx%>3#(`LPZ;SyHLup2HAOlhfS zqt$PDU9?;qd33Kf{%df=B*OI1sR3AwA($9?UU?`ulVidCRF4fvITU0FC2T`cY0h_0H6ZClk`#bQYi3V2$e)Rw z6qqy0vw4C^&}en45i6`Zlnbz3mI$v$e7Pas}rzD~fv&I=zOvcG75#G`LqGdbRwIgnJdBO_Odc zVZRm@;Q9TBDo-*PlU@mC$S5$5zYV$)pnvsV@Lwn(U0sqr`LP3Li&)o@7#PZ#U~%ub z0t`LEe5Webw6hFLowNi7*XpF7FGVOeTtUC)>p;MO<|WXJ|ZVmYncjrjQy#))^3s z2euqakU5hch9$y0B_lV%`6MdZZ{5UDnzZ%2ikh)I#iPGX@o%fTyw71kCIw@HvDDb+ zI=FD^#0t<2D_E|9yF|}te@lJAou%RY>KzMEbuG?6ZsqJMfRsivi-nuBT{-Q02W4~`wq}!B$aYb+ zFD-|A87WPbcxj_^IpSAk_+VH46}z+GCTeY5nDCAtfGla69v13^?Ql}sQNY|$P~dNm zAf#l`Do1Jd{?jJjJhiW(JJ!Owh{E!2pRqgo5L|gT493^zXtYgG8}-I;U*R88Pw*$ zOJWTKx99>FrUqYsw?i_Qnx+M2*lg|WlH%?Eib3S)riYYYg2rWx811@rL1qte*T9!; zO%DX_4S=d(wI6#V{xz74h2DmLdRHwObmVwHCRROu1)H=8re5yfYy2fHeeN6rjJEJn z#3~v&T#_b~I7D}#12p<4%3O9@EK&vH0g*9`Sht?Yl*k+S!b|hk8ssA=_ort0vxD}Y zms+dRS5(uW%M#`a1Wj*d)xw66D71Pmc}S5^STM=p9`sDWrG9@q#hJWNXMHU%&O8jU zlL3K)Z@DEt9K7&h~bEmJQ9L! z*3)7I`>p98z%oW46VZyIf!K;ZUfNAz3R|aSo@ricebQ!}(+rb#Bjf8QP}~@Gf9WHY ziy}JCHSow@uZ~*riz35)s)X(BEnWBw5ar1C`{h_d>H4?7MMyD=o<{rL#R4 zULLW4Tz{cA9OJcfxfr0W2gZlLsy6JhZoB9Fp!rLQuBxcn1K)*W zC@uO@Xb}0R`1wSp5pL?Zf7@lg-K*Z>hCA{vS=xK`ChXAucOb=L6sO_znNwh!DuUwewemnQ*BBo5N9RVbu zH3k^7HyfE!*FP2`=QA`+Bbu+hUjoTdS$nMohO-`0Kl+WQHR$?wQjRrf_R07IotZF_72@_&2`?O{99 z=;1V1x9^Opyo_D;SF_>{0kemg6*9X&UDoUkp1r}ez>a>^8y3!rxu@(p7t<= zxBwe6T_AT=T^iHA{Bf!zKb#bRF59Ncw6pt!kRLyJV`k(IHOoGX4OSGljmebPeFn_$sm{RvKb&D^I{w{FO0HKAVwIS;@?W# z?XA|d8=sDMm8AE2(f=~wex+kkD54E{Mc8)S;C0w#B9zV)j5`$FOU$)ed~;Y5Fa8{u z7mcF!dYoYc>IV~4S^+046w?V*S?Gm zQ(l@eUX0xwt>(|(J$C{uJG1b+x+InRw#Tc7H~?I{O(0p6CFtj z*o)rj48M2j8T0hCpsgfA85h@k3>rm#nnIi!W-k3;X?Q~+8kCy{JNg8m9K2d4vtEg{ z%oW^r(u3C}h#h?bVV;Em+RxmvB?%HoB>|%=*IG+|x8!m!2d2Aj*=f(yPxLrQHa{r0 zR^aovDXx18 zTE+2Ma=?60tJsfnSiRzmk^lsy!?=$O?ff3iIgC<}dSWI1@tM;vWNn$})5pCa$&<&5 zfK*4uOLf{Z6<2wP5YhaIyA$}Z_=5{m_Nxu#_t{F)FjiF=?vL|tAnHq(rV)hUk|cj` zhpm+HtUX;{ej7Hmu}Q0q^CutA{sCUQU6=M*vgW8yA~@*|_PXYVve6b-RaE|502)IV zGRRy?*~aTuWq=PO^sYF4pxkmusPj+Wo83J3>pCs*Kfcm9aj0pYf8*llzr_fci{B^Qwtay9V&Qk(mMB5ooW*NP zZ`?Qzi2*hjo^D$GR7Fd}`MV~!?uCW&|Isizkb>`&+ADXtRrast!vm;ZyB~(94Z*0q zg)-G?F{*9zx4)nP`=%_l+MdYI$$iX7!sqi znWIn5pFKeYkO3T)x4na+7;gJWo8~LIK86VLI8jS$8~%L~{*moKVMpPDHp+$%G+U5N zcy6a)1j;;_J@dI18oqxT5wdfls`!A_&r=Ll|7HP(A^+m1Fl3EcTAcI$fqx1*ilp`) zT7&-hbN2t+zTp!8+qUl@(!0Tua}RNhtQ2!WIQF7CApPvJ_jZ0b`98RIZuiIo_KK{X=8M&^g9=f4Tf9zNfF9Gtg0b!_lCDA!I0Zszo zMKqbooj0dOv$*mEBh`$q*@EDSSplO+G0LCrV;EHy7i9}70;peeX1{+{2!dmwoW6qq zI`($snbqxCaC;$io4**z)&WuV@u8^WJ^0-lNg!Kz+2IPvnJKk(GyQN|`7c6Pm z7#f*=Dtrz7d)5b;OeOlwHF*jfe6P0L!YV=zD7jLmQfQH4;o{ZQ@e&!7AX*d+l3ca{ zcLrH5`(Ad@1l#s~iq-PY7rrQ0ul;yqd++KJ%hksI2mcdI0`}=R7 zZ)LO}d&{3TKO6ncZ~pd)9^d`$?{6ObIfAo`vNJqDGTA`Qcm@N<&^bc^nB{>8@aXsu z5N3Kn%0@?^=cR*)4MSKEAsij=@jx_p_IQsDcQZX;-HTNHycvKj!qK=^1@N9Ed2fQe zENCIv0@}?{@?J%GlO*SY=9{IWght2l zomDCvU~x9IG7jn6L$6@#t$t!?or*Q9mPjMsVu>=Zqa z(t=^2)WMRkZHpr-%CalQN1i}BRurikKNN(K0JM6-stQ#WG;NPtvEL&6NC1Xs{-`W@ z>wcN3tK}z3z!}-C;IB V2.7 接档说明: 5. 使用VSCode分别打开接档后的V2.7和纯净的V2.7的【project/items.js】,并执行以下操作: - 将三色钥匙的cls从"keys"改成"tools",并新增 "hideInToolbox": true - 如下道具的【useItemEffect】和【canUseItemEffect】有所改变,请直接从纯净的V2.7覆盖到你要接档的V2.7: - - earthquake, pickaxe, icePickaxe, snow, bigKey, bomb, upFly, downFly + - earthquake, pickaxe, icePickaxe, freezeBadge, bigKey, bomb, upFly, downFly - 如果确认你的塔不会使用该道具,可忽略 - 黄宝石和生命魔杖增加了【useItemEvent】;如需使用请进行复制 @@ -49,7 +49,7 @@ V2.6.6 -> V2.7 接档说明: - 找到【terrains】中的三色墙和六色门,删除对应的这几行 - yellowWall, blueWall, whiteWall, yellowDoor, blueDoor, redDoor, greenDoor, specialDoor, steelDoor - (在V2.7中,terrains不再保留门的引用,门效果仅由animates决定) - - 将【terrains】中的 blueShop-left, blueShop-right, pinkShop-left, pinkShop-right 分别重命名为 + - 将【terrains】中的 moneyShop-left, moneyShop-right, expShop-left, expShop-right 分别重命名为 blueShopLeft, blueShopRight, pinkShopLeft, pinkShopRight 7. 使用VSCode分别打开接档后的V2.7和纯净的V2.7的【project/maps.js】,并执行以下操作: @@ -87,5 +87,6 @@ V2.6.6 -> V2.7 接档说明: - 「重启当前事件」已经被删除并且无法在游戏中使用。请替换成等价的循环处理或者插入事件 - 在V2.7中,所有的experience全部改名exp;请检查所有对经验值进行操作的地方 - +其他: +Jewel改名Gem From 54e5ec83054317f027f531e6c87cd4cd02912afd Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Mon, 18 May 2020 23:31:05 +0800 Subject: [PATCH 29/80] repluse->repulse --- _docs/element.md | 2 +- _docs/personalization.md | 4 ++-- libs/control.js | 8 ++++---- project/functions.js | 10 +++++----- v2.x-final更新.txt | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/_docs/element.md b/_docs/element.md index 2b10effc..099a9fca 100644 --- a/_docs/element.md +++ b/_docs/element.md @@ -139,7 +139,7 @@ N连击怪物的special是6,且我们可以为它定义n代表实际连击数 领域怪还可以设置`range`选项代表该领域怪的范围,不写则默认为1。
**将 `flags.no_zone` 设置为 `true` 可以免疫领域效果。**
阻击怪同样需要设置value,代表阻击伤害的数值。如果勇士生命值扣减到0,则直接死亡触发lose事件。 -
**将`flags.no_repluse`设置为true可以免疫阻击效果(包括伤害和移动!)。**
+
**将`flags.no_repulse`设置为true可以免疫阻击效果(包括伤害和移动!)。**
!> 阻击怪后退的地点不能有任何事件存在,即使是已经被禁用的红绿事件或重生怪!(会导致此事件意外被重新启用)
激光怪同样需要设置value,代表激光伤害的数值。
请注意如果吸血、领域、阻击、生命光环中任何两个同时存在,则 `value` 会冲突。**因此请勿将吸血、领域、阻击或激光放置在同一个怪物身上。退化和攻防光环同理!
** diff --git a/_docs/personalization.md b/_docs/personalization.md index 82fbccaf..ac7ff766 100644 --- a/_docs/personalization.md +++ b/_docs/personalization.md @@ -308,7 +308,7 @@ function (enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId) { [ // 写在获得道具后事件 // 设置不同的flag可以分别无视对应的阻激夹域效果 {"type": "setValue", "name": "flag:no_zone", "value": "true"}, // 免疫领域 - {"type": "setValue", "name": "flag:no_repluse", "value": "true"}, // 免疫阻击 + {"type": "setValue", "name": "flag:no_repulse", "value": "true"}, // 免疫阻击 {"type": "setValue", "name": "flag:no_laser", "value": "true"}, // 免疫激光 {"type": "setValue", "name": "flag:no_betweenAttack", "value": "true"}, // 免疫夹击 {"type": "setValue", "name": "flag:no_ambush", "value": "true"}, // 免疫捕捉 @@ -666,7 +666,7 @@ if (core.flags.statusBarItems.indexOf('enableSkill')>=0) { - **`flag:hard`**: 当前的难度标志;此flag变量在setInitData中被定义,可以直接取用来判定当前难度分歧。上传成绩时将根据此flag来对不同难度进行排序。 - **`flag:posion`**, **`flag:weak`**, **`flag:curse`**: 中毒、衰弱、诅咒状态。 -- **`flag:no_zone`**, **`flag:no_repluse`**, **`flag:no_laser`**, **`flag:no_betweenAttack`**: 是否分别免疫领域、阻击、激光、夹击效果。 +- **`flag:no_zone`**, **`flag:no_repulse`**, **`flag:no_laser`**, **`flag:no_betweenAttack`**: 是否分别免疫领域、阻击、激光、夹击效果。 - **`flag:hatred`**: 当前的仇恨数值。 - **`flag:commonTimes`**: 全局商店共用次数时的访问次数。 - **`flag:input`**: 接受用户输入的事件后,存放用户输入的结果。 diff --git a/libs/control.js b/libs/control.js index 5590d0b7..502d2f32 100644 --- a/libs/control.js +++ b/libs/control.js @@ -984,7 +984,7 @@ control.prototype.checkBlock = function () { core.updateStatusBar(); } } - this._checkBlock_repluse(core.status.checkBlock.repluse[loc]); + this._checkBlock_repulse(core.status.checkBlock.repulse[loc]); this._checkBlock_ambush(core.status.checkBlock.ambush[loc]); } @@ -998,10 +998,10 @@ control.prototype._checkBlock_disableQuickShop = function () { } ////// 阻击 ////// -control.prototype._checkBlock_repluse = function (repluse) { - if (!repluse || repluse.length == 0) return; +control.prototype._checkBlock_repulse = function (repulse) { + if (!repulse || repulse.length == 0) return; var actions = []; - repluse.forEach(function (t) { + repulse.forEach(function (t) { actions.push({"type": "move", "loc": [t[0],t[1]], "steps": [t[3]], "time": 250, "keep": true, "async": true}); }); actions.push({"type": "waitAsync"}); diff --git a/project/functions.js b/project/functions.js index 4a4dd7d0..da5802df 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1051,7 +1051,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var damage = {}, // 每个点的伤害值 type = {}, // 每个点的伤害类型 - repluse = {}, // 每个点的阻击怪信息 + repulse = {}, // 每个点的阻击怪信息 ambush = {}; // 每个点的捕捉信息 // 计算血网和领域、阻击、激光的伤害,计算捕捉信息 @@ -1096,8 +1096,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } // 阻击 - // 如果要防止阻击伤害,可以直接简单的将 flag:no_repluse 设为true - if (enemy && core.hasSpecial(enemy.special, 18) && !core.hasFlag('no_repluse')) { + // 如果要防止阻击伤害,可以直接简单的将 flag:no_repulse 设为true + if (enemy && core.hasSpecial(enemy.special, 18) && !core.hasFlag('no_repulse')) { for (var dir in core.utils.scan) { var nx = x + core.utils.scan[dir].x, ny = y + core.utils.scan[dir].y, @@ -1112,7 +1112,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var rnx = x + core.utils.scan[rdir].x, rny = y + core.utils.scan[rdir].y; if (rnx >= 0 && rnx < width && rny >= 0 && rny < height && core.getBlock(rnx, rny, floorId) == null) { - repluse[currloc] = (repluse[currloc] || []).concat([ + repulse[currloc] = (repulse[currloc] || []).concat([ [x, y, id, rdir] ]); } @@ -1207,7 +1207,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = core.status.checkBlock = { damage: damage, type: type, - repluse: repluse, + repulse: repulse, ambush: ambush, cache: {} // clear cache }; diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 0e601735..540ae267 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -62,7 +62,7 @@ ------------- -(不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“repluse” +(不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“repulse” (造塔工具相关都给鹿神) 1. 便捷PS工具希望加入自定义单位宽高功能,希望把“白底转透明”增强为“纯色底转透明”(弹窗由作者输入RGB或RGBA值)。 (已修复) 2. 请求修复(如果还没修复)新建单张空白地图无法自定义宽高的bug (文档相关给秋橙) 3. 希望给M键“追加素材”功能写个更详细的说明,在线文档中没有所以离线文档中也没写成 From 47b083e3a5fd8e32c434b0cf4887b233a0f05273 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 10:09:08 +0800 Subject: [PATCH 30/80] =?UTF-8?q?=E6=94=AF=E6=8C=8132x48=E7=9A=84=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/events.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libs/events.js b/libs/events.js index b7601032..9add168b 100644 --- a/libs/events.js +++ b/libs/events.js @@ -441,7 +441,7 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { } // 是否存在门或暗墙 - if (core.material.icons.animates[id] == null) { + if (core.material.icons.animates[id] == null && core.material.icons.npc48[id] == null) { return clearAndReturn(); } @@ -475,17 +475,23 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { } events.prototype._openDoor_animate = function (id, x, y, callback) { - var door = core.material.icons.animates[id]; + var blockInfo = core.getBlockInfo(id); + var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height; + var speed = 40; var locked = core.status.lockControl; core.lockControl(); core.status.replay.animate = true; core.removeBlock(x, y); - core.drawImage('event', core.material.images.animates, 0, 32 * door, 32, 32, 32 * x, 32 * y, 32, 32); + core.drawImage('event', image, 0, posY * height + height - 32, 32, 32, x * 32, y * 32, 32, 32); + if (height > 32) + core.drawImage('event2', image, 0, posY * height, 32, height - 32, x * 32, y * 32 + 32 - height, 32, height - 32); var state = 0; var animate = window.setInterval(function () { core.clearMap('event', 32 * x, 32 * y, 32, 32); + if (height > 32) + core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32) state++; if (state == 4) { clearInterval(animate); @@ -496,7 +502,9 @@ events.prototype._openDoor_animate = function (id, x, y, callback) { if (callback) callback(); return; } - core.drawImage('event', core.material.images.animates, 32 * state, 32 * door, 32, 32, 32 * x, 32 * y, 32, 32); + core.drawImage('event', image, 32 * state, posY * height + height - 32, 32, 32, x * 32, y * 32, 32, 32); + if (height > 32) + core.drawImage('event2', image, 32 * state, posY * height, 32, height - 32, x * 32, y * 32 + 32 - height, 32, height - 32); }, core.status.replay.speed == 24 ? 1 : speed / Math.max(core.status.replay.speed, 1)); core.animateFrame.asyncId[animate] = true; } From c2f8c37983935c11752e6a10ec9659997d8d7f3a Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 12:58:31 +0800 Subject: [PATCH 31/80] =?UTF-8?q?=E9=9A=BE=E5=BA=A6=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=88=86=E6=AD=A7=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 41 ++++++++++++- _server/MotaActionParse.js | 9 +++ _server/editor_blockly.js | 5 ++ _server/table/data.comment.js | 19 +------ editor-mobile.html | 1 + editor.html | 1 + libs/control.js | 4 -- libs/core.js | 1 - libs/events.js | 17 ++++++ libs/maps.js | 2 +- libs/ui.js | 2 +- main.js | 12 ++-- project/data.js | 101 +++++++++------------------------ project/functions.js | 1 + project/materials/animates.png | Bin 35375 -> 35445 bytes runtime.d.ts | 1 - v2.x-final更新.txt | 4 +- 17 files changed, 112 insertions(+), 109 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index cbb5b2bf..ca76409d 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -322,6 +322,43 @@ var code = '[\n'+action_0+']\n'; return code; */; +// levelChoose 事件编辑器入口之一 +levelChoose_m + : '难度分歧' BGNL? levelChooseList+ BEND + + +/* levelChoose_m +tooltip : 难度分歧 +helpUrl : https://h5mota.com/games/template/_docs/#/event +var code = '[\n'+levelChooseList_0+']\n'; +return code; +*/; + +levelChooseList + : levelChooseChoice + | levelChooseEmpty; + +levelChooseEmpty + : Newline + +/* levelChooseEmpty +var code = ' \n'; +return code; +*/; + +levelChooseChoice + : '难度分歧项' '名称' EvalString '简写' EvalString '变量:hard值' Int '颜色' ColorString? Colour BGNL Newline action+ BEND + +/* levelChooseChoice +tooltip : 难度分歧项 +helpUrl : https://h5mota.com/games/template/_docs/#/event +default : ['简单','Easy',1,''] +ColorString_0 = ColorString_0 ? (', "color": [' + ColorString_0 + ']') : ''; +var code = '{"title": "'+EvalString_0+'", "name": "'+EvalString_1+'", "hard": '+Int_0+ColorString_0+', "action": [\n'+action_0+']},\n'; +return code; +*/; + + //为了避免关键字冲突,全部加了_s //动作 action @@ -2808,8 +2845,8 @@ Floor_Meta_List /*Floor_Meta_List ['title','name','canFlyTo', 'canUseQuickShop', 'cannotViewMap', 'cannotMoveDirectly', 'defaultGround', 'images', 'item_ratio', 'upFloor', 'downFloor', 'bgm', 'color', 'weather', 'underGround']*/; Global_Attribute_List - : '全局字体'|'横屏左侧状态栏背景'|'竖屏上方状态栏背景'|'竖屏下方道具栏背景'|'边框颜色'|'状态栏文字色'|'难度显示文字色'|'楼层转换背景'|'楼层转换文字色'|'装备列表' - /*Global_Attribute_List ['font','statusLeftBackground','statusTopBackground', 'toolsBackground', 'borderColor', 'statusBarColor', 'hardLabelColor', 'floorChangingBackground', 'floorChangingTextColor', 'equipName']*/; + : '全局字体'|'横屏左侧状态栏背景'|'竖屏上方状态栏背景'|'竖屏下方道具栏背景'|'边框颜色'|'状态栏文字色'|'楼层转换背景'|'楼层转换文字色'|'装备列表' + /*Global_Attribute_List ['font','statusLeftBackground','statusTopBackground', 'toolsBackground', 'borderColor', 'statusBarColor', 'floorChangingBackground', 'floorChangingTextColor', 'equipName']*/; Global_Value_List : '血网伤害'|'中毒伤害'|'衰弱效果'|'红宝石效果'|'蓝宝石效果'|'绿宝石效果'|'红血瓶效果'|'蓝血瓶效果'|'黄血瓶效果'|'绿血瓶效果'|'破甲比例'|'反击比例'|'净化比例'|'仇恨增加值'|'动画时间' diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 72108439..5654bd52 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -49,6 +49,15 @@ ActionParser.prototype.parse = function (obj,type) { } return MotaActionBlocks['level_m'].xmlText([text_choices]); + case 'levelChoose': + if(!obj) obj=[]; + var text_choices = null; + for(var ii=obj.length-1,choice;choice=obj[ii];ii--) { + text_choices=MotaActionBlocks['levelChooseChoice'].xmlText([ + choice.title, choice.name, choice.hard||0, choice.color, 'rgba('+choice.color+')', this.parseList(choice.action), text_choices]); + } + return MotaActionBlocks['levelChoose_m'].xmlText([text_choices]); + case 'shop': var buildsub = function(obj,parser,next){ var text_choices = null; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index cba4dcaf..4a7cfd49 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -70,6 +70,11 @@ editor_blockly = function () { MotaActionBlocks['level_m'].xmlText(), MotaActionBlocks['commonEvent_m'].xmlText(), MotaActionBlocks['item_m'].xmlText(), + MotaActionFunctions.actionParser.parse([ + {"title":"简单", "name": "Easy", "hard": 1, "action": [ + {"type": "comment", "text": "在这里写该难度需执行的事件"} + ]} + ], 'levelChoose'), ], '显示文字':[ MotaActionBlocks['text_0_s'].xmlText(), diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index e99b0fd1..7b168af0 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -132,10 +132,10 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "levelChoose": { "_leaf": true, - "_type": "textarea", - "_range": "thiseval instanceof Array && thiseval.length>=1 && thiseval[0] instanceof Array && thiseval[0].length==2", + "_type": "event", + "_event": "levelChoose", "_docs": "难度分歧", - "_data": "难度选择:每个数组的第一个是其在标题界面显示的难度,第二个是在游戏内部传输的字符串,会显示在状态栏,修改此处后需要在project/functions中作相应更改。\n如果需直接开始游戏将下面的startDirectly开关打开即可。" + "_data": "难度分歧定义和对应的事件;此处留空数组表示将直接开始游戏" }, "equipName": { "_leaf": true, @@ -188,13 +188,6 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "状态栏文字色", "_data": "状态栏的文字颜色,默认是白色" }, - "hardLabelColor": { - "_leaf": true, - "_type": "textarea", - "_string": true, - "_docs": "难度标签色", - "_data": "难度显示的颜色,默认是红色" - }, "floorChangingBackground": { "_leaf": true, "_type": "textarea", @@ -647,12 +640,6 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "标题事件化", "_data": "是否开始菜单canvas化;如果此项为true,则将使用canvas来绘制开始菜单" }, - "startDirectly": { - "_leaf": true, - "_type": "checkbox", - "_docs": "不选择难度", - "_data": "点击“开始游戏”后是否立刻开始游戏而不显示难度选择界面" - }, "statusCanvas": { "_leaf": true, "_type": "checkbox", diff --git a/editor-mobile.html b/editor-mobile.html index 37949d9b..df00077d 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -217,6 +217,7 @@ + diff --git a/editor.html b/editor.html index 17ff7d97..6f552c7c 100644 --- a/editor.html +++ b/editor.html @@ -213,6 +213,7 @@ + diff --git a/libs/control.js b/libs/control.js index 502d2f32..226165ac 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2521,9 +2521,6 @@ control.prototype.updateGlobalAttribute = function (name) { texts[i].style.color = attribute[name]; break; } - case 'hardLabelColor': - core.dom.hard.style.color = attribute[name]; - break; case 'floorChangingBackground': core.dom.floorMsgGroup.style.background = attribute[name]; break; @@ -2844,7 +2841,6 @@ control.prototype._resize_tools = function (obj) { style.marginTop = 6 * core.domStyle.scale + "px" } core.dom.hard.style.lineHeight = toolsHeight + "px"; - core.dom.hard.style.color = obj.globalAttribute.hardLabelColor; if (core.domStyle.isVertical) { core.dom.hard.style.width = obj.outerSize - 9 * toolsMarginLeft - 8.5 * toolsHeight - 12 + "px"; } diff --git a/libs/core.js b/libs/core.js index d853edbc..dc5ee70d 100644 --- a/libs/core.js +++ b/libs/core.js @@ -195,7 +195,6 @@ function core() { "toolsBackground": main.toolsBackground || "url(project/materials/ground.png) repeat", "borderColor": main.borderColor || "white", "statusBarColor": main.statusBarColor || "white", - "hardLabelColor": main.hardLabelColor || "red", "floorChangingBackground": main.floorChangingBackground || "black", "floorChangingTextColor": main.floorChangingTextColor || "white", "font": main.font || "Verdana" diff --git a/libs/events.js b/libs/events.js index 9add168b..694adc68 100644 --- a/libs/events.js +++ b/libs/events.js @@ -61,6 +61,7 @@ events.prototype._startGame_start = function (hard, seed, route, callback) { core.dom.musicBtn.style.display = 'block'; core.push(todo, core.firstData.startCanvas); } + core.push(todo, {"type": "function", "function": "function() { core.events._startGame_setHard(); }"}) core.push(todo, core.firstData.startText); this.insertAction(todo, null, null, function () { core.events._startGame_afterStart(nowLoc, callback); @@ -69,6 +70,22 @@ events.prototype._startGame_start = function (hard, seed, route, callback) { if (route != null) core.startReplay(route); } +events.prototype._startGame_setHard = function () { + // 根据难度设置flag:hard + // 这一段应当在startCanvas之后,startText之前做 + var hardValue = 0; + var hardColor = 'red'; + main.levelChoose.forEach(function (one) { + if (one.name == core.status.hard) { + hardValue = one.hard; + hardColor = core.arrayToRGBA(one.color || [255,0,0,1]); + core.insertAction(one.action); + } + }); + core.setFlag('hard', 0); + core.setFlag('__hardColor__', hardColor); +} + events.prototype._startGame_afterStart = function (nowLoc, callback) { core.ui.closePanel(); this._startGame_statusBar(); diff --git a/libs/maps.js b/libs/maps.js index 438d30f8..69491d9e 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1238,7 +1238,7 @@ maps.prototype._drawThumbnail_realDrawTempCanvas = function (floorId, blocks, op this.drawEvents(floorId, blocks, tempCanvas); // 缩略图:勇士 if (options.heroLoc) { - options.heroIcon = options.heroIcon || core.status.hero.image; + options.heroIcon = options.heroIcon || core.status.hero.image || 'hero.png'; options.heroIcon = core.getMappedName(options.heroIcon); var icon = core.material.icons.hero[options.heroLoc.direction]; var height = core.material.images.images[options.heroIcon].height / 4; diff --git a/libs/ui.js b/libs/ui.js index 204796d0..690f9984 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2636,7 +2636,7 @@ ui.prototype._drawSLPanel_drawRecord = function(title, data, x, y, size, cho, hi }); if (core.isPlaying() && core.getFlag("hard") != data.hero.flags.hard) { core.fillRect('ui', x-size/2, y+15, size, size, [0, 0, 0, 0.4], 2); - core.fillText('ui', data.hard, x, parseInt(y+22+size/2), core.dom.hard.style.color, this._buildFont(30,true)); + core.fillText('ui', data.hard, x, parseInt(y+22+size/2), data.hero.flags.__hardColor__ || 'red', this._buildFont(30,true)); } var v = core.formatBigNumber(data.hero.hp,true)+"/"+core.formatBigNumber(data.hero.atk,true)+"/"+core.formatBigNumber(data.hero.def,true); var v2 = "/"+core.formatBigNumber(data.hero.mdef,true); diff --git a/main.js b/main.js index 71421aca..3f51a8c7 100644 --- a/main.js +++ b/main.js @@ -203,15 +203,16 @@ main.prototype.init = function (mode, callback) { main.dom.startBackground.src = main.startBackground; main.dom.startLogo.style=main.startLogoStyle; main.dom.startButtonGroup.style = main.startButtonsStyle; - main.levelChoose.forEach(function(value){ + main.levelChoose = main.levelChoose || []; + main.levelChoose.forEach(function (value) { var span = document.createElement('span'); span.setAttribute('class','startButton'); - span.innerText=value[0]; + span.innerText=value.title || ''; (function(span,str_){ span.onclick = function () { core.events.startGame(str_); } - })(span,value[1]); + })(span,value.name||''); main.dom.levelChooseButtons.appendChild(span); }); main.createOnChoiceAnimation(); @@ -724,10 +725,9 @@ main.dom.playGame.onclick = function () { main.dom.startButtons.style.display='none'; main.core.control.checkBgm(); - if (main.core.isset(main.core.flags.startDirectly) && main.core.flags.startDirectly) { + if (main.levelChoose.length == 0) { core.events.startGame(""); - } - else { + } else { main.dom.levelChooseButtons.style.display='block'; main.selectedButton = null; main.selectButton(0); diff --git a/project/data.js b/project/data.js index 9e84f565..49707788 100644 --- a/project/data.js +++ b/project/data.js @@ -44,22 +44,29 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "startBackground": "project/images/bg.jpg", "startLogoStyle": "color: black", "levelChoose": [ - [ - "简单", - "Easy" - ], - [ - "普通", - "Normal" - ], - [ - "困难", - "Hard" - ], - [ - "噩梦", - "Hell" - ] + { + "title": "简单", + "name": "Easy", + "hard": 1, + "action": [ + { + "type": "comment", + "text": "在这里写该难度需执行的事件" + } + ] + }, + { + "title": "普通", + "name": "Normal", + "hard": 2, + "color": [ + 0, + 255, + 0, + 1 + ], + "action": [] + } ], "equipName": [ "武器", @@ -71,7 +78,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "toolsBackground": "url(project/materials/ground.png) repeat", "borderColor": "#CCCCCC", "statusBarColor": "white", - "hardLabelColor": "red", "floorChangingBackground": "black", "floorChangingTextColor": "white", "font": "Verdana", @@ -158,7 +164,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, { "type": "if", - "condition": "core.flags.startDirectly", + "condition": "main.levelChoose.length == 0", "true": [ { "type": "comment", @@ -172,7 +178,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, { "type": "function", - "function": "function(){\nvar choices = [];\nmain.levelChoose.forEach(function (one) {\n\tchoices.push({\n\t\t\"text\": one[0],\n\t\t\"action\": [\n\t\t\t{ \"type\": \"function\", \"function\": \"function() { core.status.hard = '\" + one[1] + \"'; }\" }\n\t\t]\n\t});\n})\ncore.insertAction({ \"type\": \"choices\", \"choices\": choices });\n}" + "function": "function(){\nvar choices = [];\nmain.levelChoose.forEach(function (one) {\n\tchoices.push({\n\t\t\"text\": one.title || '',\n\t\t\"action\": [\n\t\t\t{ \"type\": \"function\", \"function\": \"function() { core.status.hard = '\" + (one.name || '') + \"'; }\" }\n\t\t]\n\t});\n})\ncore.insertAction({ \"type\": \"choices\", \"choices\": choices });\n}" } ] }, @@ -219,7 +225,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, { "type": "if", - "condition": "!core.isReplaying()", + "condition": "(!core.isReplaying())", "true": [ { "type": "function", @@ -239,60 +245,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = } ], "startText": [ - { - "type": "comment", - "text": "根据难度分歧设置并给其他初始值" - }, - { - "type": "switch", - "condition": "core.status.hard", - "caseList": [ - { - "case": "'Easy'", - "action": [ - { - "type": "setValue", - "name": "flag:hard", - "value": "1" - }, - { - "type": "comment", - "text": "可以在这里修改初始道具或属性,比如赠送黄钥匙等" - } - ] - }, - { - "case": "'Normal'", - "action": [ - { - "type": "setValue", - "name": "flag:hard", - "value": "2" - } - ] - }, - { - "case": "'Hard'", - "action": [ - { - "type": "setValue", - "name": "flag:hard", - "value": "3" - } - ] - }, - { - "case": "'Hell'", - "action": [ - { - "type": "setValue", - "name": "flag:hard", - "value": "4" - } - ] - } - ] - }, { "type": "comment", "text": "初始剧情" @@ -499,7 +451,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "betweenAttackMax": false, "useLoop": false, "startUsingCanvas": false, - "startDirectly": false, "statusCanvas": false, "displayEnemyDamage": true, "displayCritical": true, diff --git a/project/functions.js b/project/functions.js index da5802df..cfa557c9 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1032,6 +1032,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 难度 core.statusBar.hard.innerText = core.status.hard; + core.statusBar.hard.style.color = core.getFlag('__hardColor__', 'red'); // 自定义状态栏绘制 core.drawStatusBar(); diff --git a/project/materials/animates.png b/project/materials/animates.png index e3b74ee96223657f806ec07f83bd5c633290fe56..01305fd67a20b69be859e161643fe688d4000c50 100644 GIT binary patch literal 35445 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
*GQks$N+z@OMn4^q2eGTcMR)A%^YLCE2=#( zpE+&wi;w4D6+EL@*iQ8S`2GYa0PFmUnyQM(Pm#SgJ?D{ITUMqLa+w=KL?|Z_IC3 zhJXN3IvTOkxM8Eyy$LLi zIyMrwqdNTZP|{LYdEIRE-$n;}#*2aZQnF_!)vs^?7yDuQz5rwgQFob#dvNyHb8V3P zJwJ!Jfb)c%l$3%i@Bib9{pXd1kZWtx7stj%q}hG*UKbciFq4howz-uAK&d zKhEW|%InhR6+^t&tNtb^KZQ)HvPZdg`pixK#_+BL=I}D@tf5N?cTFQ<-@(u~?Tf#0 z^AGx#pxm3}sHQzJQ5>}KZFT@#rTuiqR&ADXWuids&+516wE2RmP-&&l=RWIIBMHhn z7`)an=S9<{;T^jrnFDpivjU5jf}`|d#5?Cj|H@{zmv305$i?O5a{_}$FwuAF*)Gjs z2k8~>(3Sl2(LqAD1)Y;?sFM+bzA)k%YGU0%Q!>tdpRsEG$Cu`RJ}#aRKR+mmAP;g{ z=BnvH%fM?C2kot(?$W(!pZ^#wnSll9>F-z8q3AyHwb>j!1OyDlze8WH3iM;tCud+R z9;%NxVR8SQm4?Y|l$X0CF!l*-VuoA`Y$G*)*NeY$X_j$Jz z5icdMFz+v&cSgA$lt;IWV${op0y{F>3A&aK%9Cfuv4#%6I|wT%Sop{PT1==2Xm|+p zcj_bvbXro9^wl3Xoil?lptBB*o5rB2@1UtuEiDk|2Nhh$F&GDUN%ve_cCq{))mKnng>Iu(ue*eOv`hvE{(|R|_T7`R5bA(#(_?f&P{|NgOqM613xu$x> zh3>DGFvQ%#&~qrZeWb(;vcB&V7>W{9KG@O|ev{P+aeX{EEuoxebn&EP9^ZB)CC|nr zadQ!5q@cn?H~@G#7jQk6kdgrRmD}s)sUw7KJL};Lc%*rJ&2T@UnH=j_Oc;-^gJwMN zzPj=~`DQ&BlK_`602q5>5y|<>pHL*g4XM6S=s&8h!WE{(@{iItWK-`mS4fqIfIQ5- z9}fnS=uwgyDH`D-Wt5jSU&3S_<@fKm?v!3{>>u+Nhi^f19k>lED!u0xz}IOcnZPy7DN)h zfcz{b2M=7iQp1E$2X`Pdi9lfx)fwue2*mpmG{}`36F1-<& zbNE8tNLG2_E6Cus%AC*$qrD%F?9FPt8(iI19#8qP)ygWGQn9JfLfjX^P5quKYF7h^ zo@T}#{rB7DEf%d!5=XrG2N>Zo`-LM?GfpuTF|7o{f!c-D^}C-QrS|6Ya`Ughs!=qI ztWX-3GL%f+$5?Cc5lOhDt$5$JuQ~|I_u8B#jhg+CzzDgdd9_t%5yljy^UMc98D_<{ zQ&LcCM-_F2jso7d|IPzO75L>vh4Q~VoX^!h8T5WG+NRI1@R;j)s)P0?*{pf1j9&uU z|KqVVAm50y+Vx@@lyCj-`#sjQI8(K3;CBpwyr_pyksW=HzNY-n59Wz{85-OPdWL^O z2vmHG^+`K>tK8ErE-Xy(gMHA2NTw8W#VGP;e;WQeuq(Rx{|JG|Tgk>Kc)Vc{46GqWJ%WlO7?^NkC6DQkI$5z4q!hO4epNC5=i+xe z3b>-tSPPM)d@5M?fXH@J*Js%ov&0R4T6}YSu(;schdTFSpvE{Mw12oouXlE6J(T+$ z6bqI@gw=zH9-dSTKM6N;NertW`S=~`-uW`P)(1E+;stN;6Gg3@;C|e8U6Njqka&y= z>>UByX*>TjQO>ZtbH^&SjwcIpi~-fu+&OlS{LB7EWxL-cV? z;Gz~ng@q9MCn;NEVwf}Pd%jo{leWoF-|>|kL#NscRN}I~^?~)&ax;o6AXlf)lC%9Z z^+z}|9|JhHNJ^gHbGV7 zFFY=G45;94iWwgNmbVoeaC@Gg@S1~1h7l`b%}-%x^gTA;wQP`Ni|u0Hpn)z!Vjxl6 z`Z#Tx-KG$M!@shvt)}tMig8zcUM~OXcuW#{t!;Xd=lwJFdCEmFC6v)-Rfx>two++h zYograiNoeG7`&}BX5(O>qVJ!Bcx@VYWDuvccZ{oUa@+e@>fy-~JIU+0Og|*gw9HLI zp({$N-<2ez3ep_7JD@=bu9=-3t-(qqo{;ck;6|`dhSr{dr9?A$FpoG;p=#bl6TFdM zqnNTq=Q_QlEO}zSC*qHS|OMHNu9v2NU1>HOD{a4Sl%X;g)oaHKb`jpA8%Oz+%fh z`fT|%BLF}^q@k>+|DA~8b{}#uQ_K3%)+u#W2)$H(OBWxC0z1A`S@CyoC{&&q{rC>f z7>f0*Cv-hZ@@I>m1Cg7e`Uh!G^jszUf#%hvn61zn;mqcI%L(L6Pm)YQSg<6pF8 zbkLR%5|!1(kqqQ(u%{c^pp)ipEVZ8-eQ0K6wzty%&O45}SrO;`r^TsHA^t%UAh;Iw zD=IoJ1s?D18ZrjrB*Wmp$Xj#2g9{LxHz4`?9wYF}C6=B%WQT8%>~MS;f3wZudixr^ zFT_sMFz%ZfpsE0hh$=Mm{yZoQ&V6xqjm6Et?AoBFzlxP}f8KCJc|eIOoTyAAQI>`b z_l=(+0Uj~!)kA2}_gQXTomePFV|iC13cHz@2|N(7$9kAhc;P6a4s1(ie zGR0&Py=ZC=kxV;B0yJ*VtvF7N@HcIAr~NkG=^1WvZR&W9cOnA*Rg9Z6qA%z?>=a3~X>&xC=J0z~&!ZjAVA_bIjV^s*V%kY$JZ?u3ks_P+G ze3?X7nYP&#RV&cd%%a>E42EErXMu@hyIG18khfj^%i}wDE~}6$fxk@Incq-3w|oVH zp$rp~Slmq4ybF2D@rZ!Qk!2FlAFR1~qoywKvOB9AE1OvxWA!`=q5SR=@DNcm-stlA zwx(r)W<XPM%cgHL_ zWVSHFtG>(=%;eu7w^I%i6Fc&b5I(RU*zpE7m4%!^MCd(KHot>@)X-z@UA-{Bjga-N z2tNk+BtH9xzXo|TuUc|TF4~TBS}V~WmSeaT3ruhLY z%?w3zf!pH8kt;}(hj9ibS6Qg@AotN7ujsOw9-A{^&(9w|wI)nS0M+9&`f%BvnH;Z` z0yTGxvzk*ruX*l;nXd1CV^5_p7q(zeK~?+BO977>xMnbZ;tcg_@0S>+k%_gy#~ zgK?uzDuv!_0RUw5?+JfqTXc{A{L<P;9$#|;< z_2~`jbzZohmxOuw3&^+=NA~=T^;rP`VJ$kN;l>g`X_|Qnf&d6(i&QXfjHf`vp4Gjz z1mLx(`(QjiwjIs4cv(s^Q=MdXLjzuO|u@LXD-JJ zy}Q>q*2zp4(O%SOZzn-G^))^o_$0-n_hQ#rSmEzgCZUz{cJ^$&bPoegukrlB)Xt(8 zD0Cp`p{o@FID;!zS#fngx503anw7`0*c{81!NtJDhczjXbYE3pg|{(Fy~>w-6)I#M zzH&P6`~FRI06{sWuNgaPSLnmdV#^AV=-@2o$#*XyfA1bC;cgd-_d$By)ZBoFYav1Y zK}=cIjGzR=qC9DNLIZ%KuE1O@xU^Y_=(B=+2mJ-U31f})`SLhD6AtxK+xooflXfpg zP}PhJmOCC=4!46C{CU=1KRdUilL79tP!V}Zj+NK{3R4BF`hRzgWGkOJF$@7<_VhW7 zZQF{`yXX91%@5ifF9*N{aQ4)@U|it7FKzH|ID29p1km~KV*nh%ki#2NE|FysPnAQ$pgOeAHwf=j_8G?Ln2j>7euv$^R7wEMYK5T}qcU}XD zQB0qn^&{hVU%J|K;GJeyiXEC;I6ytZ#`$3uD4B*uE2nWEcOiq3hXy)|05D*yKF$##~ zSwPXMK-M;<*T=7W9>Vsz(pKTOX8Hv8<^sTMFFV+(5IJYyjkTTKums2QBiGyiIvdj+ z%V@nme%)cqWnEi$E_bPNeqj6)xA-k)x|M*D6G8%n`+j%CUoA9qVi>H|{mL$T=8gBj zxZ|HEAI1L9UtRRim6cE*zuxeJz$gS;+Ss;HKZ3sRw{KWJhXcY9m^rx)GpAM*ML%xQ;M>#gQKTU--+dwGKh{SRku5+Zs0k_>(*`Xqr8~76Pq8c;h{9 zwy)K-E*FxwOib9`>Z0kB!`?B@ym(JAZyW{y7Fac;F@N2#$L^j3gg4bYy6xk5`_wFc zen&t&2oU7If9K>dKn`x(F}fUyx4PCJ{mo_E_oW+`R}P6*lrDr^WW2n#!1eAisyTn% z;BW|B5XSEIR`)R8+A}UKw!IZYvL$T2YaW0XO}}$;*cS+!LA2Bfc+t2N`=h_PZ@Ylz0TfB407k3D9p_mL*#_sl(g}2Sx3Ffcxk(fQP z4rAL!F?;$P1oyU(`7?7ZVH^z8C%kQ9hQD5Z+XXOva@ZROh4d7{KRtg1U^dR4n#JwE zINI9Z$31cmz!8{jC12WR+qgHz$=Nn5nC)vBKYh~6*@M|I{Pps)AAb2AlB;&*jY!CD z#2dH9wvBr8@hxwgIkC>qt;-Bu82=;05?sF*yWha@SH{my{xMN7<0Z!-I0O!cnG?hQ>fa!O88jJC z0N!2#ZzBk6o7s~%+uA!QBj)i>+ycX2AOHUcr%wn&cph(900000NkvXXu0mjfUZBEB literal 35375 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 diff --git a/runtime.d.ts b/runtime.d.ts index 013a574b..ee8de756 100644 --- a/runtime.d.ts +++ b/runtime.d.ts @@ -221,7 +221,6 @@ type gameStatus = { toolsBackground: string borderColor: string statusBarColor: string - hardLabelColor: string floorChangingBackground: string floorChangingTextColor: string font: string diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 540ae267..acd4a0bc 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -56,8 +56,8 @@ 合并items.js (已完成!) 增加fonts目录,全塔属性增加fonts引用 (已完成!) 右边框输入完后解析按钮高亮 -32x48的门 -难度分歧的图块(颜色,含SL界面) +(已完成!) 32x48的门 +(已完成!) 难度分歧的图块(颜色,含SL界面) 装备同时加属性和比例 ------------- From 53b95ab199c8387a17bae2b1007b8f58a528939f Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 13:02:56 +0800 Subject: [PATCH 32/80] =?UTF-8?q?=E6=94=AF=E6=8C=81npc48=E7=9A=84=E5=85=B3?= =?UTF-8?q?=E9=97=A8=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/events.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libs/events.js b/libs/events.js index 694adc68..7c5fc405 100644 --- a/libs/events.js +++ b/libs/events.js @@ -493,7 +493,7 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { events.prototype._openDoor_animate = function (id, x, y, callback) { var blockInfo = core.getBlockInfo(id); - var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height; + var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; var speed = 40; @@ -2599,7 +2599,8 @@ events.prototype.setGlobalFlag = function (name, value) { events.prototype.closeDoor = function (x, y, id, callback) { id = id || ""; - if (core.material.icons.animates[id] == null || core.getBlock(x, y) != null) { + if ((core.material.icons.animates[id] == null && core.material.icons.npc48[id] == null) + || core.getBlock(x, y) != null) { if (callback) callback(); return; } @@ -2611,19 +2612,23 @@ events.prototype.closeDoor = function (x, y, id, callback) { // 关门动画 core.playSound(doorInfo[2] || 'door.mp3'); - var door = core.material.icons.animates[id]; + var blockInfo = core.getBlockInfo(id); + var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; + var speed = 40, state = 0; var animate = window.setInterval(function () { state++; if (state == 4) { clearInterval(animate); delete core.animateFrame.asyncId[animate]; - core.setBlock(core.getNumberById(id), x, y); + core.setBlock(id, x, y); if (callback) callback(); return; } core.clearMap('event', 32 * x, 32 * y, 32, 32); - core.drawImage('event', core.material.images.animates, 32 * (4-state), 32 * door, 32, 32, 32 * x, 32 * y, 32, 32); + core.drawImage('event', image, 32 * (4-state), posY * height + height - 32, 32, 32, x * 32, y * 32, 32, 32); + if (height > 32) + core.drawImage('event2', image, 32 * (4-state), posY * height, 32, height - 32, x * 32, y * 32 + 32 - height, 32, height - 32); }, core.status.replay.speed == 24 ? 1 : speed / Math.max(core.status.replay.speed, 1)); core.animateFrame.asyncId[animate] = true; } From b45afe0ae4c3263a9d006c9ee5210a6557c15e05 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 13:09:35 +0800 Subject: [PATCH 33/80] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=BC=80=E9=97=A8?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/table/comment.js | 2 +- libs/events.js | 8 ++++---- project/maps.js | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/_server/table/comment.js b/_server/table/comment.js index c6c622ea..702e54a8 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -338,7 +338,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "textarea", "_docs": "门信息", - "_data": "该图块的门信息,是一个三元数组。\n第一项为所需要的钥匙信息,第二项为开此门时的音效,第三项为关此门时的音效。仅对animates生效。" + "_data": "该图块的门信息,是一个四元数组。\n第一项为所需要的钥匙信息,第二项为开关门的毫秒数,第三项为开此门时的音效,第四项为关此门时的音效。仅对animates生效。" }, "faceIds": { "_leaf": true, diff --git a/libs/events.js b/libs/events.js index 7c5fc405..ce13f142 100644 --- a/libs/events.js +++ b/libs/events.js @@ -487,7 +487,7 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { core.removeItem(keyName, keyInfo[keyName]); } } - core.playSound(doorInfo[1] || 'door.mp3'); + core.playSound(doorInfo[2] || 'door.mp3'); return true; } @@ -495,7 +495,7 @@ events.prototype._openDoor_animate = function (id, x, y, callback) { var blockInfo = core.getBlockInfo(id); var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; - var speed = 40; + var speed = (core.getBlockById(id).event.doorInfo[1] || 160) / 4; var locked = core.status.lockControl; core.lockControl(); @@ -2611,11 +2611,11 @@ events.prototype.closeDoor = function (x, y, id, callback) { } // 关门动画 - core.playSound(doorInfo[2] || 'door.mp3'); + core.playSound(doorInfo[3] || 'door.mp3'); var blockInfo = core.getBlockInfo(id); var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; - var speed = 40, state = 0; + var speed = (doorInfo[1] || 160) / 4, state = 0; var animate = window.setInterval(function () { state++; if (state == 4) { diff --git a/project/maps.js b/project/maps.js index 7d297646..09a10db7 100644 --- a/project/maps.js +++ b/project/maps.js @@ -1,8 +1,8 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = { - "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":[null,"door.mp3","door.mp3"]}, - "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":[null,"door.mp3","door.mp3"]}, - "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":[null,"door.mp3","door.mp3"]}, + "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, + "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, + "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, "4": {"cls":"animates","id":"star","name":"星空"}, "5": {"cls":"animates","id":"lava","name":"岩浆"}, "6": {"cls":"terrains","id":"ice"}, @@ -68,12 +68,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "71": {"cls":"items","id":"shield0"}, "72": {"cls":"items","id":"skill1"}, "73": {"cls":"items","id":"wand"}, - "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":[{"yellowKey":1},"door.mp3","door.mp3"],"name":"黄门"}, - "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":[{"blueKey":1},"door.mp3","door.mp3"],"name":"蓝门"}, - "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":[{"redKey":1},"door.mp3","door.mp3"],"name":"红门"}, - "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":[{"greenKey":1},"door.mp3","door.mp3"],"name":"绿门"}, - "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":[null,"door.mp3","door.mp3"],"name":"机关门"}, - "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":[{"steelKey":1},"door.mp3","door.mp3"],"name":"铁门"}, + "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":[{"yellowKey":1},160,"door.mp3","door.mp3"],"name":"黄门"}, + "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":[{"blueKey":1},160,"door.mp3","door.mp3"],"name":"蓝门"}, + "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":[{"redKey":1},160,"door.mp3","door.mp3"],"name":"红门"}, + "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":[{"greenKey":1},160,"door.mp3","door.mp3"],"name":"绿门"}, + "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"],"name":"机关门"}, + "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":[{"steelKey":1},160,"door.mp3","door.mp3"],"name":"铁门"}, "87": {"cls":"terrains","id":"upFloor","canPass":true}, "88": {"cls":"terrains","id":"downFloor","canPass":true}, "89": {"cls":"animates","id":"portal","canPass":true}, From 91e4e40fc0fc7894d3b0907b64dbb51a9c4db29d Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 14:00:57 +0800 Subject: [PATCH 34/80] =?UTF-8?q?=E8=BD=AC=E5=8F=98=E5=9B=BE=E5=9D=97?= =?UTF-8?q?=E5=B8=A6=E6=B7=A1=E5=85=A5=E6=B7=A1=E5=87=BA=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=92=8C=E5=BC=82=E6=AD=A5=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 8 ++-- _server/MotaActionParse.js | 2 +- libs/events.js | 14 ++++-- libs/maps.js | 97 ++++++++++++++++++++++++++++++++++++++ v2.x-final更新.txt | 5 +- 5 files changed, 116 insertions(+), 10 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index ca76409d..9dfa9686 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -848,14 +848,14 @@ return code; */; setBlock_s - : '转变图块为' EvalString 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? Newline + : '转变图块为' EvalString 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' IntString? '不等待执行完毕' Bool Newline /* setBlock_s tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 colour : this.mapColor -default : ["yellowDoor","","",""] +default : ["yellowDoor","","","","",false] var floorstr = ''; if (EvalString_1 && EvalString_2) { var pattern1 = MotaActionFunctions.pattern.id; @@ -874,7 +874,9 @@ if (EvalString_1 && EvalString_2) { floorstr = ', "loc": ['+EvalString_1.join(',')+']'; } IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); -var code = '{"type": "setBlock", "number": "'+EvalString_0+'"'+floorstr+IdString_0+'},\n'; +IntString_0 = IntString_0 && (', "time": ' + IntString_0); +Bool_0 = Bool_0 ? (', "async": true') : ''; +var code = '{"type": "setBlock", "number": "'+EvalString_0+'"'+floorstr+IdString_0+IntString_0+Bool_0+'},\n'; return code; */; diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 5654bd52..b961eec6 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -222,7 +222,7 @@ ActionParser.prototype.parseAction = function() { y_str.push(t[1]); }) this.next = MotaActionBlocks['setBlock_s'].xmlText([ - data.number||0,x_str.join(','),y_str.join(','),data.floorId||'',this.next]); + data.number||0,x_str.join(','),y_str.join(','),data.floorId||'',data.time,data.async||false,this.next]); break; case "turnBlock": // 事件转向 data.loc=data.loc||[]; diff --git a/libs/events.js b/libs/events.js index ce13f142..8d366adc 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1306,10 +1306,16 @@ events.prototype._action_hide = function (data, x, y, prefix) { events.prototype._action_setBlock = function (data, x, y, prefix) { data.loc = this.__action_getLoc2D(data.loc, x, y, prefix); - data.loc.forEach(function (t) { - core.setBlock(data.number, t[0], t[1], data.floorId); - }); - core.doAction(); + data.time = data.time || 0; + data.floorId = data.floorId || core.status.floorId; + if (data.time > 0 && data.floorId == core.status.floorId) { + this.__action_doAsyncFunc(data.async, core.animateSetBlocks, data.number, data.loc, data.floorId, data.time); + } else { + data.loc.forEach(function (loc) { + core.setBlock(data.number, loc[0], loc[1], data.floorId); + }); + core.doAction(); + } } events.prototype._action_turnBlock = function (data, x, y, prefix) { diff --git a/libs/maps.js b/libs/maps.js index 69491d9e..a2477497 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1638,6 +1638,103 @@ maps.prototype.setBlock = function (number, x, y, floorId) { } } +maps.prototype.animateSetBlock = function (number, x, y, floorId, time, callback) { + floorId = floorId || core.status.floorId; + time = time || 0; + if (floorId != core.status.floorId || time == 0) { + // 不在当前楼层,直接忽略 + this.setBlock(number, x, y, floorId); + if (callback) callback(); + return; + } + if (typeof number == 'string') { + if (/^\d+$/.test(number)) number = parseInt(number); + else number = core.getNumberById(number); + } + var originBlock = core.getBlock(x, y, floorId, true); + var block = this.initBlock(x, y, number, true, core.floors[floorId]); + + // 如果原本是启用的 + if (originBlock != null && !originBlock.block.disable) { + return this._animateSetBlock_originEnabled(block, number, x, y, floorId, time, callback); + } + + // 如果原本不存在 + if (originBlock == null) { + return this._animateSetBlock_originNotExists(block, number, x, y, floorId, time, callback); + } + + // 如果原本存在且禁用;应当直接设置,没有动画 + if (originBlock != null && originBlock.block.disable) { + return this._animateSetBlock_originDisabled(number, x, y, floorId, callback); + } + if (callback) callback(); +} + +maps.prototype._animateSetBlock_originEnabled = function (block, number, x, y, floorId, time, callback) { + // 情况1:设置到0 + if (block.id == 0) { + // 如果该点红点没有事件 - 直接删除 + if (!block.event.trigger) { + return this.animateBlock([x, y], 'remove', time, callback); + } else { + // 如果该点红点有事件;则设置到0,但是需启用 + return this.animateBlock([x, y], 'hide', time, function () { + core.setBlock(0, x, y, floorId); + core.showBlock(x, y, floorId); + if (callback) callback(); + }); + } + } + // 情况2:设置到非0 + else { + return this.animateBlock([x, y], 'hide', time / 2, function () { + core.setBlock(number, x, y, floorId); + core.animateBlock([x, y], 'show', time / 2, callback); + }) + } +} + +maps.prototype._animateSetBlock_originNotExists = function (block, number, x, y, floorId, time, callback) { + // 情况1:设置到0;没有动画效果 + if (block.id == 0) { + core.setBlock(number, x, y, floorId); + if (callback) callback(); + } + else { + // 情况2:设置到非0,有淡入动画 + core.setBlock(number, x, y, floorId); + core.hideBlock(x, y, floorId); + core.animateBlock([x, y], 'show', time, callback); + return; + } +} + +maps.prototype._animateSetBlock_originDisabled = function (number, x, y, floorId, callback) { + core.setBlock(number, x, y, floorId); + if (callback) callback(); +} + +maps.prototype.animateSetBlocks = function (number, locs, floorId, time, callback) { + if (!(locs instanceof Array)) { + if (callback) callback(); + return; + } + if (typeof locs[0] == 'number' && typeof locs[1] == 'number') + locs = [locs]; + + var count = locs.length; + var _afterSet = function () { + count--; + if (count == 0) { + if (callback) callback(); + } + } + locs.forEach(function (loc) { + core.animateSetBlock(number, loc[0], loc[1], floorId, time, _afterSet); + }); +} + ////// 事件转向 ////// maps.prototype.turnBlock = function (direction, x, y, floorId) { var id = core.getBlockId(x, y, floorId, true); diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index acd4a0bc..19e78220 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -8,7 +8,7 @@ (已完成!) 7. 建议把core.playBgm(bgm, startTime)的startTime参数在事件中也提供出来,以用于一些演出(比如适当的剧情处直接从高潮开始)。同理可以让“暂停背景音乐”记录下当前播放到了第几秒,并在“恢复背景音乐”中自动从这个秒数恢复。作者还可以手动配合音量渐变效果 (已完成!) 8. 系统设置菜单中“音量”和“步时”的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化 (已完成!) 9. 建议给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些如新新2的QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支 -10. 建议给“转变图块”事件增加一个淡入时间参数,用于原本是空地或空气墙的情况,目前这种效果必须借助存在安全隐患的红点 +(已完成!) 10. 建议给“转变图块”事件增加一个淡入时间参数,用于原本是空地或空气墙的情况,目前这种效果必须借助存在安全隐患的红点 (已完成!) 11. 建议修复勇士后退时跟随者的鬼畜行为,并推出一套能够对跟随者位置和朝向进行读写的API甚至事件,且允许这些信息被计入存档,以实现一些演出效果甚至游戏要素,如新新2用公主占位防冰块 (已完成!) 12. “设置怪物属性”事件的下拉框目前只支持一部分,另一部分只能通过手敲json再解析来得到,希望提供完整支持 (已完成!) 13. 建议给core.moveAction(callback)提供对应的事件,用于在事件中让勇士像事件外一样移动,从而正常触发跑毒和阻激夹域捕等 @@ -49,6 +49,7 @@ (已完成!) 素材列表选择 (已完成!) 油漆桶,动态更改地图大小 地图拉框选择复制剪切删除 +额外素材区拖动选择一个区域 (已完成!) 素材替换 大屏幕下放大游戏界面 (已完成!) 最近使用/最常使用的图块 @@ -116,7 +117,7 @@ (已修复!) 49. 系统设置菜单中音量和步时的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化 (不处理) 50. 建议给录像播放时的N键提供一个对应的移动端操作,以方便移动端作者 (已完成!) 51. 希望给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支 -52. 希望给“转变图块”加一个淡入时间参数(显隐和转变图层块也希望加个淡入淡出时间参数,图层块也希望提供移动和跳跃事件),专门用于原本是空地或空气墙的情况。目前要实现这样的效果必须使用红点,然而红点有着“推箱子、阻击、捕捉、重生、炸锤和afterXxx事件”的系列问题,且会导致core.removeBlock()(隐藏事件)退化为core.hideBlock() +(已完成!) 52. 希望给“转变图块”加一个淡入时间参数(显隐和转变图层块也希望加个淡入淡出时间参数,图层块也希望提供移动和跳跃事件),专门用于原本是空地或空气墙的情况。目前要实现这样的效果必须使用红点,然而红点有着“推箱子、阻击、捕捉、重生、炸锤和afterXxx事件”的系列问题,且会导致core.removeBlock()(隐藏事件)退化为core.hideBlock() (不处理) 53. 希望“移动事件”的移速和淡出速度拆开成两个参数,目前这样捆绑在一起不太自由 (已完成) 54. 建议把图块属性的noPass改为勾选框而不是下拉框,因为null一定表示不可通行(道具根本没有noPass) (不处理,可以转变图块) 55. “移动事件”和“跳跃事件”会导致本来勾选了不显伤的怪物突然有了显伤,非常难看,建议优化 From fa61c25cf8bba4fd5ab65640d9a989f2d53311d2 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 14:24:08 +0800 Subject: [PATCH 35/80] highlight savefloor button --- _server/editor.js | 1 + _server/editor_mappanel.js | 17 +++++++++++++++++ _server/editor_ui.js | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/_server/editor.js b/_server/editor.js index 31d1f954..4717dbdb 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -282,6 +282,7 @@ editor.prototype.changeFloor = function (floorId, callback) { editor.viewportLoc = editor.viewportLoc || {}; var loc = editor.viewportLoc[floorId] || [], x = loc[0] || 0, y = loc[1] || 0; editor.setViewport(x, y); + editor.uifunctions.unhighlightSaveFloorButton(); editor.config.set('editorLastFloorId', floorId, function() { if (callback) callback(); diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index f6c7687c..3c8c86e1 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -274,6 +274,7 @@ editor_mappanel_wrapper = function (editor) { editor.uivalues.holdingPath = 0; editor.uivalues.stepPostfix = []; editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); + editor.uifunctions.highlightSaveFloorButton(); } return false; } @@ -465,6 +466,7 @@ editor_mappanel_wrapper = function (editor) { editor.drawEventBlock(); editor_mode.showMode('loc'); printf('添加楼梯事件成功'); + editor.uifunctions.unhighlightSaveFloorButton(); }); return true; } @@ -525,6 +527,7 @@ editor_mappanel_wrapper = function (editor) { editor.drawPosSelection(); editor_mode.showMode('loc'); printf('绑定机关门事件成功'); + editor.uifunctions.unhighlightSaveFloorButton(); }); bindSpecialDoor.loc = null; bindSpecialDoor.enemys = []; @@ -577,6 +580,7 @@ editor_mappanel_wrapper = function (editor) { throw (err) } ; printf('复制事件成功'); + editor.uifunctions.unhighlightSaveFloorButton(); editor.drawPosSelection(); }); } @@ -591,6 +595,7 @@ editor_mappanel_wrapper = function (editor) { editor.savePreMap(); editor_mode.onmode(''); editor.exchangePos(editor.pos, editor.uivalues.lastRightButtonPos[1]); + editor.uifunctions.unhighlightSaveFloorButton(); } /** @@ -600,6 +605,7 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.clearEvent_click = function (e) { e.stopPropagation(); editor.clearPos(false); + editor.uifunctions.unhighlightSaveFloorButton(); } /** @@ -609,6 +615,7 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.clearLoc_click = function (e) { e.stopPropagation(); editor.clearPos(true); + editor.uifunctions.unhighlightSaveFloorButton(); } /** @@ -765,6 +772,15 @@ editor_mappanel_wrapper = function (editor) { }); } + editor.uifunctions.highlightSaveFloorButton=function(){ + var saveFloor = document.getElementById('saveFloor'); + saveFloor.style.background='#FFCCAA'; + } + + editor.uifunctions.unhighlightSaveFloorButton=function(){ + var saveFloor = document.getElementById('saveFloor'); + saveFloor.style.background=''; + } editor.uifunctions.saveFloor_func = function () { var saveFloor = document.getElementById('saveFloor'); @@ -776,6 +792,7 @@ editor_mappanel_wrapper = function (editor) { throw (err) } ; printf('保存成功'); + editor.uifunctions.unhighlightSaveFloorButton() }); } saveFloor.onclick = editor_mode.saveFloor; diff --git a/_server/editor_ui.js b/_server/editor_ui.js index cc9588ed..c316d200 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -318,6 +318,7 @@ editor_ui_wrapper = function (editor) { editor.bgmap = JSON.parse(JSON.stringify(data.bgmap)); editor.updateMap(); editor.uivalues.postMapData.push(data); + editor.uifunctions.highlightSaveFloorButton(); printf("已撤销此操作,你可能需要重新保存地图。"); } return; @@ -332,6 +333,7 @@ editor_ui_wrapper = function (editor) { editor.bgmap = JSON.parse(JSON.stringify(data.bgmap)); editor.updateMap(); editor.uivalues.preMapData.push(data); + editor.uifunctions.highlightSaveFloorButton(); printf("已重做此操作,你可能需要重新保存地图。"); } return; @@ -349,6 +351,7 @@ editor_ui_wrapper = function (editor) { editor.uivalues.copyedInfo = editor.copyFromPos(); editor.clearPos(true, null, function () { printf('该点事件已剪切'); + editor.uifunctions.unhighlightSaveFloorButton(); }) return; } @@ -366,6 +369,7 @@ editor_ui_wrapper = function (editor) { throw (err) } ; printf('粘贴事件成功'); + editor.uifunctions.unhighlightSaveFloorButton(); editor.drawPosSelection(); }); return; @@ -373,6 +377,7 @@ editor_ui_wrapper = function (editor) { // DELETE if (e.keyCode == 46 && !selectBox.isSelected()) { editor.clearPos(true); + editor.uifunctions.unhighlightSaveFloorButton(); return; } // ESC From eca70afcc4abcc7451db55a2a9a95dfc8dd90cc9 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 16:27:32 +0800 Subject: [PATCH 36/80] fix missing in exchangePos --- _server/editor_mappanel.js | 1 + 1 file changed, 1 insertion(+) diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 3c8c86e1..93d57fed 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -202,6 +202,7 @@ editor_mappanel_wrapper = function (editor) { editor.exchangeBgFg(editor.uivalues.startPos, editor.uivalues.endPos, editor.layerMod); editor.uivalues.startPos = editor.uivalues.endPos = null; editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); + editor.uifunctions.unhighlightSaveFloorButton(); return false; } editor.uivalues.holdingPath = 0; From 1567b736e1dc6d70bccce6f4502b235f9f646ace Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 17:00:18 +0800 Subject: [PATCH 37/80] show/hideHero with time --- _server/MotaAction.g4 | 14 +++++++--- _server/MotaActionParse.js | 4 +-- libs/control.js | 54 ++++++++++++++++++++++++++++++++++---- libs/events.js | 22 +++++++++++----- v2.x-final更新.txt | 2 +- 5 files changed, 78 insertions(+), 18 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 9dfa9686..725b71f4 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -1123,26 +1123,32 @@ return code; */; showHero_s - : '显示勇士' Newline + : '显示勇士' '动画时间' IntString? '不等待执行完毕' Bool Newline /* showHero_s tooltip : showHero: 显示勇士 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showHero%3a+%e6%98%be%e7%a4%ba%e5%8b%87%e5%a3%ab +default : ['',false] colour : this.soundColor -var code = '{"type": "showHero"},\n'; +IntString_0 = IntString_0 && (', "time": ' + IntString_0); +Bool_0 = Bool_0 ? (', "async": true') : ''; +var code = '{"type": "showHero"'+IntString_0+Bool_0+'},\n'; return code; */; hideHero_s - : '隐藏勇士' Newline + : '隐藏勇士' '动画时间' IntString? '不等待执行完毕' Bool Newline /* hideHero_s tooltip : hideHero: 隐藏勇士 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideHero%ef%bc%9a%e9%9a%90%e8%97%8f%e5%8b%87%e5%a3%ab +default : ['',false] colour : this.soundColor -var code = '{"type": "hideHero"},\n'; +IntString_0 = IntString_0 && (', "time": ' + IntString_0); +Bool_0 = Bool_0 ? (', "async": true') : ''; +var code = '{"type": "hideHero"'+IntString_0+Bool_0+'},\n'; return code; */; diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index b961eec6..3a639310 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -654,11 +654,11 @@ ActionParser.prototype.parseAction = function() { break; case "showHero": this.next = MotaActionBlocks['showHero_s'].xmlText([ - this.next]); + data.time, data.async||false, this.next]); break; case "hideHero": this.next = MotaActionBlocks['hideHero_s'].xmlText([ - this.next]); + data.time, data.async||false, this.next]); break; case "sleep": // 等待多少毫秒 this.next = MotaActionBlocks['sleep_s'].xmlText([ diff --git a/libs/control.js b/libs/control.js index 226165ac..381584ee 100644 --- a/libs/control.js +++ b/libs/control.js @@ -783,17 +783,61 @@ control.prototype.drawHero = function (status, offset) { core.status.heroCenter.py = 32 * y + offsetY + 32 - core.material.icons.hero.height / 2; if (!core.hasFlag('hideHero')) { - this._drawHero_getDrawObjs(direction, x, y, status, offset).forEach(function (block) { - core.drawImage('hero', block.img, block.heroIcon[block.status]*block.width, - block.heroIcon.loc * block.height, block.width, block.height, - block.posx+(32-block.width)/2, block.posy+32-block.height, block.width, block.height); - }); + this._drawHero_draw(direction, x, y, status, offset); } core.control.updateViewport(); core.setGameCanvasTranslate('hero', 0, 0); } +control.prototype._drawHero_draw = function (direction, x, y, status, offset) { + this._drawHero_getDrawObjs(direction, x, y, status, offset).forEach(function (block) { + core.drawImage('hero', block.img, block.heroIcon[block.status]*block.width, + block.heroIcon.loc * block.height, block.width, block.height, + block.posx+(32-block.width)/2, block.posy+32-block.height, block.width, block.height); + }); +} + +control.prototype.triggerHero = function (type, time, callback) { + if (type == null) { + type = core.hasFlag('hideHero') ? 'show' : 'hide'; + } + if ((core.hasFlag('hideHero') && type != 'show') || (!core.hasFlag('hideHero') && type != 'hide')) { + if (callback) callback(); + return; + } + if (type == 'show') core.removeFlag('hideHero'); + else core.setFlag('hideHero', true); + + time = time || 0; + if (time == 0) { + core.drawHero(); + if (callback) callback(); + return; + } + time /= Math.max(core.status.replay.speed, 1) + this._triggerHero_animate(type, 10 / time, callback); +} + +control.prototype._triggerHero_animate = function (type, delta, callback) { + var opacity = type != 'show' ? 1 : 0; + var animate = setInterval(function () { + opacity += type != 'show' ? -delta : delta; + core.clearMap('hero'); + core.setAlpha('hero', opacity); + core.control._drawHero_draw(core.getHeroLoc('direction'), core.getHeroLoc('x'), core.getHeroLoc('y'), 'stop', 0); + core.setAlpha('hero', 1); + if (opacity >= 1 || opacity <= 0) { + delete core.animateFrame.asyncId[animate]; + clearInterval(animate); + core.drawHero(); + if (callback) callback(); + } + }, 10); + + core.animateFrame.asyncId[animate] = true; +} + control.prototype._drawHero_getDrawObjs = function (direction, x, y, status, offset) { var heroIconArr = core.material.icons.hero, drawObjs = [], index = 0; drawObjs.push({ diff --git a/libs/events.js b/libs/events.js index 8d366adc..3e2e46f6 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2011,15 +2011,25 @@ events.prototype._action_hideStatusBar = function (data, x, y, prefix) { } events.prototype._action_showHero = function (data, x, y, prefix) { - core.removeFlag('hideHero'); - core.drawHero(); - core.doAction(); + data.time = data.time || 0; + if (data.time > 0) { + this.__action_doAsyncFunc(data.async, core.triggerHero, 'show', data.time); + } else { + core.removeFlag('hideHero'); + core.drawHero(); + core.doAction(); + } } events.prototype._action_hideHero = function (data, x, y, prefix) { - core.setFlag('hideHero', true); - core.drawHero(); - core.doAction(); + data.time = data.time || 0; + if (data.time > 0) { + this.__action_doAsyncFunc(data.async, core.triggerHero, 'hide', data.time); + } else { + core.setFlag('hideHero', true); + core.drawHero(); + core.doAction(); + } } events.prototype._action_vibrate = function (data, x, y, prefix) { diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 19e78220..a6d4e1d7 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -135,7 +135,7 @@ (不处理) 67. “画面震动”事件希望不要光左右晃,至少做成QQ窗口抖动的效果吧w (不处理) 68. “自动存档”事件希望加一个“读此档后打断当前事件”的勾选项,否则这种自动存档用于强制战斗之前就没什么意义了,读了档还是会强制战斗。录像兼容性方面,不知道如果这种自动存档只用于事件开头是不是就不会有问题 (已修复!) 69. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并(比如空格、回车和C键一般会被作者予以合并,执行内容如果只是大致相同也值得合并,在块内再行分歧),希望支持一下 -70. “显隐勇士”事件指令希望加个淡入淡出时间参数 +(已完成!) 70. “显隐勇士”事件指令希望加个淡入淡出时间参数 (不处理,请用等待事件) 1. 希望给core.drawTip()和core.playSound()出个同步版本,目前只有异步版本,后者如果要模拟同步就得绑在一个透明动画上 (已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边 (已完成!) 73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 From 0bd37974a24696c8852c19dcefeeedcb3a046cad Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 17:12:01 +0800 Subject: [PATCH 38/80] fix regexp format for moblie --- _server/MotaActionParse.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 5654bd52..1ad9682a 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -1022,9 +1022,9 @@ ActionParser.prototype.matchEvalCompare=function(args, isShadow){ // 按优先级依次寻找以下符号 var oplist=['<','<=','>','>=','==','!=','&&','||'].reverse() for (var index = 0,op; op=oplist[index]; index++) { - var match=new RegExp('(?<= )'+(op=='||'?'\\|\\|':op)+'(?= )').exec(str) + var match=new RegExp(' '+(op=='||'?'\\|\\|':op)+' ').exec(str) if (!match) continue; - args=[this.expandEvalBlock([raw.slice(0,match.index)],isShadow),op.replace(/&/g,'&').replace(//g,'>'),this.expandEvalBlock([raw.slice(match.index+op.length)],isShadow)] + args=[this.expandEvalBlock([raw.slice(0,match.index+1)],isShadow),op.replace(/&/g,'&').replace(//g,'>'),this.expandEvalBlock([raw.slice(match.index+1+op.length)],isShadow)] return {ret:true,xml:xml,args:args} } return {ret:false} From bdca4fdd553f9414a874861c8afdf114d237f908 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 20:24:08 +0800 Subject: [PATCH 39/80] =?UTF-8?q?=E6=A1=86=E9=80=89tileset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 2 + _server/editor_listen.js | 2 + _server/editor_materialpanel.js | 72 ++++++++++++++++++++++++++++----- 3 files changed, 66 insertions(+), 10 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 4717dbdb..de9c25ce 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -105,6 +105,7 @@ function editor() { // tile tileSize: [1,1], + startLoc: {"x":0,"y":0}, lockMode: false, // 最近使用的图块 @@ -683,6 +684,7 @@ editor.prototype.setSelectBoxFromInfo=function(thisevent, scrollTo){ editor.dom.dataSelection.style.left = pos.x * 32 + 'px'; editor.dom.dataSelection.style.top = pos.y * ysize + 'px'; editor.dom.dataSelection.style.height = ysize - 6 + 'px'; + editor.dom.dataSelection.style.width = 32 - 6 + 'px'; setTimeout(function(){ selectBox.isSelected(true); editor.updateLastUsedMap(); diff --git a/_server/editor_listen.js b/_server/editor_listen.js index f5994f4e..115d37d5 100644 --- a/_server/editor_listen.js +++ b/_server/editor_listen.js @@ -24,6 +24,8 @@ editor_listen_wrapper = function (editor) { editor.dom.iconExpandBtn.onclick = editor.uifunctions.fold_material_click editor.dom.iconLib.onmousedown = editor.uifunctions.material_ondown + editor.dom.iconLib.onmousemove = editor.uifunctions.material_onmove + editor.dom.iconLib.onmouseup = editor.uifunctions.material_onup editor.dom.iconLib.oncontextmenu = function (e) { e.preventDefault() } editor.dom.extraEvent.onmousedown = editor.uifunctions.extraEvent_click diff --git a/_server/editor_materialpanel.js b/_server/editor_materialpanel.js index 51752b9c..7aa54339 100644 --- a/_server/editor_materialpanel.js +++ b/_server/editor_materialpanel.js @@ -62,13 +62,41 @@ editor_materialpanel_wrapper = function (editor) { } } + var lastmoveE=null; /** * editor.dom.iconLib.onmousedown - * 素材区的单击事件 + * 素材区的单击/拖拽事件 */ editor.uifunctions.material_ondown = function (e) { e.stopPropagation(); e.preventDefault(); + lastmoveE=e; + if (!editor.isMobile && e.clientY >= editor.dom.iconLib.offsetHeight - editor.uivalues.scrollBarHeight) return; + var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; + var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + editor.uivalues.startLoc={ + 'x': scrollLeft + e.clientX + editor.dom.iconLib.scrollLeft - right.offsetLeft - editor.dom.iconLib.offsetLeft, + 'y': scrollTop + e.clientY + editor.dom.iconLib.scrollTop - right.offsetTop - editor.dom.iconLib.offsetTop, + 'size': 32 + }; + } + + /** + * editor.dom.iconLib.onmousemove + * 素材区的单击/拖拽事件 + */ + editor.uifunctions.material_onmove = function (e) { + e.stopPropagation(); + e.preventDefault(); + lastmoveE=e; + } + + /** + * editor.dom.iconLib.onmouseup + * 素材区的单击/拖拽事件 + */ + editor.uifunctions.material_onup = function (ee) { + var e=lastmoveE; if (!editor.isMobile && e.clientY >= editor.dom.iconLib.offsetHeight - editor.uivalues.scrollBarHeight) return; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; @@ -79,6 +107,7 @@ editor_materialpanel_wrapper = function (editor) { }; editor.loc = loc; editor.uivalues.tileSize = [1,1]; + var pos0 = editor.uifunctions.locToPos(editor.uivalues.startLoc); var pos = editor.uifunctions.locToPos(loc); for (var spriter in editor.widthsX) { if (pos.x >= editor.widthsX[spriter][1] && pos.x < editor.widthsX[spriter][2]) { @@ -115,6 +144,7 @@ editor_materialpanel_wrapper = function (editor) { editor.dom.dataSelection.style.left = pos.x * 32 + 'px'; editor.dom.dataSelection.style.top = pos.y * ysize + 'px'; editor.dom.dataSelection.style.height = ysize - 6 + 'px'; + editor.dom.dataSelection.style.width = 32 - 6 + 'px'; if (pos.x == 0 && pos.y == 0) { // editor.info={idnum:0, id:'empty','images':'清除块', 'y':0}; @@ -133,21 +163,21 @@ editor_materialpanel_wrapper = function (editor) { editor.info = { 'images': pos.images, 'y': y } } - for (var ii = 0; ii < editor.ids.length; ii++) { - if ((core.tilesets.indexOf(pos.images) != -1 && editor.info.images == editor.ids[ii].images - && editor.info.y == editor.ids[ii].y && editor.info.x == editor.ids[ii].x) - || (Object.prototype.hasOwnProperty.call(autotiles, pos.images) && editor.info.images == editor.ids[ii].id - && editor.info.y == editor.ids[ii].y) - || (core.tilesets.indexOf(pos.images) == -1 && editor.info.images == editor.ids[ii].images - && editor.info.y == editor.ids[ii].y) + for (var idindex = 0; idindex < editor.ids.length; idindex++) { + if ((core.tilesets.indexOf(pos.images) != -1 && editor.info.images == editor.ids[idindex].images + && editor.info.y == editor.ids[idindex].y && editor.info.x == editor.ids[idindex].x) + || (Object.prototype.hasOwnProperty.call(autotiles, pos.images) && editor.info.images == editor.ids[idindex].id + && editor.info.y == editor.ids[idindex].y) + || (core.tilesets.indexOf(pos.images) == -1 && editor.info.images == editor.ids[idindex].images + && editor.info.y == editor.ids[idindex].y) ) { - editor.info = editor.ids[ii]; + editor.info = editor.ids[idindex]; break; } } - if (editor.info.isTile && e.button == 2) { + if (editor.info.isTile && e.button == 2) { //这段改一改之类的应该能给手机用,就不删了 var v = prompt("请输入该额外素材区域绑定宽高,以逗号分隔", "1,1"); if (v != null && /^\d+,\d+$/.test(v)) { v = v.split(","); @@ -157,9 +187,31 @@ editor_materialpanel_wrapper = function (editor) { alert("不合法的输入范围,已经越界"); } else { editor.uivalues.tileSize = [x, y]; + editor.dom.dataSelection.style.left = pos.x * 32 + 'px'; + editor.dom.dataSelection.style.top = pos.y * ysize + 'px'; + editor.dom.dataSelection.style.height = ysize*y - 6 + 'px'; + editor.dom.dataSelection.style.width = 32*x - 6 + 'px'; } } } + if (editor.info.isTile && e.button != 2) { //左键拖拽框选 + + var x = pos.x-pos0.x+1, y = pos.y-pos0.y+1; + var widthX = editor.widthsX[editor.info.images]; + // 懒得仔细处理了, 只允许左上往右下拉 + if (x <= 0 || y <= 0 || pos0.x < widthX[1]){ + + } else { + editor.info = editor.ids[idindex-(x-1)-(y-1)*(widthX[2]-widthX[1])]; + editor.uifunctions.locToPos(editor.uivalues.startLoc); //重置editor.pos + editor.uivalues.tileSize = [x, y]; + editor.dom.dataSelection.style.left = pos0.x * 32 + 'px'; + editor.dom.dataSelection.style.top = pos0.y * ysize + 'px'; + editor.dom.dataSelection.style.height = ysize*y - 6 + 'px'; + editor.dom.dataSelection.style.width = 32*x - 6 + 'px'; + } + + } } tip.infos(JSON.parse(JSON.stringify(editor.info))); From ebbb4b8b46be2b152ec033ec0aba44938a336790 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 20:30:07 +0800 Subject: [PATCH 40/80] fix unhighlight button --- _server/editor_listen.js | 8 ++++++++ _server/editor_ui.js | 1 + 2 files changed, 9 insertions(+) diff --git a/_server/editor_listen.js b/_server/editor_listen.js index 115d37d5..7a3b83b1 100644 --- a/_server/editor_listen.js +++ b/_server/editor_listen.js @@ -134,6 +134,14 @@ editor_listen_wrapper = function (editor) { editor.dom.moveLoc.onmousedown = null editor.dom.clearLoc.ontouchstart = editor.dom.clearLoc.onmousedown editor.dom.clearLoc.onmousedown = null + + // 不使用以下6语句, 会使得素材区手机无法拖动, 手机的框选素材只能放弃, 要通过弹框实现框选 + // editor.dom.iconLib.ontouchstart = editor.dom.iconLib.onmousedown + // editor.dom.iconLib.onmousedown = null + // editor.dom.iconLib.ontouchmove = editor.dom.iconLib.onmousemove + // editor.dom.iconLib.onmousemove = null + // editor.dom.iconLib.ontouchend = editor.dom.iconLib.onmouseup + // editor.dom.iconLib.onmouseup = null } editor.constructor.prototype.mode_listen = function (callback) { diff --git a/_server/editor_ui.js b/_server/editor_ui.js index c316d200..1bcd019d 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -236,6 +236,7 @@ editor_ui_wrapper = function (editor) { throw (err) } ; printf('地图保存成功'); + editor.uifunctions.unhighlightSaveFloorButton(); }); } selectBox.isSelected(false); From 9143d687d4639ec3eecac0342d87abe9fabae61a Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 21:11:50 +0800 Subject: [PATCH 41/80] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=94=BE=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/actions.js | 83 +++++++++++++++++++++++++++++++--------------- libs/control.js | 56 ++++++++++++++++++------------- libs/core.js | 5 +++ libs/ui.js | 7 ++-- styles.css | 2 +- v2.x-final更新.txt | 6 ++-- 6 files changed, 103 insertions(+), 56 deletions(-) diff --git a/libs/actions.js b/libs/actions.js index 0a9ed824..a05d286a 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -1919,7 +1919,7 @@ actions.prototype._clickSwitchs = function (x, y) { var topIndex = this.HSIZE - parseInt((choices.length - 1) / 2) + (core.status.event.ui.offset || 0); var selection = y - topIndex; if (x < this.CHOICES_LEFT || x > this.CHOICES_RIGHT) { - if (selection != 2 && selection != 3 && selection != 4) return; + if (selection != 1 && selection != 2 && selection != 3 && selection != 4) return; } var width = choices[selection].width; var leftPos = (core.__PIXELS__ - width) / 2, rightPos = (core.__PIXELS__ + width) / 2; @@ -1928,32 +1928,32 @@ actions.prototype._clickSwitchs = function (x, y) { core.status.event.selection = selection; switch (selection) { case 0: - return this._clickSwitchs_bgm(); + return this._clickSwitchs_bgmSound(); case 1: - return this._clickSwitchs_sound(); - case 2: if (x == leftGrid || x == leftGrid + 1) return this._clickSwitchs_userVolume(-1); if (x == rightGrid || x == rightGrid + 1) return this._clickSwitchs_userVolume(1); return; - case 3: + case 2: if (x == leftGrid || x == leftGrid + 1) return this._clickSwitchs_moveSpeed(-10); if (x == rightGrid || x == rightGrid + 1) return this._clickSwitchs_moveSpeed(10); return; - case 4: + case 3: if (x == leftGrid || x == leftGrid + 1) return this._clickSwitchs_floorChangeTime(-100); if (x == rightGrid || x == rightGrid + 1) return this._clickSwitchs_floorChangeTime(100); return; + case 4: + if (x == leftGrid || x == leftGrid + 1) return this._clickSwitchs_setSize(-1); + if (x == rightGrid || x == rightGrid + 1) return this._clickSwitchs_setSize(1); + return; case 5: return this._clickSwitchs_displayEnemyDamage(); case 6: - return this._clickSwitchs_displayCritical(); + return this._clickSwitchs_displayCriticalExtra(); case 7: - return this._clickSwitchs_displayExtraDamage(); - case 8: return this._clickSwitchs_potionNoRouting(); - case 9: + case 8: return this._clickSwitchs_clickMove(); - case 10: + case 9: core.status.event.selection = 0; core.ui.drawSettings(); break; @@ -1961,13 +1961,23 @@ actions.prototype._clickSwitchs = function (x, y) { } } -actions.prototype._clickSwitchs_bgm = function () { - core.triggerBgm(); - core.ui.drawSwitchs(); -} - -actions.prototype._clickSwitchs_sound = function () { - core.musicStatus.soundStatus = !core.musicStatus.soundStatus; +actions.prototype._clickSwitchs_bgmSound = function () { + var bgm = core.musicStatus.bgmStatus; + var sound = core.musicStatus.soundStatus; + if (bgm && sound) { + sound = false; + } else if (bgm && !sound) { + bgm = false; + sound = true; + } else if (!bgm && sound) { + sound = false; + } else { + bgm = true; + sound = true; + } + if (bgm != core.musicStatus.bgmStatus) + core.triggerBgm(); + core.musicStatus.soundStatus = sound; core.setLocalStorage('soundStatus', core.musicStatus.soundStatus); core.ui.drawSwitchs(); } @@ -1995,6 +2005,17 @@ actions.prototype._clickSwitchs_floorChangeTime = function (delta) { core.ui.drawSwitchs(); } +actions.prototype._clickSwitchs_setSize = function (delta) { + var index = core.domStyle.availableScale.indexOf(core.domStyle.scale); + if (index < 0) return; + index += delta; + if (index < 0 || index >= core.domStyle.availableScale.length); + core.domStyle.scale = core.domStyle.availableScale[index]; + core.setLocalStorage('scale', core.domStyle.scale); + core.resize(); + core.ui.drawSwitchs(); +} + actions.prototype._clickSwitchs_displayEnemyDamage = function () { core.flags.displayEnemyDamage = !core.flags.displayEnemyDamage; core.updateDamage(); @@ -2002,16 +2023,26 @@ actions.prototype._clickSwitchs_displayEnemyDamage = function () { core.ui.drawSwitchs(); } -actions.prototype._clickSwitchs_displayCritical = function () { - core.flags.displayCritical = !core.flags.displayCritical; +actions.prototype._clickSwitchs_displayCriticalExtra = function () { + var critical = core.flags.displayCritical; + var extra = core.flags.displayExtraDamage; + if (critical && extra) { + extra = false; + } else if (critical && !extra) { + critical = false; + extra = true; + } else if (!critical && extra) { + critical = false; + extra = false; + } else { + critical = true; + extra = true; + } + + core.flags.displayCritical = critical; + core.flags.displayExtraDamage = extra; core.updateDamage(); core.setLocalStorage('critical', core.flags.displayCritical); - core.ui.drawSwitchs(); -} - -actions.prototype._clickSwitchs_displayExtraDamage = function () { - core.flags.displayExtraDamage = !core.flags.displayExtraDamage; - core.updateDamage(); core.setLocalStorage('extraDamage', core.flags.displayExtraDamage); core.ui.drawSwitchs(); } diff --git a/libs/control.js b/libs/control.js index 381584ee..caa6189f 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2679,17 +2679,28 @@ control.prototype._doResize = function (obj) { control.prototype.resize = function() { if (main.mode=='editor')return; var clientWidth = main.dom.body.clientWidth, clientHeight = main.dom.body.clientHeight; - var CANVAS_WIDTH = core.__PIXELS__ + 6, BAR_WIDTH = Math.round(core.__PIXELS__ * 0.31) + 3; + var CANVAS_WIDTH = core.__PIXELS__, BAR_WIDTH = Math.round(core.__PIXELS__ * 0.31); + var BORDER = 3; - if (clientWidth >= CANVAS_WIDTH + BAR_WIDTH || (clientWidth > clientHeight && clientHeight < CANVAS_WIDTH)) { + if (clientWidth - 3 * BORDER >= CANVAS_WIDTH + BAR_WIDTH || (clientWidth > clientHeight && clientHeight - 2 * BORDER < CANVAS_WIDTH)) { // 横屏 core.domStyle.isVertical = false; - core.domStyle.scale = Math.min(1, clientHeight / CANVAS_WIDTH); + + core.domStyle.availableScale = []; + [1, 1.25, 1.5, 2].forEach(function (v) { + if (clientWidth - 3 * BORDER >= v*(CANVAS_WIDTH + BAR_WIDTH) && clientHeight - 2 * BORDER >= v * CANVAS_WIDTH) { + core.domStyle.availableScale.push(v); // 64x64 + } + }); + if (core.domStyle.availableScale.indexOf(core.domStyle.scale) < 0) { + core.domStyle.scale = Math.min(1, (clientHeight - 2 * BORDER) / CANVAS_WIDTH); + } } else { // 竖屏 core.domStyle.isVertical = true; - core.domStyle.scale = Math.min(1, clientWidth / CANVAS_WIDTH); + core.domStyle.scale = Math.min(1, (clientWidth - 2 * BORDER) / CANVAS_WIDTH); + core.domStyle.availableScale = []; } var statusDisplayArr = this._shouldDisplayStatus(), count = statusDisplayArr.length; @@ -2705,15 +2716,16 @@ control.prototype.resize = function() { clientWidth: clientWidth, clientHeight: clientHeight, CANVAS_WIDTH: CANVAS_WIDTH, + BORDER: BORDER, BAR_WIDTH: BAR_WIDTH, - outerSize: CANVAS_WIDTH * core.domStyle.scale, + outerSize: CANVAS_WIDTH * core.domStyle.scale + 2 * BORDER, globalAttribute: globalAttribute, border: '3px ' + globalAttribute.borderColor + ' solid', statusDisplayArr: statusDisplayArr, count: count, col: col, - statusBarHeightInVertical: core.domStyle.isVertical ? (32 * col + 6) * core.domStyle.scale + 6 : 0, - toolbarHeightInVertical: core.domStyle.isVertical ? 44 * core.domStyle.scale + 6 : 0, + statusBarHeightInVertical: core.domStyle.isVertical ? (32 * col + 6) * core.domStyle.scale + 2 * BORDER : 0, + toolbarHeightInVertical: core.domStyle.isVertical ? 44 * core.domStyle.scale + 2 * BORDER : 0, is15x15: core.__SIZE__ == 15 }; @@ -2730,7 +2742,7 @@ control.prototype._resize_gameGroup = function (obj) { totalHeight = obj.outerSize + obj.statusBarHeightInVertical + obj.toolbarHeightInVertical } else { - totalWidth = (obj.CANVAS_WIDTH + obj.BAR_WIDTH) * core.domStyle.scale; + totalWidth = obj.outerSize + obj.BAR_WIDTH * core.domStyle.scale + obj.BORDER; totalHeight = obj.outerSize; } gameGroup.style.width = totalWidth + "px"; @@ -2739,8 +2751,8 @@ control.prototype._resize_gameGroup = function (obj) { gameGroup.style.top = (obj.clientHeight - totalHeight) / 2 + "px"; // floorMsgGroup var floorMsgGroup = core.dom.floorMsgGroup; - floorMsgGroup.style.width = obj.outerSize - 6 + "px"; - floorMsgGroup.style.height = totalHeight - 6 + "px"; + floorMsgGroup.style.width = obj.outerSize - 2 * obj.BORDER + "px"; + floorMsgGroup.style.height = totalHeight - 2 * obj.BORDER + "px"; floorMsgGroup.style.background = obj.globalAttribute.floorChangingBackground; floorMsgGroup.style.color = obj.globalAttribute.floorChangingTextColor; // musicBtn @@ -2754,7 +2766,7 @@ control.prototype._resize_gameGroup = function (obj) { } control.prototype._resize_canvas = function (obj) { - var innerSize = (obj.outerSize - 6) + "px"; + var innerSize = (obj.CANVAS_WIDTH * core.domStyle.scale) + "px"; for (var i = 0; i < core.dom.gameCanvas.length; ++i) core.dom.gameCanvas[i].style.width = core.dom.gameCanvas[i].style.height = innerSize; core.dom.gif.style.width = core.dom.gif.style.height = innerSize; @@ -2779,8 +2791,6 @@ control.prototype._resize_canvas = function (obj) { // resize next main.dom.next.style.width = main.dom.next.style.height = 5 * core.domStyle.scale + "px"; main.dom.next.style.borderBottomWidth = main.dom.next.style.borderRightWidth = 4 * core.domStyle.scale + "px"; - - } control.prototype._resize_statusBar = function (obj) { @@ -2793,7 +2803,7 @@ control.prototype._resize_statusBar = function (obj) { statusBar.style.fontSize = 16 * core.domStyle.scale + "px"; } else { - statusBar.style.width = obj.BAR_WIDTH * core.domStyle.scale + "px"; + statusBar.style.width = (obj.BAR_WIDTH * core.domStyle.scale + obj.BORDER) + "px"; statusBar.style.height = obj.outerSize + "px"; statusBar.style.background = obj.globalAttribute.statusLeftBackground; // --- 计算文字大小 @@ -2805,22 +2815,22 @@ control.prototype._resize_statusBar = function (obj) { statusBar.style.borderBottom = core.domStyle.isVertical ? '' : obj.border; // 自绘状态栏 if (core.domStyle.isVertical) { - core.dom.statusCanvas.style.width = obj.outerSize - 6 + "px"; - core.dom.statusCanvas.width = core.__PIXELS__; + core.dom.statusCanvas.style.width = obj.CANVAS_WIDTH + "px"; + core.dom.statusCanvas.width = obj.CANVAS_WIDTH; core.dom.statusCanvas.style.height = obj.statusBarHeightInVertical - 3 + "px"; core.dom.statusCanvas.height = obj.col * 32 + 9; } else { - core.dom.statusCanvas.style.width = obj.BAR_WIDTH * core.domStyle.scale - 3 + "px"; - core.dom.statusCanvas.width = obj.BAR_WIDTH - 3; - core.dom.statusCanvas.style.height = obj.outerSize - 6 + "px"; - core.dom.statusCanvas.height = core.__PIXELS__; + core.dom.statusCanvas.style.width = obj.BAR_WIDTH * core.domStyle.scale + "px"; + core.dom.statusCanvas.width = obj.BAR_WIDTH; + core.dom.statusCanvas.style.height = obj.outerSize - 2 * obj.BORDER + "px"; + core.dom.statusCanvas.height = obj.CANVAS_WIDTH; } core.dom.statusCanvas.style.display = core.flags.statusCanvas ? "block" : "none"; } control.prototype._resize_status = function (obj) { - var statusHeight = (core.domStyle.isVertical ? 1 : (core.__HALF_SIZE__ + 3) / obj.count) * 32 * core.domStyle.scale * 0.8; + var statusHeight = (core.domStyle.isVertical ? 1 : (core.__HALF_SIZE__ + obj.BORDER) / obj.count) * 32 * core.domStyle.scale * 0.8; // status for (var i = 0; i < core.dom.status.length; ++i) { var id = core.dom.status[i].id, style = core.dom.status[i].style; @@ -2828,7 +2838,7 @@ control.prototype._resize_status = function (obj) { style.display = core.flags.statusCanvas || obj.statusDisplayArr.indexOf(id) < 0 ? 'none': 'block'; style.margin = 3 * core.domStyle.scale + "px"; style.height = statusHeight + "px"; - style.maxWidth = obj.BAR_WIDTH * core.domStyle.scale * (core.domStyle.isVertical ? 0.95 : 1) + "px"; + style.maxWidth = obj.BAR_WIDTH * core.domStyle.scale * (core.domStyle.isVertical ? 0.95 : 1) + obj.BORDER + "px"; if (obj.is15x15 && !core.domStyle.isVertical) style.marginLeft = 11 * core.domStyle.scale + "px"; } @@ -2860,7 +2870,7 @@ control.prototype._resize_toolBar = function (obj) { toolBar.style.background = obj.globalAttribute.toolsBackground; } else { - toolBar.style.width = obj.BAR_WIDTH * core.domStyle.scale + "px"; + toolBar.style.width = obj.BAR_WIDTH * core.domStyle.scale + obj.BORDER + "px"; toolBar.style.top = 0.718 * obj.outerSize + "px"; toolBar.style.height = 0.281 * obj.outerSize + "px"; toolBar.style.background = 'transparent'; diff --git a/libs/core.js b/libs/core.js index dc5ee70d..0d9281f4 100644 --- a/libs/core.js +++ b/libs/core.js @@ -84,6 +84,7 @@ function core() { // 样式 this.domStyle = { scale: 1.0, + availableScale: [], isVertical: false, showStatusBar: true, toolbarBtn: false, @@ -291,6 +292,10 @@ core.prototype._init_sys_flags = function () { // 行走速度 core.values.moveSpeed = core.getLocalStorage('moveSpeed', 100); core.values.floorChangeTime = core.getLocalStorage('floorChangeTime', 500); + core.domStyle.scale = core.getLocalStorage('scale', 1); + if (core.domStyle.scale != 1) { + core.resize(); + } } core.prototype._init_platform = function () { diff --git a/libs/ui.js b/libs/ui.js index 690f9984..79836eee 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -1655,16 +1655,15 @@ ui.prototype.drawWaiting = function(text) { ui.prototype.drawSwitchs = function() { core.status.event.id = 'switchs'; var choices = [ - "背景音乐: "+(core.musicStatus.bgmStatus ? "[ON]" : "[OFF]"), - "背景音效: "+(core.musicStatus.soundStatus ? "[ON]" : "[OFF]"), + "音乐/音效: "+(core.musicStatus.bgmStatus ? "[ON]" : "[OFF]") + " "+(core.musicStatus.soundStatus ? "[ON]" : "[OFF]"), //显示为 0~10 十挡 " < 音量:" + Math.round(Math.sqrt(100 * core.musicStatus.userVolume)) + " > ", //数值越大耗时越长 " < 步时:" + core.values.moveSpeed + " > ", " < 转场:" + core.values.floorChangeTime + " > ", + " < 放缩:" + Math.max(core.domStyle.scale, 1) + "x > ", "怪物显伤: "+(core.flags.displayEnemyDamage ? "[ON]" : "[OFF]"), - "临界显伤: "+(core.flags.displayCritical ? "[ON]" : "[OFF]"), - "领域显伤: "+(core.flags.displayExtraDamage ? "[ON]" : "[OFF]"), + "临界/领域: "+(core.flags.displayCritical ? "[ON]" : "[OFF]")+" "+(core.flags.displayExtraDamage ? "[ON]" : "[OFF]"), "血瓶绕路: "+(core.hasFlag('__potionNoRouting__') ? "[ON]":"[OFF]"), "单击瞬移: "+(!core.hasFlag("__noClickMove__") ? "[ON]":"[OFF]"), "返回主菜单" diff --git a/styles.css b/styles.css index d981dfdf..999e30f4 100644 --- a/styles.css +++ b/styles.css @@ -74,7 +74,7 @@ color: #fff; font-size: 0.6rem; position: absolute; - top: 8%; + top: 10%; left: 5%; z-index: 15; } diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index a6d4e1d7..ba14b148 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -51,7 +51,7 @@ 地图拉框选择复制剪切删除 额外素材区拖动选择一个区域 (已完成!) 素材替换 -大屏幕下放大游戏界面 +(已完成!) 大屏幕下放大游戏界面 (已完成!) 最近使用/最常使用的图块 (已完成!) loader并行加载 合并items.js @@ -60,6 +60,8 @@ (已完成!) 32x48的门 (已完成!) 难度分歧的图块(颜色,含SL界面) 装备同时加属性和比例 +removeMap和resumeMap + ------------- @@ -93,7 +95,7 @@ (已完成!) 27. 勇士后退时跟随者很鬼畜,建议优化(每步聚集算是一种简陋的办法) (不处理) 28. 勇士的移动帧只有2,建议改为允许作者指定 (不处理) 29. 建议加一对“勇士开始抖动”和“勇士停止抖动”事件指令,来让勇士像图块一样原地抖动(即全局动画)。目前这个效果还只能通过隐藏勇士(或切换透明行走图)并转变图块/图层块来实现且只能用于事件处理中QAQ -30. 建议加一个“视角锁定”事件指令,从而允许用事件改变勇士位置、朝向或行走图时不会使视角重置到以其为中心,用于一些演出效果 +(不处理) 30. 建议加一个“视角锁定”事件指令,从而允许用事件改变勇士位置、朝向或行走图时不会使视角重置到以其为中心,用于一些演出效果 (已完成!) 31. 楼层切换事件(绿点)一旦使用blockly编辑就会无视全塔属性的切换时间,只能手动在表格中删除时间(数据相关“楼层切换”事件指令也有这个问题,有群友还希望这个默认时间能像步时和音量一样由玩家设定来节约拆塔时间)。使用blockly编辑也无法做出“ignore:true”的效果(用来覆盖全塔属性的禁止穿透),建议优化 (已完成!) 32. (关于CC的来回回档优化版)据其称,清空存档后会出现bug,此外他使用了W键导致二倍斩失效了(js的switch语句遇到duplicate cases居然不报错吗...) (已完成!) 33. (疑似已被CC修复)楼传平面塔模式在记录离开位置时会错误地把读档也算作离开 From dc5ff0e309f3ce37d41f0a5be891fc3b7319af67 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 21:56:25 +0800 Subject: [PATCH 42/80] =?UTF-8?q?=E9=A2=9D=E5=A4=96=E7=B4=A0=E6=9D=90?= =?UTF-8?q?=E6=8B=96=E6=A1=86=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 2 +- _server/editor_mappanel.js | 6 +++--- _server/editor_materialpanel.js | 21 +++++++++++++++++++-- libs/core.js | 8 +++++--- v2.x-final更新.txt | 4 ++-- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index de9c25ce..c2843696 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -105,7 +105,7 @@ function editor() { // tile tileSize: [1,1], - startLoc: {"x":0,"y":0}, + startLoc: null, lockMode: false, // 最近使用的图块 diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 93d57fed..144e54ac 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -655,9 +655,9 @@ editor_mappanel_wrapper = function (editor) { * 切换画笔模式 */ editor.uifunctions.brushMod3_onchange = function () { - if (!editor.config.get('alertTileMode') && - !confirm("从V2.6.6开始,tileset贴图模式已被废弃。\n请右键额外素材,并输入所需要绘制的宽高,然后单击地图以绘制一个区域。\n\n点取消将不再显示此提示。")) { - editor.config.set('alertTileMode', true); + if (!editor.config.get('alertTileModeV2.7') && + !confirm("从V2.7开始,请直接素材区拖框进行绘制区域。\n\n点取消将不再显示此提示。")) { + editor.config.set('alertTileModeV2.7', true); } // tip.showHelp(5) tip.isSelectedBlock(false) diff --git a/_server/editor_materialpanel.js b/_server/editor_materialpanel.js index 7aa54339..8a6704fa 100644 --- a/_server/editor_materialpanel.js +++ b/_server/editor_materialpanel.js @@ -77,6 +77,8 @@ editor_materialpanel_wrapper = function (editor) { editor.uivalues.startLoc={ 'x': scrollLeft + e.clientX + editor.dom.iconLib.scrollLeft - right.offsetLeft - editor.dom.iconLib.offsetLeft, 'y': scrollTop + e.clientY + editor.dom.iconLib.scrollTop - right.offsetTop - editor.dom.iconLib.offsetTop, + 'px': e.clientX, + 'py': e.clientY, 'size': 32 }; } @@ -89,6 +91,14 @@ editor_materialpanel_wrapper = function (editor) { e.stopPropagation(); e.preventDefault(); lastmoveE=e; + if (!editor.uivalues.startLoc) return; + var pos0 = editor.uifunctions.locToPos(editor.uivalues.startLoc); + + editor.dom.dataSelection.style.left = 32 * pos0.x + 'px'; + editor.dom.dataSelection.style.top = 32 * pos0.y + 'px'; + editor.dom.dataSelection.style.width = e.clientX - editor.uivalues.startLoc.px + 'px'; + editor.dom.dataSelection.style.height = e.clientY - editor.uivalues.startLoc.py + 'px'; + editor.dom.dataSelection.style.display = 'block'; } /** @@ -96,6 +106,9 @@ editor_materialpanel_wrapper = function (editor) { * 素材区的单击/拖拽事件 */ editor.uifunctions.material_onup = function (ee) { + var startLoc = editor.uivalues.startLoc; + editor.uivalues.startLoc = null; + var e=lastmoveE; if (!editor.isMobile && e.clientY >= editor.dom.iconLib.offsetHeight - editor.uivalues.scrollBarHeight) return; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; @@ -107,7 +120,7 @@ editor_materialpanel_wrapper = function (editor) { }; editor.loc = loc; editor.uivalues.tileSize = [1,1]; - var pos0 = editor.uifunctions.locToPos(editor.uivalues.startLoc); + var pos0 = editor.uifunctions.locToPos(startLoc); var pos = editor.uifunctions.locToPos(loc); for (var spriter in editor.widthsX) { if (pos.x >= editor.widthsX[spriter][1] && pos.x < editor.widthsX[spriter][2]) { @@ -178,6 +191,9 @@ editor_materialpanel_wrapper = function (editor) { } if (editor.info.isTile && e.button == 2) { //这段改一改之类的应该能给手机用,就不删了 + // 废弃好了 + alert('V2.7后右键已被废弃,请直接素材区拖框选中区域。'); + /* var v = prompt("请输入该额外素材区域绑定宽高,以逗号分隔", "1,1"); if (v != null && /^\d+,\d+$/.test(v)) { v = v.split(","); @@ -193,6 +209,7 @@ editor_materialpanel_wrapper = function (editor) { editor.dom.dataSelection.style.width = 32*x - 6 + 'px'; } } + */ } if (editor.info.isTile && e.button != 2) { //左键拖拽框选 @@ -203,7 +220,7 @@ editor_materialpanel_wrapper = function (editor) { } else { editor.info = editor.ids[idindex-(x-1)-(y-1)*(widthX[2]-widthX[1])]; - editor.uifunctions.locToPos(editor.uivalues.startLoc); //重置editor.pos + editor.uifunctions.locToPos(startLoc); //重置editor.pos editor.uivalues.tileSize = [x, y]; editor.dom.dataSelection.style.left = pos0.x * 32 + 'px'; editor.dom.dataSelection.style.top = pos0.y * ysize + 'px'; diff --git a/libs/core.js b/libs/core.js index 0d9281f4..de495399 100644 --- a/libs/core.js +++ b/libs/core.js @@ -292,9 +292,11 @@ core.prototype._init_sys_flags = function () { // 行走速度 core.values.moveSpeed = core.getLocalStorage('moveSpeed', 100); core.values.floorChangeTime = core.getLocalStorage('floorChangeTime', 500); - core.domStyle.scale = core.getLocalStorage('scale', 1); - if (core.domStyle.scale != 1) { - core.resize(); + if (main.mode != 'editor') { + core.domStyle.scale = core.getLocalStorage('scale', 1); + if (core.domStyle.scale != 1) { + core.resize(); + } } } diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index ba14b148..5eb614cf 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -44,12 +44,12 @@ (已完成!) 重构全局商店! (已完成!) 读档时色调数据丢失 (已完成!) 圆角边框 -像素高分辨率问题 +(不处理) 像素高分辨率问题 (已完成!) 道具效果优化,删除部分道具相关的开关 (已完成!) 素材列表选择 (已完成!) 油漆桶,动态更改地图大小 地图拉框选择复制剪切删除 -额外素材区拖动选择一个区域 +(已完成!) 额外素材区拖动选择一个区域 (已完成!) 素材替换 (已完成!) 大屏幕下放大游戏界面 (已完成!) 最近使用/最常使用的图块 From 075390df0a8cf878362d4dacab341815e843bcd6 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Tue, 19 May 2020 22:57:24 +0800 Subject: [PATCH 43/80] =?UTF-8?q?tileset=E5=B9=B3=E9=93=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _docs/personalization.md | 2 +- _server/editor_mappanel.js | 11 +++++------ _server/editor_ui.js | 2 +- editor-mobile.html | 2 +- editor.html | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/_docs/personalization.md b/_docs/personalization.md index ac7ff766..356bb46a 100644 --- a/_docs/personalization.md +++ b/_docs/personalization.md @@ -236,7 +236,7 @@ ID必须由数字字母下划线组成,数字在1000以内,且均不能和 除此之外,额外素材在游戏中的使用和正式素材都是一致的,也能在前景或背景图层绘制。 -额外素材可以使用“tileset贴图”的方式进行绘制,一次绘制一个矩形区域。 +额外素材可以使用“tileset平铺”的方式进行绘制,一次绘制一个矩形区域。 “辅助工具”中提供了“额外素材合并”,如果使用此功能,请不要对额外素材进行基于ID、索引和数字的判定和读写等操作,如确有此需求,可以创建一些玩家不可达也不可预览的隐藏样板层,然后用等量代换的办法去从样板层取用。 ## 自定义道具效果 diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 144e54ac..f2f850ac 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -240,12 +240,11 @@ editor_mappanel_wrapper = function (editor) { var x0 = editor.uivalues.stepPostfix[0].x; var y0 = editor.uivalues.stepPostfix[0].y; var idnum = editor.info.idnum; + var pmod=function(a,b){return (a%b+b)%b;} for (var ii = 0; ii < editor.uivalues.stepPostfix.length; ii++) { - if (editor.uivalues.stepPostfix[ii].y != y0) { - y0++; - idnum += imgWidth; - } - editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.ids[editor.indexs[idnum + editor.uivalues.stepPostfix[ii].x - x0]]; + var dx=pmod(editor.uivalues.stepPostfix[ii].x-x0,editor.uivalues.tileSize[0]); + var dy=pmod(editor.uivalues.stepPostfix[ii].y-y0,editor.uivalues.tileSize[1]); + editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.ids[editor.indexs[idnum + dx+dy*imgWidth]]; } } else { // 检测是否是填充模式 @@ -661,7 +660,7 @@ editor_mappanel_wrapper = function (editor) { } // tip.showHelp(5) tip.isSelectedBlock(false) - tip.msgs[11] = String('tileset贴图模式下可以按选中tileset素材,并在地图上拖动来一次绘制一个区域'); + tip.msgs[11] = String('tileset平铺模式下可以按选中tileset素材,并在地图上拖动来一次绘制一个区域'); tip.whichShow(12); editor.brushMod = editor.dom.brushMod3.value; } diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 1bcd019d..3d528f20 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -30,7 +30,7 @@ editor_ui_wrapper = function (editor) { '双击事件编辑器的图块可以进行长文本编辑/脚本编辑/地图选点/UI绘制预览等操作', 'ESC或点击空白处可以自动保存当前修改', 'H键可以打开操作帮助哦', - 'tileset贴图模式可以在地图上拖动来一次绘制一个区域;右键额外素材也可以绑定宽高', + 'tileset平铺模式可以在地图上拖动来平铺框选的图形', '可以拖动地图上的图块和事件,或按Ctrl+C, Ctrl+X和Ctrl+V进行复制,剪切和粘贴,Delete删除', 'Alt+数字键保存图块,数字键读取保存的图块', ]; diff --git a/editor-mobile.html b/editor-mobile.html index df00077d..8bc87798 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -386,7 +386,7 @@ 线 矩形 - tileset贴图 + tileset平铺 填充 From fb49beb1fdeb6083e4deeedf8d386be49f6b4c67 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 19 May 2020 23:03:53 +0800 Subject: [PATCH 44/80] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A0=8D=E5=B1=82?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/table/plugins.comment.js | 6 +++++ libs/events.js | 2 +- libs/maps.js | 23 ++++------------- project/materials/icons.png | Bin 8414 -> 8832 bytes project/materials/icons_old.png | Bin 0 -> 26359 bytes project/plugins.js | 43 +++++++++++++++++++++++++++++++ 6 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 project/materials/icons_old.png diff --git a/_server/table/plugins.comment.js b/_server/table/plugins.comment.js index f012cdc1..059b7e5d 100644 --- a/_server/table/plugins.comment.js +++ b/_server/table/plugins.comment.js @@ -26,6 +26,12 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_range": "typeof(thiseval)=='string' || thiseval==null", "_data": "灯光效果" }, + "removeMap": { + "_leaf": true, + "_type": "textarea", + "_range": "typeof(thiseval)=='string' || thiseval==null", + "_data": "砍层插件" + }, "itemShop": { "_leaf": true, "_type": "textarea", diff --git a/libs/events.js b/libs/events.js index 3e2e46f6..6fa74489 100644 --- a/libs/events.js +++ b/libs/events.js @@ -2067,7 +2067,7 @@ events.prototype._action_wait = function (data, x, y, prefix) { } else if (data.timeout) { core.status.event.interval = setTimeout(function() { core.status.route.push("input:none"); - core.removeFlag("type"); + core.setFlag("type", -1); core.doAction(); }, data.timeout); } diff --git a/libs/maps.js b/libs/maps.js index a2477497..9254a1cc 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -42,6 +42,10 @@ maps.prototype.loadFloor = function (floorId, map) { if (notCopy.indexOf(name) == -1 && map[name] != null) content[name] = core.clone(map[name]); } + if (map.deleted) { + content['blocks'] = []; + return content; + } map = this.decompressMap(map.map, floorId); // 事件处理 content['blocks'] = this._mapIntoBlocks(map, floor, floorId); @@ -267,7 +271,7 @@ maps.prototype.saveMap = function (floorId) { } // 砍层状态:直接返回 if (main.mode == 'play' && (flags.__removed__ || []).indexOf(floorId) >= 0) { - return { canFlyTo: false, cannotViewMap: true }; + return { deleted: true, canFlyTo: false, cannotViewMap: true }; } var map = maps[floorId], floor = core.floors[floorId]; @@ -305,23 +309,6 @@ maps.prototype.loadMap = function (data, floorId) { return this.loadFloor(floorId, data[floorId]); } -////// 删除地图,不计入存档 ////// -maps.prototype.removeMaps = function (fromId, toId) { - if (!core.isPlaying()) return; - toId = toId || fromId; - var fromIndex = core.floorIds.indexOf(fromId), - toIndex = core.floorIds.indexOf(toId); - if (toIndex < 0) toIndex = core.floorIds.length - 1; - flags.__removed__ = flags.__removed__ || []; - for (var i = fromIndex; i <= toIndex; ++i) { - var floorId = core.floorIds[i]; - delete flags.__visited__[floorId]; - flags.__removed__.push(floorId); - core.status.maps[floorId].canFlyTo = false; - core.status.maps[floorId].cannotViewMap = true; - } -} - ////// 更改地图画布的尺寸 maps.prototype.resizeMap = function (floorId) { floorId = floorId || core.status.floorId; diff --git a/project/materials/icons.png b/project/materials/icons.png index 2a602bf3af825442d1c84375209eb8ff114c90e8..a24d21eb6d742cb2ad45b9255c545ecfe189f22d 100644 GIT binary patch literal 8832 zcmZ{~cQjnz7dMODbODLNB^(T6Cb1W6=>i4rx05S?JOi0HkS zAu*zk7M*AEeSd4c&p*#U=iIZ_J-gh!_dR=m_K7z(yhlyRN=ZaSM6Ii%X-b%(L_|PG z3NpeI%F8VA-&$8w%?yFw4!i3kq8spAw~qbht;lyo4+oYJkG9m0!XxdK|1gjHea~ut z>NIKN$~(Fl^e&qLp|I&I~Az*Bo=kx3Ufiwa({o;SLd81Fkz%(V8`2H0|LcEg%i zi8PrGcy{91WLv%GlYo?lN$!K424jbxhU&a*h%sFKjEhnRpO;6jT|NO#qxFXRVW|KC z0Xi?hI35wi`9ZZ5Ytk>%A>YA=o+mRjg#IA&WwU39WRGfFLgCA5KUpM4 zD&UjQNcLFLty;K8sHccpgi?Z!4r2iy2wY+`+y!~LF6lH_UdlM0-rCW zjnqR(w%lsIeo=Ih5GaREj=zNLGceg?N6JeV(Ao8Pke4U2|1-#>otDb}k!$9F$g1bu z+Xvdixn@GrXV)90vG(P$2i6`X17xzY3+u||wX)mG?_Zg^t4HToY^uRg@MXq+swmKj zZ%(j}M5OWC?~684_%l$=cIjQY2Y_cD`Fa@_)(uhOTviuKGaa`6Clys*xl`&0i)e$6ah|01&BxJY zb!9b^gBHUK8lEqISWqS5t$^TMEk}B1DaR{MX~9e)ujeJ1FO7xgFSs;d4NS&P+Vp6% z`(R#K&2L_CaK;4P4C+$ujD*?OzeivSBSH|8wtSbA^b3=k|8cgwq_}AE_u=y>&@j*~ zpNG$T=lAg`%8Ct^nQKbf(8LPP`_+IS@yl?J?fALX>Xv=4lN?Kg%wi)NQ!DNh%B!t& zR~yHms-S498+)kf8b?u*(f~2^B0X&0-^j{^m*SZFc{sdgaroD4ah@lzAX4})=Le#p zJx^-a@_SEq`|>u|N7bzqm!Z9JYjyeM94v-^!&FL(gKJ5MN(R2`c97dBn46meh{Y}n zjm^!aGjGmJ?;os1(1b6f(>O}13nQtjLC1F0?FzDod{6s0RB&UnCf4fr4Zm3MV9^aa z$i>HHr2I}|m?QSPF7EBUF510n<;raM8O^2RFmv+>6Ddp|dJY&9rrN=&uZ9x+Kyczk z1{*~lzX2`p!MkPwYV9d(-73Zxfd79Ogyr_zCBALVr&0@R7xb1e7G&Jnp!(LrxSQ(i zx4sE(sm1Uv|NPWwn8Mu=iSpO5Oj(2NXuuU!rLhX%DaaufhGCf~Fb!`_w2VOk1^Ls@ z9K}i3Usqe*&a75N1O)|`5w9jUcXnpf3Twajq@=%?&p!v9x9&1iogd{xDE3r1UlK94 z&TXfR;-5L;2LEh#OjO6F%dlMQtg{S z92_%BcN2U66IPbgYYs}Uac@~&U|MU#W! zuQG12Q>-VyBp$7hl1_6_ucRLS5dv!J#LZx_oS*`>5= z0=VNJ81&c1m~>Rh9~?280DViP$$Z&Is6gaaH{ykc(joT7#&}`J?WAOGeRl_bf%Q}+ z0ne9c76SoN?tbDhyVOq3QK2NH=`I#910|7i`h!g+icNhhy_-A!U5OXT-IZ*}Ihf8c z>Soq7ZbO7Ij4MwQ09U?U`q&)AG`-+x>A*L^DnM)#rPsm{_ji7tXo0%U{e3#pyf7`D z@9Wd&%^G(`n)h7GtIED0cb?|>1sgU@#jRUA0yA#cgJ`wjL@zX*%id`;7MCpPVv6rO zXmsIH+kq#*=Z0}zW3QSXxq!P^)1Ld7vZNSLaq||0*xeEJk(O$CU*@ukQ*Uy6;YtfK z$e{YVu$sBS7u0Ku`rt$!(u-IT>(cklf7-4L6RO@UaBJ|Iwl6v&^?_KFNsGgDr`AhB zc%^gQPo(X@Bx46X7Cl}RX2EVrZzq`Zfet7Za?`)(u9~^|+fy$Rx^3yX`#$__6c0Oq#+e0ns*Lvyv(Mq}lmdD=ze;nii+zuyP$mToLGm)@R5?KjO6 z-VR$j4h#&72nkV{vwJl9N=M&Ui#oY%kXd8B$$Rv7CYph`HbA#wdxCn&{{g!#6^~48 zp(*9=qWMQWwlFS>?Mr$zxs0B*+#AkHLroN1%$T)+H%R9*tt9p^Tv@QT_TB61`!$i{ zj3!Hpq(vjX5DC!?J-VS!yMnK3AeEGbKBEdB%QRjregGoCH;&%7{Nm*ZBJZA~v~Ky9$ZR;A^ya(vnbXyk-pyUISxHmWFmM4z9fZrieDTV7tL54jFBFa$G+RC|Iy$ zGBypKbG<9IdfR04L|P=@<(+DlVZ_mK$9j$ABpry*eC|i|pRku|G?cTGJu+hi&BZ?{ zqloy3p$RA>xCAj5*m`&1l&*aQ=&8BbQdT-V&vYSyugZv87dkTJGmCfVdpEmb@!QFFMft5!+H<&Qlt#&4GrC!rzx zM~P3)Rjs5$jdj>sG4N^N0$Z*7+Rw25uOc}&8*7#)kS2aVMmbt~ER@(yzzlUS$23~K zoI2+cxUsK}=4Yv$r63$#F!`deiHVq8xsSuisKp0U{;hH_jSiQYwcrvwDAIh++-~Y6 z(`R`Q7caJm<5lo?K{ovFpUk@4PNqOH(XJ@N1FzMnsu`3*^<`Y2>T1ZZ3KsMTAJidex- z`i^r>F zWK`*KBw0`HzK6oY~H{ssu_S7sB2Nsg)Ihaq8EgLG2B1J8>SMO9Mg_G=d@Nv-&2P~bC-zdpJp3!`(dYlI^ zu9i{}(YfP4hKu#r7Q{8RI|2;GZv5UlTT#T%ADRkCGgrDdyH5nX9SXU9<4eh_5$~xr za4+cy#ixVFoOEcTx4Ny2*W7Gb-jKtuV6nBC+*p*xXmZ*ZPHoHV7MTlX`UQ88%E_x> zqxFL_J6S^)$%>+J4dB)GAEx^n#nxnzb>SgGwH~GjP3a{_UN58CdG0(y;;7aPW9BaXfPBl&BygkWYiE4RDPHE)$ai+T11p_RNAOc5mo_t(jw zG>O|UzJ7t0?OE_9fAXnR6@zdT>qo7hohdjeRVv*mHVx4%Tu$_?>9pZHv#UoW5U zUOQyMiH2ESBJhk?Cpi)HMvf`hw9o|`XFTmS(ZxvH4_+nUV5QYX`ooT}N>*;7&si;R zoZeBh!xw&PpE%RgW0d8E1QE@Ij3`95O|cZ;TJLkplrW=L?^o=tE72&MwKy=M&O}`R zlw#9t^Y~j*0rxjgQ5Mo>79Tna=S9?rLhFK+jBy}7h5j2z9H+tFOX*7CEg_Pd36Y^}2bz}k_j^`qg~ zD=F+nY|J5~+LTgnt8!xKT<^J^EW~@~&XjGf=HY4Zbr{P zu+E%w+T25ku`VVmQuaE@Zu3iu^7?6K5PRze-K;V&Of^zli=FBF-#c7Ka!s@>ZR~8L z`s87%PUsB9+!*Z#dn<|jj*y!ZAuZh&;#EqT0&LtiEf^A;5i(mk(2c%>0?K5_&R^cY zvH%Q;UhNChBVG=7WINDxFi25CbJ$5%fxJX_Aa@)25;+aYJkyJ)_fmwYilSwvtUU<9 z?iTGSu5Tml2t1f?hPJrjAT(C2FbyQ-5vhnT<5(-Qh<={#=2~5gK*7uKSfapsX%yOWr6ZN&5$)f_uij-L(vFs8QyUC(SU- z;Tr~hu!&F4`vBDDG9-Gx=YChj`9!-%*~jDKGrVZ`LVqn4FWqf&6`9rwog<4+)1gSn$<19Ja5S@Y z5N3@Em-PO-e`$+4AaN^vH0T594TSqr6RP+7;BPyyT$FjOD0Q+aP)%#u=JI(YGjmUG zqUt!Z>-nGy%yuZ-768+ao?oz2(Htn`bnE)S+b16&OItXY)c=e3sEm*vNU}croxzjv zUiYxdCVpyYlNxzLKEP>gJZ@{zFj>f>->ufMo|LKYk0kL3_-)>gCiizMJU?39nKom^ z3AGR6j$`Nkl5+jAIql&D{`_o1{NC|Z%8}1m>#hlh%+`6WraO;mWJ7xGq$!i$k`Sh8%VOI+B#fo z9fg$d;qi_oNimkh8d0S^-QA=EG{~@>h%ZMa7Xm<{*#bt1(A!?dup zP0wrYowIy1AmVDt1bZV<{Ms+Ai(VL=*F!ISv2*$5ug5FqeU!T?aAUW?JKZ@n1MPWTqdYuYYOlFt%E@4ZnT-O(0kPcVA zzC$XLZ5`cH=fDWdYsNvEVyeXo?{$+k_!3IHMBO{}dK?!h0TF39-d^M9L zzkDkCfG4(B=Ng08ClQyB2<;ktv`gXWQrJ@d7vT$UN)~Ywk!akbQ znlU>1J`F!+#$Y9EnTB$k%6RCb2IjbMjQQm^;EkQ#-Q&kQT-nVV8uAZ@{mzs{ zes$_DW3f&QxdB1Xz)E+^&N#2n&dJTDaaUMuq`xr}iMctpFI~Lz+In}X?(E|9&Xu&2 zw^hUmvSQQNJY+Q#fyhYW=D*uNFo3(dJUOMKEl=iMVHb2 z7)qL;KAImF`-+V0`(N1vRu-yf`OpF^vvVWNoU+Ix11enKZe5`MBZ^^J#GAGg^jBBL zvwq79;84r0ygIM)5Ec^5>8U)jbCM{LG(0%jA)h3)ITcm;U#+qBNj4J8iOrzIhz^Lr5otGNQ zQNbte?1dwb(&RB!RB)#}nBie?XPW=2qf6|z`UXB(B8oaMDjx)g z$)p`qQc^mD?Vg-ia><`qLc=I_l3zMTz&Ed2jbV#f4a?I-)Azc9s@!BAD)2CaJishi z`3nH1h)`u2nPTNH0g(799M^K=&>t>2mFquW0-JaDPsrB=g9cGS1(Cz^dL&+%csK4@ zmF1sa2^K4DL875Zufg%HUssXpxpXWM0pIM*k@Fy3ojqFo)w2H?x$_x-Ikb`7zB&Tx zuj+h2t4XaR2g-J&h#cmg+2l-XLQT^N%ViP?IBRTm73AhZ7Y&N%bC@6gX)ub3Rura< zdcpBFQuCt1nqO|#e3N@6z~a{1o`>5|r@$$$XcxaJ8=W7w_%#ueC&ZCmBG;;Ob(2-j zf>;o7c1Wi24@}zPorm(wrEvT=WQ4N95ofZ=`vzaGHxfDG`W8bdQO$uQb$-}Ahi_{g zYvJ%)u1|lRQz%{GWrx+Soup%^Vqo z_zg~w5rJ7HK(Sq^UDImDKI;b=v%oW7S|BSo?Sd@)_w(=zj1W058fYXDjoIS9$w!QK zHQs(sOGS2j`L&Uy4)UM#TE!v-r9-Pprn|UVuYHRGk3g*+PLid6$ zUx_l(s{J1z#ssPu62~h zY4V&@Ir^IeKH(DZ`;tVRL~xf`KYrSHk#L5hx_j%1h0f`-L+_x!s$hFB0rVt(0qd){ z(|)Vc4&8$&I&2;bn4&lAGdzds>$jl0I7a-sDAbpdmLD#HZ3iaDLrLo7ost`!5Bqi- zbsx{f@XYbQ_iElJxV|p_=IveD*GUq^{DcU$y^8#*;>19FKT3c_9r|47ZxeZ;7$IUW zK~$8B>>tbeo1R5nA2z*hb8*+GjKEO*mDcpw+NI)KX^E#w_DTrTL^Dqf;6y&WN{l{= z0uRzF9VZ!Z9;KlYqYu=&ph5T);&D?$j@4^sYHPZ9}E!ufg5`+@b2rO_vh; zv`W^&i!9ib*#$0552)oJH9?iMK?*#MlVTiMF6gUtpzxoI565_F+`dmDH}Zes9H6Q< zucM+!pn0s}2LrN(*O+3Xoa9w5iKxpx!1*P)dOQLIZ*MKipt}KE;l&TgF7XCx|5NBK z5}Yj%jxki{RgLMPTswX*pZD@V*JfRAtlw6FiW=|T{X9@DCi*xlv#^3EMQZtHSSi6i zPd%2k-tDIFg)&9jIs}I_Uq#wJTdS7Beciui2^IwCF z9Jd^wf+PFt%H`tOI|7?kNg(kIS*g);3X&epVM|gi+<9s0Weam>(G=Gwd%pYM?zCG$ zstC}svrYj8EsRbbW=?3RFvrUiK=PnSGc6n?xoz3gO%2WQBLriYD~Y9LXQLSw`NZs- zeFW$Dz_XdU>Ip-vXw=b}pHB@jQDER{bO>lz_ebz$V<5<3!^?CD%ZtIqKK&sIGTO#` z2G&eAv|btO-r-R2|Ht1{Q7+!#fz3JnE#gO)5Rm#g?5fbl8Hq-g zCyail#0-~b;S|>M`21%v!7YS;Y1F`V8v6t=j@vo=&Mce&nhWVaGnQ?oN?%tT98`lcqT{mhvv z!2%284X_u-8!M`kLQ{zCr8e|h)W1hY-^`Glx@LO~00Egj2o-T;<5L8|A!roPO=qpi z;hSI;A+}80pTpTSFO@O`zoCCRbslK6P3rxc84#`w;5z3)t@ zj`L<4ob%ri(ET#*!{f_sMD4;oLE+qIW8?WlK<~^ZpUm&VU4eJ4O5{i9->_0#p7=1ZP&5!H_9E%evYD1YA4QaFLUp3VSPn)P8=tQhVn%B zbZMCN1ShEfIwxR?K*ivFcGDy4zJPj;g)u2=+t~GT($~QsCR-5pE)rU<2_{WTZh$xB zH1SjZ)FST&(JxhNI=E+vs=|?z$OR^UyZlXs@ybw%O{l(5Or4j>RNTbt;oVG=&0=X) zA!$=_BlvKav%Cm4^W4_quW#GN6O#|%)YWqfhduhG?ZaY~?$s|t*OyE9lM@R1EgGT? z+G`FR4mWK5sL^(1Zx7t}8$wu?Y_bwYi6Nmv{FvXxS@Vah8n=xr!o&-%ye-w3Z|G9{ zjU-^MJzZyYhybx9(Kl}o2V|VTZuPpymW@4jmWNO}4nqPx_5NsrB}z7f_f4r@au@6U zt*W%pU~L-t*PvEwJ|n`k@|LB&rVgyqwDZ_2Yjc*C>X_Jf|2Rp&$j5V(-baalzg5v{ z3^xI2H}vlLb!@A4q!x0}v{;_j_^PH-OBt-{KQ6EcU&>RfRvSl7vQ97N&V+^=rl#?< zOieo65XE_K@8m^r%mFk(j7r7|7q#ggJ--GpDy z>F#`NE*GR> z_PvN&}U#`>*GTnMJ65>Jj7{9D1ao-u*{a$t7lOorxg%*RgJ)r4<{mZ`$ zOSfd`^tQHZqZ`Yxz0&_RRN?zhL27Dh?Y(RtSGWYPBL6pJ)cXGPyM)Q4vQ<-L$hzte zKG=eOV*2GfMC3Da@7L`b<~?vB>r zEvpd*xL9%ZW%7E&Wq?OJ?HX0e4BG4yYfuPlC3md_+V=nJ>I!hZWB!-ped8AXpAZjU zO+dm=o^_Kw2|#zM03T0c61!5-p#iolI^ex5Y>2FFqW=`7i(TQ$b<+a>CutNHqv0YQ<3ADvI`Ld`r}GkhD@SOz z*)3Scc}J%RiTq;S59er=!7qplM~bvv=Klw~`xh8Oa_2KdmRVFq){vtV4khiizuikV rTXzW#>Lti2MgVpG6YM|hozR*nOddwXyYLfkmJsP`8ERIjJ4XEUJ|L+KboItCnC5d;NkP;>|>0V!b!!Jwq2 zhCu}cg+Wvr-u!;A)_U*$aqhWy-Lu!(cc1vaZ=Y0iQ+=j$Jm&xa0F$ACt|j#@002Oo zp|sRmil0^bKhK7`T2|qOKONLFz8VEFkJJk5Txb%(xM#Fw;PQpB8RlPVUNh7K97^Y+ z0y;N@+2Y?|a*z02pwM3hoS9?aKlp|Ly|lQkdzfj3FA2w0RUf@M#sQ-Yt`Fp9WyNJ> z8RF7-pT0i`oVjytBjBhj004+BxzM@UexoP-EY3(IQ^@|%gd-l&suJ(XTbeZZad!h^ z$@D;I9vX}{Zf#>)D8zlBHR5$-i$^3SuOFRnueH0SZ4D7&s`I>7m{6ef)*fui+xnOs z$jd^XgI2@MFk;DoVj*#_@H~!b5PQ6jfDw2G_bfh<$^O;bj%VAoG!;y+9;UH*#A6QA zi5z?#)SlG}YzmqY56f?P79ZjI@X~t&fouiAs{K2Ho{SD*Ll;N7ND;RQv=sw+Z_oCQ zIDYsmkzP+HsGKL0U2b%GykvU*vY4CO?Yge=TuTv+4<6ikHzGbCBfeL;T}AI{&2!{G zMLZH4+v}iZKCwNh zFG?MFmaBGACG@8*{f|RIiI>liWmqGDNBzS`AlWZ&Gih!>x1sX2O9MnX#*xGAiL2(f zn`+?Vd|HN-qcT^E2Xw9G=iC@?_>}q0-(;AZHouJ~&>-n0(F5YvS6Vld2W&U}Xd1X& zeRLaaalLM3LYQ=-2t)yQX0ITg5AX{iCL>9<7YJA;0|C=_O-ruz+HOuJ5aMavw3Ims zJ1MPA%Tl1KP?^H6r|_*P{TXihUY)TKSnV{gYpo8CKQd>I zu_@sQ`H4$LA@e(GYeSv8R7@tyi{}=Z0f3>MbrE>Ng`($P`A-0xr`J96pWht1XYYFu zbF4`hcixDO=z_NbaIPZGN3JFW`*Rr$JyMO8eb!vvgwH8l{K?U)5|{;ud2h`i=ORPg zQ;mfA^bC7kd9U?SkQe&7A8m4N0zGVvCVniOha^T}dSmlI_oWvXX#JPiR8@teSA}zT znIAb=?95;J1G75A{7-><4HXY2x!zvixLYNAqn}AK(URQNB`|BZ!z`hgTy|dm27?^X z$#h5MjW-^wTf=)8iAL_QO#TE+;kS8&`2<|Pp`WF4kpcA5WyY)$y}*mp8P^8l-tH{i zxmFW+-O9=e+iAG@=lAc8(#GlD*8wFSZ8m$XrW0sC#jQ0Pk{LUSNFMiF7jLY{&TWM0(#-{pvvBKmUr-C69JpnTq2p`1_HEppGkII(^kek71SmV zEvh9NLyMC!v{AV?1*#?NIolqI}ijL{LY3D3l(Lr&r{u0GJ)N^W>PB&ZNN0KZiUaX8w}VdJWLJ&icvt0N~uz z{^%D9RQqe55mpCErsJBAv3$9Mz>2gszqsu=+6N|50AjDCjfs_(A3nlwz6xJ_`ec0~ zyrx;MB??C-7Y0X~g)8CLZE>LbA&1^(b2>Q#l&QOFZdBUg8;Eulqk?WUbEPOztW<>` zVWz*4@kWou$9%lQ&_zu~+S9;b`_SFC$2;ZClRA$td+0^9(43Ao>uQ4i_WtuoL&u9q zSC3h5S#Gn1K; zelg(_FsLJ|U8=V_k)$k8cEx?@puT$c+Y?!*{MC=S&$aw?BOJ~nOI~>8KY#JUD>6EI zBy`64G9uNwme3P8mFNnM8I^aaeQymn_sPX~wD{wT-2$=FQnLcaZj8|f<0-vsCNLOG zOO_ty`?!f>co-inq>T@b9~TgLud{LtXEi0Q-L(`jpJU7XW&o z^+JsFz5!sp@2Fw{EZ!Tg{Zz0ib&?YM=x##GpN8Sz6BB5|DjRqy3LubXU{IfrNrArH z3wIJ$&c~&{%at{GI_&qh4jgwlQF2Pj?LPiiQsEJIx?6I#^YS1%TGys%>`6|;i#t^_ zOcvPnp%q~wn+|Fp!CCW%{mbV8L7}DO!P=tM_b<`0O8@ON@Q4J^9&CEkwr8l*vn1K4Zjf z$_&oYR|`?R1UW+Tw|O`TM+t0Xo)o?M&E!?6oFVe+SVoE``=9%1{u-z#(p^g=oU>0j)<;oHhfk`( z5QJ9XDHPyXa9iVChG3S0Y$nFpTAURZ*fHu16-=AF(F;Nl#7*%~5(u znk(v5^$soj6x&`XZsZ*a%}dnwu*J!Ix>@wgi@+gspQZm>@k2WnXv{%Tta4FYcVQfP zF_%_kXVp~F)U*jW%(?vCX2C%v)JwvEn7pV=44g=#-x>g_CCjGnL$ESufx(J|Ph9Km z%!{%F@ITN zVAO%8A@6_<6WR*A_}BHlSU1yh6yLt;Oz@#;wx|!2M;?D;csF zwhPxAv6qfAI-u{TvsX@dhyn3v#y4-(;cDlAx!6b;NrEiK!Yf2dp)Gmzi#41MRV%do zZif{D9$!C;Xyqsp*}1Ly6JPNzPj1l69FNH;AsRb_U%Z`4Qg%3Wk|>A zw?{X$G_|nghY#pHJ06?@A%9rSNm_D`uc`vxRvbiV+}nH>3{gXDG>USyw(x-`^^7K?DRx+{dyjc2NZ!LM=%%Da&?c_h46S!(cd`)*Nt-VUn8=D#q z1C{cm!IBA|EL&n-lya`B<28lSM&NrmJlI6E{ply}#{vL8)Z84nGY4=g9Eh{KG-4M8d~6)Ce{akBPLb;J z6cwaV7upMT%^aqom+IIjxW{Nsi8hm7mmi9DlIk-R<$2wl8H5XeY#t!`2!Dd`yf2_l!J_vW>j@@HvZ z*-!7qzur=+kI(i5YotI{zeQNmaMHs(5No+WfMUIZFxN!wco{806cao$AFq z@T!Wti60ARvD2>U{=MC`%?TnTPOQ$^GQ^PTcm!vXyk5|n%Z(W$dM{B4r zlwCb+(N$~;5PH4N#K}s4g~<)>H0phIf9xS?Fq7PEC`vT+OcUbh`5s|Z&et_<-t78N zM`)5w|A5Z&Fu|1$WhumCrK$BcxyQFMfS(SB+&a)r^eLEIxbUcLogw-p^8E$9yS}c6 z6#LSeqocZEHGwjzibolR-SF|lPxg?23ZNrnFuaqUUee71^1DYN9S56V6&hoH8r;)- z+~ot*tEqDEnzUuHW?(6sGDC(3PT67%7f5k_x=i**lG7lgmEjII-2D9%UFUntRM0iZ z^xV;Fs0{T{HL3?$G0iNsIl28@CZ*rAKi4fo+&ypoV?ApLsaYQ&p6Q0naEN-p^<^W! z@k4QovwSf?asH12@RNLnEt`YV)t!fIPD;_$vE}9E&RG7D!{*NP4HFRO&sLts=K)=Ik!Lo&2Xat0GN&|G?^A{b1at=(@~Qqh`5QIid=?U1Ja{-W}L3W_v-`h#15`c z1?L*cuSMzGKdI(7VBVg|DAo>y+}s5rv#KF-`zhE-KvEj)Zb86q>bY$?Xq@LCXlhB$ z_&Mh0?dTl)Tf3_4eBKEMQDwv1BSOon+Z9>$Ne1&RSO|8jiQ*rddwslVd7`66R^x@# zXV17@)!4ghOS$Hxy^%|dK)}}4NG+d_w67xX{uln^7z ziM$sd(OQm3&77{ru=hx_sLNuDZf2yYYfIUJ^S2l5AK{G6H^^S^6)`lcg$ph9!0!cn zT`d@4t`mdWQ;Z*e<}fzCN@*w+DL&5oyxm8E;(unworygwm)&y&Bq zGP2Y0;o0Y8zaujZIyKJ#qcMhO#KlEq-1$ML5BqfM;wm2fontt~y@!}wQEl6lzp(wF zg7QcE0genv=Z{bF7Z)_m>8(H?M>D7b6lM#LdbUp&9!JqQ0n4An!^#%GogQbH4P5^> zWC~9v7NMra1pJx#BL-#^qia8Qj*5^|TUk`)D+z>@unF$7HN8;9t!sjj`rq{G=PW8w zh|sBvJ)dgl0PyZtb9om>ykYdOJ5Gf<^E#Hav>oLId(#JCP*meFIEJJ;m}c910i?Ev z791w#biJ}w;jF5UbR=pbiw>CwFJeDuALZc>qFtIJulNdjyFYu9Vjr`U&+zeN`LVY< z+aXl-#60SU<>^s=VY@)v?PsIIyJ6{YY*{~Ep$h8CE5vl&?^U&Q=H!o~=juzl%|HO0 zhX_%SN6CklZZPSbzm`ih-vZ`bS)UVI{^%8ZOq8ZW75)<@fhdD3hJXc6^9|t@?H!l4 z^c02$*6g&jv~Z=xPu=M)q=VN7LF-@WWD@301Y(!Nmz+vP{`Gp}`TnniIu@$qhqEU3 z*bomivm;__KR%uEV?W-60gI<{vw#1<0Ucj{Ys4`z4L%y7xxs5^qww>TsQl6 zeT>5w-L}@-;rDe;a6J%Zh;I%3#3rLsHuZVUaX=R#~YJk8#Zd6u^O#x>2A z_W)!E4y6)KE6^j1Nd0fvji{J2jHz*6M}@xj^l1VM`iNnvA+B^wRsaQ{T2X*=Qp>co z8wy;Gw6H_ zMAwk)4VppJiegO&(AHJF$ZFcB0+MmIc+ffh2AzvXv7EnQ{STKf-C9DTxLpiQ2$6l3 zr}2>*E^I)f1TlhODgVPa+ggftgZG^Rx;hu@(kNlJe|4i7KbARDGS?2dsToVV6-Su#5 z#iAiW(e4X(&PIr??o!s|b&Ei$R2B|Mbeow7d|dn2*QOlNM)yGxgIi{!!G_e(<6w4! zYikaB>41MAcWo13W4c~nuE{^48yrqgh)s37Hs6b&9pn}$3&tgSs zI~dbzNP)zNE25sF0RCw4Kkz`U3(8cfSx7L{($c~Lm}$-wclcebE^hf~Z+m73R=SKm zCLSCErLzQpGRl)|tO=4rjv&pG-`9dXbW`^Yl<7+;7k9w^2qB=P+I6`&*cx62q4WTG z!wa{zbmtV;gn2t!KR`NcGWYd<+@3*Qk7V~Mdv$EzO%n^GNKVG#9PyS;kw>kk@s@$B zH+jM*07*VsH(2&hPol<86UGD&Lz1GKAIn*@x^h056AHoy!6?itbp1QT#P6<{1cUqk zxi+DDSWsuU00R!bwgG0Nwm1Q_xb*{ab6?QQWlvDyf6rU?=Y1~c`2ScS(nmZm^NIRM zhq%YY-jICGP+a`{`_9hi?w~XW4++EsnkKGWfYP?jYg&${1X>|74W7;7Q43S4D)T?r zY6~*)^0bkgn$!Bi$5d^sniR!)PXvBJ%|IYYH;t-dGNoEk2b%^$r57l)N@K}B%+9=Q zr=V&tRKAs4EkK~3-Cm2T>;>{YUFjna*7#?P#+1AaO>>6xF>8uW(gKJR*Hp+_pb$im z@^M~t@9V!glVRcXlr}-;HW6|qe_l4OnPY3aTXFnqvgu-X%u#0*e_=mW{y0g^2H1A% zCgiqR=~+LP6=0JXIaO@$GrB|M~3Un?7f8v zRsep?@7-q%NWA78Xs#3s&AW!`X%L|7@2inDJCi|`CfIU&Rv84q=d5=DQ9d?I!E*Sv z)LkI!inlyO%g=bexFn4Ub5vak#pSWaMn@Mb_JQ-hz^TH0O*8i5{3EPk=B;~{{vyKm zdo(bZt3OIhCVJ~=wQW<>n~IG9uHZa3som_)-nSwQo!e!|fExZ~$?4VB6&>OBdnM;{ zci+g8@~=dWYk zz-ImnIilA-8S(=01c@czSe+Hz!8SMFs4G%9yk;P||Rl#!19~HoWu)@#Yy8WANsN<1$XMmCX*`~wNWOiUxWGCZcElc@HurUymCq7DIJQred_9T)@Cr)MBo_X@&I-I06tb(Zd=oK&~>oI zgr^f9iNC44->65qCzJdwx#GejQ5pLC4fK!zLIO|el$7Winu+<2^s=@xy`;c1X~?#P z2dIl#2O)V=bLk6HHjIIZ@|dAu(p(#zdmP|3t$V3M614QhoISXp6eOWl%P-jLKaha4 zVx(&4yvvA;Q39>Q4X@?-leHwD9ve2x3*vuLYBLOLXeKQs=xbxy-km*ecjLS+`Qk3^ zT<9(^6;dUk!GXR1@C`(n-c&aMjiQD?BWIR6wJM!2w_3v~S*f4HYMvAl#6$sgQ*3lE z*+TaDFR7>J=NY)szAQ~kbAl~hY{9T;sH;bEzN#}dw`D4e)6|r)nb*OWgLob|bnIXK zXNcBr7HVscPHFEL1t-6iH<^fbk}S`}ZZk6s0qt9S%Qkp@! zS2Df#cV+p=fZWs^6|F{#^jCmE#u z+fAf18pqhKqxm!9$Bzuo^{N2eL2`G`;v)YIAD52BUg}HV*LJNP9d}#&$Xi>?l&}G= z|3;z6j?hD@0TGaCQl9EYh~m6DF+4ve6@41bmGoKJMQzxRt}FMqpXwZCC@!Fdp$s7B zld9TM5mF8nm}_zH^DdMB8uDI)W5nA)N9nLDxpuRZ6hi~pdsriXMR8%6V{SUl>4d#n z@SM{8iP6iBSWkjxgaQpo%En%&Y`L7)TzPe0fgCFuf6FUbhom6*(!R7YzIL-SRci7B zsRQjPlfqL!4Jtfes(Ko3l9?kMGc)BhB)t~?3&AoE^ryRIz>AT8&7K?TDuPwhBJH`V zviPR-cj3-uop!O%K;yRMX0NYh>~8KcUyxiHMUbVh|L_GAa z9dsZs!u}nZ?{P8*PZRVlGIEWk!2@Q{>i`^2S;nFC!G=5Ffcu2HNDDl(&e+N-kAWyf z=5MjhKls5M^j=z!sHy^5*?92_%(;OVF)~j537#rx%Xp2`O{xMeC{o%+M$VWDY_B5%*-434u%BW{(?&V<(fT*#XGqQc>FFin3zT%HG|f-I)FQ+mN=e#G+IHW` zA7LWliFN)vhhL@>oQ65ir>j(2D*W0(FKc_hY;B|c*BO5esX79I&>Ep*^>6bN@Xf3# zMC?i6+my?yGGru3ye3{LRj}>gN9zD=azB2Ya2mgXY(1!_X35G|R+%jREA=>eLW2y5 zi)X0Jev}W(YNQ?sc=FF#0P3f0OwmK3fPcNiByS)~z4YKz8&p(GV)I{OvHq{*<$bEn zh5C0ZcSg|C9nc^pwOerUhWYXo_^D#|%1*VQdAHNQ{$Y1rsMJUA?J#fo2J+v&5O%;y zd$4FV-u3no?&a9s{dhK1)O!@~`q8P+gz z{gRhJgu{gc0Rcgjk`z_?E{Q-uAPiujzQ6w3szm%(ml73HanHQy^vJ{?^Z){@&a$n| zt2H;98`=cH28e?g0Z1}nK}=A1#(m4RB1V}j*m#)(WCzy6&|$U4`+)VZ%Ym?czy+XZ z0E)C{WyhZrLJ}Xf%~kzmKKYzdGF)8on;=}*ApscFE zr@Dz~U;j6L`{%-PHA!5J)l^xRUYz6w1XQs!5xenL-*slgTaX*1l{hq(`{g5t?~>Qc zWDHm!n>hd}beik^LIzcWn@5f&i8)QS_#{ELc*26&GJf>-Sg9vV?l$C>RekRxS zTY6kXPMC-?ncTy6*|)3ClxJ5n!rO5Z`bBwXVqX3*%IE#XYP3~Aq~@qlwQ)y{0wgyo z&v4W#T`d!?=O)`TQr{rbaDyw059hC_X-(d)$}qO-QtUXkm6!`GF+lhTSbe0!h>eit zxfkZf%E58&=uxaQiD%z&Tfa3W;vw==Mi5Tu?uK8s$)t?*9c5f$1dRDAQ^z;IIzZ50 zVbf9Oi zw|<*D3L(E~&B2Cn!xKCK0z_C)Kaps*NnSB7E^au23qGhZLaj!m9G31cZ;}ilnP8_= z=eCpPL`R)oI9OFOkU#Duy;rd5yH`Hs$H@$&0GNZ`{aa42b?&<%>R^M{IdX`L+uy?- zI9f_I&7FaM?q-C$tE;TK&@ZWg3VuT|Hr!NCmWeQ?nU%KmVvG`uLWeOSf^{>Ec$m2Q zKxs=FlvFDgx*iG-3!p}N|9f0LmWsrVMMmCI2s!+b)8h<4%k33XOKW-$^8VhEf-KfL zoHuMfe05Wu> zf+%fbx!RG@1pnShO=s29@|1rt9Z5>6w1B_2EPr9=%^PEFJ@XIR=>mRpUJUL#Y;JCf z$VAw4DoLZ>LS!H3^9l&qA_#j7puwVsL1C&D{S?(Xz9Sz7v zpfz+e>B^W4WE!#RG)acjTRsBk*W8)Uu;rQQN#)e`AH+NtgwHgEX?qWsEg#p(qgu_M z@#Q(qq+R$w})VqLI-N_TZX5g-BZyHt`egU=37D)C6zAhRO)u2M-ppHt{{_D&n(e- ztjKUvwhx}3q+=&bRKboo%lVeMfQmB8aULPkc{X8>n!+KLf;6_v3O;9LYxQ1bdc;tL zA}R%6Y^q8m1i^(;Uutty9o3>Pw*LGkUP^^R?pvVA?TOcA5tAP@GA9as!~{hVvE{kx z{zA;D1Fh&U0~}ZS$mzW$zb#+ylAJ;4OuyGCf{St6+o>y*1>RG(Cy=29hZBOV?o~ET z5bF1p?eVJH)Ird%tY-JCRvAm~V-Xk}@IzD^J5hx0i9B6`2IQLqXy3t~JsB_Zq3JNW zxFss4ES~pkB`xH?=jxV)oiIsplZ`UzBj+IzWnd>YWp@fqt99R19(R5fDQgLmu-27Y zs+uf%U{eN;cBK6j4;uM*k8Qc#4R=z7*?|gLzRz>srG&-Uj9nRi46dcz?TJFt2C@HO zsN(AH_y(9Iuh8z4boCqN2}(ThA_f)Kifp@^PVs(dt^Q?%eE9b7E&DnLBj+~n+CO77 z+HTch2|H3L7m>R$W5Xgac4S04mYGLV>MqM40Dzf$4~${He>=_>bYw<^@CwjNpMZoa>ne*W6$0iG>R?|b!6nLx1a zY&198AJeu&`}wRIo%^T_h^$cqTzr#K=VCz7DORC|#3aK~BvJevko_L*y}nLZ1Z=vo zP9Vg~`k-!HqzD)ZG+N%*t$lgTPd8TM(6+*E;n=7?xYdx>P9YM8thl3Q)thHFXBStheXWZew86b${RNb z2OZ_cyL_B1i|AkAOkF@BrO>{bK=f2EA~61bJ*}+|bV@cykuq!L zDTUUQFql=@ZmG+CB~Y{&*;a5d+Don2mG&35^+;|js)RUuF`PdA_yrem+a9h$=_*1H z;33neUJ;cv^m{19uI?WARffjTKxzY5`9CyXVW72=v!m5eJlCXPaWC z`647h2)=-~rXW|O!tMv|$Ck0K0*eraEITHIc78wvI185XoR^^gJe#n>y1{$#v^{V? zdTYYa-(JA`rA$J=?Mz_8Ch8~bL`8og5A1}FkPPc@rkiHLf2chsssO9MP*Y5&l(!*B zv1{wo^V9gP=7Ukwy6dwU9t0N9YdoGT)zvMxt=2idM)mfu>v*Pk?F zLAV;M1@ydD8xTC6XY=xAH$&I1-WT1?kDXA?p#3lK#XHY-r{i4@WBT1*mk+?NBgBYq z0;CWlQYjX0oFS8FCzcwr_pE{IUvKrm6r^TM-(xn!)TB>87=0NLWpV&W{;E9({DsnL zsVKXxZZBIwq~%%5$I~b$-iptrOQWckb#jv1wrax88mIhDvvz!7V0BB?x}EfZ z%jT0TZx>6-lvK%cO7Un>2D3ZYPMI`C+=?=6$%Vl|n_au@dIadg44@yGFKBrlT+ral z`)pc(kOx!5WEm;yJbtS)V-`!VhsPV+Yl#l*{&>E{P=r4!LGl8QjWu%JN;%now5pyw z+b4Oe8|bycEc274s^!noa|bjZxAZfCTP&yhZ=LkEWK6TqLw(d#u6bzMdNY{h>u2wpC`C@%f>ar9)qlWf&qx3gO_|*Gg1|l#}-sy7~2rwDA=@{z}u0>>lhnb)q z5FY{H>vs_r2rYHJrJML11mU>n>MWb;@H2j^yL+#73<8Oe-wa|w@Q^$|9O6#|79k5* zUXhG7B|xk7ZUx1{wldrQ*nM=lyt^#L(k|Z(@%%c~9W!QIkXe=~gQv=7qxMFx#kdftBcI1|ja5D< zd6HV|=eNgu>3LO~li*E<;?At>YVTl`j=eFNxc{1&7kFa&Mi;1-E&hp(l+ri=>y@6* zL>y;ulkJ7=em5F^3O>ZRkCsE^IfP?u+;eiW<@m2U9OOmBmI&P{xK^m-8E+fAnY`pQ zQ90GOAJHQTyf7q0uQFm#J`KTGNy^2g^A~4_=WWYr+dfkLd)xU$*K_AI0^di?Y&6Rh z@`~4%$6>R=B28-~oDak$XYupI!3OC67+5Lq1@7KZ6+wl!pJzDnc zsvr-(C@;^q%y*Qa%#gP6c(l&O^{CVQ6M)dgm!NF#>}=1qs4fQbk+*~dQOwRo@WZ#U zs`d3UBl8EhTEe^to2)!MK~l4*FD*q$+11s5@QylP&yt94$OKt7>+DTz^_7)T&)t4y z{@XKil}tmK4&tv)_FMrQbmj3KMG$bk`rflZJ8NrN>HFl>9?_lFH@|Th75J}YKq=%$ zDq1PVM=EM6+zS&aqw0;Z@Qy`KOnT4k9|g&saedzjkPXlCA=rIM32-C~&pv#2YisK- zpfEMQMl@6hNdUe(7wRx7K1JD|r9VBw+S+({>^9gbR~9{#WWNx@3LtY51<6r^yJMg_ zXu#0oIJJJ4_7RTY80>Oxt*vp}>E!%Vu?6SqQIbWLQ<#udEjDDCn?3>0=FrgeE775nJj14=G_0pq#d;EAi~cv2F?hGsZ>pA8B6Hbp zshjV?i5|BPR>4QyhO2S(nP>qIcKTyXoy6T%*KC;NDI`H#Sy_p(*%JO7kmS@`oL;<; zP!%p{ICMx)|5L7rHG!)p!E-Pv73)Ve#bhFE$D-0ai&W42Y;f-nB)yHBH0s85SXh;@o3kb_pPOlKDE}p%EC1o^ovo$vn4baRG(Qhqh6xgi zb0k?*R|U)Z-}XYLd-mO4$QgLmC@xKuoM=Zt56(JJ-5Z&S1Ek4EKsVPtUAneP^1onV zWsAo~x%20wY!)G;&3hzRh?0(!?Krb*;H=n69W5#ABkCY%Ec0+t59j1r*V7wtj>PN3 z#GB@f7ZK*U%D6<8Qyr*(6|thpJr|=FXGmIQnW_^M(@uJml$qvh&&#?qlPISdDp=C! zjoJ$EHww^qGkIK$bEFP;c?Xs~v}2a7S`ohAA!2~9*xK6KbUe1R9cn7?3E%WN$oLG**f(Z`rjtWH%6KUlaB# zntqvb4ej?a*+x!A!ykp(lH-pZDz7O;(+evxvSj~DYz+9<=Nzm$vjl~v(krS(Wepx| z*cd+4n3vQ<6ZJdaI~?Xe(@9E#rCp#7GL);PwBf6&6WJwS z7=!BA`r3PC-f#x&Lu|Q%DZ{B9A862>e{>%vCL^g8F(>_SmS+E@u~)DubJwIWSxh$U z_`S)qb=)>xqWo^4{TRzPTF+BgVlh_#THK7Nfh@q13Q$?#Br56NiPX#)30U)-3&f z4MD_vK}wY-8~Z^A!GMK9D^WOCysYyhiB<7&?9^m8)e#T(9}e*_3e`^^Vs}G$_mA7* z2=U%ICoa_B<8f6n)$!+Gkk$#OV`(7{o0Xn#wD37OGBG5n*141fe95BiV5QPQL_GG$ z^O53%#N_0vwYlVke@lo?M8V`)6HpX$267P6Qi(stKlMGU*1q!3Xs9NCllW^L!LzLj zHkO~+!v^$mSAVbO0y9l8!q2PyJ)U2#2vmt$t}^KK-YMtN<=Ls|@#&J%+5;v^iv}th zdtv|b(Y@>DM3UHlani^yOeVL3n=_Z4P{}S5Qf1M~tGvO&qQ_HB*5HCIdWv>$^6!d@ z(nvM-u%S_rD@j>pVd1CjGph!s(c#}GU*$95*>{`wLBwpj+Ah8-j8f}vv?brF@Uo=@ynvfNvQ+`O=;7u<3vAma;o#+e)7-HIY*PnG13kz1X9~gU+ zHATVO11WSKPf1YKeRo6IOkGua&l54(o<~`*}3_nP%NJRh%Ts?qF5j&cdLAQ7hcLjw)v$vCrl=6jU534m~{Z?)#0EP%b2vB>daGIIZn@VkJ1jp z4%3dl-m#5Xb}-&|6W9 z5!nCLltNkOEhI$g%;PJOG=IzubRW#nL+ojb*_gukpb@CU_|v~*5~5BeMy3bB{zf*W zn=|hZ;{N5;oL0PkZRlVf88fgJ-t*ktsRL=}&}#>tK&m(@La&Ysesd|24ZU+HgpG^8 zvlXMOMEz+Jzbu}tqR5YCs*!}UD1Cr^DEn&i+Zkr)ZG0rzgfJ`A-wag;Mkki?Q}g>&#sSM6*J4|BP1fz)8@Y4 zCpyi?K&j^;1H0kkVKJ&nS=r@usF}flAc_kZ60s0#;93F<>2??2j>rHzWn4PQA+FkZ z8xH=kEN`|uZXUr0x*)<_3Ox;uD`Df7Oj`X79xRr@r1S#r7ac?!OMf>kA~U7cc{hb& zu6GfLhuqMIjT{NRCT0<1@g1I;aa^v>U~l;hSf=y~w^#iibjQ3xx7%Tx999U)Bh01Y z12*H(q_3AGE27*yZt-fG92P?f@Cr+!nGhqOogVoo*LjesTa}L2Y;donPj5z-69imW zJz3B#%reJbKPT;u1SN~>Tcf&B6Qc~n`hmgOj3TD9fZ+zLXCu-itZ)-Rg_;~A--mHME`UZ(UL>ZIso@Z-J==51L`oVKszRII_S0fM z?E0a1b~XOIf|zDwR_}+$S@5u%v+~0c615ZoE}0^nN|@jot@i6W^RYI6lax<`lqsVo z*q=Qs#WCZB{n>TD(e7lO46igVRS5J}q8-jz>`VU{-%-U?d#nPsomqTC^pnb1H&qCl zh}qnE7*+#DZbX_uMaynnW^lI0YBn^$P~ZayHw%IuSOU(NR>yub*m8N9Uv-+l)MGC4 zga1T&N#TjMq!pak0zNq!HbC>YB8Zk`F;p3!EM+RTj#2_5K1P7UPTzIC)o8;L4Hd{( zLf+1bwk>#(>aTxaQhI()2r%fV)Gzc4BidS!hdnao`N=xgSJ2G3bJ@u8*7w2N(O?SQ zE)X4lUUAj9f5BekrAIjUEO(tB?zI|mmbgV4{lzILvhg10&OtC_IA24i5pCMCk7 z?U@|-J+^&7RILlmz><34rFdDUD?NZ-!kOCcAP2sWhB6d?3i6~?;q1@xf8&K!4vJEc zGorlgb$b@>xd7jgOJYxP{nlqiM7qqfSKc5_MLmsxrX-EWJvrVlMqBPvId{Ru&vhoJ zsNaCWl!RTW)t~tZ<7dN?AG~bgQ;|{M{@+tgDd#^qwPUUuv1xcrSV9vS!mn^M9BRmE z9COWW^6Dqp9-gl=R7^gB;+~%rQ-k>$hr-cW-K?lT!GP`0U075sRqE>tAij$WQ0#P? zZ9y@1zPSE_jPjqzlxWz)2fYfqJWU7cqPdti;O7W38u7NEzEnH^^~}eQ=lS~lpzest z)~2fbn3&*r_UGV^7{tG_d!y(21S8_)dgxAl|k^MRwh$FbmzpV0g^F01@N= z#B|D>axdT4J@%cBLBbpe6!LfzZ)AKA7uCUDb|6W*{~PPPJWjtm^Av~qow$E8Ij0$M z9BtJK0V0wzKAmD*Hth-@-I9sRHhWVd zKJWz`+40ef0h$U7dgb;FiGC(t!Hg%L1Z-C_b+z977|qSaWp?8r<3Wzc6$53}XwP?) z)}Mo&-SH{Se135;Y5IEAcKU7Sc{7DD(#C(t!WbnilTNQLb&!rC>+Tr4b_ko}^DT`x z?t3E7=a=iat-*7?UIT5qKJt0ps{}!`^;gDDMZ!pKcmv{Q<9IF3_teZLZ|(nGUOniO zt}o3FSz61352<*}cRmLqro=%4PXl#)2M@(|xc1tgE@jvEdrtY4QM30C|-eSZ_efuT?yjQ_@86ggF;M_B9o@B8a8C4SoxyWMsuu6 zXe3n#LJ5O^q99Fno9V!At($O&V&TH}`iv$d0o?7`Euo7=b;|#I!k?m!Q11f_Ii9B)?ePmu3y|365i=gFkP zx`_P(1yWDop{#-zAutNSn7W-*RtZ1yGt%6Zq(fcZ$bDK{x(Az-_fpq<4~WxG>#^A} zAAsZWyK3oeObb>8gO+_Lh%aIFgu?f;(%^cVZ8xdq`t0F37!EPH6oJ$c~JFDmpl4VXL%s$as=tvm`nj~gW+ zp&`p`9O-~!vLQM!gTbEjvSLBsOM3eq$>=kb$bo);_Rjpo6ZaLDFqg<-w!9=X+Toe(yO5>O{hSa>)e zGk0@UTOa4bcuC=Y?^Zsoh$ymN#Q2N{(BXIGeIjWTB^KjAx6aI_TH!faN=X8Do zIrCz7@=mevAZ?9!rFZhGo%%Ekm>L4FIQ_db2TFaIR|f&oFyp4^w_C8Fe}<=IfMoJ- z4T)86Zk?zFp#syQ4T_{>+Zy&9x@a`~Eg%=+Yi;q008Aln&4XG5$i;S(iQr2}Qj#Z9 z0xTimyFOPMbC^GI5XX)Upe)^fVGYoXrOJ9;q#_jvxS=uW=ZcZ0&Y?{)!3V8;)Dq9p z3*-Qadz6qM^5i#JV=7>%m_C`1Non*Ww%)361_2h?-1!F^JA6iH$d>VY*(7*hAEWTHp zSfh+^-3eLh>97}G_gLK3X3}WGSfkH(UqHV&)vZp+@_OzRqJ0V2nC*ZYlpcHPGqHg}V`Df$V ze6YZ(!{XF~wDt^L(IasOp|h{&Ps~kU%`3x%Sm4_em*G?JkL-yzvlZyZX#hrO(gAm8 z#0V~gvjMl7%}4~+on9(Cl*%0pXL>gMsa5)HjkvGF?7ze8ygwKkNb!OrqajefMEXyw zj(>MDZOh)p!)x2HBkO*c|D6N38L0ncRcU?2`R@rj2r!iVl*Q~S!VmyCNGU>#GD&z5 ztK@tAlaz5NNFvEan8TI*H;%?1q^2J|H!71Ja;m(Cd`ARrv+91!$592DYj*7PvDB?5 zT4((@ivY?Rn3Oi504n1o`&!PiS2qQ(A=N8&-~An6xrwSXY~KHK0s7ph{Pdz+j*i4Y ztp#C^z$Zc>Ux4yNp&&@YZRH9Kge%A4)9P0k5iqIK#P95#_Xv5dWB|nJdOF(T#B@8U z@xG?-OH`Wx+m!X{5=Q?!km*4uzJ~MSqC#~Kie2(7B!;4<3Gbs(bvW2VScJ~IVWx>U3(x(odfSHQPQptckK_k53IYmD=r8G= z7K2DK^eBVSKA3eV!#KBpQBaq=rpzYd2`~jP5JGTbW~{*uEGxn+#;z7>Ca(?aYSUR+ z>_Z<>fIb+1(wNN0t*fnBzv&>X5WJ(tInK&7$?vO%-{^jGHpD?urjW78!2srRZdmN? zK*lcd#N)guXsU*(okDRba&a62d}6jaiI1M|z%g{2`IL31_t21pUd`lj?B?S`erY+>A`wile~gQS&C!oYd*`Ey@Re@7Hn36yD-Tq7wxx1filz z}Ha|UwDs(UaVC$3yA65V`ZZEd?=!$_RJd3{%wH8anX9b5|YNQ4Y^Sz!r zXp##|HQup9_h&F`%=(@MtV55C58ya9mIFN>6vOj&6hyPexBxIyvN5^2C5PB#O)Td4 z^l^)^qeAlbzd>S(w%DKroAh_bxLz@2m8c!B7I?c`o@zQ=$kaVlfw$;Gk260^#91Uc z_8+1DbY?p+TW|y_B2hteB$yGo;O3o3FI8C-bl)@a9x}1E{rv*POWc3P8XL3-ot+}P zGZZu67)YRgviA!Xm0%d9+>d;S`Qyqs*4u)#Hk!-)<5U)khoALgtcP_I{da6%Zc(u4 zjtP1+Td3sypzJeq#T32)MAVX^xVQ+FJ%E}nk}=Yi_8=J~p!1I?O@FWMJ2nn31!pIc z8U)JRc(PuBZm=sK>aDMMD2q6Sc>Ef(hICMh1O*e`l-#14d4>ANGN1t!Xh0jeB&}crJy-ywGlKp=#wOxP^y&igq$z9K z?j+c6Cqp!rZ49F=Z@ftT8eZ7p-lvYjK7=*l2)+F z=eaHl6ZE9L=v!kHku0$GU$^7@&Awza>XRGiYd@_`nEN4)Cw8R_Yu|fN-k?Ic7BYz( z$_$o@LSFA7gx_D$eH&8VTgb$fr@pY>_-NyWEBID@-F&img(L$S5QK3B=moFTenc^) zx5efbRmG&}dk`>qqGmltU0hn2+bvMsPr1;&5KQK$InX6;-&z2<3owS1snqkBe+;?c zNO4Yg0H-GWR-dm1URkK0aS!u!!nAVXqpQ`xt zD>QtQMO|Wif6peedPa$GMul_#!p;};g1UTD{U%tD(Yb=IK}niFfEMsZqEM9y!9-%h z$Q;;f0KiZ!`?nUL#1B^8p@C_o4QXue^>jK7sk;Hb!n<4p%J3(V$iD>IqKY140Eor2 znqXs0R1$%XQj}RgMz~#W4Sh5kEf@f-O({)G;zZzm$i*-L=pmwOGe^3@&3X#OpE<3+ zJ@AHln#{Wf<{q1C4Q5Fo7jECSuIqfi?9xR-G**6}MG`z*y;0^r zKCU!Pj%x!0mzzFe3MVDakmTn;r-iISbF=cgh{fU`cJ(_C8Uwp^w|!l^qoEqoxT^Is z=TMbh$@WkX+#$f}MbfDF=7EWCLAzX*DF zz0!=YO7=&nP^?o;=bx0YlpyG^4ADEiBH!-`_OhoxLfauFkL*VNf|hesHEnrp!R|G@ z)*pPd<^F57L1`)=%)x6t>0ByT_|OJU?D|d8rIFLg7;}N)pi0URAtPxNV){@#@L>5- zk!6xz_+7Dg0$6Fqkb$(R;iq8c$}h zUH=pxo+f-b=E+hyyRpEPkeL&Kjko*@F7^ZT&Bc6?U3$00x16)zB6T+{OlQ@@ zC?~+p1cfHv*WYHJ#jmILRb(%7Xd}B{1tcH_bSx(ooiFEByRfgOJe7~&Vi2h6)#;aE zJ@6VvUpFOR*&%*k_>KoBz4!TCCV0;iZ(eRk%g*->!uNS%hM_$Qu@lQtKXV^zA)jZD zcp!X@_#3ErU8!jQGdvN~9CT#YSCl58*?qB=97HmrK7?8BRgMAdqxh(7)+c!B>L+*H zLHidVPI{pNmTN=7V%>P8S6b%lw9r;8WpVpcsRRVO!)#Ijrk5~D=4?_s#4cS84Rn(; zYN9Oyw)2K+w-Px?&KLoR{eBxQfcX}0niqFu!LaDYyckz%PvYCZJ>z^lJY0M-h-#0I zn`JnhL4t+x$8CklvogG#V=)5$RNW0F(*xIWq&oa{i_uBN7hY1NgW55!awj~KoF7NC zPvKmi*YhT`qk%9L@v;6slpozMEPe{$ z)C5|raJGfH1RIEKlewPT8cn{7;TkgjZt!J0r~M}`h-*hzO7>Ro$F)A+C+ch)jCuA^ z%5Fetj)}*)ck<6P1@8Tu9uWn{GpX^kr8!Y^H-T=?x1#)$@HwmK3B)q{P>s2C(h&X{ z3Zw<_50QP(CuptG81Y!8y|y1^&LKlk+f?&7&_#&?B2e*VtV%F_y8w_|(fD7C-(icfw|s5yvQSPv=9!)2_pm=~~BCVN8Zp z5sLkq@0!Eb8{0rS-svgc!K$qohsiKrh_b@UU7Sx^ul3S~E+_V)SfA*5U(g@Wpxjb= zN>pMZbOe*1+vL=H&c;8N>6DNusDKEVIlNksD9No3#y@Vz#f_bG2Q zC>7}>dk4ZRz1zopo+Nb#{mD|9%-dzi%Gq$T%yN*w=D{p5#7R4ks^R}UYC4*^NpTz= z<0*2SE9xy96_uwJ{OsguPpsr9;9~tcD}YvS+R}kRN|2Rxls{86rp<=m>ncIVr=iYhxPSMn$?J{~@_O>tmn^j=gQ=c{DM zP4_vLHcff^CxluB*sD!`zZUrA-U2h=edSc=wcgbI?fA9WP-q!5Xa!|5f%7r?!$6_r z0ft;q0zm$C6S}-v*6|m*~PMygY8+pA) zd3-FD?@lUn#y!3<>~LOF&_43~2rWgIx^3EW*TFWXD`Ly9LSiyUk_51T9A`%?&I;vL$9&r%YS$6hlV)zzO25~73=k0sVz(o^%R@%d zYsWl)T!t-F3R@0qw@nV=jvR*-ZTcS01G*V{X&BSk2AL0>x}*TfFEm z!}^}ENs_sd0Z!9m9PD$PZdFB%U5ArVcnV;#m&ZATPdd+-haQz=~j@ys6JkUcAPA&a?i%;VA+ODqxsIy;i9!F^qYE=(};wL6G(f9+RA7P~$ z4gP{M6W6c!(5Kv~+yceqIw}6Pq!%Ev$VLphAy>BrBzHF`U`>}C$ExKp6}l0=M>sVV z+@OSwD0}7>og*w1dTv8FX`(cZeR4(Er(BZEs7CTWq*{_~`NSllJYnK^k_gTyae)K4 zcz`*Q8ecx@WpX}Nf9z8VfE+2fufX+Ek<`U@fTgA+BPy}ynx$8~f&f8Xl%?QUP8eT` z4k~IvLAmX;%#`QDtU?jrbpa^>kB9F&l50~}L`ang_BaWX6Ma(<F2D@-QM3KGV;;{Rkunh#cR|9B(0LE`Ba#O8pc>n!0 zkuC>8+;$w<-=cO)1ZbGhev89Xa_#0LHz_P+@uA#AaqFy4ed4=S|AJjfTxa3DhTC?X z-D&^GB@1IgS|Cc@5b_H)@yyz^GBq2$iMptuH6m)mEv!Z5-M-5Pn{zP&X*N;uN2S*{ zPkgC0;#1YpcxLT@Z6+rmFLD%hA@`9C!hnvns6GvwTNzhk-`;N46QR`Ke`#!+BBBWu) z235@O514*EYy~{6x&>i*d|T%&Od4wt#%zhYXTW%+AwToo3}?<^hqTsUK zRbR14h&6w6h-?&(_>c>zHl6bx8n6*G_e&@B%yf_20M$A}vr7n&L>b+GDf5F7g@KP^ z?-NJdy6&NYsm@>wTV8#5&AMF&LF;~NdZIn|8v>FYH#5P?BF{xX`VT+f$9c)O8Qb`_ z-@E2>IY76mNp{+{kfWH|BWENWtV6_HRek^LWA^>kmm}D3!8b1B7MyLq3XO8@@x{vS zlJqc(Dsd@aHpT4${N*A|Hg1Hkbi{orZ0XANe4*1)+xEbbE6;vokM-G1D5QKY;d6bapWIryVVTd@(Mk_f8) z?$6y`ud@$yWeYwHNxDsMcoio}eY@xr$&pu;GkBSMSGSk|S2|TakWRguaTxYPr2(@6 zO%^rjuC3P&APD|3DyVhXE?D$XzIOOela%8sBe7?v{fcMPX(Bn6ycn;DxL_u$AXU+g zcL$g&Upi8*S9~d7U>9x)P1AtZ50R zSZZY7x<{m&JWP$cf&|2;yClAYQx%O3h^2Njy^bXvdZ{kBuhSTPYmk5o)NaN!)zr*9 z8SrDdMPU)3f-G5qX5`NBJOk78G*H@WBpr;2xoawWp7YBAMq#Q_LiBS`miVEub7R&38f?l`!*zu!kpGwJwUnCm#OoV5 zS~1rH!}Of9zEFjhzs|y6&qm}}7gTncpe`!6u7(E*TGFeRkAuwGLn6`vu{rE|sGdSz z*}A4pHxVA>`DPbCx#hoaL?-3p{kYUYmXO_F)=3iv@q&Jr+E8MF0%>t4YFx~jJ{9pi zkoNB3B!7J2l}C!3fyCHRil-UAxzhAQGxaVTx#HJNu72266!60e=6Rt-waz?|i{phP z5TnP)v!4YiccDnO9>HUP#x`jZrP%T zWVq4%lnw>fXtT*r`(d~1!5HtZG&fQKApOf<&aeK<%}(i7wQ_TV>z)H{thNC)WCTVa zg&^bGcR6moCQFbBMj!Svf55N)5U!TwC0h#@bFI<%9Mq1cpN@U{;+{Vb$}Mgw zsiIEhb~~3+AQKJV(-!y8j-p{@{y=V(f2MY+Jn6CAAD*UV0P*2?^WC+4<&E{g0Y42Z zFn$gnC5wPtJrkMDY%i8KuA)pMV0ejw-1|OVktyk%VgoT49mNMI4GG1}Pc0X+L7nw| zrDq5jkN%N+^LG!oP(2?3+l=%zYDP!9Ld993YUQ!-ZLCpP5`{XMG)@%V;0FgM)3n34 zELGG-MN$M>A|t)JdonX~QVWv=m_}Vm4k;;K?*FzZ^D^B&MEl39vmyK0Y``atoi)Ff zs9#vysF>rtoPiYhGIA23$O#QJ)Bp+U07@^4i;;Z@JgHx-W-FsH71V7yQLm2q#BE*p z?qZ1Omd5ijDZA;~!Ai@xmA#?R&Ug8C&J^It_?t%7=;&Az z;h++IXT&t2C!=We!IaO!j2@lcWvPI_`QfVJDr|Fu5n8a4Ty#sSmrhyD4tUfQIgCwJlWTSxrvj?3)8i4+UMK0BhOT{xuo$Iuy zGt-djoIezxUzT>qoO4opWo%=f`r%$0mR)5^)+TIRbBc(_pg^1e<|oLgHaprp4!>lGj=95(mLWO z7_*#sTTROLCS_jSv*SS8^_zWgi?APIiK9nUQmn-v908yb;scXqgwxm&$k>yW<2}s& zxUlcZdM})LH~0s23Z^NLb?_*+1gWHKynn=TO+;|{RE9e!Y!I5k{HP|_(?e8h%2xqP zRZ(ZQg6O#EtbdCaHI6^6bh10Aw?-Of3Dwwz4TrY;C=i6PRqRRE8YN4_6CP)0Y}QMA zOeeo|T~lXiC@D45e3x`fAIyg@*O>ghZP5y!BiqFnxES$?@uQboe`MH_K8W?1l#HLk zp`q>XQh1e`lIJNYimp(C7$9K5UcdIhC!<(LQQo$t*SUSgs0O5VAu;uDyI-a>wZy)6^y%aQmB5?LQ0F3ASd(D*G)QLmxsRyp4}wE#%A+IQkG0U*&j~S z(qJTHbAz5HFAK`A%at0ghqxNxx&}j+dlr;V0MtglQ!4$2t8whw8Qy0SjYu<_K0aBe zZaMmR%6x^@Ua`E=IyxcOZ34DHm$VEmgNm3uy(>!(3@d)Ih9`;c7>PA>y_yb~EIz@c6u0kRoV<#5HA$k= zdg&601jK-m{wAI2zn;-v{^!A!C@5HSgHv@UK0)6Ov=62;w+T<>M@%iyYt3)!PyF!4 zxe8$4G;k;HWOL7F)7M+j9+6&vXr*-o29I3vb9M0e!a&6}wrq%$20s$Pw@Z4?IB5M3 zKa->CwJ$8uwCfZ7!V%sM_}EY#(uLypGChd0Z)4Jr&{=FJgySW_aTX}K-5#U-^P_He zr4vtKxF4HRzmn$w>>+Rum;t`xK>C5 z!0864%R&zLNwJ}tAvCq~nmkwtxe!C`Fm`Yrh&?Q|6<-aV6)&58a5rE-hbT8Goo!?= zV{!(QntjtteIjWTMolCW=8%RoG`aWhJJ~W}aG>)hvN|rgyia09XIj#FMYdmC^pc<}8V^Z# zJv|VD-k1?r!SWN4Aja=$etN0KZwH#N!#tSz2o#~b4ks^3oC~h9ZmSL?&gXAB@bb7g zX|#C$YrMyYxtfN!>g}O`FpZc0<`Wrs;+!{uX`CwWs%&hwAk@C*r>F&LKpoI`Kc>oA zK(A%V2qjUbr>&V`=X)12b{jzGeUpu$6<#uH*2c6`#5Z?~U~nh6hzbz)XDZys>4*$v z+Ob-sP4XNr$?0(L_TJh4n(h{hVnl{XMcOIWi5Dr`8wOdT5{5f7LIFeBhOdibDNKC! zv-L^)1g8OffX!(^?iBOIiwxUIR#`^_V2-sqcr}C0?+WrjUUnY^^jfDcynMnm%`6p| zHcq#5>4OY<%be1>&7!NdK<&G{gRV9^GhYMPV8;EF3YbDtuDz1D%FURb54bb~(VZ_Z zioF!l=W zuR1&*c;_avw-Z(!{+|m_zqM+fqr27lq=gL%UIashf$j7Bw*I^h;wV zS4gbGbIA%~ke^o!t@d4#wrq{OHxVmfh#L)RI;=-P! ztnhXUY&>P+z%TIXjVI~k#Q*E+D}&;S*>D#rQe=Tbfg)RqI~3Q2#a)UOcXui76n8ID z914Yn;x47QyX)faE_c80o4Ir6&iRo^&dE7Ro;=U{PI8i5pnRNmt~jO0{LZlwXb!AI z*LLvPD!2GtsHB;OJBhlOq4;#pW+6HMn}%6^sWiyD_sM_Zu&*^i+J<9FvxA+&u`f;BQjYNdANR8 zyCb$b^--RcV=61fR$TFoj+I`e4LOHU9QUkanai51eWhw-XETBo}n-^EKK(9OTx zusp;KTl`ITN`N+AL|K>J&WY_V3@AFTCmS-d7!E4|8G79b<_gd{M29Fsp(7U4!gklkhb0|bKt^JeZNGU2ZW=ow{T)1_afRlZp7^{y+wm+(fBr7{@7zJ3-rQn|o|Bv%qo2~*SyJBgW(znS zbPOIhSJL~XrVOeonU@|pX;Fxp^#UR|{L*l%=PFHxK6JL0RNBti>MC>^U>UkE$c#8i z6k*oCHKWr$6uMgq@}u-K$W>j4v3Xz7!BsEJcDrzR%b0ojDO!XpU?eXgBRgosh&=)Y z=M2Tt&XRH+1KU~nDJ4Ts-)C+S^luLJ#r1M>!>~1vo=e!;Xfp3zL=ziDE!(*it30Nj z-51Nb<+>XIz0|#x+0)6x)aGSu--N&3C7(&_p>j3jt16a@5eH z<~p&u%unO`Bx69@TxO9{5*3D-;mz6#i8}r-(P@}@VED+k@CC?YXVBtvGNoC4-ZZ8j zG7VY|(*#Lo4Zu{xi!zjfOL>WHT6_5?K|>|aE;wEsPsSA(Y_!MJwXTo9a1I`y8~0@O z&;WkVN61EHC;BOc7Lx(w`!z07bmCIO`l8 zIY=98A^{4aU3a5qSi$JBf1185C}AN*m3$Hqne*g7ikm#woV$06uI@M~KAI9*2ybB7 zvlj*(x-pt5yyM-F#`}M-aH(8@${Vdp9eNVcxTQ_ii&iLy=+q)DL36B0x&!AUZa5#d6jS%{^5+^+(G4 z;`3*G%I9NXTl>7S5ay%7J+Vrn$p5`MU+ocRm0I1AaD|1*kyaG(IXw{X>r2Tq3!lC z)u^lw1X9TwTDsLvFMDDt$Z59q1=W7E>!^U{9P@q4;g!!0)@p@rawYSJZ_#Nbf+a*E5JW;c3&F|QxXq_nR0-W>8QGW;Uhi?--p+CcmijM)vG+aS)ouu- zWIj!|V-za+zsWQo?3$TQwjE6Lb%{TKdGwYD*4?gZYklu-b+?P-V%sGsA}e2cWgLuq zO3v?EsVAgxn@gs>ZTq-x{u{ez1&{an)|&%3ee5gx){|Po>B8`Frsl6CWT4svFa2iv zrBwLIVZI9MvpWIvhWv`&VkbQB81~)FV{yzao(gg?(?SxVrH!9njX$wpx2X6E;=cRh z5!8MYko8e~rn7h{j7(Ejx8TuAm>wBWKMZPz%+F9^*1-yK0P_#e38;lRE|}2`3VPJJ zp#3k1fShIaYOBLrDZMwwnP%f()s^-+gNa^v=%Z_}f`ff!0fv`ADbf+?KRG4% z{wJl&w3kwLQ?9R^hHg1{04@K+s(R)%&ptx^xCc8E_Ua~Ys_r>>=`uou3>5`jO+guhrS>Xn=mvA6nT^gMGR0;n&SdFnI z2{4rS4CZDUsIAq{#ZV27PPz$hfzP2V+XRr(T~tAj@#!;?w18&2$Y*79g=`LWIaKAy zR~G1S(-*-uYHMu`r?qvXFs`M*u8#*IV}Xy6AUa>Q^w<%6@w9spPZbx9dENk=r>cDa zmC%dFQ0#rJ(fIn!t~}Op*7Rdbr~9$6b{EGD962eZ5e4bO^yoZp&8Mei3@-+nkgQ|O zs#0U4fyQ=ffZ^Q5Vl0YA%5(nKD*2Gr;u&|ti_`sIqq!eVwrSkT^^T@LmAgE|SGocS zaSvEkBkW05ah2hVnQAS^x*q@iUU7J(5(fZQ{E$WlEnz!!mCvULo@GWS{He#y3Qx+hXvwFflFX6QB z$zvIOKxi9T3fWxT47-)$ay&e5#|wb0ZB(^DSv(y5)9%zF<^oQ5O3{CrDH?%G);0BF z#1Oe~P7JH87?oXBIw;N0@4m~nwcT}1>XUtof-p9sezIrsJ6lII>$msjA!GRNI0}!7 zEDM=TaT)HFOBxhFgETf7K1f7(4}SWFM(*5RS@GeHlP%Ej`-gK_-|0B# zz0Qx?`if=OTO z*PGnEqzPrTJS2=*5cnlw?bN@^zTpRU*1QQ89W_%AJ{=R2kB+P-f@5Phmlr9Da zMMZ}y8U)Z@{B%%8-j^G+k? zRyvm>!h-^X;c3;FW7*7>??XQ6zH8&ccIpkPatipt z5ghuB<&_xFr^n%CwtS_9({9+8u~%^(TUE=3o)m88Gc;90CzHFxJ%c7EEBk4UCG|XO zQVQ>Y9YNef8Ep*~yEl*WS6o(3j_*?5`=7@l)B-@XUKW#lDj4uR!p%oWm)jm|IE#-X zQddR>orL>tp{h$sMn)#B#N>QZP$VscXTi`|?2)5jn#C77$3lYR7uNSRy{ z;C#|~tdf)z(@#&G@}XYwG(W?U46b2%Eb?5RI#cYTqApigvL&%}WhM`y7+$@v@aIS{ zAazw9J9hAdE~mmT%>RzUWmB2*Tvr8mlG_J=Q@iB1dzR~rZP)1_^VIuZeNw_YO6HXKaP1^81&A~^xu`&2g;7@7`Ywp={KTOoi>1-)QDpYP7pF+JIawS#jgY$@NJQK%C-uiC+dWBg+ z_4XB_{3z5P&1U~Y3kck~XpHquTiAJLjoNAJi{jv>AQ@L1PXB4uJC9J!j z-nMH`EylNylt+YgRt+cP1B0yxb+oaq2Za;|uKGPd>PT@Fg53SZt)ScmCguxHdb-iM zrwsWTcfZQwV#)38ZDG?do99DHL(o$Q+fyHCHWmAPe~}-(yPOC}*<)0|##2$_sh8k? zI0LKE-%AzjOdQEPwzHq3Rh2#*TEanW7R@y1J9R|Wouo#J`{$q4_ zd_E9M3*xRH5(tHGdUg^53;-KbT_7}Wn=q{Hsz9+|d;x~G-;7}m%!Y%1dQgn9apY(9 zHR8%`#nredtaU_qhINs$xYhh<5sH2rA1iY?_pytc z1ht&60yeeC7XR?idl7N5p+47k5qT05PKc#z0W#~4`?c)CtTY|J;Pf5*N#R+~@BuLWNEWQ<=*W|{^ncghZP<5Y|)8WGM|E8TYjFY0UIW&?x zQzE9Z2=&;u`@GU53sx3d)j8}<+YvV}$zPz>7Ll^K4w|_15?i41vVPl4!|ucHrT%WZ zHmDn=RH=qR}c`54TMp6KEo-1SuIs?EHKfCYO>MR0q zlkM=T2lAE>aBP`5>}rY7uPb5FD&*$y*L&8o)fknT5S5i^YfFiyHVT+18by`B5}0x7 z3n-FS&+PVTV{k2< z#_{%#Us0I6mVq!4&9= zK1V|c@Fs7+b5h)Y^-Duk9p9HLz?8@o;N7oVFnhGKnTWn>J(4?Vb(^H9L2efG=xB1^ zUO6!AG2Z63#j$)i6KPwbkBQ`yyf=z)X!?d+ZeJo;1Eqlh2J$WJ!!j-+kLH;qEcHWU)1Ym zK%BKdbw52nYDOCp;Cv6Vzj_?{BC#}P(#A@KP!hAe$e(&Ba37;hr~^=6qE`|4np;Ux z&9dh-WNy`zz{>dw=*GFvMcZ?}GU;ob!|1MgIO$q&JJytx6456|yo>lbwqQ-m6YfN+ zB0yYj7>h86G)0Fh*lH0OQ2nO8G$h=$G)7kM`)1k8q#IIIZQI-YFd$ZOgXcYGRT8VU zH7^G%Fb^Ra$?W4>4_@8+U7e57NOY+PMF4u?4gm#6U1F~*TTM5t(9F%k9F!@sIz0B( z&A-eR4WQ(sgifq``XPtC(>wlO+W@Q5dfNBcvh>XsjtAiUh~9`JlF!)j2cOCsxa#aI z(CStxdgzk(@Nfp^d+Eq}-5wSAiBNH%d&}W%8A!we>1&@nn2?Nxe`d!t@LMUi(DTc= zI(`%q1WOUSU7jB&7@OW0Q_SAZ7kyZwR}R`O%pFoWL1PF|Oghd$Q9D5^9vX^>Cj85L zQ-G1_2%m~x(&g+Bx06fdX)rXdC#r8}E)zRj1Kvz=42UO|n#5{`{mZuKR5Yjd28mXeI#|ph6 zPeQiAHayT1tuKm@k_nZM%K=c;+;s5 zLIz8i-3rbrWKQpH`R+x+3?vU~s92lpd(OVHR`NNdn4V{I#`s}P+2ir|OuFR#*-P$B z=3G{yN|iW=)pALz&F`|v$F|1hUgbY2E)VW2GQX|F$LMlJWlUvBs=40eX(!Ns3z-&c&V5qFcagcG&dH_8X6C`Cq&s0n{85D9%*~U2sJTU>@O3Z7iGs>| zuy1W49x|O|vUR4d)LVdd)$5@xyGmxm&Ge)v`BvwzS)0{#KVy^dDwo2$y@9)fnA=yv z0M`pzG;TI2e!{n+y5GC;0~Nq_xZsIUZyg#- zzoz$aie#9Vm1S5~&-^*M8w5dD8_(i|eCy|sxnBy+@;SFMVtb45O)W}Z&MpWeVITaP z1_es>Euekl;QN7qY5VLAlhq)l6YC#T5@(rnA<=U~{3%J<{A)(6kd?G=QSjQwn zDTk^^nI~31%AcHLs*=8ZnUZ(wzdJh;1vegj-z?cA*7sT#(6{pG6HzF;in{#Z+BQMa z)1^j1-de-E9Rn2?FdSMrq5l&N93tjii*^DOm3|RfrbyUD@JJrEp6(F`G28$MUrb;^ zC#Ayl%|xsNPmb5#><(cG$8mmH+W~nYMBKe zWgM87{a%VOIEQTH41Ykq)A0X_(0bj#u%--X={oU7ZF;F`xu|D$Zz-vL=sCcr{Yn-C z93%EvG8-clHtF$@3J*A@PMdbO9MqUKX;M0Isw4;}){6m3&o>gxBjZbIKCYkY-}p?p z7=$_j7RJ{-Ym5KPWNvaEC=HNu-bNC(3&ISI^c)8w*92;k9YT#9Q&f#>lko#p@O?Bj zh)@V1zs8D8zZN*Qb~xXV6;rJ@B18RdU*9jd!3aBfx?HJt&DW_rXh0s9lPzA$T>Gh= z%!lubJ+voJrNRaF?YG~7D(J2o8QZq=I&`b(cK9i20{Kn_wZkda@DdxnI*93lW29k+ zmHIDJFeh}~+uOC+G=w_D81k`bozPMCZW{BBZwo6bVLJtA!=Aenkh~!UU;9=h^djOZ z{#kKTrbe@szxbHB0_ z8gXDk4_ZOv?`XDw+p~W-=wyc?40y3IgMSyQ8oNH_i)INJa)RORZ{(!&yoPT$q3|g; zO9nk1wd7JzK?YxP-SnT|H*`aCJm*$3qBJ|eV*&(v`sz1fYA!a@lfAO!^W$~_C&-5Q z*{)%d=%1l!-RPVK6j;GYlAUb7;vv6S?ClNS2YumPs0nrXL_s}d3WpCEv0aWvbo@4Y z$zcI2uStb>H7#%9P%Z*zeoafXW=zaZha)V5DXhrDYWql_l^X!ZwCb=|mnk;f4gq{Q z$0CY=(5=e-R|B3NpbWg)DRNiOO)fpY89gIuR)^(I!#4K43Mrk78Uzb5nT{W65Y4J4 zQdTdN?_MiM3-Q-yhWx#jt0ETm%*EXgd$BUpS3K>;&6qrnt6SXZM$%`~8pMcg)iT&C zE;ByTAfU~PTT5Qv(_J%q5!w|I6#1oOO!)YftK<5l5SC;+<)`k_`U;=Tw7rq>{a6aj z!lAkj{3d>dK%zB=T1*&Yyc0h~l>ReH!J5>nY$NL7^XhU3Zsn@U3w$rthfbfNhfeoi zy?zNX8bm|7?~uHR^=!duwI1JBuZ1Jbfo5Sg7I(*gcaKu;XHO?UWjZJsdp4t7F*|1s zm=O4*e+_6K;X?hf5GdWf&cIQGP>he<_G%-jAlPQY^)n!@J|HLU)+c-kbhOvImElfb zQx1fqxxwSAzwn4#mU)@L{E{wYFRwL=I!n4R+FT$op?;Nm_En-lx&{?=Y&R1o|1Li9 z(}HkurkDkcvO4N+v=JlFkaF48r{nu?Vu`l5(cEp8_~0xL^lw%L^%Xz*xLLa$v|P$+ zzh4F7YQ*^a-Vrae9grf6Zf{K}IH;c1CC_5V6L5FuLS$`_?MdAf#q*c6)dyiZX|O5g zmL!^D;IiO@4KD1J=`{=fF1dbQyI9(eOWQrdd&UOrh|!Q#lCG4YeklC*li)OuWc3;526Z^K0p$}4JZ`GA(8Qg2jduU zP-CeQA38h2gxTuW@mYxZBSeWk=Zj*hQ?)fnmk0X@4AR@gHy=8gO-3zls_5y0esB5F z@8kNyXJ}v7kCB9mdrr^}A4Fs{ME~6tWUiXpsM9Zua-RI~BIvG(y6f$)(Q+;=Y?Go8*XJzjkljaKZm$w0u~U zfno9kHrhjpxoUidLTI-{Oi6_1t?#hGx5}Et#nZ7NmKK|@ zm7y@qu&98%%v4kUT!*Vb^Bh`S*nf#EPEiVkqh5K!4DSpwzUv|DYZ{>OkbladDGSPL zS*!u;K4%>kK5?|>K5OF)BE^mtcaFk+AZ+e@gEMN^n{_=GSwITW`WlYiimhQf?4=uYMH2sIXFPAy2&c8|-pq_FMoxPE5N5A-@HE&@&h$SqnDVQG-aMNa8Cg0~gx(4RAtn z55k#lP}{%;IK9xtg1Z>NWBE1uf1_|xQ1$FoRjZx0T)x3kQ)Jpl{x1$!;(){l5nHNj z1bDz2KaI+t2nXc#^$`ef3zxpEv9lwHcnSCNy4z&~>x+z)iCOCq)d`r*WZYvX`Z8V zQaMVg9P{69XVYp-9~olnrZZ>^zk-OeCVncLh<{^8&16{6^TyXBjvl7p$*XbrL`%KG zi7>Q_AxpwoYHPP{XhOj1*DkyXWvB3`yH#xYkT%kFO*ytxdVJc`q$e<-9)oR zOKW?@0}d()Bk@l?d{5couKd>ku^M(Zp>HT1uoD!(B;+TzIh^L}sqBPjd!8;o*e!k1 zZX?CKHdY^;r;y=fQ>)|7M<2ND9W(aP_qGn&mnfhccv~zwukX^>66YS6%v3W?P_mHy zbaZt{^ivNFS!sr@h$urn03giUoK*6y{NM&tm6nr7#=D*R6`>>V(y52AaGsQxQy`e* zqTjXHIrp6RH_!prBlOBg>yLe`7-4VvCJgH2kybFuZ*NRS?18Q*Y9P zh$<-jf0}Esq5}sQF0<&Osvt|L(^100g=}4(O(w--o`C#X(pc`fs;qcOd_S^^i)f-?jJ5s@+;4*0-h>lJCyjGDay|#BMBTr9VH{zTM05A*y0T=ry%Wyw{sF|vy97-7Ek^DJQBhX?Vbc&t2`A(y@mUiFAb1V#ZH)W-+@2;F-?@qW&bzVB^ zp>qQJL8*e)t3%*P{7O!SLud?c=Sgj#5l=!*{;rVmKY3@MN0QjgZ^u>TKpzcXHs^o4 zlSWDO(jzE_vR(9;1DHD+3;Mo@*9d4oX+77=N&d(&@3Bv)f+nyV=16zomiq@*2wbfI zziyis);vfv$NOE(;&%tP8e0P67;etCZf?uPH>Bl3fO&o2@Z*`Vcu2gtQr?1vaIhSj zZvl`FZ6!&6JZPnbcDE$8k8MVfTfz zkvuNjU9Q!5x$VV&_=rMh4)s6%z_MF4)b#2!IY`U#IGjVKq2$bSg}sJkKH?sD1QqH% zS=_rHgu7Momv)Z%h>5N4?hz6BKFXEIcTe7BXVgeRyF4fpA7TglscO2Y4(@~P6xV^|}ZF}pd*y2piF z5?;B~xo15xdC0p$Hg_@LHBz3N4O&|3<;S39;HNmhe1jmi`&#ae5?Dq0o-<_i5D7s{ zY1-qzu8GS3EYfdp47en!f_N$J8m3T@sl09)-CvMuLgm+^|Keuh@tY`bKrOB}?8*h| zr^@9lHeZk$Vzaxb#b^=MZyIpfqQm{~54x8;dY_=B*LO(Ytrl=$jM(;Os~ObG^*b^e zAr}P0A3jqskc*OP-GYdwDusBus*!TUcS6Xz|6vUrIovqU!o8xtrm#?M1_WoZmIFZ8 z2N>ucySw_ev#VED7<%^~X}RnA2Okliw_o;i*s3oVXy(8x7{z4jqgCq!345o(X@NP| z54%XbX&a?fn8EcoxvcsH+~S?O+rBy^PEH7;U57mv2zcC%YkcsnfG?TdZ7_HQ4)qB! z?IUr7$s3B(J*~l=-u;`=Q9c|V4&tG~Dj*!_?z zzr%BMO|qA0`Zp!YiRzttNtNp&zZR7S7(~#z0z+Z6+`@U9z_YRHF`1f@^=dw%#2-pv ziw|Ze{K5>cL13R7mI{Qai1+U Date: Tue, 19 May 2020 23:27:35 +0800 Subject: [PATCH 45/80] enemy.experience->exp --- project/enemys.js | 162 ++++++++++++++++++++++----------------------- v2.x-final更新.txt | 4 +- 2 files changed, 84 insertions(+), 82 deletions(-) diff --git a/project/enemys.js b/project/enemys.js index c3de9b33..cf035ecf 100644 --- a/project/enemys.js +++ b/project/enemys.js @@ -1,84 +1,84 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = { - "greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"experience":1,"point":0,"special":[1,5,7,8]}, - "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":[16,18],"value":10}, - "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"experience":0,"point":0,"special":[1,9]}, - "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"experience":0,"point":0,"special":1}, - "bigBat": {"name":"大蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "redBat": {"name":"红蝙蝠","hp":100,"atk":120,"def":0,"money":5,"experience":0,"point":0,"special":4}, - "vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeleton": {"name":"骷髅人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeletonCaptain": {"name":"骷髅队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "zombie": {"name":"兽人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "zombieKnight": {"name":"兽人武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "rock": {"name":"石头人","hp":100,"atk":120,"def":0,"money":4,"experience":0,"point":0,"special":3}, - "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"experience":0,"point":1,"special":2}, - "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"experience":0,"point":0,"special":15,"value":100,"range":2}, - "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"experience":0,"point":0,"special":15,"value":200,"zoneSquare":true}, - "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"experience":0,"point":0,"special":[5,23]}, - "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "redKnight": {"name":"红骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "darkKnight": {"name":"黑骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "blueKnight": {"name":"蓝骑士","hp":100,"atk":120,"def":0,"money":9,"experience":0,"point":0,"special":8}, - "goldSlime": {"name":"黄头怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "poisonSkeleton": {"name":"紫骷髅","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "poisonBat": {"name":"紫蝙蝠","hp":100,"atk":120,"def":0,"money":14,"experience":0,"point":0,"special":13}, - "skeletonPriest": {"name":"骷髅法师","hp":100,"atk":100,"def":0,"money":0,"experience":0,"point":0,"special":18,"value":20}, - "skeletonKing": {"name":"骷髅王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "evilHero": {"name":"迷失勇者","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "goldHornSlime": {"name":"金角怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "silverSlime": {"name":"银头怪","hp":100,"atk":120,"def":0,"money":15,"experience":0,"point":0,"special":14}, - "whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "redSwordsman": {"name":"剑王","hp":100,"atk":120,"def":0,"money":7,"experience":0,"point":0,"special":6,"n":8}, - "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"experience":0,"point":0,"special":12}, - "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "princessEnemy": {"name":"假公主","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":18,"value":20}, - "evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":1,"def":0,"money":0,"experience":0,"point":0,"special":[2,3]}, - "frozenSkeleton": {"name":"冻死骨","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "silverSlimelord": {"name":"银怪王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "goldSlimelord": {"name":"金怪王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeletonWarrior": {"name":"骷髅士兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "ghostWarrior": {"name":"冥队长","hp":100,"atk":120,"def":0,"money":8,"experience":0,"point":0,"special":7}, - "whiteSlimeman": {"name":"水银战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "slimeman": {"name":"影子战士","hp":100,"atk":0,"def":0,"money":11,"experience":0,"point":0,"special":[10,21],"atkValue":2,"defValue":3}, - "yellowGT": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"experience":0,"point":0,"special":0}, - "blueGT": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "redGT": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "blackMS": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"experience":1000,"point":0,"special":0,"notBomb":true}, - "yellowMS": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenMS": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "magicMaster": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"experience":0,"point":0,"special":11,"value":0.3333333333333333,"add":true,"notBomb":true}, - "blueMS": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"experience":0,"point":0,"special":16}, - "redMS": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "devilWarrior": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "fairyEnemy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeletonKnight": {"name":"骷髅武士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeletonPresbyter": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "ironRock": {"name":"铁面人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "grayRock": {"name":"灰色石头人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "blademaster": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "blueRock": {"name":"鬼邪石","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "skeletonLite": {"name":"骷髅精英","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "bowman": {"name":"弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "liteBowman": {"name":"精锐弓兵","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "crismonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "mutantSlimeman": {"name":"变异战士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "greenGT": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "ghostSoldier": {"name":"冥队长","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0}, - "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"experience":0,"point":0,"special":0} + "greenSlime": {"name":"绿头怪","hp":100,"atk":120,"def":0,"money":1,"exp":1,"point":0,"special":[1,5,7,8]}, + "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[16,18],"value":10}, + "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]}, + "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":1}, + "bigBat": {"name":"大蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "redBat": {"name":"红蝙蝠","hp":100,"atk":120,"def":0,"money":5,"exp":0,"point":0,"special":4}, + "vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeleton": {"name":"骷髅人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeletonCaptain": {"name":"骷髅队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "zombie": {"name":"兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "zombieKnight": {"name":"兽人武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "rock": {"name":"石头人","hp":100,"atk":120,"def":0,"money":4,"exp":0,"point":0,"special":3}, + "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"exp":0,"point":1,"special":2}, + "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"exp":0,"point":0,"special":15,"value":100,"range":2}, + "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"exp":0,"point":0,"special":15,"value":200,"zoneSquare":true}, + "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"exp":0,"point":0,"special":[5,23]}, + "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "redKnight": {"name":"红骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "darkKnight": {"name":"黑骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blueKnight": {"name":"蓝骑士","hp":100,"atk":120,"def":0,"money":9,"exp":0,"point":0,"special":8}, + "goldSlime": {"name":"黄头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "poisonSkeleton": {"name":"紫骷髅","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "poisonBat": {"name":"紫蝙蝠","hp":100,"atk":120,"def":0,"money":14,"exp":0,"point":0,"special":13}, + "skeletonPriest": {"name":"骷髅法师","hp":100,"atk":100,"def":0,"money":0,"exp":0,"point":0,"special":18,"value":20}, + "skeletonKing": {"name":"骷髅王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "evilHero": {"name":"迷失勇者","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "goldHornSlime": {"name":"金角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "silverSlime": {"name":"银头怪","hp":100,"atk":120,"def":0,"money":15,"exp":0,"point":0,"special":14}, + "whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "redSwordsman": {"name":"剑王","hp":100,"atk":120,"def":0,"money":7,"exp":0,"point":0,"special":6,"n":8}, + "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"exp":0,"point":0,"special":12}, + "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "princessEnemy": {"name":"假公主","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":18,"value":20}, + "evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":1,"def":0,"money":0,"exp":0,"point":0,"special":[2,3]}, + "frozenSkeleton": {"name":"冻死骨","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "silverSlimelord": {"name":"银怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "goldSlimelord": {"name":"金怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeletonWarrior": {"name":"骷髅士兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "ghostWarrior": {"name":"冥队长","hp":100,"atk":120,"def":0,"money":8,"exp":0,"point":0,"special":7}, + "whiteSlimeman": {"name":"水银战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "slimeman": {"name":"影子战士","hp":100,"atk":0,"def":0,"money":11,"exp":0,"point":0,"special":[10,21],"atkValue":2,"defValue":3}, + "yellowGT": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":0}, + "blueGT": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "redGT": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blackMS": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"exp":1000,"point":0,"special":0,"notBomb":true}, + "yellowMS": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "greenMS": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "magicMaster": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"exp":0,"point":0,"special":11,"value":0.3333333333333333,"add":true,"notBomb":true}, + "blueMS": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":16}, + "redMS": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "devilWarrior": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "fairyEnemy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeletonKnight": {"name":"骷髅武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeletonPresbyter": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "ironRock": {"name":"铁面人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "grayRock": {"name":"灰色石头人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blademaster": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "blueRock": {"name":"鬼邪石","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "skeletonLite": {"name":"骷髅精英","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "bowman": {"name":"弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "liteBowman": {"name":"精锐弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "crismonZombie": {"name":"红兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "mutantSlimeman": {"name":"变异战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "greenGT": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "ghostSoldier": {"name":"冥队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, + "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0} } \ No newline at end of file diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 5eb614cf..1d0849d9 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -60,7 +60,9 @@ (已完成!) 32x48的门 (已完成!) 难度分歧的图块(颜色,含SL界面) 装备同时加属性和比例 -removeMap和resumeMap +(已完成!) removeMap和resumeMap +右键图块选择复制/粘贴事件 +showImage, drawImage等加上对称选项 ------------- From 9818065eae9515b3bec841aec10ff822e37faf23 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 11:14:19 +0800 Subject: [PATCH 46/80] Update _drawHero_updateViewport --- libs/control.js | 4 ++++ project/plugins.js | 43 ++++++------------------------------------- 2 files changed, 10 insertions(+), 37 deletions(-) diff --git a/libs/control.js b/libs/control.js index 381584ee..2007912a 100644 --- a/libs/control.js +++ b/libs/control.js @@ -786,6 +786,10 @@ control.prototype.drawHero = function (status, offset) { this._drawHero_draw(direction, x, y, status, offset); } + this._drawHero_updateViewport(); +} + +control.prototype._drawHero_updateViewport = function () { core.control.updateViewport(); core.setGameCanvasTranslate('hero', 0, 0); } diff --git a/project/plugins.js b/project/plugins.js index b8a4776e..58445b73 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -618,41 +618,6 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }; }; - // 其实只注释了最后一行,只能这样了 - control.drawHero = function (status, offset) { - if (!core.isPlaying() || !core.status.floorId || core.status.gameOver) return; - var x = core.getHeroLoc('x'), - y = core.getHeroLoc('y'), - direction = core.getHeroLoc('direction'); - status = status || 'stop'; - offset = offset || 0; - var way = core.utils.scan[direction]; - var dx = way.x, - dy = way.y, - offsetX = dx * offset, - offsetY = dy * offset; - core.bigmap.offsetX = core.clamp((x - core.__HALF_SIZE__) * 32 + offsetX, 0, 32 * core.bigmap.width - core.__PIXELS__); - core.bigmap.offsetY = core.clamp((y - core.__HALF_SIZE__) * 32 + offsetY, 0, 32 * core.bigmap.height - core.__PIXELS__); - core.clearAutomaticRouteNode(x + dx, y + dy); - core.clearMap('hero'); - - if (!core.hasFlag('hideHero')) { - this._drawHero_getDrawObjs(direction, x, y, status, offset).forEach(function (block) { - core.drawImage('hero', block.img, block.heroIcon[block.status] * block.width, - block.heroIcon.loc * block.height, block.width, block.height, - block.posx + (32 - block.width) / 2, block.posy + 32 - block.height, block.width, block.height); - }); - } - - core.control.updateViewport(); - //core.setGameCanvasTranslate('hero', 0, 0); - }; - - // 复写转发 - core.drawHero = function (status, offset) { - return core.control.drawHero(status, offset); - }; - // 创建摄像机对象 this.camera = new this.Camera(); @@ -661,13 +626,17 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = this.camera.update(); }; + core.control._drawHero_updateViewport = function () { + core.control.updateViewport(); + } + // 代理原本的镜头事件 - control.updateViewport = function () { + core.control.updateViewport = function () { core.plugin.camera.requestCameraUpdate(); }; // 更变楼层的行为追加,重置镜头 - events.prototype.changingFloor = function (floorId, heroLoc) { + core.events.changingFloor = function (floorId, heroLoc) { this.eventdata.changingFloor(floorId, heroLoc); core.plugin.camera.resetCamera(); }; From d1edf27dde922759fa9d60ac3995f15c4505f22a Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 11:28:56 +0800 Subject: [PATCH 47/80] fix core.status.floorId in afterXXX --- project/functions.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/project/functions.js b/project/functions.js index cfa557c9..313cbd28 100644 --- a/project/functions.js +++ b/project/functions.js @@ -358,7 +358,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } // 如果该点存在事件 -- V2.5.4 以后阻击怪也可以有战后事件了 - core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]); + if (core.status.floorId != null) { + core.push(todo, core.floors[core.status.floorId].afterBattle[x + "," + y]); + } // 在这里增加其他的自定义事件需求 /* @@ -385,6 +387,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var todo = []; // 检查该点的获得开门后事件。 + if (core.status.floorId == null) return; var event = core.floors[core.status.floorId].afterOpenDoor[x + "," + y]; if (event) core.unshift(todo, event); @@ -403,6 +406,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = var todo = []; // 检查该点的获得道具后事件。 + if (core.status.floorId == null) return; var event = core.floors[core.status.floorId].afterGetItem[x + "," + y]; if (event && (event instanceof Array || !isGentleClick || !event.disableOnGentleClick)) { core.unshift(todo, event); From 7b54f0d3d35373c74124e65cb61218987260cc43 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 13:58:42 +0800 Subject: [PATCH 48/80] =?UTF-8?q?=E8=A3=85=E5=A4=87=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=95=B0=E5=80=BC=E5=92=8C=E7=99=BE=E5=88=86?= =?UTF-8?q?=E6=AF=94=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 62 ++++++++++++++++++++++++++++++++++++-- _server/MotaActionParse.js | 16 ++++++++++ _server/editor_blockly.js | 5 ++- _server/table/comment.js | 6 ++-- editor-mobile.html | 1 + editor.html | 1 + libs/items.js | 44 ++++++++++----------------- libs/ui.js | 40 +++++++++++------------- project/items.js | 62 ++++++++++++++++++++++++++------------ 9 files changed, 161 insertions(+), 76 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 725b71f4..023bd8fa 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -358,6 +358,60 @@ var code = '{"title": "'+EvalString_0+'", "name": "'+EvalString_1+'", "hard": '+ return code; */; +// equip 事件编辑器入口之一 +equip_m + : '装备' '类型' EvalString '装备动画(第一个装备格有效)' IdString? BGNL? '数值提升项' equipList+ '百分比提升项' equipList+ BEND + + +/* equip_m +tooltip : 装备 +default : ['0', ''] +helpUrl : https://h5mota.com/games/template/_docs/#/event +if (!/^\d+$/.test(EvalString_0)) { + EvalString_0 = '"' + EvalString_0 + '"'; +} +IdString_0 = IdString_0 && (', "animate": "'+IdString_0+'"'); +var code = '{"type": '+EvalString_0+IdString_0+', "value": {\n'+equipList_0+'\n}, "percentage": {\n'+equipList_1+'\n}}'; +return code; +*/; + +equipList + : equipKnown + | equipUnknown + | equipEmpty; + + +equipKnown + : Equip_List ':' Number BEND + + +/* equipKnown +tooltip : 装备项 +default : ['atk', 10] +helpUrl : https://h5mota.com/games/template/_docs/#/event +return '"'+Equip_List_0+'": '+Number_0+', '; +*/; + +equipUnknown + : EvalString ':' Number BEND + + +/* equipUnknown +tooltip : 装备项 +default : ['speed', 10] +helpUrl : https://h5mota.com/games/template/_docs/#/event +return '"'+EvalString_0+'": '+Number_0+', '; +*/; + + +equipEmpty + : Newline + +/* equipEmpty +var code = ' \n'; +return code; +*/; + //为了避免关键字冲突,全部加了_s //动作 @@ -2908,8 +2962,8 @@ IdString ; FixedId_List - : '生命'|'攻击'|'防御'|'护盾'|'黄钥匙'|'蓝钥匙'|'红钥匙'|'金币'|'经验' - /*FixedId_List ['status:hp','status:atk','status:def','status:mdef','item:yellowKey','item:blueKey','item:redKey','status:money','status:exp']*/; + : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'黄钥匙'|'蓝钥匙'|'红钥匙'|'金币'|'经验'|'魔力'|'魔力上限' + /*FixedId_List ['status:hp','status:hpmax','status:atk','status:def','status:mdef','item:yellowKey','item:blueKey','item:redKey','status:money','status:exp','status:mana','status:manamax']*/; Id_List : '变量' | '状态' | '物品' | '独立开关' | '临时变量' |'全局存储' @@ -2919,6 +2973,10 @@ EnemyId_List : '生命'|'攻击'|'防御'|'金币'|'经验'|'加点'|'属性'|'名称'|'映射名'|'value'|'atkValue'|'defValue'|'notBomb'|'zoneSquare'|'range'|'n'|'add'|'damage' /*EnemyId_List ['hp','atk','def','money','exp','point','special','name','displayInBook','value','atkValue','defValue','notBomb','zoneSquare','range','n','add','damage']*/; +Equip_List + : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'魔力'|'魔力上限' + /*Equip_List ['hp','hpmax','atk','def','mdef','mana','manamax']*/; + //转blockly后不保留需要加" EvalString : Equote_double (ESC_double | ~["\\])* Equote_double diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 5c9ab9c1..b67de2ab 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -58,6 +58,22 @@ ActionParser.prototype.parse = function (obj,type) { } return MotaActionBlocks['levelChoose_m'].xmlText([text_choices]); + case 'equip': + if(!obj) obj={}; + var buildEquip = function (obj) { + obj = obj || {}; + var text_choices = null; + var knownKeys = MotaActionBlocks.equipKnown.json.args0[0].options.map(function (one) {return one[1];}) + Object.keys(obj).sort().forEach(function (key) { + var one = knownKeys.indexOf(key) >= 0 ? 'equipKnown' : 'equipUnknown'; + text_choices = MotaActionBlocks[one].xmlText([ + key, obj.key, text_choices + ]); + }) + return text_choices; + } + return MotaActionBlocks['equip_m'].xmlText([obj.type, obj.animate, buildEquip(obj.value), buildEquip(obj.percentage)]); + case 'shop': var buildsub = function(obj,parser,next){ var text_choices = null; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 4a7cfd49..74325011 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -75,6 +75,9 @@ editor_blockly = function () { {"type": "comment", "text": "在这里写该难度需执行的事件"} ]} ], 'levelChoose'), + MotaActionFunctions.actionParser.parse({ + "type": 0, "value": {"atk": 10}, "percentage": {"speed": 10}, + }, 'equip'), ], '显示文字':[ MotaActionBlocks['text_0_s'].xmlText(), @@ -1067,7 +1070,7 @@ function omitedcheckUpdateFunction(event) { } // 对动画进行补全 - if (type == 'animate_s' && name == 'IdString_0') { + if ((type == 'animate_s' && name == 'IdString_0') || (type == 'equip_m' && name == 'IdString_0')) { return filter(allAnimates, content); } diff --git a/_server/table/comment.js b/_server/table/comment.js index 702e54a8..5b92b2f1 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -49,9 +49,9 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "equip": { "_leaf": true, - "_type": "textarea", - "_docs": "道具的装备属性", - "_data": "装备属性设置,仅对cls为equips有效。\n如果此项不为null,需要是一个对象,里面可含\"type\",\"atk\",\"def\",\"mdef\",\"animate\"五项,分别对应装备部位、攻防护盾和动画。\n具体详见文档(元件说明-装备)和已有的几个装备的写法。" + "_type": "event", + "_event": "equip", + "_docs": "道具的装备属性" }, "hideInReplay": { "_leaf": true, diff --git a/editor-mobile.html b/editor-mobile.html index 8bc87798..b82d63df 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -218,6 +218,7 @@ + diff --git a/editor.html b/editor.html index 5e0f8560..5c00ccf8 100644 --- a/editor.html +++ b/editor.html @@ -214,6 +214,7 @@ + diff --git a/libs/items.js b/libs/items.js index 41c9d61c..f332c4dd 100644 --- a/libs/items.js +++ b/libs/items.js @@ -292,53 +292,41 @@ items.prototype.unloadEquip = function (equipType, callback) { } items.prototype.compareEquipment = function (compareEquipId, beComparedEquipId) { - var result = {}; + var result = {"value": {}, "percentage": {}}; var first = core.material.items[compareEquipId], second = core.material.items[beComparedEquipId]; - for (var name in core.status.hero) { - if (typeof core.status.hero[name] == 'number') { - var ans = 0; - if (first) ans += (first.equip || {})[name] || 0; - if (second) ans -= (second.equip || {})[name] || 0; - if (ans != 0) result[name] = ans; + for (var one in result) { + for (var name in core.status.hero) { + if (typeof core.status.hero[name] == 'number') { + var ans = 0; + if (first) ans += ((first.equip || {})[one] || {})[name] || 0; + if (second) ans -= ((second.equip || {})[one] || {})[name] || 0; + if (ans != 0) result[one][name] = ans; + } } } return result; } ////// 实际换装的效果 ////// -items.prototype._loadEquipEffect = function (equipId, unloadEquipId, isPercentage) { +items.prototype._loadEquipEffect = function (equipId, unloadEquipId) { // 比较能力值 var result = core.compareEquipment(equipId, unloadEquipId); - if (isPercentage) { - for (var name in result) - core.addBuff(name, result[name] / 100); - } - else { - for (var name in result) - core.status.hero[name] += result[name]; - } + for (var name in result.percentage) + core.addBuff(name, result.percentage[name] / 100); + + for (var name in result.value) + core.status.hero[name] += result.value[name]; } items.prototype._realLoadEquip = function (type, loadId, unloadId, callback) { var loadEquip = core.material.items[loadId] || {}, unloadEquip = core.material.items[unloadId] || {}; - loadEquip.equip = loadEquip.equip || {}; - unloadEquip.equip = unloadEquip.equip || {} - - var loadPercentage = loadEquip.equip.percentage, unloadPercentage = unloadEquip.equip.percentage; - - if (loadId && unloadId && (loadPercentage || false) != (unloadPercentage || false)) { - this.unloadEquip(type); - this.loadEquip(loadId); - if (callback) callback(); - return; - } // --- 音效 this._realLoadEquip_playSound(); // --- 实际换装 - this._loadEquipEffect(loadId, unloadId, loadPercentage == null ? unloadPercentage : loadPercentage); + this._loadEquipEffect(loadId, unloadId); // --- 加减 if (loadId) core.removeItem(loadId); diff --git a/libs/ui.js b/libs/ui.js index 79836eee..7a8aee74 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2459,23 +2459,17 @@ ui.prototype._drawEquipbox_description = function (info, max_height) { } ui.prototype._drawEquipbox_getStatusChanged = function (info, equip, equipType, y) { - var compare, differentMode = null; - if (info.index < this.LAST) compare = core.compareEquipment(null, info.selectId); - else { - if (equipType<0) differentMode = '<当前没有该装备的空位,请先卸下装备>'; - else { - var last = core.material.items[info.equipEquipment[equipType]]||{}; - if (last.equip && (last.equip.percentage || false) != (equip.equip.percentage || false)) - differentMode = '<数值和比例模式之间的切换不显示属性变化>'; - else - compare = core.compareEquipment(info.selectId, info.equipEquipment[equipType]); - } + if (info.index < this.LAST) { + // 光标在装备栏上:查询卸下装备属性 + return core.compareEquipment(null, info.selectId); } - if (differentMode != null) { - core.fillText('ui', differentMode, 10, y, '#CCCCCC', this._buildFont(14, false)); - return; + if (equipType < 0) { + // 没有空位 + core.fillText('ui', '<当前没有该装备的空位,请先卸下装备>', 10, y, '#CCCCCC', this._buildFont(14, false)); + return null; } - return compare; + // 光标在装备上:查询装上后的属性变化 + return core.compareEquipment(info.selectId, info.equipEquipment[equipType]); } ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipType) { @@ -2485,19 +2479,19 @@ ui.prototype._drawEquipbox_drawStatusChanged = function (info, y, equip, equipTy // --- 变化值... core.setFont('ui', this._buildFont(14, true)); - for (var name in compare) { + for (var name in core.status.hero) { + if (typeof core.status.hero[name] != 'number') continue; + var nowValue = core.getRealStatus(name); + // 查询新值 + var newValue = (core.getStatus(name) + (compare.value[name] || 0)) + * (core.getBuff(name) + (compare.percentage[name] || 0) / 100); + if (nowValue == newValue) continue; var text = this._drawEquipbox_getStatusName(name); this._drawEquipbox_drawStatusChanged_draw(text + " ", '#CCCCCC', obj); - var nowValue = core.getStatus(name) * core.getBuff(name), newValue = (core.getStatus(name) + compare[name]) * core.getBuff(name); - if (equip.equip.percentage) { - var nowBuff = core.getBuff(name), newBuff = nowBuff + compare[name] / 100; - nowValue = Math.floor(nowBuff * core.getStatus(name)); - newValue = Math.floor(newBuff * core.getStatus(name)); - } nowValue = core.formatBigNumber(nowValue); newValue = core.formatBigNumber(newValue); this._drawEquipbox_drawStatusChanged_draw(nowValue+"->", '#CCCCCC', obj); - this._drawEquipbox_drawStatusChanged_draw(newValue, compare[name]>0?'#00FF00':'#FF0000', obj); + this._drawEquipbox_drawStatusChanged_draw(newValue, newValue>nowValue?'#00FF00':'#FF0000', obj); obj.drawOffset += 8; } } diff --git a/project/items.js b/project/items.js index 86c61b84..68c39d06 100644 --- a/project/items.js +++ b/project/items.js @@ -65,8 +65,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把已经生锈的剑", "equip": { "type": 0, - "atk": 0, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 0 + } } }, "sword1": { @@ -75,8 +77,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把很普通的铁剑", "equip": { "type": 0, - "atk": 10, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 10 + } } }, "sword2": { @@ -85,8 +89,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把很普通的银剑", "equip": { "type": 0, - "atk": 20, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 20 + } } }, "sword3": { @@ -95,8 +101,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把很普通的骑士剑", "equip": { "type": 0, - "atk": 40, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 40 + } } }, "sword4": { @@ -105,8 +113,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把很普通的圣剑", "equip": { "type": 0, - "atk": 80, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 80 + } } }, "sword5": { @@ -115,8 +125,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一把很普通的神圣剑", "equip": { "type": 0, - "atk": 100, - "animate": "sword" + "animate": "sword", + "value": { + "atk": 160 + } } }, "shield0": { @@ -125,7 +137,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很破旧的铁盾", "equip": { "type": 1, - "def": 0 + "value": { + "def": 0 + } } }, "shield1": { @@ -134,7 +148,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很普通的铁盾", "equip": { "type": 1, - "def": 10 + "value": { + "def": 10 + } } }, "shield2": { @@ -143,7 +159,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很普通的银盾", "equip": { "type": 1, - "def": 20 + "value": { + "def": 20 + } } }, "shield3": { @@ -152,7 +170,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很普通的骑士盾", "equip": { "type": 1, - "def": 40 + "value": { + "def": 40 + } } }, "shield4": { @@ -161,7 +181,9 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很普通的圣盾", "equip": { "type": 1, - "def": 80 + "value": { + "def": 80 + } } }, "shield5": { @@ -170,8 +192,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "一个很普通的神圣盾", "equip": { "type": 1, - "def": 100, - "mdef": 100 + "value": { + "def": 100, + "mdef": 100 + } } }, "superPotion": { From 4c94ce4edb9352b03a4726c5e33b1c9d1d1f7d95 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Wed, 20 May 2020 14:49:05 +0800 Subject: [PATCH 49/80] =?UTF-8?q?=E9=80=89=E4=B8=AD=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 7 ++-- _server/editor_mappanel.js | 64 ++++++++++++++++++++++++--------- _server/editor_materialpanel.js | 7 ++-- 3 files changed, 56 insertions(+), 22 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index c2843696..bc64fe95 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -69,6 +69,11 @@ function editor() { mouseOutCheck : 2, startPos:null, endPos:null, + lastMoveE:{buttons:0,clientX:0,clientY:0}, + // 材料区拖动有关 + lastMoveMaterE:null, + tileSize: [1,1], + startLoc: null, // 撤销/恢复 preMapData : [], preMapMax: 10, @@ -104,8 +109,6 @@ function editor() { }, // tile - tileSize: [1,1], - startLoc: null, lockMode: false, // 最近使用的图块 diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index f2f850ac..a397f535 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -75,6 +75,7 @@ editor_mappanel_wrapper = function (editor) { * + 绘图时画个矩形在那个位置 */ editor.uifunctions.map_ondown = function (e) { + editor.uivalues.lastMoveE=e; var loc = editor.uifunctions.eToLoc(e); var pos = editor.uifunctions.locToPos(loc, true); if (editor.uivalues.bindSpecialDoor.loc != null) { @@ -89,10 +90,10 @@ editor_mappanel_wrapper = function (editor) { } return false; } - if (e.button == 2) { - editor.uifunctions.showMidMenu(e.clientX, e.clientY); - return false; - } + // if (e.buttons == 2) { // 挪到onup + // editor.uifunctions.showMidMenu(e.clientX, e.clientY); + // return false; + // } if (!selectBox.isSelected()) { editor_mode.onmode('nextChange'); editor_mode.onmode('loc'); @@ -122,6 +123,7 @@ editor_mappanel_wrapper = function (editor) { * + 绘图模式时找到与队列尾相邻的鼠标方向的点画个矩形 */ editor.uifunctions.map_onmove = function (e) { + editor.uivalues.lastMoveE=e; if (!selectBox.isSelected()) { if (editor.uivalues.startPos == null) return; //tip.whichShow(1); @@ -136,9 +138,25 @@ editor_mappanel_wrapper = function (editor) { editor.uivalues.endPos = pos; if (editor.uivalues.startPos != null) { if (editor.uivalues.startPos.x != editor.uivalues.endPos.x || editor.uivalues.startPos.y != editor.uivalues.endPos.y) { - core.drawArrow('eui', - 32 * editor.uivalues.startPos.x + 16 - core.bigmap.offsetX, 32 * editor.uivalues.startPos.y + 16 - core.bigmap.offsetY, - 32 * editor.uivalues.endPos.x + 16 - core.bigmap.offsetX, 32 * editor.uivalues.endPos.y + 16 - core.bigmap.offsetY); + if (e.buttons == 2) { + // 右键拖拽: 画选的区域 + var x0 = editor.uivalues.startPos.x; + var y0 = editor.uivalues.startPos.y; + var x1 = editor.uivalues.endPos.x; + var y1 = editor.uivalues.endPos.y; + if (x0 > x1) { x0 ^= x1; x1 ^= x0; x0 ^= x1; }//swap + if (y0 > y1) { y0 ^= y1; y1 ^= y0; y0 ^= y1; }//swap + // draw rect + editor.dom.euiCtx.clearRect(0, 0, editor.dom.euiCtx.canvas.width, editor.dom.euiCtx.canvas.height); + editor.dom.euiCtx.fillStyle = 'rgba(0, 127, 255, 0.4)'; + editor.dom.euiCtx.fillRect(32 * x0 - core.bigmap.offsetX, 32 * y0 - core.bigmap.offsetY, + 32 * (x1 - x0) + 32, 32 * (y1 - y0) + 32); + }else{ + // 左键拖拽: 画箭头 + core.drawArrow('eui', + 32 * editor.uivalues.startPos.x + 16 - core.bigmap.offsetX, 32 * editor.uivalues.startPos.y + 16 - core.bigmap.offsetY, + 32 * editor.uivalues.endPos.x + 16 - core.bigmap.offsetX, 32 * editor.uivalues.endPos.y + 16 - core.bigmap.offsetY); + } } } // editor_mode.onmode('nextChange'); @@ -192,17 +210,31 @@ editor_mappanel_wrapper = function (editor) { * + 非绘图模式时, 交换首末点的内容 * + 绘图模式时, 根据画线/画矩形/画tileset 做对应的绘制 */ - editor.uifunctions.map_onup = function (e) { + editor.uifunctions.map_onup = function (ee) { + console.log(1) + var e=editor.uivalues.lastMoveE; if (!selectBox.isSelected()) { - //tip.whichShow(1); - // editor.movePos(editor.uivalues.startPos, editor.uivalues.endPos); - if (editor.layerMod == 'map') - editor.exchangePos(editor.uivalues.startPos, editor.uivalues.endPos); - else - editor.exchangeBgFg(editor.uivalues.startPos, editor.uivalues.endPos, editor.layerMod); - editor.uivalues.startPos = editor.uivalues.endPos = null; + if (e.buttons == 2) { + if (editor.uivalues.endPos==null || editor.uivalues.startPos.x == editor.uivalues.endPos.x && editor.uivalues.startPos.y == editor.uivalues.endPos.y){ + // 右键点击: 弹菜单 + editor.uifunctions.showMidMenu(e.clientX, e.clientY); + } else { + // 右键拖拽: 选中区域 + printf('已经选中该区域') + // 后续的处理 + } + } else { + // 左键拖拽: 交换 + //tip.whichShow(1); + // editor.movePos(editor.uivalues.startPos, editor.uivalues.endPos); + if (editor.layerMod == 'map') + editor.exchangePos(editor.uivalues.startPos, editor.uivalues.endPos); + else + editor.exchangeBgFg(editor.uivalues.startPos, editor.uivalues.endPos, editor.layerMod); + editor.uifunctions.unhighlightSaveFloorButton(); + } editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); - editor.uifunctions.unhighlightSaveFloorButton(); + editor.uivalues.startPos = editor.uivalues.endPos = null; return false; } editor.uivalues.holdingPath = 0; diff --git a/_server/editor_materialpanel.js b/_server/editor_materialpanel.js index 8a6704fa..d7607b82 100644 --- a/_server/editor_materialpanel.js +++ b/_server/editor_materialpanel.js @@ -62,7 +62,6 @@ editor_materialpanel_wrapper = function (editor) { } } - var lastmoveE=null; /** * editor.dom.iconLib.onmousedown * 素材区的单击/拖拽事件 @@ -70,7 +69,7 @@ editor_materialpanel_wrapper = function (editor) { editor.uifunctions.material_ondown = function (e) { e.stopPropagation(); e.preventDefault(); - lastmoveE=e; + editor.uivalues.lastMoveMaterE=e; if (!editor.isMobile && e.clientY >= editor.dom.iconLib.offsetHeight - editor.uivalues.scrollBarHeight) return; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; @@ -90,7 +89,7 @@ editor_materialpanel_wrapper = function (editor) { editor.uifunctions.material_onmove = function (e) { e.stopPropagation(); e.preventDefault(); - lastmoveE=e; + editor.uivalues.lastMoveMaterE=e; if (!editor.uivalues.startLoc) return; var pos0 = editor.uifunctions.locToPos(editor.uivalues.startLoc); @@ -109,7 +108,7 @@ editor_materialpanel_wrapper = function (editor) { var startLoc = editor.uivalues.startLoc; editor.uivalues.startLoc = null; - var e=lastmoveE; + var e=editor.uivalues.lastMoveMaterE; if (!editor.isMobile && e.clientY >= editor.dom.iconLib.offsetHeight - editor.uivalues.scrollBarHeight) return; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; From b2b60b133eec68ce8147451b2050e7633cc43c20 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 17:48:17 +0800 Subject: [PATCH 50/80] =?UTF-8?q?:x,=20:y,=20:o=20=E7=BF=BB=E8=BD=AC?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 38 ++++++++---- _server/MotaActionParse.js | 12 ++-- _server/table/comment.js | 2 +- libs/control.js | 6 +- libs/events.js | 9 ++- libs/maps.js | 37 ++++++------ libs/ui.js | 116 +++++++++++++++++++++---------------- libs/utils.js | 4 +- project/functions.js | 2 +- v2.x-final更新.txt | 6 +- 10 files changed, 135 insertions(+), 97 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 023bd8fa..6449f4d5 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -1498,23 +1498,26 @@ return code; */; showImage_s - : '显示图片' '图片编号' Int '图片' EvalString BGNL? + : '显示图片' '图片编号' Int '图片' EvalString '翻转' Reverse_List BGNL? '绘制的起点像素' 'x' PosString 'y' PosString '不透明度' Number '时间' Int '不等待执行完毕' Bool Newline /* showImage_s tooltip : showImage:显示图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 -default : [1,"bg.jpg","0","0",1,0,false] +default : [1,"bg.jpg","null","0","0",1,0,false] colour : this.printColor if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; var async = Bool_0?', "async": true':''; -var code = '{"type": "showImage", "code": '+Int_0+', "image": "'+EvalString_0+'", "loc": ['+PosString_0+','+PosString_1+'], "opacity": '+Number_0+', "time": '+Int_1+async+'},\n'; +var code = '{"type": "showImage", "code": '+Int_0+', "image": "'+EvalString_0+'"'+Reverse_List_0+', "loc": ['+PosString_0+','+PosString_1+'], "opacity": '+Number_0+', "time": '+Int_1+async+'},\n'; return code; */; showImage_1_s - : '显示图片' '图片编号' Int '图片' EvalString BGNL? + : '显示图片' '图片编号' Int '图片' EvalString '翻转' Reverse_List BGNL? '裁剪的起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? '不透明度' Number BGNL? '绘制的起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? '时间' Int '不等待执行完毕' Bool Newline @@ -1522,11 +1525,14 @@ showImage_1_s /* showImage_1_s tooltip : showImage_1:显示图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 -default : [1,"bg.jpg","0","0","","",1,"0","0","","",0,false] +default : [1,"bg.jpg","null","0","0","","",1,"0","0","","",0,false] colour : this.printColor if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; var async = Bool_0?', "async": true':''; -var code = '{"type": "showImage", "code": '+Int_0+', "image": "'+EvalString_0+'", '+ +var code = '{"type": "showImage", "code": '+Int_0+', "image": "'+EvalString_0+'"'+Reverse_List_0+', '+ '"sloc": ['+PosString_0+','+PosString_1+','+PosString_2+','+PosString_3+'], '+ '"loc": ['+PosString_4+','+PosString_5+','+PosString_6+','+PosString_7+'], '+ '"opacity": '+Number_0+', "time": '+Int_1+async+'},\n'; @@ -2506,22 +2512,25 @@ return code; drawImage_s - : '绘制图片' EvalString '起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? Newline + : '绘制图片' EvalString '翻转' Reverse_List '起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? Newline /* drawImage_s tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 -default : ["bg.jpg","0","0","",""] +default : ["bg.jpg","null","0","0","",""] colour : this.subColor +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; PosString_2 = PosString_2 ? (', "w": '+PosString_2) : ''; PosString_3 = PosString_3 ? (', "h": '+PosString_3) : ''; -var code = '{"type": "drawImage", "image": "'+EvalString_0+'", "x": '+PosString_0+', "y": '+PosString_1+PosString_2+PosString_3+'},\n'; +var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+Reverse_List_0+', "x": '+PosString_0+', "y": '+PosString_1+PosString_2+PosString_3+'},\n'; return code; */; drawImage_1_s - : '绘制图片' EvalString '裁剪的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString BGNL? + : '绘制图片' EvalString '翻转' Reverse_List '裁剪的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString BGNL? '绘制的起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString Newline @@ -2530,7 +2539,10 @@ tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 default : ["bg.jpg","0","0","32","32","0","0","32","32"] colour : this.subColor -var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+ +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; +var code = '{"type": "drawImage", "image": "'+EvalString_0+'"'+Reverse_List_0+ ', "x": '+PosString_0+', "y": '+PosString_1+', "w": '+PosString_2+', "h": '+PosString_3+ ', "x1": '+PosString_4+', "y1": '+PosString_5+', "w1": '+PosString_6+', "h1": '+PosString_7+'},\n'; return code; @@ -2866,6 +2878,10 @@ TextBaseline_List : '不改变'|'顶部'|'悬挂'|'居中'|'标准值'|'ideographic'|'底部' /*TextBaseline_List ['null','top','hanging','middle','alphabetic','ideographic','bottom']*/; +Reverse_List + : '不改变'|'左右翻转'|'上下翻转'|'中心翻转' + /*Reverse_List ['null',':x',':y',':o']*/; + ShopUse_List : '金币' | '经验' /*ShopUse_List ['money','exp']*/; diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index b67de2ab..5dc47b83 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -63,9 +63,9 @@ ActionParser.prototype.parse = function (obj,type) { var buildEquip = function (obj) { obj = obj || {}; var text_choices = null; - var knownKeys = MotaActionBlocks.equipKnown.json.args0[0].options.map(function (one) {return one[1];}) + var knownEquipListKeys = MotaActionBlocks.equipKnown.json.args0[0].options.map(function (one) {return one[1];}) Object.keys(obj).sort().forEach(function (key) { - var one = knownKeys.indexOf(key) >= 0 ? 'equipKnown' : 'equipUnknown'; + var one = knownEquipListKeys.indexOf(key) >= 0 ? 'equipKnown' : 'equipUnknown'; text_choices = MotaActionBlocks[one].xmlText([ key, obj.key, text_choices ]); @@ -385,13 +385,13 @@ ActionParser.prototype.parseAction = function() { data.loc=data.loc||['',''] if (data.sloc) { this.next = MotaActionBlocks['showImage_1_s'].xmlText([ - data.code,data.image||data.name,data.sloc[0],data.sloc[1],data.sloc[2],data.sloc[3],data.opacity, + data.code,data.image||data.name,data.reverse,data.sloc[0],data.sloc[1],data.sloc[2],data.sloc[3],data.opacity, data.loc[0],data.loc[1],data.loc[2],data.loc[3],data.time||0,data.async||false,this.next ]); } else { this.next = MotaActionBlocks['showImage_s'].xmlText([ - data.code,data.image||data.name,data.loc[0],data.loc[1],data.opacity,data.time||0,data.async||false,this.next]); + data.code,data.image||data.name,data.reverse,data.loc[0],data.loc[1],data.opacity,data.time||0,data.async||false,this.next]); } break; case "hideImage": // 清除图片 @@ -837,12 +837,12 @@ ActionParser.prototype.parseAction = function() { case "drawImage": // 绘制图片 if (data.x1 != null && data.y1 != null && data.w1 != null && data.h1 != null) { this.next = MotaActionBlocks['drawImage_1_s'].xmlText([ - data.image, data.x, data.y, data.w, data.h, data.x1, data.y1, data.w1, data.h1, this.next + data.image, data.reverse, data.x, data.y, data.w, data.h, data.x1, data.y1, data.w1, data.h1, this.next ]); } else { this.next = MotaActionBlocks['drawImage_s'].xmlText([ - data.image, data.x, data.y, data.w, data.h, this.next + data.image, data.reverse, data.x, data.y, data.w, data.h, this.next ]); } break; diff --git a/_server/table/comment.js b/_server/table/comment.js index 5b92b2f1..753dc71d 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -393,7 +393,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "canFlyTo": { "_leaf": true, "_type": "checkbox", - "_docs": "可飞", + "_docs": "可楼传", "_data": "该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器)" }, "canUseQuickShop": { diff --git a/libs/control.js b/libs/control.js index 5b6602c1..e1ea103b 100644 --- a/libs/control.js +++ b/libs/control.js @@ -260,7 +260,7 @@ control.prototype._animationFrame_weather_fog = function () { var w = core.__PIXELS__, h = core.__PIXELS__; core.setAlpha('weather', 0.5); core.animateFrame.weather.nodes.forEach(function (p) { - ctx.drawImage(core.animateFrame.weather.fog, p.x - ox, p.y - oy, w, h); + core.drawImage(ctx, core.animateFrame.weather.fog, p.x - ox, p.y - oy, w, h); p.x += p.xs; p.y += p.ys; if (p.x > core.bigmap.width*32 - w/2) { @@ -2515,10 +2515,10 @@ control.prototype.updateHeroIcon = function (name) { var ratio = Math.min(w / h, 1), width = 32 * ratio, left = 16 - width/2; var canvas = document.createElement("canvas"); - var context = canvas.getContext("2d"); + var ctx = canvas.getContext("2d"); canvas.width = 32; canvas.height = 32; - context.drawImage(image, 0, 0, w, h, left, 0, width, 32); + core.drawImage(ctx, image, 0, 0, w, h, left, 0, width, 32); core.statusBar.image.name.src = canvas.toDataURL("image/png"); } diff --git a/libs/events.js b/libs/events.js index 6fa74489..c03d7379 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1455,7 +1455,7 @@ events.prototype._action_changePos = function (data, x, y, prefix) { events.prototype._action_showImage = function (data, x, y, prefix) { if (core.isReplaying()) data.time = 0; this.__action_doAsyncFunc(data.async || data.time == 0, core.showImage, - data.code, data.image, data.sloc, data.loc, data.opacity, data.time); + data.code, data.image + (data.reverse || ''), data.sloc, data.loc, data.opacity, data.time); } events.prototype._precompile_showImage = function (data) { @@ -2651,7 +2651,12 @@ events.prototype.closeDoor = function (x, y, id, callback) { ////// 显示图片 ////// events.prototype.showImage = function (code, image, sloc, loc, opacityVal, time, callback) { + var imageName = null; if (typeof image == 'string') { + imageName = image; + if (image.endsWith(':x') || image.endsWith(':y') || image.endsWith(':o')) { + image = image.substring(0, image.length - 2); + } image = core.getMappedName(image); image = core.material.images.images[image]; } @@ -2673,7 +2678,7 @@ events.prototype.showImage = function (code, image, sloc, loc, opacityVal, time, time = time || 0; var name = "image" + zIndex; var ctx = core.createCanvas(name, x, y, w, h, zIndex); - ctx.drawImage(image, sx, sy, sw, sh, 0, 0, w, h); + core.drawImage(ctx, imageName == null ? image : imageName, sx, sy, sw, sh, 0, 0, w, h); if (time == 0) { core.setOpacity(name, opacityVal); if (callback) callback(); diff --git a/libs/maps.js b/libs/maps.js index 9254a1cc..f7a94593 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -815,7 +815,7 @@ maps.prototype._drawBg_drawBackground = function (floorId, ctx) { if (groundInfo != null) { for (var i = 0; i < width; i++) { for (var j = 0; j < height; j++) { - ctx.drawImage(groundInfo.image, 32 * groundInfo.posX, groundInfo.height * groundInfo.posY, 32, 32, i * 32, j * 32, 32, 32); + core.drawImage(ctx, groundInfo.image, 32 * groundInfo.posX, groundInfo.height * groundInfo.posY, 32, 32, i * 32, j * 32, 32, 32); } } } @@ -899,6 +899,9 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat images.forEach(function (t) { if (typeof t == 'string') t = [0, 0, t]; var dx = parseInt(t[0]), dy = parseInt(t[1]), imageName = t[2], frame = core.clamp(parseInt(t[4]), 1, 8); + if (imageName.endsWith(':x') || imageName.endsWith(':y') || imageName.endsWith(':o')) { + imageName = imageName.substring(0, imageName.length - 2); + } imageName = core.getMappedName(imageName); var image = core.material.images.images[imageName]; if (redraw && frame == 1) return; // 不重绘 @@ -911,7 +914,7 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat this._drawFloorImages_gif(image, dx, dy); return; } - core.maps._drawFloorImage(ctx, name, t[3], image, offsetX, width, dx, dy, redraw); + core.maps._drawFloorImage(ctx, name, t[3], t[2], image, offsetX, width, dx, dy, redraw); } }); } @@ -941,11 +944,11 @@ maps.prototype._drawFloorImages_gif = function (image, dx, dy) { return; } -maps.prototype._drawFloorImage = function (ctx, name, type, image, offsetX, width, dx, dy, redraw) { +maps.prototype._drawFloorImage = function (ctx, name, type, imageName, image, offsetX, width, dx, dy, redraw) { var height = image.height; var _draw = function () { if (redraw) core.clearMap(ctx, dx, dy, width, height); - core.drawImage(ctx, image, offsetX, 0, width, height, dx, dy, width, height); + core.drawImage(ctx, imageName, offsetX, 0, width, height, dx, dy, width, height); } if (!type) { if (name != 'bg') return; @@ -958,11 +961,11 @@ maps.prototype._drawFloorImage = function (ctx, name, type, image, offsetX, widt if (type == 2) { if (name == 'bg') { if (redraw) core.clearMap(ctx, dx, dy + height - 32, width, 32); - core.drawImage('bg', image, offsetX, height - 32, width, 32, dx, dy + height - 32, width, 32); + core.drawImage('bg', imageName, offsetX, height - 32, width, 32, dx, dy + height - 32, width, 32); } else if (name == 'fg') { if (redraw) core.clearMap(ctx, dx, dy, width, height - 32); - core.drawImage('fg', image, offsetX, 0, width, height - 32, dx, dy, width, height - 32); + core.drawImage('fg', imageName, offsetX, 0, width, height - 32, dx, dy, width, height - 32); } return; } @@ -1035,7 +1038,7 @@ maps.prototype._drawAutotile_render = function(canvas, x, y, size, autotile, sta ]; var data = indexData[index]; if(index>=16){ // 拐角直接绘制 - canvas.drawImage(autotile, data[0][0], data[0][1], data[0][2], data[0][3], data[0][4], data[0][5], size/2, size/2); + core.drawImage(canvas, autotile, data[0][0], data[0][1], data[0][2], data[0][3], data[0][4], data[0][5], size/2, size/2); }else{ // 非拐角要根据是否已经绘制进行切分后绘制 this._drawAutotile_renderCut(canvas, autotile, x, y, size, data, done); } @@ -1076,7 +1079,7 @@ maps.prototype._drawAutotile_renderCut = function(canvas, autotile, x, y, size, } for(var i = 0; i<4; i++){ var dt = drawData[i];if(!dt)continue; - canvas.drawImage(autotile, dt[0], dt[1], 16, 16, x + (i % 2) * size / 2, y + parseInt(i / 2) * size / 2, size/2, size/2); + core.drawImage(canvas, autotile, dt[0], dt[1], 16, 16, x + (i % 2) * size / 2, y + parseInt(i / 2) * size / 2, size/2, size/2); }; } @@ -1086,7 +1089,7 @@ maps.prototype._drawAutotile_drawBlockByIndex = function (ctx, dx, dy, autotileI var sx = 16 * ((index - 1) % 6), sy = 16 * (~~((index - 1) / 6)); status = status || 0; status %= parseInt(autotileImg.width / 96); - ctx.drawImage(autotileImg, sx + 96 * status, sy, 16, 16, dx, dy, size / 2, size / 2); + core.drawImage(ctx, autotileImg, sx + 96 * status, sy, 16, 16, dx, dy, size / 2, size / 2); } maps.prototype._drawAutotile_getAutotileAroundId = function (currId, x, y, mapArr) { @@ -1157,16 +1160,16 @@ maps.prototype._makeAutotileEdges = function () { var n = core.maps.getNumberById(t); core.material.autotileEdges[n] = [n]; - ctx.clearRect(0, 0, 32, 32); - ctx.drawImage(core.material.images.autotile[t], 0, 0, 32, 32, 0, 0, 32, 32); + core.clearMap(ctx, 0, 0, 32, 32); + core.drawImage(ctx, core.material.images.autotile[t], 0, 0, 32, 32, 0, 0, 32, 32); var data = canvas.toDataURL("image/png"); autotileIds.forEach(function (t2) { if (t == t2) return; var n2 = core.maps.getNumberById(t2); - ctx.clearRect(0, 0, 32, 32); - ctx.drawImage(core.material.images.autotile[t2], 32, 0, 32, 32, 0, 0, 32, 32); + core.clearMap(ctx, 0, 0, 32, 32); + core.drawImage(ctx, core.material.images.autotile[t2], 32, 0, 32, 32, 0, 0, 32, 32); if (data == canvas.toDataURL("image/png")) { core.material.autotileEdges[n].push(n2); } @@ -1229,7 +1232,7 @@ maps.prototype._drawThumbnail_realDrawTempCanvas = function (floorId, blocks, op options.heroIcon = core.getMappedName(options.heroIcon); var icon = core.material.icons.hero[options.heroLoc.direction]; var height = core.material.images.images[options.heroIcon].height / 4; - tempCanvas.drawImage(core.material.images.images[options.heroIcon], icon.stop * 32, icon.loc * height, 32, height, + core.drawImage(tempCanvas, core.material.images.images[options.heroIcon], icon.stop * 32, icon.loc * height, 32, height, 32 * options.heroLoc.x, 32 * options.heroLoc.y + 32 - height, 32, height); } // 缩略图:前景 @@ -1259,21 +1262,21 @@ maps.prototype._drawThumbnail_drawToTarget = function (floorId, toDraw) { var side = (size - realWidth) / 2; core.fillRect(ctx, x, y, side, realHeight, '#000000'); core.fillRect(ctx, x + size - side, y, side, realHeight); - ctx.drawImage(tempCanvas.canvas, 0, 0, tempWidth, tempHeight, x + side, y, realWidth, realHeight); + core.drawImage(ctx, tempCanvas.canvas, 0, 0, tempWidth, tempHeight, x + side, y, realWidth, realHeight); } else { var realWidth = size, realHeight = realWidth * tempHeight / tempWidth; var side = (size - realHeight) / 2; core.fillRect(ctx, x, y, realWidth, side, '#000000'); core.fillRect(ctx, x, y + size - side, realWidth, side); - ctx.drawImage(tempCanvas.canvas, 0, 0, tempWidth, tempHeight, x, y + side, realWidth, realHeight); + core.drawImage(ctx, tempCanvas.canvas, 0, 0, tempWidth, tempHeight, x, y + side, realWidth, realHeight); } } else { // 只绘制可见窗口 var offsetX = core.clamp(centerX - core.__HALF_SIZE__, 0, width - core.__SIZE__), offsetY = core.clamp(centerY - core.__HALF_SIZE__, 0, height - core.__SIZE__); - ctx.drawImage(tempCanvas.canvas, offsetX * 32, offsetY * 32, core.__PIXELS__, core.__PIXELS__, x, y, size, size); + core.drawImage(ctx, tempCanvas.canvas, offsetX * 32, offsetY * 32, core.__PIXELS__, core.__PIXELS__, x, y, size, size); } } diff --git a/libs/ui.js b/libs/ui.js index 7a8aee74..f07c2d3b 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -507,32 +507,61 @@ ui.prototype.splitLines = function (name, text, maxWidth, font) { ////// 绘制一张图片 ////// ui.prototype.drawImage = function (name, image, x, y, w, h, x1, y1, w1, h1) { + // 检测文件名以 :x, :y, :o 结尾,表示左右翻转,上下翻转和中心翻转 var ctx = this.getContextByName(name); if (!ctx) return; + var reverse = null; if (typeof image == 'string') { + if (image.endsWith(':x') || image.endsWith(':y') || image.endsWith(':o')) { + reverse = image.charAt(image.length - 1); + image = image.substring(0, image.length - 2); + } image = core.getMappedName(image); image = core.material.images.images[image]; - if (!image) return; + if (!image || !(image instanceof Image)) return; } + var scale = { + 'x': [-1, 1], + 'y': [1, -1], + 'o': [-1, -1] + }; + // 只能接受2, 4, 8个参数 if (x != null && y != null) { - if (w != null && h != null) { - if (x1 != null && y1 != null && w1 != null && h1 != null) { + if (w == null || h == null) { + // 两个参数变成四个参数 + w = image.width; + h = image.height; + } + if (x1 != null && y1 != null && w1 != null && h1 != null) { + if (reverse == null) { ctx.drawImage(image, x, y, w, h, x1, y1, w1, h1); - return; + } else { + ctx.save(); + ctx.translate(x1 + w1 / 2, y1 + h1 / 2); + ctx.scale(scale[reverse][0], scale[reverse][1]); + ctx.drawImage(image, x, y, w, h, -w1 / 2, -h1 / 2, w1, h1); + ctx.restore(); } - ctx.drawImage(image, x, y, w, h); return; } - ctx.drawImage(image, x, y); + if (reverse == null) { + ctx.drawImage(image, x, y, w, h); + } else { + ctx.save(); + ctx.translate(x + w / 2, y + h / 2); + ctx.scale(scale[reverse][0], scale[reverse][1]); + ctx.drawImage(image, -w / 2, -h / 2, w, h); + ctx.restore(); + } return; } } ui.prototype._uievent_drawImage = function (data) { this._createUIEvent(); - this.drawImage('uievent', data.image, core.calValue(data.x), core.calValue(data.y), core.calValue(data.w), core.calValue(data.h), + this.drawImage('uievent', data.image + (data.reverse || ''), core.calValue(data.x), core.calValue(data.y), core.calValue(data.w), core.calValue(data.h), core.calValue(data.x1), core.calValue(data.y1), core.calValue(data.w1), core.calValue(data.h1)); } @@ -547,7 +576,7 @@ ui.prototype.drawIcon = function (name, id, x, y, w, h, frame) { info = {image: core.statusBar.icons[id], posX: 0, posY: 0, height: 32}; else return; } - ctx.drawImage(info.image, 32 * (info.posX + frame), info.height * info.posY, 32, info.height, x, y, w || 32, h || info.height); + core.drawImage(ctx, info.image, 32 * (info.posX + frame), info.height * info.posY, 32, info.height, x, y, w || 32, h || info.height); } ui.prototype._uievent_drawIcon = function (data) { @@ -792,64 +821,53 @@ ui.prototype._clearUIEventSelector = function (codes) { ui.prototype._drawSelector = function (ctx, background, w, h, left, top) { left = left || 0; top = top || 0; - ctx = this.getContextByName(ctx); - if (!ctx) return; - if (typeof background == 'string') - background = core.material.images.images[background]; - if (!(background instanceof Image)) return; // back - ctx.drawImage(background, 130, 66, 28, 28, left+2, top+2, w-4, h-4); + core.drawImage(ctx, background, 130, 66, 28, 28, left+2, top+2, w-4, h-4); // corner - ctx.drawImage(background, 128, 64, 2, 2, left, top, 2, 2); - ctx.drawImage(background, 158, 64, 2, 2, left+w-2, top, 2, 2); - ctx.drawImage(background, 128, 94, 2, 2, left, top+h-2, 2, 2); - ctx.drawImage(background, 158, 94, 2, 2, left+w-2, top+h-2, 2, 2); + core.drawImage(ctx, background, 128, 64, 2, 2, left, top, 2, 2); + core.drawImage(ctx, background, 158, 64, 2, 2, left+w-2, top, 2, 2); + core.drawImage(ctx, background, 128, 94, 2, 2, left, top+h-2, 2, 2); + core.drawImage(ctx, background, 158, 94, 2, 2, left+w-2, top+h-2, 2, 2); // border - ctx.drawImage(background, 130, 64, 28, 2, left+2, top, w-4, 2); - ctx.drawImage(background, 130, 94, 28, 2, left+2, top+h-2, w-4, 2); - ctx.drawImage(background, 128, 66, 2, 28, left, top+2, 2,h-4); - ctx.drawImage(background, 158, 66, 2, 28, left+w-2, top+2, 2,h-4); + core.drawImage(ctx, background, 130, 64, 28, 2, left+2, top, w-4, 2); + core.drawImage(ctx, background, 130, 94, 28, 2, left+2, top+h-2, w-4, 2); + core.drawImage(ctx, background, 128, 66, 2, 28, left, top+2, 2,h-4); + core.drawImage(ctx, background, 158, 66, 2, 28, left+w-2, top+2, 2,h-4); } ////// 绘制 WindowSkin ui.prototype.drawWindowSkin = function(background, ctx, x, y, w, h, direction, px, py) { background = background || core.status.textAttribute.background; - if (typeof background == 'string') { - background = core.getMappedName(background); - background = core.material.images.images[background]; - } // 仿RM窗口皮肤 ↓ - var dstImage = core.getContextByName(ctx); - if (!dstImage) return; // 绘制背景 - dstImage.drawImage(background, 0, 0, 128, 128, x+2, y+2, w-4, h-4); + core.drawImage(ctx, background, 0, 0, 128, 128, x+2, y+2, w-4, h-4); // 绘制边框 // 上方 - dstImage.drawImage(background, 128, 0, 16, 16, x, y, 16, 16); + core.drawImage(ctx, background, 128, 0, 16, 16, x, y, 16, 16); for (var dx = 0; dx < w - 64; dx += 32) { - dstImage.drawImage(background, 144, 0, 32, 16,x+dx+16, y, 32, 16); - dstImage.drawImage(background, 144,48, 32, 16,x+dx+16, y+h-16, 32, 16); + core.drawImage(ctx, background, 144, 0, 32, 16,x+dx+16, y, 32, 16); + core.drawImage(ctx, background, 144,48, 32, 16,x+dx+16, y+h-16, 32, 16); } - dstImage.drawImage(background, 144, 0,w-dx-32, 16,x+dx+16, y,w-dx-32, 16); - dstImage.drawImage(background, 144,48,w-dx-32, 16,x+dx+16, y+h-16,w-dx-32, 16); - dstImage.drawImage(background, 176, 0, 16, 16, x+w-16, y, 16, 16); + core.drawImage(ctx, background, 144, 0,w-dx-32, 16,x+dx+16, y,w-dx-32, 16); + core.drawImage(ctx, background, 144,48,w-dx-32, 16,x+dx+16, y+h-16,w-dx-32, 16); + core.drawImage(ctx, background, 176, 0, 16, 16, x+w-16, y, 16, 16); // 左右 for (var dy = 0; dy < h - 64; dy += 32) { - dstImage.drawImage(background, 128,16, 16, 32, x,y+dy+16, 16, 32); - dstImage.drawImage(background, 176,16, 16, 32, x+w-16,y+dy+16, 16, 32); + core.drawImage(ctx, background, 128,16, 16, 32, x,y+dy+16, 16, 32); + core.drawImage(ctx, background, 176,16, 16, 32, x+w-16,y+dy+16, 16, 32); } - dstImage.drawImage(background, 128,16, 16,h-dy-32, x,y+dy+16, 16,h-dy-32); - dstImage.drawImage(background, 176,16, 16,h-dy-32, x+w-16,y+dy+16, 16,h-dy-32); + core.drawImage(ctx, background, 128,16, 16,h-dy-32, x,y+dy+16, 16,h-dy-32); + core.drawImage(ctx, background, 176,16, 16,h-dy-32, x+w-16,y+dy+16, 16,h-dy-32); // 下方 - dstImage.drawImage(background, 128,48, 16, 16, x, y+h-16, 16, 16); - dstImage.drawImage(background, 176,48, 16, 16, x+w-16, y+h-16, 16, 16); + core.drawImage(ctx, background, 128,48, 16, 16, x, y+h-16, 16, 16); + core.drawImage(ctx, background, 176,48, 16, 16, x+w-16, y+h-16, 16, 16); // arrow if(px != null && py != null){ if(direction == 'up'){ - dstImage.drawImage(background,128,96,32,32,px,y+h-3,32,32); + core.drawImage(ctx, background,128,96,32,32,px,y+h-3,32,32); }else if(direction == 'down') { - dstImage.drawImage(background,160,96,32,32,px,y-29,32,32); + core.drawImage(ctx, background,160,96,32,32,px,y-29,32,32); } } // 仿RM窗口皮肤 ↑ @@ -1045,7 +1063,7 @@ ui.prototype._drawTextContent_draw = function (ctx, tempCtx, content, config) { if (config.index >= config.blocks.length) return false; var block = config.blocks[config.index++]; if (block != null) { - ctx.drawImage(tempCtx.canvas, block.left, block.top, block.width, block.height, + core.drawImage(ctx, tempCtx.canvas, block.left, block.top, block.width, block.height, config.left + block.left + block.marginLeft, config.top + block.top + block.marginTop, block.width, block.height); } @@ -1283,18 +1301,14 @@ ui.prototype.drawTextBox = function(content, showAll) { ui.prototype._drawTextBox_drawImages = function (content) { return content.replace(/(\f|\\f)\[(.*?)]/g, function (text, sympol, str) { var ss = str.split(","); - if (ss.length!=3 && ss.length!=5 && ss.length!=9) return ""; - ss[0] = core.getMappedName(ss[0]); - var img = core.material.images.images[ss[0]]; - if (!img) return ""; // 绘制 if (ss.length==3) - core.drawImage('ui', img, parseFloat(ss[1]), parseFloat(ss[2])); + core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2])); else if (ss.length==5) - core.drawImage('ui', img, 0, 0, img.width, img.height, parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4])); + core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4])); else if (ss.length==9 || ss.length==10) { if (ss.length==10) core.setAlpha('ui', parseFloat(ss[9])); - core.drawImage('ui', img, parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]), parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8])); + core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]), parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8])); core.setAlpha('ui', 1); } return ""; diff --git a/libs/utils.js b/libs/utils.js index 7eaba683..96dc5b38 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -352,13 +352,13 @@ utils.prototype.splitImage = function (image, width, height) { width = width || 32; height = height || width; var canvas = document.createElement("canvas"); - var context = canvas.getContext("2d"); + var ctx = canvas.getContext("2d"); var ans = []; for (var j = 0; j < image.height; j += height) { for (var i = 0; i < image.width; i += width) { var w = Math.min(width, image.width - i), h = Math.min(height, image.height - j); canvas.width = w; canvas.height = h; - context.drawImage(image, i, j, w, h, 0, 0, w, h); + core.drawImage(ctx, image, i, j, w, h, 0, 0, w, h); var img = new Image(); img.src = canvas.toDataURL("image/png"); ans.push(img); diff --git a/project/functions.js b/project/functions.js index 313cbd28..220ffe03 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1360,7 +1360,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 绘制下一个数据 var name = toDraw[index]; // 图片大小25x25 - ctx.drawImage(core.statusBar.icons[name], leftOffset, topOffset, 25, 25); + core.drawImage(ctx, core.statusBar.icons[name], leftOffset, topOffset, 25, 25); // 文字内容 var text = (core.statusBar[name] || {}).innerText || " "; // 斜体判定:如果不是纯数字和字母,斜体会非常难看,需要取消 diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 1d0849d9..a66af87d 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -59,11 +59,11 @@ (已完成!) 右边框输入完后解析按钮高亮 (已完成!) 32x48的门 (已完成!) 难度分歧的图块(颜色,含SL界面) -装备同时加属性和比例 +(已完成!) 装备同时加属性和比例 (已完成!) removeMap和resumeMap 右键图块选择复制/粘贴事件 -showImage, drawImage等加上对称选项 - +(已完成!) showImage, drawImage,立绘等加上对称选项 +更多的图块blockly化 ------------- From 9f42963db8d5df6287f52ff2580ffe1f9f0e15e0 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 22:35:08 +0800 Subject: [PATCH 51/80] =?UTF-8?q?=E5=8F=B3=E9=94=AE=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E7=B2=98=E8=B4=B4=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 5 +--- _server/editor_listen.js | 6 ++--- _server/editor_mappanel.js | 48 +++++++++++++++++++------------------- editor-mobile.html | 2 +- editor.html | 2 +- v2.x-final更新.txt | 2 +- 6 files changed, 31 insertions(+), 34 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index c2843696..ea23b9c7 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -20,7 +20,7 @@ function editor() { chooseThis : document.getElementById('chooseThis'), chooseInRight : document.getElementById('chooseInRight'), copyLoc : document.getElementById('copyLoc'), - moveLoc : document.getElementById('moveLoc'), + pasteLoc : document.getElementById('pasteLoc'), clearEvent : document.getElementById('clearEvent'), clearLoc : document.getElementById('clearLoc'), brushMod:document.getElementById('brushMod'), @@ -80,9 +80,6 @@ function editor() { scrollBarHeight :0, folded:false, foldPerCol: 50, - // 画图区菜单 - lastRightButtonPos:[{x:0,y:0},{x:0,y:0}], - lastCopyedInfo : [null, null], // ratio : 1, // blockly转义 diff --git a/_server/editor_listen.js b/_server/editor_listen.js index 7a3b83b1..ebbf0369 100644 --- a/_server/editor_listen.js +++ b/_server/editor_listen.js @@ -32,7 +32,7 @@ editor_listen_wrapper = function (editor) { editor.dom.chooseThis.onmousedown = editor.uifunctions.chooseThis_click editor.dom.chooseInRight.onmousedown = editor.uifunctions.chooseInRight_click editor.dom.copyLoc.onmousedown = editor.uifunctions.copyLoc_click - editor.dom.moveLoc.onmousedown = editor.uifunctions.moveLoc_click + editor.dom.pasteLoc.onmousedown = editor.uifunctions.pasteLoc_click editor.dom.clearEvent.onmousedown = editor.uifunctions.clearEvent_click editor.dom.clearLoc.onmousedown = editor.uifunctions.clearLoc_click @@ -130,8 +130,8 @@ editor_listen_wrapper = function (editor) { editor.dom.chooseInRight.onmousedown = null editor.dom.copyLoc.ontouchstart = editor.dom.copyLoc.onmousedown editor.dom.copyLoc.onmousedown = null - editor.dom.moveLoc.ontouchstart = editor.dom.moveLoc.onmousedown - editor.dom.moveLoc.onmousedown = null + editor.dom.pasteLoc.ontouchstart = editor.dom.pasteLoc.onmousedown + editor.dom.pasteLoc.onmousedown = null editor.dom.clearLoc.ontouchstart = editor.dom.clearLoc.onmousedown editor.dom.clearLoc.onmousedown = null diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index f2f850ac..854514d2 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -342,12 +342,7 @@ editor_mappanel_wrapper = function (editor) { * 显示右键菜单 */ editor.uifunctions.showMidMenu = function (x, y) { - editor.uivalues.lastRightButtonPos = JSON.parse(JSON.stringify( - [editor.pos, editor.uivalues.lastRightButtonPos[0]] - )); // --- copy - editor.uivalues.lastCopyedInfo = [editor.copyFromPos(), editor.uivalues.lastCopyedInfo[0]]; - var locStr = '(' + editor.uivalues.lastRightButtonPos[1].x + ',' + editor.uivalues.lastRightButtonPos[1].y + ')'; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; @@ -386,8 +381,8 @@ editor_mappanel_wrapper = function (editor) { else editor.dom.extraEvent.style.display = 'none'; editor.dom.chooseThis.children[0].innerHTML = '选中此点' + '(' + editor.pos.x + ',' + editor.pos.y + ')' - editor.dom.copyLoc.children[0].innerHTML = '复制事件' + locStr + '到此处'; - editor.dom.moveLoc.children[0].innerHTML = '交换事件' + locStr + '与此事件的位置'; + editor.dom.copyLoc.children[0].innerHTML = '复制此事件'; + editor.dom.pasteLoc.children[0].innerHTML = '粘贴到此事件'; editor.dom.midMenu.style = 'top:' + (y + scrollTop) + 'px;left:' + (x + scrollLeft) + 'px;'; } @@ -568,34 +563,39 @@ editor_mappanel_wrapper = function (editor) { editor.uifunctions.copyLoc_click = function (e) { editor.uifunctions.hideMidMenu(); e.stopPropagation(); + e.preventDefault(); + editor_mode.onmode(''); + editor.uivalues.copyedInfo = editor.copyFromPos(); + printf('该点事件已复制'); + return; + } + + /** + * editor.dom.pasteLoc.onmousedown + * 菜单 移动此事件 + */ + editor.uifunctions.pasteLoc_click = function (e) { + editor.uifunctions.hideMidMenu(); + e.stopPropagation(); + e.preventDefault(); + if (!editor.uivalues.copyedInfo) { + printe("没有复制的事件"); + return; + } editor.savePreMap(); editor_mode.onmode(''); - var now = editor.pos, last = editor.uivalues.lastRightButtonPos[1]; - if (now.x == last.x && now.y == last.y) return; - editor.pasteToPos(editor.uivalues.lastCopyedInfo[1]); + editor.pasteToPos(editor.uivalues.copyedInfo); editor.updateMap(); editor.file.saveFloorFile(function (err) { if (err) { printe(err); throw (err) } - ; printf('复制事件成功'); + ; printf('粘贴到事件成功'); editor.uifunctions.unhighlightSaveFloorButton(); editor.drawPosSelection(); }); - } - - /** - * editor.dom.moveLoc.onmousedown - * 菜单 移动此事件 - */ - editor.uifunctions.moveLoc_click = function (e) { - editor.uifunctions.hideMidMenu(); - e.stopPropagation(); - editor.savePreMap(); - editor_mode.onmode(''); - editor.exchangePos(editor.pos, editor.uivalues.lastRightButtonPos[1]); - editor.uifunctions.unhighlightSaveFloorButton(); + return; } /** diff --git a/editor-mobile.html b/editor-mobile.html index b82d63df..d5a712f2 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -367,7 +367,7 @@ - +

diff --git a/editor.html b/editor.html index 5c00ccf8..3a4ffe01 100644 --- a/editor.html +++ b/editor.html @@ -390,7 +390,7 @@ - + diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index a66af87d..bec76390 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -61,7 +61,7 @@ (已完成!) 难度分歧的图块(颜色,含SL界面) (已完成!) 装备同时加属性和比例 (已完成!) removeMap和resumeMap -右键图块选择复制/粘贴事件 +(已完成!) 右键图块选择复制/粘贴事件 (已完成!) showImage, drawImage,立绘等加上对称选项 更多的图块blockly化 From 803b7c3cc42aa851eeeb5f949a0b8f536f0feaf6 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 20 May 2020 23:52:02 +0800 Subject: [PATCH 52/80] =?UTF-8?q?=E6=A5=BC=E5=B1=82=E8=89=B2=E8=B0=83?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E9=80=89=E6=8B=A9=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_blockly.js | 3 +-- _server/editor_table.js | 17 +++++++++++++++++ _server/table/comment.js | 2 +- _server/thirdparty/jsColor.js | 36 ++++++++++++++++------------------- editor-mobile.html | 8 ++++---- editor.html | 8 ++++---- 6 files changed, 43 insertions(+), 31 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 74325011..3d906c17 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -1169,9 +1169,8 @@ Blockly.FieldColour.prototype.createWidget_ = function() { setTimeout(function () { document.getElementById("colorPicker").value = getValue(); - window.jsColorPicker.confirm = setValue; // 设置位置 - triggerColorPicker(Blockly.WidgetDiv.DIV.style.left, Blockly.WidgetDiv.DIV.style.top); + openColorPicker(Blockly.WidgetDiv.DIV.style.left, Blockly.WidgetDiv.DIV.style.top, setValue); }); return document.createElement('table'); diff --git a/_server/editor_table.js b/_server/editor_table.js index d36d1da2..1e2e9e93 100644 --- a/_server/editor_table.js +++ b/_server/editor_table.js @@ -412,6 +412,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'event') editor_blockly.import(guid, { type: cobj._event }); if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); + if (cobj._type === 'color') editor.table.selectColor(input); } /** @@ -426,6 +427,7 @@ editor_table_wrapper = function (editor) { if (cobj._type === 'event') editor_blockly.import(guid, { type: cobj._event }); if (cobj._type === 'textarea') editor_multi.import(guid, { lint: cobj._lint, string: cobj._string }); if (cobj._type === 'material') editor.table.selectMaterial(input, cobj); + if (cobj._type === 'color') editor.table.selectColor(input); } else if (editor_mode.doubleClickMode === 'add') { editor_mode.doubleClickMode = 'change'; editor.table.addfunc(guid, obj, commentObj, thisTr, input, field, cobj, modeNode) @@ -446,6 +448,21 @@ editor_table_wrapper = function (editor) { }) } + editor_table.prototype.selectColor = function (input) { + if (input.value != null) { + var str = input.value.toString().replace(/[^\d.,]/g, ''); + if (/^(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d),(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d),(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(,0(\.\d+)?|,1)?$/.test(str)) { + document.getElementById('colorPicker').value = str; + } + } + var boundingBox = input.getBoundingClientRect(); + openColorPicker(boundingBox.x, boundingBox.y + boundingBox.height, function (value) { + value = value.replace(/[^\d.,]/g, ''); + input.value = '[' + value +']'; + input.onchange(); + }) + } + /** * 删除表格项 */ diff --git a/_server/table/comment.js b/_server/table/comment.js index 753dc71d..4cc774d4 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -464,7 +464,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "color": { "_leaf": true, - "_type": "textarea", + "_type": "color", "_docs": "色调", "_data": "该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组如[255,0,0,0.3]" }, diff --git a/_server/thirdparty/jsColor.js b/_server/thirdparty/jsColor.js index cbd9dee6..0d85e920 100644 --- a/_server/thirdparty/jsColor.js +++ b/_server/thirdparty/jsColor.js @@ -121,7 +121,7 @@ colorPickers.current = colorPickers[index]; } }, - createListener = function(e) { + createListener = function() { elm = document.getElementById("colorPicker"); var input = elm, position = window.ColorPicker.getOrigin(input), @@ -268,9 +268,19 @@ jsColorPicker('input.color', { size: 1, }); -function openColorFromButton() { - delete window.jsColorPicker.confirm; - triggerColorPicker('414px', '53px'); +function openColorPicker(px, py, callback) { + window.jsColorPicker.confirm = callback; + var colorPanel = document.getElementById('colorPanel'); + if (colorPanel.style.display=='none' && px != null && py != null) { + colorPanel.style.display = "inline-block"; + colorPanel.style.left = px + 'px'; + colorPanel.style.top = py + 'px'; + window.jsColorPicker.create(); + } + else { + colorPanel.style.display = 'none'; + delete window.jsColorPicker.confirm; + } } function confirmColor() { @@ -287,22 +297,8 @@ function confirmColor() { colorPicker.select(); document.execCommand("Copy"); } - - triggerColorPicker(); -} - -function triggerColorPicker(left, top) { - var colorPanel = document.getElementById('colorPanel'); - if (colorPanel.style.display=='none' && left && top) { - colorPanel.style.display = "inline-block"; - colorPanel.style.left = left; - colorPanel.style.top = top; - window.jsColorPicker.create(); - } - else { - colorPanel.style.display = 'none'; - delete window.jsColorPicker.confirm; - } + colorPanel.style.display = 'none'; + delete window.jsColorPicker.confirm; } // ------ AutoCompletion ------ diff --git a/editor-mobile.html b/editor-mobile.html index d5a712f2..cc699088 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -228,10 +228,6 @@ - @@ -249,6 +245,10 @@ +
diff --git a/editor.html b/editor.html index 3a4ffe01..afde3eb3 100644 --- a/editor.html +++ b/editor.html @@ -223,10 +223,6 @@
- @@ -244,6 +240,10 @@ +
From e6b4c7811441dc025e4b90253cc53d8b269b6b52 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Thu, 21 May 2020 10:58:20 +0800 Subject: [PATCH 53/80] =?UTF-8?q?=E6=A5=BC=E5=B1=82=E8=B4=B4=E5=9B=BE?= =?UTF-8?q?=E5=9B=BE=E5=9D=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 49 +++++++++++++++++++++ _server/MotaActionParse.js | 11 +++++ _server/editor_blockly.js | 3 ++ _server/table/comment.js | 3 +- editor-mobile.html | 1 + editor.html | 1 + libs/events.js | 2 + libs/maps.js | 89 ++++++++++++++++++-------------------- project/floors/sample1.js | 22 +++++----- project/functions.js | 1 + v2.x-final更新.txt | 3 ++ 11 files changed, 126 insertions(+), 59 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 6449f4d5..48b6854c 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -412,6 +412,51 @@ var code = ' \n'; return code; */; +floorImage_m + : '楼层贴图' BGNL? Newline floorImageList+ BEND + + +/* floorImage_m +tooltip : 楼层贴图 +helpUrl : https://h5mota.com/games/template/_docs/#/event +var code = '[\n'+floorImageList_0+']\n'; +return code; +*/; + +floorImageList + : floorOneImage + | floorEmptyImage; + +floorOneImage + : '图片名' EvalString '翻转' Reverse_List '图层' Bg_Fg2_List '绘制坐标' 'x' Int 'y' Int '初始禁用' Bool BGNL? Newline + '裁剪起点坐标' 'x' IntString? 'y' IntString? '宽' IntString? '高' IntString? '帧数' IntString? BEND + + +/* floorOneImage +tooltip : 楼层贴图 +default : ["bg.jpg","null","bg",0,0,false,"","","","",""] +helpUrl : https://h5mota.com/games/template/_docs/#/event +if (Reverse_List_0 && Reverse_List_0 != 'null') { + Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; +} else Reverse_List_0 = ''; +Bool_0 = Bool_0 ? (', "disable": true') : ''; +IntString_0 = IntString_0 && (', "sx": '+IntString_0); +IntString_1 = IntString_1 && (', "sy": '+IntString_1); +IntString_2 = IntString_2 && (', "w": '+IntString_2); +IntString_3 = IntString_3 && (', "h": '+IntString_3); +IntString_4 = IntString_4 && (', "frame": '+IntString_4); +return '{"name": "'+EvalString_0+'"'+Reverse_List_0+', "canvas": "'+Bg_Fg2_List_0+'", "x": '+Int_0+', "y": '+Int_1+Bool_0+IntString_0+IntString_1+IntString_2+IntString_3+IntString_4+'},\n'; +*/; + +floorEmptyImage + : Newline + +/* floorEmptyImage +var code = ' \n'; +return code; +*/; + + //为了避免关键字冲突,全部加了_s //动作 @@ -2910,6 +2955,10 @@ Bg_Fg_List : '背景层'|'前景层' /*Bg_Fg_List ['bg','fg']*/; +Bg_Fg2_List + : '背景层'|'前景层'|'自适配' + /*Bg_Fg2_List ['bg','fg','auto']*/; + IgnoreChangeFloor_List : '全局默认值' | '可穿透' | '不可穿透' /*IgnoreChangeFloor_List ['null','true','false']*/; diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index 5dc47b83..acfb4dcf 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -74,6 +74,17 @@ ActionParser.prototype.parse = function (obj,type) { } return MotaActionBlocks['equip_m'].xmlText([obj.type, obj.animate, buildEquip(obj.value), buildEquip(obj.percentage)]); + case 'floorImage': + if(!obj) obj=[]; + var text_choices = null; + for(var ii=obj.length-1,choice;choice=obj[ii];ii--) { + text_choices=MotaActionBlocks['floorOneImage'].xmlText([ + choice.name, choice.reverse, choice.canvas||'bg', choice.x||0, choice.y||0, choice.disable||false, + choice.sx, choice.sy, choice.w, choice.h, choice.frame, text_choices]); + } + return MotaActionBlocks['floorImage_m'].xmlText([text_choices]); + + case 'shop': var buildsub = function(obj,parser,next){ var text_choices = null; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 74325011..d4cee0f8 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -78,6 +78,9 @@ editor_blockly = function () { MotaActionFunctions.actionParser.parse({ "type": 0, "value": {"atk": 10}, "percentage": {"speed": 10}, }, 'equip'), + MotaActionFunctions.actionParser.parse([{ + "name": "bg.jpg", "x": 0, "y": 0, "canvas": "bg" + }], 'floorImage'), ], '显示文字':[ MotaActionBlocks['text_0_s'].xmlText(), diff --git a/_server/table/comment.js b/_server/table/comment.js index 753dc71d..a10b93aa 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -458,7 +458,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "images": { "_leaf": true, - "_type": "textarea", + "_type": "event", + "_event": "floorImage", "_docs": "楼层贴图", "_data": "背景/前景图;你可以选择若干张图片来作为背景/前景素材。详细用法请参见文档“自定义素材”中的说明。" }, diff --git a/editor-mobile.html b/editor-mobile.html index b82d63df..ac036b3f 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -219,6 +219,7 @@ + diff --git a/editor.html b/editor.html index 5c00ccf8..eaa90de5 100644 --- a/editor.html +++ b/editor.html @@ -215,6 +215,7 @@ + diff --git a/libs/events.js b/libs/events.js index c03d7379..66e9922b 100644 --- a/libs/events.js +++ b/libs/events.js @@ -928,6 +928,8 @@ events.prototype.doAction = function (keepUI) { } events.prototype._doAction_finishEvents = function () { + if (core.status.gameOver) return true; + // 事件处理完毕 if (core.status.event.data.list.length == 0) { // 检测并执行延迟自动事件 diff --git a/libs/maps.js b/libs/maps.js index f7a94593..b95d77b6 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -22,6 +22,17 @@ maps.prototype._setFloorSize = function (floorId) { core.floors[floorId].height = core.floors[floorId].height || core.__SIZE__; } +maps.prototype._resetFloorImages = function () { + for (var floorId in core.status.maps) { + (core.status.maps[floorId].images || []).forEach(function (one) { + var flag = "__floorImg__" + floorId + "_" + one.x + "_" + one.y; + if (core.getFlag(flag) == null) { + if (one.disabled) core.setFlag(flag, true); + } + }) + } +} + // ------ 加载地图与地图的存档读档(压缩与解压缩) ------ // ////// 加载某个楼层(从剧本或存档中) ////// @@ -896,39 +907,25 @@ maps.prototype._drawFloorImages = function (floorId, ctx, name, images, currStat floorId = floorId || core.status.floorId; if (!images) images = this._getFloorImages(floorId); var redraw = currStatus != null; - images.forEach(function (t) { - if (typeof t == 'string') t = [0, 0, t]; - var dx = parseInt(t[0]), dy = parseInt(t[1]), imageName = t[2], frame = core.clamp(parseInt(t[4]), 1, 8); - if (imageName.endsWith(':x') || imageName.endsWith(':y') || imageName.endsWith(':o')) { - imageName = imageName.substring(0, imageName.length - 2); - } - imageName = core.getMappedName(imageName); - var image = core.material.images.images[imageName]; + images.forEach(function (one) { + var image = core.material.images.images[core.getMappedName(one.name)]; + var frame = one.frame || 1; + if (!image) return; + var flag = "__floorImg__" + floorId + "_" + one.x + "_" + one.y; + if (core.hasFlag(flag)) return; if (redraw && frame == 1) return; // 不重绘 - if (core.isset(dx) && core.isset(dy) && image && - !core.hasFlag("__floorImg__" + floorId + "_" + dx + "_" + dy)) { - var width = parseInt(image.width / frame), offsetX = (currStatus || 0) % frame * width; - if (/.*\.gif/i.test(imageName) && main.mode == 'play') { - if (redraw) return; // 忽略gif - this._drawFloorImages_gif(image, dx, dy); - return; - } - core.maps._drawFloorImage(ctx, name, t[3], t[2], image, offsetX, width, dx, dy, redraw); + if (/.*\.gif/i.test(one.name)) { + if (redraw) return; + this._drawFloorImages_gif(image, one.x, one.y); + return; } - }); + this._drawFloorImage(ctx, name, one, image, currStatus); + }, this); } maps.prototype._getFloorImages = function (floorId) { - floorId = floorId || core.status.floorId; - var images = []; - if ((core.status.maps || core.floors)[floorId].images) { - images = (core.status.maps || core.floors)[floorId].images; - if (typeof images == 'string') { - images = [[0, 0, images]]; - } - } - return images; + return ((core.status.maps || core.floors)[floorId || core.status.floorId] || {}).images || []; } maps.prototype._drawFloorImages_gif = function (image, dx, dy) { @@ -944,30 +941,26 @@ maps.prototype._drawFloorImages_gif = function (image, dx, dy) { return; } -maps.prototype._drawFloorImage = function (ctx, name, type, imageName, image, offsetX, width, dx, dy, redraw) { +maps.prototype._drawFloorImage = function (ctx, name, one, image, currStatus) { var height = image.height; - var _draw = function () { - if (redraw) core.clearMap(ctx, dx, dy, width, height); - core.drawImage(ctx, imageName, offsetX, 0, width, height, dx, dy, width, height); - } - if (!type) { - if (name != 'bg') return; - return _draw(); - } - if (type == 1) { - if (name != 'fg') return; - return _draw(); - } - if (type == 2) { + var imageName = one.name + (one.reverse||''); + var width = parseInt((one.w == null ? image.width : one.w) / (one.frame || 1)); + var height = one.h == null ? image.height : one.h; + var sx = (one.sx || 0) + (currStatus || 0) % (one.frame || 1) * width; + var sy = one.sy || 0; + + if (one.canvas != 'auto' && one.canvas != name) return; + if (one.canvas != 'auto') { + if (currStatus != null) core.clearMap(ctx, one.x, one.y, width, height); + core.drawImage(ctx, imageName, sx, sy, width, height, one.x, one.y, width, height); + } else { if (name == 'bg') { - if (redraw) core.clearMap(ctx, dx, dy + height - 32, width, 32); - core.drawImage('bg', imageName, offsetX, height - 32, width, 32, dx, dy + height - 32, width, 32); + if (currStatus != null) core.clearMap(ctx, one.x, one.y + height - 32, width, 32); + core.drawImage(ctx, imageName, sx, sy + height - 32, width, 32, one.x, one.y+height - 32, width, 32); + } else if (name == 'fg') { + if (currStatus != null) core.clearMap(ctx, one.x, one.y, width, height - 32); + core.drawImage(ctx, imageName, sx, sy, width, height - 32, one.x, one.y, width, height - 32); } - else if (name == 'fg') { - if (redraw) core.clearMap(ctx, dx, dy, width, height - 32); - core.drawImage('fg', imageName, offsetX, 0, width, height - 32, dx, dy, width, height - 32); - } - return; } } diff --git a/project/floors/sample1.js b/project/floors/sample1.js index a3468def..14361334 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -7,12 +7,14 @@ main.floors.sample1= "canUseQuickShop": true, "defaultGround": "grass", "images": [ - [ - 0, - 0, - "bg.jpg", - 0 - ] + { + "name": "bg.jpg", + "canvas": "bg", + "x": 0, + "y": 0, + "w": 416, + "h": 416 + } ], "weather": [ "snow", @@ -263,13 +265,13 @@ main.floors.sample1= } ], "10,4": [ - "\t[blackKing]你终于还是来了。", + "\t[blackMS]你终于还是来了。", "\t[hero]放开我们的公主!", - "\t[blackKing]如果我不愿意呢?", + "\t[blackMS]如果我不愿意呢?", "\t[hero]无需多说,拔剑吧!", { "type": "battle", - "id": "blackKing" + "id": "blackMS" }, { "type": "hide", @@ -285,7 +287,7 @@ main.floors.sample1= 7 ] }, - "\t[blackKing]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", + "\t[blackMS]没想到你已经变得这么强大了... 算你厉害。\n公主就交给你了,请好好对她。", { "type": "hide" } diff --git a/project/functions.js b/project/functions.js index 220ffe03..2ba7ca99 100644 --- a/project/functions.js +++ b/project/functions.js @@ -26,6 +26,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // 初始化地图 core.status.floorId = floorId; core.status.maps = maps; + core.maps._resetFloorImages(); // 初始化怪物和道具 core.material.enemys = core.enemys.getEnemys(); core.material.items = core.items.getItems(); diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index a66af87d..c9ebdcbd 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -64,6 +64,9 @@ 右键图块选择复制/粘贴事件 (已完成!) showImage, drawImage,立绘等加上对称选项 更多的图块blockly化 +勇士帧抖动 +怪物名和特殊属性自动缩小 + ------------- From 237b6a492641c0ae215783170ca3e2399184a7b2 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Thu, 21 May 2020 12:32:33 +0800 Subject: [PATCH 54/80] =?UTF-8?q?=E9=97=A8=E4=BF=A1=E6=81=AF&=E6=9C=9D?= =?UTF-8?q?=E5=90=91=E7=9A=84=E5=9B=BE=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 73 ++++++++++++++++++++++++++++++++++++++ _server/MotaActionParse.js | 19 ++++++++++ _server/editor_blockly.js | 12 +++++-- _server/table/comment.js | 6 ++-- editor-mobile.html | 2 ++ editor.html | 2 ++ libs/events.js | 19 +++++----- project/maps.js | 28 +++++++-------- 8 files changed, 133 insertions(+), 28 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 48b6854c..b117d948 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -457,6 +457,75 @@ return code; */; +// doorInfo 事件编辑器入口之一 +doorInfo_m + : '门信息' '开关门时间' Int '开门音效' EvalString? '关门音效' EvalString? BGNL? Newline '需要钥匙' doorKeyList+ BEND + + +/* doorInfo_m +tooltip : 开门信息 +default : [160, 'door.mp3', 'door.mp3'] +helpUrl : https://h5mota.com/games/template/_docs/#/event +EvalString_0 = EvalString_0 && (', "openSound": "' + EvalString_0 + '"'); +EvalString_1 = EvalString_1 && (', "closeSound": "' + EvalString_1 + '"'); +var code = '{"time": '+Int_0+EvalString_0+EvalString_1+', "keys": {\n'+doorKeyList_0+'\n}}'; +return code; +*/; + +doorKeyList + : doorKeyKnown + | doorKeyUnknown + | doorKeyEmpty; + + +doorKeyKnown + : Key_List ':' Int BEND + + +/* doorKeyKnown +tooltip : 需要钥匙 +default : ['yellowKey', 1] +helpUrl : https://h5mota.com/games/template/_docs/#/event +return '"'+Key_List_0+'": '+Int_0+', '; +*/; + +doorKeyUnknown + : IdString ':' Int BEND + + +/* doorKeyUnknown +tooltip : 需要钥匙 +default : ['orangeKey', 1] +helpUrl : https://h5mota.com/games/template/_docs/#/event +return '"'+IdString_0+'": '+Int_0+', '; +*/; + + +doorKeyEmpty + : Newline + +/* doorKeyEmpty +var code = ' \n'; +return code; +*/; + + +faceIds_m + : '行走图朝向:' BGNL? Newline '向上ID' IdString? '向下ID' IdString? '向左ID' IdString? '向右ID' IdString? BEND + + +/* faceIds_m +tooltip : 行走图朝向 +default : ["","","",""] +helpUrl : https://h5mota.com/games/template/_docs/#/event +return '{' + [ + IdString_0 && ('"up": "' + IdString_0 +'"'), + IdString_1 && ('"down": "' + IdString_1 +'"'), + IdString_2 && ('"left": "' + IdString_2 +'"'), + IdString_3 && ('"right": "' + IdString_3 +'"'), +].join(', ') + '}\n'; +*/; + //为了避免关键字冲突,全部加了_s //动作 @@ -3042,6 +3111,10 @@ Equip_List : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'魔力'|'魔力上限' /*Equip_List ['hp','hpmax','atk','def','mdef','mana','manamax']*/; +Key_List + : '黄钥匙'|'蓝钥匙'|'红钥匙'|'绿钥匙'|'铁门钥匙' + /*Key_List ['yellowKey','blueKey','redKey','greenKey','steelKey']*/; + //转blockly后不保留需要加" EvalString : Equote_double (ESC_double | ~["\\])* Equote_double diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index acfb4dcf..0724ec9a 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -74,6 +74,22 @@ ActionParser.prototype.parse = function (obj,type) { } return MotaActionBlocks['equip_m'].xmlText([obj.type, obj.animate, buildEquip(obj.value), buildEquip(obj.percentage)]); + case 'doorInfo': + if(!obj) obj={}; + var buildKeys = function (obj) { + obj = obj || {}; + var text_choices = null; + var knownListKeys = MotaActionBlocks.doorKeyKnown.json.args0[0].options.map(function (one) {return one[1];}) + Object.keys(obj).sort().forEach(function (key) { + var one = knownListKeys.indexOf(key) >= 0 ? 'doorKeyKnown' : 'doorKeyUnknown'; + text_choices = MotaActionBlocks[one].xmlText([ + key, obj.key, text_choices + ]); + }) + return text_choices; + } + return MotaActionBlocks['doorInfo_m'].xmlText([obj.time || 160, obj.openSound, obj.closeSound, buildKeys(obj.keys)]); + case 'floorImage': if(!obj) obj=[]; var text_choices = null; @@ -84,6 +100,9 @@ ActionParser.prototype.parse = function (obj,type) { } return MotaActionBlocks['floorImage_m'].xmlText([text_choices]); + case 'faceIds': + if(!obj) obj={}; + return MotaActionBlocks['faceIds_m'].xmlText([obj.up||"", obj.down||"", obj.left||"", obj.right||""]); case 'shop': var buildsub = function(obj,parser,next){ diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 1d319b71..f857c66f 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -81,6 +81,10 @@ editor_blockly = function () { MotaActionFunctions.actionParser.parse([{ "name": "bg.jpg", "x": 0, "y": 0, "canvas": "bg" }], 'floorImage'), + MotaActionFunctions.actionParser.parse({ + "time": 160, "openSound": "door.mp3", "closeSound": "door.mp3", "keys": {"yellowKey": 1, "orangeKey": 1} + }, 'doorInfo'), + MotaActionBlocks['faceIds_m'].xmlText(), ], '显示文字':[ MotaActionBlocks['text_0_s'].xmlText(), @@ -1052,7 +1056,8 @@ function omitedcheckUpdateFunction(event) { || (type == 'choices_s' && name == 'IdString_0') || (type == 'choicesContext' && name == 'IdString_0') || (type == 'closeDoor_s' && name == 'IdString_0') || (type == 'setBlock_s' && name == 'EvalString_0') || (type == 'setBgFgBlock_s' && name == 'EvalString_0') || (type == 'drawIcon_s' && name == 'IdString_0') - || (type == 'shopsub' && name == 'IdString_1') || (type == 'shopChoices' && name == 'IdString_0')) { + || (type == 'shopsub' && name == 'IdString_1') || (type == 'shopChoices' && name == 'IdString_0') + || type == 'faceIds_m') { return filter(allIds, content); } @@ -1062,13 +1067,14 @@ function omitedcheckUpdateFunction(event) { } // 对道具ID进行补全 - if ((type == 'useItem_s' || type == 'loadEquip_s') && name == 'IdString_0') { + if ((type == 'useItem_s' || type == 'loadEquip_s' || type == 'doorKeyUnknown') && name == 'IdString_0') { return filter(allItems, content); } // 对图片名进行补全 if ((type == 'showImage_s' || type == 'showImage_1_s' || type == 'showGif_s' || type == 'setHeroIcon_s' - || type == 'follow_s' || type == 'unfollow_s' || type == 'drawImage_s' || type == 'drawImage_1_s') && name == 'EvalString_0') { + || type == 'follow_s' || type == 'unfollow_s' || type == 'drawImage_s' || type == 'drawImage_1_s' + || type == 'floorOneImage') && name == 'EvalString_0') { return filter(allImages, content); } diff --git a/_server/table/comment.js b/_server/table/comment.js index ca63b022..bdf74943 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -336,13 +336,15 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { }, "doorInfo": { "_leaf": true, - "_type": "textarea", + "_type": "event", + "_event": "doorInfo", "_docs": "门信息", "_data": "该图块的门信息,是一个四元数组。\n第一项为所需要的钥匙信息,第二项为开关门的毫秒数,第三项为开此门时的音效,第四项为关此门时的音效。仅对animates生效。" }, "faceIds": { "_leaf": true, - "_type": "textarea", + "_type": "event", + "_event": "faceIds", "_docs": "行走图朝向", "_data": "行走图朝向,仅对NPC有效。可以在这里定义同一个NPC的多个朝向行走图。\n比如 {\"up\":\"N333\",\"down\":\"N334\",\"left\":\"N335\",\"right\":\"N336\"} 就将该素材的上下左右朝向分别绑定到N333,N334,N335和N336四个图块。\n在勇士撞上NPC时,或NPC在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。" } diff --git a/editor-mobile.html b/editor-mobile.html index e73794aa..ea13578b 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -220,6 +220,8 @@ + + diff --git a/editor.html b/editor.html index daba251b..3ede676b 100644 --- a/editor.html +++ b/editor.html @@ -216,6 +216,8 @@ + + diff --git a/libs/events.js b/libs/events.js index 66e9922b..412f20b3 100644 --- a/libs/events.js +++ b/libs/events.js @@ -469,13 +469,14 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { return clearAndReturn(); doorInfo = doorInfo.doorInfo; // Check all keys - var keyInfo = doorInfo[0]; + var keyInfo = doorInfo.keys || {}; if (needKey) { - if (keyInfo == null) { - core.drawTip("无法开启此门"); - return clearAndReturn(); - } for (var keyName in keyInfo) { + // --- 如果是一个不存在的道具,则直接认为无法开启 + if (!core.material.items[keyName]) { + core.drawTip("无法开启此门"); + return clearAndReturn(); + } var keyValue = keyInfo[keyName]; if (core.itemCount(keyName) < keyValue) { core.drawTip("你没有" + ((core.material.items[keyName] || {}).name || "钥匙"), null, true); @@ -487,7 +488,7 @@ events.prototype._openDoor_check = function (id, x, y, needKey) { core.removeItem(keyName, keyInfo[keyName]); } } - core.playSound(doorInfo[2] || 'door.mp3'); + core.playSound(doorInfo.openSound); return true; } @@ -495,7 +496,7 @@ events.prototype._openDoor_animate = function (id, x, y, callback) { var blockInfo = core.getBlockInfo(id); var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; - var speed = (core.getBlockById(id).event.doorInfo[1] || 160) / 4; + var speed = (core.getBlockById(id).event.doorInfo.time || 160) / 4; var locked = core.status.lockControl; core.lockControl(); @@ -2629,11 +2630,11 @@ events.prototype.closeDoor = function (x, y, id, callback) { } // 关门动画 - core.playSound(doorInfo[3] || 'door.mp3'); + core.playSound(doorInfo.closeDoor); var blockInfo = core.getBlockInfo(id); var image = blockInfo.image, posY = blockInfo.posY, height = blockInfo.height; - var speed = (doorInfo[1] || 160) / 4, state = 0; + var speed = (doorInfo.time || 160) / 4, state = 0; var animate = window.setInterval(function () { state++; if (state == 4) { diff --git a/project/maps.js b/project/maps.js index 09a10db7..0883429d 100644 --- a/project/maps.js +++ b/project/maps.js @@ -1,8 +1,8 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = { - "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, - "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, - "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"]}, + "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, + "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, + "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "4": {"cls":"animates","id":"star","name":"星空"}, "5": {"cls":"animates","id":"lava","name":"岩浆"}, "6": {"cls":"terrains","id":"ice"}, @@ -68,12 +68,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "71": {"cls":"items","id":"shield0"}, "72": {"cls":"items","id":"skill1"}, "73": {"cls":"items","id":"wand"}, - "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":[{"yellowKey":1},160,"door.mp3","door.mp3"],"name":"黄门"}, - "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":[{"blueKey":1},160,"door.mp3","door.mp3"],"name":"蓝门"}, - "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":[{"redKey":1},160,"door.mp3","door.mp3"],"name":"红门"}, - "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":[{"greenKey":1},160,"door.mp3","door.mp3"],"name":"绿门"}, - "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":[null,160,"door.mp3","door.mp3"],"name":"机关门"}, - "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":[{"steelKey":1},160,"door.mp3","door.mp3"],"name":"铁门"}, + "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}},"name":"黄门"}, + "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}},"name":"蓝门"}, + "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}},"name":"红门"}, + "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"greenKey":1}},"name":"绿门"}, + "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"specialKey":1}},"name":"机关门"}, + "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"steelKey":1}},"name":"铁门"}, "87": {"cls":"terrains","id":"upFloor","canPass":true}, "88": {"cls":"terrains","id":"downFloor","canPass":true}, "89": {"cls":"animates","id":"portal","canPass":true}, @@ -86,11 +86,11 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "102": {"cls":"animates","id":"crystalBottom"}, "103": {"cls":"animates","id":"fire"}, "104": {"cls":"animates","id":"switch"}, - "105": {"cls":"animates","id":"steelDoor2","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, - "106": {"cls":"animates","id":"steelDoor3","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, - "107": {"cls":"animates","id":"iceDoor","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, - "108": {"cls":"animates","id":"iceDoor2","doorInfo":[{},"door.mp3","door.mp3"],"animate":1,"trigger":"openDoor"}, - "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":[null,"door.mp3","door.mp3"]}, + "105": {"cls":"animates","id":"steelDoor2","doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}},"animate":1,"trigger":"openDoor"}, + "106": {"cls":"animates","id":"steelDoor3","doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}},"animate":1,"trigger":"openDoor"}, + "107": {"cls":"animates","id":"iceDoor","doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}},"animate":1,"trigger":"openDoor"}, + "108": {"cls":"animates","id":"iceDoor2","doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}},"animate":1,"trigger":"openDoor"}, + "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "121": {"cls":"npcs","id":"man"}, "122": {"cls":"npcs","id":"trader"}, "123": {"cls":"npcs","id":"thief"}, From 012c8d7d80289df5146f66d4df6aaff09a808747 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Thu, 21 May 2020 22:04:21 +0800 Subject: [PATCH 55/80] =?UTF-8?q?=E6=9B=B4=E6=96=B0keyboard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/materials/keyboard.png | Bin 26517 -> 26429 bytes styles.css | 5 ----- v2.x-final更新.txt | 3 ++- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/project/materials/keyboard.png b/project/materials/keyboard.png index 46500bcb201d93b1822aa62eed4b22ae5370ca27..0a89fc5275120078cf4c59c19dfd215c4fd417f9 100644 GIT binary patch literal 26429 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 diff --git a/styles.css b/styles.css index 999e30f4..0a12763a 100644 --- a/styles.css +++ b/styles.css @@ -295,27 +295,22 @@ p#name { #bg { z-index: 10; - image-rendering: pixelated; } #event { z-index: 30; - image-rendering: pixelated; } #hero { z-index: 40; - image-rendering: pixelated; } #event2 { z-index: 50; - image-rendering: pixelated; } #fg { z-index: 60; - image-rendering: pixelated; } #damage { diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index c2c2bc15..30fc8cbf 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -63,9 +63,10 @@ (已完成!) removeMap和resumeMap (已完成!) 右键图块选择复制/粘贴事件 (已完成!) showImage, drawImage,立绘等加上对称选项 -更多的图块blockly化 +(已完成!) 更多的图块blockly化 勇士帧抖动 怪物名和特殊属性自动缩小 +行走动画? ------------- From 53f98f7b3af6a248dc31925ad3b9f9e77040dd0f Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Fri, 22 May 2020 09:47:32 +0800 Subject: [PATCH 56/80] update converter.bundle --- _server/blockly/Converter.bundle.min.js | 2 +- _server/editor_blockly.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/_server/blockly/Converter.bundle.min.js b/_server/blockly/Converter.bundle.min.js index fa99a635..82b274ba 100644 --- a/_server/blockly/Converter.bundle.min.js +++ b/_server/blockly/Converter.bundle.min.js @@ -1 +1 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=32)}([function(t,e){function n(t){return"["+t.join(", ")+"]"}function r(t,e){return t.equals(e)}function i(t){return t.hashCode()}function o(t,e){return this.data={},this.hashFunction=t||i,this.equalsFunction=e||r,this}function s(){return this.data=[],this}function a(t,e){return this.data={},this.hashFunction=t||i,this.equalsFunction=e||r,this}function l(){return this.data={},this}function u(){return this}function c(){return this.count=0,this.hash=0,this}String.prototype.seed=String.prototype.seed||Math.round(Math.random()*Math.pow(2,32)),String.prototype.hashCode=function(){var t,e,n,r,i,o,s,a,l=this.toString();for(t=3&l.length,e=l.length-t,n=String.prototype.seed,i=3432918353,o=461845907,a=0;a>>16)*i&65535)<<16)&4294967295)<<15|s>>>17))*o+(((s>>>16)*o&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(r>>>16)&65535)<<16);switch(s=0,t){case 3:s^=(255&l.charCodeAt(a+2))<<16;case 2:s^=(255&l.charCodeAt(a+1))<<8;case 1:n^=s=(65535&(s=(s=(65535&(s^=255&l.charCodeAt(a)))*i+(((s>>>16)*i&65535)<<16)&4294967295)<<15|s>>>17))*o+(((s>>>16)*o&65535)<<16)&4294967295}return n^=l.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0},Object.defineProperty(o.prototype,"length",{get:function(){var t=0;for(var e in this.data)0===e.indexOf("hash_")&&(t+=this.data[e].length);return t}}),o.prototype.add=function(t){var e="hash_"+this.hashFunction(t);if(e in this.data){for(var n=this.data[e],r=0;r>>17,n*=461845907,this.count=this.count+1;var r=this.hash^n;r=5*(r=r<<13|r>>>19)+3864292196,this.hash=r}}},c.prototype.finish=function(){var t=this.hash^4*this.count;return t^=t>>>16,t*=2246822507,t^=t>>>13,t*=3266489909,t^=t>>>16},u.prototype.get=function(t,e){var n=this[t]||null;return null===n?null:n[e]||null},u.prototype.set=function(t,e,n){var r=this[t]||null;null===r&&(r={},this[t]=r),r[e]=n},e.Hash=c,e.Set=o,e.Map=a,e.BitSet=s,e.AltDict=l,e.DoubleDict=u,e.hashStuff=function(){var t=new c;return t.update.apply(arguments),t.finish()},e.escapeWhitespace=function(t,e){return t=(t=(t=t.replace("\t","\\t")).replace("\n","\\n")).replace("\r","\\r"),e&&(t=t.replace(" ","·")),t},e.arrayToString=n,e.titleCase=function(t){return t.replace(/\w\S*/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1)})},e.equalArrays=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;if(t==e)return!0;if(t.length!=e.length)return!1;for(var n=0;n"},set:function(t){this._text=t}}),r.prototype.toString=function(){var t=this.text;return t=null!==t?t.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t"):"","[@"+this.tokenIndex+","+this.start+":"+this.stop+"='"+t+"',<"+this.type+">"+(this.channel>0?",channel="+this.channel:"")+","+this.line+":"+this.column+"]"},e.Token=n,e.CommonToken=r},function(t,e,n){var r=n(1).Token;function i(t,e){return this.start=t,this.stop=e,this}function o(){this.intervals=null,this.readOnly=!1}i.prototype.contains=function(t){return t>=this.start&&t=n.stop?(this.intervals.pop(t+1),this.reduce(t)):e.stop>=n.start&&(this.intervals[t]=new i(e.start,n.stop),this.intervals.pop(t+1))}},o.prototype.complement=function(t,e){var n=new o;n.addInterval(new i(t,e+1));for(var r=0;rr.start&&t.stop=r.stop?(this.intervals.splice(e,1),e-=1):t.start"):t.push("'"+String.fromCharCode(n.start)+"'"):t.push("'"+String.fromCharCode(n.start)+"'..'"+String.fromCharCode(n.stop-1)+"'")}return t.length>1?"{"+t.join(", ")+"}":t[0]},o.prototype.toIndexString=function(){for(var t=[],e=0;e"):t.push(n.start.toString()):t.push(n.start.toString()+".."+(n.stop-1).toString())}return t.length>1?"{"+t.join(", ")+"}":t[0]},o.prototype.toTokenString=function(t,e){for(var n=[],r=0;r1?"{"+n.join(", ")+"}":n[0]},o.prototype.elementName=function(t,e,n){return n===r.EOF?"":n===r.EPSILON?"":t[n]||e[n]},e.Interval=i,e.IntervalSet=o},function(t,e){function n(){return this.atn=null,this.stateNumber=n.INVALID_STATE_NUMBER,this.stateType=null,this.ruleIndex=0,this.epsilonOnlyTransitions=!1,this.transitions=[],this.nextTokenWithinRule=null,this}function r(){return n.call(this),this.stateType=n.BASIC,this}function i(){return n.call(this),this.decision=-1,this.nonGreedy=!1,this}function o(){return i.call(this),this.endState=null,this}function s(){return o.call(this),this.stateType=n.BLOCK_START,this}function a(){return n.call(this),this.stateType=n.BLOCK_END,this.startState=null,this}function l(){return n.call(this),this.stateType=n.RULE_STOP,this}function u(){return n.call(this),this.stateType=n.RULE_START,this.stopState=null,this.isPrecedenceRule=!1,this}function c(){return i.call(this),this.stateType=n.PLUS_LOOP_BACK,this}function h(){return o.call(this),this.stateType=n.PLUS_BLOCK_START,this.loopBackState=null,this}function p(){return o.call(this),this.stateType=n.STAR_BLOCK_START,this}function f(){return n.call(this),this.stateType=n.STAR_LOOP_BACK,this}function d(){return i.call(this),this.stateType=n.STAR_LOOP_ENTRY,this.loopBackState=null,this.isPrecedenceDecision=null,this}function y(){return n.call(this),this.stateType=n.LOOP_END,this.loopBackState=null,this}function g(){return i.call(this),this.stateType=n.TOKEN_START,this}n.INVALID_TYPE=0,n.BASIC=1,n.RULE_START=2,n.BLOCK_START=3,n.PLUS_BLOCK_START=4,n.STAR_BLOCK_START=5,n.TOKEN_START=6,n.RULE_STOP=7,n.BLOCK_END=8,n.STAR_LOOP_BACK=9,n.STAR_LOOP_ENTRY=10,n.PLUS_LOOP_BACK=11,n.LOOP_END=12,n.serializationNames=["INVALID","BASIC","RULE_START","BLOCK_START","PLUS_BLOCK_START","STAR_BLOCK_START","TOKEN_START","RULE_STOP","BLOCK_END","STAR_LOOP_BACK","STAR_LOOP_ENTRY","PLUS_LOOP_BACK","LOOP_END"],n.INVALID_STATE_NUMBER=-1,n.prototype.toString=function(){return this.stateNumber},n.prototype.equals=function(t){return t instanceof n&&this.stateNumber===t.stateNumber},n.prototype.isNonGreedyExitState=function(){return!1},n.prototype.addTransition=function(t,e){void 0===e&&(e=-1),0===this.transitions.length?this.epsilonOnlyTransitions=t.isEpsilon:this.epsilonOnlyTransitions!==t.isEpsilon&&(this.epsilonOnlyTransitions=!1),-1===e?this.transitions.push(t):this.transitions.splice(e,1,t)},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,i.prototype=Object.create(n.prototype),i.prototype.constructor=i,o.prototype=Object.create(i.prototype),o.prototype.constructor=o,s.prototype=Object.create(o.prototype),s.prototype.constructor=s,a.prototype=Object.create(n.prototype),a.prototype.constructor=a,l.prototype=Object.create(n.prototype),l.prototype.constructor=l,u.prototype=Object.create(n.prototype),u.prototype.constructor=u,c.prototype=Object.create(i.prototype),c.prototype.constructor=c,h.prototype=Object.create(o.prototype),h.prototype.constructor=h,p.prototype=Object.create(o.prototype),p.prototype.constructor=p,f.prototype=Object.create(n.prototype),f.prototype.constructor=f,d.prototype=Object.create(i.prototype),d.prototype.constructor=d,y.prototype=Object.create(n.prototype),y.prototype.constructor=y,g.prototype=Object.create(i.prototype),g.prototype.constructor=g,e.ATNState=n,e.BasicState=r,e.DecisionState=i,e.BlockStartState=o,e.BlockEndState=a,e.LoopEndState=y,e.RuleStartState=u,e.RuleStopState=l,e.TokensStartState=g,e.PlusLoopbackState=c,e.StarLoopbackState=f,e.StarLoopEntryState=d,e.PlusBlockStartState=h,e.StarBlockStartState=p,e.BasicBlockStartState=s},function(t,e,n){var r=n(1).Token,i=n(2).Interval,o=new i(-1,-2);n(0);function s(){return this}function a(){return s.call(this),this}function l(){return a.call(this),this}function u(){return l.call(this),this}function c(){return l.call(this),this}function h(){return c.call(this),this}function p(){return this}function f(){return this}function d(t){return c.call(this),this.parentCtx=null,this.symbol=t,this}function y(t){return d.call(this,t),this}function g(){return this}a.prototype=Object.create(s.prototype),a.prototype.constructor=a,l.prototype=Object.create(a.prototype),l.prototype.constructor=l,u.prototype=Object.create(l.prototype),u.prototype.constructor=u,c.prototype=Object.create(l.prototype),c.prototype.constructor=c,h.prototype=Object.create(c.prototype),h.prototype.constructor=h,p.prototype.visit=function(t){return Array.isArray(t)?t.map(function(t){return t.accept(this)},this):t.accept(this)},p.prototype.visitChildren=function(t){return this.visit(t.children)},p.prototype.visitTerminal=function(t){},p.prototype.visitErrorNode=function(t){},f.prototype.visitTerminal=function(t){},f.prototype.visitErrorNode=function(t){},f.prototype.enterEveryRule=function(t){},f.prototype.exitEveryRule=function(t){},d.prototype=Object.create(c.prototype),d.prototype.constructor=d,d.prototype.getChild=function(t){return null},d.prototype.getSymbol=function(){return this.symbol},d.prototype.getParent=function(){return this.parentCtx},d.prototype.getPayload=function(){return this.symbol},d.prototype.getSourceInterval=function(){if(null===this.symbol)return o;var t=this.symbol.tokenIndex;return new i(t,t)},d.prototype.getChildCount=function(){return 0},d.prototype.accept=function(t){return t.visitTerminal(this)},d.prototype.getText=function(){return this.symbol.text},d.prototype.toString=function(){return this.symbol.type===r.EOF?"":this.symbol.text},y.prototype=Object.create(d.prototype),y.prototype.constructor=y,y.prototype.isErrorNode=function(){return!0},y.prototype.accept=function(t){return t.visitErrorNode(this)},g.prototype.walk=function(t,e){if(e instanceof h||void 0!==e.isErrorNode&&e.isErrorNode())t.visitErrorNode(e);else if(e instanceof c)t.visitTerminal(e);else{this.enterRule(t,e);for(var n=0;n=0&&this.startIndexe.returnState&&(f[0]=e.returnState,f[1]=t.returnState);var d=[p,p],y=new u(d,f);return null!==r&&r.set(t,e,y),y}var f=[t.returnState,e.returnState],d=[t.parentCtx,e.parentCtx];t.returnState>e.returnState&&(f[0]=e.returnState,f[1]=t.returnState,d=[e.parentCtx,t.parentCtx]);var g=new u(d,f);return null!==r&&r.set(t,e,g),g}(t,e,n,r);if(n){if(t instanceof l)return t;if(e instanceof l)return e}return t instanceof a&&(t=new u([t.getParent()],[t.returnState])),e instanceof a&&(e=new u([e.getParent()],[e.returnState])),function(t,e,n,r){if(null!==r){var i=r.get(t,e);if(null!==i)return i;if(null!==(i=r.get(e,t)))return i}var s=0,l=0,h=0,p=[],f=[];for(;s0&&(t+=", "),this.returnStates[e]!==o.EMPTY_RETURN_STATE?(t+=this.returnStates[e],null!==this.parents[e]?t=t+" "+this.parents[e]:t+="null"):t+="$";return t+"]"},e.merge=c,e.PredictionContext=o,e.PredictionContextCache=s,e.SingletonPredictionContext=a,e.predictionContextFromRuleContext=function t(e,n){if(void 0!==n&&null!==n||(n=r.EMPTY),null===n.parentCtx||n===r.EMPTY)return o.EMPTY;var i=t(e,n.parentCtx),s=e.states[n.invokingState].transitions[0];return a.create(i,s.followState.stateNumber)},e.getCachedPredictionContext=function t(e,n,r){if(e.isEmpty())return e;var i=r[e]||null;if(null!==i)return i;if(null!==(i=n.get(e)))return r[e]=i,i;for(var s=!1,l=[],c=0;c=this.states.length)throw"Invalid state number.";var n=this.states[t],r=this.nextTokens(n);if(!r.contains(s.EPSILON))return r;var o=new i;for(o.addSet(r),o.removeOne(s.EPSILON);null!==e&&e.invokingState>=0&&r.contains(s.EPSILON);){var a=this.states[e.invokingState].transitions[0];r=this.nextTokens(a.followState),o.addSet(r),o.removeOne(s.EPSILON),e=e.parentCtx}return r.contains(s.EPSILON)&&o.addOne(s.EOF),o},o.INVALID_ALT_NUMBER=0,e.ATN=o},function(t,e,n){var r=n(1).Token,i=(n(2).Interval,n(2).IntervalSet),o=n(10).Predicate,s=n(10).PrecedencePredicate;function a(t){if(void 0===t||null===t)throw"target cannot be null.";return this.target=t,this.isEpsilon=!1,this.label=null,this}function l(t,e){return a.call(this,t),this.label_=e,this.label=this.makeLabel(),this.serializationType=a.ATOM,this}function u(t,e,n,r){return a.call(this,t),this.ruleIndex=e,this.precedence=n,this.followState=r,this.serializationType=a.RULE,this.isEpsilon=!0,this}function c(t,e){return a.call(this,t),this.serializationType=a.EPSILON,this.isEpsilon=!0,this.outermostPrecedenceReturn=e,this}function h(t,e,n){return a.call(this,t),this.serializationType=a.RANGE,this.start=e,this.stop=n,this.label=this.makeLabel(),this}function p(t){return a.call(this,t),this}function f(t,e,n,r){return p.call(this,t),this.serializationType=a.PREDICATE,this.ruleIndex=e,this.predIndex=n,this.isCtxDependent=r,this.isEpsilon=!0,this}function d(t,e,n,r){return a.call(this,t),this.serializationType=a.ACTION,this.ruleIndex=e,this.actionIndex=void 0===n?-1:n,this.isCtxDependent=void 0!==r&&r,this.isEpsilon=!0,this}function y(t,e){return a.call(this,t),this.serializationType=a.SET,void 0!==e&&null!==e?this.label=e:(this.label=new i,this.label.addOne(r.INVALID_TYPE)),this}function g(t,e){return y.call(this,t,e),this.serializationType=a.NOT_SET,this}function v(t){return a.call(this,t),this.serializationType=a.WILDCARD,this}function x(t,e){return p.call(this,t),this.serializationType=a.PRECEDENCE,this.precedence=e,this.isEpsilon=!0,this}a.EPSILON=1,a.RANGE=2,a.RULE=3,a.PREDICATE=4,a.ATOM=5,a.ACTION=6,a.SET=7,a.NOT_SET=8,a.WILDCARD=9,a.PRECEDENCE=10,a.serializationNames=["INVALID","EPSILON","RANGE","RULE","PREDICATE","ATOM","ACTION","SET","NOT_SET","WILDCARD","PRECEDENCE"],a.serializationTypes={EpsilonTransition:a.EPSILON,RangeTransition:a.RANGE,RuleTransition:a.RULE,PredicateTransition:a.PREDICATE,AtomTransition:a.ATOM,ActionTransition:a.ACTION,SetTransition:a.SET,NotSetTransition:a.NOT_SET,WildcardTransition:a.WILDCARD,PrecedencePredicateTransition:a.PRECEDENCE},l.prototype=Object.create(a.prototype),l.prototype.constructor=l,l.prototype.makeLabel=function(){var t=new i;return t.addOne(this.label_),t},l.prototype.matches=function(t,e,n){return this.label_===t},l.prototype.toString=function(){return this.label_},u.prototype=Object.create(a.prototype),u.prototype.constructor=u,u.prototype.matches=function(t,e,n){return!1},c.prototype=Object.create(a.prototype),c.prototype.constructor=c,c.prototype.matches=function(t,e,n){return!1},c.prototype.toString=function(){return"epsilon"},h.prototype=Object.create(a.prototype),h.prototype.constructor=h,h.prototype.makeLabel=function(){var t=new i;return t.addRange(this.start,this.stop),t},h.prototype.matches=function(t,e,n){return t>=this.start&&t<=this.stop},h.prototype.toString=function(){return"'"+String.fromCharCode(this.start)+"'..'"+String.fromCharCode(this.stop)+"'"},p.prototype=Object.create(a.prototype),p.prototype.constructor=p,f.prototype=Object.create(p.prototype),f.prototype.constructor=f,f.prototype.matches=function(t,e,n){return!1},f.prototype.getPredicate=function(){return new o(this.ruleIndex,this.predIndex,this.isCtxDependent)},f.prototype.toString=function(){return"pred_"+this.ruleIndex+":"+this.predIndex},d.prototype=Object.create(a.prototype),d.prototype.constructor=d,d.prototype.matches=function(t,e,n){return!1},d.prototype.toString=function(){return"action_"+this.ruleIndex+":"+this.actionIndex},y.prototype=Object.create(a.prototype),y.prototype.constructor=y,y.prototype.matches=function(t,e,n){return this.label.contains(t)},y.prototype.toString=function(){return this.label.toString()},g.prototype=Object.create(y.prototype),g.prototype.constructor=g,g.prototype.matches=function(t,e,n){return t>=e&&t<=n&&!y.prototype.matches.call(this,t,e,n)},g.prototype.toString=function(){return"~"+y.prototype.toString.call(this)},v.prototype=Object.create(a.prototype),v.prototype.constructor=v,v.prototype.matches=function(t,e,n){return t>=e&&t<=n},v.prototype.toString=function(){return"."},x.prototype=Object.create(p.prototype),x.prototype.constructor=x,x.prototype.matches=function(t,e,n){return!1},x.prototype.getPredicate=function(){return new s(this.precedence)},x.prototype.toString=function(){return this.precedence+" >= _p"},e.Transition=a,e.AtomTransition=l,e.SetTransition=y,e.NotSetTransition=g,e.RuleTransition=u,e.ActionTransition=d,e.EpsilonTransition=c,e.RangeTransition=h,e.WildcardTransition=v,e.PredicateTransition=f,e.PrecedencePredicateTransition=x,e.AbstractPredicateTransition=p},function(t,e,n){var r=n(7).ATN,i=n(0),o=i.Hash,s=i.Set,a=n(10).SemanticContext,l=n(6).merge;function u(t){return t.hashCodeForConfigSet()}function c(t,e){return t===e||null!==t&&null!==e&&t.equalsForConfigSet(e)}function h(t){return this.configLookup=new s(u,c),this.fullCtx=void 0===t||t,this.readOnly=!1,this.configs=[],this.uniqueAlt=0,this.conflictingAlts=null,this.hasSemanticContext=!1,this.dipsIntoOuterContext=!1,this.cachedHashCode=-1,this}function p(){return h.call(this),this.configLookup=new s,this}h.prototype.add=function(t,e){if(void 0===e&&(e=null),this.readOnly)throw"This set is readonly";t.semanticContext!==a.NONE&&(this.hasSemanticContext=!0),t.reachesIntoOuterContext>0&&(this.dipsIntoOuterContext=!0);var n=this.configLookup.add(t);if(n===t)return this.cachedHashCode=-1,this.configs.push(t),!0;var r=!this.fullCtx,i=l(n.context,t.context,r,e);return n.reachesIntoOuterContext=Math.max(n.reachesIntoOuterContext,t.reachesIntoOuterContext),t.precedenceFilterSuppressed&&(n.precedenceFilterSuppressed=!0),n.context=i,!0},h.prototype.getStates=function(){for(var t=new s,e=0;e0){var s=null;i.map(function(t){(null===s||t.precedence0){var s=i.sort(function(t,e){return t.compareTo(e)}),l=s[s.length-1];n.add(l)}return this.opnds=n.values(),this}o.prototype.hashCode=function(){var t=new i;return this.updateHashCode(t),t.finish()},o.prototype.evaluate=function(t,e){},o.prototype.evalPrecedence=function(t,e){return this},o.andContext=function(t,e){if(null===t||t===o.NONE)return e;if(null===e||e===o.NONE)return t;var n=new l(t,e);return 1===n.opnds.length?n.opnds[0]:n},o.orContext=function(t,e){if(null===t)return e;if(null===e)return t;if(t===o.NONE||e===o.NONE)return o.NONE;var n=new u(t,e);return 1===n.opnds.length?n.opnds[0]:n},s.prototype=Object.create(o.prototype),s.prototype.constructor=s,o.NONE=new s,s.prototype.evaluate=function(t,e){var n=this.isCtxDependent?e:null;return t.sempred(n,this.ruleIndex,this.predIndex)},s.prototype.updateHashCode=function(t){t.update(this.ruleIndex,this.predIndex,this.isCtxDependent)},s.prototype.equals=function(t){return this===t||t instanceof s&&(this.ruleIndex===t.ruleIndex&&this.predIndex===t.predIndex&&this.isCtxDependent===t.isCtxDependent)},s.prototype.toString=function(){return"{"+this.ruleIndex+":"+this.predIndex+"}?"},a.prototype=Object.create(o.prototype),a.prototype.constructor=a,a.prototype.evaluate=function(t,e){return t.precpred(e,this.precedence)},a.prototype.evalPrecedence=function(t,e){return t.precpred(e,this.precedence)?o.NONE:null},a.prototype.compareTo=function(t){return this.precedence-t.precedence},a.prototype.updateHashCode=function(t){t.update(31)},a.prototype.equals=function(t){return this===t||t instanceof a&&this.precedence===t.precedence},a.prototype.toString=function(){return"{"+this.precedence+">=prec}?"},a.filterPrecedencePredicates=function(t){var e=[];return t.values().map(function(t){t instanceof a&&e.push(t)}),e},l.prototype=Object.create(o.prototype),l.prototype.constructor=l,l.prototype.equals=function(t){return this===t||t instanceof l&&this.opnds===t.opnds},l.prototype.updateHashCode=function(t){t.update(this.opnds,"AND")},l.prototype.evaluate=function(t,e){for(var n=0;n3?t.slice(3):t},u.prototype=Object.create(o.prototype),u.prototype.constructor=u,u.prototype.constructor=function(t){return this===t||t instanceof u&&this.opnds===t.opnds},u.prototype.updateHashCode=function(t){t.update(this.opnds,"OR")},u.prototype.evaluate=function(t,e){for(var n=0;n3?t.slice(3):t},e.SemanticContext=o,e.PrecedencePredicate=a,e.Predicate=s},function(t,e,n){var r=n(9).ATNConfigSet,i=n(0),o=i.Hash,s=i.Set;function a(t,e){return this.alt=e,this.pred=t,this}function l(t,e){return null===t&&(t=-1),null===e&&(e=new r),this.stateNumber=t,this.configs=e,this.edges=null,this.isAcceptState=!1,this.prediction=0,this.lexerActionExecutor=null,this.requiresFullContext=!1,this.predicates=null,this}a.prototype.toString=function(){return"("+this.pred+", "+this.alt+")"},l.prototype.getAltSet=function(){var t=new s;if(null!==this.configs)for(var e=0;e0?",up="+this.reachesIntoOuterContext:"")+")"},l.prototype=Object.create(a.prototype),l.prototype.constructor=l,l.prototype.updateHashCode=function(t){t.update(this.state.stateNumber,this.alt,this.context,this.semanticContext,this.passedThroughNonGreedyDecision,this.lexerActionExecutor)},l.prototype.equals=function(t){return this===t||t instanceof l&&this.passedThroughNonGreedyDecision==t.passedThroughNonGreedyDecision&&(this.lexerActionExecutor?this.lexerActionExecutor.equals(t.lexerActionExecutor):!t.lexerActionExecutor)&&a.prototype.equals.call(this,t)},l.prototype.hashCodeForConfigSet=l.prototype.hashCode,l.prototype.equalsForConfigSet=l.prototype.equals,l.prototype.checkNonGreedyDecision=function(t,e){return t.passedThroughNonGreedyDecision||e instanceof r&&e.nonGreedy},e.ATNConfig=a,e.LexerATNConfig=l},function(t,e,n){var r=n(4).RuleNode,i=n(4).INVALID_INTERVAL,o=n(7).INVALID_ALT_NUMBER;function s(t,e){return r.call(this),this.parentCtx=t||null,this.invokingState=e||-1,this}s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.prototype.depth=function(){for(var t=0,e=this;null!==e;)e=e.parentCtx,t+=1;return t},s.prototype.isEmpty=function(){return-1===this.invokingState},s.prototype.getSourceInterval=function(){return i},s.prototype.getRuleContext=function(){return this},s.prototype.getPayload=function(){return this},s.prototype.getText=function(){return 0===this.getChildCount()?"":this.children.map(function(t){return t.getText()}).join("")},s.prototype.getAltNumber=function(){return o},s.prototype.setAltNumber=function(t){},s.prototype.getChild=function(t){return null},s.prototype.getChildCount=function(){return 0},s.prototype.accept=function(t){return t.visitChildren(this)},e.RuleContext=s;var a=n(21).Trees;s.prototype.toStringTree=function(t,e){return a.toStringTree(this,t,e)},s.prototype.toString=function(t,e){t=t||null,e=e||null;for(var n=this,r="[";null!==n&&n!==e;){if(null===t)n.isEmpty()||(r+=n.invokingState);else{var i=n.ruleIndex;r+=i>=0&&i":"\n"===t?"\\n":"\t"===t?"\\t":"\r"===t?"\\r":t},l.prototype.getCharErrorDisplay=function(t){return"'"+this.getErrorDisplayForChar(t)+"'"},l.prototype.recover=function(t){this._input.LA(1)!==r.EOF&&(t instanceof a?this._interp.consume(this._input):this._input.consume())},e.Lexer=l},function(t,e){function n(){return this}function r(){return n.call(this),this}function i(t){if(n.call(this),null===t)throw"delegates";return this.delegates=t,this}n.prototype.syntaxError=function(t,e,n,r,i,o){},n.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){},n.prototype.reportAttemptingFullContext=function(t,e,n,r,i,o){},n.prototype.reportContextSensitivity=function(t,e,n,r,i,o){},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.INSTANCE=new r,r.prototype.syntaxError=function(t,e,n,r,i,o){console.error("line "+n+":"+r+" "+i)},i.prototype=Object.create(n.prototype),i.prototype.constructor=i,i.prototype.syntaxError=function(t,e,n,r,i,o){this.delegates.map(function(s){s.syntaxError(t,e,n,r,i,o)})},i.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){this.delegates.map(function(a){a.reportAmbiguity(t,e,n,r,i,o,s)})},i.prototype.reportAttemptingFullContext=function(t,e,n,r,i,o){this.delegates.map(function(s){s.reportAttemptingFullContext(t,e,n,r,i,o)})},i.prototype.reportContextSensitivity=function(t,e,n,r,i,o){this.delegates.map(function(s){s.reportContextSensitivity(t,e,n,r,i,o)})},e.ErrorListener=n,e.ConsoleErrorListener=r,e.ProxyErrorListener=i},function(t,e){function n(t,e,n){return this.dfa=t,this.literalNames=e||[],this.symbolicNames=n||[],this}function r(t){return n.call(this,t,null),this}n.prototype.toString=function(){if(null===this.dfa.s0)return null;for(var t="",e=this.dfa.sortedStates(),n=0;n")).concat(this.getStateString(s))).concat("\n"))}}return 0===t.length?null:t},n.prototype.getEdgeLabel=function(t){return 0===t?"EOF":null!==this.literalNames||null!==this.symbolicNames?this.literalNames[t-1]||this.symbolicNames[t-1]:String.fromCharCode(t-1)},n.prototype.getStateString=function(t){var e=(t.isAcceptState?":":"")+"s"+t.stateNumber+(t.requiresFullContext?"^":"");return t.isAcceptState?null!==t.predicates?e+"=>"+t.predicates.toString():e+"=>"+t.prediction.toString():e},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.getEdgeLabel=function(t){return"'"+String.fromCharCode(t)+"'"},e.DFASerializer=n,e.LexerDFASerializer=r},function(t,e,n){var r=n(14).RuleContext,i=n(4),o=i.INVALID_INTERVAL,s=i.TerminalNode,a=i.TerminalNodeImpl,l=i.ErrorNodeImpl,u=n(2).Interval;function c(t,e){t=t||null,e=e||null,r.call(this,t,e),this.ruleIndex=-1,this.children=null,this.start=null,this.stop=null,this.exception=null}function h(t,e,n){return c.call(t,e),this.ruleIndex=n,this}c.prototype=Object.create(r.prototype),c.prototype.constructor=c,c.prototype.copyFrom=function(t){this.parentCtx=t.parentCtx,this.invokingState=t.invokingState,this.children=null,this.start=t.start,this.stop=t.stop,t.children&&(this.children=[],t.children.map(function(t){t instanceof l&&(this.children.push(t),t.parentCtx=this)},this))},c.prototype.enterRule=function(t){},c.prototype.exitRule=function(t){},c.prototype.addChild=function(t){return null===this.children&&(this.children=[]),this.children.push(t),t},c.prototype.removeLastChild=function(){null!==this.children&&this.children.pop()},c.prototype.addTokenNode=function(t){var e=new a(t);return this.addChild(e),e.parentCtx=this,e},c.prototype.addErrorNode=function(t){var e=new l(t);return this.addChild(e),e.parentCtx=this,e},c.prototype.getChild=function(t,e){if(e=e||null,null===this.children||t<0||t>=this.children.length)return null;if(null===e)return this.children[t];for(var n=0;n=this.children.length)return null;for(var n=0;n=this._size)throw"cannot consume EOF";this._index+=1},i.prototype.LA=function(t){if(0===t)return 0;t<0&&(t+=1);var e=this._index+t-1;return e<0||e>=this._size?r.EOF:this.data[e]},i.prototype.LT=function(t){return this.LA(t)},i.prototype.mark=function(){return-1},i.prototype.release=function(t){},i.prototype.seek=function(t){t<=this._index?this._index=t:this._index=Math.min(t,this._size)},i.prototype.getText=function(t,e){if(e>=this._size&&(e=this._size-1),t>=this._size)return"";if(this.decodeToUnicodeCodePoints){for(var n="",r=t;r<=e;r++)n+=String.fromCodePoint(this.data[r]);return n}return this.strdata.slice(t,e+1)},i.prototype.toString=function(){return this.strdata},e.InputStream=i},function(t,e,n){var r=n(12);function i(){return r.tree.ParseTreeVisitor.call(this),this}i.prototype=Object.create(r.tree.ParseTreeVisitor.prototype),i.prototype.constructor=i,i.prototype.visitGrammarFile=function(t){return this.visitChildren(t)},i.prototype.visitGrammerDecl=function(t){return this.visitChildren(t)},i.prototype.visitStatExprSplit=function(t){return this.visitChildren(t)},i.prototype.visitStatList=function(t){return this.visitChildren(t)},i.prototype.visitStatValue=function(t){return this.visitChildren(t)},i.prototype.visitExprExpression=function(t){return this.visitChildren(t)},i.prototype.visitExprValue=function(t){return this.visitChildren(t)},i.prototype.visitArithmeticRuleCollection=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomExpr=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomParserId=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomLexerId=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomStr=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleCollection=function(t){return this.visitChildren(t)},i.prototype.visitMeaningfulSplit=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleStrings=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleList=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleComplex=function(t){return this.visitChildren(t)},i.prototype.visitStrings=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleExpr=function(t){return this.visitChildren(t)},e.BlocklyGrammerVisitor=i},function(t,e,n){var r=n(0),i=n(1).Token,o=(n(4).RuleNode,n(4).ErrorNode),s=n(4).TerminalNode,a=n(18).ParserRuleContext,l=n(14).RuleContext,u=n(7).INVALID_ALT_NUMBER;function c(){}c.toStringTree=function(t,e,n){e=e||null,null!==(n=n||null)&&(e=n.ruleNames);var i=c.getNodeText(t,e);i=r.escapeWhitespace(i,!1);var o=t.getChildCount();if(0===o)return i;var s="("+i+" ";o>0&&(i=c.toStringTree(t.getChild(0),e),s=s.concat(i));for(var a=1;a=n},W.prototype.deserialize=function(t){this.reset(t),this.checkVersion(),this.checkUUID();var e=this.readATN();this.readStates(e),this.readRules(e),this.readModes(e);var n=[];return this.readSets(e,n,this.readInt.bind(this)),this.isFeatureSupported(Y,this.uuid)&&this.readSets(e,n,this.readInt32.bind(this)),this.readEdges(e,n),this.readDecisions(e),this.readLexerActions(e),this.markPrecedenceDecisions(e),this.verifyATN(e),this.deserializationOptions.generateRuleBypassTransitions&&e.grammarType===o.PARSER&&(this.generateRuleBypassTransitions(e),this.verifyATN(e)),e},W.prototype.reset=function(t){var e=t.split("").map(function(t){var e=t.charCodeAt(0);return e>1?e-2:-1});e[0]=t.charCodeAt(0),this.data=e,this.pos=0},W.prototype.checkVersion=function(){var t=this.readInt();if(3!==t)throw"Could not deserialize ATN with version "+t+" (expected 3)."},W.prototype.checkUUID=function(){var t=this.readUUID();if(K.indexOf(t)<0)throw"59627784-3BE5-417A-B9EB-8131A7286089";this.uuid=t},W.prototype.readATN=function(){var t=this.readInt(),e=this.readInt();return new i(t,e)},W.prototype.readStates=function(t){for(var e,n,r,i=[],o=[],s=this.readInt(),l=0;l0;)i.addTransition(p.transitions[f-1]),p.transitions=p.transitions.slice(-1);t.ruleToStartState[e].addTransition(new I(i)),o.addTransition(new I(a));var d=new l;t.addState(d),d.addTransition(new C(o,t.ruleToTokenType[e])),i.addTransition(new I(d))},W.prototype.stateIsEndStateFor=function(t,e){if(t.ruleIndex!==e)return null;if(!(t instanceof x))return null;var n=t.transitions[t.transitions.length-1].target;return n instanceof p&&n.epsilonOnlyTransitions&&n.transitions[0].target instanceof d?t:null},W.prototype.markPrecedenceDecisions=function(t){for(var e=0;e=0):this.checkCondition(n.transitions.length<=1||n instanceof d)}},W.prototype.checkCondition=function(t,e){if(!t)throw void 0!==e&&null!==e||(e="IllegalState"),e},W.prototype.readInt=function(){return this.data[this.pos++]},W.prototype.readInt32=function(){return this.readInt()|this.readInt()<<16},W.prototype.readLong=function(){return 4294967295&this.readInt32()|this.readInt32()<<32};var X=function(){for(var t=[],e=0;e<256;e++)t[e]=(e+256).toString(16).substr(1).toUpperCase();return t}();W.prototype.readUUID=function(){for(var t=[],e=7;e>=0;e--){var n=this.readInt();t[2*e+1]=255&n,t[2*e]=n>>8&255}return X[t[0]]+X[t[1]]+X[t[2]]+X[t[3]]+"-"+X[t[4]]+X[t[5]]+"-"+X[t[6]]+X[t[7]]+"-"+X[t[8]]+X[t[9]]+"-"+X[t[10]]+X[t[11]]+X[t[12]]+X[t[13]]+X[t[14]]+X[t[15]]},W.prototype.edgeFactory=function(t,e,n,i,o,s,a,l){var u=t.states[i];switch(e){case E.EPSILON:return new I(u);case E.RANGE:return new R(u,0!==a?r.EOF:o,s);case E.RULE:return new k(t.states[o],s,a,u);case E.PREDICATE:return new O(u,o,s,0!==a);case E.PRECEDENCE:return new P(u,o);case E.ATOM:return new C(u,0!==a?r.EOF:o);case E.ACTION:return new L(u,o,s,0!==a);case E.SET:return new A(u,l[o]);case E.NOT_SET:return new b(u,l[o]);case E.WILDCARD:return new N(u);default:throw"The specified transition type: "+e+" is not valid."}},W.prototype.stateFactory=function(t,e){if(null===this.stateFactories){var n=[];n[a.INVALID_TYPE]=null,n[a.BASIC]=function(){return new l},n[a.RULE_START]=function(){return new f},n[a.BLOCK_START]=function(){return new T},n[a.PLUS_BLOCK_START]=function(){return new m},n[a.STAR_BLOCK_START]=function(){return new _},n[a.TOKEN_START]=function(){return new y},n[a.RULE_STOP]=function(){return new d},n[a.BLOCK_END]=function(){return new h},n[a.STAR_LOOP_BACK]=function(){return new v},n[a.STAR_LOOP_ENTRY]=function(){return new x},n[a.PLUS_LOOP_BACK]=function(){return new g},n[a.LOOP_END]=function(){return new p},this.stateFactories=n}if(t>this.stateFactories.length||null===this.stateFactories[t])throw"The specified state type "+t+" is not valid.";var r=this.stateFactories[t]();if(null!==r)return r.ruleIndex=e,r},W.prototype.lexerActionFactory=function(t,e,n){if(null===this.actionFactories){var r=[];r[j.CHANNEL]=function(t,e){return new B(t)},r[j.CUSTOM]=function(t,e){return new U(t,e)},r[j.MODE]=function(t,e){return new G(t)},r[j.MORE]=function(t,e){return V.INSTANCE},r[j.POP_MODE]=function(t,e){return q.INSTANCE},r[j.PUSH_MODE]=function(t,e){return new z(t)},r[j.SKIP]=function(t,e){return M.INSTANCE},r[j.TYPE]=function(t,e){return new H(t)},this.actionFactories=r}if(t>this.actionFactories.length||null===this.actionFactories[t])throw"The specified lexer action type "+t+" is not valid.";return this.actionFactories[t](e,n)},e.ATNDeserializer=W},function(t,e){function n(t){return void 0===t&&(t=null),this.readOnly=!1,this.verifyATN=null===t||t.verifyATN,this.generateRuleBypassTransitions=null!==t&&t.generateRuleBypassTransitions,this}n.defaultOptions=new n,n.defaultOptions.readOnly=!0,e.ATNDeserializationOptions=n},function(t,e){function n(){}function r(t){return this.actionType=t,this.isPositionDependent=!1,this}function i(){return r.call(this,n.SKIP),this}function o(t){return r.call(this,n.TYPE),this.type=t,this}function s(t){return r.call(this,n.PUSH_MODE),this.mode=t,this}function a(){return r.call(this,n.POP_MODE),this}function l(){return r.call(this,n.MORE),this}function u(t){return r.call(this,n.MODE),this.mode=t,this}function c(t,e){return r.call(this,n.CUSTOM),this.ruleIndex=t,this.actionIndex=e,this.isPositionDependent=!0,this}function h(t){return r.call(this,n.CHANNEL),this.channel=t,this}function p(t,e){return r.call(this,e.actionType),this.offset=t,this.action=e,this.isPositionDependent=!0,this}n.CHANNEL=0,n.CUSTOM=1,n.MODE=2,n.MORE=3,n.POP_MODE=4,n.PUSH_MODE=5,n.SKIP=6,n.TYPE=7,r.prototype.hashCode=function(){var t=new Hash;return this.updateHashCode(t),t.finish()},r.prototype.updateHashCode=function(t){t.update(this.actionType)},r.prototype.equals=function(t){return this===t},i.prototype=Object.create(r.prototype),i.prototype.constructor=i,i.INSTANCE=new i,i.prototype.execute=function(t){t.skip()},i.prototype.toString=function(){return"skip"},o.prototype=Object.create(r.prototype),o.prototype.constructor=o,o.prototype.execute=function(t){t.type=this.type},o.prototype.updateHashCode=function(t){t.update(this.actionType,this.type)},o.prototype.equals=function(t){return this===t||t instanceof o&&this.type===t.type},o.prototype.toString=function(){return"type("+this.type+")"},s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.prototype.execute=function(t){t.pushMode(this.mode)},s.prototype.updateHashCode=function(t){t.update(this.actionType,this.mode)},s.prototype.equals=function(t){return this===t||t instanceof s&&this.mode===t.mode},s.prototype.toString=function(){return"pushMode("+this.mode+")"},a.prototype=Object.create(r.prototype),a.prototype.constructor=a,a.INSTANCE=new a,a.prototype.execute=function(t){t.popMode()},a.prototype.toString=function(){return"popMode"},l.prototype=Object.create(r.prototype),l.prototype.constructor=l,l.INSTANCE=new l,l.prototype.execute=function(t){t.more()},l.prototype.toString=function(){return"more"},u.prototype=Object.create(r.prototype),u.prototype.constructor=u,u.prototype.execute=function(t){t.mode(this.mode)},u.prototype.updateHashCode=function(t){t.update(this.actionType,this.mode)},u.prototype.equals=function(t){return this===t||t instanceof u&&this.mode===t.mode},u.prototype.toString=function(){return"mode("+this.mode+")"},c.prototype=Object.create(r.prototype),c.prototype.constructor=c,c.prototype.execute=function(t){t.action(null,this.ruleIndex,this.actionIndex)},c.prototype.updateHashCode=function(t){t.update(this.actionType,this.ruleIndex,this.actionIndex)},c.prototype.equals=function(t){return this===t||t instanceof c&&(this.ruleIndex===t.ruleIndex&&this.actionIndex===t.actionIndex)},h.prototype=Object.create(r.prototype),h.prototype.constructor=h,h.prototype.execute=function(t){t._channel=this.channel},h.prototype.updateHashCode=function(t){t.update(this.actionType,this.channel)},h.prototype.equals=function(t){return this===t||t instanceof h&&this.channel===t.channel},h.prototype.toString=function(){return"channel("+this.channel+")"},p.prototype=Object.create(r.prototype),p.prototype.constructor=p,p.prototype.execute=function(t){this.action.execute(t)},p.prototype.updateHashCode=function(t){t.update(this.actionType,this.offset,this.action)},p.prototype.equals=function(t){return this===t||t instanceof p&&(this.offset===t.offset&&this.action===t.action)},e.LexerActionType=n,e.LexerSkipAction=i,e.LexerChannelAction=h,e.LexerCustomAction=c,e.LexerIndexedCustomAction=p,e.LexerMoreAction=l,e.LexerTypeAction=o,e.LexerPushModeAction=s,e.LexerPopModeAction=a,e.LexerModeAction=u},function(t,e,n){var r=n(1).Token,i=n(16).ConsoleErrorListener,o=n(16).ProxyErrorListener;function s(){return this._listeners=[i.INSTANCE],this._interp=null,this._stateNumber=-1,this}s.tokenTypeMapCache={},s.ruleIndexMapCache={},s.prototype.checkVersion=function(t){"4.7"!==t&&console.log("ANTLR runtime and generated code versions disagree: 4.7!="+t)},s.prototype.addErrorListener=function(t){this._listeners.push(t)},s.prototype.removeErrorListeners=function(){this._listeners=[]},s.prototype.getTokenTypeMap=function(){var t=this.getTokenNames();if(null===t)throw"The current recognizer does not provide a list of token names.";var e=this.tokenTypeMapCache[t];return void 0===e&&((e=t.reduce(function(t,e,n){t[e]=n})).EOF=r.EOF,this.tokenTypeMapCache[t]=e),e},s.prototype.getRuleIndexMap=function(){var t=this.ruleNames;if(null===t)throw"The current recognizer does not provide a list of rule names.";var e=this.ruleIndexMapCache[t];return void 0===e&&(e=t.reduce(function(t,e,n){t[e]=n}),this.ruleIndexMapCache[t]=e),e},s.prototype.getTokenType=function(t){var e=this.getTokenTypeMap()[t];return void 0!==e?e:r.INVALID_TYPE},s.prototype.getErrorHeader=function(t){return"line "+t.getOffendingToken().line+":"+t.getOffendingToken().column},s.prototype.getTokenErrorDisplay=function(t){if(null===t)return"";var e=t.text;return null===e&&(e=t.type===r.EOF?"":"<"+t.type+">"),"'"+(e=e.replace("\n","\\n").replace("\r","\\r").replace("\t","\\t"))+"'"},s.prototype.getErrorListenerDispatch=function(){return new o(this._listeners)},s.prototype.sempred=function(t,e,n){return!0},s.prototype.precpred=function(t,e){return!0},Object.defineProperty(s.prototype,"state",{get:function(){return this._stateNumber},set:function(t){this._stateNumber=t}}),e.Recognizer=s},function(t,e,n){var r=n(11).DFAState,i=n(9).ATNConfigSet,o=n(6).getCachedPredictionContext;function s(t,e){return this.atn=t,this.sharedContextCache=e,this}s.ERROR=new r(2147483647,new i),s.prototype.getCachedContext=function(t){if(null===this.sharedContextCache)return t;return o(t,this.sharedContextCache,{})},e.ATNSimulator=s},function(t,e,n){n(0).Set;var r=n(0).Map,i=n(0).BitSet,o=n(0).AltDict,s=n(7).ATN,a=n(3).RuleStopState,l=n(9).ATNConfigSet,u=n(13).ATNConfig,c=n(10).SemanticContext,h=(n(0).Hash,n(0).hashStuff);n(0).equalArrays;function p(){return this}p.SLL=0,p.LL=1,p.LL_EXACT_AMBIG_DETECTION=2,p.hasSLLConflictTerminatingPrediction=function(t,e){if(p.allConfigsInRuleStopStates(e))return!0;if(t===p.SLL&&e.hasSemanticContext){for(var n=new l,r=0;r1)return!0}return!1},p.allSubsetsEqual=function(t){for(var e=null,n=0;n=n)){var i,o=e.charCodeAt(r);return o>=55296&&o<=56319&&n>r+1&&(i=e.charCodeAt(r+1))>=56320&&i<=57343?1024*(o-55296)+i-56320+65536:o}};t?t(String.prototype,"codePointAt",{value:e,configurable:!0,writable:!0}):String.prototype.codePointAt=e}()},function(t,e){var n,r,i,o;String.fromCodePoint||(n=function(){try{var t={},e=Object.defineProperty,n=e(t,t,t)&&e}catch(t){}return n}(),r=String.fromCharCode,i=Math.floor,o=function(t){var e,n,o=[],s=-1,a=arguments.length;if(!a)return"";for(var l="";++s1114111||i(u)!=u)throw RangeError("Invalid code point: "+u);u<=65535?o.push(u):(e=55296+((u-=65536)>>10),n=u%1024+56320,o.push(e,n)),(s+1==a||o.length>16384)&&(l+=r.apply(null,o),o.length=0)}return l},n?n(String,"fromCodePoint",{value:o,configurable:!0,writable:!0}):String.fromCodePoint=o)},function(t,e,n){var r=n(1).Token,i=n(5),o=i.NoViableAltException,s=i.InputMismatchException,a=i.FailedPredicateException,l=i.ParseCancellationException,u=n(3).ATNState,c=n(2).Interval,h=n(2).IntervalSet;function p(){}function f(){return p.call(this),this.errorRecoveryMode=!1,this.lastErrorIndex=-1,this.lastErrorStates=null,this}function d(){return f.call(this),this}p.prototype.reset=function(t){},p.prototype.recoverInline=function(t){},p.prototype.recover=function(t,e){},p.prototype.sync=function(t){},p.prototype.inErrorRecoveryMode=function(t){},p.prototype.reportError=function(t){},f.prototype=Object.create(p.prototype),f.prototype.constructor=f,f.prototype.reset=function(t){this.endErrorCondition(t)},f.prototype.beginErrorCondition=function(t){this.errorRecoveryMode=!0},f.prototype.inErrorRecoveryMode=function(t){return this.errorRecoveryMode},f.prototype.endErrorCondition=function(t){this.errorRecoveryMode=!1,this.lastErrorStates=null,this.lastErrorIndex=-1},f.prototype.reportMatch=function(t){this.endErrorCondition(t)},f.prototype.reportError=function(t,e){this.inErrorRecoveryMode(t)||(this.beginErrorCondition(t),e instanceof o?this.reportNoViableAlternative(t,e):e instanceof s?this.reportInputMismatch(t,e):e instanceof a?this.reportFailedPredicate(t,e):(console.log("unknown recognition error type: "+e.constructor.name),console.log(e.stack),t.notifyErrorListeners(e.getOffendingToken(),e.getMessage(),e)))},f.prototype.recover=function(t,e){this.lastErrorIndex===t.getInputStream().index&&null!==this.lastErrorStates&&this.lastErrorStates.indexOf(t.state)>=0&&t.consume(),this.lastErrorIndex=t._input.index,null===this.lastErrorStates&&(this.lastErrorStates=[]),this.lastErrorStates.push(t.state);var n=this.getErrorRecoverySet(t);this.consumeUntil(t,n)},f.prototype.sync=function(t){if(!this.inErrorRecoveryMode(t)){var e=t._interp.atn.states[t.state],n=t.getTokenStream().LA(1),i=t.atn.nextTokens(e);if(!i.contains(r.EPSILON)&&!i.contains(n))switch(e.stateType){case u.BLOCK_START:case u.STAR_BLOCK_START:case u.PLUS_BLOCK_START:case u.STAR_LOOP_ENTRY:if(null!==this.singleTokenDeletion(t))return;throw new s(t);case u.PLUS_LOOP_BACK:case u.STAR_LOOP_BACK:this.reportUnwantedToken(t);var o=new h;o.addSet(t.getExpectedTokens());var a=o.addSet(this.getErrorRecoverySet(t));this.consumeUntil(t,a)}}},f.prototype.reportNoViableAlternative=function(t,e){var n,i=t.getTokenStream();n=null!==i?e.startToken.type===r.EOF?"":i.getText(new c(e.startToken,e.offendingToken)):"";var o="no viable alternative at input "+this.escapeWSAndQuote(n);t.notifyErrorListeners(o,e.offendingToken,e)},f.prototype.reportInputMismatch=function(t,e){var n="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(n,e.offendingToken,e)},f.prototype.reportFailedPredicate=function(t,e){var n="rule "+t.ruleNames[t._ctx.ruleIndex]+" "+e.message;t.notifyErrorListeners(n,e.offendingToken,e)},f.prototype.reportUnwantedToken=function(t){if(!this.inErrorRecoveryMode(t)){this.beginErrorCondition(t);var e=t.getCurrentToken(),n="extraneous input "+this.getTokenErrorDisplay(e)+" expecting "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(n,e,null)}},f.prototype.reportMissingToken=function(t){if(!this.inErrorRecoveryMode(t)){this.beginErrorCondition(t);var e=t.getCurrentToken(),n="missing "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames)+" at "+this.getTokenErrorDisplay(e);t.notifyErrorListeners(n,e,null)}},f.prototype.recoverInline=function(t){var e=this.singleTokenDeletion(t);if(null!==e)return t.consume(),e;if(this.singleTokenInsertion(t))return this.getMissingSymbol(t);throw new s(t)},f.prototype.singleTokenInsertion=function(t){var e=t.getTokenStream().LA(1),n=t._interp.atn,r=n.states[t.state].transitions[0].target;return!!n.nextTokens(r,t._ctx).contains(e)&&(this.reportMissingToken(t),!0)},f.prototype.singleTokenDeletion=function(t){var e=t.getTokenStream().LA(2);if(this.getExpectedTokens(t).contains(e)){this.reportUnwantedToken(t),t.consume();var n=t.getCurrentToken();return this.reportMatch(t),n}return null},f.prototype.getMissingSymbol=function(t){var e,n=t.getCurrentToken(),i=this.getExpectedTokens(t).first();e=i===r.EOF?"":"";var o=n,s=t.getTokenStream().LT(-1);return o.type===r.EOF&&null!==s&&(o=s),t.getTokenFactory().create(o.source,i,e,r.DEFAULT_CHANNEL,-1,-1,o.line,o.column)},f.prototype.getExpectedTokens=function(t){return t.getExpectedTokens()},f.prototype.getTokenErrorDisplay=function(t){if(null===t)return"";var e=t.text;return null===e&&(e=t.type===r.EOF?"":"<"+t.type+">"),this.escapeWSAndQuote(e)},f.prototype.escapeWSAndQuote=function(t){return"'"+(t=(t=(t=t.replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t"))+"'"},f.prototype.getErrorRecoverySet=function(t){for(var e=t._interp.atn,n=t._ctx,i=new h;null!==n&&n.invokingState>=0;){var o=e.states[n.invokingState].transitions[0],s=e.nextTokens(o.followState);i.addSet(s),n=n.parentCtx}return i.removeOne(r.EPSILON),i},f.prototype.consumeUntil=function(t,e){for(var n=t.getTokenStream().LA(1);n!==r.EOF&&!e.contains(n);)t.consume(),n=t.getTokenStream().LA(1)},d.prototype=Object.create(f.prototype),d.prototype.constructor=d,d.prototype.recover=function(t,e){for(var n=t._ctx;null!==n;)n.exception=e,n=n.parentCtx;throw new l(e)},d.prototype.recoverInline=function(t){this.recover(t,new s(t))},d.prototype.sync=function(t){},e.BailErrorStrategy=d,e.DefaultErrorStrategy=f},function(t,e){},function(t,e,n){Converter=n(33).Converter},function(module,exports,__webpack_require__){antlr4=__webpack_require__(12);var BlocklyGrammerVisitor=__webpack_require__(20).BlocklyGrammerVisitor,BlocklyGrammerLexer=__webpack_require__(51).BlocklyGrammerLexer,BlocklyGrammerParser=__webpack_require__(52).BlocklyGrammerParser,Visitors=__webpack_require__(53),SymbolVisitor=Visitors.SymbolVisitor,EvalVisitor=Visitors.EvalVisitor,tpl=__webpack_require__(54);function Converter(){return this}Converter.prototype.constructor=Converter,Converter.prototype.init=function(){return this.toolboxGap=5,this.toolboxId="toolbox",this.blocklyDivId="blocklyDiv",this.workSpaceName="workspace",this.codeAreaId="codeArea",this},Converter.prototype.main=function(t,e,n){return this.init(),this.generBlocks(t,e),this.renderGrammerName(),this.generToolbox(),this.generMainFile(),this.writeMainFile(n),this},Converter.prototype.generBlocks=function(grammerFile,functions){functions||(functions=[]);var temp_consoleError=console.error;console.error=function(t){throw new Error(t)};var chars=new antlr4.InputStream(grammerFile),lexer=new BlocklyGrammerLexer(chars),tokens=new antlr4.CommonTokenStream(lexer),parser=new BlocklyGrammerParser(tokens);parser.buildParseTrees=!0;var tree=parser.grammarFile();console.error=temp_consoleError;var svisitor=(new SymbolVisitor).init();this.svisitor=svisitor,svisitor.visit(tree),console.log(svisitor),svisitor.checkSymbol();var evisitor=(new EvalVisitor).init(svisitor,grammerFile);return this.evisitor=evisitor,eval(this.evisitor.matchInject("Function_0")),functions[0]&&functions[0].call(this),evisitor.visit(tree),eval(this.evisitor.matchInject("Function_1")),functions[1]&&functions[1].call(this),evisitor.generBlocks(),console.log(evisitor),this.blocks=evisitor.blocks,eval(this.evisitor.matchInject("Function_2")),functions[2]&&functions[2].call(this),this},Converter.prototype.renderGrammerName=function(){this.grammerName=this.svisitor.grammerName,this.generLanguage=this.evisitor.generLanguage;var t=this.grammerName,e=this.generLanguage;return this.OmitedError=tpl.OmitedError(),this.Functions_pre=tpl.Functions_pre(t),this.Functions_xmlText=tpl.Functions_xmlText(t),this.Functions_blocksIniter=tpl.Functions_blocksIniter(t,e),this.mainFileTPL=tpl.mainFileTPL,this},Converter.prototype.generToolbox=function(){eval(this.grammerName+"Functions={};"),eval(this.Functions_xmlText),eval(this.blocks),eval("var blocksobj = "+this.grammerName+"Blocks;"),console.log(blocksobj);var text=[];for(var key in text.push('"),this.toolbox=this.textToPrettyText(text.join("")),this},Converter.prototype.generMainFile=function(){var t=[],e=this.grammerName;t.push(this.blocks),t.push("\n\n"),t.push(this.OmitedError),t.push("\n\n"),t.push(e+"Functions={}\n\n"),t.push(this.evisitor.matchInject("Functions")),t.push("\n\n"),t.push(this.Functions_pre),t.push("\n\n"),t.push(this.Functions_xmlText),t.push("\n\n"),t.push(this.Functions_blocksIniter),t.push("\n\n"),t.push(e+"Functions.blocksIniter();\n\n"),this.mainFile=this.mainFileTPL(e,this.generLanguage,this.blocklyDivId,this.codeAreaId,this.toolbox,this.workSpaceName,this.toolboxId,t.join(""))},Converter.prototype.writeMainFile=function(t){t||(t=this.grammerName+"index.html"),this.createAndDownloadFile(this.mainFile.join(""),t,"html")},Converter.prototype.block=function(t){var e=this.evisitor.expressionRules[t];return e||(e=this.evisitor.statementRules[t]),e&&1!==e.checklength?e.blockjs:null},Converter.prototype.textToPrettyText=function(t){for(var e=t.split("<"),n="",r=1;r"!=i.slice(-2)&&(n+=" ")}var o=e.join("\n");return(o=o.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1")).replace(/^\n/,"")},Converter.prototype.createAndDownloadFile=function(t,e,n){var r=new Blob([t],{type:"text/"+n}),i=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1}),o=document.createElement("a");o.href=window.URL.createObjectURL(r),o.download=e,o.textContent="Download file!",o.dispatchEvent(i)},exports.Converter=Converter},function(t,e,n){e.ATN=n(7).ATN,e.ATNDeserializer=n(22).ATNDeserializer,e.LexerATNSimulator=n(37).LexerATNSimulator,e.ParserATNSimulator=n(40).ParserATNSimulator,e.PredictionMode=n(27).PredictionMode},function(t,e,n){var r=n(0).Set,i=n(0).BitSet,o=n(1).Token,s=n(13).ATNConfig,a=(n(2).Interval,n(2).IntervalSet),l=n(3).RuleStopState,u=n(8).RuleTransition,c=n(8).NotSetTransition,h=n(8).WildcardTransition,p=n(8).AbstractPredicateTransition,f=n(6),d=f.predictionContextFromRuleContext,y=f.PredictionContext,g=f.SingletonPredictionContext;function v(t){this.atn=t}v.HIT_PRED=o.INVALID_TYPE,v.prototype.getDecisionLookahead=function(t){if(null===t)return null;for(var e=t.transitions.length,n=[],o=0;ox.MAX_DFA_EDGE)return null;var n=t.edges[e-x.MIN_DFA_EDGE];return void 0===n&&(n=null),x.debug&&null!==n&&console.log("reuse state "+t.stateNumber+" edge to "+n.stateNumber),n},x.prototype.computeTargetState=function(t,e,n){var r=new l;return this.getReachableConfigSet(t,e.configs,r,n),0===r.items.length?(r.hasSemanticContext||this.addDFAEdge(e,n,s.ERROR),s.ERROR):this.addDFAEdge(e,n,null,r)},x.prototype.failOrAccept=function(t,e,n,i){if(null!==this.prevAccept.dfaState){var o=t.dfaState.lexerActionExecutor;return this.accept(e,o,this.startIndex,t.index,t.line,t.column),t.dfaState.prediction}if(i===r.EOF&&e.index===this.startIndex)return r.EOF;throw new y(this.recog,e,this.startIndex,n)},x.prototype.getReachableConfigSet=function(t,e,n,i){for(var s=o.INVALID_ALT_NUMBER,a=0;ax.MAX_DFA_EDGE?n:(x.debug&&console.log("EDGE "+t+" -> "+n+" upon "+e),null===t.edges&&(t.edges=[]),t.edges[e-x.MIN_DFA_EDGE]=n,n)},x.prototype.addDFAState=function(t){for(var e=new a(null,t),n=null,r=0;r0&&(o=this.getAltThatFinishedDecisionEntryRule(i))!==a.INVALID_ALT_NUMBER?o:a.INVALID_ALT_NUMBER},I.prototype.getAltThatFinishedDecisionEntryRule=function(t){for(var e=[],n=0;n0||r.state instanceof x&&r.context.hasEmptyPath())&&e.indexOf(r.alt)<0&&e.push(r.alt)}return 0===e.length?a.INVALID_ALT_NUMBER:Math.min.apply(null,e)},I.prototype.splitAccordingToSemanticValidity=function(t,e){for(var n=new c(t.fullCtx),r=new c(t.fullCtx),i=0;i50))throw"problem";if(t.state instanceof x){if(!t.context.isEmpty()){for(var a=0;a=0&&(p+=1);this.closureCheckingStopState(h,e,n,c,i,p,s)}}},I.prototype.canDropLoopEntryEdgeInLeftRecursiveRule=function(t){var e=t.state;if(e.stateType!=l.STAR_LOOP_ENTRY)return!1;if(e.stateType!=l.STAR_LOOP_ENTRY||!e.isPrecedenceDecision||t.context.isEmpty()||t.context.hasEmptyPath())return!1;for(var n=t.context.length,r=0;r=0?this.parser.ruleNames[t]:""},I.prototype.getEpsilonTarget=function(t,e,n,r,i,o){switch(e.serializationType){case S.RULE:return this.ruleTransition(t,e);case S.PRECEDENCE:return this.precedenceTransition(t,e,n,r,i);case S.PREDICATE:return this.predTransition(t,e,n,r,i);case S.ACTION:return this.actionTransition(t,e);case S.EPSILON:return new u({state:e.target},t);case S.ATOM:case S.RANGE:case S.SET:return o&&e.matches(h.EOF,0,1)?new u({state:e.target},t):null;default:return null}},I.prototype.actionTransition=function(t,e){if(this.debug){var n=-1==e.actionIndex?65535:e.actionIndex;console.log("ACTION edge "+e.ruleIndex+":"+n)}return new u({state:e.target},t)},I.prototype.precedenceTransition=function(t,e,n,i,o){this.debug&&(console.log("PRED (collectPredicates="+n+") "+e.precedence+">=_p, ctx dependent=true"),null!==this.parser&&console.log("context surrounding pred is "+r.arrayToString(this.parser.getRuleInvocationStack())));var s=null;if(n&&i)if(o){var a=this._input.index;this._input.seek(this._startIndex);var l=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(a),l&&(s=new u({state:e.target},t))}else{var c=v.andContext(t.semanticContext,e.getPredicate());s=new u({state:e.target,semanticContext:c},t)}else s=new u({state:e.target},t);return this.debug&&console.log("config from pred transition="+s),s},I.prototype.predTransition=function(t,e,n,i,o){this.debug&&(console.log("PRED (collectPredicates="+n+") "+e.ruleIndex+":"+e.predIndex+", ctx dependent="+e.isCtxDependent),null!==this.parser&&console.log("context surrounding pred is "+r.arrayToString(this.parser.getRuleInvocationStack())));var s=null;if(n&&(e.isCtxDependent&&i||!e.isCtxDependent))if(o){var a=this._input.index;this._input.seek(this._startIndex);var l=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(a),l&&(s=new u({state:e.target},t))}else{var c=v.andContext(t.semanticContext,e.getPredicate());s=new u({state:e.target,semanticContext:c},t)}else s=new u({state:e.target},t);return this.debug&&console.log("config from pred transition="+s),s},I.prototype.ruleTransition=function(t,e){this.debug&&console.log("CALL rule "+this.getRuleName(e.target.ruleIndex)+", ctx="+t.context);var n=e.followState,r=R.create(t.context,n.stateNumber);return new u({state:e.target,context:r},t)},I.prototype.getConflictingAlts=function(t){var e=y.getConflictingAltSubsets(t);return y.getAlts(e)},I.prototype.getConflictingAltsOrUniqueAlt=function(t){var e=null;return t.uniqueAlt!==a.INVALID_ALT_NUMBER?(e=new o).add(t.uniqueAlt):e=t.conflictingAlts,e},I.prototype.getTokenName=function(t){if(t===h.EOF)return"EOF";if(null!==this.parser&&null!==this.parser.literalNames){if(!(t>=this.parser.literalNames.length&&t>=this.parser.symbolicNames.length))return(this.parser.literalNames[t]||this.parser.symbolicNames[t])+"<"+t+">";console.log(t+" ttype out of range: "+this.parser.literalNames),console.log(""+this.parser.getInputStream().getTokens())}return""+t},I.prototype.getLookaheadName=function(t){return this.getTokenName(t.LA(1))},I.prototype.dumpDeadEndConfigs=function(t){console.log("dead end configs: ");for(var e=t.getDeadEndConfigs(),n=0;n0){var o=r.state.transitions[0];if(o instanceof AtomTransition)i="Atom "+this.getTokenName(o.label);else if(o instanceof E){i=(o instanceof C?"~":"")+"Set "+o.set}}console.error(r.toString(this.parser,!0)+":"+i)}},I.prototype.noViableAlt=function(t,e,n,r){return new k(this.parser,t,t.get(r),t.LT(1),n,e)},I.prototype.getUniqueAlt=function(t){for(var e=a.INVALID_ALT_NUMBER,n=0;n "+r+" upon "+this.getTokenName(n)),null===r)return null;if(r=this.addDFAState(t,r),null===e||n<-1||n>this.atn.maxTokenType)return r;if(null===e.edges&&(e.edges=[]),e.edges[n+1]=r,this.debug){var i=null===this.parser?null:this.parser.literalNames,o=null===this.parser?null:this.parser.symbolicNames;console.log("DFA=\n"+t.toString(i,o))}return r},I.prototype.addDFAState=function(t,e){if(e==d.ERROR)return e;var n=t.states.get(e);return null!==n?n:(e.stateNumber=t.states.length,e.configs.readOnly||(e.configs.optimizeConfigs(this),e.configs.setReadonly(!0)),t.states.add(e),this.debug&&console.log("adding new DFA state: "+e),e)},I.prototype.reportAttemptingFullContext=function(t,e,n,r,i){if(this.debug||this.retry_debug){var o=new _(r,i+1);console.log("reportAttemptingFullContext decision="+t.decision+":"+n+", input="+this.parser.getTokenStream().getText(o))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser,t,r,i,e,n)},I.prototype.reportContextSensitivity=function(t,e,n,r,i){if(this.debug||this.retry_debug){var o=new _(r,i+1);console.log("reportContextSensitivity decision="+t.decision+":"+n+", input="+this.parser.getTokenStream().getText(o))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser,t,r,i,e,n)},I.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){if(this.debug||this.retry_debug){var a=new _(n,r+1);console.log("reportAmbiguity "+o+":"+s+", input="+this.parser.getTokenStream().getText(a))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser,t,n,r,i,o,s)},e.ParserATNSimulator=I},function(t,e,n){e.DFA=n(42).DFA,e.DFASerializer=n(17).DFASerializer,e.LexerDFASerializer=n(17).LexerDFASerializer,e.PredPrediction=n(11).PredPrediction},function(t,e,n){var r=n(0).Set,i=n(11).DFAState,o=n(3).StarLoopEntryState,s=n(9).ATNConfigSet,a=n(17).DFASerializer,l=n(17).LexerDFASerializer;function u(t,e){if(void 0===e&&(e=0),this.atnStartState=t,this.decision=e,this._states=new r,this.s0=null,this.precedenceDfa=!1,t instanceof o&&t.isPrecedenceDecision){this.precedenceDfa=!0;var n=new i(null,new s);n.edges=[],n.isAcceptState=!1,n.requiresFullContext=!1,this.s0=n}return this}u.prototype.getPrecedenceStartState=function(t){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";return t<0||t>=this.s0.edges.length?null:this.s0.edges[t]||null},u.prototype.setPrecedenceStartState=function(t,e){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";t<0||(this.s0.edges[t]=e)},u.prototype.setPrecedenceDfa=function(t){if(this.precedenceDfa!==t){if(this._states=new DFAStatesSet,t){var e=new i(null,new s);e.edges=[],e.isAcceptState=!1,e.requiresFullContext=!1,this.s0=e}else this.s0=null;this.precedenceDfa=t}},Object.defineProperty(u.prototype,"states",{get:function(){return this._states}}),u.prototype.sortedStates=function(){return this._states.values().sort(function(t,e){return t.stateNumber-e.stateNumber})},u.prototype.toString=function(t,e){return t=t||null,e=e||null,null===this.s0?"":new a(this,t,e).toString()},u.prototype.toLexerString=function(){return null===this.s0?"":new l(this).toString()},e.DFA=u},function(t,e,n){var r=n(4);e.Trees=n(21).Trees,e.RuleNode=r.RuleNode,e.ParseTreeListener=r.ParseTreeListener,e.ParseTreeVisitor=r.ParseTreeVisitor,e.ParseTreeWalker=r.ParseTreeWalker},function(t,e,n){e.RecognitionException=n(5).RecognitionException,e.NoViableAltException=n(5).NoViableAltException,e.LexerNoViableAltException=n(5).LexerNoViableAltException,e.InputMismatchException=n(5).InputMismatchException,e.FailedPredicateException=n(5).FailedPredicateException,e.DiagnosticErrorListener=n(45).DiagnosticErrorListener,e.BailErrorStrategy=n(30).BailErrorStrategy,e.ErrorListener=n(16).ErrorListener},function(t,e,n){var r=n(0).BitSet,i=n(16).ErrorListener,o=n(2).Interval;function s(t){return i.call(this),t=t||!0,this.exactOnly=t,this}s.prototype=Object.create(i.prototype),s.prototype.constructor=s,s.prototype.reportAmbiguity=function(t,e,n,r,i,s,a){if(!this.exactOnly||i){var l="reportAmbiguity d="+this.getDecisionDescription(t,e)+": ambigAlts="+this.getConflictingAlts(s,a)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(l)}},s.prototype.reportAttemptingFullContext=function(t,e,n,r,i,s){var a="reportAttemptingFullContext d="+this.getDecisionDescription(t,e)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(a)},s.prototype.reportContextSensitivity=function(t,e,n,r,i,s){var a="reportContextSensitivity d="+this.getDecisionDescription(t,e)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(a)},s.prototype.getDecisionDescription=function(t,e){var n=e.decision,r=e.atnStartState.ruleIndex,i=t.ruleNames;if(r<0||r>=i.length)return""+n;var o=i[r]||null;return null===o||0===o.length?""+n:n+" ("+o+")"},s.prototype.getConflictingAlts=function(t,e){if(null!==t)return t;for(var n=new r,i=0;i=0&&(this.fetchedEOF?this.index0)||this.fetch(e)>=e},a.prototype.fetch=function(t){if(this.fetchedEOF)return 0;for(var e=0;e=this.tokens.length&&(e=this.tokens.length-1);for(var o=t;o=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]},a.prototype.adjustSeekIndex=function(t){return t},a.prototype.lazyInit=function(){-1===this.index&&this.setup()},a.prototype.setup=function(){this.sync(0),this.index=this.adjustSeekIndex(0)},a.prototype.setTokenSource=function(t){this.tokenSource=t,this.tokens=[],this.index=-1,this.fetchedEOF=!1},a.prototype.nextTokenOnChannel=function(t,e){if(this.sync(t),t>=this.tokens.length)return-1;for(var n=this.tokens[t];n.channel!==this.channel;){if(n.type===r.EOF)return-1;t+=1,this.sync(t),n=this.tokens[t]}return t},a.prototype.previousTokenOnChannel=function(t,e){for(;t>=0&&this.tokens[t].channel!==e;)t-=1;return t},a.prototype.getHiddenTokensToRight=function(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;var n=this.nextTokenOnChannel(t+1,i.DEFAULT_TOKEN_CHANNEL),r=t+1,o=-1===n?this.tokens.length-1:n;return this.filterForChannel(r,o,e)},a.prototype.getHiddenTokensToLeft=function(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;var n=this.previousTokenOnChannel(t-1,i.DEFAULT_TOKEN_CHANNEL);if(n===t-1)return null;var r=n+1,o=t-1;return this.filterForChannel(r,o,e)},a.prototype.filterForChannel=function(t,e,n){for(var r=[],o=t;o=this.tokens.length&&(n=this.tokens.length-1);for(var i="",s=e;s=0&&this._parseListeners.splice(e,1),0===this._parseListeners.length&&(this._parseListeners=null)}},p.prototype.removeParseListeners=function(){this._parseListeners=null},p.prototype.triggerEnterRuleEvent=function(){if(null!==this._parseListeners){var t=this._ctx;this._parseListeners.map(function(e){e.enterEveryRule(t),t.enterRule(e)})}},p.prototype.triggerExitRuleEvent=function(){if(null!==this._parseListeners){var t=this._ctx;this._parseListeners.slice(0).reverse().map(function(e){t.exitRule(e),e.exitEveryRule(t)})}},p.prototype.getTokenFactory=function(){return this._input.tokenSource._factory},p.prototype.setTokenFactory=function(t){this._input.tokenSource._factory=t},p.prototype.getATNWithBypassAlts=function(){var t=this.getSerializedATN();if(null===t)throw"The current parser does not support an ATN with bypass alternatives.";var e=this.bypassAltsAtnCache[t];if(null===e){var n=new l;n.generateRuleBypassTransitions=!0,e=new a(n).deserialize(t),this.bypassAltsAtnCache[t]=e}return e};var f=n(15).Lexer;p.prototype.compileParseTreePattern=function(t,e,n){if(null===(n=n||null)&&null!==this.getTokenStream()){var r=this.getTokenStream().tokenSource;r instanceof f&&(n=r)}if(null===n)throw"Parser can't discover a lexer to use";return new ParseTreePatternMatcher(n,this).compile(t,e)},p.prototype.getInputStream=function(){return this.getTokenStream()},p.prototype.setInputStream=function(t){this.setTokenStream(t)},p.prototype.getTokenStream=function(){return this._input},p.prototype.setTokenStream=function(t){this._input=null,this.reset(),this._input=t},p.prototype.getCurrentToken=function(){return this._input.LT(1)},p.prototype.notifyErrorListeners=function(t,e,n){e=e||null,n=n||null,null===e&&(e=this.getCurrentToken()),this._syntaxErrors+=1;var r=e.line,i=e.column;this.getErrorListenerDispatch().syntaxError(this,e,r,i,t,n)},p.prototype.consume=function(){var t=this.getCurrentToken();t.type!==r.EOF&&this.getInputStream().consume();var e,n=null!==this._parseListeners&&this._parseListeners.length>0;(this.buildParseTrees||n)&&((e=this._errHandler.inErrorRecoveryMode(this)?this._ctx.addErrorNode(t):this._ctx.addTokenNode(t)).invokingState=this.state,n&&this._parseListeners.map(function(t){e instanceof c||void 0!==e.isErrorNode&&e.isErrorNode()?t.visitErrorNode(e):e instanceof u&&t.visitTerminal(e)}));return t},p.prototype.addContextToParseTree=function(){null!==this._ctx.parentCtx&&this._ctx.parentCtx.addChild(this._ctx)},p.prototype.enterRule=function(t,e,n){this.state=e,this._ctx=t,this._ctx.start=this._input.LT(1),this.buildParseTrees&&this.addContextToParseTree(),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.exitRule=function(){this._ctx.stop=this._input.LT(-1),null!==this._parseListeners&&this.triggerExitRuleEvent(),this.state=this._ctx.invokingState,this._ctx=this._ctx.parentCtx},p.prototype.enterOuterAlt=function(t,e){t.setAltNumber(e),this.buildParseTrees&&this._ctx!==t&&null!==this._ctx.parentCtx&&(this._ctx.parentCtx.removeLastChild(),this._ctx.parentCtx.addChild(t)),this._ctx=t},p.prototype.getPrecedence=function(){return 0===this._precedenceStack.length?-1:this._precedenceStack[this._precedenceStack.length-1]},p.prototype.enterRecursionRule=function(t,e,n,r){this.state=e,this._precedenceStack.push(r),this._ctx=t,this._ctx.start=this._input.LT(1),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.pushNewRecursionContext=function(t,e,n){var r=this._ctx;r.parentCtx=t,r.invokingState=e,r.stop=this._input.LT(-1),this._ctx=t,this._ctx.start=r.start,this.buildParseTrees&&this._ctx.addChild(r),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.unrollRecursionContexts=function(t){this._precedenceStack.pop(),this._ctx.stop=this._input.LT(-1);var e=this._ctx;if(null!==this._parseListeners)for(;this._ctx!==t;)this.triggerExitRuleEvent(),this._ctx=this._ctx.parentCtx;else this._ctx=t;e.parentCtx=t,this.buildParseTrees&&null!==t&&t.addChild(e)},p.prototype.getInvokingContext=function(t){for(var e=this._ctx;null!==e;){if(e.ruleIndex===t)return e;e=e.parentCtx}return null},p.prototype.precpred=function(t,e){return e>=this._precedenceStack[this._precedenceStack.length-1]},p.prototype.inContext=function(t){return!1},p.prototype.isExpectedToken=function(t){var e=this._interp.atn,n=this._ctx,i=e.states[this.state],o=e.nextTokens(i);if(o.contains(t))return!0;if(!o.contains(r.EPSILON))return!1;for(;null!==n&&n.invokingState>=0&&o.contains(r.EPSILON);){var s=e.states[n.invokingState].transitions[0];if((o=e.nextTokens(s.followState)).contains(t))return!0;n=n.parentCtx}return!(!o.contains(r.EPSILON)||t!==r.EOF)},p.prototype.getExpectedTokens=function(){return this._interp.atn.getExpectedTokens(this.state,this._ctx)},p.prototype.getExpectedTokensWithinCurrentRule=function(){var t=this._interp.atn,e=t.states[this.state];return t.nextTokens(e)},p.prototype.getRuleIndex=function(t){var e=this.getRuleIndexMap()[t];return null!==e?e:-1},p.prototype.getRuleInvocationStack=function(t){null===(t=t||null)&&(t=this._ctx);for(var e=[];null!==t;){var n=t.ruleIndex;n<0?e.push("n/a"):e.push(this.ruleNames[n]),t=t.parentCtx}return e},p.prototype.getDFAStrings=function(){return this._interp.decisionToDFA.toString()},p.prototype.dumpDFA=function(){for(var t=!1,e=0;e0&&(t&&console.log(),this.printer.println("Decision "+n.decision+":"),this.printer.print(n.toString(this.literalNames,this.symbolicNames)),t=!0)}},p.prototype.getSourceName=function(){return this._input.sourceName},p.prototype.setTrace=function(t){t?(null!==this._tracer&&this.removeParseListener(this._tracer),this._tracer=new h(this),this.addParseListener(this._tracer)):(this.removeParseListener(this._tracer),this._tracer=null)},e.Parser=p},function(t,e,n){var r=n(12),i=["悋Ꜫ脳맭䅼㯧瞆奤","ŝ\b\t\t","\t\t\t\t","\b\t\b\t\t\t\n\t\n\v\t\v","\f\t\f\r\t\r\t\t","\t\t\t\t","\t\t\t","\t\t\t\t","\t\t\t","\t\t \t ","","","","","","","","","","","","","","\b\b\t\t\n\n","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\f\f\r\r","","Ó\n\fÖ","\v","Ü\n\fß\v","ã\n\fæ\v","ê\n","ï\n\fò","\v","ù\n","þ\n\fā\v","Ĉ\n","","","ę\n","Ĝ\n","ġ\n\rĢ","","ī\n\fĮ\v","","","Ŀ\n\fł","\v","Ō\n\f","ŏ\v ","    ŗ\n \f  Ś\v  "," ÔĬŀ!","\t\v\r\b\t\n\v\f\r","!#%","')+-/13579",";=?__C\\","2;C\\aac|c|$$^^\n$$11^^dd","hhppttvv))^^\n))11^^ddhhppttvv2;CHch",'\v\v""\f\f==~~',"ũ","\t","\v\r","","","","","!","#%","35","79;","=?","AI","K\t„","\v†\rˆ","“•","—™","ÄÆ","ÈÊ","Ì!Ù","#à%é'ë",")õ+ú","-Ą/ĉ","1ď3đ","5ě7Ġ","9Ħ;Ĵ=Ň","?ŒABi","BCtCDcDEo","EFoFGcGHtH","IJ=J","KLuLMvMNc","NOvOPGPQzQR","rRStSTUTUr","UVnVWkWXv",'XY"YZ<Z["[\\',")\\]?]^?^_",'?_`"`auabv',"bcccdvdeg","efofggghphi",'vij"jk`kl"',"lm?mn?no?",'op"pqgqrzrs',"rstttuguvu","vwuwxkxyq",'yzpz{"{|x|}','"}~?~?',"€?€)‚",'"‚ƒ=ƒ\b',"„…<…\n","†‡~‡\f","ˆ‰g‰ŠzŠ","‹r‹ŒtŒ","gŽuŽ","uk‘q","‘’p’","“”A”","•–-–","—˜,˜","™šOš›g","›œcœp","žkžŸpŸ ","i ¡h¡¢","w¢£n£¤U","¤¥r¥¦n","¦§k§¨v¨",'©"©ª<ª«','"«¬)¬­',"?­®?®¯?",'¯°"°±o',"±²g²³c³","´p´µkµ¶","p¶·i·¸","h¸¹w¹ºn",'º»"»¼`','¼½"½¾?¾',"¿?¿À?ÀÁ",')ÁÂ"ÂÃ',"=ÃÄÅ","*ÅÆÇ","+ÇÈÉ","€ÉÊË","0ËÌÔ","]ÍÎ^ÎÓ^","ÏÐ^ÐÓ_","ÑÓ\nÒÍ","ÒÏÒÑ","ÓÖÔÕ","ÔÒÕ×","ÖÔר_","Ø ÙÝ\tÚ","Ü\tÛÚÜ","ßÝÛÝ",'ÞÞ"ß',"Ýàä\tá","ã\tâáã","æäâä","åå$æ","äçê+è","ê'éçé","èê&ë","ð$ìï)íï","\nîìîí","ïòðî","ðññó","òðóô","$ô(õø","^öù\t÷ù/","øöø÷","ù*úÿ)","ûþ-üþ\n\býû","ýüþā","ÿýÿĀ","ĀĂāÿ","Ăă)ă,","Ąć^ąĈ\t\t","ĆĈ/ćą","ćĆĈ.","ĉĊwĊċ1","ċČ1Čč1č","Ď1Ď0ďĐ","\t\nĐ2đĒ%","Ēē!ēĔ","Ĕĕ\bĕ4","ĖĘėę\f","ĘėĘę","ęĜĚĜ\f","ěĖěĚ","ĜĝĝĞ\b","Ğ6ğġ\t\vĠ","ğġĢĢ","ĠĢģģ","ĤĤĥ\bĥ","8Ħħ1ħĨ",",ĨĬĩī","\vĪĩīĮ","ĬĭĬĪ","ĭįĮĬ","įİ,İı","1ıIJIJij","\bij:Ĵĵ","hĵĶtĶķc","ķĸiĸĹo","ĹĺgĺĻpĻ","ļvļŀĽ","Ŀ\vľĽĿ","łŀŁŀ","ľŁŃł","ŀŃń=ń","ŅŅņ\bņ","<Ňň1ňʼn","1ʼnōŊŌ","\n\fŋŊŌŏ","ōŋōŎ","ŎŐŏō","Őő\bő>","Œœ/œŔ@","ŔŘŕŗ\n\r","ŖŕŗŚ","ŘŖŘř","řśŚŘ","śŜ\b Ŝ@","ÒÔÝäéîðøýÿćĘ","ěĢĬŀōŘ\b"].join(""),o=(new r.atn.ATNDeserializer).deserialize(i),s=o.decisionToState.map(function(t,e){return new r.dfa.DFA(t,e)});function a(t){return r.Lexer.call(this,t),this._interp=new r.atn.LexerATNSimulator(this,o,s,new r.PredictionContextCache),this}a.prototype=Object.create(r.Lexer.prototype),a.prototype.constructor=a,a.EOF=r.Token.EOF,a.T__0=1,a.T__1=2,a.T__2=3,a.T__3=4,a.T__4=5,a.T__5=6,a.T__6=7,a.T__7=8,a.T__8=9,a.T__9=10,a.T__10=11,a.T__11=12,a.T__12=13,a.T__13=14,a.Brackets=15,a.LexerIdentifier=16,a.ParserIdentifier=17,a.String=18,a.LabelForParserRule=19,a.Newline=20,a.WhiteSpace=21,a.BlockComment=22,a.FragmentComment=23,a.LineComment=24,a.ArrowComment=25,a.prototype.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],a.prototype.modeNames=["DEFAULT_MODE"],a.prototype.literalNames=[null,"'grammar'","';'","'statExprSplit : '=== statement ^ === expression v ===' ;'","':'","'|'","'expression'","'?'","'+'","'*'","'MeaningfulSplit : '=== meaningful ^ ===' ;'","'('","')'","'~'","'.'"],a.prototype.symbolicNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Brackets","LexerIdentifier","ParserIdentifier","String","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],a.prototype.ruleNames=["T__0","T__1","T__2","T__3","T__4","T__5","T__6","T__7","T__8","T__9","T__10","T__11","T__12","T__13","Brackets","LexerIdentifier","ParserIdentifier","String","STRING_double","ESC_double","STRING_single","ESC_single","UNICODE","HEX","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],a.prototype.grammarFileName="BlocklyGrammer.g4",e.BlocklyGrammerLexer=a},function(t,e,n){var r=n(12),i=n(20).BlocklyGrammerVisitor,o=["悋Ꜫ脳맭䅼㯧瞆奤","Õ\t\t","\t\t\t\t","\b\t\b\t\t\t\n\t\n\v\t\v\f\t\f","\r\t\r\n\f"," \v$\n","\f'\v","","","8\n\r9","@\n\fC\v","F\n","L\n","Q\nS\n\fV\v","\\","\n\f_\vb\n","f\n\f","i\v\b\b\b\bn\n\b\bp\n\b","\b\b\b\bu\n\b\bw\n\b\b\b\b","\b|\n\b\b~\n\b\b\b\b\bƒ\n\b","\b…\n\b\b‡\n\b\t\tŠ\n\t\f\t","\t\v\t\n\n\v\v\v","\v\v\v\v\v\v","\v\v›\n\v\r\v\vœ","\v\v\v\v\v\v","\v\v¦\n\v\f\f\f\f«","\n\f\f­\n\f\f¯\n\f\r\f\f°\r","\r\r\r\r\r\r\r\r\r","\r\r\r\r\r\rÂ\n\r\r\r","\r\r\r\r\r\r\r\r","\rÎ\n\r\rÐ\n\r\f\r\rÓ\v\r\r","%‹\b\n\f","\t\v","\n\vð,","0\bE","\na\fc†","‹Ž","¥®","Á","\b"," ","!"," !%",'"$\n#"$\'',"%&%#","&('%()","\t)*\n*+\t+",",--../","/01","12334","4756","687589","979::;",";F<==A",">@\b?>@","CA?AB","BDCADF","E2E<F\t","GH\bHK","IL\fJLKI","KJLTMP","NQ\fOQPN","POQS","RMSVTR","TUUWVT","WbXYY]","Z\\\b[Z","\\_][]^","^`_]`b","aGaX","b\vcg\bdf","\bedfige","ghh\r","igjo\bkm\t","ln\tmlmn","npokop","p‡qv","rt\tsu\tts","tuuwvr","vww‡x}","y{\tz|\t{z","{||~","}y}~~‡","„€‚\t","ƒ\t‚","‚ƒƒ…","„€„…","…‡†j","†q†x","†‡","ˆŠ\v‰ˆ","Š‹Œ","‹‰Œ","‹Ž\f","‘","‘’’“\f","“””¦","•––—","—š\f˜™","™›\fš˜","›œœš","œž","žŸŸ¦"," ¡¡¢","¢£\r£¤","¤¦¥","¥•¥ ","¦§¬","¨ª\t©«\t","ª©ª«","«­¬¨","¬­­¯","®§¯°","°®°±","±²³\b\r³","´\r´µ\rµ¶","¶Â·¸","¸Â\r\b¹Â","º»»¼","¼½½Â","¾Â¿Â","ÀÂÁ²","Á·Á¹","ÁºÁ¾","Á¿ÁÀ","ÂÑÃÄ\f","\vÄÅÅÐ","\r\fÆÇ\f\nÇÐ\r\v","ÈÉ\f\rÉÐ\tÊË","\f\fËÍ\tÌÎ\t","ÍÌÍÎ","ÎÐÏÃ","ÏÆÏÈ","ÏÊÐÓ","ÑÏÑÒ","ÒÓÑ"," %9AEKPT]agmotv{}‚„†‹œ¥","ª¬°ÁÍÏÑ"].join(""),s=(new r.atn.ATNDeserializer).deserialize(o),a=s.decisionToState.map(function(t,e){return new r.dfa.DFA(t,e)}),l=new r.PredictionContextCache,u=[null,"'grammar'","';'","'statExprSplit : '=== statement ^ === expression v ===' ;'","':'","'|'","'expression'","'?'","'+'","'*'","'MeaningfulSplit : '=== meaningful ^ ===' ;'","'('","')'","'~'","'.'"],c=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Brackets","LexerIdentifier","ParserIdentifier","String","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],h=["grammarFile","grammerDecl","statExprSplit","statementRule","expressionRule","arithmeticRuleCollection","parserRuleAtom","lexerRuleCollection","meaningfulSplit","lexerRule","strings","lexerRuleExpr"];function p(t){return r.Parser.call(this,t),this._interp=new r.atn.ParserATNSimulator(this,s,a,l),this.ruleNames=h,this.literalNames=u,this.symbolicNames=c,this}function f(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_grammarFile,this}function d(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_grammerDecl,this}function y(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_statExprSplit,this}function g(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_statementRule,this}function v(t,e){return g.call(this,t),g.prototype.copyFrom.call(this,e),this}function x(t,e){return g.call(this,t),g.prototype.copyFrom.call(this,e),this}function m(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_expressionRule,this}function _(t,e){return m.call(this,t),m.prototype.copyFrom.call(this,e),this}function T(t,e){return m.call(this,t),m.prototype.copyFrom.call(this,e),this}function S(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_arithmeticRuleCollection,this}function E(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_parserRuleAtom,this}function C(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function A(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function b(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function k(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function R(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRuleCollection,this}function L(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_meaningfulSplit,this}function I(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRule,this}function N(t,e){return I.call(this,t),I.prototype.copyFrom.call(this,e),this}function O(t,e){return I.call(this,t),I.prototype.copyFrom.call(this,e),this}function P(t,e){return I.call(this,t),I.prototype.copyFrom.call(this,e),this}function w(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_strings,this}function F(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRuleExpr,this}p.prototype=Object.create(r.Parser.prototype),p.prototype.constructor=p,Object.defineProperty(p.prototype,"atn",{get:function(){return s}}),p.EOF=r.Token.EOF,p.T__0=1,p.T__1=2,p.T__2=3,p.T__3=4,p.T__4=5,p.T__5=6,p.T__6=7,p.T__7=8,p.T__8=9,p.T__9=10,p.T__10=11,p.T__11=12,p.T__12=13,p.T__13=14,p.Brackets=15,p.LexerIdentifier=16,p.ParserIdentifier=17,p.String=18,p.LabelForParserRule=19,p.Newline=20,p.WhiteSpace=21,p.BlockComment=22,p.FragmentComment=23,p.LineComment=24,p.ArrowComment=25,p.RULE_grammarFile=0,p.RULE_grammerDecl=1,p.RULE_statExprSplit=2,p.RULE_statementRule=3,p.RULE_expressionRule=4,p.RULE_arithmeticRuleCollection=5,p.RULE_parserRuleAtom=6,p.RULE_lexerRuleCollection=7,p.RULE_meaningfulSplit=8,p.RULE_lexerRule=9,p.RULE_strings=10,p.RULE_lexerRuleExpr=11,f.prototype=Object.create(r.ParserRuleContext.prototype),f.prototype.constructor=f,f.prototype.grammerDecl=function(){return this.getTypedRuleContext(d,0)},f.prototype.statExprSplit=function(){return this.getTypedRuleContext(y,0)},f.prototype.lexerRuleCollection=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(R):this.getTypedRuleContext(R,t)},f.prototype.meaningfulSplit=function(){return this.getTypedRuleContext(L,0)},f.prototype.statementRule=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(g):this.getTypedRuleContext(g,t)},f.prototype.expressionRule=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(m):this.getTypedRuleContext(m,t)},f.prototype.accept=function(t){return t instanceof i?t.visitGrammarFile(this):t.visitChildren(this)},p.GrammarFileContext=f,p.prototype.grammarFile=function(){var t=new f(this,this._ctx,this.state);this.enterRule(t,0,p.RULE_grammarFile);try{this.enterOuterAlt(t,1),this.state=24,this.grammerDecl(),this.state=28,this._errHandler.sync(this);for(var e=this._interp.adaptivePredict(this._input,0,this._ctx);1!=e&&e!=r.atn.ATN.INVALID_ALT_NUMBER;)2===e&&(this.state=25,this.statementRule()),this.state=30,this._errHandler.sync(this),e=this._interp.adaptivePredict(this._input,0,this._ctx);this.state=31,this.statExprSplit(),this.state=35,this._errHandler.sync(this);for(e=this._interp.adaptivePredict(this._input,1,this._ctx);1!=e&&e!=r.atn.ATN.INVALID_ALT_NUMBER;)2===e&&(this.state=32,this.expressionRule()),this.state=37,this._errHandler.sync(this),e=this._interp.adaptivePredict(this._input,1,this._ctx);this.state=38,this.lexerRuleCollection(),this.state=39,this.meaningfulSplit(),this.state=40,this.lexerRuleCollection()}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},d.prototype=Object.create(r.ParserRuleContext.prototype),d.prototype.constructor=d,d.prototype.LexerIdentifier=function(){return this.getToken(p.LexerIdentifier,0)},d.prototype.accept=function(t){return t instanceof i?t.visitGrammerDecl(this):t.visitChildren(this)},p.GrammerDeclContext=d,p.prototype.grammerDecl=function(){var t=new d(this,this._ctx,this.state);this.enterRule(t,2,p.RULE_grammerDecl);try{this.enterOuterAlt(t,1),this.state=42,this.match(p.T__0),this.state=43,this.match(p.LexerIdentifier),this.state=44,this.match(p.T__1)}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},y.prototype=Object.create(r.ParserRuleContext.prototype),y.prototype.constructor=y,y.prototype.accept=function(t){return t instanceof i?t.visitStatExprSplit(this):t.visitChildren(this)},p.StatExprSplitContext=y,p.prototype.statExprSplit=function(){var t=new y(this,this._ctx,this.state);this.enterRule(t,4,p.RULE_statExprSplit);try{this.enterOuterAlt(t,1),this.state=46,this.match(p.T__2)}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},g.prototype=Object.create(r.ParserRuleContext.prototype),g.prototype.constructor=g,g.prototype.copyFrom=function(t){r.ParserRuleContext.prototype.copyFrom.call(this,t)},v.prototype=Object.create(g.prototype),v.prototype.constructor=v,p.StatValueContext=v,v.prototype.ParserIdentifier=function(){return this.getToken(p.ParserIdentifier,0)},v.prototype.parserRuleAtom=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(E):this.getTypedRuleContext(E,t)},v.prototype.accept=function(t){return t instanceof i?t.visitStatValue(this):t.visitChildren(this)},x.prototype=Object.create(g.prototype),x.prototype.constructor=x,p.StatListContext=x,x.prototype.ParserIdentifier=function(t){return void 0===t&&(t=null),null===t?this.getTokens(p.ParserIdentifier):this.getToken(p.ParserIdentifier,t)},x.prototype.accept=function(t){return t instanceof i?t.visitStatList(this):t.visitChildren(this)},p.StatementRuleContext=g,p.prototype.statementRule=function(){var t=new g(this,this._ctx,this.state);this.enterRule(t,6,p.RULE_statementRule);var e=0;try{switch(this.state=67,this._errHandler.sync(this),this._interp.adaptivePredict(this._input,4,this._ctx)){case 1:t=new x(this,t),this.enterOuterAlt(t,1),this.state=48,this.match(p.ParserIdentifier),this.state=49,this.match(p.T__3),this.state=50,this.match(p.ParserIdentifier),this.state=53,this._errHandler.sync(this),e=this._input.LA(1);do{this.state=51,this.match(p.T__4),this.state=52,this.match(p.ParserIdentifier),this.state=55,this._errHandler.sync(this),e=this._input.LA(1)}while(e===p.T__4);this.state=57,this.match(p.T__1);break;case 2:for(t=new v(this,t),this.enterOuterAlt(t,2),this.state=58,this.match(p.ParserIdentifier),this.state=59,this.match(p.T__3),this.state=63,this._errHandler.sync(this),e=this._input.LA(1);0==(-32&e)&&0!=(1<1)for(var i,o=0;i=t[1][o];o++)e[i]&&this.error("语句 "+i+" 同时在两个语句集合 "+e[i]+" 和 "+t[0]+" 中出现了"),e[i]=t[0],n(this.statementRules,i).length>1&&this.error(t[0]+" 下的子规则 "+i+' 包含了"|"');var s;for(r=0;s=this.expressionRules[r];r++)s[1].length>1&&"expression"!==s[0]&&this.error("表达式 "+s[0]+' 包含了"|"')},SymbolVisitor.prototype.visitGrammarFile=function(t){return this.visit(t.grammerDecl()),this.visit(t.statementRule()),this.visit(t.expressionRule()),this.visit(t.lexerRuleCollection(0)),this},SymbolVisitor.prototype.visitGrammerDecl=function(t){this.grammerName=t.children[1].getText()},SymbolVisitor.prototype.visitStatList=function(t){for(var e,n=t.ParserIdentifier(),r=0;e=n[r];r++)n[r]=e.getText();var i=n.shift();this.statementRules.push([i,n])},SymbolVisitor.prototype.visitStatValue=function(t){var e=t.ParserIdentifier(0).getText();this.statementRules.push([e,[e]])},SymbolVisitor.prototype.visitExprExpression=function(t){var e=[];this.expression_arithmetic_num=t.arithmeticRuleCollection().length;for(var n=0;n1){this.notEntry[t[e]]=!0;for(var n,r=0;n=o.check[r];r++){var i=this.getRule("statement",n);i.blockjs.nextStatement=o.check,this.setRule("statement",n,i),this.notEntry[n]=!0}}for(e=0;o=this.statementRules[t[e]];e++)this.notEntry[t[e]]||(this.notEntry[t[e]]=!1,delete o.blockjs.previousStatement,delete o.blockjs.nextStatement,delete o.blockjs.inputsInline,o.blockjs.colour=this.entryColor);var o,s=[],a=[];for(e=0;o=this.statementRules[t[e]];e++)if(o.check.length>1)a.push([t[e],o]);else{s.push(o),o.type="statement";var l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))},h="Blockly."+this.generLanguage+".";l.push(u+"function(block) {\n"),c(1);for(r=0;y=o.blockobj.args[r];r++){var p=this.varPrefix+o.blockobj.vars[r];if(y.id)"value"===y.blockType?(l.push(u+"var "+p+" = "+h+"valueToCode(block, '"),l.push(p+"', \n "+u+h+this.recieveOrder+")")):"statement"===y.blockType?(l.push(u+"var "+p+" = "+h+"statementToCode(block, '"),l.push(p+"')")):(l.push(u+"var "+p+" = block.getFieldValue('"),l.push(p+"')")),"field_checkbox"===y.data.type&&l.push(" === 'TRUE'"),l.push(";\n"),y.multi,{field_checkbox:!0,field_dropdown:!0,field_number:!0,field_colour:!0,field_angle:!0,field_image:!0}[y.data.type]||y.omitted||(l.push(u+"if ("+p+"==='') {\n"),c(1),l.push(u+"throw new OmitedError(block,'"+p+"','"),l.push(t[e]+"');\n"),c(-1),l.push(u+"}\n")),"field"===y.blockType&&(l.push(u+p+" = "+this.grammerName+"Functions.pre('"),l.push(y.id+"')("+p+");\n"))}o.blockobj.inject.generFunc?(o.blockobj.inject.override&&(c(-9999),(l=[]).push(u+"function(block) {\n"),c(1)),l.push(u+o.blockobj.inject.generFunc.split("\n").join("\n"+u)),l.push("\n")):(l.push(u+"var code = '1111111111;\\n';\n"),l.push(u+"return code;\n")),c(-1),l.push(u+"}"),o.generFunc=l.join("")}t=Object.keys(this.expressionRules);var f;for(e=0;f=this.expressionRules[t[e]];e++)if(f.check.length>1)a.push([t[e],f]);else{s.push(f),f.type="value";l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))},h="Blockly."+this.generLanguage+".";l.push(u+"function(block) {\n"),c(1);for(r=0;y=f.blockobj.args[r];r++){p=this.varPrefix+f.blockobj.vars[r];if(y.id)"value"===y.blockType?(l.push(u+"var "+p+" = "+h+"valueToCode(block, '"),l.push(p+"', \n "+u+h+this.recieveOrder+")")):"statement"===y.blockType?(l.push(u+"var "+p+" = "+h+"statementToCode(block, '"),l.push(p+"')")):(l.push(u+"var "+p+" = block.getFieldValue('"),l.push(p+"')")),"field_checkbox"===y.data.type&&l.push(" === 'TRUE'"),l.push(";\n"),y.multi,{field_checkbox:!0,field_dropdown:!0,field_number:!0,field_colour:!0,field_angle:!0,field_image:!0}[y.data.type]||y.omitted||(l.push(u+"if ("+p+"==='') {\n"),c(1),l.push(u+"throw new OmitedError(block,'"+p+"','"),l.push(t[e]+"');\n"),c(-1),l.push(u+"}\n")),"field"===y.blockType&&(l.push(u+p+" = "+this.grammerName+"Functions.pre('"),l.push(y.id+"')("+p+");\n"))}f.blockobj.inject.generFunc?(f.blockobj.inject.override&&(c(-9999),(l=[]).push(u+"function(block) {\n"),c(1)),l.push(u+f.blockobj.inject.generFunc.split("\n").join("\n"+u)),l.push("\n")):(l.push(u+"var code = 0000000000;\n"),l.push(u+"return [code, "+h+this.sendOrder+"];\n")),c(-1),l.push(u+"}"),f.generFunc=l.join("")}var d;for(e=0;d=s[e];e++){d.args=[],d.argsType=[],d.fieldDefault=[];var y;for(r=0;y=d.blockobj.args[r];r++)y.id&&(d.args.push(d.blockobj.vars[r]),d.argsType.push(y.blockType),d.fieldDefault.push(d.blockobj.fieldDefault[r]));l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))};var g=this.grammerName,v=d.check[0];l.push(u+"function (inputs,isShadow,comment) {\n"),c(1),l.push(u+"return "+g+"Functions.xmlText('"),l.push(v+"',inputs,isShadow,comment);\n"),c(-1),l.push(u+"}"),d.xmlText=l.join("")}this.temp_xml=s,this.temp_collection=a},EvalVisitor.prototype.generBlocks=function(){var t=[],e="",n=function(t){t>0&&(e+=Array(2*t+1).join(" ")),t<0&&(e=e.slice(0,2*t))};temp_xml=this.temp_xml,delete this.temp_xml,temp_collection=this.temp_collection,delete this.temp_collection,t.push(e+this.grammerName+"Blocks = {\n"),n(1);for(var r,i=0;r=temp_collection[i];i++)t.push(e+'"'+r[0]+'": '),t.push(JSON.stringify(r[1].check,null,2).split("\n").join("\n"+e)),t.push(",\n");function o(t,e,n){var r=e.blockjs,i=JSON.stringify(r).split("\n").join("\n"+n),o={};r=JSON.parse(i);for(var s,a=0;s=e.blockobj.args[a];a++)if(s.id){var l=t.getRule(s.blockType,s.id);l&&1!==l.check.length&&(r.args0[a].check="1_fry2_3_inrgv"+s.id,o['"1_fry2_3_inrgv'+s.id+'"']=t.grammerName+"Blocks."+s.id)}if(r.nextStatement)for(var u,c=0;u=temp_collection[c];c++)if(-1!==u[1].check.indexOf(r.type)){r.nextStatement="1_fry2_3_inrgv"+u[0],o['"1_fry2_3_inrgv'+u[0]+'"']=t.grammerName+"Blocks."+u[0];break}for(var h in i=JSON.stringify(r,null,2).split("\n").join("\n"+n),o)i=i.split(h).join(o[h]);return i}t.pop(),t.push("\n"),n(-1),t.push(e+"}\n"),t.push(e+this.grammerName+"Blocks = Object.assign("),t.push(this.grammerName+"Blocks,{\n"),n(1);var s;for(i=0;s=temp_xml[i];i++)t.push(e+'"'+s.check[0]+'": {\n'),n(1),t.push(e+'"type": "'+s.type+'",\n'),t.push(e+'"json": '),t.push(o(this,s,e)),t.push(",\n"),t.push(e+'"generFunc": '),t.push(s.generFunc.split("\n").join("\n"+e)),t.push(",\n"),t.push(e+'"args": '),t.push(JSON.stringify(s.args,null,2).split("\n").join("\n"+e)),t.push(",\n"),t.push(e+'"argsType": '),t.push(JSON.stringify(s.argsType,null,0)),t.push(",\n"),t.push(e+'"fieldDefault": '),t.push(JSON.stringify(s.fieldDefault,null,0)),t.push(",\n"),t.push(e+'"xmlText": '),t.push(s.xmlText.split("\n").join("\n"+e)),t.push("\n"),n(-1),t.push(e+"},\n");t.pop(),t.push(e+"}\n"),n(-1),t.push(e+"});\n"),this.blocks=t.join("")},EvalVisitor.prototype.SpeicalLexerRule=function(t){var e={};return"Bool"===t?(e={type:"field_checkbox",checked:!0},this.setRule("lexer",t,e),!0):"Int"===t?(e={type:"field_number",value:0,min:0,precision:1},this.setRule("lexer",t,e),!0):"Number"===t?(e={type:"field_number",value:0},this.setRule("lexer",t,e),!0):"Colour"===t?(e={type:"field_colour",colour:"#ffffff"},this.setRule("lexer",t,e),!0):"Angle"===t?(e={type:"field_angle",angle:90},this.setRule("lexer",t,e),!0):"BGNL"===t&&(e={type:"input_dummy"},this.setRule("lexer",t,e),!0)},EvalVisitor.prototype.visitGrammarFile=function(t){this.visit(t.lexerRuleCollection(0)),this.visit(t.statementRule()),this.expression_arithmetic_num=0,this.visit(t.expressionRule()),this.assemble()},EvalVisitor.prototype.visitStrings=function(t){for(var e,n=t.String(),r=0;e=n[r];r++)n[r]=this.escapeString(e.getText());return n.join(" ")},EvalVisitor.prototype.visitLexerRuleStrings=function(t){var e=t.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(e)){var n=this.visit(t.strings(0));this.setRule("lexer",e,n)}},EvalVisitor.prototype.visitLexerRuleList=function(ctx){var lexerId=ctx.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(lexerId))if("_List"===lexerId.slice(-5)||"_Img"===lexerId.slice(-4)){var strings=ctx.strings(),values=this.matchInject(lexerId);values=values?eval(values):[];for(var ii=0,value;value=strings[ii];ii++){var string_=this.visit(value);strings[ii]=[string_,null==values[ii]?string_:values[ii]]}if("_List"===lexerId.slice(-5))var lexervalue={type:"field_dropdown",options:strings};else var lexervalue={type:"field_image",src:strings[0][0],width:strings[1]&&strings[1][0]||0,height:strings[2]&&strings[2][0]||0,alt:"*"};this.setRule("lexer",lexerId,lexervalue)}else this.visitLexerRuleComplex(ctx)},EvalVisitor.prototype.visitLexerRuleComplex=function(t){var e=t.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(e)){var n={type:"field_input",text:e+"_default"};this.setRule("lexer",e,n)}},EvalVisitor.prototype.visitStatValue=function(t){this.status={name:t.ParserIdentifier(0).getText(),type:"statement",message:[],args:[]},this.visitChildren(t);var e=this.status;delete this.status,this.initAssemble(e)},BlocklyGrammerVisitor.prototype.visitArithmeticRuleCollection=function(t){this.status={name:"expression",type:"value",message:["%1"],args:[{id:"expression",blockType:"value",omitted:!1,data:{type:"input_value"}}]},this.visitChildren(t),this.status.name="expression_arithmetic_"+this.expression_arithmetic_num,this.expression_arithmetic_num++;var e=this.status;delete this.status,this.initAssemble(e)},BlocklyGrammerVisitor.prototype.visitExprValue=function(t){this.status={name:t.ParserIdentifier(0).getText(),type:"value",message:[],args:[]},this.visitChildren(t);var e=this.status;delete this.status,this.initAssemble(e)},EvalVisitor.prototype.visitParserAtomExpr=function(t){var e={id:"expression",blockType:"value",omitted:t.children.length>1,data:{type:"input_value"}};this.status.args.push(e),this.status.message.push("%"+this.status.args.length)},EvalVisitor.prototype.visitParserAtomParserId=function(t){var e=t.children[0].getText(),n=t.children.length>1&&t.children[1].getText()||"",r=this.getRule("value",e)?"value":"statement",i={id:e,blockType:r,omitted:"?"===n||"*"===n,multi:"+"===n||"*"===n,data:{type:"input_"+r}};"value"===r&&i.multi&&this.error(this.status.name+" 下出现了复数组合的表达式 "+e+n),this.status.args.push(i),this.status.message.push("%"+this.status.args.length)},EvalVisitor.prototype.visitParserAtomLexerId=function(t){var e=t.children[0].getText(),n=this.getRule("lexer",e);if(n){var r={id:e,blockType:"field",omitted:t.children.length>1,data:n};"BGNL"===e&&(r={data:n}),"string"!=typeof n?(this.status.args.push(r),this.status.message.push("%"+this.status.args.length)):this.status.message.push(n)}},EvalVisitor.prototype.visitParserAtomStr=function(t){var e=this.escapeString(t.String().getText());this.status.message.push(e)},exports.SymbolVisitor=SymbolVisitor,exports.EvalVisitor=EvalVisitor},function(t,e){e.OmitedError=function(){return"//生成代码中,当一个不允许省略的值或块省略时,会抛出这个错误\nfunction OmitedError(block, var_, rule, fileName, lineNumber) {\n var message = 'no omitted '+var_+' at '+rule;\n var instance = new Error(message, fileName, lineNumber);\n instance.block = block;\n instance.varName = var_;\n instance.blockName = rule;\n instance.name = 'OmitedError';\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n if (Error.captureStackTrace) {\n Error.captureStackTrace(instance, OmitedError);\n }\n return instance;\n}\n\nOmitedError.prototype = Object.create(Error.prototype);\nOmitedError.prototype.constructor = OmitedError;\n//处理此错误的omitedcheckUpdateFunction定义在下面"},e.Functions_pre=function(t){return`${t}Functions.Int_pre = function(intstr) {\n return parseInt(intstr);\n}\n\n${t}Functions.Number_pre = function(intstr) {\n return parseFloat(intstr);\n}\n\n//返回各LexerRule文本域的预处理函数,方便用来统一转义等等\n${t}Functions.pre = function(LexerId) {\n if (${t}Functions.hasOwnProperty(LexerId+'_pre')) {\n return ${t}Functions[LexerId+'_pre'];\n }\n return function(obj){return obj}\n}`},e.Functions_xmlText=function(t){return`//构造这个方法是为了能够不借助workspace,从语法树直接构造图块结构\n//inputs的第i个元素是第i个args的xmlText,null或undefined表示空\n//inputs的第rule.args.length个元素是其下一个语句的xmlText\n${t}Functions.xmlText = function (ruleName,inputs,isShadow,comment) {\n var rule = ${t}Blocks[ruleName];\n var blocktext = isShadow?'shadow':'block';\n var xmlText = [];\n xmlText.push('<'+blocktext+' type="'+ruleName+'">');\n if(!inputs)inputs=[];\n for (var ii=0,inputType;inputType=rule.argsType[ii];ii++) {\n var input = inputs[ii];\n var _input = '';\n var noinput = (input===null || input===undefined);\n if(noinput && inputType==='field') continue;\n if(noinput) input = '';\n if(inputType!=='field') {\n var subList = false;\n var subrulename = rule.args[ii];\n subrulename=subrulename.split('_').slice(0,-1).join('_');\n var subrule = ${t}Blocks[subrulename];\n if (subrule instanceof Array) {\n subrulename=subrule[subrule.length-1];\n subrule = ${t}Blocks[subrulename];\n subList = true;\n }\n _input = subrule.xmlText([],true);\n if(noinput && !subList && !isShadow) {\n //无输入的默认行为是: 如果语句块的备选方块只有一个,直接代入方块\n input = subrule.xmlText();\n }\n }\n xmlText.push('<'+inputType+' name="'+rule.args[ii]+'">');\n xmlText.push(_input+input);\n xmlText.push('');\n }\n if(comment){\n xmlText.push('/g,'] ] >'));\n xmlText.push(']]>');\n }\n var next = inputs[rule.args.length];\n if (next) {//next\n xmlText.push('');\n xmlText.push(next);\n xmlText.push('');\n }\n xmlText.push('');\n return xmlText.join('');\n}`},e.Functions_blocksIniter=function(t,e){return`//把各方块的信息注册到Blockly中\n${t}Functions.blocksIniter = function(){\n var blocksobj = ${t}Blocks;\n for(var key in blocksobj) {\n var value = blocksobj[key];\n if(value instanceof Array)continue;\n (function(key,value){\n Blockly.Blocks[key] = {\n init: function() {this.jsonInit(value.json);}\n }\n })(key,value);\n Blockly.${e}[key] = value.generFunc;\n }\n}`},e.mainFileTPL=function(t,e,n,r,i,o,s,a){return[`\n\n\n${t} --antlr-blockly`,'\n + diff --git a/editor.html b/editor.html index b9cf59a7..cdaa3916 100644 --- a/editor.html +++ b/editor.html @@ -599,6 +599,7 @@ + From cd27054679e26326e56b71bc6dfdafa8531557e8 Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Fri, 22 May 2020 16:38:13 +0800 Subject: [PATCH 60/80] =?UTF-8?q?=E6=9B=B4=E6=8D=A2options=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaActionParse.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_server/MotaActionParse.js b/_server/MotaActionParse.js index b251288a..7ec82631 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParse.js @@ -63,7 +63,7 @@ ActionParser.prototype.parse = function (obj,type) { var buildEquip = function (obj) { obj = obj || {}; var text_choices = null; - var knownEquipListKeys = MotaActionBlocks.equipKnown.json.args0[0].options.map(function (one) {return one[1];}) + var knownEquipListKeys = MotaActionBlocks['Equip_List'].options.map(function (one) {return one[1];}) Object.keys(obj).sort().forEach(function (key) { var one = knownEquipListKeys.indexOf(key) >= 0 ? 'equipKnown' : 'equipUnknown'; text_choices = MotaActionBlocks[one].xmlText([ @@ -79,7 +79,7 @@ ActionParser.prototype.parse = function (obj,type) { var buildKeys = function (obj) { obj = obj || {}; var text_choices = null; - var knownListKeys = MotaActionBlocks.doorKeyKnown.json.args0[0].options.map(function (one) {return one[1];}) + var knownListKeys = MotaActionBlocks['Key_List'].options.map(function (one) {return one[1];}) Object.keys(obj).sort().forEach(function (key) { var one = knownListKeys.indexOf(key) >= 0 ? 'doorKeyKnown' : 'doorKeyUnknown'; text_choices = MotaActionBlocks[one].xmlText([ @@ -985,7 +985,7 @@ ActionParser.prototype.matchId = function(args) { } var match = /nothing/.exec('nothing') // 固定列表 - var FixedId_List=MotaActionBlocks.idFixedList_e.json.args0[0].options; // [["生命", "status:hp"], ...] + var FixedId_List=MotaActionBlocks['FixedId_List'].options; // [["生命", "status:hp"], ...] match=new RegExp('^('+FixedId_List.map(function(v){return v[1]}).join('|')+')$').exec(args[0]) if(match){ return rt(MotaActionBlocks['idFixedList_e'].xmlText, args); @@ -1003,7 +1003,7 @@ ActionParser.prototype.matchId = function(args) { return rt(MotaActionBlocks['idTemp_e'].xmlText, args); } // id列表 - var Id_List = MotaActionBlocks.idIdList_e.json.args0[0].options; // [["变量", "flag"], ...] + var Id_List = MotaActionBlocks['Id_List'].options; // [["变量", "flag"], ...] match=new RegExp('^('+Id_List.map(function(v){return v[1]}).join('|')+'):([a-zA-Z0-9_\\u4E00-\\u9FCC]+)$').exec(args[0]) if(match){ args=[match[1],MotaActionFunctions.replaceToName_token(match[2])] @@ -1024,7 +1024,7 @@ ActionParser.prototype.matchEvalAtom = function(args) { return rt(MotaActionBlocks['bool_e'].xmlText, args); } // 怪物属性 - var EnemyId_List=MotaActionBlocks.enemyattr_e.json.args0[1].options; // [["生命", "hp"], ...] + var EnemyId_List=MotaActionBlocks['EnemyId_List'].options; // [["生命", "hp"], ...] match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) if(match){ args=[match[1],match[2]] From a22c80e5bd060fd75fea7c3fff6eff2b774c348f Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Fri, 22 May 2020 18:38:10 +0800 Subject: [PATCH 61/80] =?UTF-8?q?=E5=8F=B3=E9=94=AE=E6=8B=89=E6=A1=86?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=89=AA=E5=88=87=E7=B2=98=E8=B4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 2 +- _server/editor.js | 1 + _server/editor_mappanel.js | 78 ++++++++++++++++++++++++++++---------- _server/editor_ui.js | 18 +++++---- v2.x-final更新.txt | 4 +- 5 files changed, 72 insertions(+), 31 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 4e88d5d6..81291140 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -523,7 +523,7 @@ return '{' + [ IdString_1 && ('"down": "' + IdString_1 +'"'), IdString_2 && ('"left": "' + IdString_2 +'"'), IdString_3 && ('"right": "' + IdString_3 +'"'), -].join(', ') + '}\n'; +].filter(function (x) { return x; }).join(', ') + '}\n'; */; diff --git a/_server/editor.js b/_server/editor.js index 2a6fc1b7..ac96b53b 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -70,6 +70,7 @@ function editor() { startPos:null, endPos:null, lastMoveE:{buttons:0,clientX:0,clientY:0}, + selectedArea: null, // 材料区拖动有关 lastMoveMaterE:null, tileSize: [1,1], diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index 2406177e..8cce7cc2 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -75,6 +75,7 @@ editor_mappanel_wrapper = function (editor) { * + 绘图时画个矩形在那个位置 */ editor.uifunctions.map_ondown = function (e) { + editor.uivalues.selectedArea = null; editor.uivalues.lastMoveE=e; var loc = editor.uifunctions.eToLoc(e); var pos = editor.uifunctions.locToPos(loc, true); @@ -211,16 +212,20 @@ editor_mappanel_wrapper = function (editor) { * + 绘图模式时, 根据画线/画矩形/画tileset 做对应的绘制 */ editor.uifunctions.map_onup = function (ee) { - console.log(1) + editor.uivalues.selectedArea = null; + ee.preventDefault(); + ee.stopPropagation(); var e=editor.uivalues.lastMoveE; if (!selectBox.isSelected()) { if (e.buttons == 2) { - if (editor.uivalues.endPos==null || editor.uivalues.startPos.x == editor.uivalues.endPos.x && editor.uivalues.startPos.y == editor.uivalues.endPos.y){ + if (editor.uivalues.endPos==null || (editor.uivalues.startPos.x == editor.uivalues.endPos.x && editor.uivalues.startPos.y == editor.uivalues.endPos.y)) { // 右键点击: 弹菜单 editor.uifunctions.showMidMenu(e.clientX, e.clientY); + editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); } else { // 右键拖拽: 选中区域 printf('已经选中该区域') + editor.uivalues.selectedArea = Object.assign({}, editor.uivalues.startPos, {x1: editor.uivalues.endPos.x, y1: editor.uivalues.endPos.y}); // 后续的处理 } } else { @@ -232,8 +237,8 @@ editor_mappanel_wrapper = function (editor) { else editor.exchangeBgFg(editor.uivalues.startPos, editor.uivalues.endPos, editor.layerMod); editor.uifunctions.unhighlightSaveFloorButton(); + editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); } - editor.dom.euiCtx.clearRect(0, 0, core.__PIXELS__, core.__PIXELS__); editor.uivalues.startPos = editor.uivalues.endPos = null; return false; } @@ -876,30 +881,51 @@ editor_mappanel_wrapper = function (editor) { editor.constructor.prototype.copyFromPos = function (pos) { var fields = Object.keys(editor.file.comment._data.floors._data.loc._data); pos = pos || editor.pos; - var map = core.clone(editor.map[pos.y][pos.x]); - var events = {}; - fields.forEach(function(v){ - events[v] = core.clone(editor.currentFloorData[v][pos.x+','+pos.y]); - }) - return {map: map, events: events}; + var x0 = pos.x, y0 = pos.y, x1 = pos.x1, y1 = pos.y1; + if (x1 == null) x1 = x0; + if (y1 == null) y1 = y0; + if (x0 > x1) { x0 ^= x1; x1 ^= x0; x0 ^= x1; }//swap + if (y0 > y1) { y0 ^= y1; y1 ^= y0; y0 ^= y1; }//swap + var result = {w: x1 - x0 + 1, h: y1 - y0 + 1, layer: editor.layerMod, data: []}; + for (var i = x0; i <= x1; ++i) { + for (var j = y0; j<= y1; ++j) { + var map = core.clone(editor[editor.layerMod][j][i]); + var events = {}; + fields.forEach(function(v){ + events[v] = core.clone(editor.currentFloorData[v][i+','+j]); + }) + result.data.push({map: map, events: events}); + } + } + return result; } editor.constructor.prototype.pasteToPos = function (info, pos) { if (info == null) return; var fields = Object.keys(editor.file.comment._data.floors._data.loc._data); pos = pos || editor.pos; - editor.map[pos.y][pos.x] = core.clone(info.map); - fields.forEach(function(v){ - if (info.events[v] == null) delete editor.currentFloorData[v][pos.x+","+pos.y]; - else editor.currentFloorData[v][pos.x+","+pos.y] = core.clone(info.events[v]); - }); + var w = info.w || 1, h = info.h || 1, layer = info.layer || 'map'; + var data = core.clone(info.data || []); + for (var i = pos.x; i < pos.x+w; ++i) { + for (var j = pos.y; j < pos.y+h; ++j) { + var one = data.shift(); + if (j >= editor[editor.layerMod].length || i >= editor[editor.layerMod][0].length) continue; + editor[editor.layerMod][j][i] = core.clone(one.map); + if (layer == 'map' && editor.layerMod == 'map') { + fields.forEach(function(v){ + if (one.events[v] == null) delete editor.currentFloorData[v][i+","+j]; + else editor.currentFloorData[v][i+","+j] = core.clone(one.events[v]); + }); + } + } + } } editor.constructor.prototype.movePos = function (startPos, endPos, callback) { if (!startPos || !endPos) return; if (startPos.x == endPos.x && startPos.y == endPos.y) return; var copyed = editor.copyFromPos(startPos); - editor.pasteToPos({map:0, events: {}}, startPos); + editor.pasteToPos({w: 1, h: 1, layer: 'map', data: [{map:0, events: {}}]}, startPos); editor.pasteToPos(copyed, endPos); editor.updateMap(); editor.file.saveFloorFile(function (err) { @@ -986,16 +1012,28 @@ editor_mappanel_wrapper = function (editor) { editor.constructor.prototype.clearPos = function (clearPos, pos, callback) { var fields = Object.keys(editor.file.comment._data.floors._data.loc._data); pos = pos || editor.pos; + var x0 = pos.x, y0 = pos.y, x1 = pos.x1, y1 = pos.y1; + if (x1 == null) x1 = x0; + if (y1 == null) y1 = y0; + if (x0 > x1) { x0 ^= x1; x1 ^= x0; x0 ^= x1; }//swap + if (y0 > y1) { y0 ^= y1; y1 ^= y0; y0 ^= y1; }//swap editor.uifunctions.hideMidMenu(); editor.savePreMap(); editor.info = 0; editor_mode.onmode(''); - if (clearPos) - editor.map[pos.y][pos.x]=editor.info; + for (var i = x0; i <= x1; ++i) { + for (var j = y0; j <= y1; ++j) { + if (j >= editor[editor.layerMod].length || i >= editor[editor.layerMod][0].length) continue; + if (clearPos) + editor[editor.layerMod][j][i] = 0; + if (editor.layerMod == 'map') { + fields.forEach(function(v){ + delete editor.currentFloorData[v][i+","+j]; + }); + } + } + } editor.updateMap(); - fields.forEach(function(v){ - delete editor.currentFloorData[v][pos.x+','+pos.y]; - }) editor.file.saveFloorFile(function (err) { if (err) { printe(err); diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 3d528f20..fff57c1b 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -343,15 +343,15 @@ editor_ui_wrapper = function (editor) { // Ctrl+C, Ctrl+X, Ctrl+V if (e.ctrlKey && e.keyCode == 67 && !selectBox.isSelected()) { e.preventDefault(); - editor.uivalues.copyedInfo = editor.copyFromPos(); - printf('该点事件已复制'); + editor.uivalues.copyedInfo = editor.copyFromPos(editor.uivalues.selectedArea); + printf('该点事件已复制;请注意右键地图拉框可以复制一个区域;若有时复制失灵请多点几下空白处'); return; } if (e.ctrlKey && e.keyCode == 88 && !selectBox.isSelected()) { e.preventDefault(); - editor.uivalues.copyedInfo = editor.copyFromPos(); - editor.clearPos(true, null, function () { - printf('该点事件已剪切'); + editor.uivalues.copyedInfo = editor.copyFromPos(editor.uivalues.selectedArea); + editor.clearPos(true, editor.uivalues.selectedArea, function () { + printf('该点事件已剪切;请注意右键地图拉框可以剪切一个区域;若有时剪切失灵请多点几下空白处'); editor.uifunctions.unhighlightSaveFloorButton(); }) return; @@ -369,7 +369,7 @@ editor_ui_wrapper = function (editor) { printe(err); throw (err) } - ; printf('粘贴事件成功'); + ; printf('粘贴事件成功;若有时粘贴失灵请多点几下空白处'); editor.uifunctions.unhighlightSaveFloorButton(); editor.drawPosSelection(); }); @@ -377,8 +377,10 @@ editor_ui_wrapper = function (editor) { } // DELETE if (e.keyCode == 46 && !selectBox.isSelected()) { - editor.clearPos(true); - editor.uifunctions.unhighlightSaveFloorButton(); + editor.clearPos(true, editor.uivalues.selectedArea, function () { + printf('该点事件已删除;请注意右键地图拉框可以删除一个区域;;若有时删除失灵请多点几下空白处'); + editor.uifunctions.unhighlightSaveFloorButton(); + }) return; } // ESC diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 13079805..aadfea45 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -65,8 +65,8 @@ (已完成!) showImage, drawImage,立绘等加上对称选项 (已完成!) 更多的图块blockly化 (已完成!) 勇士帧动画 -行走动画? - +(不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 +\t[this], 勇士朝下,flag:arg清理,瞬移扣血 ------------- From c41887bb1908ff2246102f4f1c39da757e5df419 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Fri, 22 May 2020 18:44:27 +0800 Subject: [PATCH 62/80] MotaActionParse -> MotaActionParser --- _server/MotaAction.g4 | 2 +- _server/{MotaActionParse.js => MotaActionParser.js} | 2 +- editor-mobile.html | 2 +- editor.html | 2 +- v2.x-final更新.txt | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) rename _server/{MotaActionParse.js => MotaActionParser.js} (99%) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index b257861a..5d4ef2a5 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3184,6 +3184,6 @@ this.block('idTemp_e').output='idString_e'; /* Functions -MotaActionParse() +MotaActionParser() */ \ No newline at end of file diff --git a/_server/MotaActionParse.js b/_server/MotaActionParser.js similarity index 99% rename from _server/MotaActionParse.js rename to _server/MotaActionParser.js index b251288a..9889e46e 100644 --- a/_server/MotaActionParse.js +++ b/_server/MotaActionParser.js @@ -1,4 +1,4 @@ -MotaActionParse=function(){ +MotaActionParser=function(){ function ActionParser(){ } diff --git a/editor-mobile.html b/editor-mobile.html index a7ce7570..de06dc87 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -614,7 +614,7 @@ - + diff --git a/editor.html b/editor.html index cdaa3916..a03d70db 100644 --- a/editor.html +++ b/editor.html @@ -598,7 +598,7 @@ - + diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index aadfea45..1c49d733 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -66,6 +66,7 @@ (已完成!) 更多的图块blockly化 (已完成!) 勇士帧动画 (不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 +合并main中一些设置内容 \t[this], 勇士朝下,flag:arg清理,瞬移扣血 ------------- From 363d451f50605e9085a03b118976df7d8a69b6a4 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Fri, 22 May 2020 19:45:43 +0800 Subject: [PATCH 63/80] =?UTF-8?q?=E9=81=93=E5=85=B7=E4=B8=8E=E6=80=AA?= =?UTF-8?q?=E7=89=A9=E5=90=8D=E7=9A=84=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 2 +- _server/MotaActionParser.js | 146 ++++++++++++++++++++---------------- _server/editor_blockly.js | 20 ++++- _server/table/comment.js | 2 +- 4 files changed, 103 insertions(+), 67 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 5d4ef2a5..6bb5db27 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -3108,7 +3108,7 @@ Id_List EnemyId_List : '生命'|'攻击'|'防御'|'金币'|'经验'|'加点'|'属性'|'名称'|'映射名'|'value'|'atkValue'|'defValue'|'notBomb'|'zoneSquare'|'range'|'n'|'add'|'damage' - /*EnemyId_List ['hp','atk','def','money','exp','point','special','name','displayInBook','value','atkValue','defValue','notBomb','zoneSquare','range','n','add','damage']*/; + /*EnemyId_List ['hp','atk','def','money','exp','point','special','name','displayInBook','属性值','退化扣攻','退化扣防','不可炸','九宫格领域','领域范围','连击数','吸血到自身','固伤值']*/; Equip_List : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'魔力'|'魔力上限' diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index dbe5580d..86b03897 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -67,7 +67,7 @@ ActionParser.prototype.parse = function (obj,type) { Object.keys(obj).sort().forEach(function (key) { var one = knownEquipListKeys.indexOf(key) >= 0 ? 'equipKnown' : 'equipUnknown'; text_choices = MotaActionBlocks[one].xmlText([ - key, obj.key, text_choices + key, obj[key], text_choices ]); }) return text_choices; @@ -83,7 +83,7 @@ ActionParser.prototype.parse = function (obj,type) { Object.keys(obj).sort().forEach(function (key) { var one = knownListKeys.indexOf(key) >= 0 ? 'doorKeyKnown' : 'doorKeyUnknown'; text_choices = MotaActionBlocks[one].xmlText([ - key, obj.key, text_choices + one == 'doorKeyUnknown' ? MotaActionFunctions.replaceToName_token(key) : key, obj[key], text_choices ]); }) return text_choices; @@ -474,11 +474,11 @@ ActionParser.prototype.parseAction = function() { break; case "useItem": // 使用道具 this.next = MotaActionBlocks['useItem_s'].xmlText([ - data.id,this.next]); + MotaActionFunctions.replaceToName_token(data.id),this.next]); break; case "loadEquip": // 装上装备 this.next = MotaActionBlocks['loadEquip_s'].xmlText([ - data.id,this.next]); + MotaActionFunctions.replaceToName_token(data.id),this.next]); break; case "unloadEquip": // 卸下装备 this.next = MotaActionBlocks['unloadEquip_s'].xmlText([ @@ -495,7 +495,7 @@ ActionParser.prototype.parseAction = function() { case "battle": // 强制战斗 if (data.id) { this.next = MotaActionBlocks['battle_s'].xmlText([ - data.id,this.next]); + MotaActionFunctions.replaceToName_token(data.id),this.next]); } else { data.loc = data.loc || []; @@ -564,7 +564,7 @@ ActionParser.prototype.parseAction = function() { break; case "setEnemy": this.next = MotaActionBlocks['setEnemy_s'].xmlText([ - data.id, data.name, this.expandEvalBlock([data.value]), this.next]); + MotaActionFunctions.replaceToName_token(data.id), data.name, this.expandEvalBlock([data.value]), this.next]); break; case "setFloor": this.next = MotaActionBlocks['setFloor_s'].xmlText([ @@ -1027,7 +1027,7 @@ ActionParser.prototype.matchEvalAtom = function(args) { var EnemyId_List=MotaActionBlocks['EnemyId_List'].options; // [["生命", "hp"], ...] match=new RegExp("^enemy:([a-zA-Z0-9_]+):(" + EnemyId_List.map(function(v){return v[1]}).join('|') + ")$").exec(args[0]) if(match){ - args=[match[1],match[2]] + args=[MotaActionFunctions.replaceToName_token(match[1]),match[2]] return rt(MotaActionBlocks['enemyattr_e'].xmlText, args); } // 图块ID @@ -1156,6 +1156,7 @@ MotaActionFunctions.IntString_pre = function (IntString) { MotaActionFunctions.IdString_pre = function(IdString){ if (IdString.indexOf('__door__')!==-1) throw new Error('请修改开门变量__door__,如door1,door2,door3等依次向后。请勿存在两个门使用相同的开门变量。'); IdString = MotaActionFunctions.replaceFromName(IdString); + IdString = MotaActionFunctions.replaceFromName_token(IdString); if (IdString && !(MotaActionFunctions.pattern.id.test(IdString)) && !(MotaActionFunctions.pattern.idWithoutFlag.test(IdString))) throw new Error('id: '+IdString+'中包含了0-9 a-z A-Z _ - :之外的字符'); return IdString; @@ -1241,59 +1242,46 @@ MotaActionFunctions.pattern.replaceStatusList = [ ["steps", "步数"], ]; -MotaActionFunctions.pattern.replaceItemList = [ - // 保证顺序! - ["yellowKey", "黄钥匙"], - ["blueKey", "蓝钥匙"], - ["redKey", "红钥匙"], - ["redGem", "红宝石"], - ["blueGem", "蓝宝石"], - ["greenGem", "绿宝石"], - ["yellowGem", "黄宝石"], - ["redPotion", "红血瓶"], - ["bluePotion", "蓝血瓶"], - ["yellowPotion", "黄血瓶"], - ["greenPotion", "绿血瓶"], - ["sword1", "铁剑"], - ["sword2", "银剑"], - ["sword3", "骑士剑"], - ["sword4", "圣剑"], - ["sword5", "神圣剑"], - ["shield1", "铁盾"], - ["shield2", "银盾"], - ["shield3", "骑士盾"], - ["shield4", "圣盾"], - ["shield5", "神圣盾"], - ["superPotion", "圣水"], - ["silverCoin", "银币"], - ["book", "怪物手册"], - ["fly", "楼层传送器"], - ["coin", "幸运金币"], - ["freezeBadge", "冰冻徽章"], - ["cross", "十字架"], - ["dagger", "屠龙匕首"], - ["amulet", "护符"], - ["bigKey", "大黄门钥匙"], - ["greenKey", "绿钥匙"], - ["steelKey", "铁门钥匙"], - ["pickaxe", "破墙镐"], - ["icePickaxe", "破冰镐"], - ["bomb", "炸弹"], - ["centerFly", "中心对称飞行器"], - ["upFly", "上楼器"], - ["downFly", "下楼器"], - ["earthquake", "地震卷轴"], - ["poisonWine", "解毒药水"], - ["weakWine", "解衰药水"], - ["curseWine", "解咒药水"], - ["superWine", "万能药水"], - ["hammer", "圣锤"], - ["lifeWand", "生命魔杖"], - ["jumpShoes", "跳跃靴"], -]; -MotaActionFunctions.pattern.replaceEnemyList = [ +(function() { + // 读道具列表 + MotaActionFunctions.pattern.replaceItemList = []; + for (var id in core.material.items) { + var name = core.material.items[id].name; + if (id && name && name != '新物品') { + var hasPrefix = false; + MotaActionFunctions.pattern.replaceItemList.forEach(function (one) { + if (one[0].startsWith(id) || id.startsWith(one[0]) || one[1].startsWith(name) || name.startsWith(one[1])) { + hasPrefix = true; + } + }); + if (!hasPrefix) { + MotaActionFunctions.pattern.replaceItemList.push([id, name]); + } + } + } + + MotaActionFunctions.pattern.replaceEnemyList = []; + for (var id in core.material.enemys) { + var name = core.material.enemys[id].name; + if (id && name && name != '新敌人') { + var hasPrefix = false; + MotaActionFunctions.pattern.replaceEnemyList.forEach(function (one) { + if (one[0].startsWith(id) || id.startsWith(one[0]) || one[1].startsWith(name) || name.startsWith(one[1])) { + hasPrefix = true; + } + }); + if (!hasPrefix) { + MotaActionFunctions.pattern.replaceEnemyList.push([id, name]); + } + } + } + +})(); + +MotaActionFunctions.pattern.replaceEnemyValueList = [ // 保证顺序! + ["hp", "生命"], ["name", "名称"], ["atk", "攻击"], ["def", "防御"], @@ -1312,6 +1300,7 @@ MotaActionFunctions.replaceToName_token = function (str) { list=list.concat(MotaActionFunctions.pattern.replaceStatusList) list=list.concat(MotaActionFunctions.pattern.replaceItemList) list=list.concat(MotaActionFunctions.pattern.replaceEnemyList) + list=list.concat(MotaActionFunctions.pattern.replaceEnemyValueList) for(var index=0,pair;pair=list[index];index++){ if (pair[0]==str) { return pair[1] @@ -1320,6 +1309,21 @@ MotaActionFunctions.replaceToName_token = function (str) { return str; } +MotaActionFunctions.replaceFromName_token = function (str) { + if (!str || MotaActionFunctions.disableReplace) return str; + var list = []; + list=list.concat(MotaActionFunctions.pattern.replaceStatusList) + list=list.concat(MotaActionFunctions.pattern.replaceItemList) + list=list.concat(MotaActionFunctions.pattern.replaceEnemyList) + list=list.concat(MotaActionFunctions.pattern.replaceEnemyValueList) + for(var index=0,pair;pair=list[index];index++){ + if (pair[1]==str) { + return pair[0] + } + } + return str; +} + MotaActionFunctions.replaceToName = function (str) { if (!str || MotaActionFunctions.disableReplace) return str; var map = {}, list = []; @@ -1338,12 +1342,20 @@ MotaActionFunctions.replaceToName = function (str) { }).replace(/item:/g, "物品:"); str = str.replace(/flag:/g, "变量:").replace(/switch:/g, "独立开关:").replace(/global:/g, "全局存储:").replace(/temp:/g, "临时变量:"); + + MotaActionFunctions.pattern.replaceEnemyValueList.forEach(function (v) { + map[v[0]] = v[1]; list.push(v[0]); + }); + str = str.replace(new RegExp("enemy:([a-zA-Z0-9_]+)[.:](" + list.join("|") + ")", "g"), function (a, b, c) { + return map[c] ? ("enemy:" + b + ":" + map[c]) : c; + }).replace(/(enemy:[a-zA-Z0-9_]+)[.::]/g, '$1:'); + map = {}; list = []; MotaActionFunctions.pattern.replaceEnemyList.forEach(function (v) { map[v[0]] = v[1]; list.push(v[0]); }); - str = str.replace(new RegExp("enemy:([a-zA-Z0-9_]+).(" + list.join("|") + ")", "g"), function (a, b, c) { - return map[c] ? ("怪物:" + b + ":" + map[c]) : c; + str = str.replace(new RegExp("enemy:(" + list.join("|") + ")", "g"), function (a, b) { + return map[b] ? ("怪物:" + map[b]) : b; }).replace(/enemy:/g, "怪物:"); str = str.replace(/blockId:/g, "图块ID:").replace(/blockCls:/g, "图块类别:").replace(/equip:/g, "装备孔:"); @@ -1366,16 +1378,24 @@ MotaActionFunctions.replaceFromName = function (str) { str = str.replace(new RegExp("物品[::](" + list.join("|") + ")", "g"), function (a, b) { return map[b] ? ("item:" + map[b]) : b; }).replace(/物品[::]/g, "item:"); - str = str.replace(/临时变量[::]/g, "temp:").replace(/变量[::]/g, "flag:").replace(/独立开关[::]/g, "switch:").replace(/全局存储[::]/g, "global:"); + str = str.replace(/临时变量[::]/g, "temp d:").replace(/变量[::]/g, "flag:").replace(/独立开关[::]/g, "switch:").replace(/全局存储[::]/g, "global:"); map = {}; list = []; MotaActionFunctions.pattern.replaceEnemyList.forEach(function (v) { map[v[1]] = v[0]; list.push(v[1]); }); - str = str.replace(new RegExp("(enemy:|怪物[::])([a-zA-Z0-9_]+)[::](" + list.join("|") + ")", "g"), function (a, b, c, d) { - return map[d] ? ("enemy:" + c + ":" + map[d]) : d; + str = str.replace(new RegExp("(enemy:|怪物[::])(" + list.join("|") + ")", "g"), function (a, b, c, d) { + return map[c] ? ("enemy:" + map[c]) : c; }).replace(/怪物[::]/g, "enemy:"); + map = {}; list = []; + MotaActionFunctions.pattern.replaceEnemyValueList.forEach(function (v) { + map[v[1]] = v[0]; list.push(v[1]); + }); + str = str.replace(new RegExp("enemy:([a-zA-Z0-9_]+)[::](" + list.join("|") + ")", "g"), function (a, b, c, d) { + return map[c] ? ("enemy:" + b + ":" + map[c]) : c; + }).replace(/(enemy:[a-zA-Z0-9_]+)[::]/g, '$1:'); + str = str.replace(/图块I[dD][::]/g, "blockId:").replace(/图块类别[::]/g, "blockCls:").replace(/装备孔[::]/g, "equip:"); return str; diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 47ca3675..6ed9762f 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -472,7 +472,13 @@ editor_blockly = function () { return one != token && one.startsWith(token); }).sort(); } else if (before.endsWith("怪物") || (ch == ':' && before.endsWith("enemy"))) { - return Object.keys(core.material.enemys).filter(function (one) { + var list = Object.keys(core.material.enemys); + if (before.endsWith("怪物") && MotaActionFunctions) { + list = MotaActionFunctions.pattern.replaceEnemyList.map(function (v) { + return v[1]; + }).concat(list); + } + return list.filter(function (one) { return one != token && one.startsWith(token); }) } else { @@ -483,7 +489,7 @@ editor_blockly = function () { if (before.endsWith("怪物") || (ch == ':' && ch2 == ':' && before.endsWith("enemy"))) { var list = ["name", "hp", "atk", "def", "money", "exp", "point", "special"]; if (before.endsWith("怪物") && MotaActionFunctions) { - list = MotaActionFunctions.pattern.replaceEnemyList.map(function (v) { + list = MotaActionFunctions.pattern.replaceEnemyValueList.map(function (v) { return v[1]; }).concat(list); } @@ -536,7 +542,17 @@ editor_blockly = function () { })); var allImages = Object.keys(core.material.images.images); var allEnemys = Object.keys(core.material.enemys); + if (MotaActionFunctions && !MotaActionFunctions.disableReplace) { + allEnemys = allEnemys.concat(MotaActionFunctions.pattern.replaceEnemyList.map(function (x) { + return x[1]; + })) + } var allItems = Object.keys(core.material.items); + if (MotaActionFunctions && !MotaActionFunctions.disableReplace) { + allItems = allItems.concat(MotaActionFunctions.pattern.replaceItemList.map(function (x) { + return x[1]; + })) + } var allAnimates = Object.keys(core.material.animates); var allBgms = Object.keys(core.material.bgms); var allSounds = Object.keys(core.material.sounds); diff --git a/_server/table/comment.js b/_server/table/comment.js index 58c89856..60af0a61 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -108,7 +108,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { } } }, - "items_template": { 'cls': 'items', 'name': '新物品', 'canPass': true }, + "items_template": { 'cls': 'items', 'name': '新物品' }, // --------------------------- 【怪物】相关的表格配置 --------------------------- // From daa014b7b35816c94b17690a78797d6d377fb15f Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Fri, 22 May 2020 19:49:05 +0800 Subject: [PATCH 64/80] =?UTF-8?q?update=20converter.bundle&=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=8F=8C=E5=87=BBblockly=E7=9A=84=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 65 +++++++++++++++++++++++++ _server/blockly/Converter.bundle.min.js | 2 +- _server/editor_blockly.js | 59 +++------------------- 3 files changed, 73 insertions(+), 53 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index b8f36b55..46aa1678 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -1,6 +1,16 @@ // 编辑此文件用的vscode插件: https://marketplace.visualstudio.com/items?itemName=zhaouv.vscode-mota-js-extension // 此文件通过antlr-blockly生成编辑器中的图块, 相关帮助说明: https://zhaouv.github.io/antlr-blockly/docs/#/README + +/* +特殊注入demo +doubleclicktext : EvalString_1 +previewBlock : true +// [x, y, floorId, forceFloor] +selectPoint : ["PosString_0", "PosString_1", "IdString_0", true] +*/ + + grammar MotaAction; //===============parser=============== @@ -110,6 +120,7 @@ shopsub /* shopsub tooltip : 全局商店 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +doubleclicktext : EvalString_1 default : ["shop1","贪婪之神","moneyShop","勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:","金币商店",false,false] var title=''; if (EvalString_0==''){ @@ -279,6 +290,7 @@ changeFloor_m tooltip : 楼梯, 传送门, 如果目标楼层有多个楼梯, 写upFloor或downFloor可能会导致到达的楼梯不确定, 这时候请使用loc方式来指定具体的点位置 helpUrl : https://h5mota.com/games/template/_docs/#/element?id=%e8%b7%af%e9%9a%9c%ef%bc%8c%e6%a5%bc%e6%a2%af%ef%bc%8c%e4%bc%a0%e9%80%81%e9%97%a8 default : [null,"MTx",null,"","",null,"",null] +selectPoint : ["PosString_0", "PosString_1", "IdString_0", true] var toFloorId = IdString_0; if (Floor_List_0!='floorId') toFloorId = Floor_List_0; var loc = ''; @@ -661,6 +673,7 @@ text_0_s /* text_0_s tooltip : text:显示一段文字(剧情) helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +doubleclicktext : EvalString_0 default : ["欢迎使用事件编辑器(双击方块进入多行编辑)"] var code = '"'+EvalString_0+'",\n'; return code; @@ -673,6 +686,7 @@ text_1_s /* text_1_s tooltip : text:显示一段文字(剧情),选项较多请右键点击帮助 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +doubleclicktext : EvalString_3 default : ["小妖精","fairy","","欢迎使用事件编辑器(双击方块进入多行编辑)"] var title=''; if (EvalString_0==''){ @@ -697,6 +711,7 @@ comment_s /* comment_s tooltip : comment:添加一段会被游戏跳过的注释内容 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=comment%ef%bc%9a%e6%b7%bb%e5%8a%a0%e6%b3%a8%e9%87%8a +doubleclicktext : EvalString_0 default : ["可以在这里写添加任何注释内容"] colour : this.commentColor var code = '{"type": "comment", "text": "'+EvalString_0+'"},\n'; @@ -710,6 +725,7 @@ autoText_s /* autoText_s tooltip : autoText:自动剧情文本,用户无法跳过自动剧情文本,大段剧情文本请添加“是否跳过剧情”的提示 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=autotext%EF%BC%9A%E8%87%AA%E5%8A%A8%E5%89%A7%E6%83%85%E6%96%87%E6%9C%AC +doubleclicktext : EvalString_2 default : ["小妖精","fairy","",3000,"用户无法跳过自动剧情文本,大段剧情文本请添加“是否跳过剧情”的提示"] var title=''; if (EvalString_0==''){ @@ -734,6 +750,7 @@ scrollText_s /* scrollText_s tooltip : scrollText:滚动剧情文本,将从下到上进行滚动显示。 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=scrollText%ef%bc%9a%e6%bb%9a%e5%8a%a8%e5%89%a7%e6%83%85%e6%96%87%e6%9c%ac +doubleclicktext : EvalString_0 default : [5000,1.4,false,"时间是总时间,可以使用setText事件来控制字体、颜色、大小、偏移量等"] Bool_0 = Bool_0?', "async": true':''; var code = '{"type": "scrollText", "text": "'+EvalString_0+'"'+Bool_0+', "time" :'+Int_0+', "lineHeight": '+Number_0+'},\n'; @@ -884,6 +901,7 @@ show_s tooltip : show: 将禁用事件启用,楼层和动画时间可不填,xy可用逗号分隔表示多个点 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=show%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E7%A6%81%E7%94%A8%E4%BA%8B%E4%BB%B6%E5%90%AF%E7%94%A8 default : ["","","","",false] +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] colour : this.mapColor var floorstr = ''; if (EvalString_0 && EvalString_1) { @@ -917,6 +935,7 @@ hide_s tooltip : hide: 隐藏事件,同时可删除 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hide%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E5%90%AF%E7%94%A8%E4%BA%8B%E4%BB%B6%E7%A6%81%E7%94%A8 default : ["","","",true,"",false] +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] colour : this.mapColor var floorstr = ''; if (EvalString_0 && EvalString_1) { @@ -951,6 +970,7 @@ trigger_s tooltip : trigger: 立即触发另一个地点的事件 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6 default : ["",""] +selectPoint : ["PosString_0", "PosString_1"] colour : this.eventColor var floorstr = ''; if (PosString_0 && PosString_1) { @@ -987,6 +1007,7 @@ tooltip : insert: 立即插入另一个地点的事件执行,当前事件不 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=insert%ef%bc%9a%e6%8f%92%e5%85%a5%e5%85%ac%e5%85%b1%e4%ba%8b%e4%bb%b6%e6%88%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e5%9c%b0%e7%82%b9%e7%9a%84%e4%ba%8b%e4%bb%b6%e5%b9%b6%e6%89%a7%e8%a1%8c default : ["0","0",null,"",""] colour : this.eventColor +selectPoint : ["PosString_0", "PosString_1", "IdString_0"] IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); if (JsonEvalString_0) { if (!(JSON.parse(JsonEvalString_0) instanceof Array)) @@ -1025,6 +1046,7 @@ tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 colour : this.mapColor default : ["yellowDoor","","","","",false] +selectPoint : ["EvalString_1", "EvalString_2", "IdString_0"] var floorstr = ''; if (EvalString_1 && EvalString_2) { var pattern1 = MotaActionFunctions.pattern.id; @@ -1058,6 +1080,7 @@ tooltip : turnBlock:事件转向;自动检索faceIds helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 colour : this.mapColor default : [null,"","",""] +selectPoint : ["EvalString_1", "EvalString_2", "IdString_0"] var floorstr = ''; if (EvalString_0 && EvalString_1) { var pattern1 = MotaActionFunctions.pattern.id; @@ -1090,6 +1113,7 @@ showFloorImg_s tooltip : showFloorImg: 显示一个贴图,xy为左上角坐标,可用逗号分隔表示多个点 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be default : ["","",""] +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] colour : this.mapColor var floorstr = ''; if (EvalString_0 && EvalString_1) { @@ -1122,6 +1146,7 @@ tooltip : hideFloorImg: 隐藏一个贴图,xy为左上角坐标,可用逗号 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideFloorImg%ef%bc%9a%e9%9a%90%e8%97%8f%e8%b4%b4%e5%9b%be default : ["","",""] colour : this.mapColor +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] var floorstr = ''; if (EvalString_0 && EvalString_1) { var pattern1 = MotaActionFunctions.pattern.id; @@ -1152,6 +1177,7 @@ showBgFgMap_s tooltip : showBgFgMap: 显示图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be default : ["bg","","",""] +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] colour : this.mapColor var floorstr = ''; if (EvalString_0 && EvalString_1) { @@ -1184,6 +1210,7 @@ tooltip : hideBgFgMap: 隐藏图层块,即背景图层/前景图层的某些 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideFloorImg%ef%bc%9a%e9%9a%90%e8%97%8f%e8%b4%b4%e5%9b%be default : ["bg","","",""] colour : this.mapColor +selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] var floorstr = ''; if (EvalString_0 && EvalString_1) { var pattern1 = MotaActionFunctions.pattern.id; @@ -1214,6 +1241,7 @@ setBgFgBlock_s tooltip : setBgFgBlock:设置某个图层块,忽略坐标楼层则为当前点 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 colour : this.mapColor +selectPoint : ["EvalString_1", "EvalString_2", "IdString_0"] default : ["bg","yellowDoor","","",""] var floorstr = ''; if (EvalString_1 && EvalString_2) { @@ -1375,6 +1403,7 @@ openDoor_s tooltip : openDoor: 开门,楼层可不填表示当前层 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=opendoor%EF%BC%9A%E5%BC%80%E9%97%A8 default : ["","","",false,false] +selectPoint : ["PosString_0", "PosString_1", "IdString_0"] colour : this.mapColor IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"'); var floorstr = ''; @@ -1395,6 +1424,7 @@ closeDoor_s tooltip : closeDoor: 关门事件,需要该点本身无事件 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=opendoor%EF%BC%9A%E5%BC%80%E9%97%A8 default : ["","","yellowDoor",false] +selectPoint : ["PosString_0", "PosString_1"] colour : this.mapColor var floorstr = ''; if (PosString_0 && PosString_1) { @@ -1413,6 +1443,7 @@ changeFloor_s tooltip : changeFloor: 楼层切换,动画时间可不填 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changefloor%EF%BC%9A%E6%A5%BC%E5%B1%82%E5%88%87%E6%8D%A2 default : [null,"",null,"","",null,"",null] +selectPoint : ["PosString_0", "PosString_1", "IdString_0", true] colour : this.dataColor var toFloorId = IdString_0; if (Floor_List_0!='floorId') toFloorId = Floor_List_0; @@ -1438,6 +1469,7 @@ changePos_s tooltip : changePos: 当前位置切换 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changepos%EF%BC%9A%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE%E5%88%87%E6%8D%A2%E5%8B%87%E5%A3%AB%E8%BD%AC%E5%90%91 default : ["","",null] +selectPoint : ["PosString_0", "PosString_1"] colour : this.dataColor var loc = (PosString_0 && PosString_1) ? (', "loc": ['+PosString_0+','+PosString_1+']') : ''; if (DirectionEx_List_0 == 'null') DirectionEx_List_0 = ''; @@ -1562,6 +1594,7 @@ animate_s tooltip : animate:显示动画,位置填hero或者1,2形式的位置,或者不填代表当前事件点 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=animate%EF%BC%9A%E6%98%BE%E7%A4%BA%E5%8A%A8%E7%94%BB default : ["zone","hero",false,false] +selectPoint : ["EvalString_0", "EvalString_0"] colour : this.soundColor if (EvalString_0) { if(MotaActionFunctions.pattern.id2.test(EvalString_0)) { @@ -1588,6 +1621,7 @@ setViewport_s tooltip : setViewport: 设置视角 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changepos%EF%BC%9A%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE%E5%88%87%E6%8D%A2%E5%8B%87%E5%A3%AB%E8%BD%AC%E5%90%91 default : ["",""] +selectPoint : ["PosString_0", "PosString_1"] colour : this.soundColor var loc = ''; if (PosString_0 && PosString_1) { @@ -1662,6 +1696,7 @@ showTextImage_s /* showTextImage_s tooltip : showTextImage:显示图片化文本 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showTextImage%ef%bc%9a%e6%98%be%e7%a4%ba%e6%96%87%e6%9c%ac%e5%8c%96%e5%9b%be%e7%89%87 +doubleclicktext : EvalString_0 colour : this.printColor default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,1,0,false] if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); @@ -1790,6 +1825,7 @@ move_s tooltip : move: 让某个NPC/怪物移动,位置可不填代表当前事件 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=move%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AAnpc%E6%80%AA%E7%89%A9%E7%A7%BB%E5%8A%A8 default : ["","",500,false,false,"上右3下2后4左前2"] +selectPoint : ["PosString_0", "PosString_1"] colour : this.mapColor var floorstr = ''; if (PosString_0 && PosString_1) { @@ -1838,7 +1874,10 @@ jump_s tooltip : jump: 让某个NPC/怪物跳跃 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=jump%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AANPC%2F%E6%80%AA%E7%89%A9%E8%B7%B3%E8%B7%83 default : ["","","","",500,true,false] +selectPoint : ["PosString_2", "PosString_3"] colour : this.mapColor + +// selectPoint 跳跃暂时只考虑终点 var floorstr = ''; if (PosString_0 && PosString_1) { floorstr += ', "from": ['+PosString_0+','+PosString_1+']'; @@ -1861,6 +1900,7 @@ jumpHero_s tooltip : jumpHero: 跳跃勇士 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=jumpHero%EF%BC%9A%E8%B7%B3%E8%B7%83%E5%8B%87%E5%A3%AB default : ["","",500,false] +selectPoint : ["PosString_0", "PosString_1"] colour : this.dataColor var floorstr = ''; if (PosString_0 && PosString_1) { @@ -2107,6 +2147,7 @@ choices_s /* choices_s tooltip : choices: 给用户提供选项 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=choices%EF%BC%9A%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E9%80%89%E9%A1%B9 +doubleclicktext : EvalString_0 default : ["","流浪者","trader",0] var title=''; if (EvalString_1==''){ @@ -2148,6 +2189,7 @@ confirm_s tooltip : 弹出确认框 helpUrl : https://h5mota.com/games/template/_docs/#/ default : ["确认要xxx吗?",0,false] +doubleclicktext : EvalString_0 Bool_0 = Bool_0?', "default": true':'' Int_0 = Int_0 ? (', "timeout": '+Int_0) : ''; var code = ['{"type": "confirm"'+Int_0+Bool_0+', "text": "',EvalString_0,'",\n', @@ -2279,6 +2321,7 @@ waitContext_2 tooltip : wait: 等待用户操作并获得按键或点击信息 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=wait%EF%BC%9A%E7%AD%89%E5%BE%85%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C default : [0,32,0,32] +previewBlock : true colour : this.subColor var code = '{"case": "mouse", "px": [' + PosString_0 + ',' + PosString_1 + '], "py": [' + PosString_2 + ',' + PosString_3 + '], "action": [\n' + action_0 + ']},\n'; return code; @@ -2365,6 +2408,7 @@ previewUI_s /* previewUI_s tooltip : previewUI: ui绘制并预览 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=previewUI%ef%bc%9aUI%e7%bb%98%e5%88%b6%e5%b9%b6%e9%a2%84%e8%a7%88 +previewBlock : true var code = ['{"type": "previewUI", "action": [\n', action_0,']},\n'].join(''); return code; */; @@ -2378,6 +2422,7 @@ tooltip : clearMap: 清除画布 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=clearMap%ef%bc%9a%e6%b8%85%e9%99%a4%e7%94%bb%e5%b8%83 colour : this.subColor default : ["0", "0", "100", "100"] +previewBlock : true var code = '{"type": "clearMap", "x": ' + PosString_0 + ', "y": ' + PosString_1 + ', "width": ' + PosString_2 + ', "height": ' + PosString_3 + '},\n'; return code; @@ -2390,6 +2435,7 @@ clearMap_1_s /* clearMap_1_s tooltip : clearMap: 清除画布 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=clearMap%ef%bc%9a%e6%b8%85%e9%99%a4%e7%94%bb%e5%b8%83 +previewBlock : true colour : this.subColor var code = '{"type": "clearMap"},\n'; return code; @@ -2402,6 +2448,7 @@ setAttribute_s /* setAttribute_s tooltip : setAttribute:设置画布属性 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setAttribute%ef%bc%9a%e8%ae%be%e7%bd%ae%e7%94%bb%e5%b8%83%e5%b1%9e%e6%80%a7 +previewBlock : true colour : this.subColor default : ["","",'rgba(255,255,255,1)',"",'rgba(255,255,255,1)',"","",null,null,""] TextAlign_List_0 = TextAlign_List_0==='null'?'': ', "align": "'+TextAlign_List_0+'"'; @@ -2428,6 +2475,7 @@ fillText_s tooltip : fillText:绘制一行文本;可以设置最大宽度进行放缩 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillText%ef%bc%9a%e7%bb%98%e5%88%b6%e6%96%87%e6%9c%ac colour : this.subColor +previewBlock : true default : ["0","0","",'rgba(255,255,255,1)',"","","绘制一行文本"] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; FontString_0 = FontString_0 ? (', "font": "' + FontString_0 + '"') : ''; @@ -2443,6 +2491,7 @@ fillBoldText_s tooltip : fillBoldText:绘制一行描边文本 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillBoldText%ef%bc%9a%e7%bb%98%e5%88%b6%e6%8f%8f%e8%be%b9%e6%96%87%e6%9c%ac colour : this.subColor +previewBlock : true default : ["0","0","",'rgba(255,255,255,1)',"",'rgba(0,0,0,1)',"","绘制一行描边文本"] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; ColorString_1 = ColorString_1 ? (', "strokeStyle": ['+ColorString_1+']') : ''; @@ -2457,6 +2506,7 @@ drawTextContent_s /* drawTextContent_s tooltip : drawTextContent:绘制多行文本 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawTextContent%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%a1%8c%e6%96%87%e6%9c%ac +doubleclicktext : EvalString_0 colour : this.subColor default : ["绘制多行文本\\n可双击编辑","0","0","","",'rgba(255,255,255,1)',null,"","",false] TextAlign_List_0 = TextAlign_List_0==='null'?'': ', "align": "'+TextAlign_List_0+'"'; @@ -2476,6 +2526,7 @@ fillRect_s tooltip : fillRect:绘制矩形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2 colour : this.subColor +previewBlock : true default : ["0","0","flag:x","300","","",null] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; PosString_4 = PosString_4 ? (', "radius": '+PosString_4) : ''; @@ -2490,6 +2541,7 @@ strokeRect_s tooltip : strokeRect:绘制矩形边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2%e8%be%b9%e6%a1%86 colour : this.subColor +previewBlock : true default : ["0","0","flag:x","300","","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; @@ -2505,6 +2557,7 @@ drawLine_s tooltip : drawLine:绘制线段 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawLine%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ba%bf%e6%ae%b5 colour : this.subColor +previewBlock : true default : ["0","0","flag:x","300","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; @@ -2519,6 +2572,7 @@ drawArrow_s tooltip : drawArrow:绘制箭头 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawArrow%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ae%ad%e5%a4%b4 colour : this.subColor +previewBlock : true default : ["0","0","flag:x","300","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; @@ -2534,6 +2588,7 @@ fillPolygon_s tooltip : fillPolygon:绘制多边形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillPolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2 colour : this.subColor +previewBlock : true default : ["0,0,100","0,100,0","",null] var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/; if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式'); @@ -2554,6 +2609,7 @@ strokePolygon_s tooltip : strokePolygon:绘制多边形边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokePolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2%e8%be%b9%e6%a1%86 colour : this.subColor +previewBlock : true default : ["0,0,100","0,100,0","",null,""] var pattern2 = /^([+-]?\d+)(,[+-]?\d+)*$/; if(!pattern2.test(EvalString_0) || !pattern2.test(EvalString_1))throw new Error('坐标格式错误,请右键点击帮助查看格式'); @@ -2574,6 +2630,7 @@ fillEllipse_s tooltip : fillEllipse:绘制椭圆 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 colour : this.subColor +previewBlock : true default : ["0","0","100","100","0","",null] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; @@ -2588,6 +2645,7 @@ strokeEllipse_s tooltip : strokeEllipse:绘制椭圆边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86%e8%be%b9%e6%a1%86 colour : this.subColor +previewBlock : true default : ["0","0","100","100","0","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; @@ -2633,6 +2691,7 @@ drawImage_s /* drawImage_s tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 +previewBlock : true default : ["bg.jpg","null","0","0","",""] colour : this.subColor if (Reverse_List_0 && Reverse_List_0 != 'null') { @@ -2654,6 +2713,7 @@ tooltip : drawImage:绘制图片 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 default : ["bg.jpg","0","0","32","32","0","0","32","32"] colour : this.subColor +previewBlock : true if (Reverse_List_0 && Reverse_List_0 != 'null') { Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; } else Reverse_List_0 = ''; @@ -2671,6 +2731,7 @@ drawIcon_s tooltip : drawIcon:绘制图标 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawIcon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e6%a0%87 default : ["yellowKey",0,"0","0","",""] +previewBlock : true colour : this.subColor Int_0 = Int_0 ? (', "frame": '+Int_0) : ''; PosString_2 = PosString_2 ? (', "width": '+PosString_2) : ''; @@ -2688,6 +2749,7 @@ tooltip : drawBackground:绘制背景 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawBackground%ef%bc%9a%e7%bb%98%e5%88%b6%e8%83%8c%e6%99%af%e5%9b%be default : ["winskin.png",null,"0","0","100","100"] colour : this.subColor +previewBlock : true var colorRe = MotaActionFunctions.pattern.colorRe; if (colorRe.test(EvalString_0)) { EvalString_0 = ', "background": ['+EvalString_0+']'; @@ -2709,6 +2771,7 @@ drawSelector_s /* drawSelector_s tooltip : drawSelector:绘制闪烁光标 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawSelector%ef%bc%9a%e7%bb%98%e5%88%b6%e9%97%aa%e7%83%81%e5%85%89%e6%a0%87 +previewBlock : true default : ["winskin.png","1","0","0","100","100"] colour : this.subColor var code = '{"type": "drawSelector", "image": "'+EvalString_0+'", "code": '+Int_0+', "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+'},\n'; @@ -2723,6 +2786,7 @@ drawSelector_1_s tooltip : drawSelector:清除闪烁光标 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 default : ["1"] +previewBlock : true colour : this.subColor var code = '{"type": "drawSelector", "code": '+Int_0+'},\n'; return code; @@ -2753,6 +2817,7 @@ tooltip : 可双击多行编辑,请勿使用异步代码。常见API参见文 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=function%EF%BC%9A%E8%87%AA%E5%AE%9A%E4%B9%89js%E8%84%9A%E6%9C%AC default : [false,"alert(core.getStatus(\"atk\"));"] colour : this.dataColor +doubleclicktext : RawEvalString_0 Bool_0 = Bool_0?', "async": true':''; var code = '{"type": "function"'+Bool_0+', "function": "function(){\\n'+JSON.stringify(RawEvalString_0).slice(1,-1).split('\\\\n').join('\\n')+'\\n}"},\n'; return code; diff --git a/_server/blockly/Converter.bundle.min.js b/_server/blockly/Converter.bundle.min.js index 82b274ba..25aa6fe7 100644 --- a/_server/blockly/Converter.bundle.min.js +++ b/_server/blockly/Converter.bundle.min.js @@ -1 +1 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=32)}([function(t,e){function n(t){return"["+t.join(", ")+"]"}function r(t,e){return t.equals(e)}function i(t){return t.hashCode()}function o(t,e){return this.data={},this.hashFunction=t||i,this.equalsFunction=e||r,this}function s(){return this.data=[],this}function a(t,e){return this.data={},this.hashFunction=t||i,this.equalsFunction=e||r,this}function l(){return this.data={},this}function u(){return this}function c(){return this.count=0,this.hash=0,this}String.prototype.seed=String.prototype.seed||Math.round(Math.random()*Math.pow(2,32)),String.prototype.hashCode=function(){var t,e,n,r,i,o,s,a,l=this.toString();for(t=3&l.length,e=l.length-t,n=String.prototype.seed,i=3432918353,o=461845907,a=0;a>>16)*i&65535)<<16)&4294967295)<<15|s>>>17))*o+(((s>>>16)*o&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(r>>>16)&65535)<<16);switch(s=0,t){case 3:s^=(255&l.charCodeAt(a+2))<<16;case 2:s^=(255&l.charCodeAt(a+1))<<8;case 1:n^=s=(65535&(s=(s=(65535&(s^=255&l.charCodeAt(a)))*i+(((s>>>16)*i&65535)<<16)&4294967295)<<15|s>>>17))*o+(((s>>>16)*o&65535)<<16)&4294967295}return n^=l.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0},Object.defineProperty(o.prototype,"length",{get:function(){var t=0;for(var e in this.data)0===e.indexOf("hash_")&&(t+=this.data[e].length);return t}}),o.prototype.add=function(t){var e="hash_"+this.hashFunction(t);if(e in this.data){for(var n=this.data[e],r=0;r>>17,n*=461845907,this.count=this.count+1;var r=this.hash^n;r=5*(r=r<<13|r>>>19)+3864292196,this.hash=r}}},c.prototype.finish=function(){var t=this.hash^4*this.count;return t^=t>>>16,t*=2246822507,t^=t>>>13,t*=3266489909,t^=t>>>16},u.prototype.get=function(t,e){var n=this[t]||null;return null===n?null:n[e]||null},u.prototype.set=function(t,e,n){var r=this[t]||null;null===r&&(r={},this[t]=r),r[e]=n},e.Hash=c,e.Set=o,e.Map=a,e.BitSet=s,e.AltDict=l,e.DoubleDict=u,e.hashStuff=function(){var t=new c;return t.update.apply(arguments),t.finish()},e.escapeWhitespace=function(t,e){return t=(t=(t=t.replace("\t","\\t")).replace("\n","\\n")).replace("\r","\\r"),e&&(t=t.replace(" ","·")),t},e.arrayToString=n,e.titleCase=function(t){return t.replace(/\w\S*/g,function(t){return t.charAt(0).toUpperCase()+t.substr(1)})},e.equalArrays=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;if(t==e)return!0;if(t.length!=e.length)return!1;for(var n=0;n"},set:function(t){this._text=t}}),r.prototype.toString=function(){var t=this.text;return t=null!==t?t.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t"):"","[@"+this.tokenIndex+","+this.start+":"+this.stop+"='"+t+"',<"+this.type+">"+(this.channel>0?",channel="+this.channel:"")+","+this.line+":"+this.column+"]"},e.Token=n,e.CommonToken=r},function(t,e,n){var r=n(1).Token;function i(t,e){return this.start=t,this.stop=e,this}function o(){this.intervals=null,this.readOnly=!1}i.prototype.contains=function(t){return t>=this.start&&t=n.stop?(this.intervals.pop(t+1),this.reduce(t)):e.stop>=n.start&&(this.intervals[t]=new i(e.start,n.stop),this.intervals.pop(t+1))}},o.prototype.complement=function(t,e){var n=new o;n.addInterval(new i(t,e+1));for(var r=0;rr.start&&t.stop=r.stop?(this.intervals.splice(e,1),e-=1):t.start"):t.push("'"+String.fromCharCode(n.start)+"'"):t.push("'"+String.fromCharCode(n.start)+"'..'"+String.fromCharCode(n.stop-1)+"'")}return t.length>1?"{"+t.join(", ")+"}":t[0]},o.prototype.toIndexString=function(){for(var t=[],e=0;e"):t.push(n.start.toString()):t.push(n.start.toString()+".."+(n.stop-1).toString())}return t.length>1?"{"+t.join(", ")+"}":t[0]},o.prototype.toTokenString=function(t,e){for(var n=[],r=0;r1?"{"+n.join(", ")+"}":n[0]},o.prototype.elementName=function(t,e,n){return n===r.EOF?"":n===r.EPSILON?"":t[n]||e[n]},e.Interval=i,e.IntervalSet=o},function(t,e){function n(){return this.atn=null,this.stateNumber=n.INVALID_STATE_NUMBER,this.stateType=null,this.ruleIndex=0,this.epsilonOnlyTransitions=!1,this.transitions=[],this.nextTokenWithinRule=null,this}function r(){return n.call(this),this.stateType=n.BASIC,this}function i(){return n.call(this),this.decision=-1,this.nonGreedy=!1,this}function o(){return i.call(this),this.endState=null,this}function s(){return o.call(this),this.stateType=n.BLOCK_START,this}function a(){return n.call(this),this.stateType=n.BLOCK_END,this.startState=null,this}function l(){return n.call(this),this.stateType=n.RULE_STOP,this}function u(){return n.call(this),this.stateType=n.RULE_START,this.stopState=null,this.isPrecedenceRule=!1,this}function c(){return i.call(this),this.stateType=n.PLUS_LOOP_BACK,this}function h(){return o.call(this),this.stateType=n.PLUS_BLOCK_START,this.loopBackState=null,this}function p(){return o.call(this),this.stateType=n.STAR_BLOCK_START,this}function f(){return n.call(this),this.stateType=n.STAR_LOOP_BACK,this}function d(){return i.call(this),this.stateType=n.STAR_LOOP_ENTRY,this.loopBackState=null,this.isPrecedenceDecision=null,this}function y(){return n.call(this),this.stateType=n.LOOP_END,this.loopBackState=null,this}function g(){return i.call(this),this.stateType=n.TOKEN_START,this}n.INVALID_TYPE=0,n.BASIC=1,n.RULE_START=2,n.BLOCK_START=3,n.PLUS_BLOCK_START=4,n.STAR_BLOCK_START=5,n.TOKEN_START=6,n.RULE_STOP=7,n.BLOCK_END=8,n.STAR_LOOP_BACK=9,n.STAR_LOOP_ENTRY=10,n.PLUS_LOOP_BACK=11,n.LOOP_END=12,n.serializationNames=["INVALID","BASIC","RULE_START","BLOCK_START","PLUS_BLOCK_START","STAR_BLOCK_START","TOKEN_START","RULE_STOP","BLOCK_END","STAR_LOOP_BACK","STAR_LOOP_ENTRY","PLUS_LOOP_BACK","LOOP_END"],n.INVALID_STATE_NUMBER=-1,n.prototype.toString=function(){return this.stateNumber},n.prototype.equals=function(t){return t instanceof n&&this.stateNumber===t.stateNumber},n.prototype.isNonGreedyExitState=function(){return!1},n.prototype.addTransition=function(t,e){void 0===e&&(e=-1),0===this.transitions.length?this.epsilonOnlyTransitions=t.isEpsilon:this.epsilonOnlyTransitions!==t.isEpsilon&&(this.epsilonOnlyTransitions=!1),-1===e?this.transitions.push(t):this.transitions.splice(e,1,t)},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,i.prototype=Object.create(n.prototype),i.prototype.constructor=i,o.prototype=Object.create(i.prototype),o.prototype.constructor=o,s.prototype=Object.create(o.prototype),s.prototype.constructor=s,a.prototype=Object.create(n.prototype),a.prototype.constructor=a,l.prototype=Object.create(n.prototype),l.prototype.constructor=l,u.prototype=Object.create(n.prototype),u.prototype.constructor=u,c.prototype=Object.create(i.prototype),c.prototype.constructor=c,h.prototype=Object.create(o.prototype),h.prototype.constructor=h,p.prototype=Object.create(o.prototype),p.prototype.constructor=p,f.prototype=Object.create(n.prototype),f.prototype.constructor=f,d.prototype=Object.create(i.prototype),d.prototype.constructor=d,y.prototype=Object.create(n.prototype),y.prototype.constructor=y,g.prototype=Object.create(i.prototype),g.prototype.constructor=g,e.ATNState=n,e.BasicState=r,e.DecisionState=i,e.BlockStartState=o,e.BlockEndState=a,e.LoopEndState=y,e.RuleStartState=u,e.RuleStopState=l,e.TokensStartState=g,e.PlusLoopbackState=c,e.StarLoopbackState=f,e.StarLoopEntryState=d,e.PlusBlockStartState=h,e.StarBlockStartState=p,e.BasicBlockStartState=s},function(t,e,n){var r=n(1).Token,i=n(2).Interval,o=new i(-1,-2);n(0);function s(){return this}function a(){return s.call(this),this}function l(){return a.call(this),this}function u(){return l.call(this),this}function c(){return l.call(this),this}function h(){return c.call(this),this}function p(){return this}function f(){return this}function d(t){return c.call(this),this.parentCtx=null,this.symbol=t,this}function y(t){return d.call(this,t),this}function g(){return this}a.prototype=Object.create(s.prototype),a.prototype.constructor=a,l.prototype=Object.create(a.prototype),l.prototype.constructor=l,u.prototype=Object.create(l.prototype),u.prototype.constructor=u,c.prototype=Object.create(l.prototype),c.prototype.constructor=c,h.prototype=Object.create(c.prototype),h.prototype.constructor=h,p.prototype.visit=function(t){return Array.isArray(t)?t.map(function(t){return t.accept(this)},this):t.accept(this)},p.prototype.visitChildren=function(t){return this.visit(t.children)},p.prototype.visitTerminal=function(t){},p.prototype.visitErrorNode=function(t){},f.prototype.visitTerminal=function(t){},f.prototype.visitErrorNode=function(t){},f.prototype.enterEveryRule=function(t){},f.prototype.exitEveryRule=function(t){},d.prototype=Object.create(c.prototype),d.prototype.constructor=d,d.prototype.getChild=function(t){return null},d.prototype.getSymbol=function(){return this.symbol},d.prototype.getParent=function(){return this.parentCtx},d.prototype.getPayload=function(){return this.symbol},d.prototype.getSourceInterval=function(){if(null===this.symbol)return o;var t=this.symbol.tokenIndex;return new i(t,t)},d.prototype.getChildCount=function(){return 0},d.prototype.accept=function(t){return t.visitTerminal(this)},d.prototype.getText=function(){return this.symbol.text},d.prototype.toString=function(){return this.symbol.type===r.EOF?"":this.symbol.text},y.prototype=Object.create(d.prototype),y.prototype.constructor=y,y.prototype.isErrorNode=function(){return!0},y.prototype.accept=function(t){return t.visitErrorNode(this)},g.prototype.walk=function(t,e){if(e instanceof h||void 0!==e.isErrorNode&&e.isErrorNode())t.visitErrorNode(e);else if(e instanceof c)t.visitTerminal(e);else{this.enterRule(t,e);for(var n=0;n=0&&this.startIndexe.returnState&&(f[0]=e.returnState,f[1]=t.returnState);var d=[p,p],y=new u(d,f);return null!==r&&r.set(t,e,y),y}var f=[t.returnState,e.returnState],d=[t.parentCtx,e.parentCtx];t.returnState>e.returnState&&(f[0]=e.returnState,f[1]=t.returnState,d=[e.parentCtx,t.parentCtx]);var g=new u(d,f);return null!==r&&r.set(t,e,g),g}(t,e,n,r);if(n){if(t instanceof l)return t;if(e instanceof l)return e}return t instanceof a&&(t=new u([t.getParent()],[t.returnState])),e instanceof a&&(e=new u([e.getParent()],[e.returnState])),function(t,e,n,r){if(null!==r){var i=r.get(t,e);if(null!==i)return i;if(null!==(i=r.get(e,t)))return i}var s=0,l=0,h=0,p=[],f=[];for(;s0&&(t+=", "),this.returnStates[e]!==o.EMPTY_RETURN_STATE?(t+=this.returnStates[e],null!==this.parents[e]?t=t+" "+this.parents[e]:t+="null"):t+="$";return t+"]"},e.merge=c,e.PredictionContext=o,e.PredictionContextCache=s,e.SingletonPredictionContext=a,e.predictionContextFromRuleContext=function t(e,n){if(void 0!==n&&null!==n||(n=r.EMPTY),null===n.parentCtx||n===r.EMPTY)return o.EMPTY;var i=t(e,n.parentCtx),s=e.states[n.invokingState].transitions[0];return a.create(i,s.followState.stateNumber)},e.getCachedPredictionContext=function t(e,n,r){if(e.isEmpty())return e;var i=r[e]||null;if(null!==i)return i;if(null!==(i=n.get(e)))return r[e]=i,i;for(var s=!1,l=[],c=0;c=this.states.length)throw"Invalid state number.";var n=this.states[t],r=this.nextTokens(n);if(!r.contains(s.EPSILON))return r;var o=new i;for(o.addSet(r),o.removeOne(s.EPSILON);null!==e&&e.invokingState>=0&&r.contains(s.EPSILON);){var a=this.states[e.invokingState].transitions[0];r=this.nextTokens(a.followState),o.addSet(r),o.removeOne(s.EPSILON),e=e.parentCtx}return r.contains(s.EPSILON)&&o.addOne(s.EOF),o},o.INVALID_ALT_NUMBER=0,e.ATN=o},function(t,e,n){var r=n(1).Token,i=(n(2).Interval,n(2).IntervalSet),o=n(10).Predicate,s=n(10).PrecedencePredicate;function a(t){if(void 0===t||null===t)throw"target cannot be null.";return this.target=t,this.isEpsilon=!1,this.label=null,this}function l(t,e){return a.call(this,t),this.label_=e,this.label=this.makeLabel(),this.serializationType=a.ATOM,this}function u(t,e,n,r){return a.call(this,t),this.ruleIndex=e,this.precedence=n,this.followState=r,this.serializationType=a.RULE,this.isEpsilon=!0,this}function c(t,e){return a.call(this,t),this.serializationType=a.EPSILON,this.isEpsilon=!0,this.outermostPrecedenceReturn=e,this}function h(t,e,n){return a.call(this,t),this.serializationType=a.RANGE,this.start=e,this.stop=n,this.label=this.makeLabel(),this}function p(t){return a.call(this,t),this}function f(t,e,n,r){return p.call(this,t),this.serializationType=a.PREDICATE,this.ruleIndex=e,this.predIndex=n,this.isCtxDependent=r,this.isEpsilon=!0,this}function d(t,e,n,r){return a.call(this,t),this.serializationType=a.ACTION,this.ruleIndex=e,this.actionIndex=void 0===n?-1:n,this.isCtxDependent=void 0!==r&&r,this.isEpsilon=!0,this}function y(t,e){return a.call(this,t),this.serializationType=a.SET,void 0!==e&&null!==e?this.label=e:(this.label=new i,this.label.addOne(r.INVALID_TYPE)),this}function g(t,e){return y.call(this,t,e),this.serializationType=a.NOT_SET,this}function v(t){return a.call(this,t),this.serializationType=a.WILDCARD,this}function x(t,e){return p.call(this,t),this.serializationType=a.PRECEDENCE,this.precedence=e,this.isEpsilon=!0,this}a.EPSILON=1,a.RANGE=2,a.RULE=3,a.PREDICATE=4,a.ATOM=5,a.ACTION=6,a.SET=7,a.NOT_SET=8,a.WILDCARD=9,a.PRECEDENCE=10,a.serializationNames=["INVALID","EPSILON","RANGE","RULE","PREDICATE","ATOM","ACTION","SET","NOT_SET","WILDCARD","PRECEDENCE"],a.serializationTypes={EpsilonTransition:a.EPSILON,RangeTransition:a.RANGE,RuleTransition:a.RULE,PredicateTransition:a.PREDICATE,AtomTransition:a.ATOM,ActionTransition:a.ACTION,SetTransition:a.SET,NotSetTransition:a.NOT_SET,WildcardTransition:a.WILDCARD,PrecedencePredicateTransition:a.PRECEDENCE},l.prototype=Object.create(a.prototype),l.prototype.constructor=l,l.prototype.makeLabel=function(){var t=new i;return t.addOne(this.label_),t},l.prototype.matches=function(t,e,n){return this.label_===t},l.prototype.toString=function(){return this.label_},u.prototype=Object.create(a.prototype),u.prototype.constructor=u,u.prototype.matches=function(t,e,n){return!1},c.prototype=Object.create(a.prototype),c.prototype.constructor=c,c.prototype.matches=function(t,e,n){return!1},c.prototype.toString=function(){return"epsilon"},h.prototype=Object.create(a.prototype),h.prototype.constructor=h,h.prototype.makeLabel=function(){var t=new i;return t.addRange(this.start,this.stop),t},h.prototype.matches=function(t,e,n){return t>=this.start&&t<=this.stop},h.prototype.toString=function(){return"'"+String.fromCharCode(this.start)+"'..'"+String.fromCharCode(this.stop)+"'"},p.prototype=Object.create(a.prototype),p.prototype.constructor=p,f.prototype=Object.create(p.prototype),f.prototype.constructor=f,f.prototype.matches=function(t,e,n){return!1},f.prototype.getPredicate=function(){return new o(this.ruleIndex,this.predIndex,this.isCtxDependent)},f.prototype.toString=function(){return"pred_"+this.ruleIndex+":"+this.predIndex},d.prototype=Object.create(a.prototype),d.prototype.constructor=d,d.prototype.matches=function(t,e,n){return!1},d.prototype.toString=function(){return"action_"+this.ruleIndex+":"+this.actionIndex},y.prototype=Object.create(a.prototype),y.prototype.constructor=y,y.prototype.matches=function(t,e,n){return this.label.contains(t)},y.prototype.toString=function(){return this.label.toString()},g.prototype=Object.create(y.prototype),g.prototype.constructor=g,g.prototype.matches=function(t,e,n){return t>=e&&t<=n&&!y.prototype.matches.call(this,t,e,n)},g.prototype.toString=function(){return"~"+y.prototype.toString.call(this)},v.prototype=Object.create(a.prototype),v.prototype.constructor=v,v.prototype.matches=function(t,e,n){return t>=e&&t<=n},v.prototype.toString=function(){return"."},x.prototype=Object.create(p.prototype),x.prototype.constructor=x,x.prototype.matches=function(t,e,n){return!1},x.prototype.getPredicate=function(){return new s(this.precedence)},x.prototype.toString=function(){return this.precedence+" >= _p"},e.Transition=a,e.AtomTransition=l,e.SetTransition=y,e.NotSetTransition=g,e.RuleTransition=u,e.ActionTransition=d,e.EpsilonTransition=c,e.RangeTransition=h,e.WildcardTransition=v,e.PredicateTransition=f,e.PrecedencePredicateTransition=x,e.AbstractPredicateTransition=p},function(t,e,n){var r=n(7).ATN,i=n(0),o=i.Hash,s=i.Set,a=n(10).SemanticContext,l=n(6).merge;function u(t){return t.hashCodeForConfigSet()}function c(t,e){return t===e||null!==t&&null!==e&&t.equalsForConfigSet(e)}function h(t){return this.configLookup=new s(u,c),this.fullCtx=void 0===t||t,this.readOnly=!1,this.configs=[],this.uniqueAlt=0,this.conflictingAlts=null,this.hasSemanticContext=!1,this.dipsIntoOuterContext=!1,this.cachedHashCode=-1,this}function p(){return h.call(this),this.configLookup=new s,this}h.prototype.add=function(t,e){if(void 0===e&&(e=null),this.readOnly)throw"This set is readonly";t.semanticContext!==a.NONE&&(this.hasSemanticContext=!0),t.reachesIntoOuterContext>0&&(this.dipsIntoOuterContext=!0);var n=this.configLookup.add(t);if(n===t)return this.cachedHashCode=-1,this.configs.push(t),!0;var r=!this.fullCtx,i=l(n.context,t.context,r,e);return n.reachesIntoOuterContext=Math.max(n.reachesIntoOuterContext,t.reachesIntoOuterContext),t.precedenceFilterSuppressed&&(n.precedenceFilterSuppressed=!0),n.context=i,!0},h.prototype.getStates=function(){for(var t=new s,e=0;e0){var s=null;i.map(function(t){(null===s||t.precedence0){var s=i.sort(function(t,e){return t.compareTo(e)}),l=s[s.length-1];n.add(l)}return this.opnds=n.values(),this}o.prototype.hashCode=function(){var t=new i;return this.updateHashCode(t),t.finish()},o.prototype.evaluate=function(t,e){},o.prototype.evalPrecedence=function(t,e){return this},o.andContext=function(t,e){if(null===t||t===o.NONE)return e;if(null===e||e===o.NONE)return t;var n=new l(t,e);return 1===n.opnds.length?n.opnds[0]:n},o.orContext=function(t,e){if(null===t)return e;if(null===e)return t;if(t===o.NONE||e===o.NONE)return o.NONE;var n=new u(t,e);return 1===n.opnds.length?n.opnds[0]:n},s.prototype=Object.create(o.prototype),s.prototype.constructor=s,o.NONE=new s,s.prototype.evaluate=function(t,e){var n=this.isCtxDependent?e:null;return t.sempred(n,this.ruleIndex,this.predIndex)},s.prototype.updateHashCode=function(t){t.update(this.ruleIndex,this.predIndex,this.isCtxDependent)},s.prototype.equals=function(t){return this===t||t instanceof s&&(this.ruleIndex===t.ruleIndex&&this.predIndex===t.predIndex&&this.isCtxDependent===t.isCtxDependent)},s.prototype.toString=function(){return"{"+this.ruleIndex+":"+this.predIndex+"}?"},a.prototype=Object.create(o.prototype),a.prototype.constructor=a,a.prototype.evaluate=function(t,e){return t.precpred(e,this.precedence)},a.prototype.evalPrecedence=function(t,e){return t.precpred(e,this.precedence)?o.NONE:null},a.prototype.compareTo=function(t){return this.precedence-t.precedence},a.prototype.updateHashCode=function(t){t.update(31)},a.prototype.equals=function(t){return this===t||t instanceof a&&this.precedence===t.precedence},a.prototype.toString=function(){return"{"+this.precedence+">=prec}?"},a.filterPrecedencePredicates=function(t){var e=[];return t.values().map(function(t){t instanceof a&&e.push(t)}),e},l.prototype=Object.create(o.prototype),l.prototype.constructor=l,l.prototype.equals=function(t){return this===t||t instanceof l&&this.opnds===t.opnds},l.prototype.updateHashCode=function(t){t.update(this.opnds,"AND")},l.prototype.evaluate=function(t,e){for(var n=0;n3?t.slice(3):t},u.prototype=Object.create(o.prototype),u.prototype.constructor=u,u.prototype.constructor=function(t){return this===t||t instanceof u&&this.opnds===t.opnds},u.prototype.updateHashCode=function(t){t.update(this.opnds,"OR")},u.prototype.evaluate=function(t,e){for(var n=0;n3?t.slice(3):t},e.SemanticContext=o,e.PrecedencePredicate=a,e.Predicate=s},function(t,e,n){var r=n(9).ATNConfigSet,i=n(0),o=i.Hash,s=i.Set;function a(t,e){return this.alt=e,this.pred=t,this}function l(t,e){return null===t&&(t=-1),null===e&&(e=new r),this.stateNumber=t,this.configs=e,this.edges=null,this.isAcceptState=!1,this.prediction=0,this.lexerActionExecutor=null,this.requiresFullContext=!1,this.predicates=null,this}a.prototype.toString=function(){return"("+this.pred+", "+this.alt+")"},l.prototype.getAltSet=function(){var t=new s;if(null!==this.configs)for(var e=0;e0?",up="+this.reachesIntoOuterContext:"")+")"},l.prototype=Object.create(a.prototype),l.prototype.constructor=l,l.prototype.updateHashCode=function(t){t.update(this.state.stateNumber,this.alt,this.context,this.semanticContext,this.passedThroughNonGreedyDecision,this.lexerActionExecutor)},l.prototype.equals=function(t){return this===t||t instanceof l&&this.passedThroughNonGreedyDecision==t.passedThroughNonGreedyDecision&&(this.lexerActionExecutor?this.lexerActionExecutor.equals(t.lexerActionExecutor):!t.lexerActionExecutor)&&a.prototype.equals.call(this,t)},l.prototype.hashCodeForConfigSet=l.prototype.hashCode,l.prototype.equalsForConfigSet=l.prototype.equals,l.prototype.checkNonGreedyDecision=function(t,e){return t.passedThroughNonGreedyDecision||e instanceof r&&e.nonGreedy},e.ATNConfig=a,e.LexerATNConfig=l},function(t,e,n){var r=n(4).RuleNode,i=n(4).INVALID_INTERVAL,o=n(7).INVALID_ALT_NUMBER;function s(t,e){return r.call(this),this.parentCtx=t||null,this.invokingState=e||-1,this}s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.prototype.depth=function(){for(var t=0,e=this;null!==e;)e=e.parentCtx,t+=1;return t},s.prototype.isEmpty=function(){return-1===this.invokingState},s.prototype.getSourceInterval=function(){return i},s.prototype.getRuleContext=function(){return this},s.prototype.getPayload=function(){return this},s.prototype.getText=function(){return 0===this.getChildCount()?"":this.children.map(function(t){return t.getText()}).join("")},s.prototype.getAltNumber=function(){return o},s.prototype.setAltNumber=function(t){},s.prototype.getChild=function(t){return null},s.prototype.getChildCount=function(){return 0},s.prototype.accept=function(t){return t.visitChildren(this)},e.RuleContext=s;var a=n(21).Trees;s.prototype.toStringTree=function(t,e){return a.toStringTree(this,t,e)},s.prototype.toString=function(t,e){t=t||null,e=e||null;for(var n=this,r="[";null!==n&&n!==e;){if(null===t)n.isEmpty()||(r+=n.invokingState);else{var i=n.ruleIndex;r+=i>=0&&i":"\n"===t?"\\n":"\t"===t?"\\t":"\r"===t?"\\r":t},l.prototype.getCharErrorDisplay=function(t){return"'"+this.getErrorDisplayForChar(t)+"'"},l.prototype.recover=function(t){this._input.LA(1)!==r.EOF&&(t instanceof a?this._interp.consume(this._input):this._input.consume())},e.Lexer=l},function(t,e){function n(){return this}function r(){return n.call(this),this}function i(t){if(n.call(this),null===t)throw"delegates";return this.delegates=t,this}n.prototype.syntaxError=function(t,e,n,r,i,o){},n.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){},n.prototype.reportAttemptingFullContext=function(t,e,n,r,i,o){},n.prototype.reportContextSensitivity=function(t,e,n,r,i,o){},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.INSTANCE=new r,r.prototype.syntaxError=function(t,e,n,r,i,o){console.error("line "+n+":"+r+" "+i)},i.prototype=Object.create(n.prototype),i.prototype.constructor=i,i.prototype.syntaxError=function(t,e,n,r,i,o){this.delegates.map(function(s){s.syntaxError(t,e,n,r,i,o)})},i.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){this.delegates.map(function(a){a.reportAmbiguity(t,e,n,r,i,o,s)})},i.prototype.reportAttemptingFullContext=function(t,e,n,r,i,o){this.delegates.map(function(s){s.reportAttemptingFullContext(t,e,n,r,i,o)})},i.prototype.reportContextSensitivity=function(t,e,n,r,i,o){this.delegates.map(function(s){s.reportContextSensitivity(t,e,n,r,i,o)})},e.ErrorListener=n,e.ConsoleErrorListener=r,e.ProxyErrorListener=i},function(t,e){function n(t,e,n){return this.dfa=t,this.literalNames=e||[],this.symbolicNames=n||[],this}function r(t){return n.call(this,t,null),this}n.prototype.toString=function(){if(null===this.dfa.s0)return null;for(var t="",e=this.dfa.sortedStates(),n=0;n")).concat(this.getStateString(s))).concat("\n"))}}return 0===t.length?null:t},n.prototype.getEdgeLabel=function(t){return 0===t?"EOF":null!==this.literalNames||null!==this.symbolicNames?this.literalNames[t-1]||this.symbolicNames[t-1]:String.fromCharCode(t-1)},n.prototype.getStateString=function(t){var e=(t.isAcceptState?":":"")+"s"+t.stateNumber+(t.requiresFullContext?"^":"");return t.isAcceptState?null!==t.predicates?e+"=>"+t.predicates.toString():e+"=>"+t.prediction.toString():e},r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.getEdgeLabel=function(t){return"'"+String.fromCharCode(t)+"'"},e.DFASerializer=n,e.LexerDFASerializer=r},function(t,e,n){var r=n(14).RuleContext,i=n(4),o=i.INVALID_INTERVAL,s=i.TerminalNode,a=i.TerminalNodeImpl,l=i.ErrorNodeImpl,u=n(2).Interval;function c(t,e){t=t||null,e=e||null,r.call(this,t,e),this.ruleIndex=-1,this.children=null,this.start=null,this.stop=null,this.exception=null}function h(t,e,n){return c.call(t,e),this.ruleIndex=n,this}c.prototype=Object.create(r.prototype),c.prototype.constructor=c,c.prototype.copyFrom=function(t){this.parentCtx=t.parentCtx,this.invokingState=t.invokingState,this.children=null,this.start=t.start,this.stop=t.stop,t.children&&(this.children=[],t.children.map(function(t){t instanceof l&&(this.children.push(t),t.parentCtx=this)},this))},c.prototype.enterRule=function(t){},c.prototype.exitRule=function(t){},c.prototype.addChild=function(t){return null===this.children&&(this.children=[]),this.children.push(t),t},c.prototype.removeLastChild=function(){null!==this.children&&this.children.pop()},c.prototype.addTokenNode=function(t){var e=new a(t);return this.addChild(e),e.parentCtx=this,e},c.prototype.addErrorNode=function(t){var e=new l(t);return this.addChild(e),e.parentCtx=this,e},c.prototype.getChild=function(t,e){if(e=e||null,null===this.children||t<0||t>=this.children.length)return null;if(null===e)return this.children[t];for(var n=0;n=this.children.length)return null;for(var n=0;n=this._size)throw"cannot consume EOF";this._index+=1},i.prototype.LA=function(t){if(0===t)return 0;t<0&&(t+=1);var e=this._index+t-1;return e<0||e>=this._size?r.EOF:this.data[e]},i.prototype.LT=function(t){return this.LA(t)},i.prototype.mark=function(){return-1},i.prototype.release=function(t){},i.prototype.seek=function(t){t<=this._index?this._index=t:this._index=Math.min(t,this._size)},i.prototype.getText=function(t,e){if(e>=this._size&&(e=this._size-1),t>=this._size)return"";if(this.decodeToUnicodeCodePoints){for(var n="",r=t;r<=e;r++)n+=String.fromCodePoint(this.data[r]);return n}return this.strdata.slice(t,e+1)},i.prototype.toString=function(){return this.strdata},e.InputStream=i},function(t,e,n){var r=n(12);function i(){return r.tree.ParseTreeVisitor.call(this),this}i.prototype=Object.create(r.tree.ParseTreeVisitor.prototype),i.prototype.constructor=i,i.prototype.visitGrammarFile=function(t){return this.visitChildren(t)},i.prototype.visitGrammerDecl=function(t){return this.visitChildren(t)},i.prototype.visitStatExprSplit=function(t){return this.visitChildren(t)},i.prototype.visitStatList=function(t){return this.visitChildren(t)},i.prototype.visitStatValue=function(t){return this.visitChildren(t)},i.prototype.visitExprExpression=function(t){return this.visitChildren(t)},i.prototype.visitExprValue=function(t){return this.visitChildren(t)},i.prototype.visitArithmeticRuleCollection=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomExpr=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomParserId=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomLexerId=function(t){return this.visitChildren(t)},i.prototype.visitParserAtomStr=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleCollection=function(t){return this.visitChildren(t)},i.prototype.visitMeaningfulSplit=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleStrings=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleList=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleComplex=function(t){return this.visitChildren(t)},i.prototype.visitStrings=function(t){return this.visitChildren(t)},i.prototype.visitLexerRuleExpr=function(t){return this.visitChildren(t)},e.BlocklyGrammerVisitor=i},function(t,e,n){var r=n(0),i=n(1).Token,o=(n(4).RuleNode,n(4).ErrorNode),s=n(4).TerminalNode,a=n(18).ParserRuleContext,l=n(14).RuleContext,u=n(7).INVALID_ALT_NUMBER;function c(){}c.toStringTree=function(t,e,n){e=e||null,null!==(n=n||null)&&(e=n.ruleNames);var i=c.getNodeText(t,e);i=r.escapeWhitespace(i,!1);var o=t.getChildCount();if(0===o)return i;var s="("+i+" ";o>0&&(i=c.toStringTree(t.getChild(0),e),s=s.concat(i));for(var a=1;a=n},W.prototype.deserialize=function(t){this.reset(t),this.checkVersion(),this.checkUUID();var e=this.readATN();this.readStates(e),this.readRules(e),this.readModes(e);var n=[];return this.readSets(e,n,this.readInt.bind(this)),this.isFeatureSupported(Y,this.uuid)&&this.readSets(e,n,this.readInt32.bind(this)),this.readEdges(e,n),this.readDecisions(e),this.readLexerActions(e),this.markPrecedenceDecisions(e),this.verifyATN(e),this.deserializationOptions.generateRuleBypassTransitions&&e.grammarType===o.PARSER&&(this.generateRuleBypassTransitions(e),this.verifyATN(e)),e},W.prototype.reset=function(t){var e=t.split("").map(function(t){var e=t.charCodeAt(0);return e>1?e-2:-1});e[0]=t.charCodeAt(0),this.data=e,this.pos=0},W.prototype.checkVersion=function(){var t=this.readInt();if(3!==t)throw"Could not deserialize ATN with version "+t+" (expected 3)."},W.prototype.checkUUID=function(){var t=this.readUUID();if(K.indexOf(t)<0)throw"59627784-3BE5-417A-B9EB-8131A7286089";this.uuid=t},W.prototype.readATN=function(){var t=this.readInt(),e=this.readInt();return new i(t,e)},W.prototype.readStates=function(t){for(var e,n,r,i=[],o=[],s=this.readInt(),l=0;l0;)i.addTransition(p.transitions[f-1]),p.transitions=p.transitions.slice(-1);t.ruleToStartState[e].addTransition(new N(i)),o.addTransition(new N(a));var d=new l;t.addState(d),d.addTransition(new C(o,t.ruleToTokenType[e])),i.addTransition(new N(d))},W.prototype.stateIsEndStateFor=function(t,e){if(t.ruleIndex!==e)return null;if(!(t instanceof x))return null;var n=t.transitions[t.transitions.length-1].target;return n instanceof p&&n.epsilonOnlyTransitions&&n.transitions[0].target instanceof d?t:null},W.prototype.markPrecedenceDecisions=function(t){for(var e=0;e=0):this.checkCondition(n.transitions.length<=1||n instanceof d)}},W.prototype.checkCondition=function(t,e){if(!t)throw void 0!==e&&null!==e||(e="IllegalState"),e},W.prototype.readInt=function(){return this.data[this.pos++]},W.prototype.readInt32=function(){return this.readInt()|this.readInt()<<16},W.prototype.readLong=function(){return 4294967295&this.readInt32()|this.readInt32()<<32};var X=function(){for(var t=[],e=0;e<256;e++)t[e]=(e+256).toString(16).substr(1).toUpperCase();return t}();W.prototype.readUUID=function(){for(var t=[],e=7;e>=0;e--){var n=this.readInt();t[2*e+1]=255&n,t[2*e]=n>>8&255}return X[t[0]]+X[t[1]]+X[t[2]]+X[t[3]]+"-"+X[t[4]]+X[t[5]]+"-"+X[t[6]]+X[t[7]]+"-"+X[t[8]]+X[t[9]]+"-"+X[t[10]]+X[t[11]]+X[t[12]]+X[t[13]]+X[t[14]]+X[t[15]]},W.prototype.edgeFactory=function(t,e,n,i,o,s,a,l){var u=t.states[i];switch(e){case E.EPSILON:return new N(u);case E.RANGE:return new R(u,0!==a?r.EOF:o,s);case E.RULE:return new b(t.states[o],s,a,u);case E.PREDICATE:return new O(u,o,s,0!==a);case E.PRECEDENCE:return new P(u,o);case E.ATOM:return new C(u,0!==a?r.EOF:o);case E.ACTION:return new L(u,o,s,0!==a);case E.SET:return new A(u,l[o]);case E.NOT_SET:return new k(u,l[o]);case E.WILDCARD:return new I(u);default:throw"The specified transition type: "+e+" is not valid."}},W.prototype.stateFactory=function(t,e){if(null===this.stateFactories){var n=[];n[a.INVALID_TYPE]=null,n[a.BASIC]=function(){return new l},n[a.RULE_START]=function(){return new f},n[a.BLOCK_START]=function(){return new T},n[a.PLUS_BLOCK_START]=function(){return new m},n[a.STAR_BLOCK_START]=function(){return new _},n[a.TOKEN_START]=function(){return new y},n[a.RULE_STOP]=function(){return new d},n[a.BLOCK_END]=function(){return new h},n[a.STAR_LOOP_BACK]=function(){return new v},n[a.STAR_LOOP_ENTRY]=function(){return new x},n[a.PLUS_LOOP_BACK]=function(){return new g},n[a.LOOP_END]=function(){return new p},this.stateFactories=n}if(t>this.stateFactories.length||null===this.stateFactories[t])throw"The specified state type "+t+" is not valid.";var r=this.stateFactories[t]();if(null!==r)return r.ruleIndex=e,r},W.prototype.lexerActionFactory=function(t,e,n){if(null===this.actionFactories){var r=[];r[j.CHANNEL]=function(t,e){return new B(t)},r[j.CUSTOM]=function(t,e){return new U(t,e)},r[j.MODE]=function(t,e){return new G(t)},r[j.MORE]=function(t,e){return V.INSTANCE},r[j.POP_MODE]=function(t,e){return q.INSTANCE},r[j.PUSH_MODE]=function(t,e){return new z(t)},r[j.SKIP]=function(t,e){return M.INSTANCE},r[j.TYPE]=function(t,e){return new H(t)},this.actionFactories=r}if(t>this.actionFactories.length||null===this.actionFactories[t])throw"The specified lexer action type "+t+" is not valid.";return this.actionFactories[t](e,n)},e.ATNDeserializer=W},function(t,e){function n(t){return void 0===t&&(t=null),this.readOnly=!1,this.verifyATN=null===t||t.verifyATN,this.generateRuleBypassTransitions=null!==t&&t.generateRuleBypassTransitions,this}n.defaultOptions=new n,n.defaultOptions.readOnly=!0,e.ATNDeserializationOptions=n},function(t,e){function n(){}function r(t){return this.actionType=t,this.isPositionDependent=!1,this}function i(){return r.call(this,n.SKIP),this}function o(t){return r.call(this,n.TYPE),this.type=t,this}function s(t){return r.call(this,n.PUSH_MODE),this.mode=t,this}function a(){return r.call(this,n.POP_MODE),this}function l(){return r.call(this,n.MORE),this}function u(t){return r.call(this,n.MODE),this.mode=t,this}function c(t,e){return r.call(this,n.CUSTOM),this.ruleIndex=t,this.actionIndex=e,this.isPositionDependent=!0,this}function h(t){return r.call(this,n.CHANNEL),this.channel=t,this}function p(t,e){return r.call(this,e.actionType),this.offset=t,this.action=e,this.isPositionDependent=!0,this}n.CHANNEL=0,n.CUSTOM=1,n.MODE=2,n.MORE=3,n.POP_MODE=4,n.PUSH_MODE=5,n.SKIP=6,n.TYPE=7,r.prototype.hashCode=function(){var t=new Hash;return this.updateHashCode(t),t.finish()},r.prototype.updateHashCode=function(t){t.update(this.actionType)},r.prototype.equals=function(t){return this===t},i.prototype=Object.create(r.prototype),i.prototype.constructor=i,i.INSTANCE=new i,i.prototype.execute=function(t){t.skip()},i.prototype.toString=function(){return"skip"},o.prototype=Object.create(r.prototype),o.prototype.constructor=o,o.prototype.execute=function(t){t.type=this.type},o.prototype.updateHashCode=function(t){t.update(this.actionType,this.type)},o.prototype.equals=function(t){return this===t||t instanceof o&&this.type===t.type},o.prototype.toString=function(){return"type("+this.type+")"},s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.prototype.execute=function(t){t.pushMode(this.mode)},s.prototype.updateHashCode=function(t){t.update(this.actionType,this.mode)},s.prototype.equals=function(t){return this===t||t instanceof s&&this.mode===t.mode},s.prototype.toString=function(){return"pushMode("+this.mode+")"},a.prototype=Object.create(r.prototype),a.prototype.constructor=a,a.INSTANCE=new a,a.prototype.execute=function(t){t.popMode()},a.prototype.toString=function(){return"popMode"},l.prototype=Object.create(r.prototype),l.prototype.constructor=l,l.INSTANCE=new l,l.prototype.execute=function(t){t.more()},l.prototype.toString=function(){return"more"},u.prototype=Object.create(r.prototype),u.prototype.constructor=u,u.prototype.execute=function(t){t.mode(this.mode)},u.prototype.updateHashCode=function(t){t.update(this.actionType,this.mode)},u.prototype.equals=function(t){return this===t||t instanceof u&&this.mode===t.mode},u.prototype.toString=function(){return"mode("+this.mode+")"},c.prototype=Object.create(r.prototype),c.prototype.constructor=c,c.prototype.execute=function(t){t.action(null,this.ruleIndex,this.actionIndex)},c.prototype.updateHashCode=function(t){t.update(this.actionType,this.ruleIndex,this.actionIndex)},c.prototype.equals=function(t){return this===t||t instanceof c&&(this.ruleIndex===t.ruleIndex&&this.actionIndex===t.actionIndex)},h.prototype=Object.create(r.prototype),h.prototype.constructor=h,h.prototype.execute=function(t){t._channel=this.channel},h.prototype.updateHashCode=function(t){t.update(this.actionType,this.channel)},h.prototype.equals=function(t){return this===t||t instanceof h&&this.channel===t.channel},h.prototype.toString=function(){return"channel("+this.channel+")"},p.prototype=Object.create(r.prototype),p.prototype.constructor=p,p.prototype.execute=function(t){this.action.execute(t)},p.prototype.updateHashCode=function(t){t.update(this.actionType,this.offset,this.action)},p.prototype.equals=function(t){return this===t||t instanceof p&&(this.offset===t.offset&&this.action===t.action)},e.LexerActionType=n,e.LexerSkipAction=i,e.LexerChannelAction=h,e.LexerCustomAction=c,e.LexerIndexedCustomAction=p,e.LexerMoreAction=l,e.LexerTypeAction=o,e.LexerPushModeAction=s,e.LexerPopModeAction=a,e.LexerModeAction=u},function(t,e,n){var r=n(1).Token,i=n(16).ConsoleErrorListener,o=n(16).ProxyErrorListener;function s(){return this._listeners=[i.INSTANCE],this._interp=null,this._stateNumber=-1,this}s.tokenTypeMapCache={},s.ruleIndexMapCache={},s.prototype.checkVersion=function(t){"4.7"!==t&&console.log("ANTLR runtime and generated code versions disagree: 4.7!="+t)},s.prototype.addErrorListener=function(t){this._listeners.push(t)},s.prototype.removeErrorListeners=function(){this._listeners=[]},s.prototype.getTokenTypeMap=function(){var t=this.getTokenNames();if(null===t)throw"The current recognizer does not provide a list of token names.";var e=this.tokenTypeMapCache[t];return void 0===e&&((e=t.reduce(function(t,e,n){t[e]=n})).EOF=r.EOF,this.tokenTypeMapCache[t]=e),e},s.prototype.getRuleIndexMap=function(){var t=this.ruleNames;if(null===t)throw"The current recognizer does not provide a list of rule names.";var e=this.ruleIndexMapCache[t];return void 0===e&&(e=t.reduce(function(t,e,n){t[e]=n}),this.ruleIndexMapCache[t]=e),e},s.prototype.getTokenType=function(t){var e=this.getTokenTypeMap()[t];return void 0!==e?e:r.INVALID_TYPE},s.prototype.getErrorHeader=function(t){return"line "+t.getOffendingToken().line+":"+t.getOffendingToken().column},s.prototype.getTokenErrorDisplay=function(t){if(null===t)return"";var e=t.text;return null===e&&(e=t.type===r.EOF?"":"<"+t.type+">"),"'"+(e=e.replace("\n","\\n").replace("\r","\\r").replace("\t","\\t"))+"'"},s.prototype.getErrorListenerDispatch=function(){return new o(this._listeners)},s.prototype.sempred=function(t,e,n){return!0},s.prototype.precpred=function(t,e){return!0},Object.defineProperty(s.prototype,"state",{get:function(){return this._stateNumber},set:function(t){this._stateNumber=t}}),e.Recognizer=s},function(t,e,n){var r=n(11).DFAState,i=n(9).ATNConfigSet,o=n(6).getCachedPredictionContext;function s(t,e){return this.atn=t,this.sharedContextCache=e,this}s.ERROR=new r(2147483647,new i),s.prototype.getCachedContext=function(t){if(null===this.sharedContextCache)return t;return o(t,this.sharedContextCache,{})},e.ATNSimulator=s},function(t,e,n){n(0).Set;var r=n(0).Map,i=n(0).BitSet,o=n(0).AltDict,s=n(7).ATN,a=n(3).RuleStopState,l=n(9).ATNConfigSet,u=n(13).ATNConfig,c=n(10).SemanticContext,h=(n(0).Hash,n(0).hashStuff);n(0).equalArrays;function p(){return this}p.SLL=0,p.LL=1,p.LL_EXACT_AMBIG_DETECTION=2,p.hasSLLConflictTerminatingPrediction=function(t,e){if(p.allConfigsInRuleStopStates(e))return!0;if(t===p.SLL&&e.hasSemanticContext){for(var n=new l,r=0;r1)return!0}return!1},p.allSubsetsEqual=function(t){for(var e=null,n=0;n=n)){var i,o=e.charCodeAt(r);return o>=55296&&o<=56319&&n>r+1&&(i=e.charCodeAt(r+1))>=56320&&i<=57343?1024*(o-55296)+i-56320+65536:o}};t?t(String.prototype,"codePointAt",{value:e,configurable:!0,writable:!0}):String.prototype.codePointAt=e}()},function(t,e){var n,r,i,o;String.fromCodePoint||(n=function(){try{var t={},e=Object.defineProperty,n=e(t,t,t)&&e}catch(t){}return n}(),r=String.fromCharCode,i=Math.floor,o=function(t){var e,n,o=[],s=-1,a=arguments.length;if(!a)return"";for(var l="";++s1114111||i(u)!=u)throw RangeError("Invalid code point: "+u);u<=65535?o.push(u):(e=55296+((u-=65536)>>10),n=u%1024+56320,o.push(e,n)),(s+1==a||o.length>16384)&&(l+=r.apply(null,o),o.length=0)}return l},n?n(String,"fromCodePoint",{value:o,configurable:!0,writable:!0}):String.fromCodePoint=o)},function(t,e,n){var r=n(1).Token,i=n(5),o=i.NoViableAltException,s=i.InputMismatchException,a=i.FailedPredicateException,l=i.ParseCancellationException,u=n(3).ATNState,c=n(2).Interval,h=n(2).IntervalSet;function p(){}function f(){return p.call(this),this.errorRecoveryMode=!1,this.lastErrorIndex=-1,this.lastErrorStates=null,this}function d(){return f.call(this),this}p.prototype.reset=function(t){},p.prototype.recoverInline=function(t){},p.prototype.recover=function(t,e){},p.prototype.sync=function(t){},p.prototype.inErrorRecoveryMode=function(t){},p.prototype.reportError=function(t){},f.prototype=Object.create(p.prototype),f.prototype.constructor=f,f.prototype.reset=function(t){this.endErrorCondition(t)},f.prototype.beginErrorCondition=function(t){this.errorRecoveryMode=!0},f.prototype.inErrorRecoveryMode=function(t){return this.errorRecoveryMode},f.prototype.endErrorCondition=function(t){this.errorRecoveryMode=!1,this.lastErrorStates=null,this.lastErrorIndex=-1},f.prototype.reportMatch=function(t){this.endErrorCondition(t)},f.prototype.reportError=function(t,e){this.inErrorRecoveryMode(t)||(this.beginErrorCondition(t),e instanceof o?this.reportNoViableAlternative(t,e):e instanceof s?this.reportInputMismatch(t,e):e instanceof a?this.reportFailedPredicate(t,e):(console.log("unknown recognition error type: "+e.constructor.name),console.log(e.stack),t.notifyErrorListeners(e.getOffendingToken(),e.getMessage(),e)))},f.prototype.recover=function(t,e){this.lastErrorIndex===t.getInputStream().index&&null!==this.lastErrorStates&&this.lastErrorStates.indexOf(t.state)>=0&&t.consume(),this.lastErrorIndex=t._input.index,null===this.lastErrorStates&&(this.lastErrorStates=[]),this.lastErrorStates.push(t.state);var n=this.getErrorRecoverySet(t);this.consumeUntil(t,n)},f.prototype.sync=function(t){if(!this.inErrorRecoveryMode(t)){var e=t._interp.atn.states[t.state],n=t.getTokenStream().LA(1),i=t.atn.nextTokens(e);if(!i.contains(r.EPSILON)&&!i.contains(n))switch(e.stateType){case u.BLOCK_START:case u.STAR_BLOCK_START:case u.PLUS_BLOCK_START:case u.STAR_LOOP_ENTRY:if(null!==this.singleTokenDeletion(t))return;throw new s(t);case u.PLUS_LOOP_BACK:case u.STAR_LOOP_BACK:this.reportUnwantedToken(t);var o=new h;o.addSet(t.getExpectedTokens());var a=o.addSet(this.getErrorRecoverySet(t));this.consumeUntil(t,a)}}},f.prototype.reportNoViableAlternative=function(t,e){var n,i=t.getTokenStream();n=null!==i?e.startToken.type===r.EOF?"":i.getText(new c(e.startToken,e.offendingToken)):"";var o="no viable alternative at input "+this.escapeWSAndQuote(n);t.notifyErrorListeners(o,e.offendingToken,e)},f.prototype.reportInputMismatch=function(t,e){var n="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(n,e.offendingToken,e)},f.prototype.reportFailedPredicate=function(t,e){var n="rule "+t.ruleNames[t._ctx.ruleIndex]+" "+e.message;t.notifyErrorListeners(n,e.offendingToken,e)},f.prototype.reportUnwantedToken=function(t){if(!this.inErrorRecoveryMode(t)){this.beginErrorCondition(t);var e=t.getCurrentToken(),n="extraneous input "+this.getTokenErrorDisplay(e)+" expecting "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames);t.notifyErrorListeners(n,e,null)}},f.prototype.reportMissingToken=function(t){if(!this.inErrorRecoveryMode(t)){this.beginErrorCondition(t);var e=t.getCurrentToken(),n="missing "+this.getExpectedTokens(t).toString(t.literalNames,t.symbolicNames)+" at "+this.getTokenErrorDisplay(e);t.notifyErrorListeners(n,e,null)}},f.prototype.recoverInline=function(t){var e=this.singleTokenDeletion(t);if(null!==e)return t.consume(),e;if(this.singleTokenInsertion(t))return this.getMissingSymbol(t);throw new s(t)},f.prototype.singleTokenInsertion=function(t){var e=t.getTokenStream().LA(1),n=t._interp.atn,r=n.states[t.state].transitions[0].target;return!!n.nextTokens(r,t._ctx).contains(e)&&(this.reportMissingToken(t),!0)},f.prototype.singleTokenDeletion=function(t){var e=t.getTokenStream().LA(2);if(this.getExpectedTokens(t).contains(e)){this.reportUnwantedToken(t),t.consume();var n=t.getCurrentToken();return this.reportMatch(t),n}return null},f.prototype.getMissingSymbol=function(t){var e,n=t.getCurrentToken(),i=this.getExpectedTokens(t).first();e=i===r.EOF?"":"";var o=n,s=t.getTokenStream().LT(-1);return o.type===r.EOF&&null!==s&&(o=s),t.getTokenFactory().create(o.source,i,e,r.DEFAULT_CHANNEL,-1,-1,o.line,o.column)},f.prototype.getExpectedTokens=function(t){return t.getExpectedTokens()},f.prototype.getTokenErrorDisplay=function(t){if(null===t)return"";var e=t.text;return null===e&&(e=t.type===r.EOF?"":"<"+t.type+">"),this.escapeWSAndQuote(e)},f.prototype.escapeWSAndQuote=function(t){return"'"+(t=(t=(t=t.replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t"))+"'"},f.prototype.getErrorRecoverySet=function(t){for(var e=t._interp.atn,n=t._ctx,i=new h;null!==n&&n.invokingState>=0;){var o=e.states[n.invokingState].transitions[0],s=e.nextTokens(o.followState);i.addSet(s),n=n.parentCtx}return i.removeOne(r.EPSILON),i},f.prototype.consumeUntil=function(t,e){for(var n=t.getTokenStream().LA(1);n!==r.EOF&&!e.contains(n);)t.consume(),n=t.getTokenStream().LA(1)},d.prototype=Object.create(f.prototype),d.prototype.constructor=d,d.prototype.recover=function(t,e){for(var n=t._ctx;null!==n;)n.exception=e,n=n.parentCtx;throw new l(e)},d.prototype.recoverInline=function(t){this.recover(t,new s(t))},d.prototype.sync=function(t){},e.BailErrorStrategy=d,e.DefaultErrorStrategy=f},function(t,e){},function(t,e,n){Converter=n(33).Converter},function(module,exports,__webpack_require__){antlr4=__webpack_require__(12);var BlocklyGrammerVisitor=__webpack_require__(20).BlocklyGrammerVisitor,BlocklyGrammerLexer=__webpack_require__(51).BlocklyGrammerLexer,BlocklyGrammerParser=__webpack_require__(52).BlocklyGrammerParser,Visitors=__webpack_require__(53),SymbolVisitor=Visitors.SymbolVisitor,EvalVisitor=Visitors.EvalVisitor,tpl=__webpack_require__(54);function Converter(){return this}Converter.prototype.constructor=Converter,Converter.prototype.init=function(){return this.toolboxGap=5,this.toolboxId="toolbox",this.blocklyDivId="blocklyDiv",this.workSpaceName="workspace",this.codeAreaId="codeArea",this},Converter.prototype.main=function(t,e,n){return this.init(),this.generBlocks(t,e),this.renderGrammerName(),this.generToolbox(),this.generMainFile(e),this.writeMainFile(n),this},Converter.prototype.generBlocks=function(grammerFile,functions){functions||(functions={});var temp_consoleError=console.error;console.error=function(t){throw new Error(t)};var chars=new antlr4.InputStream(grammerFile),lexer=new BlocklyGrammerLexer(chars),tokens=new antlr4.CommonTokenStream(lexer),parser=new BlocklyGrammerParser(tokens);parser.buildParseTrees=!0;var tree=parser.grammarFile();console.error=temp_consoleError;var svisitor=(new SymbolVisitor).init();this.svisitor=svisitor,svisitor.visit(tree),console.log(svisitor),svisitor.checkSymbol();var evisitor=(new EvalVisitor).init(svisitor,grammerFile);return this.evisitor=evisitor,eval(this.evisitor.matchInject("Function_0")),functions.Function_0&&functions.Function_0.call(this),evisitor.visit(tree),eval(this.evisitor.matchInject("Function_1")),functions.Function_1&&functions.Function_1.call(this),evisitor.generBlocks(),console.log(evisitor),this.blocks=evisitor.blocks,eval(this.evisitor.matchInject("Function_2")),functions.Function_2&&functions.Function_2.call(this),this},Converter.prototype.renderGrammerName=function(){this.grammerName=this.svisitor.grammerName,this.generLanguage=this.evisitor.generLanguage;var t=this.grammerName,e=this.generLanguage;return this.OmitedError=tpl.OmitedError(),this.Functions_pre=tpl.Functions_pre(t),this.Functions_xmlText=tpl.Functions_xmlText(t),this.Functions_blocksIniter=tpl.Functions_blocksIniter(t,e),this.mainFileTPL=tpl.mainFileTPL,this},Converter.prototype.generToolbox=function(){eval(this.grammerName+"Functions={};"),eval(this.Functions_xmlText),eval(this.blocks),eval("var blocksobj = "+this.grammerName+"Blocks;"),console.log(blocksobj);var text=[];for(var key in text.push('"),this.toolbox=this.textToPrettyText(text.join("")),this},Converter.prototype.generMainFile=function(t){t||(t={});var e=[],n=this.grammerName;e.push(this.blocks),e.push("\n\n"),e.push(this.OmitedError),e.push("\n\n"),e.push(n+"Functions={}\n\n"),e.push(this.evisitor.matchInject("Functions")),t.Functions&&e.push(t.Functions),e.push("\n\n"),e.push(this.Functions_pre),e.push("\n\n"),e.push(this.Functions_xmlText),e.push("\n\n"),e.push(this.Functions_blocksIniter),e.push("\n\n"),e.push(n+"Functions.blocksIniter();\n\n"),this.mainFile=this.mainFileTPL(n,this.generLanguage,this.blocklyDivId,this.codeAreaId,this.toolbox,this.workSpaceName,this.toolboxId,e.join(""))},Converter.prototype.writeMainFile=function(t){t||(t=this.grammerName+"index.html"),this.createAndDownloadFile(this.mainFile.join(""),t,"html")},Converter.prototype.block=function(t){var e=this.evisitor.expressionRules[t];return e||(e=this.evisitor.statementRules[t]),e&&1!==e.checklength?e.blockjs:null},Converter.prototype.textToPrettyText=function(t){for(var e=t.split("<"),n="",r=1;r"!=i.slice(-2)&&(n+=" ")}var o=e.join("\n");return(o=o.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1")).replace(/^\n/,"")},Converter.prototype.createAndDownloadFile=function(t,e,n){var r=new Blob([t],{type:"text/"+n}),i=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1}),o=document.createElement("a");o.href=window.URL.createObjectURL(r),o.download=e,o.textContent="Download file!",o.dispatchEvent(i)},exports.Converter=Converter},function(t,e,n){e.ATN=n(7).ATN,e.ATNDeserializer=n(22).ATNDeserializer,e.LexerATNSimulator=n(37).LexerATNSimulator,e.ParserATNSimulator=n(40).ParserATNSimulator,e.PredictionMode=n(27).PredictionMode},function(t,e,n){var r=n(0).Set,i=n(0).BitSet,o=n(1).Token,s=n(13).ATNConfig,a=(n(2).Interval,n(2).IntervalSet),l=n(3).RuleStopState,u=n(8).RuleTransition,c=n(8).NotSetTransition,h=n(8).WildcardTransition,p=n(8).AbstractPredicateTransition,f=n(6),d=f.predictionContextFromRuleContext,y=f.PredictionContext,g=f.SingletonPredictionContext;function v(t){this.atn=t}v.HIT_PRED=o.INVALID_TYPE,v.prototype.getDecisionLookahead=function(t){if(null===t)return null;for(var e=t.transitions.length,n=[],o=0;ox.MAX_DFA_EDGE)return null;var n=t.edges[e-x.MIN_DFA_EDGE];return void 0===n&&(n=null),x.debug&&null!==n&&console.log("reuse state "+t.stateNumber+" edge to "+n.stateNumber),n},x.prototype.computeTargetState=function(t,e,n){var r=new l;return this.getReachableConfigSet(t,e.configs,r,n),0===r.items.length?(r.hasSemanticContext||this.addDFAEdge(e,n,s.ERROR),s.ERROR):this.addDFAEdge(e,n,null,r)},x.prototype.failOrAccept=function(t,e,n,i){if(null!==this.prevAccept.dfaState){var o=t.dfaState.lexerActionExecutor;return this.accept(e,o,this.startIndex,t.index,t.line,t.column),t.dfaState.prediction}if(i===r.EOF&&e.index===this.startIndex)return r.EOF;throw new y(this.recog,e,this.startIndex,n)},x.prototype.getReachableConfigSet=function(t,e,n,i){for(var s=o.INVALID_ALT_NUMBER,a=0;ax.MAX_DFA_EDGE?n:(x.debug&&console.log("EDGE "+t+" -> "+n+" upon "+e),null===t.edges&&(t.edges=[]),t.edges[e-x.MIN_DFA_EDGE]=n,n)},x.prototype.addDFAState=function(t){for(var e=new a(null,t),n=null,r=0;r0&&(o=this.getAltThatFinishedDecisionEntryRule(i))!==a.INVALID_ALT_NUMBER?o:a.INVALID_ALT_NUMBER},N.prototype.getAltThatFinishedDecisionEntryRule=function(t){for(var e=[],n=0;n0||r.state instanceof x&&r.context.hasEmptyPath())&&e.indexOf(r.alt)<0&&e.push(r.alt)}return 0===e.length?a.INVALID_ALT_NUMBER:Math.min.apply(null,e)},N.prototype.splitAccordingToSemanticValidity=function(t,e){for(var n=new c(t.fullCtx),r=new c(t.fullCtx),i=0;i50))throw"problem";if(t.state instanceof x){if(!t.context.isEmpty()){for(var a=0;a=0&&(p+=1);this.closureCheckingStopState(h,e,n,c,i,p,s)}}},N.prototype.canDropLoopEntryEdgeInLeftRecursiveRule=function(t){var e=t.state;if(e.stateType!=l.STAR_LOOP_ENTRY)return!1;if(e.stateType!=l.STAR_LOOP_ENTRY||!e.isPrecedenceDecision||t.context.isEmpty()||t.context.hasEmptyPath())return!1;for(var n=t.context.length,r=0;r=0?this.parser.ruleNames[t]:""},N.prototype.getEpsilonTarget=function(t,e,n,r,i,o){switch(e.serializationType){case S.RULE:return this.ruleTransition(t,e);case S.PRECEDENCE:return this.precedenceTransition(t,e,n,r,i);case S.PREDICATE:return this.predTransition(t,e,n,r,i);case S.ACTION:return this.actionTransition(t,e);case S.EPSILON:return new u({state:e.target},t);case S.ATOM:case S.RANGE:case S.SET:return o&&e.matches(h.EOF,0,1)?new u({state:e.target},t):null;default:return null}},N.prototype.actionTransition=function(t,e){if(this.debug){var n=-1==e.actionIndex?65535:e.actionIndex;console.log("ACTION edge "+e.ruleIndex+":"+n)}return new u({state:e.target},t)},N.prototype.precedenceTransition=function(t,e,n,i,o){this.debug&&(console.log("PRED (collectPredicates="+n+") "+e.precedence+">=_p, ctx dependent=true"),null!==this.parser&&console.log("context surrounding pred is "+r.arrayToString(this.parser.getRuleInvocationStack())));var s=null;if(n&&i)if(o){var a=this._input.index;this._input.seek(this._startIndex);var l=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(a),l&&(s=new u({state:e.target},t))}else{var c=v.andContext(t.semanticContext,e.getPredicate());s=new u({state:e.target,semanticContext:c},t)}else s=new u({state:e.target},t);return this.debug&&console.log("config from pred transition="+s),s},N.prototype.predTransition=function(t,e,n,i,o){this.debug&&(console.log("PRED (collectPredicates="+n+") "+e.ruleIndex+":"+e.predIndex+", ctx dependent="+e.isCtxDependent),null!==this.parser&&console.log("context surrounding pred is "+r.arrayToString(this.parser.getRuleInvocationStack())));var s=null;if(n&&(e.isCtxDependent&&i||!e.isCtxDependent))if(o){var a=this._input.index;this._input.seek(this._startIndex);var l=e.getPredicate().evaluate(this.parser,this._outerContext);this._input.seek(a),l&&(s=new u({state:e.target},t))}else{var c=v.andContext(t.semanticContext,e.getPredicate());s=new u({state:e.target,semanticContext:c},t)}else s=new u({state:e.target},t);return this.debug&&console.log("config from pred transition="+s),s},N.prototype.ruleTransition=function(t,e){this.debug&&console.log("CALL rule "+this.getRuleName(e.target.ruleIndex)+", ctx="+t.context);var n=e.followState,r=R.create(t.context,n.stateNumber);return new u({state:e.target,context:r},t)},N.prototype.getConflictingAlts=function(t){var e=y.getConflictingAltSubsets(t);return y.getAlts(e)},N.prototype.getConflictingAltsOrUniqueAlt=function(t){var e=null;return t.uniqueAlt!==a.INVALID_ALT_NUMBER?(e=new o).add(t.uniqueAlt):e=t.conflictingAlts,e},N.prototype.getTokenName=function(t){if(t===h.EOF)return"EOF";if(null!==this.parser&&null!==this.parser.literalNames){if(!(t>=this.parser.literalNames.length&&t>=this.parser.symbolicNames.length))return(this.parser.literalNames[t]||this.parser.symbolicNames[t])+"<"+t+">";console.log(t+" ttype out of range: "+this.parser.literalNames),console.log(""+this.parser.getInputStream().getTokens())}return""+t},N.prototype.getLookaheadName=function(t){return this.getTokenName(t.LA(1))},N.prototype.dumpDeadEndConfigs=function(t){console.log("dead end configs: ");for(var e=t.getDeadEndConfigs(),n=0;n0){var o=r.state.transitions[0];if(o instanceof AtomTransition)i="Atom "+this.getTokenName(o.label);else if(o instanceof E){i=(o instanceof C?"~":"")+"Set "+o.set}}console.error(r.toString(this.parser,!0)+":"+i)}},N.prototype.noViableAlt=function(t,e,n,r){return new b(this.parser,t,t.get(r),t.LT(1),n,e)},N.prototype.getUniqueAlt=function(t){for(var e=a.INVALID_ALT_NUMBER,n=0;n "+r+" upon "+this.getTokenName(n)),null===r)return null;if(r=this.addDFAState(t,r),null===e||n<-1||n>this.atn.maxTokenType)return r;if(null===e.edges&&(e.edges=[]),e.edges[n+1]=r,this.debug){var i=null===this.parser?null:this.parser.literalNames,o=null===this.parser?null:this.parser.symbolicNames;console.log("DFA=\n"+t.toString(i,o))}return r},N.prototype.addDFAState=function(t,e){if(e==d.ERROR)return e;var n=t.states.get(e);return null!==n?n:(e.stateNumber=t.states.length,e.configs.readOnly||(e.configs.optimizeConfigs(this),e.configs.setReadonly(!0)),t.states.add(e),this.debug&&console.log("adding new DFA state: "+e),e)},N.prototype.reportAttemptingFullContext=function(t,e,n,r,i){if(this.debug||this.retry_debug){var o=new _(r,i+1);console.log("reportAttemptingFullContext decision="+t.decision+":"+n+", input="+this.parser.getTokenStream().getText(o))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser,t,r,i,e,n)},N.prototype.reportContextSensitivity=function(t,e,n,r,i){if(this.debug||this.retry_debug){var o=new _(r,i+1);console.log("reportContextSensitivity decision="+t.decision+":"+n+", input="+this.parser.getTokenStream().getText(o))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser,t,r,i,e,n)},N.prototype.reportAmbiguity=function(t,e,n,r,i,o,s){if(this.debug||this.retry_debug){var a=new _(n,r+1);console.log("reportAmbiguity "+o+":"+s+", input="+this.parser.getTokenStream().getText(a))}null!==this.parser&&this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser,t,n,r,i,o,s)},e.ParserATNSimulator=N},function(t,e,n){e.DFA=n(42).DFA,e.DFASerializer=n(17).DFASerializer,e.LexerDFASerializer=n(17).LexerDFASerializer,e.PredPrediction=n(11).PredPrediction},function(t,e,n){var r=n(0).Set,i=n(11).DFAState,o=n(3).StarLoopEntryState,s=n(9).ATNConfigSet,a=n(17).DFASerializer,l=n(17).LexerDFASerializer;function u(t,e){if(void 0===e&&(e=0),this.atnStartState=t,this.decision=e,this._states=new r,this.s0=null,this.precedenceDfa=!1,t instanceof o&&t.isPrecedenceDecision){this.precedenceDfa=!0;var n=new i(null,new s);n.edges=[],n.isAcceptState=!1,n.requiresFullContext=!1,this.s0=n}return this}u.prototype.getPrecedenceStartState=function(t){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";return t<0||t>=this.s0.edges.length?null:this.s0.edges[t]||null},u.prototype.setPrecedenceStartState=function(t,e){if(!this.precedenceDfa)throw"Only precedence DFAs may contain a precedence start state.";t<0||(this.s0.edges[t]=e)},u.prototype.setPrecedenceDfa=function(t){if(this.precedenceDfa!==t){if(this._states=new DFAStatesSet,t){var e=new i(null,new s);e.edges=[],e.isAcceptState=!1,e.requiresFullContext=!1,this.s0=e}else this.s0=null;this.precedenceDfa=t}},Object.defineProperty(u.prototype,"states",{get:function(){return this._states}}),u.prototype.sortedStates=function(){return this._states.values().sort(function(t,e){return t.stateNumber-e.stateNumber})},u.prototype.toString=function(t,e){return t=t||null,e=e||null,null===this.s0?"":new a(this,t,e).toString()},u.prototype.toLexerString=function(){return null===this.s0?"":new l(this).toString()},e.DFA=u},function(t,e,n){var r=n(4);e.Trees=n(21).Trees,e.RuleNode=r.RuleNode,e.ParseTreeListener=r.ParseTreeListener,e.ParseTreeVisitor=r.ParseTreeVisitor,e.ParseTreeWalker=r.ParseTreeWalker},function(t,e,n){e.RecognitionException=n(5).RecognitionException,e.NoViableAltException=n(5).NoViableAltException,e.LexerNoViableAltException=n(5).LexerNoViableAltException,e.InputMismatchException=n(5).InputMismatchException,e.FailedPredicateException=n(5).FailedPredicateException,e.DiagnosticErrorListener=n(45).DiagnosticErrorListener,e.BailErrorStrategy=n(30).BailErrorStrategy,e.ErrorListener=n(16).ErrorListener},function(t,e,n){var r=n(0).BitSet,i=n(16).ErrorListener,o=n(2).Interval;function s(t){return i.call(this),t=t||!0,this.exactOnly=t,this}s.prototype=Object.create(i.prototype),s.prototype.constructor=s,s.prototype.reportAmbiguity=function(t,e,n,r,i,s,a){if(!this.exactOnly||i){var l="reportAmbiguity d="+this.getDecisionDescription(t,e)+": ambigAlts="+this.getConflictingAlts(s,a)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(l)}},s.prototype.reportAttemptingFullContext=function(t,e,n,r,i,s){var a="reportAttemptingFullContext d="+this.getDecisionDescription(t,e)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(a)},s.prototype.reportContextSensitivity=function(t,e,n,r,i,s){var a="reportContextSensitivity d="+this.getDecisionDescription(t,e)+", input='"+t.getTokenStream().getText(new o(n,r))+"'";t.notifyErrorListeners(a)},s.prototype.getDecisionDescription=function(t,e){var n=e.decision,r=e.atnStartState.ruleIndex,i=t.ruleNames;if(r<0||r>=i.length)return""+n;var o=i[r]||null;return null===o||0===o.length?""+n:n+" ("+o+")"},s.prototype.getConflictingAlts=function(t,e){if(null!==t)return t;for(var n=new r,i=0;i=0&&(this.fetchedEOF?this.index0)||this.fetch(e)>=e},a.prototype.fetch=function(t){if(this.fetchedEOF)return 0;for(var e=0;e=this.tokens.length&&(e=this.tokens.length-1);for(var o=t;o=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]},a.prototype.adjustSeekIndex=function(t){return t},a.prototype.lazyInit=function(){-1===this.index&&this.setup()},a.prototype.setup=function(){this.sync(0),this.index=this.adjustSeekIndex(0)},a.prototype.setTokenSource=function(t){this.tokenSource=t,this.tokens=[],this.index=-1,this.fetchedEOF=!1},a.prototype.nextTokenOnChannel=function(t,e){if(this.sync(t),t>=this.tokens.length)return-1;for(var n=this.tokens[t];n.channel!==this.channel;){if(n.type===r.EOF)return-1;t+=1,this.sync(t),n=this.tokens[t]}return t},a.prototype.previousTokenOnChannel=function(t,e){for(;t>=0&&this.tokens[t].channel!==e;)t-=1;return t},a.prototype.getHiddenTokensToRight=function(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;var n=this.nextTokenOnChannel(t+1,i.DEFAULT_TOKEN_CHANNEL),r=t+1,o=-1===n?this.tokens.length-1:n;return this.filterForChannel(r,o,e)},a.prototype.getHiddenTokensToLeft=function(t,e){if(void 0===e&&(e=-1),this.lazyInit(),t<0||t>=this.tokens.length)throw t+" not in 0.."+this.tokens.length-1;var n=this.previousTokenOnChannel(t-1,i.DEFAULT_TOKEN_CHANNEL);if(n===t-1)return null;var r=n+1,o=t-1;return this.filterForChannel(r,o,e)},a.prototype.filterForChannel=function(t,e,n){for(var r=[],o=t;o=this.tokens.length&&(n=this.tokens.length-1);for(var i="",s=e;s=0&&this._parseListeners.splice(e,1),0===this._parseListeners.length&&(this._parseListeners=null)}},p.prototype.removeParseListeners=function(){this._parseListeners=null},p.prototype.triggerEnterRuleEvent=function(){if(null!==this._parseListeners){var t=this._ctx;this._parseListeners.map(function(e){e.enterEveryRule(t),t.enterRule(e)})}},p.prototype.triggerExitRuleEvent=function(){if(null!==this._parseListeners){var t=this._ctx;this._parseListeners.slice(0).reverse().map(function(e){t.exitRule(e),e.exitEveryRule(t)})}},p.prototype.getTokenFactory=function(){return this._input.tokenSource._factory},p.prototype.setTokenFactory=function(t){this._input.tokenSource._factory=t},p.prototype.getATNWithBypassAlts=function(){var t=this.getSerializedATN();if(null===t)throw"The current parser does not support an ATN with bypass alternatives.";var e=this.bypassAltsAtnCache[t];if(null===e){var n=new l;n.generateRuleBypassTransitions=!0,e=new a(n).deserialize(t),this.bypassAltsAtnCache[t]=e}return e};var f=n(15).Lexer;p.prototype.compileParseTreePattern=function(t,e,n){if(null===(n=n||null)&&null!==this.getTokenStream()){var r=this.getTokenStream().tokenSource;r instanceof f&&(n=r)}if(null===n)throw"Parser can't discover a lexer to use";return new ParseTreePatternMatcher(n,this).compile(t,e)},p.prototype.getInputStream=function(){return this.getTokenStream()},p.prototype.setInputStream=function(t){this.setTokenStream(t)},p.prototype.getTokenStream=function(){return this._input},p.prototype.setTokenStream=function(t){this._input=null,this.reset(),this._input=t},p.prototype.getCurrentToken=function(){return this._input.LT(1)},p.prototype.notifyErrorListeners=function(t,e,n){e=e||null,n=n||null,null===e&&(e=this.getCurrentToken()),this._syntaxErrors+=1;var r=e.line,i=e.column;this.getErrorListenerDispatch().syntaxError(this,e,r,i,t,n)},p.prototype.consume=function(){var t=this.getCurrentToken();t.type!==r.EOF&&this.getInputStream().consume();var e,n=null!==this._parseListeners&&this._parseListeners.length>0;(this.buildParseTrees||n)&&((e=this._errHandler.inErrorRecoveryMode(this)?this._ctx.addErrorNode(t):this._ctx.addTokenNode(t)).invokingState=this.state,n&&this._parseListeners.map(function(t){e instanceof c||void 0!==e.isErrorNode&&e.isErrorNode()?t.visitErrorNode(e):e instanceof u&&t.visitTerminal(e)}));return t},p.prototype.addContextToParseTree=function(){null!==this._ctx.parentCtx&&this._ctx.parentCtx.addChild(this._ctx)},p.prototype.enterRule=function(t,e,n){this.state=e,this._ctx=t,this._ctx.start=this._input.LT(1),this.buildParseTrees&&this.addContextToParseTree(),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.exitRule=function(){this._ctx.stop=this._input.LT(-1),null!==this._parseListeners&&this.triggerExitRuleEvent(),this.state=this._ctx.invokingState,this._ctx=this._ctx.parentCtx},p.prototype.enterOuterAlt=function(t,e){t.setAltNumber(e),this.buildParseTrees&&this._ctx!==t&&null!==this._ctx.parentCtx&&(this._ctx.parentCtx.removeLastChild(),this._ctx.parentCtx.addChild(t)),this._ctx=t},p.prototype.getPrecedence=function(){return 0===this._precedenceStack.length?-1:this._precedenceStack[this._precedenceStack.length-1]},p.prototype.enterRecursionRule=function(t,e,n,r){this.state=e,this._precedenceStack.push(r),this._ctx=t,this._ctx.start=this._input.LT(1),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.pushNewRecursionContext=function(t,e,n){var r=this._ctx;r.parentCtx=t,r.invokingState=e,r.stop=this._input.LT(-1),this._ctx=t,this._ctx.start=r.start,this.buildParseTrees&&this._ctx.addChild(r),null!==this._parseListeners&&this.triggerEnterRuleEvent()},p.prototype.unrollRecursionContexts=function(t){this._precedenceStack.pop(),this._ctx.stop=this._input.LT(-1);var e=this._ctx;if(null!==this._parseListeners)for(;this._ctx!==t;)this.triggerExitRuleEvent(),this._ctx=this._ctx.parentCtx;else this._ctx=t;e.parentCtx=t,this.buildParseTrees&&null!==t&&t.addChild(e)},p.prototype.getInvokingContext=function(t){for(var e=this._ctx;null!==e;){if(e.ruleIndex===t)return e;e=e.parentCtx}return null},p.prototype.precpred=function(t,e){return e>=this._precedenceStack[this._precedenceStack.length-1]},p.prototype.inContext=function(t){return!1},p.prototype.isExpectedToken=function(t){var e=this._interp.atn,n=this._ctx,i=e.states[this.state],o=e.nextTokens(i);if(o.contains(t))return!0;if(!o.contains(r.EPSILON))return!1;for(;null!==n&&n.invokingState>=0&&o.contains(r.EPSILON);){var s=e.states[n.invokingState].transitions[0];if((o=e.nextTokens(s.followState)).contains(t))return!0;n=n.parentCtx}return!(!o.contains(r.EPSILON)||t!==r.EOF)},p.prototype.getExpectedTokens=function(){return this._interp.atn.getExpectedTokens(this.state,this._ctx)},p.prototype.getExpectedTokensWithinCurrentRule=function(){var t=this._interp.atn,e=t.states[this.state];return t.nextTokens(e)},p.prototype.getRuleIndex=function(t){var e=this.getRuleIndexMap()[t];return null!==e?e:-1},p.prototype.getRuleInvocationStack=function(t){null===(t=t||null)&&(t=this._ctx);for(var e=[];null!==t;){var n=t.ruleIndex;n<0?e.push("n/a"):e.push(this.ruleNames[n]),t=t.parentCtx}return e},p.prototype.getDFAStrings=function(){return this._interp.decisionToDFA.toString()},p.prototype.dumpDFA=function(){for(var t=!1,e=0;e0&&(t&&console.log(),this.printer.println("Decision "+n.decision+":"),this.printer.print(n.toString(this.literalNames,this.symbolicNames)),t=!0)}},p.prototype.getSourceName=function(){return this._input.sourceName},p.prototype.setTrace=function(t){t?(null!==this._tracer&&this.removeParseListener(this._tracer),this._tracer=new h(this),this.addParseListener(this._tracer)):(this.removeParseListener(this._tracer),this._tracer=null)},e.Parser=p},function(t,e,n){var r=n(12),i=["悋Ꜫ脳맭䅼㯧瞆奤","ŝ\b\t\t","\t\t\t\t","\b\t\b\t\t\t\n\t\n\v\t\v","\f\t\f\r\t\r\t\t","\t\t\t\t","\t\t\t","\t\t\t\t","\t\t\t","\t\t \t ","","","","","","","","","","","","","","\b\b\t\t\n\n","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\v\v\v\v\v","\v\f\f\r\r","","Ó\n\fÖ","\v","Ü\n\fß\v","ã\n\fæ\v","ê\n","ï\n\fò","\v","ù\n","þ\n\fā\v","Ĉ\n","","","ę\n","Ĝ\n","ġ\n\rĢ","","ī\n\fĮ\v","","","Ŀ\n\fł","\v","Ō\n\f","ŏ\v ","    ŗ\n \f  Ś\v  "," ÔĬŀ!","\t\v\r\b\t\n\v\f\r","!#%","')+-/13579",";=?__C\\","2;C\\aac|c|$$^^\n$$11^^dd","hhppttvv))^^\n))11^^ddhhppttvv2;CHch",'\v\v""\f\f==~~',"ũ","\t","\v\r","","","","","!","#%","35","79;","=?","AI","K\t„","\v†\rˆ","“•","—™","ÄÆ","ÈÊ","Ì!Ù","#à%é'ë",")õ+ú","-Ą/ĉ","1ď3đ","5ě7Ġ","9Ħ;Ĵ=Ň","?ŒABi","BCtCDcDEo","EFoFGcGHtH","IJ=J","KLuLMvMNc","NOvOPGPQzQR","rRStSTUTUr","UVnVWkWXv",'XY"YZ<Z["[\\',")\\]?]^?^_",'?_`"`auabv',"bcccdvdeg","efofggghphi",'vij"jk`kl"',"lm?mn?no?",'op"pqgqrzrs',"rstttuguvu","vwuwxkxyq",'yzpz{"{|x|}','"}~?~?',"€?€)‚",'"‚ƒ=ƒ\b',"„…<…\n","†‡~‡\f","ˆ‰g‰ŠzŠ","‹r‹ŒtŒ","gŽuŽ","uk‘q","‘’p’","“”A”","•–-–","—˜,˜","™šOš›g","›œcœp","žkžŸpŸ ","i ¡h¡¢","w¢£n£¤U","¤¥r¥¦n","¦§k§¨v¨",'©"©ª<ª«','"«¬)¬­',"?­®?®¯?",'¯°"°±o',"±²g²³c³","´p´µkµ¶","p¶·i·¸","h¸¹w¹ºn",'º»"»¼`','¼½"½¾?¾',"¿?¿À?ÀÁ",')ÁÂ"ÂÃ',"=ÃÄÅ","*ÅÆÇ","+ÇÈÉ","€ÉÊË","0ËÌÔ","]ÍÎ^ÎÓ^","ÏÐ^ÐÓ_","ÑÓ\nÒÍ","ÒÏÒÑ","ÓÖÔÕ","ÔÒÕ×","ÖÔר_","Ø ÙÝ\tÚ","Ü\tÛÚÜ","ßÝÛÝ",'ÞÞ"ß',"Ýàä\tá","ã\tâáã","æäâä","åå$æ","äçê+è","ê'éçé","èê&ë","ð$ìï)íï","\nîìîí","ïòðî","ðññó","òðóô","$ô(õø","^öù\t÷ù/","øöø÷","ù*úÿ)","ûþ-üþ\n\býû","ýüþā","ÿýÿĀ","ĀĂāÿ","Ăă)ă,","Ąć^ąĈ\t\t","ĆĈ/ćą","ćĆĈ.","ĉĊwĊċ1","ċČ1Čč1č","Ď1Ď0ďĐ","\t\nĐ2đĒ%","Ēē!ēĔ","Ĕĕ\bĕ4","ĖĘėę\f","ĘėĘę","ęĜĚĜ\f","ěĖěĚ","ĜĝĝĞ\b","Ğ6ğġ\t\vĠ","ğġĢĢ","ĠĢģģ","ĤĤĥ\bĥ","8Ħħ1ħĨ",",ĨĬĩī","\vĪĩīĮ","ĬĭĬĪ","ĭįĮĬ","įİ,İı","1ıIJIJij","\bij:Ĵĵ","hĵĶtĶķc","ķĸiĸĹo","ĹĺgĺĻpĻ","ļvļŀĽ","Ŀ\vľĽĿ","łŀŁŀ","ľŁŃł","ŀŃń=ń","ŅŅņ\bņ","<Ňň1ňʼn","1ʼnōŊŌ","\n\fŋŊŌŏ","ōŋōŎ","ŎŐŏō","Őő\bő>","Œœ/œŔ@","ŔŘŕŗ\n\r","ŖŕŗŚ","ŘŖŘř","řśŚŘ","śŜ\b Ŝ@","ÒÔÝäéîðøýÿćĘ","ěĢĬŀōŘ\b"].join(""),o=(new r.atn.ATNDeserializer).deserialize(i),s=o.decisionToState.map(function(t,e){return new r.dfa.DFA(t,e)});function a(t){return r.Lexer.call(this,t),this._interp=new r.atn.LexerATNSimulator(this,o,s,new r.PredictionContextCache),this}a.prototype=Object.create(r.Lexer.prototype),a.prototype.constructor=a,a.EOF=r.Token.EOF,a.T__0=1,a.T__1=2,a.T__2=3,a.T__3=4,a.T__4=5,a.T__5=6,a.T__6=7,a.T__7=8,a.T__8=9,a.T__9=10,a.T__10=11,a.T__11=12,a.T__12=13,a.T__13=14,a.Brackets=15,a.LexerIdentifier=16,a.ParserIdentifier=17,a.String=18,a.LabelForParserRule=19,a.Newline=20,a.WhiteSpace=21,a.BlockComment=22,a.FragmentComment=23,a.LineComment=24,a.ArrowComment=25,a.prototype.channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"],a.prototype.modeNames=["DEFAULT_MODE"],a.prototype.literalNames=[null,"'grammar'","';'","'statExprSplit : '=== statement ^ === expression v ===' ;'","':'","'|'","'expression'","'?'","'+'","'*'","'MeaningfulSplit : '=== meaningful ^ ===' ;'","'('","')'","'~'","'.'"],a.prototype.symbolicNames=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Brackets","LexerIdentifier","ParserIdentifier","String","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],a.prototype.ruleNames=["T__0","T__1","T__2","T__3","T__4","T__5","T__6","T__7","T__8","T__9","T__10","T__11","T__12","T__13","Brackets","LexerIdentifier","ParserIdentifier","String","STRING_double","ESC_double","STRING_single","ESC_single","UNICODE","HEX","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],a.prototype.grammarFileName="BlocklyGrammer.g4",e.BlocklyGrammerLexer=a},function(t,e,n){var r=n(12),i=n(20).BlocklyGrammerVisitor,o=["悋Ꜫ脳맭䅼㯧瞆奤","Õ\t\t","\t\t\t\t","\b\t\b\t\t\t\n\t\n\v\t\v\f\t\f","\r\t\r\n\f"," \v$\n","\f'\v","","","8\n\r9","@\n\fC\v","F\n","L\n","Q\nS\n\fV\v","\\","\n\f_\vb\n","f\n\f","i\v\b\b\b\bn\n\b\bp\n\b","\b\b\b\bu\n\b\bw\n\b\b\b\b","\b|\n\b\b~\n\b\b\b\b\bƒ\n\b","\b…\n\b\b‡\n\b\t\tŠ\n\t\f\t","\t\v\t\n\n\v\v\v","\v\v\v\v\v\v","\v\v›\n\v\r\v\vœ","\v\v\v\v\v\v","\v\v¦\n\v\f\f\f\f«","\n\f\f­\n\f\f¯\n\f\r\f\f°\r","\r\r\r\r\r\r\r\r\r","\r\r\r\r\r\rÂ\n\r\r\r","\r\r\r\r\r\r\r\r","\rÎ\n\r\rÐ\n\r\f\r\rÓ\v\r\r","%‹\b\n\f","\t\v","\n\vð,","0\bE","\na\fc†","‹Ž","¥®","Á","\b"," ","!"," !%",'"$\n#"$\'',"%&%#","&('%()","\t)*\n*+\t+",",--../","/01","12334","4756","687589","979::;",";F<==A",">@\b?>@","CA?AB","BDCADF","E2E<F\t","GH\bHK","IL\fJLKI","KJLTMP","NQ\fOQPN","POQS","RMSVTR","TUUWVT","WbXYY]","Z\\\b[Z","\\_][]^","^`_]`b","aGaX","b\vcg\bdf","\bedfige","ghh\r","igjo\bkm\t","ln\tmlmn","npokop","p‡qv","rt\tsu\tts","tuuwvr","vww‡x}","y{\tz|\t{z","{||~","}y}~~‡","„€‚\t","ƒ\t‚","‚ƒƒ…","„€„…","…‡†j","†q†x","†‡","ˆŠ\v‰ˆ","Š‹Œ","‹‰Œ","‹Ž\f","‘","‘’’“\f","“””¦","•––—","—š\f˜™","™›\fš˜","›œœš","œž","žŸŸ¦"," ¡¡¢","¢£\r£¤","¤¦¥","¥•¥ ","¦§¬","¨ª\t©«\t","ª©ª«","«­¬¨","¬­­¯","®§¯°","°®°±","±²³\b\r³","´\r´µ\rµ¶","¶Â·¸","¸Â\r\b¹Â","º»»¼","¼½½Â","¾Â¿Â","ÀÂÁ²","Á·Á¹","ÁºÁ¾","Á¿ÁÀ","ÂÑÃÄ\f","\vÄÅÅÐ","\r\fÆÇ\f\nÇÐ\r\v","ÈÉ\f\rÉÐ\tÊË","\f\fËÍ\tÌÎ\t","ÍÌÍÎ","ÎÐÏÃ","ÏÆÏÈ","ÏÊÐÓ","ÑÏÑÒ","ÒÓÑ"," %9AEKPT]agmotv{}‚„†‹œ¥","ª¬°ÁÍÏÑ"].join(""),s=(new r.atn.ATNDeserializer).deserialize(o),a=s.decisionToState.map(function(t,e){return new r.dfa.DFA(t,e)}),l=new r.PredictionContextCache,u=[null,"'grammar'","';'","'statExprSplit : '=== statement ^ === expression v ===' ;'","':'","'|'","'expression'","'?'","'+'","'*'","'MeaningfulSplit : '=== meaningful ^ ===' ;'","'('","')'","'~'","'.'"],c=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Brackets","LexerIdentifier","ParserIdentifier","String","LabelForParserRule","Newline","WhiteSpace","BlockComment","FragmentComment","LineComment","ArrowComment"],h=["grammarFile","grammerDecl","statExprSplit","statementRule","expressionRule","arithmeticRuleCollection","parserRuleAtom","lexerRuleCollection","meaningfulSplit","lexerRule","strings","lexerRuleExpr"];function p(t){return r.Parser.call(this,t),this._interp=new r.atn.ParserATNSimulator(this,s,a,l),this.ruleNames=h,this.literalNames=u,this.symbolicNames=c,this}function f(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_grammarFile,this}function d(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_grammerDecl,this}function y(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_statExprSplit,this}function g(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_statementRule,this}function v(t,e){return g.call(this,t),g.prototype.copyFrom.call(this,e),this}function x(t,e){return g.call(this,t),g.prototype.copyFrom.call(this,e),this}function m(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_expressionRule,this}function _(t,e){return m.call(this,t),m.prototype.copyFrom.call(this,e),this}function T(t,e){return m.call(this,t),m.prototype.copyFrom.call(this,e),this}function S(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_arithmeticRuleCollection,this}function E(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_parserRuleAtom,this}function C(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function A(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function k(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function b(t,e){return E.call(this,t),E.prototype.copyFrom.call(this,e),this}function R(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRuleCollection,this}function L(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_meaningfulSplit,this}function N(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRule,this}function I(t,e){return N.call(this,t),N.prototype.copyFrom.call(this,e),this}function O(t,e){return N.call(this,t),N.prototype.copyFrom.call(this,e),this}function P(t,e){return N.call(this,t),N.prototype.copyFrom.call(this,e),this}function w(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_strings,this}function F(t,e,n){return void 0===e&&(e=null),void 0!==n&&null!==n||(n=-1),r.ParserRuleContext.call(this,e,n),this.parser=t,this.ruleIndex=p.RULE_lexerRuleExpr,this}p.prototype=Object.create(r.Parser.prototype),p.prototype.constructor=p,Object.defineProperty(p.prototype,"atn",{get:function(){return s}}),p.EOF=r.Token.EOF,p.T__0=1,p.T__1=2,p.T__2=3,p.T__3=4,p.T__4=5,p.T__5=6,p.T__6=7,p.T__7=8,p.T__8=9,p.T__9=10,p.T__10=11,p.T__11=12,p.T__12=13,p.T__13=14,p.Brackets=15,p.LexerIdentifier=16,p.ParserIdentifier=17,p.String=18,p.LabelForParserRule=19,p.Newline=20,p.WhiteSpace=21,p.BlockComment=22,p.FragmentComment=23,p.LineComment=24,p.ArrowComment=25,p.RULE_grammarFile=0,p.RULE_grammerDecl=1,p.RULE_statExprSplit=2,p.RULE_statementRule=3,p.RULE_expressionRule=4,p.RULE_arithmeticRuleCollection=5,p.RULE_parserRuleAtom=6,p.RULE_lexerRuleCollection=7,p.RULE_meaningfulSplit=8,p.RULE_lexerRule=9,p.RULE_strings=10,p.RULE_lexerRuleExpr=11,f.prototype=Object.create(r.ParserRuleContext.prototype),f.prototype.constructor=f,f.prototype.grammerDecl=function(){return this.getTypedRuleContext(d,0)},f.prototype.statExprSplit=function(){return this.getTypedRuleContext(y,0)},f.prototype.lexerRuleCollection=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(R):this.getTypedRuleContext(R,t)},f.prototype.meaningfulSplit=function(){return this.getTypedRuleContext(L,0)},f.prototype.statementRule=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(g):this.getTypedRuleContext(g,t)},f.prototype.expressionRule=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(m):this.getTypedRuleContext(m,t)},f.prototype.accept=function(t){return t instanceof i?t.visitGrammarFile(this):t.visitChildren(this)},p.GrammarFileContext=f,p.prototype.grammarFile=function(){var t=new f(this,this._ctx,this.state);this.enterRule(t,0,p.RULE_grammarFile);try{this.enterOuterAlt(t,1),this.state=24,this.grammerDecl(),this.state=28,this._errHandler.sync(this);for(var e=this._interp.adaptivePredict(this._input,0,this._ctx);1!=e&&e!=r.atn.ATN.INVALID_ALT_NUMBER;)2===e&&(this.state=25,this.statementRule()),this.state=30,this._errHandler.sync(this),e=this._interp.adaptivePredict(this._input,0,this._ctx);this.state=31,this.statExprSplit(),this.state=35,this._errHandler.sync(this);for(e=this._interp.adaptivePredict(this._input,1,this._ctx);1!=e&&e!=r.atn.ATN.INVALID_ALT_NUMBER;)2===e&&(this.state=32,this.expressionRule()),this.state=37,this._errHandler.sync(this),e=this._interp.adaptivePredict(this._input,1,this._ctx);this.state=38,this.lexerRuleCollection(),this.state=39,this.meaningfulSplit(),this.state=40,this.lexerRuleCollection()}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},d.prototype=Object.create(r.ParserRuleContext.prototype),d.prototype.constructor=d,d.prototype.LexerIdentifier=function(){return this.getToken(p.LexerIdentifier,0)},d.prototype.accept=function(t){return t instanceof i?t.visitGrammerDecl(this):t.visitChildren(this)},p.GrammerDeclContext=d,p.prototype.grammerDecl=function(){var t=new d(this,this._ctx,this.state);this.enterRule(t,2,p.RULE_grammerDecl);try{this.enterOuterAlt(t,1),this.state=42,this.match(p.T__0),this.state=43,this.match(p.LexerIdentifier),this.state=44,this.match(p.T__1)}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},y.prototype=Object.create(r.ParserRuleContext.prototype),y.prototype.constructor=y,y.prototype.accept=function(t){return t instanceof i?t.visitStatExprSplit(this):t.visitChildren(this)},p.StatExprSplitContext=y,p.prototype.statExprSplit=function(){var t=new y(this,this._ctx,this.state);this.enterRule(t,4,p.RULE_statExprSplit);try{this.enterOuterAlt(t,1),this.state=46,this.match(p.T__2)}catch(e){if(!(e instanceof r.error.RecognitionException))throw e;t.exception=e,this._errHandler.reportError(this,e),this._errHandler.recover(this,e)}finally{this.exitRule()}return t},g.prototype=Object.create(r.ParserRuleContext.prototype),g.prototype.constructor=g,g.prototype.copyFrom=function(t){r.ParserRuleContext.prototype.copyFrom.call(this,t)},v.prototype=Object.create(g.prototype),v.prototype.constructor=v,p.StatValueContext=v,v.prototype.ParserIdentifier=function(){return this.getToken(p.ParserIdentifier,0)},v.prototype.parserRuleAtom=function(t){return void 0===t&&(t=null),null===t?this.getTypedRuleContexts(E):this.getTypedRuleContext(E,t)},v.prototype.accept=function(t){return t instanceof i?t.visitStatValue(this):t.visitChildren(this)},x.prototype=Object.create(g.prototype),x.prototype.constructor=x,p.StatListContext=x,x.prototype.ParserIdentifier=function(t){return void 0===t&&(t=null),null===t?this.getTokens(p.ParserIdentifier):this.getToken(p.ParserIdentifier,t)},x.prototype.accept=function(t){return t instanceof i?t.visitStatList(this):t.visitChildren(this)},p.StatementRuleContext=g,p.prototype.statementRule=function(){var t=new g(this,this._ctx,this.state);this.enterRule(t,6,p.RULE_statementRule);var e=0;try{switch(this.state=67,this._errHandler.sync(this),this._interp.adaptivePredict(this._input,4,this._ctx)){case 1:t=new x(this,t),this.enterOuterAlt(t,1),this.state=48,this.match(p.ParserIdentifier),this.state=49,this.match(p.T__3),this.state=50,this.match(p.ParserIdentifier),this.state=53,this._errHandler.sync(this),e=this._input.LA(1);do{this.state=51,this.match(p.T__4),this.state=52,this.match(p.ParserIdentifier),this.state=55,this._errHandler.sync(this),e=this._input.LA(1)}while(e===p.T__4);this.state=57,this.match(p.T__1);break;case 2:for(t=new v(this,t),this.enterOuterAlt(t,2),this.state=58,this.match(p.ParserIdentifier),this.state=59,this.match(p.T__3),this.state=63,this._errHandler.sync(this),e=this._input.LA(1);0==(-32&e)&&0!=(1<1)for(var i,o=0;i=t[1][o];o++)e[i]&&this.error("语句 "+i+" 同时在两个语句集合 "+e[i]+" 和 "+t[0]+" 中出现了"),e[i]=t[0],n(this.statementRules,i).length>1&&this.error(t[0]+" 下的子规则 "+i+' 包含了"|"');var s;for(r=0;s=this.expressionRules[r];r++)s[1].length>1&&"expression"!==s[0]&&this.error("表达式 "+s[0]+' 包含了"|"')},SymbolVisitor.prototype.visitGrammarFile=function(t){return this.visit(t.grammerDecl()),this.visit(t.statementRule()),this.visit(t.expressionRule()),this.visit(t.lexerRuleCollection(0)),this},SymbolVisitor.prototype.visitGrammerDecl=function(t){this.grammerName=t.children[1].getText()},SymbolVisitor.prototype.visitStatList=function(t){for(var e,n=t.ParserIdentifier(),r=0;e=n[r];r++)n[r]=e.getText();var i=n.shift();this.statementRules.push([i,n])},SymbolVisitor.prototype.visitStatValue=function(t){var e=t.ParserIdentifier(0).getText();this.statementRules.push([e,[e]])},SymbolVisitor.prototype.visitExprExpression=function(t){var e=[];this.expression_arithmetic_num=t.arithmeticRuleCollection().length;for(var n=0;n1){this.notEntry[t[e]]=!0;for(var n,r=0;n=o.check[r];r++){var i=this.getRule("statement",n);i.blockjs.nextStatement=o.check,this.setRule("statement",n,i),this.notEntry[n]=!0}}for(e=0;o=this.statementRules[t[e]];e++)this.notEntry[t[e]]||(this.notEntry[t[e]]=!1,delete o.blockjs.previousStatement,delete o.blockjs.nextStatement,delete o.blockjs.inputsInline,o.blockjs.colour=this.entryColor);var o,s=[],a=[];for(e=0;o=this.statementRules[t[e]];e++)if(o.check.length>1)a.push([t[e],o]);else{s.push(o),o.type="statement";var l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))},h="Blockly."+this.generLanguage+".";l.push(u+"function(block) {\n"),c(1);for(r=0;y=o.blockobj.args[r];r++){var p=this.varPrefix+o.blockobj.vars[r];if(y.id&&"field_image"!=y.data.type)"value"===y.blockType?(l.push(u+"var "+p+" = "+h+"valueToCode(block, '"),l.push(p+"', \n "+u+h+this.recieveOrder+")")):"statement"===y.blockType?(l.push(u+"var "+p+" = "+h+"statementToCode(block, '"),l.push(p+"')")):(l.push(u+"var "+p+" = block.getFieldValue('"),l.push(p+"')")),"field_checkbox"===y.data.type&&l.push(" === 'TRUE'"),l.push(";\n"),y.multi,{field_checkbox:!0,field_dropdown:!0,field_number:!0,field_colour:!0,field_angle:!0,field_image:!0}[y.data.type]||y.omitted||(l.push(u+"if ("+p+"==='') {\n"),c(1),l.push(u+"throw new OmitedError(block,'"+p+"','"),l.push(t[e]+"');\n"),c(-1),l.push(u+"}\n")),"field"===y.blockType&&(l.push(u+p+" = "+this.grammerName+"Functions.pre('"),l.push(y.id+"')("+p+");\n"))}o.blockobj.inject.generFunc?(o.blockobj.inject.override&&(c(-9999),(l=[]).push(u+"function(block) {\n"),c(1)),l.push(u+o.blockobj.inject.generFunc.split("\n").join("\n"+u)),l.push("\n")):(l.push(u+"var code = '1111111111;\\n';\n"),l.push(u+"return code;\n")),c(-1),l.push(u+"}"),o.generFunc=l.join("")}t=Object.keys(this.expressionRules);var f;for(e=0;f=this.expressionRules[t[e]];e++)if(f.check.length>1)a.push([t[e],f]);else{s.push(f),f.type="value";l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))},h="Blockly."+this.generLanguage+".";l.push(u+"function(block) {\n"),c(1);for(r=0;y=f.blockobj.args[r];r++){p=this.varPrefix+f.blockobj.vars[r];if(y.id)"value"===y.blockType?(l.push(u+"var "+p+" = "+h+"valueToCode(block, '"),l.push(p+"', \n "+u+h+this.recieveOrder+")")):"statement"===y.blockType?(l.push(u+"var "+p+" = "+h+"statementToCode(block, '"),l.push(p+"')")):(l.push(u+"var "+p+" = block.getFieldValue('"),l.push(p+"')")),"field_checkbox"===y.data.type&&l.push(" === 'TRUE'"),l.push(";\n"),y.multi,{field_checkbox:!0,field_dropdown:!0,field_number:!0,field_colour:!0,field_angle:!0,field_image:!0}[y.data.type]||y.omitted||(l.push(u+"if ("+p+"==='') {\n"),c(1),l.push(u+"throw new OmitedError(block,'"+p+"','"),l.push(t[e]+"');\n"),c(-1),l.push(u+"}\n")),"field"===y.blockType&&(l.push(u+p+" = "+this.grammerName+"Functions.pre('"),l.push(y.id+"')("+p+");\n"))}f.blockobj.inject.generFunc?(f.blockobj.inject.override&&(c(-9999),(l=[]).push(u+"function(block) {\n"),c(1)),l.push(u+f.blockobj.inject.generFunc.split("\n").join("\n"+u)),l.push("\n")):(l.push(u+"var code = 0000000000;\n"),l.push(u+"return [code, "+h+this.sendOrder+"];\n")),c(-1),l.push(u+"}"),f.generFunc=l.join("")}var d;for(e=0;d=s[e];e++){d.args=[],d.argsType=[],d.argsGrammarName=[],d.fieldDefault=[];var y;for(r=0;y=d.blockobj.args[r];r++)y.id&&"field_image"!=y.data.type&&(d.args.push(d.blockobj.vars[r]),d.argsType.push(y.blockType),d.argsGrammarName.push(y.id),d.fieldDefault.push(d.blockobj.fieldDefault[r]));l=[],u="",c=function(t){t>0&&(u+=Array(2*t+1).join(" ")),t<0&&(u=u.slice(0,2*t))};var g=this.grammerName,v=d.check[0];l.push(u+"function (inputs,isShadow,comment) {\n"),c(1),l.push(u+"return "+g+"Functions.xmlText('"),l.push(v+"',inputs,isShadow,comment);\n"),c(-1),l.push(u+"}"),d.xmlText=l.join("")}this.temp_xml=s,this.temp_collection=a},EvalVisitor.prototype.generBlocks=function(){var t=[],e="",n=function(t){t>0&&(e+=Array(2*t+1).join(" ")),t<0&&(e=e.slice(0,2*t))};temp_xml=this.temp_xml,delete this.temp_xml,temp_collection=this.temp_collection,delete this.temp_collection,t.push(e+"// 语句集合和表达式集合\n"),t.push(e+this.grammerName+"Blocks = {\n"),n(1);for(var r,i=0;r=temp_collection[i];i++)t.push(e+'"'+r[0]+'": '),t.push(JSON.stringify(r[1].check,null,2).split("\n").join("\n"+e)),t.push(",\n");function o(t,e,n){var r=e.blockjs,i=JSON.stringify(r).split("\n").join("\n"+n),o={};r=JSON.parse(i);for(var s,a=0;s=e.blockobj.args[a];a++)if(s.id){var l=t.getRule(s.blockType,s.id);l&&1!==l.check.length&&(r.args0[a].check="1_fry2_3_inrgv"+s.id,o['"1_fry2_3_inrgv'+s.id+'"']=t.grammerName+"Blocks."+s.id)}if(r.nextStatement)for(var u,c=0;u=temp_collection[c];c++)if(-1!==u[1].check.indexOf(r.type)){r.nextStatement="1_fry2_3_inrgv"+u[0],o['"1_fry2_3_inrgv'+u[0]+'"']=t.grammerName+"Blocks."+u[0];break}for(var h in i=JSON.stringify(r,null,2).split("\n").join("\n"+n),o)i=i.split(h).join(o[h]);return i}t.pop(),t.push("\n"),n(-1),t.push(e+"}\n"),t.push(e+"// 域,提供外部引用_List和_Img,修改生成的此处的代码是不会实际修改域的,这一段可以删除\n"),t.push(e+this.grammerName+"Blocks = Object.assign("),t.push(this.grammerName+"Blocks,"),t.push(JSON.stringify(this.lexerRules,null,2).split("\n").join("\n"+e)),t.push(e+");\n"),t.push(e+"// 所有方块的实际内容\n"),t.push(e+this.grammerName+"Blocks = Object.assign("),t.push(this.grammerName+"Blocks,{\n"),n(1);var s;for(i=0;s=temp_xml[i];i++)t.push(e+'"'+s.check[0]+'": {\n'),n(1),t.push(e+'"type": "'+s.type+'",\n'),t.push(e+'"json": '),t.push(o(this,s,e)),t.push(",\n"),t.push(e+'"generFunc": '),t.push(s.generFunc.split("\n").join("\n"+e)),t.push(",\n"),t.push(e+'"args": '),t.push(JSON.stringify(s.args,null,2).split("\n").join("\n"+e)),t.push(",\n"),t.push(e+'"argsType": '),t.push(JSON.stringify(s.argsType,null,0)),t.push(",\n"),t.push(e+'"argsGrammarName": '),t.push(JSON.stringify(s.argsGrammarName,null,0)),t.push(",\n"),t.push(e+'"fieldDefault": '),t.push(JSON.stringify(s.fieldDefault,null,0)),t.push(",\n"),t.push(e+'"menu": '),t.push(s.blockobj.inject.menu||"[]"),t.push(",\n"),t.push(e+'"xmlText": '),t.push(s.xmlText.split("\n").join("\n"+e)),t.push("\n"),n(-1),t.push(e+"},\n");t.pop(),t.push(e+"}\n"),n(-1),t.push(e+"});\n"),this.blocks=t.join("")},EvalVisitor.prototype.SpeicalLexerRule=function(t){var e={};return"Bool"===t?(e={type:"field_checkbox",checked:!0},this.setRule("lexer",t,e),!0):"Int"===t?(e={type:"field_number",value:0,min:0,precision:1},this.setRule("lexer",t,e),!0):"Number"===t?(e={type:"field_number",value:0},this.setRule("lexer",t,e),!0):"Colour"===t?(e={type:"field_colour",colour:"#ff0000"},this.setRule("lexer",t,e),!0):"Angle"===t?(e={type:"field_angle",angle:90},this.setRule("lexer",t,e),!0):"BGNL"===t&&(e={type:"input_dummy"},this.setRule("lexer",t,e),!0)},EvalVisitor.prototype.visitGrammarFile=function(t){this.visit(t.lexerRuleCollection(0)),this.visit(t.statementRule()),this.expression_arithmetic_num=0,this.visit(t.expressionRule()),this.assemble()},EvalVisitor.prototype.visitStrings=function(t){for(var e,n=t.String(),r=0;e=n[r];r++)n[r]=this.escapeString(e.getText());return n.join(" ")},EvalVisitor.prototype.visitLexerRuleStrings=function(t){var e=t.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(e)){var n=this.visit(t.strings(0));this.setRule("lexer",e,n)}},EvalVisitor.prototype.visitLexerRuleList=function(ctx){var lexerId=ctx.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(lexerId))if("_List"===lexerId.slice(-5)||"_Img"===lexerId.slice(-4)){var strings=ctx.strings(),values=this.matchInject(lexerId);values=values?eval(values):[];for(var ii=0,value;value=strings[ii];ii++){var string_=this.visit(value);strings[ii]=[string_,null==values[ii]?string_:values[ii]]}if("_List"===lexerId.slice(-5))var lexervalue={type:"field_dropdown",options:strings};else var lexervalue={type:"field_image",src:strings[0][0],width:strings[1]&&strings[1][0]||0,height:strings[2]&&strings[2][0]||0,alt:"*"};this.setRule("lexer",lexerId,lexervalue)}else this.visitLexerRuleComplex(ctx)},EvalVisitor.prototype.visitLexerRuleComplex=function(t){var e=t.LexerIdentifier(0).getText();if(!this.SpeicalLexerRule(e)){var n={type:"field_input",text:e+"_default"};this.setRule("lexer",e,n)}},EvalVisitor.prototype.visitStatValue=function(t){this.status={name:t.ParserIdentifier(0).getText(),type:"statement",message:[],args:[]},this.visitChildren(t);var e=this.status;delete this.status,this.initAssemble(e)},BlocklyGrammerVisitor.prototype.visitArithmeticRuleCollection=function(t){this.status={name:"expression",type:"value",message:["%1"],args:[{id:"expression",blockType:"value",omitted:!1,data:{type:"input_value"}}]},this.visitChildren(t),this.status.name="expression_arithmetic_"+this.expression_arithmetic_num,this.expression_arithmetic_num++;var e=this.status;delete this.status,this.initAssemble(e)},BlocklyGrammerVisitor.prototype.visitExprValue=function(t){this.status={name:t.ParserIdentifier(0).getText(),type:"value",message:[],args:[]},this.visitChildren(t);var e=this.status;delete this.status,this.initAssemble(e)},EvalVisitor.prototype.visitParserAtomExpr=function(t){var e={id:"expression",blockType:"value",omitted:t.children.length>1,data:{type:"input_value"}};this.status.args.push(e),this.status.message.push("%"+this.status.args.length)},EvalVisitor.prototype.visitParserAtomParserId=function(t){var e=t.children[0].getText(),n=t.children.length>1&&t.children[1].getText()||"",r=this.getRule("value",e)?"value":"statement",i={id:e,blockType:r,omitted:"?"===n||"*"===n,multi:"+"===n||"*"===n,data:{type:"input_"+r}};"value"===r&&i.multi&&this.error(this.status.name+" 下出现了复数组合的表达式 "+e+n),this.status.args.push(i),this.status.message.push("%"+this.status.args.length)},EvalVisitor.prototype.visitParserAtomLexerId=function(t){var e=t.children[0].getText(),n=this.getRule("lexer",e);if(n){var r={id:e,blockType:"field",omitted:t.children.length>1,data:n};"BGNL"===e&&(r={data:n}),"string"!=typeof n?(this.status.args.push(r),this.status.message.push("%"+this.status.args.length)):this.status.message.push(n)}},EvalVisitor.prototype.visitParserAtomStr=function(t){var e=this.escapeString(t.String().getText());this.status.message.push(e)},exports.SymbolVisitor=SymbolVisitor,exports.EvalVisitor=EvalVisitor},function(t,e){e.OmitedError=function(){return"//生成代码中,当一个不允许省略的值或块省略时,会抛出这个错误\nfunction OmitedError(block, var_, rule, fileName, lineNumber) {\n var message = 'no omitted '+var_+' at '+rule;\n var instance = new Error(message, fileName, lineNumber);\n instance.block = block;\n instance.varName = var_;\n instance.blockName = rule;\n instance.name = 'OmitedError';\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n if (Error.captureStackTrace) {\n Error.captureStackTrace(instance, OmitedError);\n }\n return instance;\n}\n\nOmitedError.prototype = Object.create(Error.prototype);\nOmitedError.prototype.constructor = OmitedError;\n//处理此错误的omitedcheckUpdateFunction定义在下面"},e.Functions_pre=function(t){return`${t}Functions.Int_pre = function(intstr) {\n return parseInt(intstr);\n}\n\n${t}Functions.Number_pre = function(intstr) {\n return parseFloat(intstr);\n}\n\n//返回各LexerRule文本域的预处理函数,方便用来统一转义等等\n${t}Functions.pre = function(LexerId) {\n if (${t}Functions.hasOwnProperty(LexerId+'_pre')) {\n return ${t}Functions[LexerId+'_pre'];\n }\n return function(obj){return obj}\n}`},e.Functions_xmlText=function(t){return`//构造这个方法是为了能够不借助workspace,从语法树直接构造图块结构\n//inputs的第i个元素是第i个args的xmlText,null或undefined表示空\n//inputs的第rule.args.length个元素是其下一个语句的xmlText\n${t}Functions.xmlText = function (ruleName,inputs,isShadow,comment) {\n var rule = ${t}Blocks[ruleName];\n var blocktext = isShadow?'shadow':'block';\n var xmlText = [];\n xmlText.push('<'+blocktext+' type="'+ruleName+'">');\n if(!inputs)inputs=[];\n for (var ii=0,inputType;inputType=rule.argsType[ii];ii++) {\n var input = inputs[ii];\n var _input = '';\n var noinput = (input===null || input===undefined);\n if(noinput && inputType==='field') continue;\n if(noinput) input = '';\n if(inputType!=='field') {\n var subList = false;\n var subrulename = rule.argsGrammarName[ii];\n var subrule = ${t}Blocks[subrulename];\n if (subrule instanceof Array) {\n subrulename=subrule[subrule.length-1];\n subrule = ${t}Blocks[subrulename];\n subList = true;\n }\n _input = subrule.xmlText([],true);\n if(noinput && !subList && !isShadow) {\n //无输入的默认行为是: 如果语句块的备选方块只有一个,直接代入方块\n input = subrule.xmlText();\n }\n }\n xmlText.push('<'+inputType+' name="'+rule.args[ii]+'">');\n xmlText.push(_input+input);\n xmlText.push('');\n }\n if(comment){\n xmlText.push('/g,'] ] >'));\n xmlText.push(']]>');\n }\n var next = inputs[rule.args.length];\n if (next) {//next\n xmlText.push('');\n xmlText.push(next);\n xmlText.push('');\n }\n xmlText.push('');\n return xmlText.join('');\n}`},e.Functions_blocksIniter=function(t,e){return`//把各方块的信息注册到Blockly中\n${t}Functions.blocksIniter = function(){\n var blocksobj = ${t}Blocks;\n for(var key in blocksobj) {\n var value = blocksobj[key];\n if(value instanceof Array)continue;\n if(/^[A-Z].*$/.exec(key))continue;\n (function(key,value){\n if (value.menu && value.menu.length) {\n var menuRegisterMixin={\n customContextMenu: function(options) {\n for(var ii=0,op;op=value.menu[ii];ii++){\n var option = {enabled: true};\n option.text = op[0];\n var check = 'function('\n if (option.text.slice(0,check.length)==check){\n option.text=eval('('+option.text+')(this)');\n }\n (function(block,fstr){\n option.callback = function(){\n eval(fstr)\n }\n })(this,op[1]);\n options.push(option);\n }\n }\n };\n value.json.extensions=value.json.extensions||[];\n var mixinName = 'contextMenu_${t}_'+value.json.type\n value.json.extensions.push(mixinName)\n Blockly.Extensions.registerMixin(mixinName,menuRegisterMixin);\n }\n Blockly.Blocks[key] = {\n init: function() {this.jsonInit(value.json);}\n }\n Blockly.${e}[key] = value.generFunc;\n })(key,value);\n }\n}`},e.mainFileTPL=function(t,e,n,r,i,o,s,a){return[`\n\n\n${t} --antlr-blockly`,'\n diff --git a/_server/table/comment.js b/_server/table/comment.js index 9a88381c..698cf390 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -335,7 +335,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_leaf": true, "_type": "select", "_select": { - "values": [1,2,3,4], + "values": [null,1,2,3,4], }, "_docs": "动画帧数", "_data": "null代表素材默认帧数" diff --git a/main.js b/main.js index 7f502e20..57e258ef 100644 --- a/main.js +++ b/main.js @@ -197,6 +197,13 @@ main.prototype.init = function (mode, callback) { main.mode = mode; main.loadJs('project', main.pureData, function(){ + if (items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffect + && items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffectTip) { + alert('即将跳转到接档工具...'); + window.location = 'migration.html'; + return; + } + var mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main; for(var ii in mainData)main[ii]=mainData[ii]; diff --git a/migration.html b/migration.html new file mode 100644 index 00000000..7655fda3 --- /dev/null +++ b/migration.html @@ -0,0 +1,587 @@ + + + + + + + + HTML5魔塔样板V2.7接档工具 + + +

HTML5魔塔样板V2.7接档工具

+ + + + + + + + + + + + +

请严格按照如下流程,一步步进行接档操作。请勿随意增删接档过程,以免出现编辑器白屏、闪退等情况。

+ +

+

    +
  1. 做好备份,做好备份,做好备份!!!接档前请一定先做好备份!
  2. +
  3. 使用RM转H5刻塔器所刻的塔不适用于此接档工具。
  4. +
  5. 将V2.6.6样板中project目录下,除了project/functions.jsproject/plugins.js以外的其他文件和文件夹,直接复制到最新的V2.7样板中,然后打开本接档工具。
  6. +
  7. 点击上述的「点此一键接档」,并看到红字提示接档成功。此时编辑器应该可以正常打开。若此时无法打开编辑器请联系小艾处理。
  8. +
  9. 下拉框切到「全塔属性」,并注意以下内容: +
      +
    • 现在素材和使用的其他图片等在文件夹中被拆分,请检查对应的图片文件已经正确移动到对应的文件夹。
    • +
    • 「难度选择项」的逻辑在V2.7中被修改;请重新制作。
    • +
    • 「全局商店」的结构在V2.7中被修改;请重新制作。
    • +
    • 部分方框进行了合并,请一个个仔细检查是否存在问题。
    • +
    +
  10. +
  11. 下拉框切到「楼层属性」,并注意以下内容: +
      +
    • item_ratio被重命名为ratio,请自行修改。
    • +
    • 楼层贴图的结构在V2.7中被修改;请重新制作。
    • +
    +
  12. +
  13. 素材区的如下图块有所变动: +
      +
    • 三色墙和六色门从terrains中解除引用;请用animates中的进行绘制。
    • +
    • 如下图块的图块属性已被重置:三色墙、六色门、四色网、四个单向箭头、亮灯。
    • +
    • 所有的noPass:false都改成canPass:true;请仔细检查可通行性。
    • +
    • 如下道具的道具属性已被重置,请仔细检查:三色钥匙、四色宝石(已改名Gem)、四色血瓶、破墙、破冰、炸弹、地震、冰冻、大黄门钥匙、上下楼器。
    • +
    • 即时道具获得的说明和提示文字均改成了${}计算,ratio需写明全称(参见宝石血瓶写法),请自行处理。
    • +
    • npc48的默认动画帧数null改回为4;如需静止状态请手动改成1。
    • +
    +
  14. +
  15. 下拉框切换到「脚本编辑」,并请重新编辑各个自己改过的函数(可以双开一个原版V266项目和当前接档的项目进行处理)。 +
      +
    • 请注意:V2.7中的经验全部从experience替换成简写的exp;写伤害计算等时请尤其注意。
    • +
    • 部分文案有所改变,如「阻击」从snipe改名repulseshoes改名amulet等等,请自行处理。
    • +
    • setInitData已被删除,请将需要的额外初始化代码写入startText中。
    • +
    • afterChangeLight, afterUseBomb, afterPassNet已被删除,请去对应图块属性内修改。
    • +
    • 其他基本每个函数都有大幅修改,请勿直接拿原来的脚本整体覆盖,而是重新对函数进行需要的编辑!
    • +
    +
  16. +
  17. 下拉框切换到「插件编写」,并重新新增自己加过的插件。 +
      +
    • V2.7不能保证插件的兼容性,请谨慎测试。
    • +
    • 如果插件出现不可用问题,请自行联系插件原作者更新插件到支持V2.7的版本。
    • +
    +
  18. +
  19. 请仔细检查每个道具的道具效果、每个怪物的属性、每个楼层属性、以及每个点的事件(建议双开对比)。主要变动如下: +
      +
    • 「数值增减」事件已被删除并被数值操作+运算符替代,编辑器将解析为自定义事件;但是游戏中仍然可以正确执行(你可以选择替换与否)。
    • +
    • 「隐藏事件」将不再默认删除该点(而只是纯粹的隐藏);请给有需要的「隐藏事件」勾选「同时删除」选项。
    • +
    • 「绘制圆」「绘制圆边框」「重启当前事件」已经被删除,并且无法再在游戏中使用,请替换成等价的写法。
    • +
    +
  20. +
  21. 接档后请做好充分的测试!最好能跑通录像以确认接档无误!
  22. +
+

+ + + + + diff --git a/project/materials/animates.png b/project/materials/animates.png index 01305fd67a20b69be859e161643fe688d4000c50..811075eae4081dba2850f02bde5b201bafa0d375 100644 GIT binary patch literal 34472 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 KMNUMnLSTY7#1WqW literal 35445 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
*GQks$N+z@OMn4^q2eGTcMR)A%^YLCE2=#( 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 diff --git a/project/materials/npcs.png b/project/materials/npcs.png index 9647d7d9d55d67330ab8ccc4554d1824c76e3990..7cbcb9503dc28ef82a5f443c19552a4d15c3fb28 100644 GIT binary patch delta 20360 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 Lqnkt>6!!lBA!EYB delta 20392 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õ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 Nhl!zu0a?!_`aiqg0?Ysa diff --git a/server.py b/server.py index 6aaea881..3c368327 100644 --- a/server.py +++ b/server.py @@ -7,6 +7,7 @@ import sys import json import os +import shutil import base64 isPy3 = sys.version_info > (3, 0) @@ -141,6 +142,46 @@ def listFile(): if os.path.isfile(os.path.join(filename, f))] return "[" + ", ".join(['"'+f+'"' for f in files]) + "]" +@app.route('/makeDir', methods=['POST']) +def makeDir(): + data = process_request() + filename = data.get('name', None) + if filename is None or not is_sub(filename): + abort(403) + return + if not os.path.exists(filename): + os.makedirs(filename) + return 'Success' + +@app.route('/moveFile', methods=['POST']) +def moveFile(): + data = process_request() + src = data.get('src', None) + dest = data.get('dest', None) + if src is None or dest is None or not is_sub(src) or not is_sub(dest): + abort(403) + return + if not os.path.exists(src): + abort(404) + return + if os.path.exists(dest): + os.remove(dest) + os.rename(src, dest) + return 'Success' + +@app.route('/deleteFile', methods=['POST']) +def deleteFile(): + data = process_request() + name = data.get('name', None) + if name is None or not is_sub(name): + abort(403) + return + if os.path.isfile(name): + os.remove(name) + elif os.path.isdir(name): + shutil.rmtree(name) + return 'Success' + def port_used(port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = True From 4a6c5042ac1fe82c0d6d3ee216d0b82bf70a4c62 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 23 May 2020 20:26:42 +0800 Subject: [PATCH 77/80] =?UTF-8?q?Fix=202.7=20=E6=8E=A5=E6=A1=A3=E5=B7=A5?= =?UTF-8?q?=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API列表.txt | 4 ---- _docs/api.md | 4 ---- libs/control.js | 2 -- libs/utils.js | 14 -------------- main.js | 4 ++-- migration.html | 6 +++--- project/data.js | 2 +- server.py | 2 ++ v2.x-final更新.txt | 3 ++- 9 files changed, 10 insertions(+), 31 deletions(-) diff --git a/API列表.txt b/API列表.txt index 6140cf9e..2f2bb602 100644 --- a/API列表.txt +++ b/API列表.txt @@ -2142,10 +2142,6 @@ core.showWithAnimate(obj, speed, callback) / core.hideWithAnimate(obj, speed, ca 动画淡入或淡出一个对象。 -core.hashCode(obj) -计算一个对象的哈希值。 - - core.same(a, b) 判定a和b是否相同,包括类型相同和值相同。 如果a和b都是数组,则会递归依次比较数组中的值;如果都是对象亦然。 diff --git a/_docs/api.md b/_docs/api.md index badadd59..78f7c55e 100644 --- a/_docs/api.md +++ b/_docs/api.md @@ -2142,10 +2142,6 @@ core.showWithAnimate(obj, speed, callback) / core.hideWithAnimate(obj, speed, ca 动画淡入或淡出一个对象。 -core.hashCode(obj) -计算一个对象的哈希值。 - - core.same(a, b) 判定a和b是否相同,包括类型相同和值相同。 如果a和b都是数组,则会递归依次比较数组中的值;如果都是对象亦然。 diff --git a/libs/control.js b/libs/control.js index b37438f9..448571c9 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1760,8 +1760,6 @@ control.prototype._doSL_replayLoad_afterGet = function (id, data) { if (!data) return core.drawTip("无效的存档"); if (data.version != core.firstData.version) return core.drawTip("存档版本不匹配"); if (data.hard != core.status.hard) core.drawTip("游戏难度不匹配!"); - if (data.hashCode != null && data.hashCode != core.utils.hashCode(data.hero)) - return alert("存档校验失败,请勿修改存档文件!"); var route = core.subarray(core.status.route, core.decodeRoute(data.route)); if (route == null || data.hero.flags.__seed__ != core.getFlag('__seed__')) return core.drawTip("无法从此存档回放录像"); diff --git a/libs/utils.js b/libs/utils.js index cc8ac172..a4f7171f 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -1091,20 +1091,6 @@ utils.prototype._decodeCanvas = function (arr, width, height) { tempCanvas.putImageData(imgData, 0, 0); } -utils.prototype.hashCode = function (obj) { - if (typeof obj == 'string') { - var hash = 0, i, chr; - if (obj.length === 0) return hash; - for (i = 0; i < obj.length; i++) { - chr = obj.charCodeAt(i); - hash = ((hash << 5) - hash) + chr; - hash |= 0; - } - return hash; - } - return this.hashCode(JSON.stringify(obj).split("").sort().join("")); -} - utils.prototype.same = function (a, b) { if (a == null && b == null) return true; if (a == null || b == null) return false; diff --git a/main.js b/main.js index 57e258ef..90b360f0 100644 --- a/main.js +++ b/main.js @@ -186,8 +186,8 @@ function main() { this.floors = {} this.canvas = {}; - this.__VERSION__ = "2.6.6"; - this.__VERSION_CODE__ = 99; + this.__VERSION__ = "2.7"; + this.__VERSION_CODE__ = 127; } main.prototype.init = function (mode, callback) { diff --git a/migration.html b/migration.html index 7655fda3..1cbc9670 100644 --- a/migration.html +++ b/migration.html @@ -118,7 +118,7 @@ function action_data(callback) { // Step 0: 移动目录 // materials - ['animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48', 'icons'].forEach(function (one) { + ['animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48', 'icons', 'airwall', 'fog', 'keyboard'].forEach(function (one) { fs.moveFile('project/images/'+one+".png", 'project/materials/'+one+'.png', function (e, d) {}); }); main.tilesets.forEach(function (one) { @@ -127,7 +127,7 @@ function action_data(callback) { }); // bgms main.bgms.forEach(function (one) { - fs.moveFile('project/bgms/'+one, 'project/bgms/'+one, function (e,d) {}); + fs.moveFile('project/sounds/'+one, 'project/bgms/'+one, function (e,d) {}); }) // Step 1: 重置levelChoose和shop @@ -308,7 +308,7 @@ function action_items(callback) { var data = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a[one]; if (!data) return; for (var id in data) { - if (data[id] != null) + if (data[id] != null && items[id]) items[id][one] = data[id]; } }); diff --git a/project/data.js b/project/data.js index 40c16e7d..c77e5f3b 100644 --- a/project/data.js +++ b/project/data.js @@ -87,7 +87,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "firstData": { "title": "魔塔样板", "name": "template", - "version": "Ver 2.6.6", + "version": "Ver 2.7", "floorId": "sample0", "hero": { "image": "hero.png", diff --git a/server.py b/server.py index 3c368327..04533e94 100644 --- a/server.py +++ b/server.py @@ -164,6 +164,8 @@ def moveFile(): if not os.path.exists(src): abort(404) return + if src == dest: + return 'Success' if os.path.exists(dest): os.remove(dest) os.rename(src, dest) diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 5f0b5cc9..df7659ea 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -54,7 +54,7 @@ (已完成!) 大屏幕下放大游戏界面 (已完成!) 最近使用/最常使用的图块 (已完成!) loader并行加载 -合并items.js +(已完成!) 合并items.js (已完成!) 增加fonts目录,全塔属性增加fonts引用 (已完成!) 右边框输入完后解析按钮高亮 (已完成!) 32x48的门 @@ -68,6 +68,7 @@ (不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 (已完成!) 合并main中一些设置内容 (已完成!) \t[this], 勇士朝下,flag:arg清理,瞬移扣血 +nowLoc;同步存档合并;右键反复弹出;失去焦点右键;地图编辑框无效 ------------- From 5e547229e4b0eda467e07d4f082bb8cf76f53d3a Mon Sep 17 00:00:00 2001 From: tocque Date: Sat, 23 May 2020 20:29:03 +0800 Subject: [PATCH 78/80] fix bug in server --- 启动服务.exe | Bin 55808 -> 55808 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/启动服务.exe b/启动服务.exe index d3b6be5be50fc9cd95b37a88173f3aa1b1ed8484..182127a71d4920eb13c55ab8a1edb658876e3ec1 100644 GIT binary patch delta 2541 zcmZ9OeNa@_8Ha!8-h1w@Y}jR4B(Z!1vPt+5h)fbv$6$fo1dx?QL6B(eGNw}*lQ<)e zNrSi`#7V@AGB+4fCnJv4fW}t4SWPlEqL_{;BJI#=Gujkmnskz4C;X8ynUwZD@7`o$ z@6JBwJiqt7=bW8|-R&IFJ4f`rFY2+>OMSf=Vxn)jNo=!($dSPrAl*87rNC+yIbzD{ z64C4vH^EmGQG-OJ1=z9+5aeONoQh>@uPznmt+&c{WE5sPa@&D~0*~p)9i~YkjYnyu z;h6Qq@)hDuYgc)?IBvaB{;KO&RM_-uLfZ+ex*{j>Bu(=h+kQf;=KjX&sPH>ulz2q$ zh&5D^ElyeQS2T*>TG@d>X(Sc!ZwJO{98aNn{g%zG&-|=S9d%$Kp^36p^%&RzB$4_n zS5*gT93mgL4hEKp)3Lt={-8(q8Ui8T05Q|OpZJOU0P%h2A!4(Bg!rO<$nfHoq+yyL z)l|~Pd4PGIS)iY!d{{qan5I)3Fd92Yoo9*Z35xBSVmI@rDQf;-T`{bkjndHQQ}Vh? z@f$Ae=GF=KSz7cwZ|Sx-8@0C)xW)NZ&f~}WP`gOgpmv40f?tx$rH*^cJ4MVF9}t&{ z4~Z`^i^UBiDlovZgUcs)KExbko?-TJ^(xOlC3?~4`X}+UoFSGNvqlMSh%b#)`m^}j zF!6%VAx$`wUBq{iJj7~wgnN846)SM3RQ-3$)J$a24Ru-c)?gnd+xG8xs|-YU%vWa>(Xk z$gZ{c>SO}W_|=+Sc;2^0CSuWjyu)2{?kBC!t6MTQ$rMcH#5=w+w#xaa%8lDA?yXkq zvQrDU%S`ly_%3HVohuVB+xE1#Ti%U++kWodZB^H_RPK}aV9)Y+KYaVi25eLPehk`1 z{ba+oT@p#S7pLQfJA4PNFKRkGLoy#Fwehu%7%{6OlqcS`-U#JI$7CVS)WuI)k}xJ8 zz@%+KvSR$lwv}WLB7a4^GeY(-nrwT9>=E?XwvB8tMr>Q7jmssNwrv;HN|CrSzREzt zm=#|BNOVe8VD}o8^yQ(Il+;UbWej;n|tZfJ6zsR=Rc1+Ha z?PS~MY)t-2hVU{QuY(Z!+4}A>JkRSP9J4mord6HhtQ!fKqyF#hi{<#ET{{VMew1Xn1;^z?deB`;4m}028 z!=?Bo=N_M$?{%gTJG@!M4cxQHRJq5O_g#Kjs3a&A^%TYUYDbNtWRg(gV&c2|G)CMHQd}}Y!W$I%zR>E zW0KjQQ*PFs4gI3)z5HE&zg!vn_~K`Jik6;kKnS;lCfsi6&@$Z4*tJU&dhE^1TSNi< z65~%cb(VAiL}uuD1z1@htUq4Y@Q{DqQ23pq!tV0JcN~s|t~f>FFYRAt>Nvl%S|-!P aiCD*EtBAS(^tIF`m&Uw*{kP~_lAk; zzkB}Q`R+L}2I=2IYasyx=Nfa4-=ZNRk8YgN5CtPWM>(amS7_Ih3h(pUYO z=sv1Cs*5vTpB*mVJifA9A7)oM(L%MwP1v;w$f6jSySO$)*I!aTtA>NK#OsN#gTFH)+bw~x z|7o(oyPLf1eTF>e43JCBIJwmvuzc8+^#Y9#8M@NV^&tB;JHDsl1wuk*ujvoKV)HWDH5xO+{br|qyzv77<+&bbNqD9~4Exqn$Z@SwEjB))V zuBVRmvGEqohKzT~1^h30Jo>m}z7eua{E3_+J|MTT)5Kq_h`>G$n|S&a9v@)i>~S{6 zvmf#J3h6`4bBP?1SI7$MGphohh`(96^u~W_+1TtC(uR{Q$v3mck+m|;JsC0=3*eKw ze}c>{Kq1}GSV(UT_F%-DF9p`P=_@l|t*9-HOrly%k?x3Lwp}6(OrE6E7HoE=N(=XK zieZhckP_?M)Mr0H+r~M)BdR??>3oxlDUHJccdp$(Pp0E|K(DzGPx%+i3{1U?cNl-u zyIgtZwdZ%p9Govsb^ObELf(d&l2qE|eL`)U_geWHS%BU!-{q{Oa~0qhZtC)_mv>;d zn||)wqB`cc&+V6!u(K}J5C3jT``o1a1Bknc`Y9cB)4L)IcVZ}&@E!kt2XRk(CemklxAYkO|8ahISWZQZKt`}$XJ+KWncOUwW@ALWJFeDN2{*Iuq@+!8ANDV zDs7+?!UZ?IPwD&UeJC~eETtddf#s=mn$lbhx@jk+8azT@6nf3;)(x{3N8Hp&bMp`{ z)N@PGP zcq{WMGmJjfS3j|4FV}jIjxp;0zkN}MWA5BB7c8#~((1?7V>%oI?>_*(Dsv0JG{&$ozj3rh!d?+KO#$TN)W~tF@-!LZ_ zUu2dW6H;UIf;DDNFqh;At3%xMrdiua8`I1IBhy-hyK|Ca5ngoeur7)-zE8!ln3a8} zbx_#8Qp-UlYRM4l$r?0~VJsmV@esKPKO~o6rR7Ah44o9(@DuV8{EU1QYspSTt!zAl z&DK5eAY|VIKkCSd=p+MJO_pODIh~!w2Dv^TJE`8pl~#5IenpkX@E+NXkL_Ws#pJY$ zi0Dg^&{nbS>_+xEc9=aS`cR&BN+{|)#g$K7`_P#NL$6@6g=~PWWP@z2v7e6K#^V)i zhp|6Gr5+A1uu)Slw2_Uo&#@=jVK&KLWMS!k!4|SbY$aR8wz2JOl#R0|$*#$1Ne-1# zFVx0H**JTWO|r0cPa%7fO|nSiI$O!Mu~9b8Cdc()vO3yQDz2#yTk<0rHgGA^N9I_1 zoaWK~W1KeAukCkkBiH+GCm-dWsdj2M@J;;>LRUgkYvyQEs~xgRXdKR%PQE2)k~^}$ zXB+f8Z_>|?52jkZe0hnYk${|3E!$I`R!Vz8eQ6A zcZp(JHBt89$YWVwcAdLXaQ{Dp`_Jv`KlXWldBQn;)$|IlSEd>HUdMtE-h_Q_#8lfy zexr7b{B{aGS@HLnK3JXr?!QKVqrk$ZP}5$2V9kY97pi*tzu17Q(|Z$7jyfWHo%@uf nPqRml3u8sOVr$~X^BqDZM@tgkKmJ=92j(PvAABxiQ`7zndKem` From ac78f738ffe20d7189e7de05f76cf76decd92905 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 23 May 2020 21:40:13 +0800 Subject: [PATCH 79/80] Fix bug --- _server/editor_blockly.js | 2 +- _server/table/data.comment.js | 6 +++--- libs/control.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index c7789296..9ab7f75b 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -613,7 +613,7 @@ Blockly.FieldColour.prototype.createWidget_ = function() { setTimeout(function () { document.getElementById("colorPicker").value = getValue(); // 设置位置 - openColorPicker(Blockly.WidgetDiv.DIV.style.left, Blockly.WidgetDiv.DIV.style.top, setValue); + openColorPicker(Blockly.WidgetDiv.DIV.style.left.replace(/[^\d.]/g, ''), Blockly.WidgetDiv.DIV.style.top.replace(/[^\d.]/g, ''), setValue); }); return document.createElement('table'); diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index 0cadf638..76256d83 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -23,7 +23,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_range": "editor.mode.checkImages(thiseval, './project/images/')", "_directory": "./project/images/", "_transform": (function (one) { - if (one.endsWith('.png') || one.endsWith('.jpg') || one.endsWith('.jpeg') || end.endsWith('.gif')) + if (one.endsWith('.png') || one.endsWith('.jpg') || one.endsWith('.jpeg') || one.endsWith('.gif')) return one; return null; }).toString(), @@ -71,7 +71,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_range": "editor.mode.checkUnique(thiseval)", "_directory": "./project/bgms/", "_transform": (function (one) { - if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || end.endsWith('.wav')) + if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || one.endsWith('.wav')) return one; return null; }).toString(), @@ -84,7 +84,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_range": "editor.mode.checkUnique(thiseval)", "_directory": "./project/sounds/", "_transform": (function (one) { - if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || end.endsWith('.wav')) + if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || one.endsWith('.wav')) return one; return null; }).toString(), diff --git a/libs/control.js b/libs/control.js index 448571c9..9ccbbfe3 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2807,7 +2807,7 @@ control.prototype._resize_status = function (obj) { core.dom.statusLabels[i].style.marginLeft = 6 * core.domStyle.scale + "px"; } for (var i = 0; i < core.dom.statusTexts.length; ++i) { - core.dom.statusTexts[i].style.color = obj.globalAttribute.statusBarColor; + core.dom.statusTexts[i].style.color = core.arrayToRGBA(obj.globalAttribute.statusBarColor); } // keys if (core.flags.statusBarItems.indexOf('enableGreenKey')>=0) { From f6e313126a283c23f3ea54a4b2cdd5c13ec2ba08 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 23 May 2020 22:20:13 +0800 Subject: [PATCH 80/80] =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=95=86=E5=BA=97X?= =?UTF-8?q?=E9=94=AE=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/plugins.js | 81 ++++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/project/plugins.js b/project/plugins.js index eed88ab3..cacdbc3c 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -124,38 +124,42 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ////// 将一个全局商店转变成可预览的公共事件 ////// this._convertShop = function (shop) { - return [{ - "type": "while", - "condition": "true", - "data": [ - // 检测能否访问该商店 - { - "type": "if", - "condition": "core.isShopVisited('" + shop.id + "')", - "true": [ - // 可以访问,直接插入执行效果 - { "type": "function", "function": "function() { core.plugin._convertShop_replaceChoices('" + shop.id + "', false) }" }, - ], - "false": [ - // 不能访问的情况下:检测能否预览 - { - "type": "if", - "condition": shop.disablePreview, - "true": [ - // 不可预览,提示并退出 - "当前无法访问该商店!", - { "type": "break" }, - ], - "false": [ - // 可以预览:将商店全部内容进行替换 - { "type": "tip", "text": "当前处于预览模式,不可购买" }, - { "type": "function", "function": "function() { core.plugin._convertShop_replaceChoices('" + shop.id + "', true) }" }, - ] - } - ] - } - ] - }]; + return [ + { "type": "function", "function": "function() {core.setFlag('@temp@shop', true);}" }, + { + "type": "while", + "condition": "true", + "data": [ + // 检测能否访问该商店 + { + "type": "if", + "condition": "core.isShopVisited('" + shop.id + "')", + "true": [ + // 可以访问,直接插入执行效果 + { "type": "function", "function": "function() { core.plugin._convertShop_replaceChoices('" + shop.id + "', false) }" }, + ], + "false": [ + // 不能访问的情况下:检测能否预览 + { + "type": "if", + "condition": shop.disablePreview, + "true": [ + // 不可预览,提示并退出 + "当前无法访问该商店!", + { "type": "break" }, + ], + "false": [ + // 可以预览:将商店全部内容进行替换 + { "type": "tip", "text": "当前处于预览模式,不可购买" }, + { "type": "function", "function": "function() { core.plugin._convertShop_replaceChoices('" + shop.id + "', true) }" }, + ] + } + ] + } + ] + }, + { "type": "function", "function": "function() {core.removeFlag('@temp@shop');}" } + ]; } this._convertShop_replaceChoices = function (shopId, previewMode) { @@ -220,6 +224,19 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return null; } + /// 允许商店X键退出 + core.registerAction('keyUp', 'shops', function (keycode) { + if (!core.status.lockControl || !core.hasFlag("@temp@shop") || core.status.event.id != 'action') return false; + if (core.status.event.data.type != 'choices') return false; + var data = core.status.event.data.current; + var choices = data.choices; + var topIndex = core.actions.HSIZE - parseInt((choices.length - 1) / 2) + (core.status.event.ui.offset || 0); + if (keycode == 88) { // X + core.actions._clickAction(core.actions.HSIZE, topIndex + choices.length - 1); + return true; + } + }, 60); + }, "removeMap": function () { // 高层塔砍层插件,删除后不会存入存档,不可浏览地图也不可飞到。
diff --git a/editor.html b/editor.html index 81adbb75..e29e5f85 100644 --- a/editor.html +++ b/editor.html @@ -215,7 +215,7 @@ - +
diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index 96a17c43..df70b9ae 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -55,7 +55,7 @@ (已完成!) loader并行加载 合并items.js (已完成!) 增加fonts目录,全塔属性增加fonts引用 -右边框输入完后解析按钮高亮 +(已完成!) 右边框输入完后解析按钮高亮 ------------- From 348aaeb85751a423ed404345e29b0894efd06f11 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 11:52:09 +0800 Subject: [PATCH 13/80] =?UTF-8?q?=E5=8E=9F=E7=94=9F=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=9C=86=E8=A7=92=E8=BE=B9=E6=A1=86API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 18 +++++---- libs/ui.js | 87 ++++++++++++++++++++++++++++++++----------- v2.x-final更新.txt | 2 +- 3 files changed, 77 insertions(+), 30 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 95e2450e..604ec50a 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -2242,29 +2242,31 @@ return code; */; fillRect_s - : '绘制矩形' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '颜色' ColorString? Colour Newline + : '绘制矩形' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '颜色' ColorString? Colour Newline /* fillRect_s tooltip : fillRect:绘制矩形 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2 colour : this.subColor -default : ["0","0","flag:x","300","",null] +default : ["0","0","flag:x","300","","",null] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; -var code = '{"type": "fillRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+ColorString_0+'},\n'; +PosString_4 = PosString_4 ? (', "radius": '+PosString_4) : ''; +var code = '{"type": "fillRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+ColorString_0+'},\n'; return code; */; strokeRect_s - : '绘制矩形边框' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '颜色' ColorString? Colour '线宽' IntString? Newline + : '绘制矩形边框' '起点像素' 'x' PosString 'y' PosString '宽' PosString '高' PosString '圆角半径' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline /* strokeRect_s tooltip : strokeRect:绘制矩形边框 helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2%e8%be%b9%e6%a1%86 colour : this.subColor -default : ["0","0","flag:x","300","",null,""] +default : ["0","0","flag:x","300","","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; -var code = '{"type": "strokeRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+ColorString_0+IntString_0+'},\n'; +PosString_4 = PosString_4 ? (', "radius": '+PosString_4) : ''; +var code = '{"type": "strokeRect", "x": '+PosString_0+', "y": '+PosString_1+', "width": '+PosString_2+', "height": '+PosString_3+PosString_4+ColorString_0+IntString_0+'},\n'; return code; */; @@ -3643,13 +3645,13 @@ ActionParser.prototype.parseAction = function() { case "fillRect": // 绘制矩形 data.style = this.Colour(data.style); this.next = MotaActionBlocks['fillRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.style, 'rgba('+data.style+')', this.next + data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', this.next ]); break; case "strokeRect": // 绘制矩形边框 data.style = this.Colour(data.style); this.next = MotaActionBlocks['strokeRect_s'].xmlText([ - data.x, data.y, data.width, data.height, data.style, 'rgba('+data.style+')', data.lineWidth, this.next + data.x, data.y, data.width, data.height, data.radius, data.style, 'rgba('+data.style+')', data.lineWidth, this.next ]); break; case "drawLine": // 绘制线段 diff --git a/libs/ui.js b/libs/ui.js index 94a0a1e1..b0771b30 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -134,7 +134,65 @@ ui.prototype.fillRect = function (name, x, y, width, height, style) { ui.prototype._uievent_fillRect = function (data) { this._createUIEvent(); - this.fillRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style); + if (data.radius) { + this.fillRoundRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), core.calValue(data.radius), data.style); + } else { + this.fillRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style); + } +} + +////// 在某个canvas上绘制一个矩形的边框 ////// +ui.prototype.strokeRect = function (name, x, y, width, height, style, lineWidth) { + if (style) core.setStrokeStyle(name, style); + if (lineWidth) core.setLineWidth(name, lineWidth); + var ctx = this.getContextByName(name); + if (ctx) ctx.strokeRect(x, y, width, height); +} + +ui.prototype._uievent_strokeRect = function (data) { + this._createUIEvent(); + if (data.radius) { + this.strokeRoundRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), + core.calValue(data.radius), data.style, data.lineWidth); + } else { + this.strokeRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style, data.lineWidth); + } +} + +////// 在某个canvas上绘制一个圆角矩形 ////// +ui.prototype.fillRoundRect = function (name, x, y, width, height, radius, style) { + if (style) core.setFillStyle(name, style); + var ctx = this.getContextByName(name); + if (ctx) { + this._roundRect_buildPath(ctx, x, y, width, height, radius); + ctx.fill(); + } +} + +////// 在某个canvas上绘制一个圆角矩形的边框 ////// +ui.prototype.strokeRoundRect = function (name, x, y, width, height, radius, style, lineWidth) { + if (style) core.setStrokeStyle(name, style); + if (lineWidth) core.setLineWidth(name, lineWidth); + var ctx = this.getContextByName(name); + if (ctx) { + this._roundRect_buildPath(ctx, x, y, width, height, radius); + ctx.stroke(); + } +} + + +ui.prototype._roundRect_buildPath = function (ctx, x, y, width, height, radius) { + ctx.beginPath(); + ctx.moveTo(x + radius, y); + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); } ////// 在某个canvas上绘制一个多边形 ////// @@ -158,19 +216,6 @@ ui.prototype._uievent_fillPolygon = function (data) { this.fillPolygon('uievent', data.nodes, data.style); } -////// 在某个canvas上绘制一个矩形的边框 ////// -ui.prototype.strokeRect = function (name, x, y, width, height, style, lineWidth) { - if (style) core.setStrokeStyle(name, style); - if (lineWidth) core.setLineWidth(name, lineWidth); - var ctx = this.getContextByName(name); - if (ctx) ctx.strokeRect(x, y, width, height); -} - -ui.prototype._uievent_strokeRect = function (data) { - this._createUIEvent(); - this.strokeRect('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.width), core.calValue(data.height), data.style, data.lineWidth); -} - ////// 在某个canvas上绘制一个多边形的边框 ////// ui.prototype.strokePolygon = function (name, nodes, style, lineWidth) { if (style) core.setStrokeStyle(name, style); @@ -1496,8 +1541,8 @@ ui.prototype._drawChoices_drawChoices = function (choices, isWindowSkin, hPos, v this.drawWindowSelector(core.status.textAttribute.background, this.HPIXEL - len/2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20, len + 10, 28); else - core.strokeRect('ui', this.HPIXEL - len/2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20, - len+10, 28, "#FFD700", 2); + core.strokeRoundRect('ui', this.HPIXEL - len/2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20, + len+10, 28, 6, "#FFD700", 2); } } @@ -1536,7 +1581,7 @@ ui.prototype.drawConfirmBox = function (text, yesCallback, noCallback) { if (isWindowSkin) this.drawWindowSelector(core.status.textAttribute.background, strokeLeft, rect.bottom-35-20, len+10, 28); else - core.strokeRect('ui', strokeLeft, rect.bottom-35-20, len+10, 28, "#FFD700", 2); + core.strokeRoundRect('ui', strokeLeft, rect.bottom-35-20, len+10, 28, 6, "#FFD700", 2); } } @@ -1750,7 +1795,7 @@ ui.prototype._drawBook_drawOne = function (floorId, index, enemy, pageinfo, sele this._drawBook_drawName(index, enemy, top, left, name_width); this._drawBook_drawContent(index, enemy, top, left + name_width); if (selected) - core.strokeRect('ui', 10, top + 1, this.PIXEL - 10 * 2, pageinfo.per_height, '#FFD700'); + core.strokeRoundRect('ui', 10, top + 1, this.PIXEL - 10 * 2, pageinfo.per_height, 10, '#FFD700'); } ui.prototype._drawBook_drawBox = function (index, enemy, top, pageinfo) { @@ -2273,7 +2318,7 @@ ui.prototype._drawToolbox_drawContent = function (info, line, items, page, drawC if (drawCount) core.fillText('ui', core.itemCount(item), 64 * (i % this.HSIZE) + 56, yoffset + 33, '#FFFFFF', this._buildFont(14, true)); if (info.selectId == item) - core.strokeRect('ui', 64 * (i % this.HSIZE) + 17, yoffset - 4, 40, 40, '#FFD700'); + core.strokeRoundRect('ui', 64 * (i % this.HSIZE) + 17, yoffset - 4, 40, 40, 6, '#FFD700'); } } @@ -2448,7 +2493,7 @@ ui.prototype._drawEquipbox_drawEquiped = function (info, line) { core.drawImage('ui', core.material.images.items, 0, 32 * icon, 32, 32, offset_image, y, 32, 32); } core.fillText('ui', info.allEquips[i] || "未知", offset_text, y + 27, '#FFFFFF', this._buildFont(16, true)) - core.strokeRect('ui', offset_image - 4, y - 4, 40, 40, info.index==i?'#FFD700':"#FFFFFF"); + core.strokeRoundRect('ui', offset_image - 4, y - 4, 40, 40, 6, info.index==i?'#FFD700':"#FFFFFF"); } } @@ -2631,7 +2676,7 @@ ui.prototype.drawKeyBoard = function () { if (isWindowSkin) this.drawWindowSelector(core.status.textAttribute.background, this.HPIXEL + 92, offset - 22, 72, 27); else - core.strokeRect('ui', this.HPIXEL + 92, offset - 22, 72, 27, "#FFD700", 2); + core.strokeRoundRect('ui', this.HPIXEL + 92, offset - 22, 72, 27, 6, "#FFD700", 2); } ////// 绘制状态栏 ///// diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index df70b9ae..f795c31f 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -43,7 +43,7 @@ (已完成!) 动画/音乐/音效自动补全 (已完成!) 重构全局商店! (已完成!) 读档时色调数据丢失 -圆角边框 +(已完成!) 圆角边框 像素高分辨率问题 (已完成!) 道具效果优化,删除部分道具相关的开关 (已完成!) 素材列表选择 From d1a1f223f160de9244a5690047d47fb1967cbc9c Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 12:22:03 +0800 Subject: [PATCH 14/80] =?UTF-8?q?=E7=BB=98=E5=88=B6=E6=A4=AD=E5=9C=86API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 46 ++++++++++++++++++++------------------- _server/editor_blockly.js | 6 ++--- libs/events.js | 9 ++++---- libs/ui.js | 28 ++++++++++++++++-------- 4 files changed, 51 insertions(+), 38 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 604ec50a..a23e90fb 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -430,8 +430,8 @@ action | drawArrow_s | fillPolygon_s | strokePolygon_s - | fillCircle_s - | strokeCircle_s + | fillEllipse_s + | strokeEllipse_s | drawImage_s | drawImage_1_s | drawIcon_s @@ -2339,30 +2339,32 @@ var code = '{"type": "strokePolygon", "nodes": ['+EvalString_0+']'+ColorString_0 return code; */; -fillCircle_s - : '绘制圆' '圆心' 'x' PosString 'y' PosString '半径' PosString '颜色' ColorString? Colour Newline +fillEllipse_s + : '绘制椭圆' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '顺时针旋转度数' PosString? '颜色' ColorString? Colour Newline -/* fillCircle_s -tooltip : fillCircle:绘制圆 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillCircle%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +/* fillEllipse_s +tooltip : fillEllipse:绘制椭圆 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 colour : this.subColor -default : ["0","0","100","",null] +default : ["0","0","100","100","0","",null] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; -var code = '{"type": "fillCircle", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+ColorString_0+'},\n'; +PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; +var code = '{"type": "fillEllipse", "x": '+PosString_0+', "y": '+PosString_1+', "a": '+PosString_2+', "b": '+PosString_3+PosString_4+ColorString_0+'},\n'; return code; */; -strokeCircle_s - : '绘制圆边框' '圆心' 'x' PosString 'y' PosString '半径' PosString '颜色' ColorString? Colour '线宽' IntString? Newline +strokeEllipse_s + : '绘制椭圆边框' '中心' 'x' PosString 'y' PosString '长半径' PosString '短半径' PosString '顺时针旋转度数' PosString? '颜色' ColorString? Colour '线宽' IntString? Newline -/* strokeCircle_s -tooltip : strokeCircle:绘制圆边框 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeCircle%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86%e8%be%b9%e6%a1%86 +/* strokeEllipse_s +tooltip : strokeEllipse:绘制椭圆边框 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86%e8%be%b9%e6%a1%86 colour : this.subColor -default : ["0","0","100","",null,""] +default : ["0","0","100","100","0","",null,""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; -var code = '{"type": "strokeCircle", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+ColorString_0+IntString_0+'},\n'; +PosString_4 = PosString_4 ? (', "angle": ' + PosString_4) : ''; +var code = '{"type": "strokeEllipse", "x": '+PosString_0+', "y": '+PosString_1+', "a": '+PosString_2+', "b": '+PosString_3+PosString_4+ColorString_0+IntString_0+'},\n'; return code; */; @@ -3688,16 +3690,16 @@ ActionParser.prototype.parseAction = function() { x_str.join(','), y_str.join(','), data.style, 'rgba('+data.style+')', data.lineWidth, this.next ]); break; - case "fillCircle": // 绘制圆 + case "fillEllipse": // 绘制椭圆 data.style = this.Colour(data.style); - this.next = MotaActionBlocks['fillCircle_s'].xmlText([ - data.x, data.y, data.r, data.style, 'rgba('+data.style+')', this.next + this.next = MotaActionBlocks['fillEllipse_s'].xmlText([ + data.x, data.y, data.a, data.b, data.angle, data.style, 'rgba('+data.style+')', this.next ]); break; - case "strokeCircle": // 绘制圆边框 + case "strokeEllipse": // 绘制椭圆边框 data.style = this.Colour(data.style); - this.next = MotaActionBlocks['strokeCircle_s'].xmlText([ - data.x, data.y, data.r, data.style, 'rgba('+data.style+')', data.lineWidth, this.next + this.next = MotaActionBlocks['strokeEllipse_s'].xmlText([ + data.x, data.y, data.a, data.b, data.angle, data.style, 'rgba('+data.style+')', data.lineWidth, this.next ]); break; case "drawImage": // 绘制图片 diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 8b23bce8..f67bca45 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -202,8 +202,8 @@ editor_blockly = function () { MotaActionBlocks['drawArrow_s'].xmlText(), MotaActionBlocks['fillPolygon_s'].xmlText(), MotaActionBlocks['strokePolygon_s'].xmlText(), - MotaActionBlocks['fillCircle_s'].xmlText(), - MotaActionBlocks['strokeCircle_s'].xmlText(), + MotaActionBlocks['fillEllipse_s'].xmlText(), + MotaActionBlocks['strokeEllipse_s'].xmlText(), MotaActionBlocks['drawImage_s'].xmlText(), MotaActionBlocks['drawImage_1_s'].xmlText(), MotaActionBlocks['drawIcon_s'].xmlText(), @@ -706,7 +706,7 @@ function omitedcheckUpdateFunction(event) { var types = [ "previewUI_s", "clearMap_s", "clearMap_1_s", "setAttribute_s", "fillText_s", "fillBoldText_s", "fillRect_s", "strokeRect_s", "drawLine_s", - "drawArrow_s", "fillPolygon_s", "strokePolygon_s", "fillCircle_s", "strokeCircle_s", + "drawArrow_s", "fillPolygon_s", "strokePolygon_s", "fillEllipse_s", "strokeEllipse_s", "drawImage_s", "drawImage_1_s", "drawIcon_s", "drawBackground_s", "drawSelector_s", "drawSelector_1_s", "waitContext_2" ]; diff --git a/libs/events.js b/libs/events.js index 2a613771..d0982ade 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1122,11 +1122,12 @@ events.prototype.__precompile_getArray = function () { "setValue", "setEnemy", "setFloor", "setGlobalValue", ]; var uievents = [ - "clearMap", "fillText", "fillBoldText", "fillRect", "strokeRect", "strokeCircle", + "clearMap", "fillText", "fillBoldText", "fillRect", "strokeRect", "fillEllipse", "strokeEllipse", "drawIcon", "drawSelector", "drawBackground", ]; var others = { - "strokeCircle": ["r"], + "fillEllipse": ["a", "b"], + "strokeEllipse": ["a", "b"], "drawLine": ["x1", "y1", "x2", "y2"], "drawArrow": ["x1", "y1", "x2", "y2"], "drawImage": ["x", "y", "w", "h", "x1", "y1", "w1", "h1"], @@ -2213,11 +2214,11 @@ events.prototype._precompile_strokePolygon = function (data) { return data; } -events.prototype._action_fillCircle = function (data, x, y, prefix) { +events.prototype._action_fillEllipse = function (data, x, y, prefix) { this.__action_doUIEvent(data); } -events.prototype._action_strokeCircle = function (data, x, y, prefix) { +events.prototype._action_strokeEllipse = function (data, x, y, prefix) { this.__action_doUIEvent(data); } diff --git a/libs/ui.js b/libs/ui.js index b0771b30..642a4776 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -238,35 +238,45 @@ ui.prototype._uievent_strokePolygon = function (data) { this.strokePolygon('uievent', data.nodes, data.style, data.lineWidth); } -////// 在某个canvas上绘制一个圆 ////// -ui.prototype.fillCircle = function (name, x, y, r, style) { +////// 在某个canvas上绘制一个椭圆 ////// +ui.prototype.fillEllipse = function (name, x, y, a, b, angle, style) { if (style) core.setFillStyle(name, style); var ctx = this.getContextByName(name); if (!ctx) return; ctx.beginPath(); - ctx.arc(x, y, r, 0, 2*Math.PI); + ctx.ellipse(x, y, a, b, angle, 0, 2*Math.PI); ctx.fill(); } -ui.prototype._uievent_fillCircle = function (data) { +ui.prototype.fillCircle = function (name, x, y, r, style) { + return this.fillEllipse(name, x, y, r, r, 0, style); +} + +ui.prototype._uievent_fillEllipse = function (data) { this._createUIEvent(); - this.fillCircle('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.r), data.style); + this.fillEllipse('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.a), + core.calValue(data.b), (core.calValue(data.angle) || 0) * Math.PI / 180, data.style); } ////// 在某个canvas上绘制一个圆的边框 ////// -ui.prototype.strokeCircle = function (name, x, y, r, style, lineWidth) { +ui.prototype.strokeEllipse = function (name, x, y, a, b, angle, style, lineWidth) { if (style) core.setStrokeStyle(name, style); if (lineWidth) core.setLineWidth(name, lineWidth); var ctx = this.getContextByName(name); if (!ctx) return; ctx.beginPath(); - ctx.arc(x, y, r, 0, 2*Math.PI); + ctx.ellipse(x, y, a, b, angle, 0, 2*Math.PI); ctx.stroke(); } -ui.prototype._uievent_strokeCircle = function (data) { +ui.prototype.strokeCircle = function (name, x, y, r, style, lineWidth) { + return this.strokeEllipse(name, x, y, r, r, 0, style, lineWidth); +} + +ui.prototype._uievent_strokeEllipse = function (data) { this._createUIEvent(); - this.strokeCircle('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.r), data.style, data.lineWidth); + this.strokeEllipse('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.a), + core.calValue(data.b), (core.calValue(data.angle) || 0) * Math.PI / 180, data.style, data.lineWidth); } ////// 在某个canvas上绘制一条线 ////// From 1feccfc185d241c6b3da94639bf29076f9ab3137 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 13:29:57 +0800 Subject: [PATCH 15/80] =?UTF-8?q?=E7=BB=98=E5=88=B6=E6=89=87=E5=BD=A2?= =?UTF-8?q?=E5=92=8C=E5=BC=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/MotaAction.g4 | 43 +++++++++++++++++++++++++++++++++++++++ _server/editor_blockly.js | 4 +++- libs/events.js | 12 ++++++++++- libs/ui.js | 33 ++++++++++++++++++++++++++++++ v2.x-final更新.txt | 2 +- 5 files changed, 91 insertions(+), 3 deletions(-) diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index a23e90fb..a7dc1ce6 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -432,6 +432,8 @@ action | strokePolygon_s | fillEllipse_s | strokeEllipse_s + | fillArc_s + | strokeArc_s | drawImage_s | drawImage_1_s | drawIcon_s @@ -2368,6 +2370,35 @@ var code = '{"type": "strokeEllipse", "x": '+PosString_0+', "y": '+PosString_1+' return code; */; +fillArc_s + : '绘制扇形' '中心' 'x' PosString 'y' PosString '半径' PosString '起点角度' PosString '终点角度' PosString '颜色' ColorString? Colour Newline + +/* fillArc_s +tooltip : fillArc:绘制扇形 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +colour : this.subColor +default : ["0","0","100","0","90","",null,""] +ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; +var code = '{"type": "fillArc", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+', "start": '+PosString_3+', "end": '+PosString_4+ColorString_0+'},\n'; +return code; +*/; + + +strokeArc_s + : '绘制弧' '中心' 'x' PosString 'y' PosString '半径' PosString '起点角度' PosString '终点角度' PosString '颜色' ColorString? Colour '线宽' IntString? Newline + +/* strokeArc_s +tooltip : strokeArc:绘制弧 +helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +colour : this.subColor +default : ["0","0","100","0","90","",null,""] +ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; +IntString_0 = IntString_0 ? (', "lineWidth": '+IntString_0) : ''; +var code = '{"type": "strokeArc", "x": '+PosString_0+', "y": '+PosString_1+', "r": '+PosString_2+', "start": '+PosString_3+', "end": '+PosString_4+ColorString_0+IntString_0+'},\n'; +return code; +*/; + + drawImage_s : '绘制图片' EvalString '起点像素' 'x' PosString 'y' PosString '宽' PosString? '高' PosString? Newline @@ -3702,6 +3733,18 @@ ActionParser.prototype.parseAction = function() { data.x, data.y, data.a, data.b, data.angle, data.style, 'rgba('+data.style+')', data.lineWidth, this.next ]); break; + case "fillArc": // 绘制弧 + data.style = this.Colour(data.style); + this.next = MotaActionBlocks['fillArc_s'].xmlText([ + data.x, data.y, data.r, data.start, data.end, data.style, 'rgba('+data.style+')', this.next + ]); + break; + case "strokeArc": // 绘制弧 + data.style = this.Colour(data.style); + this.next = MotaActionBlocks['strokeArc_s'].xmlText([ + data.x, data.y, data.r, data.start, data.end, data.style, 'rgba('+data.style+')', data.lineWidth, this.next + ]); + break; case "drawImage": // 绘制图片 if (data.x1 != null && data.y1 != null && data.w1 != null && data.h1 != null) { this.next = MotaActionBlocks['drawImage_1_s'].xmlText([ diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index f67bca45..f3d74b07 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -204,6 +204,8 @@ editor_blockly = function () { MotaActionBlocks['strokePolygon_s'].xmlText(), MotaActionBlocks['fillEllipse_s'].xmlText(), MotaActionBlocks['strokeEllipse_s'].xmlText(), + MotaActionBlocks['fillArc_s'].xmlText(), + MotaActionBlocks['strokeArc_s'].xmlText(), MotaActionBlocks['drawImage_s'].xmlText(), MotaActionBlocks['drawImage_1_s'].xmlText(), MotaActionBlocks['drawIcon_s'].xmlText(), @@ -706,7 +708,7 @@ function omitedcheckUpdateFunction(event) { var types = [ "previewUI_s", "clearMap_s", "clearMap_1_s", "setAttribute_s", "fillText_s", "fillBoldText_s", "fillRect_s", "strokeRect_s", "drawLine_s", - "drawArrow_s", "fillPolygon_s", "strokePolygon_s", "fillEllipse_s", "strokeEllipse_s", + "drawArrow_s", "fillPolygon_s", "strokePolygon_s", "fillEllipse_s", "strokeEllipse_s", "fillArc_s", "strokeArc_s", "drawImage_s", "drawImage_1_s", "drawIcon_s", "drawBackground_s", "drawSelector_s", "drawSelector_1_s", "waitContext_2" ]; diff --git a/libs/events.js b/libs/events.js index d0982ade..b7601032 100644 --- a/libs/events.js +++ b/libs/events.js @@ -1123,11 +1123,13 @@ events.prototype.__precompile_getArray = function () { ]; var uievents = [ "clearMap", "fillText", "fillBoldText", "fillRect", "strokeRect", "fillEllipse", "strokeEllipse", - "drawIcon", "drawSelector", "drawBackground", + "fillArc", "strokeArc", "drawIcon", "drawSelector", "drawBackground", ]; var others = { "fillEllipse": ["a", "b"], "strokeEllipse": ["a", "b"], + "fillArc": ["r", "start", "end"], + "strokeArc": ["r", "start", "end"], "drawLine": ["x1", "y1", "x2", "y2"], "drawArrow": ["x1", "y1", "x2", "y2"], "drawImage": ["x", "y", "w", "h", "x1", "y1", "w1", "h1"], @@ -2222,6 +2224,14 @@ events.prototype._action_strokeEllipse = function (data, x, y, prefix) { this.__action_doUIEvent(data); } +events.prototype._action_fillArc = function (data, x, y, prefix) { + this.__action_doUIEvent(data); +} + +events.prototype._action_strokeArc = function (data, x, y, prefix) { + this.__action_doUIEvent(data); +} + events.prototype._action_drawLine = function (data, x, y, prefix) { this.__action_doUIEvent(data); } diff --git a/libs/ui.js b/libs/ui.js index 642a4776..204796d0 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -279,6 +279,39 @@ ui.prototype._uievent_strokeEllipse = function (data) { core.calValue(data.b), (core.calValue(data.angle) || 0) * Math.PI / 180, data.style, data.lineWidth); } +ui.prototype.fillArc = function (name, x, y, r, start, end, style) { + if (style) core.setFillStyle(name, style); + var ctx = this.getContextByName(name); + if (!ctx) return; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.arc(x, y, r, start, end); + ctx.closePath(); + ctx.fill(); +} + +ui.prototype._uievent_fillArc = function (data) { + this._createUIEvent(); + this.fillArc('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.r), + (core.calValue(data.start) || 0) * Math.PI / 180, (core.calValue(data.end) || 0) * Math.PI / 180, data.style); +} + +ui.prototype.strokeArc = function (name, x, y, r, start, end, style, lineWidth) { + if (style) core.setStrokeStyle(name, style); + if (lineWidth) core.setLineWidth(name, lineWidth); + var ctx = this.getContextByName(name); + if (!ctx) return; + ctx.beginPath(); + ctx.arc(x, y, r, start, end); + ctx.stroke(); +} + +ui.prototype._uievent_strokeArc = function (data) { + this._createUIEvent(); + this.strokeArc('uievent', core.calValue(data.x), core.calValue(data.y), core.calValue(data.r), + (core.calValue(data.start) || 0) * Math.PI / 180, (core.calValue(data.end) || 0) * Math.PI / 180, data.style, data.lineWidth); +} + ////// 在某个canvas上绘制一条线 ////// ui.prototype.drawLine = function (name, x1, y1, x2, y2, style, lineWidth) { if (style) core.setStrokeStyle(name, style); diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt index f795c31f..7cbd5c2f 100644 --- a/v2.x-final更新.txt +++ b/v2.x-final更新.txt @@ -134,7 +134,7 @@ 70. “显隐勇士”事件指令希望加个淡入淡出时间参数 (不处理,请用等待事件) 1. 希望给core.drawTip()和core.playSound()出个同步版本,目前只有异步版本,后者如果要模拟同步就得绑在一个透明动画上 (已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边 -73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 +(已完成!) 73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 (已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 (已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 (已完成!) 76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 From a62e0119fdfd48d964d03e1cc3c9143144992adb Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 17 May 2020 17:04:41 +0800 Subject: [PATCH 16/80] =?UTF-8?q?=E9=A2=84=E8=A7=88=E9=9F=B3=E4=B9=90?= =?UTF-8?q?=E5=8F=AF=E6=8B=96=E5=8A=A8=E8=BF=9B=E5=BA=A6=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor_ui.js | 38 +++++++++++++++++++++++++++++++------- project/data.js | 4 +--- project/fonts/number.ttf | Bin 4312 -> 0 bytes server.py | 5 ++++- styles.css | 2 +- 5 files changed, 37 insertions(+), 12 deletions(-) delete mode 100644 project/fonts/number.ttf diff --git a/_server/editor_ui.js b/_server/editor_ui.js index 4965f1ea..cc9588ed 100644 --- a/_server/editor_ui.js +++ b/_server/editor_ui.js @@ -792,8 +792,10 @@ editor_ui_wrapper = function (editor) { } // 试听音频 if (one.endsWith('.mp3') || one.endsWith('.wmv') || one.endsWith('.ogg') || one.endsWith('.wav')) { - html += ""; - html += '
'; + html += ""; + html += `0:00 / 0:00
+ + `; } html += '
'; }); @@ -824,19 +826,41 @@ editor_ui_wrapper = function (editor) { } uievent._previewMaterialAudio = function (button) { - var br = button.nextElementSibling; + var span = button.nextElementSibling; + var br = span.nextElementSibling; var audio = br.nextElementSibling; + var progress = audio.nextElementSibling; if (br.style.display == 'none') { - button.innerText = '折叠'; + button.innerText = '暂停'; br.style.display = 'block'; - audio.style.display = 'block'; + progress.style.display = 'block'; + span.style.display = 'inline'; + audio.play(); } else { - button.innerText = '试听'; + button.innerText = '播放'; br.style.display = 'none'; - audio.style.display = 'none'; + progress.style.display='none'; + span.style.display = 'none'; + audio.pause(); } } + uievent._previewMaterialAudio_onTimeUpdate = function (audio) { + var _format = function (time) { return parseInt(time/60) + ":" + core.setTwoDigits(parseInt(time) % 60); } + if (audio.duration > 0) { + audio.previousElementSibling.previousElementSibling.innerText = _format(audio.currentTime) + " / " + _format(audio.duration); + audio.nextElementSibling.setAttribute('value', audio.currentTime / audio.duration); + } + } + + uievent._previewMaterialAudio_seek = function (element, event) { + var audio = element.previousElementSibling; + var value = event.offsetX * element.max / element.offsetWidth; + element.setAttribute("value", value); + audio.currentTime = audio.duration * value; + if (audio.paused) audio.play(); + } + editor.constructor.prototype.uievent=uievent; } \ No newline at end of file diff --git a/project/data.js b/project/data.js index 396be475..4f33fa23 100644 --- a/project/data.js +++ b/project/data.js @@ -36,9 +36,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "bomb.mp3", "centerFly.mp3" ], - "fonts": [ - "number" - ], + "fonts": [], "nameMap": { "背景图.jpg": "bg.jpg", "背景音乐.mp3": "bgm.mp3" diff --git a/project/fonts/number.ttf b/project/fonts/number.ttf deleted file mode 100644 index bcf90fae15a92f26dae9f2bf31c86319c458ea77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4312 zcmchbe@xZa6~NE;fjr>B;{iSp0ePZ8iwKAg;Tzn-ox35h$nw*Tgm^ zZD!i6>$-JK)}~8cQ;S`eCTiW*)i|ei^JlgGER@=+P_bHFYug0QKKJ{+dyc4hneM}FBYGHN4pPSn>`*N*Nu>|yKZnhJR4h@+gAC+ zY%TD*>8H^ZZr#uPbjObpDnAu(q%A(QBV(;0!cV;#vDVWE>l2SX!=C5q)2s4|XS0Zw zM67k>_H6sdZ%h1g7rrsz!Amn~Lx==rPl~b6$V7L9pNyL7k!UmLKM>a8@U^QtS{N0Q zb&;Zr*h8Ph(`9TC>*YxE2-#ecbcdx#j8E(l{QBU+v`4&>=g<*SE`<&q$(ZF1Jqr3k zhmL}N$f3Ph_LxIQvx5!rR%8t8l*=;?ZApq8bZC$G<*Y+TNQ+!`=txPiY8-kLbcaJn zLI2#Ly%J^p-l3yqtktc-HWjny>| zET~(ty0N;|c&x5sQr_qeO2Ys#5#$KDH34V&bqp#O-IWbCRs#87Gm_ z!!r^z{5s|2kdXarArqp1bBLstqR8iHiIG_HG|sMyo6q_G_m;Edux3G9k8>C-!@w7e z`LrI9s4=v5k!S=lmF7@1V4il{EFGLY$7t!a8rp2yGFm%r6KyH2!JZ_N$ur>dMoCnZ z*M+!f!$-RiALA9TH^v43b$mi>v_wb8x)AUg-seK1FGgZwT-KKqXZSc5lH+3~Ha6ac z(bw@ozfXKVzY8e|hEH%IH6c#o;#@XiOu+B~7t)jb;`b-HkeQqy2?@zAgn|JH1cEM% zPf3)-#1t2D(vl@PIn9OqjGzRA87>rNrAlgQmJ220($t@ro zGWDhhv|G>VSv>>3uZQ&u{X&Ygls$Z)*Yp~dn8b`CSt2jV{TytwWgJx+sb4a(A3P3j z(dGIZeO9+y52AmAOqJV=CAuH&P5K;K59>$zk&)Sb)C|3y`X}(X?qQ`fMj}gDWv|@J zK{tuREJW^)WA!A{rLXE{Ey9jt_~EngTQh8_Z9e|EpUr?v^qsl{@r4 zIUs|K7yYxnkN5Om3Cb8rmE1wqs4@PWo=4XqeMK+JH;|>-(q8S=_Xt`SA$)^XjW(kPu%w1ODa9r(O(Qb` zR}I-^o+Fsy9bwwCeuuhrY#1jKzSwg)(Xx}Oo=g6j_$(tn_j$VH*0A=Go_B&WEH=*KYjhf^VqWl> zteS`;sVhB+%ikfXF6u?xp09%#7faC68Pm>P@Y`SoSC%x%ww?SGwXj9Xta(y4nBnOf zT%+f4g`a(ieG0s(J4mb^!^>E33Tx~m$+~dtS-qlHkWY|oE<3YiE?1B$C?TM|TtY-% zqcqafa^HzZvHk9@DdBx-}PSx}CkF*&#sgY}9Gm!D00WvqK|8N0xm;%;P3#Zc_le z{#Z|QkDN$t82%FcF;mr+Y$EU0k{98uGj1442FuFRzgs^hr(Og*WglkE;GA0~-y;S^ z1Fw3zlus&Mt&i!W`W^H>B0rS1oZ0hPc7s`nY+g!SX4!F>KsmbFhy0CTSk{H5!zEwo z95!(l3nbY!m4jE3Bv~(G*-7Gb+DXoUm~x1-eUgLq0ZGuSoF?Yg)5XY7IN##64I{P_ zm$yxFla_v7C%18v?!eoVx#8YQ9`L?r<`q3iL_>C7WD?E&ME)0e|JUfdhzot>4b@E5 zoAV1m{yyjEA>tX1q=`E+xw#g6;5&+tgcNUpXp`#ifks&DFF^`Dgf zS^bb+b5%7(QpEQ_8AWDZmgdD3;w3gk7I9%LH%gefo9x(2e)dpqfJYjLMZy1|Mm+P; z-;e)JqWw5Nzf3*`?UU{nc42&VVUUk+4u&8-lgRbO@-*KKZIo`IeV!Y8o??I7!MDI( z^0NS}!FL6Cy_hq$2OADz^;JHey;@*hK;v%LlObxzyt}d-Pj^!_y9T%0W6aJjXuq+V zI$SEd`S@HQ3)x|=5fPI!x(nQ Date: Sun, 17 May 2020 17:53:52 +0800 Subject: [PATCH 17/80] =?UTF-8?q?=E6=9C=80=E8=BF=91=E4=BD=BF=E7=94=A8/?= =?UTF-8?q?=E6=9C=80=E5=B8=B8=E4=BD=BF=E7=94=A8=E5=9B=BE=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _server/editor.js | 24 ++++++++++++++++++++++-- _server/editor_mappanel.js | 20 ++++++++++++++++++-- editor-mobile.html | 2 +- editor.html | 2 +- v2.x-final更新.txt | 3 ++- 5 files changed, 44 insertions(+), 7 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 56487191..8704fea1 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -55,6 +55,7 @@ function editor() { editModeSelect :document.getElementById('editModeSelect'), mid2 : document.getElementById('mid2'), clearLastUsedBtn: document.getElementById('clearLastUsedBtn'), + lastUsedTitle: document.getElementById('lastUsedTitle'), lastUsedDiv: document.getElementById('lastUsedDiv'), lastUsed: document.getElementById('lastUsed'), lastUsedCtx: document.getElementById('lastUsed').getContext('2d'), @@ -105,6 +106,7 @@ function editor() { lockMode: false, // 最近使用的图块 + lastUsedType: null, lastUsed: [], }; @@ -406,16 +408,33 @@ editor.prototype.updateMap = function () { this.updateLastUsedMap(); } +editor.prototype.setLastUsedType = function (type) { + if (type == editor.uivalues.lastUsedType) return; + editor.uivalues.lastUsedType = type; + var _buildHtml = function (type, text) { + if (type == null) return "" + text + ""; + else return `
${text}`; + } + editor.dom.lastUsedTitle.innerHTML + = type == 'frequent' ? (_buildHtml('recent', '最近使用') + " | " + _buildHtml(null, '最常使用')) + : (_buildHtml(null, '最近使用') + " | " + _buildHtml('frequent', '最常使用')); + this.updateLastUsedMap(); +} + editor.prototype.updateLastUsedMap = function () { + var lastUsed = editor.uivalues.lastUsed.sort(function (a, b) { + return (b[editor.uivalues.lastUsedType] || 0) - (a[editor.uivalues.lastUsedType] || 0); + }); + // 绘制最近使用事件 var ctx = editor.dom.lastUsedCtx; ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.strokeStyle = 'rgba(255,128,0,0.85)'; ctx.lineWidth = 4; - for (var i = 0; i < editor.uivalues.lastUsed.length; ++i) { + for (var i = 0; i < lastUsed.length; ++i) { try { var x = i % core.__SIZE__, y = parseInt(i / core.__SIZE__); - var info = editor.uivalues.lastUsed[i]; + var info = lastUsed[i]; if (!info || !info.images) continue; if (info.isTile && core.material.images.tilesets[info.images]) { ctx.drawImage(core.material.images.tilesets[info.images], 32 * info.x, 32 * info.y, 32, 32, x*32, y*32, 32, 32); @@ -458,6 +477,7 @@ editor.prototype.drawInitData = function (icons) { // editor.uivalues.folded = true; editor.uivalues.foldPerCol = editor.config.get('foldPerCol', 50); // var imgNames = Object.keys(images); //还是固定顺序吧; + editor.setLastUsedType(editor.config.get('lastUsedType', 'recent')); editor.uivalues.lastUsed = editor.config.get("lastUsed", []); var imgNames = ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48", "autotile"]; diff --git a/_server/editor_mappanel.js b/_server/editor_mappanel.js index fcfb0fd3..e84a600d 100644 --- a/_server/editor_mappanel.js +++ b/_server/editor_mappanel.js @@ -257,7 +257,17 @@ editor_mappanel_wrapper = function (editor) { } // console.log(editor.map); if (editor.info.y != null) { - editor.uivalues.lastUsed = [editor.info].concat(editor.uivalues.lastUsed.filter(function (e) { return e.id != editor.info.id})); + var found = false; + editor.uivalues.lastUsed.forEach(function (one) { + if (one.id == editor.info.id) { + found = true; + one.recent = new Date().getTime(); + one.frequent = (one.frequent || 0) + 1; + } + }) + if (!found) { + editor.uivalues.lastUsed.push(Object.assign({}, editor.info, {recent: new Date().getTime(), frequent: 1})); + } editor.config.set("lastUsed", editor.uivalues.lastUsed); } editor.updateMap(); @@ -781,7 +791,13 @@ editor_mappanel_wrapper = function (editor) { var x = parseInt(px / 32), y = parseInt(py / 32); var index = x + core.__SIZE__ * y; if (index >= editor.uivalues.lastUsed.length) return; - editor.setSelectBoxFromInfo(editor.uivalues.lastUsed[index]); + var lastUsed = editor.uivalues.lastUsed.sort(function (a, b) { + return (b[editor.uivalues.lastUsedType] || 0) - (a[editor.uivalues.lastUsedType] || 0); + }); + var one = Object.assign({}, lastUsed[index]); + delete one['recent']; + delete one['frequent']; + editor.setSelectBoxFromInfo(one); return; } diff --git a/editor-mobile.html b/editor-mobile.html index 2b9bf8b0..dabddf55 100644 --- a/editor-mobile.html +++ b/editor-mobile.html @@ -320,7 +320,7 @@