forked from hackclub/sprig
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSprigDungeons.js
7 lines (7 loc) · 66.5 KB
/
SprigDungeons.js
1
2
3
4
5
6
7
/*
@title: Sprig Dungeons
@author: Mirrek
@tags: []
@addedOn: 2024-07-15
*/
(()=>{"use strict";var n={938:(n,e)=>{Object.defineProperty(e,"__esModule",{value:true});e["default"]=a;e.setSfx=s;const t=[{name:"menu-move",tune:`\n37.5: B4^37.5 + E4^37.5 + C4^37.5 + F4~37.5 + A4~37.5,\n1162.5`},{name:"menu-select",tune:`\n100: G4~100,\n100: D5~100,\n3000`},{name:"move",tune:`\n50: F4^50,\n1550`},{name:"katana-swoosh",tune:`\n37.5: E4~37.5 + D4^37.5 + B4~37.5,\n37.5: D4~37.5 + A4~37.5,\n1125`},{name:"shoot-handgun",tune:`\n50: E4-50 + F4-50 + C4-50 + D4-50 + E5/50,\n50: F4-50 + D4-50 + E5/50,\n1500`},{name:"shoot-rifle",tune:`\n50: G4/50 + F4^50 + D4^50 + E4-50 + C4-50,\n50: E4-50 + C4-50 + G4/50 + F4-50 + D4-50,\n1500`},{name:"shoot-shotgun",tune:`\n50: F4-50 + E4-50 + D4-50 + C4-50 + B4/50,\n50: F4-50 + D4-50 + E4-50 + C4-50 + B4/50,\n1500`},{name:"pickup",tune:`\n83.33333333333333: C5~83.33333333333333 + C4^83.33333333333333,\n83.33333333333333: E5~83.33333333333333 + C4^83.33333333333333,\n83.33333333333333: G5~83.33333333333333 + C4^83.33333333333333,\n2416.6666666666665`},{name:"hit",tune:`\n60: F4-60 + E4-60 + D4-60 + C4-60,\n60: D4-60 + E4-60 + C4-60,\n60: C4-60,\n1740`},{name:"hurt",tune:`\n37.5: D5-37.5 + C5-37.5 + G4-37.5 + E4-37.5 + C4-37.5,\n37.5: C5/37.5 + G4/37.5 + E4/37.5 + D5/37.5 + B5/37.5,\n1125`},{name:"death",tune:`\n125: F5~125,\n125: E5~125,\n125: D5~125,\n125: C5~125,\n125: B4~125,\n125: A4~125,\n3250`},{name:"spawn",tune:`\n50,\n50: C4~50,\n50: D4~50,\n50: E4~50,\n50: F4~50,\n50: G4~50,\n1300`},{name:"level-start",tune:`\n100: D4~100 + E4~100 + F4~100 + G4~100 + C4^100,\n100,\n100: D4~100 + E4~100 + F4~100 + C4^100,\n200,\n100: C4^100 + D4~100 + E4~100,\n2600`},{name:"level-cleared",tune:`\n83.33333333333333: E4~83.33333333333333,\n83.33333333333333: A4~83.33333333333333,\n83.33333333333333: D5~83.33333333333333,\n83.33333333333333: E5~83.33333333333333,\n2333.333333333333`},{name:"theme-main",tune:`\n375: F4~375 + A4~375 + D5~375 + D4^375 + A5~375,\n375: E5~375,\n375: E5~375,\n375: E5~375,\n375: G5~375 + D5~375 + F4~375 + B4^375,\n750,\n375: B4^375,\n375: E4~375 + A4~375 + D5~375 + G5~375 + C5^375,\n375: C5~375,\n375: C5~375,\n375: C5~375,\n375: C5~375 + E4~375 + A5~375,\n750,\n375: A5~375,\n375: A5~375 + A4~375 + E5^375 + D4~375,\n375: A5~375,\n375: A5~375,\n375: A5~375,\n375: G4~375 + B4~375 + E5^375 + B5~375,\n750,\n375: E5~375,\n375: B4^375 + G5~375 + E4~375,\n375: B4~375 + E5~375,\n375: B4~375 + G5~375,\n375: B5~375 + G4~375,\n375: E5^375 + A4~375 + A5~375,\n375: A4~375,\n375: C5~375,\n375: E5~375`},{name:"theme-death",tune:`\n375: A4~375 + E5^375,\n375: C4~375,\n375: E4~375,\n375: A4~375 + E5^375,\n375: B4~375 + F5^375,\n750,\n375: D5~375 + G5^375,\n375: C5~375 + E5^375,\n375: B4~375 + D5^375,\n375: C5~375 + E5^375,\n375: D5~375 + F5^375,\n375: C5~375 + E5^375,\n375: B4~375,\n375: A4~375,\n375: B4~375,\n375: A4~375 + C5^375,\n375: C4~375,\n375: E4~375,\n375: A4~375 + C5^375,\n375: B4~375 + D5^375,\n375: E4~375 + C5^375,\n375: A4~375 + B4^375,\n375: B4~375 + C5^375,\n375: A4^375 + E4~375,\n375,\n375: A4~375,\n375: E4~375,\n375: D4~375,\n375: C4~375,\n375: D4~375,\n375: C4~375`}];let i=true;function a(n,e=1){if(!i&&!n.startsWith("theme-")){return{end:()=>{}}}return playTune(t.find((e=>e.name===n)).tune,e)}function s(n){i=n}},921:(n,e)=>{Object.defineProperty(e,"__esModule",{value:true});e.doorWidth=e.screenHeight=e.screenWidth=void 0;e.screenWidth=20;e.screenHeight=16;e.doorWidth=4},724:(n,e,t)=>{Object.defineProperty(e,"__esModule",{value:true});const i=t(638);const a=[{name:"apple",chance:.05},{name:"shield-potion",chance:.02},{name:"sight-potion",chance:.015},{name:"health-potion",chance:.01},{name:"handgun",chance:.005},{name:"rifle",chance:.0025},{name:"shotgun",chance:.001}];class s{constructor(n,e,t,i=false,s=-1,o=false){this.boss=s>0;this.invisible=o;this.health=this.boss?s:1;this.x=n;this.y=e;this.direction=t;this.spawnTime=0;this.dieTime=null;this.proximityTime=null;const r=a[Math.floor(Math.random()*a.length)];this.loot=this.boss||Math.random()<r.chance*a.length?r.name:null;if(i&&this.loot===null){this.loot=["handgun","rifle","shotgun"][Math.floor(Math.random()*3)]}}render(n){if(this.getState()==="waiting"){return}if(this.invisible){if(this.dieTime!==null&&this.loot!==null){const e=Math.floor(n/500)%2===0?"0":"1";addSprite(this.x,this.y,(0,i.default)(`loot-${this.loot}-${e}`))}return}if(this.dieTime!==null){if(Date.now()-this.dieTime<500){addSprite(this.x,this.y,(0,i.default)(this.boss?"boss-death-0":"enemy-death-0"))}else{addSprite(this.x,this.y,(0,i.default)(this.boss?"boss-death-1":"enemy-death-1"));if(this.loot!==null){const e=Math.floor(n/500)%2===0?"0":"1";addSprite(this.x,this.y,(0,i.default)(`loot-${this.loot}-${e}`))}}return}const e=Math.floor(n/500)%2===0?"0":"1";if(this.boss){addSprite(this.x,this.y-1,(0,i.default)(`boss-${e}-0-${this.direction}`));addSprite(this.x,this.y,(0,i.default)(`boss-${e}-1-${this.direction}`))}else{addSprite(this.x,this.y,(0,i.default)(`enemy-${e}-${this.direction}`))}const t=Date.now()-this.spawnTime;if(!this.boss&&t<1e3){if(t<500){addSprite(this.x,this.y,(0,i.default)("enemy-spawn-0"))}else if(t<750){addSprite(this.x,this.y,(0,i.default)("enemy-spawn-1"))}else{addSprite(this.x,this.y,(0,i.default)("enemy-spawn-2"))}}}spawn(){this.spawnTime=Date.now()}update(n,e){if(this.getState()!=="active"){return}const t=n.x-this.x;const i=n.y-this.y;if(Math.sqrt(t**2+i**2)<=1){return}let a=this.x;let s=this.y;if(Math.abs(t)>Math.abs(i)){a+=t>0?1:-1;this.direction=t>0?"east":"west"}else{s+=i>0?1:-1;this.direction=i>0?"south":"north"}if(e.some((n=>n.getState()==="active"&&n.getPosition().x===a&&n.getPosition().y===s))){return}this.x=a;this.y=s}hit(){if(this.getState()!=="spawning"&&this.getState()!=="active"){return false}this.health--;if(this.health<=0){this.dieTime=Date.now();return true}return false}setPlayerProximity(n){if(this.getState()!=="active"){return false}if(!n){this.proximityTime=null;return false}if(this.proximityTime===null){this.proximityTime=Date.now()}else if(Date.now()-this.proximityTime>(this.boss?1250:750)){return true}return false}getState(){if(this.spawnTime===0){return"waiting"}if(this.dieTime!==null){return"dead"}if(Date.now()-this.spawnTime<1e3){return"spawning"}return"active"}getPosition(){return{x:this.x,y:this.y}}getLoot(){return this.loot}collectLoot(){this.loot=null}}e["default"]=s},788:(n,e)=>{Object.defineProperty(e,"__esModule",{value:true});let t=-1;let i=false;let a=false;let s=-1;let o=false;let r=false;let l=-1;let h=false;let u=false;let C=-1;let d=false;let f=false;let L=-1;let c=false;let m=false;let D=-1;let p=false;let H=false;let g=-1;let y=false;let v=false;let b=-1;let w=false;let x=false;const k={primary:{up(){if(!i)return false;if(a)return false;a=true;return true},down(){if(!h)return false;if(u)return false;u=true;return true},left(){if(!o)return false;if(r)return false;r=true;return true},right(){if(!d)return false;if(f)return false;f=true;return true}},secondary:{up(){if(!c)return false;if(m)return false;m=true;return true},down(){if(!y)return false;if(v)return false;v=true;return true},left(){if(!p)return false;if(H)return false;H=true;return true},right(){if(!w)return false;if(x)return false;x=true;return true}}};e["default"]=k;onInput("w",(()=>{clearTimeout(t);i=true;t=setTimeout((()=>{i=false;a=false}),100)}));onInput("a",(()=>{clearTimeout(s);o=true;s=setTimeout((()=>{o=false;r=false}),100)}));onInput("s",(()=>{clearTimeout(l);h=true;l=setTimeout((()=>{h=false;u=false}),100)}));onInput("d",(()=>{clearTimeout(C);d=true;C=setTimeout((()=>{d=false;f=false}),100)}));onInput("i",(()=>{clearTimeout(L);c=true;L=setTimeout((()=>{c=false;m=false}),100)}));onInput("j",(()=>{clearTimeout(D);p=true;D=setTimeout((()=>{p=false;H=false}),100)}));onInput("k",(()=>{clearTimeout(g);y=true;g=setTimeout((()=>{y=false;v=false}),100)}));onInput("l",(()=>{clearTimeout(b);w=true;b=setTimeout((()=>{w=false;x=false}),100)}))},270:(n,e,t)=>{Object.defineProperty(e,"__esModule",{value:true});const i=t(921);const a=t(638);const s=t(724);const o=t(938);class r{constructor(n,e,t){this.getLevelsConquered=n;this.onLevelConquered=e;this.previousLevel=t;this.type="normal";this.state="waiting";this.northLevel=null;this.eastLevel=null;this.southLevel=null;this.map="";this.enemies=[];this.lastEnemyMoveTime=0;this.lastBossMoveTime=0;this.enemySpeed=1;this.currentWave=0;this.newWaveTime=0;this.lastBossWave=0;this.chestOpen=false;this.alwaysDropWeapon=false}initialize(n,e,t,l){if(this.state!=="waiting"){return}this.type=this.getLevelsConquered()%4===3?this.previousLevel?.level.type==="loot"?"boss":"loot":"normal";this.alwaysDropWeapon=l;this.enemySpeed=e;const h=Math.floor(i.screenWidth/2-3);const u=Math.floor(i.screenHeight/2-3);for(let n=0;n<i.screenHeight;n++){this.map+="\n";for(let e=0;e<i.screenWidth;e++){if(this.type==="boss"&&e>=h&&e<h+6&&n>=u&&n<u+6){if(e===h){this.map+=(0,a.default)(n===u?"level-carpet-corner-south":n===u+5?"level-carpet-corner-east":"level-carpet-edge-east")}else if(e===h+5){this.map+=(0,a.default)(n===u?"level-carpet-corner-west":n===u+5?"level-carpet-corner-north":"level-carpet-edge-west")}else if(n===u){this.map+=(0,a.default)("level-carpet-edge-south")}else if(n===u+5){this.map+=(0,a.default)("level-carpet-edge-north")}else{this.map+=(0,a.default)("level-carpet")}}else{this.map+=(0,a.default)(Math.random()<.25?"level-floor-1":"level-floor-0")}}}let C="east";do{C=["north","east","south"][Math.floor(Math.random()*3)]}while(C===this.previousLevel?.direction);switch(C){case"north":{this.northLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"south"});if(Math.random()<.25){this.eastLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"west"})}if(Math.random()<.25&&this.previousLevel?.direction!=="south"){this.southLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"north"})}}break;case"east":{this.eastLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"west"});if(Math.random()<.3&&this.previousLevel?.direction!=="north"){this.northLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"south"})}if(Math.random()<.3&&this.previousLevel?.direction!=="south"){this.southLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"north"})}}break;case"south":{this.southLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"north"});if(Math.random()<.3&&this.previousLevel?.direction!=="north"){this.northLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"south"})}if(Math.random()<.3){this.eastLevel=new r(this.getLevelsConquered,this.onLevelConquered,{level:this,direction:"west"})}}break}if(this.previousLevel===null){this.state="conquered";return}switch(this.type){case"normal":this.enemies.push(...t.map((n=>new Array(n).fill(null).map((()=>new s.default(Math.floor(Math.random()*(i.screenWidth-2)+1),Math.floor(Math.random()*(i.screenHeight-2)+1),["north","east","south","west"][Math.floor(Math.random()*4)],this.alwaysDropWeapon))))));break;case"boss":this.enemies.push([new s.default(Math.floor(i.screenWidth/2),Math.floor(i.screenHeight/2),this.previousLevel?.direction??"north",this.alwaysDropWeapon,n)]);break;case"loot":this.enemies.push([new s.default(Math.floor(i.screenWidth/2),Math.floor(i.screenHeight/2),"north",true,-1,true)])}if(this.type==="loot"){this.state="conquered";return}this.state="active";this.enemies[0].forEach((n=>n.spawn()));(0,o.default)("level-start")}update(n){if(this.type==="loot"&&!this.chestOpen&&Math.abs(n.x-Math.floor(i.screenWidth/2))<=1&&Math.abs(n.y-Math.floor(i.screenHeight/2))<=1){this.chestOpen=true;this.enemies[0][0].spawn();this.enemies[0][0].hit();return false}if(this.state!=="active"){return false}if(this.type==="boss"&&Date.now()-this.lastBossWave>1e4&&this.enemies[0][0].getState()!=="dead"){this.lastBossWave=Date.now();this.enemies[0].push(...new Array(3+Math.floor(this.getLevelsConquered()/4)).fill(null).map((()=>new s.default(Math.floor(Math.random()*(i.screenWidth-2)+1),Math.floor(Math.random()*(i.screenHeight-2)+1),["north","east","south","west"][Math.floor(Math.random()*4)],this.alwaysDropWeapon))));this.enemies[0].forEach((n=>n.getState()==="waiting"&&n.spawn()))}if(this.enemies[this.currentWave].every((n=>n.getState()==="dead"))){if(this.newWaveTime===0){if(this.currentWave===this.enemies.length-1){this.state="conquered";(0,o.default)("level-cleared");this.onLevelConquered()}else{this.newWaveTime=Date.now()}}else if(Date.now()-this.newWaveTime>1500){this.newWaveTime=0;this.currentWave++;this.enemies[this.currentWave].forEach((n=>n.spawn()));(0,o.default)("spawn")}}if(Date.now()-this.lastEnemyMoveTime>1e3/this.enemySpeed){this.lastEnemyMoveTime=Date.now();this.enemies.forEach(((e,t)=>e.forEach(((i,a)=>(this.type!=="boss"||t!==0||a!==0)&&i.update(n,e)))))}if(this.type==="boss"&&Date.now()-this.lastBossMoveTime>1e3){this.lastBossMoveTime=Date.now();this.enemies[0][0].update(n,[])}if(this.enemies[this.currentWave].some((e=>e.setPlayerProximity(Math.sqrt((e.getPosition().x-n.x)**2+(e.getPosition().y-n.y)**2)<=1)))){this.enemies[this.currentWave].forEach((n=>n.setPlayerProximity(false)));return true}return false}getLevel(n){if(n===this.previousLevel?.direction){return this.previousLevel.level}switch(n){case"north":return this.northLevel;case"east":return this.eastLevel;case"south":return this.southLevel;case"west":return null}}render(n){setMap(this.map);for(let n=0;n<i.screenWidth;n++){if(n===0){addSprite(n,0,(0,a.default)("level-wall-corner-south"));addSprite(n,i.screenHeight-1,(0,a.default)("level-wall-corner-east"))}else if(n===i.screenWidth-1){addSprite(n,0,(0,a.default)("level-wall-corner-west"));addSprite(n,i.screenHeight-1,(0,a.default)("level-wall-corner-north"))}else{addSprite(n,0,(0,a.default)("level-wall-edge-south"));addSprite(n,i.screenHeight-1,(0,a.default)("level-wall-edge-north"))}}for(let n=1;n<i.screenHeight-1;n++){addSprite(0,n,(0,a.default)("level-wall-edge-east"));addSprite(i.screenWidth-1,n,(0,a.default)("level-wall-edge-west"))}if(this.previousLevel!==null){this.renderDoor(this.previousLevel.direction,this.state!=="active")}if(this.northLevel!==null){this.renderDoor("north",this.state==="conquered")}if(this.eastLevel!==null){this.renderDoor("east",this.state==="conquered")}if(this.southLevel!==null){this.renderDoor("south",this.state==="conquered")}if(this.type==="loot"){addSprite(Math.floor(i.screenWidth/2),Math.floor(i.screenHeight/2),(0,a.default)(this.chestOpen?"chest-open":"chest-closed"))}this.enemies.forEach((e=>e.forEach((e=>e.render(n)))))}renderDoor(n,e){switch(n){case"north":{const n=Math.floor(i.screenWidth/2-i.doorWidth/2);getAll((0,a.default)("level-wall-edge-south")).filter((e=>e.x>=n-1&&e.x<n+i.doorWidth+1)).forEach((n=>n.remove()));addSprite(n-1,0,(0,a.default)("level-wall-cap-east"));addSprite(n+i.doorWidth,0,(0,a.default)("level-wall-cap-south"));if(!e){for(let e=n;e<n+i.doorWidth;e++){addSprite(e,0,(0,a.default)("level-door-south"))}}}break;case"west":{const n=Math.floor(i.screenHeight/2-i.doorWidth/2);getAll((0,a.default)("level-wall-edge-east")).filter((e=>e.y>=n-1&&e.y<n+i.doorWidth+1)).forEach((n=>n.remove()));addSprite(0,n-1,(0,a.default)("level-wall-cap-east"));addSprite(0,n+i.doorWidth,(0,a.default)("level-wall-cap-north"));if(!e){for(let e=n;e<n+i.doorWidth;e++){addSprite(0,e,(0,a.default)("level-door-east"))}}}break;case"south":{const n=Math.floor(i.screenWidth/2-i.doorWidth/2);getAll((0,a.default)("level-wall-edge-north")).filter((e=>e.x>=n-1&&e.x<n+i.doorWidth+1)).forEach((n=>n.remove()));addSprite(n-1,i.screenHeight-1,(0,a.default)("level-wall-cap-north"));addSprite(n+i.doorWidth,i.screenHeight-1,(0,a.default)("level-wall-cap-west"));if(!e){for(let e=n;e<n+i.doorWidth;e++){addSprite(e,i.screenHeight-1,(0,a.default)("level-door-north"))}}}break;case"east":{const n=Math.floor(i.screenHeight/2-i.doorWidth/2);getAll((0,a.default)("level-wall-edge-west")).filter((e=>e.y>=n-1&&e.y<n+i.doorWidth+1)).forEach((n=>n.remove()));addSprite(i.screenWidth-1,n-1,(0,a.default)("level-wall-cap-south"));addSprite(i.screenWidth-1,n+i.doorWidth,(0,a.default)("level-wall-cap-west"));if(!e){for(let e=n;e<n+i.doorWidth;e++){addSprite(i.screenWidth-1,e,(0,a.default)("level-door-west"))}}}break}}getState(){return this.state}getEnemies(){return this.enemies.flat()}}e["default"]=r},417:(n,e,t)=>{Object.defineProperty(e,"__esModule",{value:true});e["default"]=s;const i=t(921);const a=t(638);function s(n){const e=n.map((({text:n})=>n)).join("").split("\n");const t=Math.max(...e.map((n=>n.length)))+2;const s=e.length+2;if(t>i.screenWidth||s>i.screenHeight){throw new Error("Menu too large")}for(let n=0;n<i.screenHeight;n++){for(let e=0;e<i.screenWidth;e++){const o=e-Math.floor((i.screenWidth-t)/2);const r=n-Math.floor((i.screenHeight-s)/2);let l=(0,a.default)("light-2");if(o>=0&&o<t&&r>=0&&r<s){if(o===0){l=(0,a.default)(r===0?"menu-background-corner-south":r===s-1?"menu-background-corner-east":"menu-background-edge-east")}else if(o===t-1){l=(0,a.default)(r===0?"menu-background-corner-west":r===s-1?"menu-background-corner-north":"menu-background-edge-west")}else if(r===0){l=(0,a.default)("menu-background-edge-south")}else if(r===s-1){l=(0,a.default)("menu-background-edge-north")}else{l=(0,a.default)("menu-background")}}else if((o===-1||o===t)&&r>=-1&&r<s+1||(r===-1||r===s)&&o>=-1&&o<t+1){l=(0,a.default)("light-0")}else if((o===-2||o===t+1)&&r>=-2&&r<s+2||(r===-2||r===s+1)&&o>=-2&&o<t+2){l=(0,a.default)("light-1")}addSprite(e,n,l)}}clearText();let o=0;let r=0;n.forEach((({text:n,color:l,highlight:h})=>{const u=n.split("\n");u.forEach(((n,u)=>{if(u>0){o=0;r++}const C=e[r].length;if(h){for(let e=0;e<n.length;e++){let l=(0,a.default)("menu-highlight");if(e===0){l=(0,a.default)("menu-highlight-corner-east")}else if(e===n.length-1){l=(0,a.default)("menu-highlight-corner-west")}addSprite(Math.floor((i.screenWidth-t)/2)+Math.floor((t-C)/2)+o+e,Math.floor((i.screenHeight-s)/2)+1+r,l)}}addText(n,{x:Math.floor((i.screenWidth-t)/2)+Math.floor((t-C)/2)+o,y:Math.floor((i.screenHeight-s)/2)+1+r,color:(0,a.getColor)(l)});o+=n.length}))}))}},463:(n,e,t)=>{Object.defineProperty(e,"__esModule",{value:true});const i=t(921);const a=t(638);const s=t(938);const o={shield:1e4,sight:3e4};const r={handgun:{ammo:16,range:4},rifle:{ammo:12,range:12},shotgun:{ammo:18,range:6}};class l{constructor(n,e){this.onEnterDoor=n;this.onDeath=e;this.x=Math.floor(i.screenWidth/2);this.y=Math.floor(i.screenHeight/2);this.direction="east";this.health=6;this.lastAttack={time:0,direction:"north",distance:[-1,-1,-1]};this.powerUps=[];this.ammo={handgun:0,rifle:0,shotgun:0};this.dieTime=null;this.killCount=0;this.applesCollected=0}render(n){addSprite(i.screenWidth-4,i.screenHeight-1,(0,a.default)(this.health>=6?"heart-0":this.health===5?"heart-1":"heart-2"));addSprite(i.screenWidth-3,i.screenHeight-1,(0,a.default)(this.health>=4?"heart-0":this.health===3?"heart-1":"heart-2"));addSprite(i.screenWidth-2,i.screenHeight-1,(0,a.default)(this.health>=2?"heart-0":this.health===1?"heart-1":"heart-2"));addSprite(0,i.screenHeight-1,(0,a.default)(this.getActiveWeapon()==="katana"?"ammo-0-0":`ammo-${Math.floor(this.ammo[this.getActiveWeapon()]/10)}-0`));addSprite(1,i.screenHeight-1,(0,a.default)(this.getActiveWeapon()==="katana"?"ammo-0-1":`ammo-${this.ammo[this.getActiveWeapon()]%10}-1`));let e=0;if(this.ammo.shotgun>0){addSprite(2+e,i.screenHeight-1,(0,a.default)("loot-shotgun-icon"));e++}if(this.ammo.rifle>0){addSprite(2+e,i.screenHeight-1,(0,a.default)("loot-rifle-icon"));e++}if(this.ammo.handgun>0){addSprite(2+e,i.screenHeight-1,(0,a.default)("loot-handgun-icon"));e++}this.powerUps.filter(((n,e)=>this.powerUps.findIndex((e=>e.type===n.type))===e)).forEach(((n,t)=>{addSprite(2+e+t,i.screenHeight-1,(0,a.default)(`loot-${n.type}-potion-icon`))}));if(this.dieTime!==null){if(Date.now()-this.dieTime<500){addSprite(this.x,this.y,(0,a.default)("player-death-0"))}else{addSprite(this.x,this.y,(0,a.default)("player-death-1"))}return}const t=Math.floor(n/300)%2===0?"0":"1";addSprite(this.x,this.y,(0,a.default)(`player-${t}-${this.direction}`));if(Date.now()-this.lastAttack.time<100){addSprite(this.x+(this.lastAttack.direction==="east"?1:this.lastAttack.direction==="west"?-1:0),this.y+(this.lastAttack.direction==="south"?1:this.lastAttack.direction==="north"?-1:0),(0,a.default)(this.getActiveWeapon()==="katana"?`katana-swoosh-${Date.now()-this.lastAttack.time<50?"0":"1"}-${this.lastAttack.direction}`:this.getActiveWeapon()==="shotgun"?`muzzle-flash-3way-${this.lastAttack.direction}`:`muzzle-flash-${this.lastAttack.direction}`));if(this.getActiveWeapon()!=="katana"){for(let n=0;n<3;n++){if(this.getActiveWeapon()!=="shotgun"&&n>0)break;for(let e=0;e<i.screenWidth+i.screenHeight;e++){if(this.lastAttack.distance[n]!==-1&&e>this.lastAttack.distance[n]-2)break;let t;let s;switch(this.lastAttack.direction){case"north":if(n===0){t=this.x;s=this.y-2-e}else{t=this.x+(n===1?-Math.floor(e/2)-1:Math.floor(e/2)+1);s=this.y-2-e}break;case"south":if(n===0){t=this.x;s=this.y+2+e}else{t=this.x-(n===1?-Math.floor(e/2)-1:Math.floor(e/2)+1);s=this.y+2+e}break;case"west":if(n===0){t=this.x-2-e;s=this.y}else{t=this.x-2-e;s=this.y-(n===1?-Math.floor(e/2)-1:Math.floor(e/2)+1)}break;case"east":if(n===0){t=this.x+2+e;s=this.y}else{t=this.x+2+e;s=this.y+(n===1?-Math.floor(e/2)-1:Math.floor(e/2)+1)}break}if(t<1||t>=i.screenWidth-1||s<1||s>=i.screenHeight-1)break;addSprite(t,s,(0,a.default)(n===0?`bullet-path-${e===0?"0":e===1?"1":"2"}-${this.lastAttack.direction}`:`bullet-path-angled-${e===0?"0a":e===1?"1b":e%2===0?"2a":"2b"}-${e>=2?n===1?"north":"south":n===1?"south":"north"}-${e>=2?n===1?this.lastAttack.direction:this.oppositeDirection(this.lastAttack.direction):n===1?this.oppositeDirection(this.lastAttack.direction):this.lastAttack.direction}`))}}}}if(this.powerUps.some((n=>n.type==="shield"))){if(Math.max(...this.powerUps.filter((n=>n.type==="shield")).map((n=>n.time)))+o["shield"]-Date.now()>3e3||Math.floor(n/150)%2===0){addSprite(this.x,this.y,(0,a.default)("shield"))}}const s=this.powerUps.some((n=>n.type==="sight"))&&(Math.max(...this.powerUps.filter((n=>n.type==="sight")).map((n=>n.time)))+o["sight"]-Date.now()>5e3||Math.floor(n/750)%2===0);for(let n=0;n<i.screenHeight;n++){for(let e=0;e<i.screenWidth;e++){const t=Math.sqrt((this.x-e)**2+(this.y-n)**2);if(t>=(s?9:2.5)){if(t<(s?14:7)){addSprite(e,n,(0,a.default)("light-0"))}else if(t<(s?20:9)){addSprite(e,n,(0,a.default)("light-1"))}else if(t<(s?26:11)){addSprite(e,n,(0,a.default)("light-2"))}else{addSprite(e,n,(0,a.default)("light-3"))}}}}}oppositeDirection(n){switch(n){case"north":return"south";case"south":return"north";case"west":return"east";case"east":return"west"}}move(n){if(n==="north"){this.y--;this.direction="north"}else if(n==="south"){this.y++;this.direction="south"}else if(n==="west"){this.x--;this.direction="west"}else if(n==="east"){this.x++;this.direction="east"}const e=Math.floor(i.screenWidth/2-i.doorWidth/2);const t=Math.floor(i.screenHeight/2-i.doorWidth/2);if(this.x<=0&&this.y>=t&&this.y<t+i.doorWidth){this.onEnterDoor("west")}else if(this.x>=i.screenWidth-1&&this.y>=t&&this.y<t+i.doorWidth){this.onEnterDoor("east")}else if(this.y<=0&&this.x>=e&&this.x<e+i.doorWidth){this.onEnterDoor("north")}else if(this.y>=i.screenHeight-1&&this.x>=e&&this.x<e+i.doorWidth){this.onEnterDoor("south")}if(this.x<1){this.x=1}if(this.x>i.screenWidth-2){this.x=i.screenWidth-2}if(this.y<1){this.y=1}if(this.y>i.screenHeight-2){this.y=i.screenHeight-2}(0,s.default)("move")}update(n){const e=n.find((n=>{if(n.getState()!=="dead"||n.getLoot()===null)return false;const e=n.getPosition();return e.x===this.x&&e.y===this.y}))??null;if(e!==null){const n=e.getLoot();e.collectLoot();(0,s.default)("pickup");switch(n){case"apple":this.applesCollected++;break;case"shield-potion":this.powerUps.push({type:"shield",time:Date.now()});break;case"sight-potion":this.powerUps.push({type:"sight",time:Date.now()});break;case"health-potion":this.health++;if(this.health>6){this.health=6}break;case"handgun":case"rifle":case"shotgun":this.ammo[n]+=r[n].ammo;if(this.ammo[n]>99){this.ammo[n]=99}break}}this.powerUps=this.powerUps.filter((n=>o[n.type]===-1||Date.now()-n.time<o[n.type]))}hit(){if(this.powerUps.some((n=>n.type==="shield"))){return}this.health--;(0,s.default)("hurt");if(this.health<=0){this.dieTime=Date.now();this.onDeath()}}teleport(n){switch(n){case"north":this.y=i.screenHeight-2;break;case"south":this.y=1;break;case"west":this.x=i.screenWidth-2;break;case"east":this.x=1;break}}attack(n,e){if(this.getActiveWeapon()==="katana"&&Date.now()-this.lastAttack.time<250)return;if(this.getActiveWeapon()!=="katana"){this.ammo[this.getActiveWeapon()]--}this.direction=n;const t=this.getActiveWeapon()==="katana"?1:r[this.getActiveWeapon()].range;this.lastAttack={time:Date.now(),direction:n,distance:[t,t,t]};(0,s.default)(this.getActiveWeapon()==="katana"?"katana-swoosh":`shoot-${this.getActiveWeapon()}`);let a=[[],[],[]];e.forEach((e=>{if(e.getState()!=="spawning"&&e.getState()!=="active")return;const t=e.getPosition();switch(n){case"north":if(t.x===this.x&&t.y<=this.y){a[0].push(e)}break;case"south":if(t.x===this.x&&t.y>=this.y){a[0].push(e)}break;case"west":if(t.y===this.y&&t.x<=this.x){a[0].push(e)}break;case"east":if(t.y===this.y&&t.x>=this.x){a[0].push(e)}break}if(this.getActiveWeapon()==="shotgun"){for(let s=0;s<i.screenWidth+i.screenHeight;s++){switch(n){case"north":if(t.x===this.x-Math.floor(s/2)&&t.y===this.y-s){a[1].push(e)}if(t.x===this.x+Math.floor(s/2)&&t.y===this.y-s){a[2].push(e)}break;case"south":if(t.x===this.x+Math.floor(s/2)&&t.y===this.y+s){a[1].push(e)}if(t.x===this.x-Math.floor(s/2)&&t.y===this.y+s){a[2].push(e)}break;case"west":if(t.x===this.x-s&&t.y===this.y+Math.floor(s/2)){a[1].push(e)}if(t.x===this.x-s&&t.y===this.y-Math.floor(s/2)){a[2].push(e)}break;case"east":if(t.x===this.x+s&&t.y===this.y-Math.floor(s/2)){a[1].push(e)}if(t.x===this.x+s&&t.y===this.y+Math.floor(s/2)){a[2].push(e)}break}}}}));a.forEach((e=>e.sort(((e,t)=>{const i=e.getPosition();const a=t.getPosition();switch(n){case"north":return a.y-i.y;case"south":return i.y-a.y;case"west":return a.x-i.x;case"east":return i.x-a.x}}))));for(let e=0;e<3;e++){if(a[e].length===0){continue}let t=0;switch(n){case"north":t=this.y-a[e][0].getPosition().y;break;case"south":t=a[e][0].getPosition().y-this.y;break;case"west":t=this.x-a[e][0].getPosition().x;break;case"east":t=a[e][0].getPosition().x-this.x;break}const i=this.getActiveWeapon()==="katana"?1:r[this.getActiveWeapon()].range;if(t<=i){this.lastAttack.distance[e]=t;if(a[e][0].hit()){this.killCount++}(0,s.default)("hit")}}}getActiveWeapon(){let n="katana";Object.keys(r).forEach((e=>{if(this.ammo[e]>0){n=e}}));return n}getKillCount(){return this.killCount}getApplesCollected(){return this.applesCollected}getPosition(){return{x:this.x,y:this.y}}}e["default"]=l},638:(n,e)=>{Object.defineProperty(e,"__esModule",{value:true});e.getColor=i;e["default"]=C;const t={BLACK:"0",DARK_GRAY:"L",LIGHT_GRAY:"1",WHITE:"2",RED:"3",BROWN:"C",CYAN:"7",BLUE:"5",YELLOW:"6",DARK_YELLOW:"F",GREEN:"4",DARK_GREEN:"D",PINK:"8",PURPLE:"H",ORANGE:"9",TRANSPARENT:"."};function i(n){return t[n]}const a=[...o("menu-highlight-corner",`\n..11111111111111\n.111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n.111111111111111\n..11111111111111`),{name:"menu-highlight",bitmap:`\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111\n1111111111111111`},...r("menu-background-edge",`\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\nLLLLLLLLLLLLLLLL\n0000000000000000\n0000000000000000`),...r("menu-background-corner",`\n2222222222222L00\n2222222222222L00\n2222222222222L00\n2222222222222L00\n2222222222222L00\n2222222222222L00\n2222222222222L00\n2222222222222L00\n222222222222L000\n222222222222L000\n222222222222L000\n22222222222L000.\n22222222LLL0000.\nLLLLLLLL0000000.\n00000000000000..\n00000000000.....`),{name:"menu-background",bitmap:`\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222\n2222222222222222`},{name:"heart-0",bitmap:`\n................\n................\n................\n................\n................\n................\n.00.00..........\n0330330..00.00..\n0333330.0330330.\n0333330.0333330.\n.03330..0333330.\n..030....03330..\n...0......030...\n...........0....\n................\n................`},{name:"heart-1",bitmap:`\n................\n................\n................\n................\n................\n................\n.00.00..........\n0110110..00.00..\n0111110.0330330.\n0111110.0333330.\n.01110..0333330.\n..010....03330..\n...0......030...\n...........0....\n................\n................`},{name:"heart-2",bitmap:`\n................\n................\n................\n................\n................\n................\n.00.00..........\n0110110..00.00..\n0111110.0110110.\n0111110.0111110.\n.01110..0111110.\n..010....01110..\n...0......010...\n...........0....\n................\n................`},{name:"ammo-0-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........222..\n..........22222.\n..........22.22.\n..........2...2.\n..........2...2.\n..........22.22.\n..........22222.\n...........222..\n................\n................`},{name:"ammo-1-0",bitmap:`\n................\n................\n................\n................\n................\n................\n............22..\n...........222..\n..........2222..\n..........2.22..\n............22..\n............22..\n............22..\n..........22222.\n................\n................`},{name:"ammo-2-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........222..\n..........22.22.\n..........2...2.\n.............22.\n............22..\n...........22...\n..........22..2.\n..........22222.\n................\n................`},{name:"ammo-3-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........222..\n..........22.22.\n..............2.\n............222.\n.............22.\n..........2...2.\n..........22.22.\n...........222..\n................\n................`},{name:"ammo-4-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........2....\n..........22....\n..........2.....\n..........22.2..\n...........2222.\n.............2..\n.............2..\n...........2222.\n................\n................`},{name:"ammo-5-0",bitmap:`\n................\n................\n................\n................\n................\n................\n..........22222.\n..........2.....\n..........2.....\n..........2222..\n.............22.\n..............2.\n..........2..22.\n..........2222..\n................\n................`},{name:"ammo-6-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........2222.\n..........22....\n..........2.....\n..........2222..\n..........22.22.\n..........2...2.\n..........22.22.\n...........222..\n................\n................`},{name:"ammo-7-0",bitmap:`\n................\n................\n................\n................\n................\n................\n..........22222.\n..........2...2.\n.............22.\n............22..\n............2...\n...........22...\n..........22....\n..........2.....\n................\n................`},{name:"ammo-8-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........222..\n..........22.22.\n..........22.22.\n...........222..\n..........22.22.\n..........2...2.\n..........22.22.\n...........222..\n................\n................`},{name:"ammo-9-0",bitmap:`\n................\n................\n................\n................\n................\n................\n...........222..\n..........22.22.\n..........2...2.\n..........22.22.\n...........2222.\n..............2.\n.............22.\n...........222..\n................\n................`},{name:"ammo-0-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..222...........\n.22222..........\n.22.22..........\n.2...2..........\n.2...2..........\n.22.22..........\n.22222..........\n..222...........\n................\n................`},{name:"ammo-1-1",bitmap:`\n................\n................\n................\n................\n................\n................\n...22...........\n..222...........\n.2222...........\n.2.22...........\n...22...........\n...22...........\n...22...........\n.22222..........\n................\n................`},{name:"ammo-2-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..222...........\n.22.22..........\n.2...2..........\n....22..........\n...22...........\n..22............\n.22..2..........\n.22222..........\n................\n................`},{name:"ammo-3-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..222...........\n.22.22..........\n.....2..........\n...222..........\n....22..........\n.2...2..........\n.22.22..........\n..222...........\n................\n................`},{name:"ammo-4-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..2.............\n.22.............\n.2..............\n.22.2...........\n..2222..........\n....2...........\n....2...........\n..2222..........\n................\n................`},{name:"ammo-5-1",bitmap:`\n................\n................\n................\n................\n................\n................\n.22222..........\n.2..............\n.2..............\n.2222...........\n....22..........\n.....2..........\n.2..22..........\n.2222...........\n................\n................`},{name:"ammo-6-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..2222..........\n.22.............\n.2..............\n.2222...........\n.22.22..........\n.2...2..........\n.22.22..........\n..222...........\n................\n................`},{name:"ammo-7-1",bitmap:`\n................\n................\n................\n................\n................\n................\n.22222..........\n.2...2..........\n....22..........\n...22...........\n...2............\n..22............\n.22.............\n.2..............\n................\n................`},{name:"ammo-8-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..222...........\n.22.22..........\n.22.22..........\n..222...........\n.22.22..........\n.2...2..........\n.22.22..........\n..222...........\n................\n................`},{name:"ammo-9-1",bitmap:`\n................\n................\n................\n................\n................\n................\n..222...........\n.22.22..........\n.2...2..........\n.22.22..........\n..2222..........\n.....2..........\n....22..........\n..222...........\n................\n................`},{name:"loot-shotgun-icon",bitmap:`\n................\n................\n................\n............2002\n..........200110\n........20011102\n......200111002.\n....200111002...\n..20011100CC0...\n..0C0100CC002...\n.20CC020002.....\n.0CCC002.2......\n20CC02..........\n20CC02..........\n.2002...........\n................`},{name:"loot-rifle-icon",bitmap:`\n................\n.............02.\n...........2010.\n...........0102.\n.........2010...\n......2000102...\n.....2020002....\n....202000L02...\n....020000LL0...\n...20000020L02..\n..22000002.02...\n.200000L...2....\n20L0000L2.......\n.0LL0000L.......\n.2002200L2......\n..22..2.2.......`},{name:"loot-handgun-icon",bitmap:`\n................\n................\n................\n................\n....2.2..2..2...\n...200000000002.\n..0.011111111102\n...0110111111110\n..20000000000000\n..00000000000002\n.200002..2..2.2.\n2000002.........\n.00002..........\n.2000...........\n...2............\n................`},{name:"loot-sight-potion-icon",bitmap:`\n................\n................\n................\n......2.2.......\n.....200002.....\n.....02..20.....\n.....200002.....\n......0..0......\n.....20..02.....\n....20444402....\n....04444D40....\n....04444440....\n....04D44440....\n....2044D402....\n.....200002.....\n.......2........`},{name:"loot-shield-potion-icon",bitmap:`\n................\n................\n................\n.......2........\n.....200002.....\n....202..202....\n.....200002.....\n......0..0......\n......0..0......\n....20777702....\n....075777702...\n...2077775702...\n....07757770....\n....20777702....\n.....200002.....\n.......2.2......`},{name:"light-0",bitmap:`\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0\n................\n.0.0.0.0.0.0.0.0`},{name:"light-1",bitmap:`\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0\n0.0.0.0.0.0.0.0.\n.0.0.0.0.0.0.0.0`},{name:"light-2",bitmap:`\n0.0.0.0.0.0.0.0.\n.000.000.000.000\n0.0.0.0.0.0.0.0.\n00.000.000.000.0\n0.0.0.0.0.0.0.0.\n.000.000.000.000\n0.0.0.0.0.0.0.0.\n00.000.000.000.0\n0.0.0.0.0.0.0.0.\n.000.000.000.000\n0.0.0.0.0.0.0.0.\n00.000.000.000.0\n0.0.0.0.0.0.0.0.\n.000.000.000.000\n0.0.0.0.0.0.0.0.\n00.000.000.000.0`},{name:"light-3",bitmap:`\n.000.000.000.000\n0000000000000000\n00.000.000.000.0\n0000000000000000\n.000.000.000.000\n0000000000000000\n00.000.000.000.0\n0000000000000000\n.000.000.000.000\n0000000000000000\n00.000.000.000.0\n0000000000000000\n.000.000.000.000\n0000000000000000\n00.000.000.000.0\n0000000000000000`},...r("katana-swoosh-0",`\n................\n................\n................\n................\n......1L22.2....\n......1L222222..\n......1L222.2.2.\n......1L22.2.22.\n.......1L22.2...\n.......1L2.2....\n.......1L2222.2.\n.......1L22222..\n........1L22..2.\n........1L222...\n........1L2..2..\n........1L22.2..`),...r("katana-swoosh-1",`\n................\n................\n................\n................\n................\n......2.........\n..2.2...........\n.22..2..........\n22..2...........\n.2222..2........\nL..222...2......\n1L22.222........\n.1L.222..2......\n..1L22.2.2......\n...1L222........\n....1L2.2.......`),...r("muzzle-flash",`\n.......336......\n......6336......\n.....663396.....\n.....693396.....\n.....693396.....\n.....693396.....\n.....693396.....\n.....6933966....\n....66933996....\n....69933996....\n....699339966...\n...6999339996...\n...6993333996...\n....69333396....\n....69333396....\n.....693396.....`),...r("muzzle-flash-3way",`\n33.....336....33\n336....336..6933\n6336...336..6336\n63396..339..933.\n.9339.633969339.\n.63396933969336.\n.6933993399339..\n..933993399339..\n..693393393396..\n..693393393396..\n...6933333396...\n...6933333396...\n...6993333996...\n....69333396....\n....69333396....\n.....693396.....`),...r("bullet-path-0",`\n.......93.......\n.......39.......\n........9.......\n.......3........\n.......33.......\n........3.......\n.......93.......\n.......33.......\n.......39.......\n.......33.......\n.......93.......\n........3.......\n.......33.......\n.......33.......\n.......33.......\n.......33.......`),...r("bullet-path-1",`\n.......6........\n.......96.......\n.......66.......\n........6.......\n.......9........\n.......69.......\n.......6........\n.......9........\n........9.......\n.......96.......\n........9.......\n.......99.......\n.......99.......\n................\n.......3........\n.......99.......`),...r("bullet-path-2",`\n................\n.......6........\n.......6........\n................\n........6.......\n.......6........\n........6.......\n................\n........6.......\n.......6........\n................\n.......6........\n.......6........\n................\n........6.......\n.......66.......`),...s("bullet-path-angled-0a",`\n.......99.......\n........3.......\n......39........\n.......9........\n.....33.........\n.....93.........\n....33..........\n....33..........\n...33...........\n...3............\n..39............\n..33............\n.33.............\n.33.............\n33..............\n33..............`).map((n=>r(n.name,n.bitmap))).flat(),...s("bullet-path-angled-1b",`\n...............6\n...............9\n..............6.\n..............66\n.............9..\n..............6.\n............6...\n............96..\n............9...\n...........9....\n..........96....\n..........6.....\n..........9.....\n..........3.....\n.........9......\n........99......`).map((n=>r(n.name,n.bitmap))).flat(),...s("bullet-path-angled-2a",`\n.......66.......\n................\n........6.......\n........6.......\n.........6......\n.........6......\n..........66....\n...........6....\n................\n............6...\n............66..\n.............6..\n................\n.............66.\n..............66\n...............6`).map((n=>r(n.name,n.bitmap))).flat(),...s("bullet-path-angled-2b",`\n6...............\n6...............\n................\n.6..............\n.6..............\n..6.............\n..6.............\n...6............\n................\n...66...........\n.....6..........\n................\n.....66.........\n.....6..........\n.......6........\n.......6........`).map((n=>r(n.name,n.bitmap))).flat(),{name:"shield",bitmap:`\n.....555555.....\n...5577777755...\n..577..7...775..\n.57..7..7.7..75.\n57..7.....77..75\n57............75\n577.........7775\n577..7.7.....775\n57......7.....75\n57.7....7..7..75\n57..7.......7.75\n.577.....77..75.\n.57...7..7..775.\n..577..7...775..\n...5577777755...\n.....555555.....`},...o("player-0",`\n......0000......\n....00CCCC00....\n....0CCCCCC0....\n...0CCCCCCCC0...\n...0CCCCCCCC0...\n...0CCCC66C0....\n...0C0C66060....\n....06066060....\n.....0666660....\n.....000000.....\n.....07060......\n....070000......\n....077660......\n.....00000......\n......0550......\n......0660......`),...o("player-1",`\n....00000000....\n....0CCCCCC0....\n...0CCCCCCCC0...\n...0CCCCCCCC0...\n...0CCCC66C0....\n...0C0C66060....\n....06066060....\n.....0666660....\n.....000000.....\n.....07060......\n....070000......\n....070770......\n....077660......\n.....00000......\n......0550......\n......0660......`),{name:"player-0-north",bitmap:`\n.......000......\n.....00CCC00....\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n...06CCCCCCC60..\n....0CCCCCCC0...\n....006666600...\n...07700000770..\n..0777777777770.\n..0770777770770.\n..0660000000660.\n...00055555000..\n.....0550550....\n.....0660660....`},{name:"player-1-north",bitmap:`\n.....0000000....\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n...06CCCCCCC60..\n....0CCCCCCC0...\n....006666600...\n...07700000770..\n..0777777777770.\n..0777777777770.\n..0770777770770.\n..0660000000660.\n...00055555000..\n.....0550550....\n.....0660660....`},{name:"player-0-south",bitmap:`\n.......000......\n.....00CCC00....\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0C66C66C0...\n...06606660660..\n....060666060...\n....006666600...\n...07700000770..\n..0777766677770.\n..0770777770770.\n..0660000000660.\n...00055555000..\n.....0550550....\n.....0660660....`},{name:"player-1-south",bitmap:`\n.....0000000....\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0CCCCCCC0...\n....0C66C66C0...\n...06606660660..\n....060666060...\n....006666600...\n...07700000770..\n..0777766677770.\n..0770777770770.\n..0770777770770.\n..0660000000660.\n...00055555000..\n.....0550550....\n.....0660660....`},{name:"player-death-0",bitmap:`\n................\n................\n................\n................\n................\n.....00000......\n....0CCCCC0.....\n...0CCCCCCC0....\n...0CC666CC0....\n...0CF0606C0....\n....0CCFCC0.....\n....07CCCC0.....\n...050LLLLL0....\n...0F00000060...\n...0F0C0CC060...\n....00000000....`},{name:"player-death-1",bitmap:`\n................\n................\n................\n................\n................\n................\n................\n................\n.....00000......\n....0CCCCC0.....\n...0CCCCCCC0....\n...0CFFFFFC0....\n...0CC0F0CC0....\n..075CCCCC550...\n..0F5775577F0...\n..0CCC007CCC0...`},{name:"enemy-spawn-0",bitmap:`\n.......222......\n.....222222.....\n....2.22.222....\n...2222222222...\n...222222222....\n..2222.2222222..\n..222222222222..\n.22222222222222.\n.2222222222.222.\n.22222222222222.\n..2222222222222.\n.22222222222222.\n..222.22222222..\n..2222222222.2..\n...2222222222...\n....2222.222....`},{name:"enemy-spawn-1",bitmap:`\n.......2.2......\n.....222222.....\n.2..2.22.2.2....\n...22.222.2222..\n....2222.222....\n...222.222.22...\n..22.22.22222.2.\n..2222222.22....\n..222.2.222.22..\n..22..22222222..\n...222.222222...\n..222222.22.2...\n....2.222222....\n.....22.2.2..2..\n......22.2......\n................`},{name:"enemy-spawn-2",bitmap:`\n..2.2..2.2..2...\n.....2...22.....\n.2..2.22.2.2....\n....2..22.222.2.\n....2..2...2....\n.......22...2...\n..22..2.2.222...\n...22.2...22...2\n......2.222.2...\n......2.2..2....\n....2...........\n................\n................\n................\n................\n................`},{name:"loot-shotgun-0",bitmap:`\n................\n................\n................\n............00..\n..........00110.\n........001110..\n......0011100...\n....0011100.....\n..0011100CC0....\n.0C0100CC00.....\n.0CC0.000.......\n0CCC00..........\n0CC0............\n0CC0............\n.00.............\n................`},{name:"loot-shotgun-1",bitmap:`\n................\n............00..\n..........00110.\n........001110..\n......0011100...\n....0011100.....\n..0011100CC0....\n.0C0100CC00.....\n.0CC0.000.......\n0CCC00..........\n0CC0............\n0CC0............\n.00.............\n................\n................\n................`},{name:"loot-rifle-0",bitmap:`\n................\n................\n.............0..\n............010.\n...........010..\n..........010...\n.......00010....\n......0.000.....\n.....0.000L0....\n....0.0000LL0...\n....00000.0L0...\n....00000..0....\n..00000L........\n.0L0000L........\n.0LL0000L.......\n..00..00L.......`},{name:"loot-rifle-1",bitmap:`\n.............0..\n............010.\n...........010..\n..........010...\n.......00010....\n......0.000.....\n.....0.000L0....\n....0.0000LL0...\n....00000.0L0...\n....00000..0....\n..00000L........\n.0L0000L........\n.0LL0000L.......\n..00..00L.......\n................\n................`},{name:"loot-handgun-0",bitmap:`\n................\n................\n................\n................\n................\n....0000000000..\n..0.01111111110.\n...0110111111110\n...0000000000000\n..0000000000000.\n..0000..........\n.00000..........\n.0000...........\n..000...........\n................\n................`},{name:"loot-handgun-1",bitmap:`\n................\n................\n................\n....0000000000..\n..0.01111111110.\n...0110111111110\n...0000000000000\n..0000000000000.\n..0000..........\n.00000..........\n.0000...........\n..000...........\n................\n................\n................\n................`},{name:"loot-health-potion-0",bitmap:`\n................\n................\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....03333330....\n...0339333330...\n...0333333330...\n...0333933330...\n....03333930....\n.....000000.....`},{name:"loot-health-potion-1",bitmap:`\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....03333330....\n...0339333330...\n...0333333330...\n...0333933330...\n....03333930....\n.....000000.....\n................\n................`},{name:"loot-sight-potion-0",bitmap:`\n................\n................\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....04444440....\n...04D4444440...\n...0444444D40...\n...044D444440...\n....04444440....\n.....000000.....`},{name:"loot-sight-potion-1",bitmap:`\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....04444440....\n...044D444440...\n...0444444D40...\n...0444D44440...\n....04444440....\n.....000000.....\n................\n................`},{name:"loot-shield-potion-0",bitmap:`\n................\n................\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....07777770....\n...0757777770...\n...0777757770...\n...0775777570...\n....07777770....\n.....000000.....`},{name:"loot-shield-potion-1",bitmap:`\n................\n................\n.....000000.....\n....0......0....\n.....000000.....\n......0..0......\n......0..0......\n.....0....0.....\n....07777770....\n...0777777570...\n...0577577770...\n...0777777770...\n....07777570....\n.....000000.....\n................\n................`},{name:"loot-apple-0",bitmap:`\n................\n................\n................\n................\n................\n................\n................\n.......000......\n......044D0.....\n.....04D00......\n....0333330.....\n...033333330....\n...033333330....\n....0330330.....\n.....00.00......\n................`},{name:"loot-apple-1",bitmap:`\n................\n................\n................\n................\n................\n.......000......\n......044D0.....\n.....04D00......\n....0333330.....\n...033333330....\n...033333330....\n....0330330.....\n.....00.00......\n................\n................\n................`},{name:"chest-closed",bitmap:`\n................\n................\n................\n................\n................\n................\n..222222222222..\n.2CCCCLCCCCLC22.\n.2CLCCCCCLCC2C2.\n2CCCC22CCCCC2C22\n2CLCCCCLCCC2C2C2\n2222222222222CL2\n2CCLCCCCCLC2CCC2\n2CCCCCLCCCC2CLC2\n2CLCCCCCCCC2C22.\n2222222222222...`},{name:"chest-open",bitmap:`\n................\n................\n................\n.2222222222222..\n2CCCCCCCLCCC2C2.\n2CCLCCCCCCC2CL2.\n222222222222CCC2\n.2LLLLLLLLLL22C2\n..2LLLLLLLLLLL22\n..22222222222222\n.2LLLLLLLLLLL2C2\n2222222222222CL2\n2CCLCCCCCLC2CCC2\n2CCCCCLCCCC2CLC2\n2CLCCCCCCCC2C22.\n2222222222222...`},...o("boss-0-0",`\n................\n................\n.......000......\n......08D40.....\n.....08DDD40....\n.....0DDD2D0....\n.....0DDD2D0....\n......04DDD0....\n......00000.....\n.....0H3H0......\n.....033H30.....\n.....03H3H0.....\n.....030030.....\n....030DD0......\n....0H04D0......\n....0H3000......`),...o("boss-0-1",`\n....0H3000......\n....03HH330.....\n....0333HH0.....\n.....0HH330.....\n.....03H330.....\n....033HH0......\n....03H3330.....\n....03H33H0.....\n....0H3HH30.....\n....0H33H30.....\n....03H330......\n.....0000.......\n.....0D40.......\n.....0DD40......\n.....04DD0......\n......000.......`),...o("boss-1-0",`\n................\n.......000......\n......08D40.....\n.....08DDD40....\n.....0DDD2D0....\n.....0DDD2D0....\n......04DDD0....\n......00000.....\n.....0H3H0......\n.....033H30.....\n.....03H3H0.....\n.....030030.....\n....030DD0......\n....0H04D0......\n....0H3000......\n....0H3000......`),...o("boss-1-1",`\n....03HH330.....\n....0333HH0.....\n.....0HH330.....\n.....03H330.....\n....033HH0......\n....03H3330.....\n....03H33H0.....\n....0H3HH30.....\n....0H33H30.....\n....03H3330.....\n....00H300......\n.....0000.......\n.....0D40.......\n.....0DD40......\n.....04DD0......\n......000.......`),{name:"boss-0-0-north",bitmap:`\n................\n......00000.....\n.....0888440....\n....0888DDDD0...\n....08DDDDDD0...\n....0DDDDDD40...\n....04DDDDD40...\n.....0DDDD40....\n...00000000000..\n..03HHH33HH33H0.\n..0H33H33333HH0.\n.0H33333HH333H30\n.03H0H33H33303H0\n.03303H33HH303H0\n..000H33H33H000.\n.0D403H33H3H0D40`},{name:"boss-0-1-north",bitmap:`\n.0D403H3333H04D0\n.0DD0H333H3304D0\n..00.033H330.00.\n....033H3HH30...\n....0H33333H0...\n...03H3H333330..\n...0H3H3HH33H0..\n...0H3H3033H30..\n...03H33033HH0..\n...033H0.0H330..\n...00030.03000..\n....0DD0.04D0...\n....0440.04D0...\n....04D0.0D40...\n....0DD0.0440...\n.....00...00....`},{name:"boss-1-0-north",bitmap:`\n......00000.....\n.....0888440....\n....0888DDDD0...\n....08DDDDDD0...\n....0DDDDDD40...\n....04DDDDD40...\n.....0DDDD40....\n...00000000000..\n..03HHH33HH33H0.\n..0H33H33333HH0.\n.0H33333HH333H30\n.03H0H33H33303H0\n.03303H33HH303H0\n..000H33H33H000.\n.0D403H33H3H0D40\n.0D403H3333H04D0`},{name:"boss-1-1-north",bitmap:`\n.0DD0H333H3304D0\n..00.033H330.00.\n....033H3HH30...\n....0H33333H0...\n...03H3H333330..\n...0H3H3HH33H0..\n...0H3H3033H30..\n...03H33033HH0..\n...033H0.0H330..\n...00030.03000..\n....0DD0.04D0...\n....0440.04D0...\n....04D0.0D40...\n....04D0.0D40...\n....0DD0.0440...\n.....00...00....`},{name:"boss-0-0-south",bitmap:`\n................\n......00000.....\n.....04D8880....\n....04DDD8880...\n....0DDDDDD80...\n....0DD2DD2D0...\n....04D2DD2D0...\n.....0DDDDD0....\n...0000D4D0000..\n..03H33000HH330.\n..03H33H33H3H30.\n.0HH33H33H333H30\n.0H303HH333H0H30\n.033033333H303H0\n..0003HH3HH3000.\n.04D0H33333H0D40`},{name:"boss-0-1-south",bitmap:`\n.0D40HH33H3H04D0\n.0D403HH33H30440\n..00.033H3H0.00.\n....033H33H30...\n....033HH33H0...\n...0HH33HH3H30..\n...0H333HH3H30..\n...03HH30HH3H0..\n..0333H30333HH0.\n..0HH3H0.0HH330.\n..030030.030030.\n...00D40.0DD00..\n....0DD0.0440...\n...044D0.04DD0..\n...04DD0.04D40..\n....000...000...`},{name:"boss-1-0-south",bitmap:`\n......00000.....\n.....04D8880....\n....04DDD8880...\n....0DDDDDD80...\n....0DD2DD2D0...\n....04D2DD2D0...\n.....0DDDDD0....\n...0000D4D0000..\n..03H33000HH330.\n..03H33H33H3H30.\n.0HH33H33H333H30\n.0H303HH333H0H30\n.033033333H303H0\n..0003HH3HH3000.\n.04D0H33333H0D40\n.0D40HH33H3H04D0`},{name:"boss-1-1-south",bitmap:`\n.0D403HH33H30440\n..00.033H3H0.00.\n....033H33H30...\n....033HH33H0...\n...0HH33HH3H30..\n...0H333HH3H30..\n...03HH30HH3H0..\n..0333H30333HH0.\n..0HH3H0.0HH330.\n..03H330.033H30.\n...00000.00000..\n....0DD0.0D40...\n....0DD0.0440...\n...044D0.04DD0..\n...04DD0.04D40..\n....000...000...`},{name:"boss-death-0",bitmap:`\n.....000L0......\n....0DLD880.....\n....04LD180.....\n.....01D10......\n....0000000.....\n...0HL3HLH30....\n...L30H330L0....\n...0D0L3L0D0....\n....0H3H3H0.....\n...LH3H3HL30....\n...03LH0H3L0....\n...0HH3L3H30....\n....0000000.....\n...L0D0.0D00....\n..0DL40.0DLL0...\n...000...000....`},{name:"boss-death-1",bitmap:`\n................\n................\n................\n................\n................\n................\n.....0000L0.....\n....04LDDD80....\n....0D1DD140....\n.....01DL10.....\n....L000000L0...\n...0H3HL3L3H30..\n...0D033H3H0D0..\n....0L3003L30...\n....00DD0L0D0...\n.....0000000....`},...o("enemy-0",`\n................\n.......000......\n......0D880.....\n.....0DDDD80....\n.....0DDD2D0....\n.....0DDDDD0....\n......00DDD0....\n.....004900.....\n.....04D9C00....\n.....0DDD990....\n.....094DDC0....\n.....09C4D90....\n.....099CC90....\n......0C99C0....\n......00DD0.....\n.......0000.....`),...o("enemy-1",`\n.......000......\n......0D880.....\n.....0DDDD80....\n.....0DDD2D0....\n.....0DDDDD0....\n......00DDD0....\n.....004900.....\n.....04D9C00....\n.....0DDD990....\n.....0CDD9C0....\n.....094DDC0....\n.....09C4D90....\n.....099CC90....\n......0C99C0....\n......00DD0.....\n.......0000.....`),{name:"enemy-0-north",bitmap:`\n................\n......0000......\n.....088DD0.....\n....088DDDD0....\n....0DDDDDD0....\n....0DD4DDD0....\n.....0DDDD0.....\n....00099000....\n...04C9C9C9D0...\n..0DD9C99C9D40..\n..04DC99C99440..\n..0D09CC9CC0D0..\n...00D99C9900...\n....04D99DD0....\n....04D004D0....\n.....00..00.....`},{name:"enemy-1-north",bitmap:`\n......0000......\n.....088DD0.....\n....088DDDD0....\n....0DDDDDD0....\n....0DD4DDD0....\n.....0DDDD0.....\n....00099000....\n...049CC99CD0...\n..0DDC9C9C9D40..\n..0449C99C9D40..\n..04DC99C99440..\n...009CC9CC00...\n....0D99C990....\n....04D99DD0....\n....04D004D0....\n.....00..00.....`},{name:"enemy-0-south",bitmap:`\n................\n......0000......\n.....0DD880.....\n....0DDDDD80....\n....0DD2D2D0....\n....0DD2D2D0....\n.....0DD4D0.....\n....0009C000....\n...04CC99CCD0...\n..04D99C9C94D0..\n..0DD9C9C994D0..\n..0D0C999CC0D0..\n...004CC99C00...\n....04DC9DD0....\n....0DD004D0....\n.....00..00.....`},{name:"enemy-1-south",bitmap:`\n......0000......\n.....0DD880.....\n....0DDDDD80....\n....0DD2D2D0....\n....0DD2D2D0....\n.....0DD4D0.....\n....00099000....\n...04C99C99D0...\n..04DCC99CCDD0..\n..04D99C9C94D0..\n..0DD9C9C994D0..\n...00C999CC00...\n....04CC99C0....\n....04DC9DD0....\n....0DD004D0....\n.....00..00.....`},{name:"enemy-death-0",bitmap:`\n................\n................\n................\n................\n................\n......0000......\n.....0DL880.....\n....0DLDDL80....\n....0DD1D1D0....\n....00LDDD00....\n...04CC99CLD0...\n..0LD9LC9L94D0..\n..04LC999CCLL0..\n..0D04CL99C0D0..\n...00DLD04D00...\n....00000000....`},{name:"enemy-death-1",bitmap:`\n................\n................\n................\n................\n................\n................\n................\n................\n................\n......00000.....\n.....0DLD880....\n...00L91D1000...\n..0DLCCC9CLDL0..\n..0LDC9LCC9LDL..\n..00LDC90LDD00..\n...0000000000...`},...r("level-door",`\n................\n................\n................\n................\n................\n................\n................\n................\n..0000....0000..\n.0CCLC0..0CCCC0.\n0CCCCCC00CCLCLC0\n0CLCCCC00CCCCCC0\n0CCCCLC00CLCCCC0\n0CCCCCC00CCCCLC0\n.0CCLC0..0CCCC0.\n..0000....0000..`),...r("level-wall-edge",`\n................\n................\n................\n...00L000.......\n0000000000000...\n0001100000L00000\n0L01000000L00010\n000000L000000000\n0000000000000000\n00001000000L0001\n0000000000000011\n000000L000100000\n01000LL00000LL00\n010000000000LL00\n0000000100000000\n0000000000000000`),...r("level-wall-corner",`\n.....00000010000\n.....00L00110000\n......0000000L00\n......0000000000\n......0100000000\n00..000000000000\n00000000000LL000\n000000000000L000\n0100000000000000\n0000000000000000\n00000LL000000011\n0LL00000L0000000\n0L00000000000000\n0000011000000L00\n0000000000000000\n0000000000000000`),...r("level-wall-cap",`\n................\n................\n....000000......\n00000100000.....\n00000100L000....\n000L00000000....\n000LL0000001....\n000000000000....\n011000L000000...\n0000000L00000...\n0000000000000...\n00001000000L00..\n00000000010000..\n00000000110000..\n00LL0000000000..\n0000000000000L..`),{name:"level-carpet",bitmap:`\n3333333333333333\n3333333333333333\n3333333333333333\n33C3333333333333\n3333333333333C33\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n33333333C3333333\n3333333333333333\n3333333333333333`},...r("level-carpet-corner",`\n3333333333332212\n3333333333331121\n3333C33333332112\n333333333333L221\n333333333333LLL2\n333333333333222L\n333333333333LLLL\n333333333333L22L\n33333333C3332112\n3333333333331111\n3333333333332211\n3333333333331122\n1212LL2L121222LL\n2112LLL21212LL2L\n12112LL221112L22\n12112LL21212LLLL`),...r("level-carpet-edge",`\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n333C333333333333\n3333333333333333\n3333333333333333\n333333333333C333\n3333333333333333\n3333333333333333\n3333333333333333\n3333333333333333\n12112LL2121L2L2L\n1212LL2L11212LL2\n11212L2L12121LL2\n121L2L2L1212LLL2`),{name:"level-floor-0",bitmap:`\n1111LLLL11111LLL\n1111LLLL1111LLLL\n111LLLLLL111LLLL\n1111L1LL1111LLLL\nLLLL1111LLLL1111\nLLLL1111LLLL1111\nLLLL1111LLLL1111\nLLLL1111L1LL11L1\n1L11LLLL1111LLLL\n1111LLLL1111LLLL\n1111LLLL1111LLLL\n1111LLLL1111LLL1\nLLLL1111LLLL1111\nLLLL11111LLL1111\nLLLL1L11LLLL1111\nLLLL1111LLLL1111`},{name:"level-floor-1",bitmap:`\n1111LLL11111LLLL\n1111LLLL1111LLLL\n1111LLLL1111LLLL\n1111LLLL1111LLLL\nLL1L1111LLLLL111\nLLLL1111LLLL1111\nLLLL1111LLLL1111\nLLLL1L11LLLL1111\n1111LLLL1111LLLL\n1111LLL11111LLLL\n1111LLLL1111LLLL\nL111LLLL1111LLLL\nLLLL1111LLLL1L11\nLLLL1111LLLL1111\nLLLL1111LLLL1111\nLLLL11111LLL1111`}];function s(n,e){return[{name:`${n}-north`,bitmap:e},{name:`${n}-south`,bitmap:e.split("\n").reverse().join("\n")}]}function o(n,e){return[{name:`${n}-east`,bitmap:e},{name:`${n}-west`,bitmap:e.split("\n").map((n=>[...n].reverse().join(""))).join("\n")}]}function r(n,e){return[{name:`${n}-north`,bitmap:e},{name:`${n}-south`,bitmap:l(e,2)},{name:`${n}-east`,bitmap:l(e,1)},{name:`${n}-west`,bitmap:l(e,3)}]}function l(n,e){const t=n.trim().split("\n");const i=t[0].length;const a=t.length;const s=Array.from({length:i},(()=>Array.from({length:a},(()=>" "))));for(let n=0;n<a;n++){for(let o=0;o<i;o++){const r=t[n][o];const l=e===0?o:e===1?a-1-n:e===2?i-1-o:n;const h=e===0?n:e===1?o:e===2?a-1-n:i-1-o;s[h][l]=r}}return s.map((n=>n.join(""))).join("\n")}const h="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"+"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"+"ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž";const u=a.reduce(((n,e,t)=>{if(t>=h.length){throw new Error("Too many sprites")}n[e.name]=h[t];return n}),{});setLegend(...a.map((({name:n,bitmap:e})=>[u[n],e])));function C(n){return u[n]}}};var e={};function t(i){var a=e[i];if(a!==undefined){return a.exports}var s=e[i]={exports:{}};n[i](s,s.exports,t);return s.exports}var i={};(()=>{var n=i;var e;e={value:true};const a=t(463);const s=t(270);const o=t(788);const r=t(938);const l=t(417);let h;let u;let C;let d;let f;let L;let c;let m;D();function D(){h="start-menu";u={difficulty:"normal",music:false,sfx:true};C="start";d=0;f=0;L=new a.default((n=>{if(c.getState()!=="conquered"){return}const e=c.getLevel(n);if(e===null){return}c=e;L.teleport(n);if(c.getState()==="waiting"){c.initialize(w(),x(),k(),u.difficulty==="rampage")}}),(()=>{f=Date.now();h="dead";m.end();(0,r.default)("death");if(u.music){m=(0,r.default)("theme-death",Infinity)}}));c=new s.default((()=>d),(()=>d++),null);c.initialize(w(),x(),k(),u.difficulty==="rampage");m=u.music?(0,r.default)("theme-main",Infinity):{end:()=>{}}}function p(n){switch(h){case"start-menu":H(n);break;case"difficulty-menu":g(n);break;case"game":y(n);break;case"dead":v(n);break;case"summary":b(n);break}}function H(n){getAll().forEach((n=>n.remove()));c.render(n);(0,l.default)([{text:"sprig dungeons\n\n",color:"BLACK"},{text:`music: ${u.music?"on":"off"}\n\n`,color:"DARK_GRAY",highlight:C==="music"},{text:`sfx: ${u.sfx?"on":"off"}\n\n`,color:"DARK_GRAY",highlight:C==="sfx"},{text:"start",color:"RED",highlight:C==="start"}]);if(o.default.primary.up()){switch(C){case"sfx":C="music";(0,r.default)("menu-move");break;case"start":C="sfx";(0,r.default)("menu-move");break}}if(o.default.primary.down()){switch(C){case"music":C="sfx";(0,r.default)("menu-move");break;case"sfx":C="start";(0,r.default)("menu-move");break}}if(o.default.primary.right()){switch(C){case"music":u.music=!u.music;if(u.music){m=(0,r.default)("theme-main",Infinity)}else{m.end()}(0,r.default)("menu-select");break;case"sfx":u.sfx=!u.sfx;(0,r.setSfx)(u.sfx);(0,r.default)("menu-select");break;case"start":(0,r.setSfx)(u.sfx);h="difficulty-menu";clearText();(0,r.default)("menu-select");break}}}function g(n){getAll().forEach((n=>n.remove()));c.render(n);(0,l.default)([{text:"select\ndifficulty\n\n",color:"BLACK"},{text:"rampage\n\n",color:"DARK_GRAY",highlight:u.difficulty==="rampage"},{text:"normal\n\n",color:"DARK_GRAY",highlight:u.difficulty==="normal"},{text:"hard\n\n",color:"DARK_GRAY",highlight:u.difficulty==="hard"},{text:"impossible",color:"DARK_GRAY",highlight:u.difficulty==="impossible"}]);if(o.default.primary.up()){switch(u.difficulty){case"normal":u.difficulty="rampage";(0,r.default)("menu-move");break;case"hard":u.difficulty="normal";(0,r.default)("menu-move");break;case"impossible":u.difficulty="hard";(0,r.default)("menu-move");break}}if(o.default.primary.down()){switch(u.difficulty){case"rampage":u.difficulty="normal";(0,r.default)("menu-move");break;case"normal":u.difficulty="hard";(0,r.default)("menu-move");break;case"hard":u.difficulty="impossible";(0,r.default)("menu-move");break}}if(o.default.primary.right()){h="game";clearText();(0,r.default)("menu-select")}}function y(n){if(o.default.primary.up()){L.move("north")}if(o.default.primary.down()){L.move("south")}if(o.default.primary.left()){L.move("west")}if(o.default.primary.right()){L.move("east")}if(o.default.secondary.up()){L.attack("north",c.getEnemies())}if(o.default.secondary.left()){L.attack("west",c.getEnemies())}if(o.default.secondary.down()){L.attack("south",c.getEnemies())}if(o.default.secondary.right()){L.attack("east",c.getEnemies())}if(c.update(L.getPosition())){L.hit()}L.update(c.getEnemies());getAll().forEach((n=>n.remove()));c.render(n);L.render(n)}function v(n){getAll().forEach((n=>n.remove()));c.render(n);L.render(n);(0,l.default)([{text:"you died!",color:"RED"}]);if((o.default.primary.up()||o.default.primary.down()||o.default.primary.left()||o.default.primary.right())&&Date.now()-f>1e3){h="summary";clearText();(0,r.default)("menu-select")}}function b(n){getAll().forEach((n=>n.remove()));c.render(n);L.render(n);(0,l.default)([{text:`level ${d+1}\n`,color:"BLACK"},{text:`${u.difficulty}\n\n`,color:"LIGHT_GRAY"},{text:"kills: ",color:"RED"},{text:`${L.getKillCount().toString().padStart(7)}\n`,color:"DARK_GRAY"},{text:"apples:",color:"GREEN"},{text:`${L.getApplesCollected().toString().padStart(7)}`,color:"DARK_GRAY"}]);if(o.default.primary.up()||o.default.primary.down()||o.default.primary.left()||o.default.primary.right()){m.end();D()}}function w(){switch(u.difficulty){case"rampage":return Math.floor(35+d*3.5);case"normal":return Math.floor(15+d*1.5);case"hard":return Math.floor(20+d*2);case"impossible":return Math.floor(30+d*2.5)}}function x(){switch(u.difficulty){case"rampage":return 2.5+d*.25;case"normal":return 1+d*.1;case"hard":return 2+d*.15;case"impossible":return 3+d*.2}}function k(){switch(u.difficulty){case"rampage":return[5+d,7+d,9+d];case"normal":return[Math.floor(3+d*.25),Math.floor(5+d*.25),Math.floor(7+d*.25)];case"hard":return[Math.floor(4+d*.25),Math.floor(6+d*.25),Math.floor(8+d*.25)];case"impossible":return[Math.floor(5+d*.5),Math.floor(7+d*.5),Math.floor(9+d*.5)]}}const M=Date.now();function A(){p(Date.now()-M);setTimeout((()=>{A()}),50)}A()})()})();