From ce9c2d075f86d60cce8b87a41523ad78d5ae6ba3 Mon Sep 17 00:00:00 2001 From: unanmed <90094606+unanmed@users.noreply.github.com> Date: Tue, 28 Feb 2023 11:56:47 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=208ec41?= =?UTF-8?q?d634abf17bb60fb90205b5e06028b953513=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/plugin.min.js | 2 +- server.cjs | 222 ++++++++---------------------------------- 2 files changed, 39 insertions(+), 185 deletions(-) diff --git a/project/plugin.min.js b/project/plugin.min.js index d5a9c91..8c3eadb 100644 --- a/project/plugin.min.js +++ b/project/plugin.min.js @@ -11,7 +11,7 @@ "use strict";(function(){var ignoreInJump={event:["X20007","X20001","X20006","X20014","X20010","X20007"],bg:["X20037","X20038","X20039","X20045","X20047","X20053","X20054","X20055","X20067","X20068","X20075","X20076"]};var jumpIgnoreFloor=["MT31","snowTown"];function jumpSkill(){if(core.status.floorId.startsWith("tower"))return core.drawTip("\u5F53\u65E0\u6CD5\u4F7F\u7528\u8BE5\u6280\u80FD");if(jumpIgnoreFloor.includes(core.status.floorId)||flags.onChase){return core.drawTip("\u5F53\u524D\u697C\u5C42\u65E0\u6CD5\u4F7F\u7528\u8BE5\u6280\u80FD")}if(!flags.skill2)return;if(!flags["jump_"+core.status.floorId])flags["jump_"+core.status.floorId]=0;if(core.status.floorId=="MT14"&&flags["jump_"+core.status.floorId]==2&&!flags.MT14Jump){if(!(core.status.hero.loc.x===77&&core.status.hero.loc.y===5&&core.status.hero.loc.direction==="right")){return core.drawTip("\u8BE5\u5730\u56FE\u8FD8\u6709\u4E00\u4E2A\u5FC5\u8DF3\u7684\u5730\u65B9\uFF0C\u4F60\u8FD8\u6CA1\u6709\u8DF3")}else flags.MT14Jump=true}if(flags["jump_"+core.status.floorId]>=3)return core.drawTip("\u5F53\u524D\u5730\u56FE\u4F7F\u7528\u6B21\u6570\u5DF2\u7528\u5B8C");var direction=core.status.hero.loc.direction;var loc=core.status.hero.loc;var checkLoc={};switch(direction){case"up":checkLoc.x=loc.x;checkLoc.y=loc.y-1;break;case"right":checkLoc.x=loc.x+1;checkLoc.y=loc.y;break;case"down":checkLoc.x=loc.x;checkLoc.y=loc.y+1;break;case"left":checkLoc.x=loc.x-1;checkLoc.y=loc.y;break;}var cls=core.getBlockCls(checkLoc.x,checkLoc.y);var noPass=core.noPass(checkLoc.x,checkLoc.y);var id=core.getBlockId(checkLoc.x,checkLoc.y)||"";var bgId=core.getBlockByNumber(core.getBgNumber(checkLoc.x,checkLoc.y)).event.id||"";if(!noPass||cls=="items"||id.startsWith("X")&&!ignoreInJump.event.includes(id)||bgId.startsWith("X")&&!ignoreInJump.bg.includes(bgId))return core.drawTip("\u5F53\u524D\u65E0\u6CD5\u4F7F\u7528\u6280\u80FD");if(noPass&&!(cls=="enemys"||cls=="enemy48")){var toLoc=checkNoPass(direction,checkLoc.x,checkLoc.y,true);if(!toLoc)return;core.autosave();if(flags.chapter<=1)core.status.hero.hp-=200*flags.hard;core.updateStatusBar();flags["jump_"+core.status.floorId]++;if(core.status.hero.hp<=0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose("\u4F60\u8DF3\u6B7B\u4E86")}core.playSound("015-Jump01.ogg");core.insertAction([{type:"jumpHero",loc:[toLoc.x,toLoc.y],time:500}])}if(cls=="enemys"||cls=="enemy48"){var firstNoPass=checkNoPass(direction,checkLoc.x,checkLoc.y,false);if(!firstNoPass)return;core.autosave();if(flags.chapter<=1)core.status.hero.hp-=200*flags.hard;core.updateStatusBar();flags["jump_"+core.status.floorId]++;if(core.status.hero.hp<=0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose("\u4F60\u8DF3\u6B7B\u4E86")}core.playSound("015-Jump01.ogg");core.insertAction([{type:"jump",from:[checkLoc.x,checkLoc.y],to:[firstNoPass.x,firstNoPass.y],time:500,keep:true}])}function checkNoPass(direction,x,y,startNo){if(!startNo)startNo=false;switch(direction){case"up":y--;break;case"right":x++;break;case"down":y++;break;case"left":x--;break;}if(x>core.status.thisMap.width-1||y>core.status.thisMap.height-1||x<0||y<0)return core.drawTip("\u5F53\u524D\u65E0\u6CD5\u4F7F\u7528\u6280\u80FD");var id=core.getBlockId(x,y)||"";if(core.getBgNumber(x,y))var bgId=core.getBlockByNumber(core.getBgNumber(x,y)).event.id||"";else var bgId="";if(core.noPass(x,y)||core.getBlockCls(x,y)=="items"||id.startsWith("X")&&!ignoreInJump.event.includes(id)||bgId.startsWith("X")&&!ignoreInJump.bg.includes(bgId)||core.getBlockCls(x,y)=="animates")return checkNoPass(direction,x,y,true);if(!startNo)return checkNoPass(direction,x,y,false);return{x:x,y:y}}}core.plugin.skillEffects={jumpSkill:jumpSkill}})(); "use strict";(function(){var stage=1,hp=10000,seconds=0,boomLocs=[],heroHp;function initTowerBoss(){stage=1;hp=10000;seconds=0;heroHp=core.status.hero.hp;dynamicChangeHp(0,10000,10000);autoFixRouteBoss(true);core.insertAction([{type:"sleep",time:1000,noSkip:true}]);setTimeout(bossCore,1000)}function autoFixRouteBoss(isStart){var route=core.status.route;if(isStart){flags.startFix=route.length-1;return}route.splice(flags.startFix);route.push("choices:0");delete flags.startFix}function healthBar(now,total){var nowLength=now/total*476;var color=[255*2-now/total*2*255,now/total*2*255,0,1];if(!core.dymCanvas.healthBar)core.createCanvas("healthBar",0,0,480,16,140);else core.clearMap("healthBar");core.fillRect("healthBar",0,0,480,16,"#bbbbbb");var style=document.getElementById("healthBar").getContext("2d");style.shadowColor="rgba(0, 0, 0, 0.8)";style.shadowBlur=5;style.shadowOffsetX=10;style.shadowOffsetY=5;style.filter="blur(1px)";core.fillRect("healthBar",2,2,nowLength,12,color);style.shadowColor="rgba(0, 0, 0, 0.5)";style.shadowOffsetX=0;style.shadowOffsetY=0;core.strokeRect("healthBar",1,1,478,14,"#ffffff",2);style.shadowColor="rgba(0, 0, 0, 1)";style.shadowBlur=3;style.shadowOffsetX=2;style.shadowOffsetY=1;style.filter="none";core.fillText("healthBar",now+"/"+total,5,13.5,"#ffffff","16px normal")}function dynamicChangeHp(from,to,total){var frame=0,speed=(to-from)/50,now=from;var interval=window.setInterval(function(){frame++;if(frame==50){clearInterval(interval);healthBar(to,total)}now+=speed;healthBar(now,total)},20)}function skipWord(words,x,y,time){x=x||0;y=y||16;time=time||3000;if(!core.dymCanvas.words)core.createCanvas("words",x,y,480,24,135);else core.clearMap("words");if(flags.wordsTimeOut)clearTimeout(flags.wordsTimeOut);dynamicCurtain(y,y+24,time/3);var style=document.getElementById("words").getContext("2d");style.shadowColor="rgba(0, 0, 0, 1)";style.shadowBlur=3;style.shadowOffsetX=2;style.shadowOffsetY=1;skip1(0);function skip1(now){if(parseInt(now)>=words.length){flags.wordsTimeOut=setTimeout(function(){core.deleteCanvas("words");core.deleteCanvas("wordsBg")},time);return}var frame=0,blur=2,nx=4+now*24;var skip2=window.setInterval(function(){blur-=0.4;frame++;core.clearMap("words",nx,0,24,24);style.filter="blur("+blur+"px)";core.fillText("words",words[now],nx,20,"#ffffff","22px normal");if(frame==5){clearInterval(skip2);skip1(now+1)}},20)}}function dynamicCurtain(from,to,time,width){width=width||480;if(!core.dymCanvas.wordsBg)core.createCanvas("wordsBg",0,from,width,24,130);else core.clearMap("wordsBg");time/=1000;var ny=from,frame=0,a=2*(to-from)/Math.pow(time*50,2),speed=a*time*50;var style=document.getElementById("wordsBg").getContext("2d");style.shadowColor="rgba(0, 0, 0, 0.8)";var wordsInterval=window.setInterval(function(){frame++;speed-=a;ny+=speed;core.clearMap("wordsBg");style.shadowBlur=8;style.shadowOffsetY=2;core.fillRect("wordsBg",0,0,width,ny-from,[180,180,180,0.7]);style.shadowBlur=3;style.shadowOffsetY=0;core.strokeRect("wordsBg",1,1,width-2,ny-from-2,[255,255,255,0.7],2);if(frame>=time*50){clearInterval(wordsInterval);core.clearMap("wordsBg");style.shadowBlur=8;style.shadowOffsetY=2;core.fillRect("wordsBg",0,0,width,to-from,[180,180,180,0.7]);style.shadowBlur=3;style.shadowOffsetY=0;core.strokeRect("wordsBg",1,1,width-2,ny-from-2,[255,255,255,0.7],2)}},20)}function attackBoss(){if(flags.canAttack)return;if(Math.random()<0.8)return;if(hp>3500){var nx=Math.floor(Math.random()*13+1),ny=Math.floor(Math.random()*13+1)}else if(hp>2000){var nx=Math.floor(Math.random()*11+2),ny=Math.floor(Math.random()*11+2)}else if(hp>1000){var nx=Math.floor(Math.random()*9+3),ny=Math.floor(Math.random()*9+3)}else{var nx=Math.floor(Math.random()*7+4),ny=Math.floor(Math.random()*7+4)}flags.canAttack=true;if(!core.dymCanvas.attackBoss)core.createCanvas("attackBoss",0,0,480,480,35);else core.clearMap("attackBoss");var style=document.getElementById("attackBoss").getContext("2d");var frame1=0,blur=3,scale=2,speed=0.04,a=0.0008;var atkAnimate=window.setInterval(function(){core.clearMap("attackBoss");frame1++;speed-=a;scale-=speed;blur-=0.06;style.filter="blur("+blur+"px)";core.strokeCircle("attackBoss",nx*32+16,ny*32+16,16*scale,[255,150,150,0.7],4);core.fillCircle("attackBoss",nx*32+16,ny*32+16,3*scale,[255,150,150,0.7]);if(frame1==50){clearInterval(atkAnimate);core.clearMap("attactkBoss");style.filter="none";core.strokeCircle("attackBoss",nx*32+16,ny*32+16,16,[255,150,150,0.7],4);core.fillCircle("attackBoss",nx*32+16,ny*32+16,3,[255,150,150,0.7])}},20);var frame2=0;var atkBoss=window.setInterval(function(){frame2++;var x=core.status.hero.loc.x,y=core.status.hero.loc.y;if(frame2>100){setTimeout(function(){delete flags.canAttack},4000);clearInterval(atkBoss);core.deleteCanvas("attackBoss");return}if(nx==x&&ny==y){setTimeout(function(){delete flags.canAttack},4000);dynamicChangeHp(hp,hp-500,10000);hp-=500;clearInterval(atkBoss);core.deleteCanvas("attackBoss");if(hp>3500)core.drawAnimate("hand",7,1);else if(hp>2000)core.drawAnimate("hand",7,2);else if(hp>1000)core.drawAnimate("hand",7,3);else core.drawAnimate("hand",7,4);return}},20)}function bossCore(){var interval=window.setInterval(function(){if(stage==1){if(seconds==8)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u679C\u7136\uFF0C\u4F60\u548C\u522B\u4EBA\u4E0D\u4E00\u6837\u3002");if(seconds==12)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4F60\u77E5\u9053\u53BB\u8EB2\u907F\u90A3\u4E9B\u653B\u51FB\u3002");if(seconds==16)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4E4B\u524D\u7684\u90A3\u4E9B\u4EBA\u603B\u4F1A\u4E00\u5934\u649E\u4E0A\u6211\u7684\u653B\u51FB\uFF0C\u60B2\u5267\u6536\u573A\u3002");if(seconds==20)skipWord("\u63D0\u793A\uFF1A\u8E29\u5728\u7EA2\u5708\u4E0A\u53EF\u4EE5\u5BF9\u667A\u6167\u4E4B\u795E\u9020\u6210\u4F24\u5BB3");if(seconds>10)attackBoss();if(seconds%10==0)intelligentArrow();if(seconds%7==0&&seconds!=0)intelligentDoor();if(seconds>20&&seconds%13==0)icyMomentem()}if(stage==1&&hp<=7000){stage++;seconds=0;skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4E0D\u9519\u5C0F\u4F19\u5B50");core.pauseBgm()}if(stage==2){if(seconds==4)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4F60\u7684\u786E\u62E5\u6709\u667A\u6167\u3002");if(seconds==8)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u6216\u8BB8\u4F60\u5C31\u662F\u90A3\u4E2A\u672A\u6765\u7684\u6551\u661F\u3002");if(seconds==12)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4E0D\u8FC7\uFF0C\u8FD9\u573A\u6218\u6597\u624D\u521A\u521A\u5F00\u59CB");if(seconds==25)skipWord("\u63D0\u793A\uFF1A\u65B9\u5F62\u533A\u57DF\u5747\u4E3A\u5371\u9669\u533A\u57DF");if(seconds==15)setTimeout(function(){core.playSound("thunder.mp3")},500);if(seconds==16)startStage2();if(seconds>20)attackBoss();if(seconds%4==0&&seconds>20)randomThunder();if(seconds>30&&seconds%12==0)ballThunder()}if(hp<=3500&&stage==2){stage++;seconds=0;skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4E0D\u5F97\u4E0D\u8BF4\u5C0F\u4F19\u5B50");core.pauseBgm()}if(stage>=3){if(seconds==4)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u62E5\u6709\u667A\u6167\u5C31\u662F\u4E0D\u4E00\u6837\u3002");if(seconds==8)skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u4E0D\u8FC7\uFF0C\u4F60\u8FD8\u5F97\u518D\u8FC7\u6211\u4E00\u5173\uFF01");if(seconds==12)startStage3();if(seconds==15){flags.booming=true;randomBoom()}if(seconds>20)attackBoss();if(seconds>20&&seconds%10==0)chainThunder();if(hp==2000&&stage==3){stage++;flags.booming=false;skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u8FD8\u6CA1\u6709\u7ED3\u675F\uFF01");startStage4();setTimeout(function(){flags.booming=true;randomBoom()},5000)}if(hp==1000&&stage==4){stage++;flags.booming=false;skipWord("\u667A\u6167\u4E4B\u795E\uFF1A\u8FD8\u6CA1\u6709\u7ED3\u675F\uFF01\uFF01\uFF01\uFF01\uFF01\uFF01");startStage5();setTimeout(function(){flags.booming=true;randomBoom()},5000)}}if(hp==0){clearInterval(interval);clearInterval(flags.boom);core.status.hero.hp=heroHp;core.plugin.towerBoss.autoFixRouteBoss(false);delete flags.__bgm__;core.pauseBgm();core.insertAction(["\t[\u667A\u6167\u4E4B\u795E,E557]\b[down,7,4]\u770B\u6765\u4F60\u771F\u7684\u4F1A\u6210\u4E3A\u90A3\u4E2A\u62EF\u6551\u672A\u6765\u7684\u4EBA\u3002","\t[\u667A\u6167\u4E4B\u795E,E557]\b[down,7,4]\u8BB0\u4F4F\uFF0C\u62E5\u6709\u667A\u6167\u4FBF\u53EF\u4EE5\u638C\u63A7\u4E07\u7269\u3002","\t[\u4F4E\u7EA7\u667A\u4EBA]\b[up,hero]\u667A\u6167\uFF1F\u667A\u6167\u5230\u5E95\u662F\u4EC0\u4E48\uFF1F","\t[\u667A\u6167\u4E4B\u795E,E557]\b[down,7,4]\u6700\u7EC8\uFF0C\u4F60\u4F1A\u77E5\u9053\u7B54\u6848\u7684\u3002","\t[\u667A\u6167\u4E4B\u795E,E557]\b[down,7,4]\u7EE7\u7EED\u5411\u4E1C\u524D\u8FDB\u5427\uFF0C\u90A3\u91CC\u80FD\u627E\u5230\u4F60\u60F3\u8981\u7684\u7B54\u6848\u3002",{type:"openDoor",loc:[13,6],floorId:"MT19"},"\t[\u667A\u6167\u4E4B\u795E,E557]\b[down,7,4]\u6211\u8FD9\u5C31\u628A\u4F60\u9001\u51FA\u53BB",{type:"setValue",name:"flag:boss1",value:"true"},{type:"changeFloor",floorId:"MT20",loc:[7,9]},{type:"forbidSave"},{type:"showStatusBar"},{type:"function","function":"() => {\ncore.deleteAllCanvas();\n}"}])}seconds++},1000)}function intelligentArrow(fromSelf){var loc=Math.floor(Math.random()*13+1);var direction=Math.random()>0.5?"horizon":"vertical";if(!fromSelf){var times=Math.ceil(Math.random()*8)+4;var nowTime=1;var times1=window.setInterval(function(){intelligentArrow(true);nowTime++;if(nowTime>=times){clearInterval(times1)}},200)}if(core.dymCanvas["inteArrow"+loc+direction])return intelligentArrow(true);if(!core.dymCanvas.danger1)core.createCanvas("danger1",0,0,480,480,35);if(direction=="horizon"){for(var nx=1;nx<14;nx++){core.fillRect("danger1",nx*32+2,loc*32+2,28,28,[255,0,0,0.6])}}else{for(var ny=1;ny<14;ny++){core.fillRect("danger1",loc*32+2,ny*32+2,28,28,[255,0,0,0.6])}}if(!core.dymCanvas["inteArrow"+loc+direction])core.createCanvas("inteArrow"+loc+direction,0,0,544,544,65);core.clearMap("inteArrow"+loc+direction);if(direction=="horizon")core.drawImage("inteArrow"+loc+direction,"arrow.png",448,loc*32,102,32);else core.drawImage("inteArrow"+loc+direction,"arrow.png",0,0,259,75,loc*32-32,480,102,32,Math.PI/2);setTimeout(function(){core.playSound("arrow.mp3");core.deleteCanvas("danger1");var nloc=0,speed=0;var damaged={};var skill1=window.setInterval(function(){speed-=1;nloc+=speed;if(direction=="horizon")core.relocateCanvas("inteArrow"+loc+direction,nloc,0);else core.relocateCanvas("inteArrow"+loc+direction,0,nloc);if(nloc<-480){core.deleteCanvas("inteArrow"+loc+direction);clearInterval(skill1)}if(!damaged[loc+direction]){var x=core.status.hero.loc.x,y=core.status.hero.loc.y;if(direction=="horizon"){if(y==loc&&Math.floor((480+nloc)/32)==x){damaged[loc+direction]=true;core.drawHeroAnimate("hand");core.status.hero.hp-=1000;core.addPop(x*32+16,y*32+16,-1000);core.updateStatusBar();if(core.status.hero.hp<0){clearInterval(skill1);core.status.hero.hp=0;core.updateStatusBar();core.events.lose();return}}}else{if(x==loc&&Math.floor((480+nloc)/32)==y){damaged[loc+direction]=true;core.drawHeroAnimate("hand");core.status.hero.hp-=1000;core.addPop(x*32+16,y*32+16,-1000);core.updateStatusBar();if(core.status.hero.hp<0){clearInterval(skill1);core.status.hero.hp=0;core.updateStatusBar();core.events.lose();return}}}}},20)},3000)}function intelligentDoor(){if(Math.random()<0.5)return;var toX=Math.floor(Math.random()*13)+1,toY=Math.floor(Math.random()*13)+1;core.drawHeroAnimate("magicAtk");if(!core.dymCanvas["door"+toX+"_"+toY])core.createCanvas("door"+toX+"_"+toY,0,0,480,480,35);else core.clearMap("door"+toX+"_"+toY);var style=document.getElementById("door"+toX+"_"+toY).getContext("2d");var frame=0,width=0,a=0.0128,speed=0.64;var skill2=window.setInterval(function(){frame++;if(frame<40)return;if(frame==100){clearInterval(skill2);core.insertAction([{type:"changePos",loc:[toX,toY]}]);setTimeout(function(){core.deleteCanvas("door"+toX+"_"+toY)},2000);return}width+=speed*2;speed-=a;core.clearMap("door"+toX+"_"+toY);style.shadowColor="rgba(255, 255, 255, 1)";style.shadowBlur=7;style.filter="blur(5px)";core.fillRect("door"+toX+"_"+toY,toX*32,toY*32-24,width,48,[255,255,255,0.7]);style.shadowColor="rgba(0, 0, 0, 0.5)";style.filter="blur(3px)";core.strokeRect("door"+toX+"_"+toY,toX*32,toY*32-24,width,48,[255,255,255,0.7],3)},20)}function icyMomentem(){if(flags.haveIce)return;if(Math.random()<0.5)return;var times=Math.floor(Math.random()*100);var locs=[],now=0;flags.haveIce=true;if(!core.dymCanvas.icyMomentem)core.createCanvas("icyMomentem",0,0,480,480,35);else core.clearMap("icyMomentem");var skill3=window.setInterval(function(){var nx=Math.floor(Math.random()*13)+1,ny=Math.floor(Math.random()*13)+1;if(!locs.includes([nx,ny])){locs.push([nx,ny]);core.fillRect("icyMomentem",locs[now][0]*32+2,locs[now][1]*32+2,28,28,[150,150,255,0.6])}if(now==times){clearInterval(skill3);skill3Effect()}now++},20);function skill3Effect(){var index=0;var effect=window.setInterval(function(){var x=core.status.hero.loc.x,y=core.status.hero.loc.y;core.clearMap("icyMomentem",locs[index][0]*32,locs[index][1]*32,32,32);core.setBgFgBlock("bg",167,locs[index][0],locs[index][1]);core.drawAnimate("ice",locs[index][0],locs[index][1]);if(x==locs[index][0]&&y==locs[index][1]){core.drawHeroAnimate("hand");core.status.hero.hp-=5000;core.addPop(x*32+16,y*32+16,-5000);core.updateStatusBar();if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();clearInterval(effect);return}}if(index>=locs.length-1){clearInterval(effect);setTimeout(function(){deleteIce(locs)},5000)}index++},50)}function deleteIce(locs){var index=0;var deleteIce=window.setInterval(function(){core.setBgFgBlock("bg",0,locs[index][0],locs[index][1]);index++;if(index>=locs.length){clearInterval(deleteIce);core.deleteCanvas("icyMomentem");setTimeout(function(){delete flags.haveIce},5000)}},50)}}function startStage2(){core.createCanvas("flash",0,0,480,480,160);var alpha=0;var frame=0;var start1=window.setInterval(function(){core.clearMap("flash");frame++;if(frame<=8)alpha+=0.125;else alpha-=0.01;core.fillRect("flash",0,0,480,480,[255,255,255,alpha]);if(alpha==0){clearInterval(start1);core.deleteCanvas("flash")}if(frame==8){changeWeather()}});function changeWeather(){core.setWeather();core.setWeather("rain",10);core.setWeather("fog",8);core.setCurtain([0,0,0,0.3]);core.playBgm("towerBoss2.mp3")}}function randomThunder(){var x=Math.floor(Math.random()*13)+1,y=Math.floor(Math.random()*13)+1,power=Math.ceil(Math.random()*6);if(!core.dymCanvas.thunderDanger)core.createCanvas("thunderDanger",0,0,480,480,35);else core.clearMap("thunderDanger");for(var nx=x-1;nx<=x+1;nx++){for(var ny=y-1;ny<=y+1;ny++){core.fillRect("thunderDanger",nx*32+2,ny*32+2,28,28,[255,255,255,0.6])}}core.deleteCanvas("flash");setTimeout(function(){core.playSound("thunder.mp3")},500);setTimeout(function(){core.deleteCanvas("thunderDanger");drawThunder(x,y,power)},1000)}function drawThunder(x,y,power){var route=getThunderRoute(x*32+16,y*32+16,power);if(!core.dymCanvas.thunder)core.createCanvas("thunder",0,0,480,480,65);else core.clearMap("thunder");var style=core.dymCanvas.thunder;style.shadowColor="rgba(220, 220, 255, 1)";style.shadowBlur=power;style.filter="blur(2.5px)";for(var num in route){for(var i=0;i=10){clearInterval(thunderFlash);core.deleteCanvas("flash");setTimeout(function(){core.deleteCanvas("thunder")},700)}},20)}function getThunderRoute(x,y,power){var route=[];for(var num=0;num=0;i++){if(i>0){nx+=Math.random()*30-15;ny-=Math.random()*80+30}else{nx+=Math.random()*16-8;ny+=Math.random()*16-8}route[num].push([nx,ny])}}return route}function getThunderDamage(x,y,power){var hx=core.status.hero.loc.x,hy=core.status.hero.loc.y;if(Math.abs(hx-x)<=1&&Math.abs(hy-y)<=1){core.status.hero.hp-=3000*power;core.addPop(x*32+16,y*32+16,-3000*power);core.updateStatusBar();if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();return}}}function ballThunder(){var times=Math.ceil(Math.random()*12)+6;var now=0,locs=[];var ballThunder=window.setInterval(function(){if(!core.dymCanvas["ballThunder"+now])core.createCanvas("ballThunder"+now,0,0,480,480,35);else core.clearMap("ballThunder"+now);var nx=Math.floor(Math.random()*13)+1,ny=Math.floor(Math.random()*13)+1;if(!locs.includes([nx,ny])){locs.push([nx,ny]);for(var mx=1;mx<14;mx++){core.fillRect("ballThunder"+now,mx*32+2,ny*32+2,28,28,[190,190,255,0.6])}for(var my=1;my<14;my++){core.fillRect("ballThunder"+now,nx*32+2,my*32+2,28,28,[190,190,255,0.6])}}now++;if(now>=times){clearInterval(ballThunder);setTimeout(function(){thunderAnimate(locs)},1000)}},200);function thunderAnimate(locs){var frame=0;if(!core.dymCanvas.ballAnimate)core.createCanvas("ballAnimate",0,0,480,480,65);else core.clearMap("ballAnimate");var style=core.dymCanvas.ballAnimate;style.shadowColor="rgba(255, 255, 255, 1)";var damaged=[];var animate=window.setInterval(function(){core.clearMap("ballAnimate");for(var i=0;i0){var now=frame-10*i;if(now==1)core.playSound("electron.mp3");var nx=locs[i][0]*32+16,ny=locs[i][1]*32+16;if(now<=2){core.fillCircle("ballAnimate",nx,ny,16+3*now,[255,255,255,0.9])}else{core.fillCircle("ballAnimate",nx,ny-4*now,7+2*Math.random(),[255,255,255,0.7]);core.fillCircle("ballAnimate",nx,ny+4*now,7+2*Math.random(),[255,255,255,0.7]);core.fillCircle("ballAnimate",nx-4*now,ny,7+2*Math.random(),[255,255,255,0.7]);core.fillCircle("ballAnimate",nx+4*now,ny,7+2*Math.random(),[255,255,255,0.7])}core.clearMap("ballThunder"+i,nx-16,ny-16-4*now,32,32);core.clearMap("ballThunder"+i,nx-16,ny-16+4*now,32,32);core.clearMap("ballThunder"+i,nx-16-4*now,ny-16,32,32);core.clearMap("ballThunder"+i,nx-16+4*now,ny-16,32,32);if(!damaged[i]){var x=core.status.hero.loc.x,y=core.status.hero.loc.y;if((Math.floor((nx-16-4*now)/32)==x||Math.floor((nx-16+4*now)/32)==x)&&locs[i][1]==y||(Math.floor((ny-16-4*now)/32)==y||Math.floor((ny-16+4*now)/32)==y)&&locs[i][0]==x){damaged[i]=true;core.status.hero.hp-=3000;core.addPop(x*32+16,y*32+16,-3000);core.updateStatusBar();core.playSound("electron.mp3");if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();clearInterval(animate);return}}}if(i==locs.length-1&&now>120){clearInterval(animate)}}}frame++},20)}}function startStage3(){core.createCanvas("flash",0,0,480,480,160);var alpha=0;var frame=0;var start1=window.setInterval(function(){core.clearMap("flash");frame++;if(frame<=8)alpha+=0.125;else alpha-=0.01;core.fillRect("flash",0,0,480,480,[255,255,255,alpha]);if(alpha==0){clearInterval(start1);core.deleteCanvas("flash")}if(frame==8){core.playSound("thunder.mp3");changeTerra();core.insertAction([{type:"changePos",loc:[7,7]}])}});function changeTerra(){for(var nx=0;nx<15;nx++){for(var ny=0;ny<15;ny++){if(nx==0||nx==14||ny==0||ny==14){core.removeBlock(nx,ny)}if((nx==1||nx==13||ny==1||ny==13)&&nx!=0&&nx!=14&&ny!=0&&ny!=14){core.setBlock(527,nx,ny)}}}core.createCanvas("tower7",0,0,480,480,15);core.drawImage("tower7","tower7.jpeg",360,0,32,480,0,0,32,480);core.drawImage("tower7","tower7.jpeg",840,0,32,480,448,0,32,480);core.drawImage("tower7","tower7.jpeg",392,0,416,32,32,0,416,32);core.drawImage("tower7","tower7.jpeg",392,448,416,32,32,448,416,32);core.setBlock("E557",7,2);core.playBgm("towerBoss3.mp3")}}function startStage4(){core.createCanvas("flash",0,0,480,480,160);var alpha=0;var frame=0;var start1=window.setInterval(function(){core.clearMap("flash");frame++;if(frame<=8)alpha+=0.125;else alpha-=0.01;core.fillRect("flash",0,0,480,480,[255,255,255,alpha]);if(alpha==0){clearInterval(start1);core.deleteCanvas("flash")}if(frame==8){core.playSound("thunder.mp3");changeTerra();core.insertAction([{type:"changePos",loc:[7,7]}])}});function changeTerra(){for(var nx=1;nx<14;nx++){for(var ny=1;ny<14;ny++){if(nx==1||nx==13||ny==1||ny==13){core.removeBlock(nx,ny)}if((nx==2||nx==12||ny==2||ny==12)&&nx!=1&&nx!=13&&ny!=1&&ny!=13){core.setBlock(527,nx,ny)}}}core.createCanvas("tower7",0,0,480,480,15);core.drawImage("tower7","tower7.jpeg",360,0,64,480,0,0,64,480);core.drawImage("tower7","tower7.jpeg",776,0,64,480,416,0,64,480);core.drawImage("tower7","tower7.jpeg",424,0,352,64,64,0,352,64);core.drawImage("tower7","tower7.jpeg",424,416,352,64,64,416,352,64);core.setBlock("E557",7,3)}}function startStage5(){core.createCanvas("flash",0,0,480,480,160);var alpha=0;var frame=0;var start1=window.setInterval(function(){core.clearMap("flash");frame++;if(frame<=8)alpha+=0.125;else alpha-=0.01;core.fillRect("flash",0,0,480,480,[255,255,255,alpha]);if(alpha==0){clearInterval(start1);core.deleteCanvas("flash")}if(frame==8){core.playSound("thunder.mp3");changeTerra();core.insertAction([{type:"changePos",loc:[7,7]}])}});function changeTerra(){for(var nx=2;nx<13;nx++){for(var ny=2;ny<13;ny++){if(nx==2||nx==12||ny==2||ny==12){core.removeBlock(nx,ny)}if((nx==3||nx==11||ny==3||ny==11)&&nx!=2&&nx!=12&&ny!=2&&ny!=12){core.setBlock(527,nx,ny)}}}core.createCanvas("tower7",0,0,480,480,15);core.drawImage("tower7","tower7.jpeg",360,0,96,480,0,0,96,480);core.drawImage("tower7","tower7.jpeg",744,0,96,480,384,0,96,480);core.drawImage("tower7","tower7.jpeg",456,0,288,96,96,0,288,96);core.drawImage("tower7","tower7.jpeg",456,384,288,96,96,384,288,96);core.setBlock("E557",7,4)}}function chainThunder(){var times=Math.ceil(Math.random()*6)+3;if(!core.dymCanvas.chainDanger)core.createCanvas("chainDanger",0,0,480,480,35);else core.clearMap("chainDanger");var locs=[],now=0;var chain=window.setInterval(function(){if(hp>2000){var nx=Math.floor(Math.random()*11)+2,ny=Math.floor(Math.random()*11)+2}else if(hp>1000){var nx=Math.floor(Math.random()*9)+3,ny=Math.floor(Math.random()*9)+3}else{var nx=Math.floor(Math.random()*7)+4,ny=Math.floor(Math.random()*7)+4}if(!locs.includes([nx,ny])){locs.push([nx,ny])}else return;if(now>0){core.drawLine("chainDanger",locs[now-1][0]*32+16,locs[now-1][1]*32+16,nx*32+16,ny*32+16,[220,100,255,0.6],3)}if(now>=times){clearInterval(chain);setTimeout(function(){getChainRoute(locs);core.deleteCanvas("chainDanger")},1000)}now++},100)}function chainAnimate(route){if(!route)return chainThunder();if(!core.dymCanvas.chain)core.createCanvas("chain",0,0,480,480,65);else core.clearMap("chain");var style=core.dymCanvas.chain;style.shadowBlur=3;style.shadowColor="rgba(255, 255, 255, 1)";style.filter="blur(2px)";var frame=0,now=0;var animate=window.setInterval(function(){if(now>=route.length-1){clearInterval(animate);setTimeout(function(){core.deleteCanvas("chain")},1000);return}frame++;if(frame%2!=0)return;core.drawLine("chain",route[now][0],route[now][1],route[now+1][0],route[now+1][1],"#ffffff",3);if(now==0){core.fillCircle("chain",route[0][0],route[0][1],7,"#ffffff")}if((route[now+1][0]-16)%32==0&&(route[now+1][1]-16)%32==0){core.fillCircle("chain",route[now+1][0],route[now+1][1],7,"#ffffff")}lineDamage(route[now][0],route[now][1],route[now+1][0],route[now+1][1],4000);now++},20)}function getChainRoute(locs){var now=0,routes=[];var route=window.setInterval(function(){var nx=locs[now][0]*32+16,ny=locs[now][1]*32+16;var tx=locs[now+1][0]*32+16,ty=locs[now+1][1]*32+16;var dx=tx-nx,dy=ty-ny;var angle=Math.atan(dy/dx);if(dy<0&&dx<0)angle+=Math.PI;if(dx<0&&dy>0)angle+=Math.PI;var times=0;while(true){times++;nx+=Math.random()*50*Math.cos(angle);ny+=Math.random()*50*Math.sin(angle);routes.push([nx,ny]);if(Math.sqrt(Math.pow(ny-ty,2)+Math.pow(nx-tx,2))<=100){routes.push([tx,ty]);break}if(times>=20){clearInterval(route);routes=null;return}}now++;if(now>=locs.length-1){clearInterval(route);chainAnimate(routes)}},2)}function randomBoom(){if(!flags.booming){clearInterval(flags.boom);return}var boomTime;var range;if(hp>2000){boomTime=500;range=11}else if(hp>1000){boomTime=400;range=9}else{boomTime=300;range=7}flags.boom=window.setInterval(function(){var nx=Math.floor(Math.random()*range)+(15-range)/2,ny=Math.floor(Math.random()*range)+(15-range)/2;boomLocs.push([nx,ny,0]);if(!flags.booming)clearInterval(flags.boom)},boomTime);boomingAnimate()}function boomingAnimate(){if(!core.dymCanvas.boom)core.createCanvas("boom",0,0,480,480,65);else core.clearMap("boom");var boomAnimate=window.setInterval(function(){if(boomLocs.length==0)return;if(!flags.booming&&boomLocs.length==0){clearInterval(boomAnimate);return}core.clearMap("boom");boomLocs.forEach(function(loc,index){loc[2]++;var x=loc[0]*32+16,y=loc[1]*32+16;if(loc[2]>=20){var alpha=1,radius=12}else{var radius=0.12*Math.pow(20-loc[2],2)+12,alpha=Math.max(1,2-loc[2]*0.1)}var angle=loc[2]*Math.PI/50;core.fillCircle("boom",x,y,3,[255,50,50,alpha]);core.strokeCircle("boom",x,y,radius,[255,50,50,alpha],2);core.drawLine("boom",x+radius*Math.cos(angle),y+radius*Math.sin(angle),x+(radius+15)*Math.cos(angle),y+(radius+15)*Math.sin(angle),[255,50,50,alpha],1);angle+=Math.PI;core.drawLine("boom",x+radius*Math.cos(angle),y+radius*Math.sin(angle),x+(radius+15)*Math.cos(angle),y+(radius+15)*Math.sin(angle),[255,50,50,alpha],1);if(loc[2]>70){var h=y-(20*(85-loc[2])+2.8*Math.pow(85-loc[2],2));core.drawImage("boom","boom.png",x-18,h-80,36,80)}if(loc[2]==85){core.drawAnimate("explosion1",(x-16)/32,(y-16)/32);boomLocs.splice(index,1);if(boomLocs.length==0)core.deleteCanvas("boom");var hx=core.status.hero.loc.x,hy=core.status.hero.loc.y;if(loc[0]==hx&&loc[1]==hy){core.status.hero.hp-=3000;core.addPop(x*32+16,y*32+16,-3000);core.updateStatusBar();if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();clearInterval(boomAnimate);flags.booming=false;return}}}})},20)}function lineDamage(x1,y1,x2,y2,damage){var x=core.status.hero.loc.x,y=core.status.hero.loc.y;if(x1x*32+12&&x2>x*32+12||y1y*32+16&&y2>y*32+16)return;for(var time=1;time<=2;time++){if(time==1){var loc1=[x*32-12,y*32+16],loc2=[x*32+12,y*32-16];var n1=(y2-y1)/(x2-x1)*(loc1[0]-x1)+y1-loc1[1],n2=(y2-y1)/(x2-x1)*(loc2[0]-x1)+y1-loc2[1];if(n1*n2<=0){core.status.hero.hp-=damage;core.addPop(x*32+16,y*32+16,-damage);core.updateStatusBar();core.playSound("electron.mp3");if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();return}return}}else{var loc1=[x*32-12,y*32-16],loc2=[x*32+12,y*32+16];var n1=(y2-y1)/(x2-x1)*(loc1[0]-x1)+y1-loc1[1],n2=(y2-y1)/(x2-x1)*(loc2[0]-x1)+y1-loc2[1];if(n1*n2<=0){core.status.hero.hp-=damage;core.addPop(x*32+16,y*32+16,-damage);core.updateStatusBar();core.playSound("electron.mp3");if(core.status.hero.hp<0){core.status.hero.hp=0;core.updateStatusBar();core.events.lose();return}return}}}}core.plugin.towerBoss={initTowerBoss:initTowerBoss,autoFixRouteBoss:autoFixRouteBoss}})(); "use strict";function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);itx?"left":xty?"up":"down";var _core$utils$scan$dir=core.utils.scan[dir],dx=_core$utils$scan$dir.x,dy=_core$utils$scan$dir.y;action.push({type:"changePos",direction:dir});var blocks=core.getMapBlocksObj();while(1){x+=dx;y+=dy;var block=blocks["".concat(x,",").concat(y)];if(block){block.event.cls==="";if(["animates","autotile","tileset","npcs","npc48"].includes(block.event.cls)){action.push({type:"hide",loc:[[x,y]],remove:true,time:0},{type:"function","function":"function() { core.removeGlobalAnimate(".concat(x,", ").concat(y,") }")},{type:"animate",name:"hand",loc:[x,y],async:true})}if(block.event.cls.startsWith("enemy")){action.push({type:"moveAction"})}}action.push({type:"moveAction"});if(x===tx&&y===ty)break}action.push({type:"function","function":"function() { core.checkBlock(true); }"});action.push({type:"stopAsync"});core.insertAction(action)}}})(); -"use strict";function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj)}return newObj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i=0;--i){var entry=this.tryEntries[i],record=entry.completion;if("root"===entry.tryLoc)return handle("end");if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,"catchLoc"),hasFinally=hasOwn.call(entry,"finallyLoc");if(hasCatch&&hasFinally){if(this.prev=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,"finallyLoc")&&this.prev=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc)return this.complete(entry.completion,entry.afterLoc),resetTryEntry(entry),ContinueSentinel}},"catch":function _catch(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if("throw"===record.type){var thrown=record.arg;resetTryEntry(entry)}return thrown}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(iterable,resultName,nextLoc){return this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc},"next"===this.method&&(this.arg=undefined),ContinueSentinel}},exports}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}(function(){if(main.mode!=="play"||main.replayChecking)return;function post(_x,_x2,_x3){return _post.apply(this,arguments)}function _post(){_post=_asyncToGenerator(_regeneratorRuntime().mark(function _callee4(url,type,data){var xhr,res;return _regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:xhr=new XMLHttpRequest;xhr.open(type,url);xhr.send(data);_context4.next=5;return new Promise(function(res){xhr.onload=function(){if(xhr.status!==200){console.error("hot reload: http ".concat(xhr.status));res("@error")}else res("success")};xhr.onerror=function(){res("@error");console.error("hot reload: error on connection")}});case 5:res=_context4.sent;if(!(res==="success")){_context4.next=10;break}return _context4.abrupt("return",xhr.response);case 10:return _context4.abrupt("return","@error");case 11:case"end":return _context4.stop();}},_callee4)}));return _post.apply(this,arguments)}function reloadCss(data){var css=document.getElementById("mota-css");css.remove();var link=document.createElement("link");link.rel="stylesheet";link.type="text/css";link.href=data;link.id="mota-css";document.head.appendChild(link);console.log("css hot reload: ".concat(data))}function reloadFloor(_x4){return _reloadFloor.apply(this,arguments)}function _reloadFloor(){_reloadFloor=_asyncToGenerator(_regeneratorRuntime().mark(function _callee5(data){var floor,weather;return _regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:if(!(core.status.maps[data].deleted||core.status.maps[data].forceDelete)){_context5.next=2;break}return _context5.abrupt("return");case 2:_context5.next=4;return function(specifier){return new Promise(function(r){return r(specifier)}).then(function(s){return _interopRequireWildcard(require(s))})}("/project/floors/".concat(data,".js?v=").concat(Date.now()));case 4:core.floors[data]=main.floors[data];floor=core.loadFloor(data);if(core.isPlaying()){core.status.maps[data]=floor;delete core.status.mapBlockObjs[data];core.extractBlocks(data);if(data===core.status.floorId){core.drawMap(data);weather=core.getFlag("__weather__",null);if(!weather&&core.status.thisMap.weather)weather=core.status.thisMap.weather;if(weather)core.setWeather(weather[0],weather[1]);else core.setWeather()}core.updateStatusBar(true,true)}console.log("floor hot reload: ".concat(data));case 8:case"end":return _context5.stop();}},_callee5)}));return _reloadFloor.apply(this,arguments)}function reloadScript(_x5){return _reloadScript.apply(this,arguments)}function _reloadScript(){_reloadScript=_asyncToGenerator(_regeneratorRuntime().mark(function _callee6(data){var before,script,after,id,_after$id,fn,_before,_script,_after,mod,fns,_id,_fn,now;return _regeneratorRuntime().wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:if(!(data==="plugins")){_context6.next=19;break}before=plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1;script=document.createElement("script");script.src="/project/plugins.js?v=".concat(Date.now());document.body.appendChild(script);_context6.next=7;return new Promise(function(res){script.onload=function(){return res("success")}});case 7:after=plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1;_context6.t0=_regeneratorRuntime().keys(before);case 9:if((_context6.t1=_context6.t0()).done){_context6.next=17;break}id=_context6.t1.value;fn=before[id];if(!(typeof fn!=="function")){_context6.next=14;break}return _context6.abrupt("continue",9);case 14:if(fn.toString()!==((_after$id=after[id])===null||_after$id===void 0?void 0:_after$id.toString())){try{core.plugin[id]=after[id];core.plugin[id].call(core.plugin);core.updateStatusBar(true,true);console.log("plugin hot reload: ".concat(id))}catch(e){console.error(e)}}_context6.next=9;break;case 17:_context6.next=43;break;case 19:if(!(data==="functions")){_context6.next=43;break}_before=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a;_script=document.createElement("script");_script.src="/project/functions.js?v=".concat(Date.now());document.body.appendChild(_script);_context6.next=26;return new Promise(function(res){_script.onload=function(){return res("success")}});case 26:_after=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a;_context6.t2=_regeneratorRuntime().keys(_before);case 28:if((_context6.t3=_context6.t2()).done){_context6.next=43;break}mod=_context6.t3.value;fns=_before[mod];_context6.t4=_regeneratorRuntime().keys(fns);case 32:if((_context6.t5=_context6.t4()).done){_context6.next=41;break}_id=_context6.t5.value;_fn=fns[_id];if(!(typeof _fn!=="function"||_id==="hasSpecial")){_context6.next=37;break}return _context6.abrupt("continue",32);case 37:now=_after[mod][_id];if(_fn.toString()!==now.toString()){try{if(mod==="events"){core.events.eventdata[_id]=now}else if(mod==="enemys"){core.enemys.enemydata[_id]=now}else if(mod==="actions"){core.actions.actionsdata[_id]=now}else if(mod==="control"){core.control.controldata[_id]=now}else if(mod==="ui"){core.ui.uidata[_id]=now}core.updateStatusBar(true,true);console.log("function hot reload: ".concat(mod,".").concat(_id))}catch(e){console.error(e)}}_context6.next=32;break;case 41:_context6.next=28;break;case 43:case"end":return _context6.stop();}},_callee6)}));return _reloadScript.apply(this,arguments)}function reloadData(_x6){return _reloadData.apply(this,arguments)}function _reloadData(){_reloadData=_asyncToGenerator(_regeneratorRuntime().mark(function _callee7(data){var script,after,enemyId,itemId;return _regeneratorRuntime().wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:script=document.createElement("script");script.src="/project/".concat(data,".js?v=").concat(Date.now());document.body.appendChild(script);_context7.next=5;return new Promise(function(res){script.onload=function(){return res("success")}});case 5:if(data==="data")after=data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d;if(data==="enemys")after=enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80;if(data==="icons")after=icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1;if(data==="items")after=items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a;if(data==="maps")after=maps_90f36752_8815_4be8_b32b_d7fad1d0542e;if(data==="events")after=events_c12a15a8_c380_4b28_8144_256cba95f760;if(data==="enemys"){core.enemys.enemys=after;for(enemyId in after){core.enemys.enemys[enemyId].id=enemyId}core.material.enemys=core.getEnemys()}else if(data==="icons"){core.icons.icons=after;core.material.icons=core.getIcons()}else if(data==="items"){core.items.items=after;for(itemId in after){core.items.items[itemId].id=itemId}core.material.items=core.getItems()}else if(data==="maps"){core.maps.blocksInfo=after;core.status.mapBlockObjs={};core.status.number2block={};Object.values(core.status.maps).forEach(function(v){return delete v.blocks});core.extractBlocks();core.setWeather(core.animateFrame.weather.type,core.animateFrame.weather.level);core.drawMap()}else if(data==="events"){core.events.commonEvent=after.commonEvent}else if(data==="data"){location.reload()}core.updateStatusBar(true,true);console.log("data hot reload: ".concat(data));case 14:case"end":return _context7.stop();}},_callee7)}));return _reloadData.apply(this,arguments)}_asyncToGenerator(_regeneratorRuntime().mark(function _callee3(){var data;return _regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.next=2;return post("/reload","POST","test");case 2:data=_context3.sent;if(data==="@error"){console.log("\u672A\u68C0\u6D4B\u5230node\u670D\u52A1\uFF0C\u70ED\u91CD\u8F7D\u63D2\u4EF6\u5C06\u65E0\u6CD5\u4F7F\u7528")}else{console.log("\u70ED\u91CD\u8F7D\u63D2\u4EF6\u52A0\u8F7D\u6210\u529F");setInterval(_asyncToGenerator(_regeneratorRuntime().mark(function _callee(){var res;return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return post("/reload","POST");case 2:res=_context.sent;if(!(res==="@error")){_context.next=5;break}return _context.abrupt("return");case 5:if(!(res==="true")){_context.next=9;break}location.reload();_context.next=10;break;case 9:return _context.abrupt("return");case 10:case"end":return _context.stop();}},_callee)})),1000);setInterval(_asyncToGenerator(_regeneratorRuntime().mark(function _callee2(){var res,data;return _regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return post("/hotReload","POST");case 2:res=_context2.sent;data=res.split("@@");data.forEach(function(v){if(v==="")return;var _v$split=v.split(":"),_v$split2=_slicedToArray(_v$split,2),type=_v$split2[0],file=_v$split2[1];if(type==="css")reloadCss(file);if(type==="data")reloadData(file);if(type==="floor")reloadFloor(file);if(type==="script")reloadScript(file)});case 5:case"end":return _context2.stop();}},_callee2)})),1000)}case 4:case"end":return _context3.stop();}},_callee3)}))()})(); +"use strict";function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj)}return newObj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i=0;--i){var entry=this.tryEntries[i],record=entry.completion;if("root"===entry.tryLoc)return handle("end");if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,"catchLoc"),hasFinally=hasOwn.call(entry,"finallyLoc");if(hasCatch&&hasFinally){if(this.prev=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,"finallyLoc")&&this.prev=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc)return this.complete(entry.completion,entry.afterLoc),resetTryEntry(entry),ContinueSentinel}},"catch":function _catch(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if("throw"===record.type){var thrown=record.arg;resetTryEntry(entry)}return thrown}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(iterable,resultName,nextLoc){return this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc},"next"===this.method&&(this.arg=undefined),ContinueSentinel}},exports}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}(function(){if(main.mode!=="play"||main.replayChecking)return;function post(_x,_x2,_x3){return _post.apply(this,arguments)}function _post(){_post=_asyncToGenerator(_regeneratorRuntime().mark(function _callee4(url,type,data){var xhr,res;return _regeneratorRuntime().wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:xhr=new XMLHttpRequest;xhr.open(type,url);xhr.send(data);_context4.next=5;return new Promise(function(res){xhr.onload=function(){if(xhr.status!==200){console.error("hot reload: http ".concat(xhr.status));res("@error")}else res("success")};xhr.onerror=function(){res("@error");console.error("hot reload: error on connection")}});case 5:res=_context4.sent;if(!(res==="success")){_context4.next=10;break}return _context4.abrupt("return",xhr.response);case 10:return _context4.abrupt("return","@error");case 11:case"end":return _context4.stop();}},_callee4)}));return _post.apply(this,arguments)}function reloadCss(data){var css=document.getElementById("mota-css");css.remove();var link=document.createElement("link");link.rel="stylesheet";link.type="text/css";link.href=data;link.id="mota-css";document.head.appendChild(link);console.log("css hot reload: ".concat(data))}function reloadFloor(_x4){return _reloadFloor.apply(this,arguments)}function _reloadFloor(){_reloadFloor=_asyncToGenerator(_regeneratorRuntime().mark(function _callee5(data){var floor,weather;return _regeneratorRuntime().wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:if(!(core.status.maps[data].deleted||core.status.maps[data].forceDelete)){_context5.next=2;break}return _context5.abrupt("return");case 2:_context5.next=4;return function(specifier){return new Promise(function(r){return r(specifier)}).then(function(s){return _interopRequireWildcard(require(s))})}("/project/floors/".concat(data,".js?v=").concat(Date.now()));case 4:core.floors[data]=main.floors[data];floor=core.loadFloor(data);if(core.isPlaying()){core.status.maps[data]=floor;delete core.status.mapBlockObjs[data];core.extractBlocks(data);if(data===core.status.floorId){core.drawMap(data);weather=core.getFlag("__weather__",null);if(!weather&&core.status.thisMap.weather)weather=core.status.thisMap.weather;if(weather)core.setWeather(weather[0],weather[1]);else core.setWeather()}core.updateStatusBar(true,true)}console.log("floor hot reload: ".concat(data));case 8:case"end":return _context5.stop();}},_callee5)}));return _reloadFloor.apply(this,arguments)}function reloadScript(){return _reloadScript.apply(this,arguments)}function _reloadScript(){_reloadScript=_asyncToGenerator(_regeneratorRuntime().mark(function _callee6(){var before,script,after,mod,fns,id,fn,now;return _regeneratorRuntime().wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:before=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a;script=document.createElement("script");script.src="/project/functions.js?v=".concat(Date.now());document.body.appendChild(script);_context6.next=6;return new Promise(function(res){script.onload=function(){return res("success")}});case 6:after=functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a;_context6.t0=_regeneratorRuntime().keys(before);case 8:if((_context6.t1=_context6.t0()).done){_context6.next=23;break}mod=_context6.t1.value;fns=before[mod];_context6.t2=_regeneratorRuntime().keys(fns);case 12:if((_context6.t3=_context6.t2()).done){_context6.next=21;break}id=_context6.t3.value;fn=fns[id];if(!(typeof fn!=="function"||id==="hasSpecial")){_context6.next=17;break}return _context6.abrupt("continue",12);case 17:now=after[mod][id];if(fn.toString()!==now.toString()){try{if(mod==="events"){core.events.eventdata[id]=now}else if(mod==="enemys"){core.enemys.enemydata[id]=now}else if(mod==="actions"){core.actions.actionsdata[id]=now}else if(mod==="control"){core.control.controldata[id]=now}else if(mod==="ui"){core.ui.uidata[id]=now}core.updateStatusBar(true,true);console.log("function hot reload: ".concat(mod,".").concat(id))}catch(e){console.error(e)}}_context6.next=12;break;case 21:_context6.next=8;break;case 23:case"end":return _context6.stop();}},_callee6)}));return _reloadScript.apply(this,arguments)}function reloadPlugin(_x5){return _reloadPlugin.apply(this,arguments)}function _reloadPlugin(){_reloadPlugin=_asyncToGenerator(_regeneratorRuntime().mark(function _callee7(data){return _regeneratorRuntime().wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:_context7.next=2;return function(specifier){return new Promise(function(r){return r(specifier)}).then(function(s){return _interopRequireWildcard(require(s))})}("/project/plugin/".concat(data,".js?v=").concat(Date.now()));case 2:console.log("plugin hot reload: ".concat(data,".js"));case 3:case"end":return _context7.stop();}},_callee7)}));return _reloadPlugin.apply(this,arguments)}function reloadData(_x6){return _reloadData.apply(this,arguments)}function _reloadData(){_reloadData=_asyncToGenerator(_regeneratorRuntime().mark(function _callee8(data){var script,after,enemyId,itemId;return _regeneratorRuntime().wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:script=document.createElement("script");script.src="/project/".concat(data,".js?v=").concat(Date.now());document.body.appendChild(script);_context8.next=5;return new Promise(function(res){script.onload=function(){return res("success")}});case 5:if(data==="data")after=data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d;if(data==="enemys")after=enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80;if(data==="icons")after=icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1;if(data==="items")after=items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a;if(data==="maps")after=maps_90f36752_8815_4be8_b32b_d7fad1d0542e;if(data==="events")after=events_c12a15a8_c380_4b28_8144_256cba95f760;if(data==="enemys"){core.enemys.enemys=after;for(enemyId in after){core.enemys.enemys[enemyId].id=enemyId}core.material.enemys=core.getEnemys()}else if(data==="icons"){core.icons.icons=after;core.material.icons=core.getIcons()}else if(data==="items"){core.items.items=after;for(itemId in after){core.items.items[itemId].id=itemId}core.material.items=core.getItems()}else if(data==="maps"){core.maps.blocksInfo=after;core.status.mapBlockObjs={};core.status.number2block={};Object.values(core.status.maps).forEach(function(v){return delete v.blocks});core.extractBlocks();core.setWeather(core.animateFrame.weather.type,core.animateFrame.weather.level);core.drawMap()}else if(data==="events"){core.events.commonEvent=after.commonEvent}else if(data==="data"){location.reload()}core.updateStatusBar(true,true);console.log("data hot reload: ".concat(data));case 14:case"end":return _context8.stop();}},_callee8)}));return _reloadData.apply(this,arguments)}_asyncToGenerator(_regeneratorRuntime().mark(function _callee3(){var data;return _regeneratorRuntime().wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.next=2;return post("/reload","POST","test");case 2:data=_context3.sent;if(data==="@error"){console.log("\u672A\u68C0\u6D4B\u5230node\u670D\u52A1\uFF0C\u70ED\u91CD\u8F7D\u63D2\u4EF6\u5C06\u65E0\u6CD5\u4F7F\u7528")}else{console.log("\u70ED\u91CD\u8F7D\u63D2\u4EF6\u52A0\u8F7D\u6210\u529F");setInterval(_asyncToGenerator(_regeneratorRuntime().mark(function _callee(){var res;return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return post("/reload","POST");case 2:res=_context.sent;if(!(res==="@error")){_context.next=5;break}return _context.abrupt("return");case 5:if(!(res==="true")){_context.next=9;break}location.reload();_context.next=10;break;case 9:return _context.abrupt("return");case 10:case"end":return _context.stop();}},_callee)})),1000);setInterval(_asyncToGenerator(_regeneratorRuntime().mark(function _callee2(){var res,data;return _regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return post("/hotReload","POST");case 2:res=_context2.sent;data=res.split("@@");data.forEach(function(v){if(v==="")return;var _v$split=v.split(":"),_v$split2=_slicedToArray(_v$split,2),type=_v$split2[0],file=_v$split2[1];if(type==="css")reloadCss(file);if(type==="data")reloadData(file);if(type==="floor")reloadFloor(file);if(type==="script")reloadScript(file);if(type==="plugin")reloadPlugin(file)});case 5:case"end":return _context2.stop();}},_callee2)})),1000)}case 4:case"end":return _context3.stop();}},_callee3)}))()})(); "use strict";function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);iitem.number-flags.itemShop[openedShopId][id]){return false}var cost=0;if(type==="buy"){cost=item.money*num}else{cost=-item.sell*num}if(cost>core.status.hero.money)return false;core.status.hero.money-=cost;flags.itemShop[openedShopId][id]+=type==="buy"?num:-num;core.replay();return true});core.registerReplayAction("closeShop",function(name){if(name!=="closeShop")return false;if(!shopOpened)return false;shopOpened=false;openedShopId="";core.replay();return true})})(); "use strict";function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i\u4E3B\u52A8\u6280\u80FD\uFF0C\u5FEB\u6377\u952E1\uFF0C","\u5F00\u542F\u540E\u4F1A\u5728\u6218\u6597\u65F6\u4F1A\u989D\u5916\u589E\u52A0\u4E00\u5B9A\u91CF\u7684\u653B\u51FB\uFF0C\u4F46\u540C\u65F6\u51CF\u5C11\u4E00\u5B9A\u91CF\u7684\u9632\u5FA1\u3002"],consume:"200 * level + 400",front:[[1,5]],loc:[4,1],max:5,effect:["\u589E\u52A0${level * 10}%\u653B\u51FB\uFF0C\u51CF\u5C11${level * 10}%\u9632\u5FA1"]},{index:3,title:"\u575A\u97E7",desc:["\u7531\u667A\u6167\u8F6C\u5316\u51FA\u575A\u97E7\uFF01\u6BCF\u7EA7\u589E\u52A02\u70B9\u9632\u5FA1"],consume:"10 * level + 10",front:[],loc:[1,4],max:10,effect:["\u9632\u5FA1 + ${level * 2}"]},{index:4,title:"\u56DE\u6625",desc:["\u8BA9\u667A\u6167\u5316\u4E3A\u6CBB\u6108\u4E4B\u6CC9\u6C34\uFF01\u6BCF\u7EA7\u589E\u52A01\u70B9\u751F\u547D\u56DE\u590D"],consume:"20 * level + 20",front:[[3,5]],loc:[2,5],max:25,effect:["\u751F\u547D\u56DE\u590D + ${level}"]},{index:5,title:"\u6CBB\u6108\u4E4B\u6CC9",desc:["\u8BA9\u751F\u547D\u53D8\u5F97\u66F4\u591A\u4E00\u4E9B\u5427\uFF01\u6BCF\u540350\u74F6\u8840\u74F6\u5C31\u589E\u52A0\u5F53\u524D\u751F\u547D\u56DE\u590D10%\u7684\u751F\u547D\u56DE\u590D"],consume:"1500",front:[[4,25]],loc:[4,5],max:1,effect:["50\u74F6\u884010%\u751F\u547D\u56DE\u590D"]},{index:6,title:"\u575A\u56FA\u4E4B\u76FE",desc:["\u8BA9\u62A4\u7532\u66F4\u52A0\u575A\u786C\u4E00\u4E9B\u5427\uFF01\u6BCF\u7EA7\u589E\u52A010\u70B9\u9632\u5FA1"],consume:"50 + level * 50",front:[[3,5]],loc:[2,3],max:10,effect:["\u9632\u5FA1 + ${level * 10}"]},{index:7,title:"\u65E0\u4E0A\u4E4B\u76FE",desc:["\u7B2C\u4E00\u7AE0\u7EC8\u6781\u6280\u80FD\uFF0C\u6218\u6597\u65F6\u667A\u6167\u4F1A\u5145\u5F53\u7B49\u91CF\u62A4\u76FE"],consume:"2500",front:[[6,10],[5,1],[2,2]],loc:[5,3],max:1,effect:["\u6218\u6597\u65F6\u667A\u6167\u4F1A\u5145\u5F53\u62A4\u76FE"]}],chapter2:[{index:8,title:"\u950B\u5229",desc:["\u8BA9\u5251\u53D8\u5F97\u66F4\u52A0\u950B\u5229\uFF01\u6BCF\u7EA7\u4F7F\u653B\u51FB\u589E\u52A01%\uFF08buff\u5F0F\u589E\u52A0\uFF09"],consume:"level > 5 ? 50 * level ** 2 : 250 * level + 250",front:[],loc:[1,2],max:15,effect:["\u653B\u51FB\u589E\u52A0${level}%"]},{index:9,title:"\u575A\u786C",desc:["\u8BA9\u76FE\u724C\u53D8\u5F97\u66F4\u52A0\u575A\u56FA\uFF01\u6BCF\u7EA7\u4F7F\u9632\u5FA1\u589E\u52A01%\uFF08buff\u5F0F\u589E\u52A0\uFF09"],consume:"level > 5 ? 50 * level ** 2 : 250 * level + 250",front:[],loc:[1,4],max:15,effect:["\u9632\u5FA1\u589E\u52A0${level}%"]},{index:10,title:"\u94F8\u5251\u4E3A\u76FE",desc:["\u4E3B\u52A8\u6280\u80FD\uFF0C\u5FEB\u6377\u952E3\uFF0C","\u51CF\u5C11\u4E00\u5B9A\u7684\u653B\u51FB\uFF0C\u589E\u52A0\u4E00\u5B9A\u7684\u9632\u5FA1"],consume:"500 * level + 1000",front:[[9,5]],loc:[2,5],max:5,effect:["\u589E\u52A0${level * 10}%\u7684\u9632\u5FA1\uFF0C\u51CF\u5C11${level * 10}%\u7684\u653B\u51FB"]},{index:11,title:"\u5B66\u4E60",desc:["\u4E3B\u52A8\u6280\u80FD\uFF0C\u53EF\u4EE5\u6D88\u8017500\u667A\u6167\u5B66\u4E60\u4E00\u4E2A\u602A\u7269\u7684\u6280\u80FD\uFF0C","\u6301\u7EED5\u573A\u6218\u6597\uFF0C\u6BCF\u5B66\u4E60\u4E00\u6B21\u6D88\u8017\u7684\u667A\u6167\u70B9\u589E\u52A0250\uFF0C\u6BCF\u6B21\u5347\u7EA7\u4F7F\u6301\u7EED\u7684\u6218\u6597\u6B21\u6570\u589E\u52A03\u6B21\u3002\u66F4\u591A\u4FE1\u606F\u53EF\u5728\u5B66\u4E60\u540E\u5728\u767E\u79D1\u5168\u4E66\u67E5\u770B\u3002"],consume:"2500 * level ** 2 + 2500",front:[[8,10],[12,5]],loc:[4,1],max:6,effect:["\u5B66\u4E60\u602A\u7269\u6280\u80FD\uFF0C\u6301\u7EED${level * 3 + 2}\u573A\u6218\u6597"]},{index:12,title:"\u806A\u6167",desc:["\u4F7F\u4E3B\u89D2\u53D8\u5F97\u66F4\u52A0\u806A\u660E\uFF0C\u6BCF\u7EA7\u4F7F\u7EFF\u5B9D\u77F3\u589E\u52A0\u7684\u667A\u6167\u70B9\u4E0A\u53475%"],consume:"level > 5 ? 100 * level ** 2 : 250 * level + 1250",front:[[8,10],[9,10]],loc:[3,3],max:20,effect:["\u589E\u52A0${level * 5}%\u7EFF\u5B9D\u77F3\u6548\u679C"]},{index:13,title:"\u6CBB\u6108",desc:["\u4F7F\u4E3B\u89D2\u80FD\u591F\u66F4\u597D\u5730\u56DE\u590D\u751F\u547D\uFF0C\u6BCF\u7EA7\u4F7F\u8840\u74F6\u7684\u52A0\u8840\u91CF\u589E\u52A02%"],consume:"level > 5 ? 100 * level ** 2 : 250 * level + 1250",front:[[10,3]],loc:[4,5],max:20,effect:["\u589E\u52A0${level * 2}%\u7684\u8840\u74F6\u56DE\u8840\u91CF"]},{index:14,title:"\u80DC\u5229\u4E4B\u53F7",desc:["\u7B2C\u4E8C\u7AE0\u7EC8\u6781\u6280\u80FD\uFF0C","\u6BCF\u6253\u4E00\u4E2A\u602A\u7269\uFF0C\u52C7\u58EB\u5728\u672C\u697C\u5C42\u5BF9\u602A\u7269\u9020\u6210\u7684\u4F24\u5BB3\u4FBF\u589E\u52A01%"],consume:"15000",front:[[13,10],[12,10],[11,3]],loc:[5,3],max:1,effect:["\u6BCF\u6253\u4E00\u4E2A\u602A\uFF0C\u52C7\u58EB\u9020\u6210\u7684\u4F24\u5BB3\u589E\u52A01%"]}]};core.plugin.skills=skills;function getSkillFromIndex(index){for(var _i=0,_Object$entries=Object.entries(skills);_i<_Object$entries.length;_i++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i],2),skill=_Object$entries$_i[1];var s=skill.find(function(v){return v.index===index});if(s)return s}}function getSkillLevel(skill){var _levels,_levels$skill;return(_levels$skill=(_levels=levels)[skill])!==null&&_levels$skill!==void 0?_levels$skill:_levels[skill]=0}function getSkillConsume(skill){return eval(this.getSkillFromIndex(skill).consume.replace(/level(:\d+)?/g,function(str,$1){if($1)return"core.plugin.skillTree.getSkillLevel(".concat($1,")");else return"core.plugin.skillTree.getSkillLevel(".concat(skill,")")}))}function openTree(){if(main.replayChecking)return;core.plugin.skillTreeOpened.value=true}function canUpgrade(skill){var consume=core.plugin.skillTree.getSkillConsume(skill);if(consume>core.status.hero.mdef)return false;var level=core.plugin.skillTree.getSkillLevel(skill);var s=getSkillFromIndex(skill);if(level===s.max)return false;var front=s.front;var _iterator=_createForOfIteratorHelper(front),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _step$value=_slicedToArray(_step.value,2),_skill=_step$value[0],_level=_step$value[1];if(core.plugin.skillTree.getSkillLevel(_skill)<_level)return false}}catch(err){_iterator.e(err)}finally{_iterator.f()}return true}function upgradeSkill(skill){if(!canUpgrade(skill))return false;switch(skill){case 0:core.status.hero.atk+=2;break;case 1:core.status.hero.mana+=5;break;case 2:core.setFlag("bladeOn",true);break;case 3:core.status.hero.def+=2;break;case 4:core.status.hero.hpmax+=1;break;case 5:core.setFlag("spring",true);break;case 6:core.status.hero.def+=10;break;case 7:core.setFlag("superSheild",true);break;case 8:core.addBuff("atk",0.01);break;case 9:core.addBuff("def",0.01);break;case 10:core.setFlag("shieldOn",true);break;case 11:core.setItem("I565",1);break;}var consume=getSkillConsume(skill);core.status.hero.mdef-=consume;levels[skill]++;core.updateStatusBar();return true}function saveSkillTree(){return levels.slice()}function loadSkillTree(data){levels=data!==null&&data!==void 0?data:[]}core.plugin.skillTree={getSkillConsume:getSkillConsume,getSkillFromIndex:getSkillFromIndex,getSkillLevel:getSkillLevel,saveSkillTree:saveSkillTree,loadSkillTree:loadSkillTree,upgradeSkill:upgradeSkill,openTree:openTree}})(); "use strict";function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);icore._PX_/32+1||top<-1||bottom>core._PY_/32+1){continue}}ctx.fillStyle=color;ctx.strokeStyle=border!==null&&border!==void 0?border:color;ctx.lineWidth=1;ctx.globalAlpha=0.1;ctx.fillRect(left*32,top*32,n*32,n*32);ctx.globalAlpha=0.6;ctx.strokeRect(left*32,top*32,n*32,n*32)}}}catch(err){_iterator.e(err)}finally{_iterator.f()}}ctx.restore()}core.plugin.halo={drawHalo:drawHalo}})(); diff --git a/server.cjs b/server.cjs index b4dee5f..1f8dd35 100644 --- a/server.cjs +++ b/server.cjs @@ -44,6 +44,7 @@ next(); let repStart; const listenedFloors = []; +const listenedPlugins = []; // ----- GET file @@ -172,6 +173,7 @@ async function writeFile(req, res) { const value = /&value=[^]+/.exec(data)[0].slice(7); await fs.writeFile(dir, value, { encoding: type }); testWatchFloor(name); + testWatchPlugin(name); if (name.endsWith('project/events.js')) doDeclaration('events', value); if (name.endsWith('project/items.js')) doDeclaration('items', value); if (name.endsWith('project/maps.js')) doDeclaration('maps', value); @@ -332,7 +334,7 @@ async function watch() { watchOneFloor(v.slice(15)); }); - // 脚本编辑 及 插件 热重载 + // 脚本编辑 热重载 const scripts = await extract('project/functions.js', 'project/plugins.js'); scripts.forEach(v => { const dir = path.resolve(__dirname, v); @@ -343,6 +345,12 @@ async function watch() { }); }); + // 插件热重载 + const plugins = await extract('project/plugin/*.js'); + plugins.forEach(v => { + watchOnePlugin(v.slice(15)); + }); + // 数据热重载 const datas = (await extract('project/*.js')).filter( v => !v.endsWith('functions.js') && !v.endsWith('plugins.js') @@ -370,6 +378,19 @@ function testWatchFloor(url) { } } +/** + * 检测是否是楼层文件并进行监听 + * @param {string} url 要测试的路径 + */ +function testWatchPlugin(url) { + if (/project(\/|\\)plugin(\/|\\).*\.js/.test(url)) { + const f = url.slice(15); + if (!listenedFloors.includes(f.slice(0, -3))) { + watchOnePlugin(f); + } + } +} + /** * 监听一个楼层文件 * @param {string} file 要监听的文件 @@ -386,6 +407,22 @@ function watchOneFloor(file) { }); } +/** + * 监听一个楼层文件 + * @param {string} file 要监听的文件 + */ +function watchOnePlugin(file) { + if (!/.*\.js/.test(file)) return; + const f = file.slice(0, -3); + listenedFloors.push(file.slice(0, -3)); + fss.watchFile(`project/plugin/${file}`, { interval: 500 }, () => { + const plugin = f; + if (hotReloadData.includes(`@@plugin:${plugin}`)) return; + hotReloadData += `@@plugin:${plugin}`; + console.log(`plugin hot reload: ${plugin}`); + }); +} + /** * 修改部分文件后重新加载及热重载 * @param {http.IncomingMessage} req @@ -411,189 +448,6 @@ function reload(req, res, hot = false) { }); } -// ----- replay debugger - -/** - * 录像调试 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -function replay(req, res) { - req.on('data', async chunk => { - if (chunk.toString() === 'test' && !replayed) { - replayed = true; - try { - await fs.mkdir(path.resolve(__dirname, '_replay')); - await fs.mkdir(path.resolve(__dirname, '_replay/status')); - await fs.mkdir(path.resolve(__dirname, '_replay/save')); - } catch {} - - try { - await fs.readFile( - path.resolve(__dirname, '_replay/.info'), - 'utf-8' - ); - } catch { - await fs.writeFile( - path.resolve(__dirname, '_replay/.info'), - `{ - "cnt": 0 -}`, - 'utf-8' - ); - } - const data = fss.readFileSync( - path.resolve(__dirname, '_replay/.info'), - 'utf-8' - ); - repStart = Number(JSON.parse(data).cnt); - console.log(`服务器录像调试模块已开始服务`); - } - }); - - req.on('end', () => { - res.end(); - }); -} - -/** - * 获取未占用的状态栏位 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -async function replayCnt() { - const data = `{ - "cnt": ${++repStart} -}`; - fss.writeFileSync(path.resolve(__dirname, '_replay/.info'), data, 'utf-8'); - - return repStart; -} - -/** - * 写入 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -async function replayWrite(req, res) { - const data = await getPostData(req); - const n = await replayCnt(); - - if (isNaN(n)) res.end('@error'); - - await Promise.all([ - fs.writeFile( - path.resolve(__dirname, '_replay/.info'), - `{ - "cnt": ${n + 1} -}`, - 'utf-8' - ), - fs.writeFile( - path.resolve(__dirname, `_replay/status/${n}.rep`), - data, - 'utf-8' - ) - ]); - - res.end(n.toString()); -} - -/** - * 比对录像与本地数据 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -async function replayCheck(req, res) { - const ans = await getPostData(req); - const [n, data] = ans.split('@-|-@'); - - const local = ( - await fs.readFile( - path.resolve(__dirname, `_replay/status/${n}.rep`), - 'utf-8' - ) - ) - .split('@---@') - .map(v => JSON.parse(v)); - const rep = data.split('@---@').map(v => JSON.parse(v)); - - if (local.length !== rep.length) return res.end('false'); - - const check = (a, b) => { - if (a === b) return true; - if (typeof a !== typeof b) return false; - if (typeof a === 'object' && a !== null) { - for (const j in a) { - if (j === 'statistics' || j === 'timeout') continue; // 忽略统计信息 - const aa = a[j]; - const bb = b[j]; - if (!check(aa, bb)) { - return false; - } - } - return true; - } - if ( - typeof a === 'boolean' || - typeof a === 'number' || - typeof a === 'string' || - typeof a === 'symbol' || - typeof a === 'undefined' || - typeof a === 'bigint' || - a === null - ) { - return a === b; - } - return true; - }; - - for (let i = 0; i < local.length; i++) { - const a = local[i]; - const b = rep[i]; - if (!check(a, b)) return res.end('false'); - } - - res.end('true'); -} - -/** - * 获取本地属性 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -async function replayGet(req, res, dir) { - const ans = Number(await getPostData(req)); - - const data = await fs.readFile( - path.resolve(__dirname, `_replay/${dir}/${ans}.rep`) - ); - res.end(data); -} - -/** - * 录像回放存档 - * @param {http.IncomingMessage} req - * @param {http.ServerResponse & {req: http.IncomingMessage;}} res - */ -async function replaySave(req, res) { - const data = await getPostData(req); - const [cnt, save] = data.split('@-|-@'); - - if (isNaN(Number(cnt))) { - console.log('Invalid input of save cnt'); - res.end('@error: 不合法的录像存档信息'); - } - - await fs.writeFile( - path.resolve(__dirname, `_replay/save/${cnt}.rep`), - save, - 'utf-8' - ); - - res.end('success'); -} - // ----- declaration /**