memoscan
← all memos

Memo 0xb5e3693e…27c8ca on Ethereum

function drawSky($){let e=horizon_y-250,r=getColor(R.random_num(.6,.8)),o=getColor(R.random_num(.9,1));skyGlow&&(r=getSunColor(0),o=getSunColor(1)),drawGradientRect($,0,e,myWidth,0,o,r,0,4,10),$.noStroke(),$.fill(o),$.rect(0,e-5,myWidth,myHeight)}function drawStars($,e){let r=R.random_int(80,200),o=getSunColor(1),t=getSunColor(0),n=[];for(let l=0;l<r;l++){let a=R.random_num(-200,myWidth+200),d=R.random_num(-200,myHeight),_=3*pow(R.random_dec(),2)+1;n.push({x:a,y:d,r:_})}if($.noStroke(),1==e)for(let m of n){let i=m.x,u=m.y,s=m.r,f=R.random_dec();$.fill(lerpColor(o,t,f)),$.circle(i,u,s),drawRadialGradient($,i,u,s,10*s,getSunColor(f,.5),getSunColor(f,0),20,2)}else if(2==e){let c=R.random_int(50,350),x=R.random_bool(.5)?2.5*myWidth:-(2*myWidth),w=1.3*myHeight;for(let h=0;h<c;h++){let S=R.random_num(-100,myWidth+100),k=R.random_num(-100,myHeight+100),y=createVector(S-x,k-w),p=R.random_num(100,500);y.normalize();let g=R.random_dec(),v=3*pow(R.random_dec(),2)+1;$.fill(lerpColor(o,t,g)),$.circle(S,k,v),drawRadialGradient($,S,k,v,10*v,getSunColor(g,.5),getSunColor(g,0),20,2),R.random_bool(.5)&&(v*=.5,$.stroke(lerpColor(o,t,R.random_dec())),$.strokeWeight(v),drawBrokenLine($,S,k,S+y.x*p,k+y.y*p,getSunColor(1,0),getSunColor(1,1),5,5,!1))}}else if(3==e)for(let b of n){let P=b.x,z=b.y,W=z-R.random_num(100,500),C=R.random_num(3,25),F=.1*b.r,D=R.random_dec();$.fill(lerpColor(o,t,D)),$.circle(P,z,F),drawRadialGradient($,P,z,F,10*F,getSunColor(D,.5),getSunColor(D,0),20,2),$.stroke(lerpColor(o,t,R.random_dec())),$.strokeWeight(F),drawBrokenLine($,P,z,P,W,getSunColor(1,0),getSunColor(1,1),C,.5*C,!1)}else if(4==e){let H=halfWidth,M=sun_y;for(let T of(print("num stars = "+n.length),n)){let B=T.x,I=T.y,U=T.r,q=.5*U,G=2*dist(B,I,H,M),j=R.random_dec(),A=atan2(I-M,B-H);$.fill(lerpColor(o,t,j)),$.circle(B,I,U),drawRadialGradient($,B,I,U,10*U,getSunColor(j,.5),getSunColor(j,0),20,2),$.stroke(getSunColor(1,.2)),$.strokeWeight(q),$.arc(H,M,G,G,A,A+HALF_PI)}}else if(5==e)for(let E of n){let J=E.x,K=E.y,L=E.r;R.random_dec(),$.fill(getColor(0)),$.circle(J,K,L),drawRadialGradient($,J,K,L,10*L,getColor(0,.5),getColor(0,0),20,2)}$.noFill(),$.noStroke()}function drawStarFall($){let e=R.random_int(35,230),r=horizon_y-1500,o=myHeight-200,t=getSunColor(1),n=getSunColor(0);for(let l=0;l<e;l++){let a=$;R.random_bool(.5)&&(a=mg),map(l,0,e-1,0,1);let d=R.random_num(0,myWidth),_=R.random_num(r,o),m=_-R.random_num(100,500),i=R.random_num(3,25),u=3*pow(R.random_dec(),2)+1;a.noStroke(),a.fill(lerpColor(t,n,R.random_dec())),a.circle(d,_,u),drawRadialGradient(a,d,_,u,10*u,getSunColor(1,.5),getSunColor(0,0),20,2),a.stroke(lerpColor(t,n,R.random_dec())),a.strokeWeight(.1*u),drawBrokenLine(a,d,_,d,m,getSunColor(1,0),getSunColor(0,1),i,.5*i,!1)}mg.noStroke()}function drawSun($,e,r,o){$.noStroke();let t=halfWidth;if(0==SUN_TYPE);else if(1==SUN_TYPE||2==SUN_TYPE)drawRadialGradient($,t,e,0,r+r*(.5*o+.3)*15,getSunColor(1,.5),getSunColor(0,0),4,25),o>.5&&drawRadialGradient($,t,e,r,1.3*r,getSunColor(1),getSunColor(1,0),8,5),$.fill(getSunColor(1)),$.circle(t,e,r);else if(3==SUN_TYPE){let n=portals[0];n.x;let l=n.y,a=n.d,d=l-.5*a,_=sun_y;(n.y>.8*myHeight||n.d<.5*myWidth)&&(_=myHeight-d,a=min(.5*a,400)),R.random_bool(.5)&&(a=R.random_num(100,300)),drawGradientCircle(mg,t,e,r,getColor(.4),getColor(.3),.5)}$.noStroke()}function drawSunParticles($,e,r,o){let t=Math.sign(R.random_dec()-.5),n=getColor(.2),l=int(2*o);for(let a=0;a<l;a++){map(a,0,l-1,0,1);let d=R.random_num(0,TWO_PI),_=e+cos(d)*o,m=r+sin(d)*o;map(m,r-o,r+o,0,1);let i=atan2(m-r,_-e)+HALF_PI*t,u=R.random_num(-.001,.001),s=R.random_num(-.0001,1e-4),f=R.random_num(-.00001,1e-5),c=R.random_num(1.5,2.5),x=_,w=m,h=500*pow(R.random_dec(),11)+7;for(let S=0;S<h;S++){let k=map(S,0,h-1,0,1);_+=cos(i)*c,m+=sin(i)*c,$.stroke(n),$.strokeWeight(2*(1-k)),$.point(_,m),s+=f,u+=s,i+=u,x=_,w=m}let y=R.random_num(1,3);drawRadialGradient($,_,m,y,10*y,getColor(.2,.5),getColor(.2,0),20,2),$.fill(getColor(.2)),$.circle(_,m,y)}$.noStroke()}function drawDistantClouds($){let e=getColor(1),r=getColor(.85);cloudGlow&&(e=getSunColor(1),r=getColor(.85)),cloudiness>.5?drawStormClouds($,e,r):cloudiness>.2&&drawFlatClouds($,e,r)}function drawStormClouds($,e,r){$.noStroke();let o=int(map(cloudiness,.5,1,2,4));for(let t=0;t<o;t++){let n=map(t,0,o,0,1,!0),l=lerpColor(e,r,n),a=R.random_num(0,500),d=map(n,0,1,.5*myWidth,.7*myWidth),_=halfWidth,m=horizon_y-2*d+.8*d*n,i=[];for(let u=0;u<225;u++){let s=(1-map(u,0,224,0,1))*PI,f=cos(s),c=sin(s),x=_+f*d,w=m+c*d,h=getNoise(x,w+d,.002),S=getNoise(x,w+d+a,.005)*h,k=getNoise(x,w+d+2*a,.01),y=300*h+480*S+150*k;x=_+f*(d+y),w=m+c*(d+y);let p=R.random_num(40,80);R.random_bool(.045)&&(p=R.random_num(110,200)),i.push({x:x,y:w,r:p})}$.fill(l),$.beginShape(),$.vertex(-100,m);for(let g=0;g<225;g++){let v=i[g];$.vertex(v.x,v.y)}$.vertex(myWidth+100,m),$.vertex(myWidth+100,myHeight),$.vertex(-100,myHeight),$.endShape(),$.fill(l);for(let b=0;b<i.length;b++){let P=i[b];$.circle(P.x,P.y,P.r)}}$.noStroke()}function drawFlatClouds($,e,r){$.noStroke();let o=int(map(cloudiness,.2,.5,2,4));for(let t=0;t<o;t++){let n=map(t,0,o,0,1,!0),l=lerpColor(e,r,n),a=R.random_num(-400,0),d=map(n,0,1,horizon_y-350,horizon_y-100),_=R.random_num(1800,2400),m=int(map(_,300,800,50,100)),i=[],u=0;for(let s=0;s<m;s++){let f=map(s,0,m-1,0,1),c=sin(f*PI+n),x=a+f*_,w=d,h=.75*getNoise(x+500*n,w,.01)+.25;w-=c*h*_*.25,i.push({x:x,y:w,n:h}),u=w}$.fill(l),$.beginShape(),$.vertex(0,u);for(let S=0;S<m;S++){let k=i[S];$.vertex(k.x,k.y)}$.vertex(myWidth,u),$.vertex(myWidth,myHeight),$.vertex(0,myHeight),$.endShape(),shuffle(i,!0);for(let y=0;y<i.length;y++){let p=i[y],g=R.random_num(20,150)*p.n;p.n>.7&&R.random_bool(.1)&&(g*=2),$.fill(l),$.circle(p.x,p.y,g)}}$.noStroke()}function drawClouds($,e,r,o){if(cloudiness>.05){let t=R.random_int(6*cloudiness,14*cloudiness),n=horizon_y+e-50,l=horizon_y+e+50;for(let a=0;a<t;a++){let d=R.random_num(-100,myWidth+100),_=R.random_num(n,l),m=R.random_num(100,300)*R.random_num(r,2*r),i=m/6,u=d-m/2,s=d+m/2,f=int(m/9),c=[];$.noStroke(),$.fill(o),$.beginShape();for(let x=0;x<f;x++){let w=map(x,0,f-1,0,1),h=lerp(u,s,w),S=1-(.5*cos(w*TWO_PI)+.5),k=lerp(_,_-(i+R.random_num(-i/3,i/3)),S),y=createVector(h,k);$.vertex(h,k),append(c,y)}$.vertex(s+R.random_num(10,20),_+2),$.vertex(s+R.random_num(30,50),_+5),$.vertex(u-R.random_num(30,50),_+5),$.endShape();for(let p=1;p<f-1;p++){let g=map(p,0,f-1,0,1),v=.7*sin(g*PI)+.3,b=c[p-1],P=c[p],z=c[p+1],W=b.x-P.x,C=z.x-P.x,F=b.y-P.y,D=z.y-P.y,H=atan2(F,W),M=atan2(D,C),T=(.75*pow(R.random_dec(),2)+.25)*(m/10+20)*v;R.random_bool(.1)&&(T*=1.5),P.y<_-.3*T?($.fill(o),$.circle(P.x,P.y,T)):($.fill(o),$.arc(P.x,P.y+.5,T,T,H,M))}$.stroke(o),$.strokeWeight(1),drawBrokenLine($,u+R.random_num(-250,0),_+4,s+R.random_num(0,150),_+4,o,o,50,5,!1),drawBrokenLine($,u+R.random_num(-50,50),_+8,s+R.random_num(-50,50),_+8,o,o,50,5,!1),drawBrokenLine($,u+R.random_num(-50,50),_+10,s+R.random_num(-50,50),_+10,o,o,50,5,!1)}}$.noStroke()}function drawDistantPeaks($,e,r,o,t){let n=R.random_int(3,4),l=.1*r;for(let a=0;a<n;a++){let d=map(a,0,n-1,0,1),_=R.random_int(3,5),m=[],i=horizon_y+e+50*d,u=i-R.random_num(r,2*r)*(1-.5*d);for(let s=0;s<_;s++){let f;if(0==s)f=R.random_num(-300,-50);else if(s==_-1)f=myWidth+R.random_num(50,300);else do f=R.random_num(200*s,(s+1)*350);while(m.some($=>100>abs($.x-f)));let c=R.random_num(i,u);m.push({x:f,y:c})}m.sort(($,e)=>$.x-e.x);let x=[],w=lerpColor(o,t,d);$.fill(w),$.noStroke(),$.beginShape();let h,S;for(let k=0;k<m.length-1;k++){let y=m[k].x,p=m[k].y,g=m[k+1].x,v=m[k+1].y,b=dist(y,p,g,v),P=b/5,z=r*(b/400);for(let W=0;W<=1;W+=1/P){let C=W*W,F=1-W,D=F*F;h=D*y+2*F*W*((2*y+g)/3)+C*g,S=D*p+2*F*W*((2*p+v)/3+z)+C*v,S+=getNoise(h,S,.04)*l,$.vertex(h,S),x.push({x:h,y:S})}}$.vertex(myWidth,S),$.vertex(myWidth,myHeight),$.vertex(0,myHeight),$.endShape(),drawGradientRect($,0,horizon_y-100,myWidth,horizon_y-200,getColor(1,.5*(1-d)),getColor(1,0),0,.5,4)}$.noStroke()}function drawDistantBarrenPeaks($,e,r,o,t){let n=R.random_int(3,5),l=.2*r;for(let a=0;a<n;a++){let d=map(a,0,n-1,0,1),_=R.random_int(3,5),m=[],i=horizon_y+e+50*d,u=i-R.random_num(r,2*r)*(1-.5*d),s=horizon_y+50*d;for(let f=0;f<_;f++){let c;if(0==f)c=R.random_num(-300,-50);else if(f==_-1)c=myWidth+R.random_num(50,300);else do c=R.random_num(200*f,(f+1)*350);while(m.some($=>100>abs($.x-c)));let x=R.random_num(i,u);m.push({x:c,y:x})}m.sort(($,e)=>$.x-e.x);let w=[],h=lerpColor(o,t,d);$.fill(h),$.noStroke(),$.beginShape();let S,k;for(let y=0;y<m.length-1;y++){let p=m[y].x,g=m[y].y,v=m[y+1].x,b=m[y+1].y,P=dist(p,g,v,b),z=P/15,W=r*(P/400);for(let C=0;C<=1;C+=1/z){let F=C*C,D=1-C,H=D*D;S=H*p+2*D*C*((2*p+v)/3)+F*v,k=H*g+2*D*C*((2*g+b)/3+W)+F*b,k+=getNoise(S,k,.04)*l,k=min(s,k),$.vertex(S,k),w.push({x:S,y:k})}}$.vertex(myWidth,k),$.vertex(myWidth,myHeight),$.vertex(0,myHeight),$.endShape(),drawGradientRect($,0,s,myWidth,u,getColor(1,.5*(1-d)),getColor(1,0),0,.5,4)}$.noStroke()}function drawHills($,e,r,o,t){$.noStroke();let n=R.random_int(3,6);for(let l=0;l<n;l++){let a=[],d=map(l,0,n-1,0,1),_=horizon_y+e+200*d+R.random_num(-50,50),m=l%2==0?-1:1;R.random_bool(.4)&&(m*=-1);let i=map(d,0,1,lerp(minDist,maxDist,.9),lerp(minDist,maxDist,.7)),u=fov/(fov+i),s=map(i,minDist,maxDist,1,0),f=lerpColor(o,t,d);$.fill(f),$.beginShape();for(let c=0;c<50;c++){let x=map(c,0,49,0,1),w=x*myWidth,h=(x-.5)*200*m*r;h+=33*sin(9*x+50*d),$.vertex(w,_+h);let S=map(d,0,1,n,2);for(let k=0;k<S;k++){let y=w+R.random_num(-30,30),p=_+h+R.random_num(5,15)*(l+1),g=u*map(d,0,1,.5,1);a.push({id:5,type:0,x:y,y:p,z:i,s:g,zper:s,cd:f})}}for(let v of($.vertex(myWidth,myHeight),$.vertex(0,myHeight),$.endShape(),a))drawTree($,v,v.cd,v.cd)}}function drawGround($){$.strokeWeight(4);let e=(myHeight-horizon_y)/3,r=myWidth/200;for(let o=0;o<200;o++){let t=map(o,0,199,0,1),n=map(t,0,1,0,myWidth),l=n+r;for(let a=0;a<e;a++){let d=map(a,0,e-1,0,1),_=map(d,0,1,horizon_y,myHeight),m=getZ(_),i=getLighting(n,_,m),u=lerpColor(getGroundColor(m),getSunColor(0),i);$.stroke(u),$.line(n,_,l,_)}}PORTAL_GLOW&&drawPath($),$.noStroke()}function drawPortal($,e){0==PORTAL_TYPE?drawCircleFilledPortal($,e):1==PORTAL_TYPE?(drawTriangleFilledPortal($,e),PORTAL_GLOW&&drawPortalUpwardDrips($,e)):2==PORTAL_TYPE?drawSquareFilledPortal($,e):3==PORTAL_TYPE?(drawPortalScreen($,e),drawPortalParticles($,e)):4==PORTAL_TYPE?(drawMagicPortal($,e,1),drawPortalParticles($,e)):5==PORTAL_TYPE?(drawPortalScreen($,e),drawMagicPortal($,e,.88),drawPortalParticles($,e)):6==PORTAL_TYPE?(drawTrianglePortal($,e),R.random_bool(.7)&&drawPortalUpwardDrips($,e)):7==PORTAL_TYPE&&drawHole($,e)}function drawCircleFilledPortal($,e){let r=e.x,o=e.y,t=e.z;e.w;let n=e.d,l=.5*n;o-=l;let a=getSunColor(0),d=getSunColor(1);PORTAL_GLOW?drawRadialGradient($,r,o,n-25,2*n,getSunColor(0,.6),getSunColor(0,0),14,25):(a=getGroundColor(t,.15),d=getGroundColor(t)),drawGradientCircle($,r,o,l,a,d,.5)}function drawTriangleFilledPortal($,e){$.strokeWeight(1),e.id;let r=e.x,o=e.y,t=e.z,n=e.d,l=getSunColor(0),a=getSunColor(1);PORTAL_GLOW||(l=getGroundColor(t),a=getGroundColor(t,.15));let d=n,_=d/34,m=.5*_,i=r-.5*d,u=r,s=o,f=o-.866*d;for(let c=0;c<34;c++){let x=map(c,0,34,0,1),w=lerp(i,u,x),h=w+m,S=lerp(s,f,x),k=S-.866*_,y=lerpColor(l,a,x);$.fill(y),$.stroke(y),$.beginShape(),$.vertex(w,S),$.vertex(h,k),$.vertex(myWidth-h,k),$.vertex(myWidth-w,S),$.endShape(CLOSE)}$.noStroke()}function drawSquareFilledPortal($,e){let r=e.x,o=e.y,t=e.z,n=e.d,l=r-.5*n,a=r+.5*n;lerp(l,a,.3);let d=myHeight-o,_=getSunColor(0),m=getSunColor(1);PORTAL_GLOW||(_=getGroundColor(t),m=getGroundColor(t,.15)),drawGradientRect($,l,o,a,d,_,m,0,2,2)}function drawCubePortal($,e){let r=e.x,o=e.y;e.z;let t=e.d,n=.5*t,l=r-n,a=r+n,d=o,_=d-t,m=l+50,i=a-50,u=d-5,s=_+65;$.stroke(getSunColor(0)),$.strokeWeight(2),$.line(l,d,a,d),$.line(l,d,l,_),$.line(l,_,a,_),$.line(a,d,a,_),$.line(m,u,i,u),$.line(m,u,m,s),$.line(m,s,i,s),$.line(i,u,i,s),$.line(l,d,m,u),$.line(a,d,i,u),$.line(l,_,m,s),$.line(a,_,i,s)}function drawBasicPortal($,e){let r=getSunColor(0),o=getSunColor(1);$.strokeCap(SQUARE),$.strokeWeight(1);let t=e.x,n=e.y;e.z;let l=e.d,a=e.w,d=.5*l,_=d-a,m=_-a*R.random_num(.1,.2);n-=d;let i,u=4*(2*R.random_int(11,17)),s=[],f=[],c=[],x=.6*PI;for(let w=0;w<u;w++){let h=map(w,0,u,x,TWO_PI+.4*PI),S=cos(h),k=sin(h);s.push({x:t+S*d,y:n+k*d,t:h}),f.push({x:t+S*_,y:n+k*_,t:h}),c.push({x:t+S*m,y:n+k*m,t:h})}for(let y=0;y<s.length-1;y++){let p=y,g=y+1,v=s[p],b=s[g],P=f[g],z=f[p],W=map((b.y+P.y)*.5,n+_,n-_,0,1),C=lerpColor(r,o,W);$.stroke(C),$.fill(C),$.beginShape(),$.vertex(v.x,v.y),$.vertex(b.x,b.y),$.vertex(P.x,P.y),$.vertex(z.x,z.y),$.endShape()}for(let F=0;F<f.length-1;F++){let D=F,H=F+1,M=f[D],T=f[H],B=c[H],I=c[D],U=map((T.y+B.y)*.5,n+_,n-_,0,1),q=lerpColor(o,r,U);$.stroke(q),$.fill(q),$.beginShape(),$.vertex(M.x,M.y),$.vertex(T.x,T.y),$.vertex(B.x,B.y),$.vertex(I.x,I.y),$.endShape()}$.noStroke()}function drawMagicPortal($,e,r){$.noFill();let o=e.x,t=e.y,n=e.z,l=e.d;e.w;let a=.5*l;t-=a,a*=r;let d=map(n,minDist,maxDist,1,0),_=pow(d,5),m=[],i=[],u=[R.random_int(2,4),R.random_int(2,6),R.random_int(4,8),180],s=[R.random_bool(.5),R.random_bool(.5),R.random_bool(.5),!1];for(let f=0;f<3;f++){let c=map(f,0,2,0,1,!0),x=pow(c,5),w=map(c,0,1,30,.5)*_,h=getSunColor(x,x);$.strokeWeight(w);for(let S=0;S<u.length;S++){let k=drawPolygon($,u[S],o,t,a,h,s[S]);m.push(k)}}for(let y=0;y<m.length;y++){let p=m[y];for(let g=0;g<150;g++){let v=getPointOnPolygon(p,R.random_dec());i.push(v)}}for(let b=0;b<i.length;b++)for(let P=0;P<1;P++){let z=i[b],W=pow(R.random_num(0,1),15),C=pow(R.random_num(0,1),15);W*=R.random_bool(.5)?-1:1,C*=R.random_bool(.5)?-1:1;let F=z.x+25*W,D=z.y+25*C;$.stroke(getSunColor(R.random_num(0,.3))),$.strokeWeight(R.random_num(1,2)*d),$.point(F,D)}$.noStroke()}function drawTrianglePortal($,e){let r=getSunColor(0),o=getSunColor(1),t=e.x,n=e.y;e.z;let l=e.d;e.w;let a=l,d=.5*a,_=a/20,m=.5*_,i=t-d,u=t,s=t+d,f=n,c=n-.866*a;for(let x=0;x<20;x++){let w=map(x,0,20,0,1),h=lerp(i,s,w),S=h+m,k=h+_,y=S+_,p=f,g=p-.866*_;$.fill(r),$.strokeWeight(1),$.stroke(r),abs(S-halfWidth)>.15*a&&($.beginShape(),$.vertex(h,p),$.vertex(S,g),$.vertex(k,p),$.endShape(CLOSE)),abs(k-halfWidth)>.15*a+.5*_&&x<19&&($.beginShape(),$.vertex(S,g),$.vertex(k,p),$.vertex(y,g),$.endShape(CLOSE))}for(let v=1;v<20;v++){let b=map(v,0,20,0,1),P=lerp(i,u,b),z=P+m,W=P+_,C=z+_,F=lerp(f,c,b),D=F-.866*_,H=lerpColor(r,o,b);$.fill(H),$.strokeWeight(1),$.stroke(H),$.beginShape(),$.vertex(P,F),$.vertex(z,D),$.vertex(W,F),$.endShape(CLOSE),v<19&&($.beginShape(),$.vertex(z,D),$.vertex(W,F),$.vertex(C,D),$.endShape(CLOSE)),P=myWidth-P,z=myWidth-z,W=myWidth-W,C=myWidth-C,v<19&&($.beginShape(),$.vertex(W,F),$.vertex(z,D),$.vertex(P,F),$.endShape(CLOSE)),v<18&&($.beginShape(),$.vertex(C,D),$.vertex(W,F),$.vertex(z,D),$.endShape(CLOSE))}}function drawHole($,e){let r=e.x,o=e.y,t=3*e.d,n=.5*t,l=.125*t,a=getGroundColor(e.z),d=getGroundColor(e.z,-.25),_=r-t/2,m=r+t/2;for(let i=_;i<=m;i++){let u=sqrt(1-sq((i-r)/n))*(l/2),s=o-u,f=o+u,c=lerpColor(a,d,pow(1-abs(r-i)/n,.5));$.stroke(c),$.line(i,s,i,f)}}function drawPortalParticles($,e){let r=e.x,o=e.y;e.z;let t=map(e.z,nearestPortalZ,maxDist,1,.25),n=e.d,l=.5*n;e.w,o-=l;let a=Math.sign(R.random_dec()-.5),d=int(n);for(let _=0;_<d;_++){map(_,0,d-1,0,1);let m=R.random_num(0,TWO_PI),i=r+cos(m)*l,u=o+sin(m)*l,s=map(u,o-l,o+l,0,1),f=atan2(u-o,i-r)+HALF_PI*a,c=R.random_num(-.001,.001),x=R.random_num(-.0001,1e-4),w=R.random_num(-.00001,1e-5),h=R.random_num(1.5,2.5),S=i,k=u,y=500*pow(R.random_dec(),11)+7;for(let p=0;p<y;p++){let g=map(p,0,y-1,0,1);if(i+=cos(f)*h,(u+=sin(f)*h)<e.y){let v=lerpColor(getSunColor(.5),getSunColor(1),s),b=lerpColor(v,getSunColor(0,0),g);$.stroke(b),$.strokeWeight(2*t*(1-g)),$.point(i,u)}x+=w,c+=x,f+=c,S=i,k=u}let P=R.random_num(1,3);drawRadialGradient($,i,u,P,10*P,getSunColor(1,.5),getSunColor(0,0),20,2),$.fill(getSunColor(1)),$.circle(i,u,P)}$.noStroke()}function drawPortalScreen($,e){if(0==e.id){let r=e.x,o=e.y;e.z;let t=map(e.z,nearestPortalZ,maxDist,1,.25),n=e.d,l=e.w,a=.5*n;o-=a-l+10,a-=.5*l;let d=9*t,_=getSunColor(1,.4),m=getSunColor(0,0),i=d*sqrt(3)*.5;for(let u=-a;u<a;u+=i){let s=map(u,a,-a,0,1),f=floor(u/i)%2*d/2;for(let c=-a+f;c<a;c+=d){let x=c+r,w=u+o,h=dist(x,w,r,o);if(h<=a){let S=map(h,a,.75*a,0,1,!0),k=s*sqrt(S),y=lerpColor(m,_,k);$.fill(y),$.circle(x,w,10*s),$.fill(getSunColor(1,k)),$.circle(x,w,2*s)}}}}}function drawPortalUpwardDrips($,e){let r=getSunColor(1),o=getSunColor(0);PORTAL_GLOW||(r=getColor(.33),o=getColor(0)),R.random_int(5,25);let t=R.random_int(150,200),n=e.x,l=e.y,a=e.d;for(let d=0;d<t;d++){map(d,0,t-1,0,1);let _=R.random_num(n-.5*a,n+.5*a),m=R.random_num(l,-300),i=min(l,m+R.random_num(100,500)),u=R.random_num(3,25),s=3*pow(R.random_dec(),2)+1;$.noStroke(),$.fill(lerpColor(r,o,R.random_dec())),$.circle(_,m,s),drawRadialGradient($,_,m,s,10*s,getSunColor(1,.5),getSunColor(0,0),20,2),$.stroke(lerpColor(r,o,R.random_dec())),$.strokeWeight(.3*s),drawBrokenLine($,_,m,_,i,getSunColor(1,0),getSunColor(0,1),u,.5*u,!1)}$.noStroke()}function preload(){bg=createGraphics(myWidth,myHeight),mg=createGraphics(myWidth,myHeight),bg.noStroke(),mg.noStroke(),windowResized()}function windowResized(){dim=windowWidth<windowHeight?windowWidth:windowHeight,resizeCanvas(windowWidth,windowHeight);let $=myWidth/myHeight;width/height<$?(drawWidth=width,drawHeight=width/$):(drawHeight=height,drawWidth=height*$)}function keyTyped(){"s"==key?saveImage():"S"==key?SAVEFRAMES=!SAVEFRAMES:"d"==key||"r"==key&&reset()}function saveImage(){let $=createGraphics(myWidth,myHeight);$.image(bg,0,0),$.image(mg,0,0),save($,currentHash,"png")}function setupFeatures(){loadPalettes(),PALETTE=R.random_int(0,numPalettes-1);let $=R.random_dec();MEMORY_TYPE=$<.3?0:$<.7?1:2;let e=R.random_dec();PORTAL_GLOW=!((PORTAL_TYPE=e<.15?0:e<.3?1:e<.4?2:e<.6?3:e<.7?4:e<.75?5:e<.98?6:7)<=2)||!!R.random_bool(.8),7==PORTAL_TYPE&&(PORTAL_GLOW=!1);let r=R.random_dec();PATH_TYPE=r<.2?0:r<.8?1:2;let o=R.random_dec();SUN_TYPE=o<.1?0:o<.7?1:o<.95?2:3;let t=R.random_dec();STAR_TYPE=t<.3?0:t<.5?1:t<.75?2:t<.88?3:t<.95?4:5,(1==PORTAL_TYPE||6==PORTAL_TYPE)&&(STAR_TYPE=0),PORTAL_TYPE<=2&&(SUN_TYPE=0),0==MEMORY_TYPE&&(SUN_TYPE=R.random_bool(.5)?0:3,STAR_TYPE=0),MIDGROUND_COPSE=R.random_bool(.7),MIDGROUND_HILLS=R.random_bool(.4),MIDGROUND_MEGALITHS=R.random_bool(.1),MIDGROUND_SPIRES=R.random_bool(.1),0==MEMORY_TYPE&&(MIDGROUND_HILLS=!1),FORGETTING_TREES=R.random_bool(.2),MIDGROUND_HILLS?FORGETTING_TREES=!1:MIDGROUND_SPIRES=!1,13==PALETTE&&(MIDGROUND_HILLS=!0),haziness=R.random_num(.5,1),cloudiness=R.random_dec(),cloudGlow=R.random_bool(.1),skyGlow=R.random_bool(.1),createColors(PALETTE),grassChance=R.random_num(.3,.7),spikyChance=R.random_num(.1,.4),rockChance=R.random_num(.2,.5),flowerChance=R.random_num(.05,.1);let n=[grassChance,spikyChance,rockChance,flowerChance],l=n.reduce(($,e)=>$+e,0),a=n.map($=>$/l),d=0;for(let _=0;_<a.length;_++)d+=a[_],cumulativeChances[_]=d;GROUND=R.random_num(.25,.45),fov=R.random_num(70,90),maxDist=2500,minDist=-fov,eyeHeight=R.random_num(900,1400),horizon_y=R.random_num(.65*myHeight,.75*myHeight),nearestPortalZ=R.random_num(300,500),sun_y=R.random_num(0,.45*myHeight),sun_size=R.random_num(100,350),2==SUN_TYPE&&(sun_size=R.random_num(800,1200)),xnoff=R.random_num(50,300),ynoff=R.random_num(50,300),print("palette type = "+PALETTE+" "+PALETTES[PALETTE]),print("memory type = "+MEMORY_TYPE+" "+MEMORY_TYPES[MEMORY_TYPE]),print("portal type = "+PORTAL_TYPE+" "+PORTAL_TYPES[PORTAL_TYPE]),print("portal glow = "+PORTAL_GLOW),print("sun type = "+SUN_TYPE+" "+SUN_TYPES[SUN_TYPE]),print("star type = "+STAR_TYPE+" "+STAR_TYPES[STAR_TYPE]),print("copse = "+MIDGROUND_COPSE),print("hills = "+MIDGROUND_HILLS),print("megaliths = "+MIDGROUND_MEGALITHS),print("spires = "+MIDGROUND_SPIRES),print("forgetting = "+FORGETTING_TREES),print("cloudiness = "+cloudiness)}function reset(){print("Recollection"),print(tokenData.hash),print("------------------------------------------------------------------------------"),R=new Random,noiseDetail(5,.3),noiseSeed(R.random_dec()),randomSeed(R.random_dec()),strokeCap(SQUARE),colorMode(RGB,1),pixelDensity(2),smooth(),saveFrame=!1,currentFrame=0,buffer=createCanvas(windowWidth,windowHeight),bg.clear(),mg.clear(),bg.background(0,0,0,0),mg.background(0,0,0,0),bg.rectMode(CORNERS),mg.rectMode(CORNERS),cs=[],sunCs=[],pathPts=[],things=[],portals=[],setupFeatures()}function setup(){windowResized(),reset()}function draw(){if(background(0),61==currentFrame){let $=performance.now();if(createPath(),createThings(15e3),2==SUN_TYPE){let e=R.random_dec();e<.3?sun_y=portals[0].y-.5*portals[0].d:e<.6&&(sun_y=myHeight-(portals[0].y-.5*portals[0].d))}else if(3==SUN_TYPE){let r=portals[0];r.x;let o=r.y,t=r.d;(r.y>.8*myHeight||r.d<.5*myWidth)&&(sun_y=myHeight-(o-.5*t),sun_size=min(.5*t,400)),R.random_bool(.5)&&(sun_size=R.random_num(150,300))}let n=performance.now();console.log("stage 1: "+(n-$)+" milliseconds.")}else if(62==currentFrame){let l=performance.now();MEMORY_TYPE>0&&drawSky(bg),drawStars(bg,STAR_TYPE),MIDGROUND_MEGALITHS&&R.random_bool(.25)&&drawBgArch(bg,getColor(.85),getColor(1),1.5),drawSun(bg,sun_y,sun_size,haziness),MEMORY_TYPE>0&&drawDistantClouds(bg);let a=performance.now();console.log("stage 2: "+(a-l)+" milliseconds.")}else if(63==currentFrame){let d=performance.now();if(MIDGROUND_MEGALITHS&&R.random_bool(.25)&&drawBgArch(bg,getColor(.75),getColor(.95),1.25),0==MEMORY_TYPE)bg.background(getColor(GROUND)),drawGradientRect(bg,0,0,myWidth,horizon_y,getColor(GROUND+.15),getColor(GROUND),0,3,5);else if(1==MEMORY_TYPE){let _=MIDGROUND_HILLS?-300:0,m=MIDGROUND_HILLS?getColor(.62):getColor(GROUND);drawDistantBarrenPeaks(bg,-320+_,205,getColor(.72),getColor(.68)),drawClouds(bg,-200+_,.5,getColor(.75)),drawDistantBarrenPeaks(bg,-220+_,155,getColor(.66),m),drawClouds(bg,-250+_,.35,getColor(.64)),MIDGROUND_HILLS&&drawHills(bg,-330,R.random_num(.5,1.2),getColor(.6),getColor(GROUND))}else if(2==MEMORY_TYPE){let i=MIDGROUND_HILLS?-300:0,u=MIDGROUND_HILLS?getColor(.62):getColor(GROUND);drawClouds(bg,-280+i,.5,getColor(.8)),drawDistantPeaks(bg,-250+i,100,getColor(.72),getColor(.68)),drawClouds(bg,-220+i,.35,getColor(.75)),drawDistantPeaks(bg,-200+i,50,getColor(.66),u),MIDGROUND_HILLS&&drawHills(bg,-380,R.random_num(.5,1.2),getColor(.6),getColor(GROUND))}drawGround(bg),drawThings(mg),MIDGROUND_SPIRES&&drawWires(bg),3==STAR_TYPE&&drawStarFall(mg);let s=performance.now();console.log("stage 3: "+(s-d)+" milliseconds.")}currentFrame>63&&(image(bg,0,0,drawWidth,drawHeight),image(mg,0,0,drawWidth,drawHeight),noLoop()),SAVEFRAMES&&currentFrame>=100&&(saveImage(),reset()),currentFrame++}