0x7d330020…da62sent to0xa7d8d9ef…d270·#15,035,962·view on Etherscan
for(let e=0;e<17;e++){roads[e]=new Array(17);for(let r=0;r<17;r++)roads[e][r]={v:1,d:[]}}var cars=[],ele=[],ppl=0,blinking=!0,rf=-1+prng(30),reduc=1+prng(2);let offs=FL(border/2-1);if(prng(2)&&(mr([gx+4,1,1],[offs,16,offs+gz/2]),train({x:offs+5+prng(gx/2-10),y:15,z:gz/2+offs-1.5},0)),prng(2)&&(mr([1,1,gz+2],[offs+gx/2,8,0]),train({x:offs-1.5+gx/2,y:7,z:offs+15+prng(gz/2-10)},1)),prng(2)){mr([1,1,gz+border],[offs,0,-.1]),train({x:offs-1.5,y:-1,z:offs+15+prng(gz/2-10)},1);for(let e=0;e<17;e++)roads[0][e].v=0}if(prng(2)||rainbow){mr([gx+border,1,1],[-.1,0,offs]),train({x:offs+15+prng(gx/2-10),y:-1,z:offs-1.5},0);for(let e=0;e<17;e++)roads[e][0].v=0}rec({x:gx,y:96,z:gz},{x:0,y:0,z:0}),G.add(B([gx+border,1,gz+border],[0,-.3,0],M.ground));let gh=10,levels=8;for(let e=1;e<=levels;e++)prng(e+1)?rLev(gh,{x:0,y:-gh*e-.3,z:0}):uLev(gh,{x:0,y:-gh*e-.3,z:0});G.add(B([gx+border,500,gz+border],[0,-500-gh*levels-.3,0],M.dirt));let nuc=new THREE.Group;nuc.add(B([gx+border+1e3,400,gz+border+10],[-500,-600-gh*levels-.3,-10],M.water));for(let e=0;e<500;e+=10)nuc.add(B([10,350+5*prng(10),10],[-250+e,-600-gh*levels-.3,-15],M.dirt));G.add(nuc.rotateY(PI/4)),SC.add(B([20,20,20],[-10,380,-50],new THREE.MeshLambertMaterial({color:16768256,emissive:pal>1?16777215:16768256,emissiveIntensity:1}))),dN(tokenId,-1,1.7,gz+border-2,1,!0);const ld=prng(2),l=new THREE.DirectionalLight(16777215,.9);l.position.set(ld?3:-3,4,4),SC.add(l);const l2=new THREE.DirectionalLight(c2s[pal],.2);l2.position.set(ld?-1:1,3,8),SC.add(l2),G.position.set(-cx,0,-cz),city.position.set(0,-60,-800),city.rotation.set(rotX,rotY,0),city.add(G),SC.add(city);var txt="",h=[0];for(let e=0;e<6;e++)h.push(prng(4)?prng(8):0);h.push(0);w=["::",".:",":.",": "," :",". "," .",".."];for(let e=8;e>=0;e--){for(let r=0;r<h.length;r++)txt+=h[r]>e?"|"+(e>0?w[prng(w.length)]:prng(2)?"n_":"__"):(r>0&&e<h[r-1]?"|":e>0?" ":"_")+(h[r]==e?e&&!prng(3)?"_|":"__":prng(6)||e<6?" ":" ~");txt+="\n"}function moveCar(e){for(let r of cars)if(r.x+=r.v*r.d[0]*e,r.z+=r.v*r.d[1]*e,r.model.position.x=(6*r.x+border/2)*grid,r.model.position.z=(6*r.z+border/2)*grid,r.model.rotation.y=1==r.d[0]?PI/2:-1==r.d[0]?-PI/2:-1==r.d[1]?PI:0,ABS(r.x-r.t[0])<=r.v*e&&ABS(r.z-r.t[1])<=r.v*e){r.x=r.t[0],r.z=r.t[1];let e,t=roads[r.t[0]][r.t[1]].d;do{e=roads[r.t[0]][r.t[1]].d[Math.floor(Math.random()*t.length)]}while(t.length>1&&r.d[0]==-e[0]&&r.d[1]==-e[1]);let o=r.d;r.d=e,r.t=[r.x+r.d[0],r.z+r.d[1]],-1==drive?(o[0]==e[1]&&(r.z+=.5*e[1]),o[1]+e[0]==0&&(r.x+=.5*e[0])):(o[0]==-e[1]&&(r.z+=.5*e[1]),o[1]==e[0]&&(r.x+=.5*e[0]))}}txt+="· #"+tokenId+`/449\n· Population: ${ppl}\n·\n· Metropixeland\n· F.Jerez 2022\n`;console.clear();console.log(txt);for(let e=0;e<17;e++)for(let r=0;r<17;r++)roads[e][r].v&&(r<16&&roads[e][r+1].v&&roads[e][r].d.push([0,1]),e>0&&roads[e-1][r].v&&roads[e][r].d.push([-1,0]),r>0&&roads[e][r-1].v&&roads[e][r].d.push([0,-1]),e<16&&roads[e+1][r].v&&roads[e][r].d.push([1,0]));for(let e=0;e<2+3*traffic;e++){let e={x:0,z:0,t:[0,0],d:[0,0],v:.6+prng(6)/10,model:new THREE.Group},r=drive;!bus&&prng(2)?e.model.add(B([2.2,1.5,3],[r-1.1,1.5,-2.1],M.walls)):e.model.add(B([2.1,1,2],[r-1.05,1.5,-1.5],M.neon)),bus?(e.model.add(B([2,4.5,4],[r-1,0,-2],mRW(0))),e.model.add(B([2.1,1,1],[r-1.05,1.5,1.1],M.neon)),e.model.add(B([2.1,1,3.6],[r-1.05,3.2,-1.5],M.neon)),bus=!1):(e.model.add(B([2,2.9,4],[r-1,0,-2],M.vehicle)),e.model.add(B([2.1,1,1],[r-1.05,1.5,1.1],M.neon)));do{e.x=prng(17),e.z=prng(17)}while(0==roads[e.x][e.z].v);e.t=[e.x,e.z],G.add(e.model),cars.push(e)}function rec(e,r){let t=Math.min(e.x,e.z),o=e.x/e.z,n=e.z/e.x;Math.max(o,n)<3&&(t<minrec||t<gx/2&&0==prng(6))?square(e,r):o>.5&&(prng(2)||o>3)?(rec({x:Math.ceil(e.x/2),y:e.y,z:e.z},{x:r.x+FL(e.x/2),y:r.y,z:r.z}),rec({x:Math.ceil(e.x/2),y:e.y,z:e.z},{x:r.x,y:r.y,z:r.z})):(rec({x:e.x,y:e.y,z:Math.ceil(e.z/2)},{x:r.x,y:r.y,z:r.z}),rec({x:e.x,y:e.y,z:Math.ceil(e.z/2)},{x:r.x,y:r.y,z:r.z+FL(e.z/2)}))}function getY(e,r){let t=0;return t=0==r?1.5*e.x-.5*gx:1==r?1.5*e.z-.5*gz:2==r?1.5*Math.max(e.x,e.z)-.5*gz:3==r?Math.min(e.x,e.z):4==r?Math.max(e.x-e.z,e.z-e.x):e.x>=gx/2&&e.z>=gz/2?Math.max(e.x,e.z):0,FL(randFam?prng(t)/reduc:t/reduc)}function square(e,r){let t=border+2,o=Math.min(e.x,e.z),n=2+FL(getY(r,fam));for(let t=1;t<e.x/6;t++){roads[FL(r.x/6+t)][FL(r.z/6+1)].v=0;for(let o=1;o<e.z/6;o++)roads[FL(r.x/6+t)][FL(r.z/6+o)].v=0}if(prng(n)<2&&(n=1),G.add(B([e.x-border+2,1,e.z-border+2],[border+r.x-1,0,border+r.z-1],M.sidewalk)),r.x&&prng(2))for(let t=2.25;t<=4.25;t++)G.add(B([.5,1,2],[r.x+border-t,0,r.z+e.z-1],M.sidewalk));if(r.z&&prng(2))for(let t=2.25;t<=4.25;t++)G.add(B([2,1,.5],[r.x+e.x-1,0,r.z+border-t],M.sidewalk));if(n>1||!prng(6)){ppl+=n*prand(8,12);let a=r.x+e.x/2+border/2+2,d=r.z+e.z/2+border/2+2;if(o>minrec&&e.x!=e.z){let i=Math.round(.6*n),l=Math.round(1*n),s=rPat();b({x:o-t,y:n/2,z:o-t},{x:r.x+t,y:r.y,z:r.z+t},i,s),b({x:o-t,y:n/2,z:o-t},{x:(e.x>e.z?e.x/2:0)+r.x+t,y:r.y,z:(e.z>e.x?e.z/2:0)+r.z+t},i,s,0,!1);let p=e.x/2-border,g=e.z/2-border;b({x:p,y:e.y,z:g},{x:a-p/2,y:r.y+i+4,z:d-g/2},l,-1,2),G.add(B([p+1,i+5,g+1],[a-p/2+.02,r.y,d-g/2+.02],M.core)),G.add(B([2,i+7,2],[a-(g>p?p/2+1:2),r.y,d-(g<p?g/2+1:2)],M.walls))}else{let t=!1;if(o>minrec){t=!0;let o=r.y+n+2.1;G.add(B([7,1,1],[a-5,o,d-4],M.neon)),G.add(B([7,1,1],[a-5,o,d],M.neon)),G.add(B([1,1,3],[a-2,o,d-3],M.neon)),G.add(B([2,1,2],[r.x+border+2,o,r.z+border+2],M.neon3)),G.add(B([2,1,2],[r.x+e.x-border+2,o,r.z+border+2],M.neon3)),G.add(B([2,1,2],[r.x+border+2,o,r.z+e.x-border+2],M.neon3)),G.add(B([2,1,2],[r.x+e.x-border+2,o,r.z+e.z-border+2],M.neon3)),n>12&&!gotHeli?heli({x:a-2,y:r.y+n+3.5,z:d-2}):pond({x:e.x-border-3,y:e.y,z:e.z-border-3},{x:r.x+border+1.5,y:r.y+n+2,z:r.z+border+1.5},2,M.core),gotHeli=!0}else if(n>30&&!prng(2)&&e.x>e.z){for(let e=3;e>=1.5;e-=1.5)G.add(B([1,n+3,.5],[r.x+border-.2,r.y,d-e],M.walls,0));let e={miny:2*grid,maxy:n*grid,delay:0,stop:2+prng(4),dir:prng(2)?-5:5,model:new THREE.Group};e.model.position.set((r.x+border-1.5)*grid,(4+prng(n-6))*grid,(d-3)*grid),e.model.add(B([1.5,2,1.6],[0,0,.2],M.core,0)),e.model.add(B([1.5,.3,2],[0,2,0],M.walls,0)),e.model.add(B([1.5,1,2],[0,-1,0],M.walls,0)),ele.push(e),G.add(e.model)}b({x:e.x-border,y:e.y,z:e.z-border},{x:r.x+border,y:r.y,z:r.z+border},n,-1,0,!0,t)}}else if(Math.min(e.x,e.z)<minrec)for(let t=border+1;t<Math.max(e.x,e.z);t+=5){let o=e.x>e.z?r.x+t:r.x+(e.x+border)/2-1,n=e.x>e.z?r.z+(e.z+border)/2-1:r.z+t;tree(o,r.y,n)}else prng(2)||e.x!=e.z?prng(2)?park(e,r):tenp(e,r):pond({x:e.x-border,y:e.y,z:e.z-border},{x:r.x+border,y:r.y,z:r.z+border},2,M.water)}function mr(e,r){let t=e[2]>1;if(G.add(B(e,r,M.rail)),r[1]>0)for(let e=5;e<=110;e+=24)monoarc([t?r[0]:Math.min(e,94),r[1],t?Math.min(e,95):r[2]],t)}function monoarc(e,r=!1){let t=M.rail,o=e[1],n=r?3:0,a=r?0:3;G.add(B([3,1,3],[e[0]+n-.85*n,e[1]-1,e[2]+a-.85*a],t)),G.add(B([r?1:3,o-1,r?3:1],[e[0]+n,0,e[2]+a],t)),G.add(B([1,o-1.1,1],[e[0]+n+(r?-.25:1),0,e[2]+a+(r?1:-.25)],M.neon))}function mRW(e){return new THREE.MeshLambertMaterial({color:ethpal[e]})}function train(e,r=0){let t=rainbow?5:prand(3,6),o=new THREE.Group,n=M.neon.clone();if(r){for(let r=0;r<t;r++)o.add(B([2,2,6],[e.x+1,e.y+2.7,6.5*r],rainbow?mRW(2*r):M.vehicle)),o.add(B([1,.8,4.5],[e.x+.7,e.y+3.5,6.5*r+.5],M.neon));o.add(B([1.5,2,6.5*t+.5],[e.x+1.3,e.y+1.7,-.5],n)),o.position.z=e.z*grid}else{for(let r=0;r<t;r++)o.add(B([6,2,2],[6.5*r,e.y+2.7,e.z+1],rainbow?mRW(2*r):M.vehicle)),o.add(B([4.5,.8,1],[6.5*r+.5,e.y+3.5,e.z+.7],M.neon));o.add(B([6.5*t+.5,2,1.5],[-.5,e.y+1.7,e.z+1.3],n)),o.position.x=e.x*grid}trains.push({z:r,t:o,v:prand(10,16)*(prng(2)?1:-1),l:6.5*t,d:0,m:n,w:!0,broken:prand(20,120)}),G.add(o),rainbow=!1}function dN(e,r,t,o,n,a=!1){let d=tokenId,i=0;do{let e=numbers[d%10],l=new THREE.Group,s=M.neon;blinking&&!prng(3)&&(s=s.clone(),lights.push(s),blinking=!1);for(let d=0;d<15;d++)1&e&&l.add(B([n,n,n],[a?r-.2:r+i+n*(d%3),t+2+n*FL(d/3),a?o-(i+n*(d%3)):o+.7],s,0)),e>>=1;G.add(l),i+=4*n,d=FL(d/10)}while(d>0);G.add(B([1,7,i+1],[r,t+1,o-i+1],M.panel,0)),G.add(B([1,9,1],[r+1,t-1,o-i+3],M.panel,0)),G.add(B([1,9,1],[r+1,t-1,o-1],M.panel,0))}