From 0a7625acf436207e5b2646b8b596c5be38def85e Mon Sep 17 00:00:00 2001 From: strawberry42271 <2806566736@qq.com> Date: Sat, 7 Dec 2024 23:13:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E6=BB=91=E7=A7=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _saves/Eustia_autoSave | 2 +- _server/MotaAction.g4 | 43 +++++- _server/MotaActionParser.js | 10 +- _server/config.json | 2 +- project/data.js | 6 +- project/floors/jiuguan.js | 37 ++++- project/plugins.js | 270 ++++++++++++++++++++++++++++++++++-- 7 files changed, 345 insertions(+), 25 deletions(-) diff --git a/_saves/Eustia_autoSave b/_saves/Eustia_autoSave index 6de69cb..7b3b2f5 100644 --- a/_saves/Eustia_autoSave +++ b/_saves/Eustia_autoSave @@ -1 +1 @@ -N4IgZgNg9lBOCSATEAuEBZAKgZhAGhAAsBTWKVUASwFsBDAc2NSNKgDoAHAO3vxFq41aAFyYowtCAGdiBLrWpiQAHQCuATgBs2bGoCsARgAs6vhABuqAwUIc6AD1Trn6mxysAGLwTryHqAFprEF9aVA8CEQBrTwiQRGIwWJ8EpJQ46iguYgBPcIJie3d0goBHVUo7Yi5hVABtAF0CSlFqKQoQAGMsqWEBYXaUUAAjGBiUYMg8iYBfAmEYaQo5kGJyysHgGZXoTo7HFFcQac0CREpYYk7hSizmCETalcgGTZAW4moAEWI+yghUMJYKpZCBVDIAEK/ADuxGqABlKPRCLUUECQQQAPqYmTERDYqzYdTYPTqIwADj02CxmNgAnxmMJxNJFKpNlosGQExphA5iAAwlBoLACWhYPRhrQABSaIx4ABMej0eEpeAMAEo+NiPtQABKUGqixo0h60czEeFQTqi0BYDwdc6Xa63LjMWBIlF8A4GeUEE7bAjDGFwrgAQWEfU6US+IjCKC4qggEBp5koUg+DI6dsBwNBWFwaNzAfAQugsNgg2NIF6xA4g2p1b6N16lE6bwWfQgmBoYnJWhMRj0RjY8pcAHYh3KuqpYLBu4pUCTnGwp7Z8iBJRGHuvMtlpnFCsU4pvhA8Y3RGOuOFA01lzwwxAf7EDaPfLyUQlBzV8LldT9NlXeeguDgYgAGVRDrVB5V9RsOVRTQPFJNhsGLXlOWYABRWgpDyHxaCgoYVjIVRRGYeEkHoAANUNhlDeB6EwdBQ06ABNTB6OhUMAC0AGkOG40MwKkUMuAAKVDfkjFDHJWIARVDABeRS+HMSQQU2FZzQrF1mDUdRiGwRB9GGPQPDUMdaHUYyNA8eVzNUPRKSMfROg8MB9M0AwkgIegKi5EBNGGIxiGGRAx3JTEDFoIxaExIwwDHdRMXJRBsGGTEqT0eVEiMRBEDAMk+BuBcJjHbBRxJTQlTHCKZiAA=== \ No newline at end of file +N4IgZgNg9lBOCSATEAuEBZAKgZhAGhAAsBTWKVUASwFsBDAc2NSNKgDoAHAO3vxFq41aAFyYowtCAGdiBLrWpiQAHQCuATgBs2bGoCsARgAs6vhABuqAwUIc6AD1Trn6mxysAGLwTryHqAFprEF9aVA8CEQBrTwiQRGIwWJ8EpJQ46iguYgBPcIJie3d0goBHVUo7Yi5hVABtAF0CSlFqKQoQAGMsqWEBYXaUUAAjGBiUYMg8iYBfAmEYaQo5kGJyysHgGZXoTo7HFAB2AmnNAkRKWGJO4Uos5lhKekJalcgGTZAW4moAEWI+pQIKhhLBVLIQKoZAAhAEAd2I1QAMk8XiCwRCAPqYmTERDY1AADk0miMhz0RmMBGxsAE+MxRJJZIpVP4V1ogzqoD8SjUhwATJp+Xz+WADHw6BxORhMB4+FhcAQsOKlZh+fLMEYNXoQA05tyFLzVIdCcY+bRDpo1EKjHKfLQpfUZZpdfqQDzmGojMQPMN9J0jOr7Y6UHUZYcNYSNaZVQY7TKDOK9XgDYpPapvb7/YGJQ7pQBhWg0QhQNPJ1NGzN+1R6ANBkJ5p0AK0oqnoqgErqaRFosGQJRA2MIvcQ+ag0FgBLQV2Q1Mx32oAAlKDUp405xBiLRzMQkVBOlPQFg5UN4pdrrd7tPUbUCAcDPyTqhNNsCMN4YiuABBYR9TpRX4RDCFAuFUCAIDncxKCkb56Q6Y90XBVVcBQUFwVfcBx2gBFYE5btemIEMjAIXoRGg25Ok+BY+ggTAaDEflCQFYlDnJNg9HUQU9A8Y4ulUWBYDotMUCMPRDiMNh+RcaTpLcfIQGGERhE3eTMmyaY4kKYo4kU39N0AuhGHkjgoGgrIDIYMRNPsUFaAsoyB0yHdfnPG4IGmR8vnoLg4GIABlUQQzjEi+lgWojmwdRsEkjDhz7ZhcxDLYCDIVRRGYJF4AAJXoX4vwADS/YYvz8+hMHQL9YAAOWIAqAHEAFF6AAXj4cxJHBTYVh3XC7i4dN1GIbBEH0YZuPNdQRo0Dx+Q8fRCQpf0PDANQtAMJICHbSh+xATRhm9YZEBNTEDFoIxaExIwwEOdRMUJRBsGGTE9GwPR+USIxEEQMB1C1eZ6KsQ4dD0TQbqMQkPBBmYgA= \ No newline at end of file diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 098cc84..90f89b6 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -951,6 +951,8 @@ action | removeMouse_s | drawWarning_s | addPop_s + | playStereo_s + | moveStereo_s | pass_s ; @@ -1829,16 +1831,16 @@ return code; */; drawWarning_s - : '警告坐标x' PosString 'y' PosString '警告内容' EvalString? Newline + : '警告坐标x' PosString 'y' PosString '警告内容' EvalString? '副标题' EvalString? '不播放音效' Bool? Newline /* drawWarning_s -tooltip : drawWarning: 绘制warning警告并拉进镜头 +tooltip : drawWarning: 绘制warning警告并拉进镜头,本事件为异步事件,下一事件将在3100ms后执行 helpUrl : /_docs/#/instruction -default : [0, 0,"这里是提示内容"] +default : [0, 0,"这里是提示内容","绿色史莱姆",false] colour : this.soundColor selectPoint : ["PosString_0", "PosString_1"] -var code = '{"type": "drawWarning", "x": '+PosString_0+', "y": '+PosString_1+', "text": "'+EvalString_0+'"},\n'; +var code = '{"type": "drawWarning", "x": '+PosString_0+', "y": '+PosString_1+', "text": "'+EvalString_0+'", "text2": "'+EvalString_1+'", "warning": '+Bool_0+'},\n'; return code; */; @@ -2667,6 +2669,39 @@ var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+IntString_0 return code; */; +playStereo_s + : '播放音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? Newline + + +/* playStereo_s +tooltip : playSound: 播放音效(立体音) +helpUrl : /_docs/#/instruction +default : ["item.mp3",1,1,true] +colour : this.imageColor +allSounds : ['EvalString_0'] +material : ["./project/sounds/", "EvalString_0"] + +var code = '{"type": "playStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+'},\n'; +return code; +*/; + +moveStereo_s + : '播放渐变音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? BGNL? Newline + '左声道目标音量' Int '右声道目标音量' Int '渐变时长'Int Newline + + +/* moveStereo_s +tooltip : playSound: 播放渐变音效(立体音) +helpUrl : /_docs/#/instruction +default : ["item.mp3",1,1,true,10,10,1000] +colour : this.imageColor +allSounds : ['EvalString_0'] +material : ["./project/sounds/", "EvalString_0"] + +var code = '{"type": "moveStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+', "leftTo": '+Int_2+', "rightTo": '+Int_3+', "time": '+Int_4+'},\n'; +return code; +*/; + playSound_1_s : '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline diff --git a/_server/MotaActionParser.js b/_server/MotaActionParser.js index bc366b4..486cf8d 100644 --- a/_server/MotaActionParser.js +++ b/_server/MotaActionParser.js @@ -706,6 +706,14 @@ ActionParser.prototype.parseAction = function() { data.loc[0],data.loc[1],data.which,data.floorId||'',data.args||"",this.next]); } break; + case "playStereo": + this.next = MotaActionBlocks['playStereo_s'].xmlText([ + data.name, data.left, data.right, data.split||true,this.next]); + break + case "moveStereo": + this.next = MotaActionBlocks['moveStereo_s'].xmlText([ + data.name, data.left, data.right, data.split||true,data.leftTo, data.rightTo, data.time,this.next]); + break case "playSound": var knownItems = MotaActionBlocks['NameMap_List'].options.map(function (one) {return one[1];}); if (knownItems.indexOf(data.name) >= 0) { @@ -983,7 +991,7 @@ ActionParser.prototype.parseAction = function() { case "drawWarning": this.next = MotaActionBlocks['drawWarning_s'].xmlText([ - data.x,data.y,data?.text,this.next]); + data.x,data.y,data?.text,data?.text2,data?.warning,this.next]); break; case "changeMouse": diff --git a/_server/config.json b/_server/config.json index 21cca12..e24b43c 100644 --- a/_server/config.json +++ b/_server/config.json @@ -1 +1 @@ -{"viewportLoc":[0,0],"lastUsed":[{"idnum":201,"id":"greenSlime","images":"enemys","y":0,"recent":1733488703824,"frequent":2},{"idnum":208,"id":"vampire","images":"enemys","y":7,"recent":1733488405408,"frequent":1},{"idnum":50091,"id":"X50091","images":"2.png","x":3,"y":11,"isTile":true,"recent":1733036499170,"frequent":5},{"idnum":60154,"id":"X60154","images":"1.png","x":2,"y":19,"isTile":true,"recent":1733036468347,"frequent":2},{"idnum":60137,"id":"X60137","images":"1.png","x":1,"y":17,"isTile":true,"recent":1733036464482,"frequent":1},{"idnum":90173,"id":"X90173","images":"12.png","x":5,"y":21,"isTile":true,"recent":1733036406234,"frequent":1},{"idnum":50088,"id":"X50088","images":"2.png","x":0,"y":11,"isTile":true,"recent":1733036083411,"frequent":1},{"idnum":50118,"id":"X50118","images":"2.png","x":6,"y":14,"isTile":true,"recent":1733036073810,"frequent":2},{"idnum":80022,"id":"X80022","images":"6.png","x":6,"y":2,"isTile":true,"recent":1733036035623,"frequent":2},{"idnum":30030,"id":"X30030","images":"4.png","x":6,"y":3,"isTile":true,"recent":1733035992667,"frequent":4},{"idnum":30022,"id":"X30022","images":"4.png","x":6,"y":2,"isTile":true,"recent":1733035990043,"frequent":5},{"idnum":80040,"id":"X80040","images":"6.png","x":0,"y":5,"isTile":true,"recent":1733035977035,"frequent":3},{"idnum":30152,"id":"X30152","images":"4.png","x":0,"y":19,"isTile":true,"recent":1733035880787,"frequent":1},{"idnum":20102,"id":"X20102","images":"5.png","x":6,"y":12,"isTile":true,"recent":1733035800764,"frequent":1},{"idnum":20110,"id":"X20110","images":"5.png","x":6,"y":13,"isTile":true,"recent":1733035797483,"frequent":1},{"idnum":40054,"id":"X40054","images":"3.png","x":6,"y":6,"isTile":true,"recent":1733035788499,"frequent":15},{"idnum":30070,"id":"X30070","images":"4.png","x":6,"y":8,"isTile":true,"recent":1733035779954,"frequent":2},{"idnum":10292,"id":"X10292","images":"magictower.png","x":4,"y":36,"isTile":true,"recent":1733035742884,"frequent":3},{"idnum":30057,"id":"X30057","images":"4.png","x":1,"y":7,"isTile":true,"recent":1733035626491,"frequent":3},{"idnum":30049,"id":"X30049","images":"4.png","x":1,"y":6,"isTile":true,"recent":1733035620426,"frequent":7},{"idnum":40024,"id":"X40024","images":"3.png","x":0,"y":3,"isTile":true,"recent":1733035349067,"frequent":1},{"idnum":40016,"id":"X40016","images":"3.png","x":0,"y":2,"isTile":true,"recent":1733035346538,"frequent":1},{"idnum":142,"id":"autotile9","images":"autotile","y":0,"recent":1733035339467,"frequent":27},{"idnum":10172,"id":"X10172","images":"magictower.png","x":4,"y":21,"isTile":true,"recent":1733035310682,"frequent":3},{"idnum":10252,"id":"X10252","images":"magictower.png","x":4,"y":31,"isTile":true,"recent":1733035301058,"frequent":1},{"idnum":10234,"id":"X10234","images":"magictower.png","x":2,"y":29,"isTile":true,"recent":1733035297587,"frequent":2},{"idnum":40017,"id":"X40017","images":"3.png","x":1,"y":2,"isTile":true,"recent":1733035255555,"frequent":12},{"idnum":141,"id":"autotile8","images":"autotile","y":0,"recent":1733035121436,"frequent":1},{"idnum":40018,"id":"X40018","images":"3.png","x":2,"y":2,"isTile":true,"recent":1733035107482,"frequent":1},{"idnum":40025,"id":"X40025","images":"3.png","x":1,"y":3,"isTile":true,"recent":1733035104754,"frequent":6},{"idnum":40026,"id":"X40026","images":"3.png","x":2,"y":3,"isTile":true,"recent":1733035102828,"frequent":1},{"idnum":50025,"id":"X50025","images":"2.png","x":1,"y":3,"isTile":true,"recent":1733035098819,"frequent":1},{"idnum":50026,"id":"X50026","images":"2.png","x":2,"y":3,"isTile":true,"recent":1733035095658,"frequent":1},{"idnum":334,"id":"T334","images":"terrains","y":38,"recent":1733034945898,"frequent":2},{"idnum":333,"id":"T333","images":"terrains","y":37,"recent":1733034944051,"frequent":2},{"idnum":20064,"id":"X20064","images":"5.png","x":0,"y":8,"isTile":true,"recent":1733034926570,"frequent":2},{"idnum":20138,"id":"X20138","images":"5.png","x":2,"y":17,"isTile":true,"recent":1733034884442,"frequent":4},{"idnum":20146,"id":"X20146","images":"5.png","x":2,"y":18,"isTile":true,"recent":1733034877268,"frequent":2},{"idnum":20154,"id":"X20154","images":"5.png","x":2,"y":19,"isTile":true,"recent":1733034874515,"frequent":1},{"idnum":20137,"id":"X20137","images":"5.png","x":1,"y":17,"isTile":true,"recent":1733034863724,"frequent":1},{"idnum":20145,"id":"X20145","images":"5.png","x":1,"y":18,"isTile":true,"recent":1733034861370,"frequent":1},{"idnum":20153,"id":"X20153","images":"5.png","x":1,"y":19,"isTile":true,"recent":1733034858594,"frequent":1},{"idnum":80012,"id":"X80012","images":"6.png","x":4,"y":1,"isTile":true,"recent":1733034811691,"frequent":1},{"idnum":80004,"id":"X80004","images":"6.png","x":4,"y":0,"isTile":true,"recent":1733034809523,"frequent":1},{"idnum":40032,"id":"X40032","images":"3.png","x":0,"y":4,"isTile":true,"recent":1733034699259,"frequent":2},{"idnum":40034,"id":"X40034","images":"3.png","x":2,"y":4,"isTile":true,"recent":1733034696234,"frequent":2},{"idnum":40040,"id":"X40040","images":"3.png","x":0,"y":5,"isTile":true,"recent":1733034673066,"frequent":2},{"idnum":40042,"id":"X40042","images":"3.png","x":2,"y":5,"isTile":true,"recent":1733034671307,"frequent":2},{"idnum":40048,"id":"X40048","images":"3.png","x":0,"y":6,"isTile":true,"recent":1733034668826,"frequent":5},{"idnum":40050,"id":"X40050","images":"3.png","x":2,"y":6,"isTile":true,"recent":1733034641546,"frequent":2},{"idnum":40064,"id":"X40064","images":"3.png","x":0,"y":8,"isTile":true,"recent":1733034581618,"frequent":3},{"idnum":40066,"id":"X40066","images":"3.png","x":2,"y":8,"isTile":true,"recent":1733034573522,"frequent":5},{"idnum":40065,"id":"X40065","images":"3.png","x":1,"y":8,"isTile":true,"recent":1733034562291,"frequent":3},{"idnum":340,"id":"T340","images":"terrains","y":44,"recent":1733034499820,"frequent":1},{"idnum":339,"id":"T339","images":"terrains","y":43,"recent":1733034497187,"frequent":1},{"idnum":338,"id":"T338","images":"terrains","y":42,"recent":1733034493362,"frequent":1},{"idnum":337,"id":"T337","images":"terrains","y":41,"recent":1733034491427,"frequent":1},{"idnum":336,"id":"T336","images":"terrains","y":40,"recent":1733034488746,"frequent":1},{"idnum":342,"id":"T342","images":"terrains","y":46,"recent":1733034484386,"frequent":2},{"idnum":341,"id":"T341","images":"terrains","y":45,"recent":1733034481307,"frequent":1},{"idnum":20170,"id":"X20170","images":"5.png","x":2,"y":21,"isTile":true,"recent":1733034373154,"frequent":1},{"idnum":20169,"id":"X20169","images":"5.png","x":1,"y":21,"isTile":true,"recent":1733034370331,"frequent":1},{"idnum":20171,"id":"X20171","images":"5.png","x":3,"y":21,"isTile":true,"recent":1733034367612,"frequent":1},{"idnum":20163,"id":"X20163","images":"5.png","x":3,"y":20,"isTile":true,"recent":1733034365003,"frequent":1},{"idnum":20162,"id":"X20162","images":"5.png","x":2,"y":20,"isTile":true,"recent":1733034362572,"frequent":3},{"idnum":20164,"id":"X20164","images":"5.png","x":4,"y":20,"isTile":true,"recent":1733034358427,"frequent":1},{"idnum":20168,"id":"X20168","images":"5.png","x":0,"y":21,"isTile":true,"recent":1733034352411,"frequent":1},{"idnum":20160,"id":"X20160","images":"5.png","x":0,"y":20,"isTile":true,"recent":1733034349914,"frequent":1},{"idnum":20204,"id":"X20204","images":"5.png","x":4,"y":25,"isTile":true,"recent":1733034308748,"frequent":2},{"idnum":20200,"id":"X20200","images":"5.png","x":0,"y":25,"isTile":true,"recent":1733034302595,"frequent":2},{"idnum":20206,"id":"X20206","images":"5.png","x":6,"y":25,"isTile":true,"recent":1733034294323,"frequent":1},{"idnum":20205,"id":"X20205","images":"5.png","x":5,"y":25,"isTile":true,"recent":1733034267011,"frequent":1},{"idnum":20207,"id":"X20207","images":"5.png","x":7,"y":25,"isTile":true,"recent":1733034244955,"frequent":1},{"idnum":30214,"id":"X30214","images":"4.png","x":6,"y":26,"isTile":true,"recent":1733034189107,"frequent":1},{"idnum":10165,"id":"X10165","images":"magictower.png","x":5,"y":20,"isTile":true,"recent":1733034175826,"frequent":2},{"idnum":10173,"id":"X10173","images":"magictower.png","x":5,"y":21,"isTile":true,"recent":1733034171898,"frequent":2},{"idnum":40074,"id":"X40074","images":"3.png","x":2,"y":9,"isTile":true,"recent":1733034153595,"frequent":1},{"idnum":40073,"id":"X40073","images":"3.png","x":1,"y":9,"isTile":true,"recent":1733034149843,"frequent":1},{"idnum":40072,"id":"X40072","images":"3.png","x":0,"y":9,"isTile":true,"recent":1733034135434,"frequent":1},{"idnum":40056,"id":"X40056","images":"3.png","x":0,"y":7,"isTile":true,"recent":1733034130395,"frequent":1},{"idnum":40058,"id":"X40058","images":"3.png","x":2,"y":7,"isTile":true,"recent":1733034122914,"frequent":1},{"idnum":40129,"id":"X40129","images":"3.png","x":1,"y":16,"isTile":true,"recent":1733031890906,"frequent":5},{"idnum":40130,"id":"X40130","images":"3.png","x":2,"y":16,"isTile":true,"recent":1733031887265,"frequent":5},{"idnum":40122,"id":"X40122","images":"3.png","x":2,"y":15,"isTile":true,"recent":1733031884465,"frequent":7},{"idnum":40114,"id":"X40114","images":"3.png","x":2,"y":14,"isTile":true,"recent":1733031878969,"frequent":5},{"idnum":20155,"id":"X20155","images":"5.png","x":3,"y":19,"isTile":true,"recent":1733031815913,"frequent":1},{"idnum":20156,"id":"X20156","images":"5.png","x":4,"y":19,"isTile":true,"recent":1733031813545,"frequent":1},{"idnum":20157,"id":"X20157","images":"5.png","x":5,"y":19,"isTile":true,"recent":1733031809384,"frequent":2},{"idnum":20149,"id":"X20149","images":"5.png","x":5,"y":18,"isTile":true,"recent":1733031798337,"frequent":1},{"idnum":30010,"id":"X30010","images":"4.png","x":2,"y":1,"isTile":true,"recent":1733031791874,"frequent":2},{"idnum":20002,"id":"X20002","images":"5.png","x":2,"y":0,"isTile":true,"recent":1733031789761,"frequent":2},{"idnum":20010,"id":"X20010","images":"5.png","x":2,"y":1,"isTile":true,"recent":1733031787026,"frequent":2},{"idnum":20049,"id":"X20049","images":"5.png","x":1,"y":6,"isTile":true,"recent":1733031779217,"frequent":2},{"idnum":20000,"id":"X20000","images":"5.png","x":0,"y":0,"isTile":true,"recent":1733031762026,"frequent":2},{"idnum":20001,"id":"X20001","images":"5.png","x":1,"y":0,"isTile":true,"recent":1733031755065,"frequent":1},{"idnum":40121,"id":"X40121","images":"3.png","x":1,"y":15,"isTile":true,"recent":1733031718713,"frequent":6},{"idnum":40113,"id":"X40113","images":"3.png","x":1,"y":14,"isTile":true,"recent":1733031686928,"frequent":3},{"idnum":40112,"id":"X40112","images":"3.png","x":0,"y":14,"isTile":true,"recent":1733031641648,"frequent":8},{"idnum":143,"id":"autotile10","images":"autotile","y":0,"recent":1733031487624,"frequent":1},{"idnum":10036,"id":"X10036","images":"magictower.png","x":4,"y":4,"isTile":true,"recent":1732993255397,"frequent":18},{"idnum":92,"id":"leftPortal","images":"animates","y":24,"recent":1732993136053,"frequent":6},{"idnum":94,"id":"rightPortal","images":"animates","y":25,"recent":1732991969998,"frequent":8},{"idnum":164,"id":"arrowRight","images":"terrains","y":14,"recent":1732991956189,"frequent":1},{"idnum":60024,"id":"X60024","images":"1.png","x":0,"y":3,"isTile":true,"recent":1732991883998,"frequent":3},{"idnum":60016,"id":"X60016","images":"1.png","x":0,"y":2,"isTile":true,"recent":1732991882485,"frequent":3},{"idnum":140,"id":"autotile4","images":"autotile","y":0,"recent":1732991872909,"frequent":20},{"idnum":10025,"id":"X10025","images":"magictower.png","x":1,"y":3,"isTile":true,"recent":1732991829749,"frequent":2},{"idnum":60087,"id":"X60087","images":"1.png","x":7,"y":10,"isTile":true,"recent":1732991791037,"frequent":2},{"idnum":60079,"id":"X60079","images":"1.png","x":7,"y":9,"isTile":true,"recent":1732991788078,"frequent":2},{"idnum":60071,"id":"X60071","images":"1.png","x":7,"y":8,"isTile":true,"recent":1732991781181,"frequent":3},{"idnum":60069,"id":"X60069","images":"1.png","x":5,"y":8,"isTile":true,"recent":1732991769916,"frequent":3},{"idnum":60025,"id":"X60025","images":"1.png","x":1,"y":3,"isTile":true,"recent":1732991748421,"frequent":4},{"idnum":60026,"id":"X60026","images":"1.png","x":2,"y":3,"isTile":true,"recent":1732991746125,"frequent":2},{"idnum":60018,"id":"X60018","images":"1.png","x":2,"y":2,"isTile":true,"recent":1732991744365,"frequent":2},{"idnum":60017,"id":"X60017","images":"1.png","x":1,"y":2,"isTile":true,"recent":1732991742653,"frequent":2},{"idnum":20103,"id":"X20103","images":"5.png","x":7,"y":12,"isTile":true,"recent":1732991713493,"frequent":1},{"idnum":20095,"id":"X20095","images":"5.png","x":7,"y":11,"isTile":true,"recent":1732991708919,"frequent":3},{"idnum":70054,"id":"X70054","images":"11.png","x":6,"y":6,"isTile":true,"recent":1732991657973,"frequent":2},{"idnum":70046,"id":"X70046","images":"11.png","x":6,"y":5,"isTile":true,"recent":1732991653861,"frequent":1},{"idnum":70070,"id":"X70070","images":"11.png","x":6,"y":8,"isTile":true,"recent":1732991599957,"frequent":8},{"idnum":70062,"id":"X70062","images":"11.png","x":6,"y":7,"isTile":true,"recent":1732991577637,"frequent":10},{"idnum":70071,"id":"X70071","images":"11.png","x":7,"y":8,"isTile":true,"recent":1732991539309,"frequent":5},{"idnum":70063,"id":"X70063","images":"11.png","x":7,"y":7,"isTile":true,"recent":1732991529685,"frequent":2},{"idnum":70129,"id":"X70129","images":"11.png","x":1,"y":16,"isTile":true,"recent":1732991479878,"frequent":1},{"idnum":60001,"id":"X60001","images":"1.png","x":1,"y":0,"isTile":true,"recent":1732991121231,"frequent":1},{"idnum":319,"id":"tallYellowDoor","images":"npc48","y":4,"recent":1732991099413,"frequent":1},{"idnum":30054,"id":"X30054","images":"4.png","x":6,"y":6,"isTile":true,"recent":1732991079549,"frequent":1},{"idnum":50021,"id":"X50021","images":"2.png","x":5,"y":2,"isTile":true,"recent":1732991071222,"frequent":1},{"idnum":50001,"id":"X50001","images":"2.png","x":1,"y":0,"isTile":true,"recent":1732991055302,"frequent":1},{"idnum":40001,"id":"X40001","images":"3.png","x":1,"y":0,"isTile":true,"recent":1732991044741,"frequent":2},{"idnum":50120,"id":"X50120","images":"2.png","x":0,"y":15,"isTile":true,"recent":1732991033797,"frequent":1},{"idnum":50114,"id":"X50114","images":"2.png","x":2,"y":14,"isTile":true,"recent":1732991021636,"frequent":1},{"idnum":40155,"id":"X40155","images":"3.png","x":3,"y":19,"isTile":true,"recent":1732991006102,"frequent":1},{"idnum":40099,"id":"X40099","images":"3.png","x":3,"y":12,"isTile":true,"recent":1732991001573,"frequent":1},{"idnum":40091,"id":"X40091","images":"3.png","x":3,"y":11,"isTile":true,"recent":1732990998821,"frequent":1},{"idnum":40098,"id":"X40098","images":"3.png","x":2,"y":12,"isTile":true,"recent":1732990996141,"frequent":2},{"idnum":20122,"id":"X20122","images":"5.png","x":2,"y":15,"isTile":true,"recent":1732990965334,"frequent":1},{"idnum":20130,"id":"X20130","images":"5.png","x":2,"y":16,"isTile":true,"recent":1732990961925,"frequent":1},{"idnum":20167,"id":"X20167","images":"5.png","x":7,"y":20,"isTile":true,"recent":1732990926070,"frequent":3},{"idnum":50023,"id":"X50023","images":"2.png","x":7,"y":2,"isTile":true,"recent":1732990879893,"frequent":1},{"idnum":50031,"id":"X50031","images":"2.png","x":7,"y":3,"isTile":true,"recent":1732990877749,"frequent":1},{"idnum":10119,"id":"X10119","images":"magictower.png","x":7,"y":14,"isTile":true,"recent":1732989908911,"frequent":1},{"idnum":91,"id":"upPortal","images":"animates","y":26,"recent":1732868104690,"frequent":7},{"idnum":93,"id":"downPortal","images":"animates","y":23,"recent":1732867884540,"frequent":6},{"idnum":45,"id":"book","images":"items","y":9,"recent":1732787462314,"frequent":1},{"idnum":46,"id":"fly","images":"items","y":12,"recent":1732768196310,"frequent":2},{"idnum":89,"id":"portal","images":"animates","y":17,"recent":1732590284009,"frequent":4},{"idnum":206,"id":"bigBat","images":"enemys","y":5,"recent":1732518600961,"frequent":1},{"idnum":211,"id":"skeletonCaptain","images":"enemys","y":10,"recent":1732518593961,"frequent":3},{"idnum":205,"id":"bat","images":"enemys","y":4,"recent":1732518591433,"frequent":1},{"idnum":88,"id":"downFloor","images":"terrains","y":5,"recent":1732510497803,"frequent":1},{"idnum":87,"id":"upFloor","images":"terrains","y":6,"recent":1732510482564,"frequent":3},{"idnum":257,"id":"dragon","images":"enemys","y":56,"recent":1732431861421,"frequent":4},{"idnum":130,"id":"expShop","images":"npcs","y":9,"recent":1732092503297,"frequent":1},{"idnum":27,"id":"redGem","images":"items","y":16,"recent":1732092498097,"frequent":1},{"idnum":246,"id":"blueKing","images":"enemys","y":45,"recent":1731057412587,"frequent":9},{"idnum":43,"id":"sword5","images":"items","y":54,"recent":1730963163489,"frequent":1},{"idnum":36,"id":"shield1","images":"items","y":55,"recent":1730963160769,"frequent":1},{"idnum":1,"id":"yellowWall","images":"animates","y":10,"recent":1673440212744,"frequent":2}],"editor_multi.fontSize":14,"editorLastFloorId":"jiuguan","alertTileModeV2.7":true} \ No newline at end of file +{"viewportLoc":[0,0],"lastUsed":[{"idnum":94,"id":"rightPortal","images":"animates","y":25,"recent":1733559341807,"frequent":11},{"idnum":201,"id":"greenSlime","images":"enemys","y":0,"recent":1733493592922,"frequent":3},{"idnum":208,"id":"vampire","images":"enemys","y":7,"recent":1733488405408,"frequent":1},{"idnum":50091,"id":"X50091","images":"2.png","x":3,"y":11,"isTile":true,"recent":1733036499170,"frequent":5},{"idnum":60154,"id":"X60154","images":"1.png","x":2,"y":19,"isTile":true,"recent":1733036468347,"frequent":2},{"idnum":60137,"id":"X60137","images":"1.png","x":1,"y":17,"isTile":true,"recent":1733036464482,"frequent":1},{"idnum":90173,"id":"X90173","images":"12.png","x":5,"y":21,"isTile":true,"recent":1733036406234,"frequent":1},{"idnum":50088,"id":"X50088","images":"2.png","x":0,"y":11,"isTile":true,"recent":1733036083411,"frequent":1},{"idnum":50118,"id":"X50118","images":"2.png","x":6,"y":14,"isTile":true,"recent":1733036073810,"frequent":2},{"idnum":80022,"id":"X80022","images":"6.png","x":6,"y":2,"isTile":true,"recent":1733036035623,"frequent":2},{"idnum":30030,"id":"X30030","images":"4.png","x":6,"y":3,"isTile":true,"recent":1733035992667,"frequent":4},{"idnum":30022,"id":"X30022","images":"4.png","x":6,"y":2,"isTile":true,"recent":1733035990043,"frequent":5},{"idnum":80040,"id":"X80040","images":"6.png","x":0,"y":5,"isTile":true,"recent":1733035977035,"frequent":3},{"idnum":30152,"id":"X30152","images":"4.png","x":0,"y":19,"isTile":true,"recent":1733035880787,"frequent":1},{"idnum":20102,"id":"X20102","images":"5.png","x":6,"y":12,"isTile":true,"recent":1733035800764,"frequent":1},{"idnum":20110,"id":"X20110","images":"5.png","x":6,"y":13,"isTile":true,"recent":1733035797483,"frequent":1},{"idnum":40054,"id":"X40054","images":"3.png","x":6,"y":6,"isTile":true,"recent":1733035788499,"frequent":15},{"idnum":30070,"id":"X30070","images":"4.png","x":6,"y":8,"isTile":true,"recent":1733035779954,"frequent":2},{"idnum":10292,"id":"X10292","images":"magictower.png","x":4,"y":36,"isTile":true,"recent":1733035742884,"frequent":3},{"idnum":30057,"id":"X30057","images":"4.png","x":1,"y":7,"isTile":true,"recent":1733035626491,"frequent":3},{"idnum":30049,"id":"X30049","images":"4.png","x":1,"y":6,"isTile":true,"recent":1733035620426,"frequent":7},{"idnum":40024,"id":"X40024","images":"3.png","x":0,"y":3,"isTile":true,"recent":1733035349067,"frequent":1},{"idnum":40016,"id":"X40016","images":"3.png","x":0,"y":2,"isTile":true,"recent":1733035346538,"frequent":1},{"idnum":142,"id":"autotile9","images":"autotile","y":0,"recent":1733035339467,"frequent":27},{"idnum":10172,"id":"X10172","images":"magictower.png","x":4,"y":21,"isTile":true,"recent":1733035310682,"frequent":3},{"idnum":10252,"id":"X10252","images":"magictower.png","x":4,"y":31,"isTile":true,"recent":1733035301058,"frequent":1},{"idnum":10234,"id":"X10234","images":"magictower.png","x":2,"y":29,"isTile":true,"recent":1733035297587,"frequent":2},{"idnum":40017,"id":"X40017","images":"3.png","x":1,"y":2,"isTile":true,"recent":1733035255555,"frequent":12},{"idnum":141,"id":"autotile8","images":"autotile","y":0,"recent":1733035121436,"frequent":1},{"idnum":40018,"id":"X40018","images":"3.png","x":2,"y":2,"isTile":true,"recent":1733035107482,"frequent":1},{"idnum":40025,"id":"X40025","images":"3.png","x":1,"y":3,"isTile":true,"recent":1733035104754,"frequent":6},{"idnum":40026,"id":"X40026","images":"3.png","x":2,"y":3,"isTile":true,"recent":1733035102828,"frequent":1},{"idnum":50025,"id":"X50025","images":"2.png","x":1,"y":3,"isTile":true,"recent":1733035098819,"frequent":1},{"idnum":50026,"id":"X50026","images":"2.png","x":2,"y":3,"isTile":true,"recent":1733035095658,"frequent":1},{"idnum":334,"id":"T334","images":"terrains","y":38,"recent":1733034945898,"frequent":2},{"idnum":333,"id":"T333","images":"terrains","y":37,"recent":1733034944051,"frequent":2},{"idnum":20064,"id":"X20064","images":"5.png","x":0,"y":8,"isTile":true,"recent":1733034926570,"frequent":2},{"idnum":20138,"id":"X20138","images":"5.png","x":2,"y":17,"isTile":true,"recent":1733034884442,"frequent":4},{"idnum":20146,"id":"X20146","images":"5.png","x":2,"y":18,"isTile":true,"recent":1733034877268,"frequent":2},{"idnum":20154,"id":"X20154","images":"5.png","x":2,"y":19,"isTile":true,"recent":1733034874515,"frequent":1},{"idnum":20137,"id":"X20137","images":"5.png","x":1,"y":17,"isTile":true,"recent":1733034863724,"frequent":1},{"idnum":20145,"id":"X20145","images":"5.png","x":1,"y":18,"isTile":true,"recent":1733034861370,"frequent":1},{"idnum":20153,"id":"X20153","images":"5.png","x":1,"y":19,"isTile":true,"recent":1733034858594,"frequent":1},{"idnum":80012,"id":"X80012","images":"6.png","x":4,"y":1,"isTile":true,"recent":1733034811691,"frequent":1},{"idnum":80004,"id":"X80004","images":"6.png","x":4,"y":0,"isTile":true,"recent":1733034809523,"frequent":1},{"idnum":40032,"id":"X40032","images":"3.png","x":0,"y":4,"isTile":true,"recent":1733034699259,"frequent":2},{"idnum":40034,"id":"X40034","images":"3.png","x":2,"y":4,"isTile":true,"recent":1733034696234,"frequent":2},{"idnum":40040,"id":"X40040","images":"3.png","x":0,"y":5,"isTile":true,"recent":1733034673066,"frequent":2},{"idnum":40042,"id":"X40042","images":"3.png","x":2,"y":5,"isTile":true,"recent":1733034671307,"frequent":2},{"idnum":40048,"id":"X40048","images":"3.png","x":0,"y":6,"isTile":true,"recent":1733034668826,"frequent":5},{"idnum":40050,"id":"X40050","images":"3.png","x":2,"y":6,"isTile":true,"recent":1733034641546,"frequent":2},{"idnum":40064,"id":"X40064","images":"3.png","x":0,"y":8,"isTile":true,"recent":1733034581618,"frequent":3},{"idnum":40066,"id":"X40066","images":"3.png","x":2,"y":8,"isTile":true,"recent":1733034573522,"frequent":5},{"idnum":40065,"id":"X40065","images":"3.png","x":1,"y":8,"isTile":true,"recent":1733034562291,"frequent":3},{"idnum":340,"id":"T340","images":"terrains","y":44,"recent":1733034499820,"frequent":1},{"idnum":339,"id":"T339","images":"terrains","y":43,"recent":1733034497187,"frequent":1},{"idnum":338,"id":"T338","images":"terrains","y":42,"recent":1733034493362,"frequent":1},{"idnum":337,"id":"T337","images":"terrains","y":41,"recent":1733034491427,"frequent":1},{"idnum":336,"id":"T336","images":"terrains","y":40,"recent":1733034488746,"frequent":1},{"idnum":342,"id":"T342","images":"terrains","y":46,"recent":1733034484386,"frequent":2},{"idnum":341,"id":"T341","images":"terrains","y":45,"recent":1733034481307,"frequent":1},{"idnum":20170,"id":"X20170","images":"5.png","x":2,"y":21,"isTile":true,"recent":1733034373154,"frequent":1},{"idnum":20169,"id":"X20169","images":"5.png","x":1,"y":21,"isTile":true,"recent":1733034370331,"frequent":1},{"idnum":20171,"id":"X20171","images":"5.png","x":3,"y":21,"isTile":true,"recent":1733034367612,"frequent":1},{"idnum":20163,"id":"X20163","images":"5.png","x":3,"y":20,"isTile":true,"recent":1733034365003,"frequent":1},{"idnum":20162,"id":"X20162","images":"5.png","x":2,"y":20,"isTile":true,"recent":1733034362572,"frequent":3},{"idnum":20164,"id":"X20164","images":"5.png","x":4,"y":20,"isTile":true,"recent":1733034358427,"frequent":1},{"idnum":20168,"id":"X20168","images":"5.png","x":0,"y":21,"isTile":true,"recent":1733034352411,"frequent":1},{"idnum":20160,"id":"X20160","images":"5.png","x":0,"y":20,"isTile":true,"recent":1733034349914,"frequent":1},{"idnum":20204,"id":"X20204","images":"5.png","x":4,"y":25,"isTile":true,"recent":1733034308748,"frequent":2},{"idnum":20200,"id":"X20200","images":"5.png","x":0,"y":25,"isTile":true,"recent":1733034302595,"frequent":2},{"idnum":20206,"id":"X20206","images":"5.png","x":6,"y":25,"isTile":true,"recent":1733034294323,"frequent":1},{"idnum":20205,"id":"X20205","images":"5.png","x":5,"y":25,"isTile":true,"recent":1733034267011,"frequent":1},{"idnum":20207,"id":"X20207","images":"5.png","x":7,"y":25,"isTile":true,"recent":1733034244955,"frequent":1},{"idnum":30214,"id":"X30214","images":"4.png","x":6,"y":26,"isTile":true,"recent":1733034189107,"frequent":1},{"idnum":10165,"id":"X10165","images":"magictower.png","x":5,"y":20,"isTile":true,"recent":1733034175826,"frequent":2},{"idnum":10173,"id":"X10173","images":"magictower.png","x":5,"y":21,"isTile":true,"recent":1733034171898,"frequent":2},{"idnum":40074,"id":"X40074","images":"3.png","x":2,"y":9,"isTile":true,"recent":1733034153595,"frequent":1},{"idnum":40073,"id":"X40073","images":"3.png","x":1,"y":9,"isTile":true,"recent":1733034149843,"frequent":1},{"idnum":40072,"id":"X40072","images":"3.png","x":0,"y":9,"isTile":true,"recent":1733034135434,"frequent":1},{"idnum":40056,"id":"X40056","images":"3.png","x":0,"y":7,"isTile":true,"recent":1733034130395,"frequent":1},{"idnum":40058,"id":"X40058","images":"3.png","x":2,"y":7,"isTile":true,"recent":1733034122914,"frequent":1},{"idnum":40129,"id":"X40129","images":"3.png","x":1,"y":16,"isTile":true,"recent":1733031890906,"frequent":5},{"idnum":40130,"id":"X40130","images":"3.png","x":2,"y":16,"isTile":true,"recent":1733031887265,"frequent":5},{"idnum":40122,"id":"X40122","images":"3.png","x":2,"y":15,"isTile":true,"recent":1733031884465,"frequent":7},{"idnum":40114,"id":"X40114","images":"3.png","x":2,"y":14,"isTile":true,"recent":1733031878969,"frequent":5},{"idnum":20155,"id":"X20155","images":"5.png","x":3,"y":19,"isTile":true,"recent":1733031815913,"frequent":1},{"idnum":20156,"id":"X20156","images":"5.png","x":4,"y":19,"isTile":true,"recent":1733031813545,"frequent":1},{"idnum":20157,"id":"X20157","images":"5.png","x":5,"y":19,"isTile":true,"recent":1733031809384,"frequent":2},{"idnum":20149,"id":"X20149","images":"5.png","x":5,"y":18,"isTile":true,"recent":1733031798337,"frequent":1},{"idnum":30010,"id":"X30010","images":"4.png","x":2,"y":1,"isTile":true,"recent":1733031791874,"frequent":2},{"idnum":20002,"id":"X20002","images":"5.png","x":2,"y":0,"isTile":true,"recent":1733031789761,"frequent":2},{"idnum":20010,"id":"X20010","images":"5.png","x":2,"y":1,"isTile":true,"recent":1733031787026,"frequent":2},{"idnum":20049,"id":"X20049","images":"5.png","x":1,"y":6,"isTile":true,"recent":1733031779217,"frequent":2},{"idnum":20000,"id":"X20000","images":"5.png","x":0,"y":0,"isTile":true,"recent":1733031762026,"frequent":2},{"idnum":20001,"id":"X20001","images":"5.png","x":1,"y":0,"isTile":true,"recent":1733031755065,"frequent":1},{"idnum":40121,"id":"X40121","images":"3.png","x":1,"y":15,"isTile":true,"recent":1733031718713,"frequent":6},{"idnum":40113,"id":"X40113","images":"3.png","x":1,"y":14,"isTile":true,"recent":1733031686928,"frequent":3},{"idnum":40112,"id":"X40112","images":"3.png","x":0,"y":14,"isTile":true,"recent":1733031641648,"frequent":8},{"idnum":143,"id":"autotile10","images":"autotile","y":0,"recent":1733031487624,"frequent":1},{"idnum":10036,"id":"X10036","images":"magictower.png","x":4,"y":4,"isTile":true,"recent":1732993255397,"frequent":18},{"idnum":92,"id":"leftPortal","images":"animates","y":24,"recent":1732993136053,"frequent":6},{"idnum":164,"id":"arrowRight","images":"terrains","y":14,"recent":1732991956189,"frequent":1},{"idnum":60024,"id":"X60024","images":"1.png","x":0,"y":3,"isTile":true,"recent":1732991883998,"frequent":3},{"idnum":60016,"id":"X60016","images":"1.png","x":0,"y":2,"isTile":true,"recent":1732991882485,"frequent":3},{"idnum":140,"id":"autotile4","images":"autotile","y":0,"recent":1732991872909,"frequent":20},{"idnum":10025,"id":"X10025","images":"magictower.png","x":1,"y":3,"isTile":true,"recent":1732991829749,"frequent":2},{"idnum":60087,"id":"X60087","images":"1.png","x":7,"y":10,"isTile":true,"recent":1732991791037,"frequent":2},{"idnum":60079,"id":"X60079","images":"1.png","x":7,"y":9,"isTile":true,"recent":1732991788078,"frequent":2},{"idnum":60071,"id":"X60071","images":"1.png","x":7,"y":8,"isTile":true,"recent":1732991781181,"frequent":3},{"idnum":60069,"id":"X60069","images":"1.png","x":5,"y":8,"isTile":true,"recent":1732991769916,"frequent":3},{"idnum":60025,"id":"X60025","images":"1.png","x":1,"y":3,"isTile":true,"recent":1732991748421,"frequent":4},{"idnum":60026,"id":"X60026","images":"1.png","x":2,"y":3,"isTile":true,"recent":1732991746125,"frequent":2},{"idnum":60018,"id":"X60018","images":"1.png","x":2,"y":2,"isTile":true,"recent":1732991744365,"frequent":2},{"idnum":60017,"id":"X60017","images":"1.png","x":1,"y":2,"isTile":true,"recent":1732991742653,"frequent":2},{"idnum":20103,"id":"X20103","images":"5.png","x":7,"y":12,"isTile":true,"recent":1732991713493,"frequent":1},{"idnum":20095,"id":"X20095","images":"5.png","x":7,"y":11,"isTile":true,"recent":1732991708919,"frequent":3},{"idnum":70054,"id":"X70054","images":"11.png","x":6,"y":6,"isTile":true,"recent":1732991657973,"frequent":2},{"idnum":70046,"id":"X70046","images":"11.png","x":6,"y":5,"isTile":true,"recent":1732991653861,"frequent":1},{"idnum":70070,"id":"X70070","images":"11.png","x":6,"y":8,"isTile":true,"recent":1732991599957,"frequent":8},{"idnum":70062,"id":"X70062","images":"11.png","x":6,"y":7,"isTile":true,"recent":1732991577637,"frequent":10},{"idnum":70071,"id":"X70071","images":"11.png","x":7,"y":8,"isTile":true,"recent":1732991539309,"frequent":5},{"idnum":70063,"id":"X70063","images":"11.png","x":7,"y":7,"isTile":true,"recent":1732991529685,"frequent":2},{"idnum":70129,"id":"X70129","images":"11.png","x":1,"y":16,"isTile":true,"recent":1732991479878,"frequent":1},{"idnum":60001,"id":"X60001","images":"1.png","x":1,"y":0,"isTile":true,"recent":1732991121231,"frequent":1},{"idnum":319,"id":"tallYellowDoor","images":"npc48","y":4,"recent":1732991099413,"frequent":1},{"idnum":30054,"id":"X30054","images":"4.png","x":6,"y":6,"isTile":true,"recent":1732991079549,"frequent":1},{"idnum":50021,"id":"X50021","images":"2.png","x":5,"y":2,"isTile":true,"recent":1732991071222,"frequent":1},{"idnum":50001,"id":"X50001","images":"2.png","x":1,"y":0,"isTile":true,"recent":1732991055302,"frequent":1},{"idnum":40001,"id":"X40001","images":"3.png","x":1,"y":0,"isTile":true,"recent":1732991044741,"frequent":2},{"idnum":50120,"id":"X50120","images":"2.png","x":0,"y":15,"isTile":true,"recent":1732991033797,"frequent":1},{"idnum":50114,"id":"X50114","images":"2.png","x":2,"y":14,"isTile":true,"recent":1732991021636,"frequent":1},{"idnum":40155,"id":"X40155","images":"3.png","x":3,"y":19,"isTile":true,"recent":1732991006102,"frequent":1},{"idnum":40099,"id":"X40099","images":"3.png","x":3,"y":12,"isTile":true,"recent":1732991001573,"frequent":1},{"idnum":40091,"id":"X40091","images":"3.png","x":3,"y":11,"isTile":true,"recent":1732990998821,"frequent":1},{"idnum":40098,"id":"X40098","images":"3.png","x":2,"y":12,"isTile":true,"recent":1732990996141,"frequent":2},{"idnum":20122,"id":"X20122","images":"5.png","x":2,"y":15,"isTile":true,"recent":1732990965334,"frequent":1},{"idnum":20130,"id":"X20130","images":"5.png","x":2,"y":16,"isTile":true,"recent":1732990961925,"frequent":1},{"idnum":20167,"id":"X20167","images":"5.png","x":7,"y":20,"isTile":true,"recent":1732990926070,"frequent":3},{"idnum":50023,"id":"X50023","images":"2.png","x":7,"y":2,"isTile":true,"recent":1732990879893,"frequent":1},{"idnum":50031,"id":"X50031","images":"2.png","x":7,"y":3,"isTile":true,"recent":1732990877749,"frequent":1},{"idnum":10119,"id":"X10119","images":"magictower.png","x":7,"y":14,"isTile":true,"recent":1732989908911,"frequent":1},{"idnum":91,"id":"upPortal","images":"animates","y":26,"recent":1732868104690,"frequent":7},{"idnum":93,"id":"downPortal","images":"animates","y":23,"recent":1732867884540,"frequent":6},{"idnum":45,"id":"book","images":"items","y":9,"recent":1732787462314,"frequent":1},{"idnum":46,"id":"fly","images":"items","y":12,"recent":1732768196310,"frequent":2},{"idnum":89,"id":"portal","images":"animates","y":17,"recent":1732590284009,"frequent":4},{"idnum":206,"id":"bigBat","images":"enemys","y":5,"recent":1732518600961,"frequent":1},{"idnum":211,"id":"skeletonCaptain","images":"enemys","y":10,"recent":1732518593961,"frequent":3},{"idnum":205,"id":"bat","images":"enemys","y":4,"recent":1732518591433,"frequent":1},{"idnum":88,"id":"downFloor","images":"terrains","y":5,"recent":1732510497803,"frequent":1},{"idnum":87,"id":"upFloor","images":"terrains","y":6,"recent":1732510482564,"frequent":3},{"idnum":257,"id":"dragon","images":"enemys","y":56,"recent":1732431861421,"frequent":4},{"idnum":130,"id":"expShop","images":"npcs","y":9,"recent":1732092503297,"frequent":1},{"idnum":27,"id":"redGem","images":"items","y":16,"recent":1732092498097,"frequent":1},{"idnum":246,"id":"blueKing","images":"enemys","y":45,"recent":1731057412587,"frequent":9},{"idnum":43,"id":"sword5","images":"items","y":54,"recent":1730963163489,"frequent":1},{"idnum":36,"id":"shield1","images":"items","y":55,"recent":1730963160769,"frequent":1},{"idnum":1,"id":"yellowWall","images":"animates","y":10,"recent":1673440212744,"frequent":2}],"editor_multi.fontSize":14,"editorLastFloorId":"MT1","alertTileModeV2.7":true} \ No newline at end of file diff --git a/project/data.js b/project/data.js index 11860a7..adb4574 100644 --- a/project/data.js +++ b/project/data.js @@ -258,7 +258,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "title": "秽翼的尤斯蒂娅", "name": "Eustia", "version": "鸽子窝造塔小队", - "floorId": "jiuguan", + "floorId": "MT0", "hero": { "image": "hero.png", "animate": false, @@ -281,8 +281,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, "loc": { "direction": "up", - "x": 4, - "y": 9 + "x": 7, + "y": 8 }, "flags": { "itemDetail": true, diff --git a/project/floors/jiuguan.js b/project/floors/jiuguan.js index 21cee40..ca8817c 100644 --- a/project/floors/jiuguan.js +++ b/project/floors/jiuguan.js @@ -23,8 +23,39 @@ main.floors.jiuguan= { "type": "drawWarning", "x": 9, - "y": 4, - "text": "本区域领袖" + "y": 5, + "text": "本区域领袖", + "text2": "绿色史莱姆", + "warning": false + }, + { + "type": "playStereo", + "name": "item.mp3", + "left": 1, + "right": 6, + "split": true + }, + { + "type": "move", + "loc": [ + 9, + 5 + ], + "time": 500, + "keep": true, + "steps": [ + "up:1" + ] + }, + { + "type": "moveStereo", + "name": "jingbao.mp3", + "left": 4, + "right": 10, + "split": true, + "leftTo": 10, + "rightTo": 4, + "time": 2000 } ] }, @@ -42,7 +73,7 @@ main.floors.jiuguan= [ 0, 0, 0, 0,333,20212,20213,20214,20215,40064,30030, 0, 0], [ 0, 0, 0, 0,334,20220,20221,20222,20223,40072,40074,10173, 0], [ 0, 0, 0, 0,342,340,340,340,339, 0, 0, 0, 0], - [ 0, 0, 0, 0,336,337,337,337,338, 0,30070,10292, 0], + [ 0, 0, 0, 0,336,337,337,337,338,201,30070,10292, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10292, 0], [ 0, 0, 0, 0, 0, 0,40054, 0, 0,40054,40054,20110, 0], [ 0,40054,80004,40054, 0, 0,40040,40042, 0,40040,40042, 0, 0], diff --git a/project/plugins.js b/project/plugins.js index 174a91d..43c92a5 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -17,7 +17,16 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.doAction() }) core.registerEvent("drawWarning", function (data) { - core.drawWarning(data.x, data.y, data?.text) + core.drawWarning(data.x, data.y, data?.text, data?.text2, data?.warning) + setTimeout(() => core.doAction(), 3100) + }) + core.registerEvent("playStereo", function (data) { + core.playStereo(data.name, data.left, data.right, data.split) + core.doAction() + }) + core.registerEvent("moveStereo", function (data) { + const id = core.playStereo(data.name, data.left, data.right, data.split) + core.moveStereo(id, data.leftTo, data.rightTo, data.time) core.doAction() }) } @@ -2506,19 +2515,32 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } return; } - const equipBox = makeBox([EQUIP_BLOCK_LEFT_VERTICAL, EQUIP_BLOCK_TOP_VERTICAL], [90 * 3, 130 * 3]) + const mapBox = makeBox([MAP_BLOCK_LEFT_VERTICAL, MAP_BLOCK_TOP_VERTICAL], [350, 350]) + if (inRect(pos, mapBox)) { + if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; + core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)) + return; + } + /*const equipBox = makeBox([EQUIP_BLOCK_LEFT_VERTICAL, EQUIP_BLOCK_TOP_VERTICAL], [90 * 3, 130 * 3]) if (inRect(pos, equipBox)) { if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; core.openEquipbox(true) return; - } + }*/ } else { - const equipBox = makeBox([EQUIP_BLOCK_LEFT, EQUIP_BLOCK_TOP], [130, 95]) - if (inRect(pos, equipBox)) { + const mapBox = makeBox([MAP_BLOCK_LEFT, MAP_BLOCK_TOP], [350, 350]) + if (inRect(pos, mapBox)) { if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; - core.openEquipbox(true) + core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)) return; } + /* + const equipBox = makeBox([EQUIP_BLOCK_LEFT, EQUIP_BLOCK_TOP], [130, 95]) + if (inRect(pos, equipBox)) { + if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; + core.openEquipbox(true) + return; + }*/ const itemBox = makeBox([ITEM_BOX_LEFT, ITEM_BOX_TOP], [31 * 4 * 3, 30 * 6 * 3]); if (inRect(pos, itemBox)) { const [gx, gy] = gridify(relativeTo(pos, itemBox[0]), [31 * 3, 30 * 3]); @@ -7245,6 +7267,8 @@ core.plugin.animate = { MotaActionBlocks['scaleImage_s'].xmlText(), MotaActionBlocks['showGif_s'].xmlText(), MotaActionBlocks['playBgm_s'].xmlText(), + MotaActionBlocks['playStereo_s'].xmlText(), + MotaActionBlocks['moveStereo_s'].xmlText(), MotaActionBlocks['pauseBgm_s'].xmlText(), MotaActionBlocks['resumeBgm_s'].xmlText(), MotaActionBlocks['loadBgm_s'].xmlText(), @@ -8079,7 +8103,7 @@ core.plugin.animate = { core.fillRect(ctx, sx, sy, sw, sh, '#000') core.strokeRect(ctx, sx, sy, sw, sh, '#fff', 5) core.setTextAlign('outerUI', 'center') - core.fillText(ctx, core.status.maps[center].areas, sx + sw / 2, sy - 20, '#FFFFFF', 'bold 42px Verdana') + core.fillText(ctx, core.status.maps[center].areas, sx + sw * 3 / 8, sy - 10, '#FFFFFF', 'bold 42px Verdana') const locs = info.locs for (const id in locs) { const loc = locs[id]; @@ -9205,14 +9229,14 @@ core.plugin.animate = { * @param {number} y 纵坐标 * @param {string} text 显示的文字 */ - this.drawWarning = function (x, y, text) { + this.drawWarning = function (x, y, text, text2, warning) { if (timeout) return; - x = x || 6; - y = y || 6; + x = x ?? 6; + y = y ?? 6; text = text || 'boss'; text += '
'; for (var i = 0; i < 10; i++) text += ' '; - if (core.material.enemys?.[core.getBlock(x, y)?.event?.id]?.name) text += core.material.enemys?.[core.getBlock(x, y)?.event?.id]?.name; + text += text2; // 生成文字 var elements = document.querySelectorAll('.gameCanvas'); var t = document.createElement('p'); @@ -9238,7 +9262,7 @@ core.plugin.animate = { v.style.transform = 'scale(2)translate(' + px + '%, ' + py + '%)'; } }); - core.playSound(defaultSound); + if (!warning) core.playSound(defaultSound); // 拉回镜头 timeout = setTimeout(function () { timeout = setTimeout(function () { @@ -9252,5 +9276,227 @@ core.plugin.animate = { }); }, 1600); } +}, + "立体声音效": function () { + // 在此增加新插件 + // 音效双声道播放 + var can = true; + if (!AudioContext) { + console.warn('该浏览器不支持AudioContext,无法播放立体声'); + can = false + } + if (can) var ac = new AudioContext(); + var datas = {}; + + /** 播放立体声 参考:https://developer.mozilla.org/zh-CN/docs/Web/API/BaseAudioContext/createChannelSplitter + * @param {number} name 音效名 + * @param {number} left 左声道音量,默认为1 + * @param {number} right 右声道音量,默认为1 + * @param {boolean} split 音效为双声道,请填true,为单声道,请填false或不填 + * @returns 该音效的唯一id + */ + this.playStereo = function (name, left, right, split) { + if (!can) return core.playSound(name); + var sound = core.getMappedName(name); + if (main.mode != 'play' || !core.musicStatus.soundStatus || !core.material.sounds[sound]) return; + if (!core.status.stereo) core.status.stereo = {}; + var buffer = core.material.sounds[sound]; + var source = ac.createBufferSource(); + source.buffer = buffer; + var splitter = ac.createChannelSplitter(2); + source.connect(splitter); + var merger = ac.createChannelMerger(2); + + /* 大致流程 + gain(L) + / \ + source ---- splitter merger ---- destination + \ / + gain(R) + */ + + var L = ac.createGain(); + var R = ac.createGain(); + L.gain.value = left * core.musicStatus.userVolume; + R.gain.value = right * core.musicStatus.userVolume; + splitter.connect(L, 0, 0); + if (!split) splitter.connect(R, 0, 0); + else splitter.connect(R, 1, 0); + + var id = setTimeout(null); + core.status.stereo[id] = { source: source, L: L, R: R }; + + L.connect(merger, 0, 0); + R.connect(merger, 0, 1); + + var dest = ac.destination; + + source.onended = function () { + delete datas[id]; + source = void 0; + } + + merger.connect(dest); + source.start(0); + return id; + } + + /** 移动声源(渐变调整左右声道音量) + * @param {number} id 为playStereo返回的id + * @param {number} left 要渐变到的左声道音量 + * @param {number} right 要渐变到的右声道音量 + * @param {number} time 渐变时间 + */ + this.moveStereo = function (id, left, right, time) { + if (!can) return; + if (main.mode != 'play' || !core.musicStatus.soundStatus) return; + var stereo = core.status.stereo[id]; + datas[id] = { + time: time, + curr: 0, + dL: (left - stereo.L.gain.value) / time * 10 * core.musicStatus.userVolume, + dR: (right - stereo.R.gain.value) / time * 10 * core.musicStatus.userVolume + }; + var interval = setInterval(function () { + var data = datas[id]; + if (!data) return clearInterval(interval); + data.curr += 10; + if (data.curr >= data.time) { + clearInterval(interval); + datas[id] = void 0; + } + stereo.L.gain.value += data.dL; + stereo.R.gain.value += data.dR; + }, 10); + } +}, + "滑动转场": function () { + // 在此增加新插件 + const defaultChange = { + left: 'leftPortal', // 左箭头 + up: 'upPortal', // 上箭头 + right: 'rightPortal', // 右箭头 + down: 'downPortal', // 下箭头 + upFloor: 'upFloor', // 上楼 + downFloor: 'downFloor' // 下楼 + }; + const dirData = { + up: [-1, 0], + down: [1, 0], + left: [0, -1], + right: [0, 1], + upFloor: [0, 0], + downFloor: [0, 0] + } + let allChangeEntries = Object.entries(defaultChange) + const move = document.createElement('canvas'); + const speed = 12; + let modedata = 0; + + move.width = 1248; + move.height = 1248; + + const ctx = move.getContext("2d"); + + events.prototype.changeFloor = function (floorId, stair, heroLoc, time, callback) { + let block = core.getBlock(hero.loc.x, hero.loc.y) + var info = this._changeFloor_getInfo(floorId, stair, heroLoc, time); + + if (info == null) { + if (callback) callback(); + return; + } + floorId = info.floorId; + info.locked = core.status.lockControl; + + core.dom.floorNameLabel.innerText = core.status.maps[floorId].title; + core.lockControl(); + core.stopAutomaticRoute(); + core.clearContinueAutomaticRoute(); + core.status.replay.animate = true; + clearInterval(core.interval.onDownInterval); + core.interval.onDownInterval = 'tmp'; + + this._changeFloor_beforeChange(info, block, callback); + } + events.prototype._changeFloor_beforeChange = function (info, block, callback) { + this._changeFloor_playSound(); + if (block && block?.event) { + const dirEntries = allChangeEntries.find(v => v[1] === block.event.id); + if (block?.event?.trigger === 'changeFloor' && dirEntries) { + const toFloorId = block.event.data.floorId; + const dir = dirEntries[0]; + + const data = core.ui._drawViewMaps_buildData(core.floorIds.indexOf(core.status.floorId)) + const dataTo = core.ui._drawViewMaps_buildData(core.floorIds.indexOf(toFloorId)) + const v = dirData[dir][1], // 水平数值 + h = dirData[dir][0]; //竖直数值 + ctx.clearRect(0, 0, 1248, 1248) + core.drawThumbnail(core.status.floorId, null, { damage: data.damage, ctx: ctx, x: 416, y: 416, size: 1, all: data.all }) + if (dir !== "upFloor" && dir !== "downFloor") { + core.drawThumbnail(toFloorId, null, { damage: dataTo.damage, ctx: ctx, x: 416 + 416 * v, y: 416 + 416 * h, size: 1, all: dataTo.all }) + + + var _run = function () { + var cb = function () { + modedata = 0 + core.clearUI(); + core.clearMap('data') + core.events._changeFloor_changing(info, callback) + } + + var animate = window.setInterval(function () { + if (modedata >= 416) { + delete core.animateFrame.asyncId[animate]; + clearInterval(animate); + cb(); + + } else { + core.clearUI(); + core.clearMap('data') + + core.canvas.data.drawImage(move, 416 + modedata * v, 416 + modedata * h, 416, 416, 0, 0, 416, 416) + let status = "leftFoot"; + + if (modedata > 208) { + status = "rightFoot"; + + } + const img = core.material.images.hero; + const heroIconArr = core.material.icons.hero; + const width = core.material.icons.hero.width || 32; + const height = core.material.icons.hero.height; + const heroIcon = heroIconArr[dir]; + + core.canvas.data.drawImage(img, heroIcon[status] % 4 * width, heroIcon.loc * height, width, height, core.status.hero.loc.x * 32 - core.bigmap.offsetX - (modedata - modedata * 32 / 416) * v, core.status.hero.loc.y * 32 - 16 - (modedata - modedata * 32 / 416) * h, width, height) + modedata += speed + clearInterval(animate); + delete core.animateFrame.asyncId[animate]; + _run(); + } + + }, core.status.replay.speed == 24 ? 1 : 10 / core.status.replay.speed); + + core.animateFrame.lastAsyncId = animate; + core.animateFrame.asyncId[animate] = cb; + } + _run(); + return + } + } + } + // 需要 setTimeout 执行,不然会出错 + window.setTimeout(function () { + if (info.time == 0) + core.events._changeFloor_changing(info, callback); + else + core.showWithAnimate(core.dom.floorMsgGroup, info.time / 2, function () { + core.events._changeFloor_changing(info, callback); + }); + }, 25) + + } + + } } \ No newline at end of file