forked from Rybar/js13k2017
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.js
1 lines (1 loc) · 48.3 KB
/
game.js
1
!function(){function e(e){de.fill(e,ae,ae+Y)}function o(e,t,o){e=(0|e).clamp(0,P),t=(0|t).clamp(0,z),o|=0,de[ae+t*P+e]=o}function n(e,t,o=ae){return de[o+e+t*P]}function a(e,t,n,a,s){var r,i,l=(a|=0)-(t|=0),f=(n|=0)-(e|=0);if(l<0?(l=-l,i=-1):i=1,f<0?(f=-f,r=-1):r=1,l<<=1,f<<=1,o(e,t,s),f>l)for(var c=l-(f>>1);e!=n;)c>=0&&(t+=i,c-=f),c+=l,o(e+=r,t,s);else for(c=f-(l>>1);t!=a;)c>=0&&(e+=r,c-=l),c+=f,o(e,t+=i,s)}function s(e,t,n,a){var s=-n,r=0,i=2-2*n;do{o(e-s,t+r,a),o(e-r,t-s,a),o(e+s,t-r,a),o(e+r,t+s,a),(n=i)<=r&&(i+=2*++r+1),(n>s||i>r)&&(i+=2*++s+1)}while(s<0)}function r(e,t,o,n){if(!(o<0)){e|=0,t|=0,n|=0;var s=-(o|=0),r=0,i=2-2*o;do{a(e-s,t-r,e+s,t-r,n),a(e-s,t+r,e+s,t+r,n),(o=i)<=r&&(i+=2*++r+1),(o>s||i>r)&&(i+=2*++s+1)}while(s<0)}}function i(e,t,o,n,s){x1=0|e,y1=0|t,x2=e+o|0,y2=t+n|0,a(x1,y1,x2,y1,s),a(x2,y1,x2,y2,s),a(x1,y2,x2,y2,s),a(x1,y1,x1,y2,s)}function l(e,t,o,n,s){x1=0|e,y1=0|t,x2=e+o|0,y2=t+n|0;var r=Math.abs(y2-y1);if(a(x1,y1,x2,y1,s),r>0)for(;--r;)a(x1,y1+r,x2,y1+r,s);a(x1,y2,x2,y2,s)}function f(e,t,o,n,a,s){for(let r=0;r<=a;r++)l(e+r,t-r,o-2*r,n+2*r,s)}function c(e,t,o,n,s,r){let i=e+s,l=e+o-s,f=e+o,c=t+s,_=t+n-s,d=t+n;a(i,t,l,t,r),a(l,t,f,c,r),a(f,c,f,_,r),a(f,_,l,d,r),a(l,d,i,d,r),a(i,d,e,_,r),a(e,_,e,c,r),a(e,c,i,t,r)}function _(e,t,o,n=o,a=o,s=o){for(let r=0;r<=P;r++)for(let i=0;i<=z;i++){let l=r-1+i*P,f=r+1+i*P,c=r+(i+1)*P,_=r+(i-1)*P;de[e+(r+i*P)]&&(de[e+l]||(de[t+l]=o),de[e+f]||(de[t+f]=a),de[e+_]||(de[t+_]=n),de[e+c]||(de[t+c]=s))}}function d(e,t,o,n,a,s,r){var i=P,e=Math.round(16*e),o=Math.round(16*o),a=Math.round(16*a),t=Math.round(16*t),l=e-o,f=(n=Math.round(16*n))-t,c=o-a,_=(s=Math.round(16*s))-n,d=a-e,u=t-s,p=Math.max(Math.min(e,o,a)+15>>4,0),y=Math.min(Math.max(e,o,a)+15>>4,P),m=Math.max(Math.min(t,n,s)+15>>4,0),x=Math.min(Math.max(t,n,s)+15>>4,z);p&=-8,m&=-8;var h=-f*e-l*t,v=-_*o-c*n,g=-u*a-d*s;(f>0||0==f&&l>0)&&h++,(_>0||0==_&&c>0)&&v++,(u>0||0==u&&d>0)&&g++,h=h-1>>4,v=v-1>>4,g=g-1>>4;var w=0,R=0,I=0,S=0,M=0,N=0;l>=0?R-=7*l:w-=7*l,f>=0?R-=7*f:w-=7*f,c>=0?S-=7*c:I-=7*c,_>=0?S-=7*_:I-=7*_,d>=0?N-=7*d:M-=7*d,u>=0?N-=7*u:M-=7*u;for(var E=i-8,G=m;G<x;G+=8)for(var q=p;q<y;q+=8){var T=h+l*G+f*q,D=v+c*G+_*q,K=g+d*G+u*q;if(!(T<R||D<S||K<N)){var L=q+G*i;if(T>=w&&D>=I&&K>=M)for(b=0;b<8;b++){for(C=0;C<8;C++,L++)de[ae+L]=r;L+=E}else for(var b=0;b<8;b++){for(var A=T,O=D,k=K,C=0;C<8;C++)(A|O|k)>=0&&(de[ae+L]=r),A+=f,O+=_,k+=u,L++;T+=l,D+=c,K+=d,L+=E}}}}function u(e=0,t=0,o=384,n=256,a=0,s=0,r=!1,i=!1){for(var l=0;l<n;l++)for(var f=0;f<o;f++)s+l<z&&a+f<P&&s+l>-1&&a+f>-1&&(r&i?de[se+((t+(n-l))*P+e+(o-f))]>0&&(de[ae+((s+l)*P+a+f)]=ie[de[se+((t+(n-l))*P+e+(o-f))]]):i&&!r?de[se+((t+(n-l))*P+e+f)]>0&&(de[ae+((s+l)*P+a+f)]=de[se+((t+(n-l))*P+e+f)]):r&&!i?de[se+((t+l)*P+e+(o-f))]>0&&(de[ae+((s+l)*P+a+f)]=de[se+((t+l)*P+e+(o-f))]):r||i||de[se+((t+l)*P+e+f)]>0&&(de[ae+((s+l)*P+a+f)]=ie[de[se+((t+l)*P+e+f)]]))}function p(e,t,o,n,a,s,r,i){i*=.0174533;let l=o/2|0,f=n/2|0,c=o*r/2*1.41421356237|5,_=n*r/2*1.41421356237|5,d=-c,u=c,p=-_,y=_,m=1/r,x=Math.cos(-i)*m,h=Math.sin(-i)*m;for(let r=p;r<y;r++)for(let i=d;i<u;i++){let c=l+Math.round(x*i+h*r),_=f+Math.round(-h*i+x*r),d=i+a|0,u=r+s|0;c>=0&&_>=0&&c<o&&_<n&&de[se+(c+e)+(_+t)*P]>0&&(d.clamp(0,P),u.clamp(0,z),de[ae+d+u*P]=de[se+(c+e)+(_+t)*P])}}function y(e,t=1,o=0,n=!1,a=1){var s=Se.createBufferSource(),r=Se.createGain(),i=Se.createStereoPanner();return s.buffer=e,s.connect(i),i.connect(r),r.connect(Se.destination),s.playbackRate.value=t,s.loop=n,r.gain.value=a,i.pan.value=o,s.start(),{volume:r,sound:s}}function m(){for(var e=Y;e--;)_e[e]=re[ie[de[e]]];le.data.set(ce),ne.putImageData(le,0,0)}function x(){e(0),ae=Q,se=Q,l(8,10,17,9,8),l(7,11,19,7,8),l(9,12,15,5,2),l(11,14,2,1,16),l(21,14,2,1,16),a(12,15,13,15,21),a(22,15,23,15,21),a(17,9,17,6,5),o(17,6,21),l(44,15,3,1,5),l(42,17,7,7,5),l(43,21,5,5,0),r(139,28,5,13),l(74,22,2,5,8),r(75,28,3,8),s(75,28,1,5),d(105,19,114,27,117,23,8),l(206,10,4,12,9),_(Q,X,23,21,31,23),se=X,u(),se=Q,u(128,0,32,40,165,4),u(32,0,32,32,162,5),u(64,0,32,32,165,4),u(96,0,32,32,165,3),u(0,0,32,32,160,0),u(64,0,32,32,118,0,4),u(32,0,32,32,162,45),u(0,0,32,32,160,40),u(32,0,32,32,162,85),u(96,0,32,32,165,83),u(0,0,32,32,160,80)}function h(e=Date.now(),t=1664525,o=1013904223,n=Math.pow(2,32)){this.seed=e,this.a=t,this.c=o,this.m=n}function v(e){return Math.sin(6.283184*e)}function g(e){return.00390625*Math.pow(1.059463094,e-128)}function w(e,t){setTimeout(function(){var o=new Uint8Array(e*Re*2),n=o.length-2,a=function(){for(var e=new Date,s=0;n>=0;)if(o[n]=0,o[n+1]=128,n-=2,(s+=1)%1e3==0&&new Date-e>Ie)return void setTimeout(a,0);setTimeout(function(){t(o)},0)};setTimeout(a,0)},0)}function R(e,t,o,n,a){var s=o.fx_delay_time*n>>1,r=o.fx_delay_amt/255,i=0,l=function(){for(var o=new Date,n=0;i<t-s;){var f=4*i,c=4*(i+s),_=e[c]+(e[c+1]<<8)+(e[f+2]+(e[f+3]<<8)-32768)*r;if(e[c]=255&_,e[c+1]=_>>8&255,_=e[c+2]+(e[c+3]<<8)+(e[f]+(e[f+1]<<8)-32768)*r,e[c+2]=255&_,e[c+3]=_>>8&255,++i,(n+=1)%1e3==0&&new Date-o>Ie)return void setTimeout(l,0)}setTimeout(a,0)};setTimeout(l,0)}function I(e){lcg.setSeed(1019);let t=Y*j;for(;--t;)de[t]=0;switch(x(),e){case Ne:currentRoom[0]--,currentRoom[0]<0&&(currentRoom[0]=Ue),console.log(currentRoom);break;case Ee:currentRoom[0]++,currentRoom[0]>Ue&&(currentRoom[0]=0),console.log(currentRoom);break;case Ge:currentRoom[1]--,currentRoom[1]<0&&(currentRoom[1]=Pe),console.log(currentRoom);break;case qe:currentRoom[1]++,currentRoom[1]>Pe&&(currentRoom[1]=0),console.log(currentRoom)}ae=V,rooms[world[currentRoom[1]*(Ue+1)+currentRoom[0]]].draw(),S()}function S(){lcg.setSeed(1019+currentRoom[0]+1234.5678*currentRoom[1]),ae=ee,e(0),ae=Z,e(0),ae=$,e(0),se=V,ae=Z,u(),M(),T(),D(),E(),E(),q(),G(),ae=V,rooms[world[currentRoom[1]*(Ue+1)+currentRoom[0]]].specials()}function M(){ae=ee,e(0);let t=5e3;for(;--t;)o(lcg.nextIntRange(0,384),lcg.nextIntRange(0,256),1);for(t=200;--t;)o(lcg.nextIntRange(0,384),lcg.nextIntRange(0,256),26);for(t=60;--t;)o(lcg.nextIntRange(0,384),lcg.nextIntRange(0,256),20);for(t=20;--t;)o(lcg.nextIntRange(0,384),lcg.nextIntRange(0,256),21);for(t=3;--t;)r(lcg.nextIntRange(0,384),lcg.nextIntRange(0,256),lcg.nextIntRange(2,5),lcg.nextIntRange(16,19))}function N(){let e=Y;for(;--e;){let o=de[V+e],n=e/P|0,a=e%P;switch(se=Q,ae=H,o){case Ae:p(192,0,32,32,a-2,n-5,1,90*t);break;case Ce:p(32,0,32,32,a-2,n-5,1,90*t);break;case Fe:p(96,0,32,32,a-2,n-5,1,90*t);break;case Be:p(128,0,32,40,a-2,n-5,1,90*t)}}}function E(t=1,o=1,a=15,s=3,r=1){se=V,ae=W,e(0);for(i=3e3;--i;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);n(e,t,V)==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*t),l(e+roomNG.nextIntRange(-2,2),t+roomNG.nextIntRange(-2,2),roomNG.nextIntRange(2,6),1,2))}ae=J,e(0),_(W,J,1),ae=Z,se=W,u(),se=J,u();for(var i=3e3;--i;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);n(e,t,V)==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*t),l(e+roomNG.nextIntRange(-2,2),t+roomNG.nextIntRange(-2,2),1,roomNG.nextIntRange(2,6),2))}ae=J,e(0),_(W,J,1,15,3,1),ae=Z,se=W,u(),se=J,u()}function G(t=1,o=2,n=15,a=2,r=0){ae=W,e(0);for(var i=400;--i;){let e=lcg.nextIntRange(0,P),o=lcg.nextIntRange(0,z);de[V+e+o*P]==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*o),l(e+roomNG.nextIntRange(-5,0),o+roomNG.nextIntRange(-20,0),t,roomNG.nextIntRange(1,16),1),s(e,o-10,1,t))}ae=J,e(0),_(W,J,o,n,a,r),ae=$,se=W,u(),se=J,u()}function q(){ae=W,e(0);for(var t=1500;--t;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);de[V+e+t*P]==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*t),f(e,t,roomNG.nextIntRange(5,13),roomNG.nextIntRange(2,4),1,25))}let o=2e3;for(;--o;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);de[V+e+t*P]==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*t),l(e,t,roomNG.nextIntRange(3,7),roomNG.nextIntRange(1,3),0))}for(o=15;--o;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);de[V+e+t*P]==be&&(roomNG.setSeed(lcg.seed+e+1234.5678*t),l(e,t,roomNG.nextIntRange(10,80),roomNG.nextIntRange(10,80),0))}ae=J,e(0),_(W,J,24,18,25),ae=Z,se=W,u(),se=J,u()}function T(){let e=Y;for(;--e;)de[V+e]==ke&&(roomNG.setSeed(lcg.seed+1234.5678*e),de[Z+e]=roomNG.nextIntRange(2,4))}function D(){let e=Y;for(;--e;)de[V+e]==Oe&&(roomNG.setSeed(lcg.seed+1234.5678*e),de[Z+e]=roomNG.nextIntRange(9,11))}function K(e,t,o,n,a){ae=Z,se=Q;let s=a;for(;s--;)ie=paldrk,roomNG.setSeed(lcg.seed+1234.5678*s),p(0,0,32,32,roomNG.nextIntRange(e,e+o),roomNG.nextIntRange(t,t+n),1,roomNG.nextIntRange(0,359)),ie=te}function L(){let e=36;for(;e--;){roomNG.setSeed(lcg.seed+1234.5678*e);let o=(roomNG.nextIntRange(-200,z)-20*t|0)%z*2+z,n=roomNG.nextIntRange(20,120),a=roomNG.nextIntRange(10,30);c(roomNG.nextIntRange(-200,P),o,n,a,5,1)}}function b(e=1,t=14){let o=150;for(;o--;){ae=ee,roomNG.setSeed(lcg.seed+1234.5678*o);let t=roomNG.nextIntRange(60,z),n=roomNG.nextIntRange(3,15);r(roomNG.nextIntRange(0,P),t,n,e)}for(o=150;o--;){ae=ee,roomNG.setSeed(lcg.seed+1232.5678*o);let e=roomNG.nextIntRange(100,z),n=roomNG.nextIntRange(3,15);r(roomNG.nextIntRange(0,P),e,n,t)}for(o=100;o--;){ae=ee,roomNG.setSeed(lcg.seed+1230.5678*o);let t=roomNG.nextIntRange(150,z),n=roomNG.nextIntRange(15,20);r(roomNG.nextIntRange(0,P),t,n,e)}}function A(){let e=150;for(;e--;){ae=ee,roomNG.setSeed(lcg.seed+1234.5678*e);let t=roomNG.nextIntRange(0,z),o=roomNG.nextIntRange(15,60),n=roomNG.nextIntRange(15,60);c(roomNG.nextIntRange(0,P),t,o,n,3,1)}}function O(t,n=!1){t.forEach(function(e,t,n){1==e&&l(t%12*32,32*(t/12|0),32,32,be),2==e&&o(t%12*32+16,32*(t/12|0)+16,Ae),7==e&&o(t%12*32+16,32*(t/12|0)+16,Fe),8==e&&o(t%12*32+16,32*(t/12|0)+16,Be)}),n&&(se=V,ae=W,u(0,0,P,z,0,0,!0),ae=V,e(),se=W,u())}function k(e=0,t=0,o=10,n=10,a=21,s=!1,r=!1){this.x=e,this.y=t,this.maxSize=o,this.speed=n,this.counter=this.speed,this.color=a,this.size=1,this.filled=s,this.square=r}function C(e="",t=9,o=200){this.text=e,this.color=t,this.time=o,this.string="",this.counter=0}function F(e){for(var t=e[0].length,n=0;n<t;n++){var a=[];a=U(e[0].charAt(n));for(var s=0;s<5;s++)for(var r=0;r<5;r++)1==a[5*s+r]&&(1==e[4]?o(e[1]+r*e[4]+(5*e[4]+e[3])*n,e[2]+s*e[4],e[5]):l(e[1]+r*e[4]+(5*e[4]+e[3])*n,e[2]+s*e[4],e[4],e[4],e[5]))}}function B(e){var t=5*e[7],o=e[0].split("\n"),n=o.slice(0),a=o.length,s=n.sort(function(e,t){return t.length-e.length})[0],r=s.length*t+(s.length-1)*e[3],i=a*t+(a-1)*e[4];e[5]||(e[5]="left"),e[6]||(e[6]="bottom");var l=e[1],f=e[2],c=e[1]+r,_=e[2]+i;"center"==e[5]?(l=e[1]-r/2,c=e[1]+r/2):"right"==e[5]&&(l=e[1]-r,c=e[1]),"center"==e[6]?(f=e[2]-i/2,_=e[2]+i/2):"bottom"==e[6]&&(f=e[2]-i,_=e[2]);for(var d=l+r/2,u=f+i/2,p=0;p<a;p++){var y=o[p],m=y.length*t+(y.length-1)*e[3],x=e[1],h=e[2]+(t+e[4])*p;"center"==e[5]?x=e[1]-m/2:"right"==e[5]&&(x=e[1]-m),"center"==e[6]?h-=i/2:"bottom"==e[6]&&(h-=i),F([y,x,h,e[3]||0,e[7]||1,e[8],e[9]])}return{sx:l,sy:f,cx:d,cy:u,ex:c,ey:_,width:r,height:i}}function U(e){return index=fontString.indexOf(e),fontBitmap.substring(25*index,25*index+25).split("")}const P=384,z=256,j=22,Y=P*z,H=0,X=2*Y,W=6*Y,J=8*Y,Q=10*Y,V=12*Y,Z=14*Y,$=16*Y,ee=18*Y,te=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];var oe=document.getElementById("canvas"),ne=oe.getContext("2d"),ae=0,se=Y,re=[4278190080,4281606178,4282132549,4281416038,4282078863,4280709599,4284915929,4288332782,4281791227,4283491737,4281384554,4285436983,4281297227,4280568658,4281941042,4285808447,4286734384,4292963931,4294941539,4293184863,4294761419,4294967295,4290227611,4287069828,4285164137,4283586137,4287251062,4281479852,4284700633,4290411479,4283078543,4281364362],ie=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];paldrk=[0,0,1,2,3,4,5,6,6,10,11,12,13,14,2,2,15,16,17,18,22,20,23,24,25,26,2,2,27,28,31,13],ne.imageSmoothingEnabled=!1,ne.mozImageSmoothingEnabled=!1,oe.width=P,oe.height=z;var le=ne.getImageData(0,0,P,z),fe=new ArrayBuffer(le.data.length),ce=new Uint8Array(fe),_e=new Uint32Array(fe),de=new Uint8ClampedArray(P*z*j);Number.prototype.clamp=function(e,t){return Math.min(Math.max(this,e),t)},Number.prototype.map=function(e,t,o,n){return(this-e)/(t-e)*(n-o)+o},world=[0,0,0,0,0,0,0,0,0,0,0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,2,1,2,4,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,7,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,11,2,4,0,4,2,5,12,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,2,16,2,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,6,2,10,11,4,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,4,0,0,17,5,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,4,4,5,2,16,8,2,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,2,2,2,6,8,4,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,2,13,2,2,18,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,2,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19];var ue={osc1_oct:8,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:0,osc1_waveform:0,osc2_oct:8,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:0,osc2_waveform:0,noise_fader:255,env_attack:548,env_sustain:0,env_release:16584,env_master:192,fx_filter:2,fx_freq:914,fx_resonance:67,fx_delay_time:2,fx_delay_amt:72,fx_pan_freq:1,fx_pan_amt:88,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:2,lfo_amt:51,lfo_waveform:0},pe={rowLen:5513,endPattern:17,songData:[{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:128,osc1_waveform:2,osc2_oct:6,osc2_det:0,osc2_detune:9,osc2_xenv:0,osc2_vol:142,osc2_waveform:3,noise_fader:0,env_attack:137,env_sustain:2653,env_release:1979,env_master:155,fx_filter:3,fx_freq:1052,fx_resonance:154,fx_delay_time:6,fx_delay_amt:25,fx_pan_freq:8,fx_pan_amt:144,lfo_osc1_freq:0,lfo_fx_freq:1,lfo_freq:3,lfo_amt:69,lfo_waveform:0,p:[2,2,3,3,2,2,3,3,2,2,3,3,2,2,3,3],c:[{n:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},{n:[171,166,169,171,174,171,169,171,0,166,169,171,174,171,169,171,171,166,169,171,174,171,169,171,0,166,169,171,174,171,169,171]},{n:[169,164,167,169,172,169,167,169,0,164,167,169,172,169,167,169,169,164,167,169,172,169,167,169,0,164,167,169,172,169,167,169]}]},{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:116,osc1_waveform:1,osc2_oct:8,osc2_det:0,osc2_detune:8,osc2_xenv:0,osc2_vol:255,osc2_waveform:2,noise_fader:0,env_attack:351,env_sustain:4611,env_release:1403,env_master:199,fx_filter:2,fx_freq:200,fx_resonance:254,fx_delay_time:5,fx_delay_amt:12,fx_pan_freq:0,fx_pan_amt:214,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:87,lfo_waveform:3,p:[1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2],c:[{n:[123,0,0,121,0,0,123,0,0,0,0,0,0,0,121,0,123,0,0,121,0,0,123,0,0,0,0,0,0,0,0,0]},{n:[121,0,0,119,0,0,121,0,0,0,0,0,0,0,119,0,121,0,0,119,0,0,121,0,0,0,0,0,0,0,0,0]}]},{osc1_oct:6,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:162,osc1_waveform:0,osc2_oct:6,osc2_det:0,osc2_detune:0,osc2_xenv:1,osc2_vol:162,osc2_waveform:0,noise_fader:14,env_attack:50,env_sustain:150,env_release:8181,env_master:161,fx_filter:2,fx_freq:5900,fx_resonance:240,fx_delay_time:4,fx_delay_amt:33,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],c:[{n:[123,0,0,123,0,0,0,123,123,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0,123,0,0,0,0,0,0,0]}]},{osc1_oct:8,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:0,osc1_waveform:0,osc2_oct:8,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:0,osc2_waveform:0,noise_fader:29,env_attack:50,env_sustain:419,env_release:4607,env_master:130,fx_filter:2,fx_freq:10332,fx_resonance:120,fx_delay_time:4,fx_delay_amt:16,fx_pan_freq:5,fx_pan_amt:108,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:5,lfo_amt:187,lfo_waveform:0,p:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],c:[{n:[0,123,123,123,0,123,123,123,0,123,0,123,0,123,123,123,0,123,123,123,0,123,0,123,0,123,123,123,0,123,123,123]}]},{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:255,osc1_waveform:2,osc2_oct:7,osc2_det:0,osc2_detune:4,osc2_xenv:0,osc2_vol:154,osc2_waveform:2,noise_fader:0,env_attack:197,env_sustain:13163,env_release:10614,env_master:180,fx_filter:2,fx_freq:1792,fx_resonance:136,fx_delay_time:6,fx_delay_amt:81,fx_pan_freq:3,fx_pan_amt:151,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[1,2,3,4,5,2,3,4,5,2,3,4,5,2,3,4],c:[{n:[162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},{n:[166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,166,0,0,0,0,0,0,0]},{n:[164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},{n:[164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,0,0,0,0,0,0,0,0,0,0,0,167,0,0,0]},{n:[166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,167,0,0,0]}]}],songLen:69},ye={rowLen:6615,endPattern:32,songData:[{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:191,osc1_waveform:1,osc2_oct:7,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:125,osc2_waveform:1,noise_fader:0,env_attack:200,env_sustain:2e3,env_release:2418,env_master:60,fx_filter:2,fx_freq:3859,fx_resonance:130,fx_delay_time:6,fx_delay_amt:128,fx_pan_freq:4,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2,1,2,1,2,3,4,1,2,1,2],c:[{n:[137,0,140,0,144,0,147,0,137,0,140,0,144,0,147,0,137,0,140,0,144,0,147,0,137,0,140,0,144,0,147,0]},{n:[137,0,140,0,144,0,146,0,137,0,140,0,144,0,146,0,137,0,140,0,144,0,146,0,137,0,140,0,144,0,146,0]},{n:[137,0,140,0,144,0,147,0,151,0,147,0,149,0,144,0,152,0,144,0,151,0,152,0,149,0,142,0,144,0,140,0]},{n:[142,0,137,0,142,0,144,0,147,0,144,0,146,0,142,0,140,0,142,0,137,0,142,0,147,0,144,0,146,0,142,0]}]},{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:255,osc1_waveform:1,osc2_oct:7,osc2_det:0,osc2_detune:9,osc2_xenv:0,osc2_vol:154,osc2_waveform:1,noise_fader:0,env_attack:197,env_sustain:3158,env_release:1403,env_master:45,fx_filter:0,fx_freq:11025,fx_resonance:255,fx_delay_time:2,fx_delay_amt:65,fx_pan_freq:3,fx_pan_amt:47,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[0,0,0,0,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,0,1],c:[{n:[125,0,0,123,0,0,125,0,0,0,0,0,0,0,123,0,125,0,0,123,0,0,125,0,0,0,0,0,0,0,0,0]},{n:[130,0,0,128,0,0,130,0,0,0,0,0,0,0,128,0,130,0,0,128,0,0,130,0,0,0,0,0,0,0,0,0]}]},{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:192,osc1_waveform:2,osc2_oct:7,osc2_det:0,osc2_detune:5,osc2_xenv:0,osc2_vol:192,osc2_waveform:2,noise_fader:0,env_attack:88,env_sustain:6338,env_release:444,env_master:131,fx_filter:2,fx_freq:4425,fx_resonance:219,fx_delay_time:3,fx_delay_amt:61,fx_pan_freq:0,fx_pan_amt:23,lfo_osc1_freq:0,lfo_fx_freq:1,lfo_freq:7,lfo_amt:97,lfo_waveform:0,p:[0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,0,0,0,0,0,0,0,1,2,3,4],c:[{n:[152,151,152,0,0,0,0,0,151,0,0,152,0,0,149,0,0,0,0,0,0,0,149,0,152,0,0,156,0,0,159,0]},{n:[158,154,149,0,0,0,149,151,152,0,154,151,0,152,149,0,0,0,0,0,0,0,0,149,152,151,149,0,149,147,0,0]},{n:[152,151,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,152,156,161]},{n:[158,154,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]},{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:255,osc1_waveform:2,osc2_oct:7,osc2_det:0,osc2_detune:9,osc2_xenv:0,osc2_vol:154,osc2_waveform:2,noise_fader:0,env_attack:0,env_sustain:99915,env_release:128335,env_master:115,fx_filter:2,fx_freq:1052,fx_resonance:166,fx_delay_time:5,fx_delay_amt:0,fx_pan_freq:3,fx_pan_amt:178,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[0,0,1,0,2,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,0,2],c:[{n:[113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},{n:[118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]},{osc1_oct:8,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:82,osc1_waveform:2,osc2_oct:8,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:0,osc2_waveform:0,noise_fader:255,env_attack:0,env_sustain:0,env_release:2193,env_master:63,fx_filter:3,fx_freq:5200,fx_resonance:63,fx_delay_time:2,fx_delay_amt:29,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1],c:[{n:[0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159,0,159]}]},{osc1_oct:8,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:0,osc1_waveform:0,osc2_oct:8,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:0,osc2_waveform:0,noise_fader:255,env_attack:1e5,env_sustain:1e5,env_release:1e5,env_master:215,fx_filter:2,fx_freq:817,fx_resonance:16,fx_delay_time:2,fx_delay_amt:0,fx_pan_freq:0,fx_pan_amt:255,lfo_osc1_freq:0,lfo_fx_freq:1,lfo_freq:2,lfo_amt:119,lfo_waveform:0,p:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],c:[{n:[111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]}],songLen:155},me={osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:117,osc1_waveform:3,osc2_oct:7,osc2_det:0,osc2_detune:0,osc2_xenv:1,osc2_vol:155,osc2_waveform:2,noise_fader:0,env_attack:7105,env_sustain:0,env_release:444,env_master:192,fx_filter:0,fx_freq:11025,fx_resonance:255,fx_delay_time:2,fx_delay_amt:16,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:59,lfo_waveform:0},xe={rowLen:2544,endPattern:2,songData:[{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:192,osc1_waveform:3,osc2_oct:7,osc2_det:0,osc2_detune:0,osc2_xenv:1,osc2_vol:166,osc2_waveform:3,noise_fader:47,env_attack:0,env_sustain:1234,env_release:19736,env_master:72,fx_filter:2,fx_freq:5029,fx_resonance:132,fx_delay_time:4,fx_delay_amt:16,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[1],c:[{n:[171,170,171,170,171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]}],songLen:4},he={rowLen:4134,endPattern:2,songData:[{osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:0,osc1_vol:192,osc1_waveform:2,osc2_oct:7,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:192,osc2_waveform:2,noise_fader:0,env_attack:0,env_sustain:351,env_release:5268,env_master:103,fx_filter:0,fx_freq:11025,fx_resonance:255,fx_delay_time:3,fx_delay_amt:56,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0,p:[1],c:[{n:[161,166,170,175,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]}],songLen:7},ve={osc1_oct:7,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:255,osc1_waveform:0,osc2_oct:7,osc2_det:0,osc2_detune:0,osc2_xenv:1,osc2_vol:255,osc2_waveform:0,noise_fader:163,env_attack:50,env_sustain:150,env_release:96977,env_master:228,fx_filter:2,fx_freq:1934,fx_resonance:254,fx_delay_time:0,fx_delay_amt:0,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0},ge={osc1_oct:8,osc1_det:0,osc1_detune:0,osc1_xenv:1,osc1_vol:82,osc1_waveform:2,osc2_oct:8,osc2_det:0,osc2_detune:0,osc2_xenv:0,osc2_vol:0,osc2_waveform:0,noise_fader:255,env_attack:100,env_sustain:0,env_release:663,env_master:186,fx_filter:2,fx_freq:5200,fx_resonance:63,fx_delay_time:1,fx_delay_amt:25,fx_pan_freq:0,fx_pan_amt:0,lfo_osc1_freq:0,lfo_fx_freq:0,lfo_freq:0,lfo_amt:0,lfo_waveform:0};fontString="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_!@#.'\"?/<()",fontBitmap="11111100011111110001100011111010001111101000111110111111000010000100000111111100100101000110001111101111110000111001000011111111111000011100100001000011111100001011110001111111000110001111111000110001111110010000100001001111111111000100001010010111101000110010111001001010001100001000010000100001111110001110111010110001100011000111001101011001110001011101000110001100010111011110100011001011100100000111010001100011001001111111101000111110100011000101111100000111000001111101111100100001000010000100100011000110001100010111010001100011000101010001001000110001101011010101110100010101000100010101000110001010100010000100001001111100010001000100011111001000110000100001000111001110100010001000100111111111000001001100000111110100101001011111000100001011111100001111000001111100111110000111101000101110111110000100010001000010001110100010111010001011100111010001011110000101110011101000110001100010111000000000000000000000111110010000100001000000000100111111000110111101011011101010111110101011111010100000000000000000000000100001100001000100000000000011011010011001000000000000111010001001100000000100000010001000100010001000000010001000100000100000100001000100001000010000010",h.prototype.setSeed=function(e){this.seed=e},h.prototype.nextInt=function(){return this.seed=(this.seed*this.a+this.c)%this.m,this.seed},h.prototype.nextFloat=function(){return this.nextInt()/this.m},h.prototype.nextBool=function(e){return null==e&&(e=.5),this.nextFloat()<e},h.prototype.nextFloatRange=function(e,t){return e+this.nextFloat()*(t-e)},h.prototype.nextIntRange=function(e,t){return Math.floor(this.nextFloatRange(e,t))},h.prototype.nextColor=function(){for(var e=this.nextIntRange(0,Math.pow(2,24)).toString(16).toUpperCase();e.length<6;)e="0"+e;return"#"+e};var we={},Re=2,Ie=33,Se=null,Me=[v,function(e){return v(e)<0?-1:1},function(e){return e%1-.5},function(e){var t=e%1*4;return t<2?t-1:3-t}];we.AudioGenerator=function(e){this.mixBuf=e,this.waveSize=e.length/Re/2},we.AudioGenerator.prototype.getAudioBuffer=function(e){null===Se&&(Se=new AudioContext);var t=this.mixBuf,o=this.waveSize*Re*2,n=Se.createBuffer(Re,this.waveSize,44100),a=n.getChannelData(0),s=n.getChannelData(1),r=0,i=function(){for(var l=new Date,f=0;r<o/2;){var c=4*(t[4*r]+(t[4*r+1]<<8)-32768);if(c=c<-32768?-32768:c>32767?32767:c,a[r]=c/32768,c=4*(t[4*r+2]+(t[4*r+3]<<8)-32768),c=c<-32768?-32768:c>32767?32767:c,s[r]=c/32768,r+=1,(f+=1)%1e3==0&&new Date-l>Ie)return void setTimeout(i,0)}setTimeout(function(){e(n)},0)};setTimeout(i,0)},we.SoundGenerator=function(e,t){this.instr=e,this.rowLen=t||5605,this.osc_lfo=Me[e.lfo_waveform],this.osc1=Me[e.osc1_waveform],this.osc2=Me[e.osc2_waveform],this.attack=e.env_attack,this.sustain=e.env_sustain,this.release=e.env_release,this.panFreq=Math.pow(2,e.fx_pan_freq-8)/this.rowLen,this.lfoFreq=Math.pow(2,e.lfo_freq-8)/this.rowLen},we.SoundGenerator.prototype.genSound=function(e,t,o){new Date;for(var n=0,a=0,s=g(e+12*(this.instr.osc1_oct-8)+this.instr.osc1_det)*(1+8e-4*this.instr.osc1_detune),r=g(e+12*(this.instr.osc2_oct-8)+this.instr.osc2_det)*(1+8e-4*this.instr.osc2_detune),i=this.instr.fx_resonance/255,l=0,f=0,c=this.attack+this.sustain+this.release-1;c>=0;--c){var _=c+o,d=this.osc_lfo(_*this.lfoFreq)*this.instr.lfo_amt/512+.5,u=1;c<this.attack?u=c/this.attack:c>=this.attack+this.sustain&&(u-=(c-this.attack-this.sustain)/this.release);var p=s;this.instr.lfo_osc1_freq&&(p+=d),this.instr.osc1_xenv&&(p*=u*u),n+=p;var y=this.osc1(n)*this.instr.osc1_vol;p=r,this.instr.osc2_xenv&&(p*=u*u),a+=p,y+=this.osc2(a)*this.instr.osc2_vol,this.instr.noise_fader&&(y+=(2*Math.random()-1)*this.instr.noise_fader*u),y*=u/255;var m=this.instr.fx_freq;this.instr.lfo_fx_freq&&(m*=d);var x=i*(y-f)-(l+=(m=1.5*Math.sin(3.141592*m/44100))*f);switch(f+=m*x,this.instr.fx_filter){case 1:y=x;break;case 2:y=l;break;case 3:y=f;break;case 4:y=l+x}if(p=v(_*this.panFreq)*this.instr.fx_pan_amt/512+.5,y*=39*this.instr.env_master,(_*=4)+3<t.length){var h=t[_]+(t[_+1]<<8)+y*(1-p);t[_]=255&h,t[_+1]=h>>8&255,h=t[_+2]+(t[_+3]<<8)+y*p,t[_+2]=255&h,t[_+3]=h>>8&255}}},we.SoundGenerator.prototype.getAudioGenerator=function(e,t){var o=this.attack+this.sustain+this.release-1+32*this.rowLen,n=this;w(o,function(a){n.genSound(e,a,0),R(a,o,n.instr,n.rowLen,function(){t(new we.AudioGenerator(a))})})},we.SoundGenerator.prototype.createAudioBuffer=function(e,t){this.getAudioGenerator(e,function(e){e.getAudioBuffer(t)})},we.MusicGenerator=function(e){this.song=e,this.waveSize=44100*e.songLen},we.MusicGenerator.prototype.generateTrack=function(e,t,o){var n=this;w(this.waveSize,function(a){var s=n.waveSize,r=n.waveSize*Re*2,i=n.song.rowLen,l=n.song.endPattern,f=new we.SoundGenerator(e,i),c=0,_=0,d=0,u=function(){for(var t=new Date;;)if(32!==d){if(_===l-1)return void setTimeout(p,0);var o=e.p[_];if(o){var n=e.c[o-1].n[d];n&&f.genSound(n,a,c)}if(c+=i,d+=1,new Date-t>Ie)return void setTimeout(u,0)}else d=0,_+=1},p=function(){R(a,s,e,i,m)},y=0,m=function(){for(var e=new Date,n=0;y<r;){var s=t[y]+(t[y+1]<<8)+a[y]+(a[y+1]<<8)-32768;if(t[y]=255&s,t[y+1]=s>>8&255,y+=2,(n+=1)%1e3==0&&new Date-e>Ie)return void setTimeout(m,0)}setTimeout(o,0)};setTimeout(u,0)})},we.MusicGenerator.prototype.getAudioGenerator=function(e){var t=this;w(this.waveSize,function(o){var n=0,a=function(){n<t.song.songData.length?(n+=1,t.generateTrack(t.song.songData[n-1],o,a)):e(new we.AudioGenerator(o))};a()})},we.MusicGenerator.prototype.createAudioBuffer=function(e){this.getAudioGenerator(function(t){t.getAudioBuffer(e)})},states={},init=(()=>{lcg=new h(1019),roomNG=new h,roomNG.setSeed(1019),sounds={},soundsLoaded=0,totalSounds=8,score=0,fuelTimer=0,parts=0,last=0,dt=0,now=0,t=0,state="loading",splodes=[],messages=[],help=[],tCounter=0,helpSection=0,credits=!1,paused=!1,transition=!1,gotFirst200=!1,s_titleSong=!1,s_gameSong=!1,s_jump=!1,s_step=!1,Se=new AudioContext,x(),states.loading.init(),player.init(),loop()}),window.addEventListener("keyup",function(e){Key.onKeyup(e)},!1),window.addEventListener("keydown",function(e){Key.onKeydown(e)},!1),window.addEventListener("blur",function(e){paused=!0},!1),window.addEventListener("focus",function(e){paused=!1},!1),loop=(e=>{if(paused)ie=paldrk,B(["PAUSED",P/2,128,3,1,"center","top",4,21,0]);else{ie=te;let e=(new Date).getTime();dt=Math.min(1,(e-last)/1e3),t+=dt,states[state].step(dt),last=e,states[state].render()}m(),requestAnimationFrame(loop)});const Ne=1,Ee=2,Ge=3,qe=4,Te=1,De=2,Ke=3,Le=4,be=1,Ae=8,Oe=9,ke=4,Ce=27,Fe=28,Be=29,Ue=39,Pe=16,ze=P/6,je=P/6*3,Ye=P/6*5,He=z/4,Xe=z/4*2,We=z/4*3;rooms=[{draw:function(e){},specials:function(e){}},{draw:function(e){d(je,Xe,Ye,We,ze,We,be),d(Ye,We,je,Xe,ze,We,be),d(je,Xe,ze,We,Ye,We,be),l(0,We,P,He,be)},specials:function(e){b(),K(0,We,P,He-10,20)}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1]),o(25+325*Math.random(),z-36,Ae),o(25+325*Math.random(),z-36,Ae)},specials:function(e){b()}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,1,1,1,1,1,1,1,1,0,0,0])},specials:function(e){b()}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1])},specials:function(e){b()}},{draw:function(e){O([1,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1])},specials:function(e){A()}},{draw:function(e){O([1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0]),o(200*Math.random()+70,z-40,Ce)},specials:function(e){A(),b()}},{draw:function(e){O([0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,2,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1])},specials:function(e){A()}},{draw:function(e){O([1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1])},specials:function(e){A()}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1])},specials:function(e){b(0,27)}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1])},specials:function(e){A()}},{draw:function(e){O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1],!0)},specials:function(e){A()}},{draw:function(e){O([0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,2,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,2,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1],!0)},specials:function(e){A()}},{draw:function(e){O([1,0,0,0,0,0,0,0,0,2,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,2,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1])},specials:function(e){A()}},{draw:function(e){O([1,1,2,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,2,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1])},specials:function(e){A()}},{draw:function(e){O([1,1,1,1,0,0,0,0,0,0,0,1,1,1,1.1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,2,0,0,0,1,1,0,0,0,0,2,0,0,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1])},specials:function(e){A()}},{draw:function(e){O([1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,2,1,1,1,1,0,0,0,0,0,1,1,2,1,0,0,0,0,0,1,0,0,1,1,2,1,0,0,0,0,0,7,0,0,1,1,2,1,0,0,0,1,1,1,1,1,0,1,2,1,0,0,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1])},specials:function(e){A()}},{draw:function(e){O([1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1])},specials:function(e){A()}},{draw:function(e){O([1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,8,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1])},specials:function(e){A()}},{draw:function(e){let t=roomNG.nextIntRange(100,300),o=roomNG.nextIntRange(50,200),n=roomNG.nextIntRange(30,50);r(t,o,n,be),r(t,o,n-5,0),l(0,200,P,20,be),l(170,200,100,20,0),l(0,0,P,20,be)},specials:function(e){A(),credits=!0,helpSection=4}}],player={init(){this.x=192,this.y=106,this.radius=8,this.hitRadius=8,this.xvel=0,this.yvel=0,this.xspeed=80,this.yspeed=80,this.drag=.8,this.gravity=8,this.maxYvel=400,this.maxXvel=200,this.minYvel=-400,this.minXvel=-200,this.b={},this.facingLeft=!1,this.jumping=!0,this.jumpCooldown=0,this.angle=0,this.mode=Te,this.gunCooldown=0,this.minedFuel=!1,fuelTimer=30,currentRoom=[20,1]},update(e){this.updateB(),this.oldX=this.x,this.oldY=this.y,this.xvel*=player.drag,this.yvel+=player.gravity,this.yvel=this.yvel.clamp(this.minYvel,this.maxYvel),this.xvel=this.xvel.clamp(this.minXvel,this.maxXvel);let t=e*player.xvel,a=e*player.yvel;if(player.x+=t,this.updateB(),this.collides()&&(player.x=player.oldX,player.xvel=.4*-player.xvel),player.y+=a,this.updateB(),this.collides()&&(player.y=player.oldY,player.yvel=.4*-player.yvel),this.updateB(),this.collides()&&(this.collideResolution(),this.updateB(),this.collides()&&(this.collideResolution(),this.updateB())),this.overlapResolution(),this.updateB(),player.yvel>0&&(s_step=!1,(de[V+player.b.x+player.b.bottom*P]>0||de[V+player.b.x+4+player.b.bottom*P]>0||de[V+player.b.x-4+player.b.bottom*P]>0)&&(this.jumping=!1),player.mode==Le)){let e=player.b.width;for(;e--;)de[V+player.b.x+e+player.b.bottom*P]&&(this.jumping=!1)}switch(player.yvel<-10&&(splodes.push(new k(player.x+3+2*Math.random(),player.y+6+2*Math.random(),7,1,19)),splodes.push(new k(player.x-3-2*Math.random(),player.y+6+2*Math.random(),7,1,19)),s_step||(stepSound=y(sounds.step,1,player.x.map(0,P,-1,1),!1,.25),s_step=!0)),player.mode){case Te:player.yspeed=80,player.xspeed=80,fuelTimer>=360&&(fuelTimer=360),(Key.isDown(Key.d)||Key.isDown(Key.RIGHT))&&(player.facingLeft=!1,this.jumping?player.xvel=player.xspeed:player.xvel=0),(Key.isDown(Key.a)||Key.isDown(Key.LEFT))&&(this.facingLeft=!0,this.jumping?player.xvel=-player.xspeed:player.xvel=0),(Key.isDown(Key.w)||Key.isDown(Key.UP)||Key.isDown(Key.z)||Key.isDown(Key.SPACE))&&!this.jumping&&fuelTimer>0&&player.jumpCooldown<0&&(this.jumping=!0,s_jump=!0,player.jumpCooldown=5,player.yvel=-player.yspeed,y(sounds.jump,2.5,player.x.map(0,P,-1,1),!1)),player.angle-=player.xvel/30,player.jumping&&(player.angle-=player.facingLeft?-player.yvel/30:player.yvel/30),player.jumpCooldown--,player.yvel>0&&de[V+player.b.x+player.b.bottom*P]>0&&(this.jumping=!1);break;case De:helpSection=1,player.maxXvel=150,player.minYvel=-300,player.xspeed=150,player.yspeed=260,(Key.isDown(Key.d)||Key.isDown(Key.RIGHT))&&(player.facingLeft=!1,player.xvel=player.xspeed),(Key.isDown(Key.a)||Key.isDown(Key.LEFT))&&(this.facingLeft=!0,player.xvel=-player.xspeed),(Key.isDown(Key.w)||Key.isDown(Key.UP)||Key.isDown(Key.z)||Key.isDown(Key.SPACE))&&!this.jumping&&fuelTimer>0&&(fuelTimer-=1,this.jumping=!0,s_jump=!0,player.yvel=-player.yspeed,y(sounds.jump,2.5,player.x.map(0,P,-1,1),!1));break;case Ke:if(player.maxXvel=150,player.minYvel=-300,player.xspeed=150,player.yspeed=270,helpSection=2,(Key.isDown(Key.d)||Key.isDown(Key.RIGHT))&&(player.facingLeft=!1,player.xvel=player.xspeed),(Key.isDown(Key.a)||Key.isDown(Key.LEFT))&&(this.facingLeft=!0,player.xvel=-player.xspeed),(Key.isDown(Key.w)||Key.isDown(Key.UP)||Key.isDown(Key.SPACE)||Key.isDown(Key.z))&&!this.jumping&&fuelTimer>0&&(fuelTimer-=.7,this.jumping=!0,s_jump=!0,player.yvel=-player.yspeed,y(sounds.jump,2.5,player.x.map(0,P,-1,1),!1)),Key.isDown(Key.x)){fuelTimer-=.01,splodes.push(new k(player.x+(player.facingLeft?-16:16)+(2*Math.random()-1)|0,player.y+(15*Math.random()-8)|0,6,5)),ae=V,r(player.x+(player.facingLeft?-10:10),player.y+(20*Math.random()-15)|0,10,0);let e=5;for(;--e;)splodes.push(new k(player.x+(player.facingLeft?10*Math.random()-30:30+10*Math.random()),player.y+20*Math.random()-10,10+10*Math.random()-5,3*Math.random(),27+2*Math.random()|0,!1,!0));if(Key.isDown(Key.DOWN)||Key.isDown(Key.s)){splodes.push(new k(player.x+(15*Math.random()-8)|0,player.y+16+(2*Math.random()-1)|0,6,5)),ae=V,r(player.x+(20*Math.random()-15)|0,player.y+10,10,0);let e=5;for(;--e;)splodes.push(new k(player.x+10*Math.random(),player.y+30+20*Math.random()-10,10+10*Math.random()-5,3*Math.random(),27+2*Math.random()|0,!1,!0))}player.gunCooldown<0&&(player.gunCooldown=4,y(sounds.zapgun,2.5,player.x.map(0,P,-1,1),!1),S())}player.minedFuel&&(o(player.x+(player.facingLeft?-10:10),player.y-5,Ae),fuelTimer+=25,player.minedFuel=!1),player.gunCooldown--;break;case Le:if(player.maxXvel=250,player.minYvel=-290,player.xspeed=200,player.yspeed=290,fuelTimer=12e8,helpSection=3,(Key.isDown(Key.d)||Key.isDown(Key.RIGHT))&&(player.facingLeft=!1,player.xvel=player.xspeed),(Key.isDown(Key.a)||Key.isDown(Key.LEFT))&&(this.facingLeft=!0,player.xvel=-player.xspeed),(Key.isDown(Key.w)||Key.isDown(Key.UP)||Key.isDown(Key.Z)||Key.isDown(Key.SPACE))&&(player.jumping||(player.yvel+=-player.yspeed*e*5,y(sounds.jet,2.5,player.x.map(0,P,-1,1),!1))),Key.isDown(Key.x)){if(Key.isDown(Key.DOWN)||Key.isDown(Key.s)){splodes.push(new k(player.x+(15*Math.random()-8)|0,player.y+16+(2*Math.random()-1)|0,6,5)),ae=V,n(player.b.x+(player.facingLeft?-10:10),player.b.y)==Oe&&(player.minedFuel=!0),r(player.x+(20*Math.random()-15)|0,player.y+10,10,0);let e=5;for(;--e;)splodes.push(new k(player.x+10*Math.random(),player.y+30+20*Math.random()-10,10+10*Math.random()-5,3*Math.random(),27+2*Math.random()|0,!1,!0))}else{fuelTimer-=.01,splodes.push(new k(player.x+(player.facingLeft?-16:16)+(2*Math.random()-1)|0,player.y+(15*Math.random()-8)|0,6,5)),ae=V,n(player.b.x+(player.facingLeft?-10:10),player.b.y)==Oe&&(player.minedFuel=!0),r(player.x+(player.facingLeft?-10:10),player.y+(20*Math.random()-15)|0,10,0);let e=5;for(;--e;)splodes.push(new k(player.x+(player.facingLeft?10*Math.random()-30:30+10*Math.random()),player.y+20*Math.random()-10,10+10*Math.random()-5,3*Math.random(),27+2*Math.random()|0,!1,!0))}player.gunCooldown<0&&(player.gunCooldown=4,y(sounds.zapgun,2.5,player.x.map(0,P,-1,1),!1),S())}player.gunCooldown--}player.x>P&&(player.x=16,I(Ee)),player.x<0&&(player.x=P-16,I(Ne)),player.y>z&&(player.y=16,I(qe)),player.y<0&&(player.y=z-16,I(Ge))},draw(e){switch(player.mode){case Te:se=Q,p(0,0,32,32,player.x,player.y,1,player.angle);break;case De:se=Q,u(32,0,32,32,player.b.x+2-16,player.b.y+5-20),u(0,0,32,32,player.b.x-16,player.b.y-20,player.facingLeft);break;case Ke:se=Q,u(32,0,32,32,player.b.x+2-16,player.b.y+5-20),u(96,0,32,32,player.b.x+5-16+(this.facingLeft?-12:0),player.b.y+3-20,this.facingLeft),u(0,0,32,32,player.b.x-16,player.b.y-20,player.facingLeft);break;case Le:se=Q,u(128,0,32,40,player.b.x+5-16,player.b.y+4-20),u(32,0,32,32,player.b.x+2-16,player.b.y+5-20),u(64,0,32,32,player.b.x+5-16,player.b.y+4-20),u(96,0,32,32,player.b.x+5-16+(this.facingLeft?-12:0),player.b.y+3-20,this.facingLeft),u(0,0,32,32,player.b.x-16,player.b.y-20,player.facingLeft)}},collides(){this.b.x+this.hitRadius>=P-1&&player.xvel>0&&(this.x=P+1);for(var e=-this.hitRadius;e<this.hitRadius;e++)for(var t=-this.hitRadius;t<this.hitRadius;t++){let o=de[V+(this.b.x+e)+(this.b.y+t)*P];if(o==be||o==ke||o==Oe)return!0}return!1},overlaps(){for(var e=-this.radius;e<this.radius;e++)for(var t=2*-this.radius;t<this.radius;t++){let o=de[V+(this.b.x+e)+(this.b.y+t)*P];if(o)return{x:this.b.x+e,y:this.b.y+t,o:o}}return!1},updateB(){this.b={left:this.x-this.hitRadius|0,right:this.x+this.hitRadius|0,top:this.y-this.hitRadius|0,bottom:this.y+this.hitRadius|0,width:2*this.hitRadius,height:2*this.hitRadius,x:0|this.x,y:0|this.y}},collideResolution(e){ae=V,l(player.x-32,player.y-32,64,64,0),S()},overlapResolution(e){let t=player.overlaps();switch(t.o){case Ae:ae=V,de[V+t.x+t.y*P],r(t.x,t.y,3,0),ae=X,splodes.push(new k(t.x,t.y)),y(sounds.fuelget,2,player.x.map(0,P,-1,1),!1);let e=10;for(;--e;)splodes.push(new k(192+50*Math.random()-25,14+4*Math.random()-2,10+4*Math.random()-2,10+4*Math.random()-2,2*Math.random()-1+9|0,!1,!0));fuelTimer+=25;break;case Ce:player.mode==Te&&(de[V+t.x+t.y*P],ae=V,r(t.x,t.y,3,0),ae=X,player.mode=De,messages.push(new C("AUX BOOSTERS ACQUIRED. ENERGY CAPACITY INCREASED.")),y(sounds.fuelget,1,player.x.map(0,P,-1,1),!1));break;case Fe:player.mode==De&&(de[V+t.x+t.y*P],ae=V,r(t.x,t.y,3,0),ae=X,player.mode=Ke,y(sounds.fuelget,1,player.x.map(0,P,-1,1),!1),messages.push(new C("DISINTIGRATE TOOL ACQUIRED. PRESS X TO USE")));break;case Be:player.mode==Ke&&(de[V+t.x+t.y*P],ae=V,r(t.x,t.y,3,0),ae=X,player.mode=Le,y(sounds.fuelget,1,player.x.map(0,P,-1,1),!1),messages.push(new C("WHERE WE ARE GOING, WE DONT NEED WHEELS")))}}},k.prototype.draw=function(e){if(++this.size>this.maxSize)return splodes.splice(e,1);this.square?this.filled?l(this.x-this.size/2,this.y-this.size/2,this.size,this.size,this.color):i(this.x-this.size/2,this.y-this.size/2,this.size,this.size,this.color):this.filled?r(this.x,this.y,this.size,this.color):s(this.x,this.y,this.size,this.color),0==--this.counter&&(this.size++,this.counter=this.speed)},C.prototype.draw=function(e){if(ae=H,this.time--,this.counter+=2,this.time<0)return messages.splice(e,1);this.string=this.text.substring(0,this.counter),B(credits?[this.string,P/2,40+22*e,2,2,"center","top",2,8]:[this.string,P/2,20+12*e,2,2,"center","top",1,this.color]),B([this.string,P/2,20+12*e,2,2,"center","top",1,this.color])},states.gameover={step:function(e){Key.isDown(Key.r)&&(state="menu")},render:function(t){ae=0,e(0),B(["CRITICAL SYSTEM\nFAILURE",192,80,8,15,"center","top",3,27])}},states.menu={step:function(e){if(s_titleSong||(titleSong=y(sounds.titleMusic,1,0,!0),s_titleSong=!0),Key.justReleased(Key.p)){let e=10;for(;e--;)splodes.push(new k(player.x+40*Math.random()-20,player.y+40*Math.random()-20,200,1,5)),splodes.push(new k(player.x+40*Math.random()-20,player.y+40*Math.random()-20,200,1,8)),splodes.push(new k(player.x+40*Math.random()-20,player.y+40*Math.random()-20,32,1,21,!0)),splodes.push(new k(player.x+40*Math.random()-20,player.y+40*Math.random()-20,25,1,0,!0));y(sounds.boom,1,player.x.map(0,P,-1,1),!1),I(),state="game",titleSong.sound.stop()}},render:function(n){ae=V,e(0),ae=0,e(0),ae=X,e(0),ae=W,e(0),ae=H,e(0),ae=V,l(0,128,P,10,2),B(["GREEBLE",P/2,50,14,20,"center","top",7,2]),ae=X,se=V,u(),ae=J,lcg.setSeed(21);for(a=6e3;--a;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);de[V+e+t*P]&&l(e+lcg.nextIntRange(-2,2),t+lcg.nextIntRange(-1,1),1,lcg.nextIntRange(0,3),lcg.nextIntRange(24,25))}_(J,W,25,20,23,18),ae=X,se=J,u(),se=W,u(),ae=J,lcg.setSeed(20);for(var a=6e3;--a;){let e=lcg.nextIntRange(0,P),t=lcg.nextIntRange(0,z);de[V+e+t*P]&&l(e+lcg.nextIntRange(-1,1),t+lcg.nextIntRange(0,1),lcg.nextIntRange(1,5),1,lcg.nextIntRange(22,24))}_(J,W,25,20,23,18),ae=X,se=J,u(),se=W,u(),se=Q;let s=15;for(;--s;)u(160,0,32,40,(32*s+16*t|0)%P,90),(32*s+16*t|0)%P==P-1&&(splodes.push(new k(16,100)),splodes.push(new k(16,116)));B(["PRESS P TO CONTINUE",P/2,230,2,2,"center","top",1,21]),ae=H;for(r=8e3;--r;)o((lcg.nextIntRange(0,384)+10*t|0)%384,lcg.nextIntRange(0,256),1);for(r=400;--r;)o((lcg.nextIntRange(0,384)+20*t|0)%384,lcg.nextIntRange(0,256),26);for(var r=100;--r;)o((lcg.nextIntRange(0,384)+30*t|0)%384,lcg.nextIntRange(0,256),21);_(X,H,15),se=X,u(),splodes.forEach(function(e,t,o){e.draw(t)})}},states.game={messageDelay:240,messageIndex:0,helpLoops:[["CRITICAL SYSTEM FAILURE IMMINENT.","FIND FUEL SOURCE.","AUX JETS OFFLINE. HOLD LEFT/RIGHT\nTAP JUMP TO MOVE"],["FIND MORE FUEL","SEEK OUT REMAINING BODY COMPONENTS"],["DISINTEGRATOR ONLINE. PRESS X TO USE","FIND MISSING COMPONENTS TO INCREASE MOBILITY","PRESS DOWN WHILE USING TO DIG DOWNWARD"],["THRUSTERS ONLINE. FUSION REACTOR ONLINE."],["OOH YOU FOUND A SECRET","...","THANKS FOR PLAYING GREEBLE","A JS13K 2017 ENTRY BY RYAN MALM","SHOUT OUT TO A FEW CODERS...","TRASEVOL DOG \nYOU ARE AN INSPIRATION","XEM, CANTELOPE, P01, XEN\nJS GOLFERS EXTROARDINAIRE"]],step(e){credits&&(helpSection=4),s_gameSong||(s_gameSong=!0,gamesong=y(sounds.gameMusic,1,0,!0)),Key.isDown(Key.r)&&(player.init(),state="menu"),player.update(e),fuelTimer-=e,fuelTimer>200&&!gotFirst200&&(gotFirst200=!0,helpSection=1),credits&&(helpSection=4),--this.messageDelay<0&&(messages.push(new C(this.helpLoops[helpSection][this.messageIndex],fuelTimer<50?27:9,240)),this.messageDelay=240,++this.messageIndex>this.helpLoops[helpSection].length&&(this.messageIndex=0))},render(t){if(ae=H,e(0),se=ee,u(),L(),ae=X,e(0),N(),se=Z,u(),player.draw(),se=$,u(),ae=H,fuelTimer>0){if(fuelTimer>15)se=X,u();else if(Math.random()>fuelTimer/15){ae=H,e(0);let t=1e3;for(;t--;)o(Math.random()*P,Math.random()*z,27);for(t=6e3;t--;){let e=Math.random()*P,t=Math.random()*z;o(e,t,de[X+e+t*P]>0?28:0)}}}else gamesong.sound.stop(),state="gameover";ae=H,player.mode==Le?(fueltext="INFINITE",fuelcolor=19):(fueltext=fuelTimer.toFixed(2).toString(),fuelcolor=fuelTimer<150?27:10),B([fueltext,P/2,10,2,2,"center","top",1,fuelcolor]),splodes.forEach(function(e,t,o){e.draw(t)}),messages.forEach(function(e,t,o){e.draw(t)})}},states.loading={init:function(e){var t=new we.MusicGenerator(pe);t.createAudioBuffer(function(e){sounds.titleMusic=e,soundsLoaded++}),(t=new we.MusicGenerator(ye)).createAudioBuffer(function(e){sounds.gameMusic=e,soundsLoaded++}),(t=new we.MusicGenerator(xe)).createAudioBuffer(function(e){sounds.zapgun=e,soundsLoaded++}),(t=new we.MusicGenerator(he)).createAudioBuffer(function(e){sounds.fuelget=e,soundsLoaded++});var o=new we.SoundGenerator(me);o.createAudioBuffer(147,function(e){Se.createBufferSource();sounds.jump=e,soundsLoaded++}),(o=new we.SoundGenerator(ve)).createAudioBuffer(147,function(e){Se.createBufferSource();sounds.boom=e,soundsLoaded++}),(o=new we.SoundGenerator(ge)).createAudioBuffer(147,function(e){Se.createBufferSource();sounds.step=e,soundsLoaded++}),(o=new we.SoundGenerator(ue)).createAudioBuffer(130,function(e){Se.createBufferSource();sounds.jet=e,soundsLoaded++})},step:function(e){Key.justReleased(Key.z)&&soundsLoaded==totalSounds&&(state="menu"),--tCounter<0&&soundsLoaded!=totalSounds&&(tCounter=9,splodes.push(new k(P/2+100*Math.cos(t),z/2+70*Math.sin(t),300,1,12)))},render:function(o){ae=H,e(0),soundsLoaded!=totalSounds?(ae=H,e(0),splodes.forEach(function(e){e.draw()}),B(["LOADING...",P/2,128+20*Math.sin(t),3,2,"center","top",3,9])):(splodes.forEach(function(e){e.draw()}),B(["HEADPHONES RECOMMENDED.\nPRESS Z TO CONTINUE",P/2,128+20*Math.sin(t),2,10,"center","top",2,9]))}},Key={_pressed:{},_released:{},LEFT:37,UP:38,RIGHT:39,DOWN:40,SPACE:32,ONE:49,TWO:50,THREE:51,FOUR:52,a:65,c:67,w:87,s:83,d:68,z:90,x:88,f:70,p:80,r:82,isDown(e){return this._pressed[e]},justReleased(e){return this._released[e]},onKeydown(e){this._pressed[e.keyCode]=!0},onKeyup(e){this._released[e.keyCode]=!0,delete this._pressed[e.keyCode]},update(){this._released={}}},window.onload=init()}();