// Shared t105 measurement and screenshot layout. No generated terrain. function transportFixture(kind, reverse = false) { RS=7; nextPowerBuild=0; money=1e6; AMB.fill(20); temp.fill(20); hot.fill(0); weather.next=1e15; const blocks=[]; const put=(c,v,x,y)=>blocks.push([c,v,x,y]); const belt=(a,b,y)=>{for(let x=a;x0?1:0);diagonal=true; belt(10,16,inlet);for(let k=0;k<10;k++)put(kind==='screen'?BP_FILTER_DOWN:g<0?BP_BELT_UP:BP_BELT_DOWN,kind==='screen'?128:1,16+k,by+k*g);belt(26,32,outlet); start=[72,beltFaceY(g<0?BP_BELT_UP:BP_BELT_DOWN,18,by+2*g,72)-1]; } else if(kind==='screw-right') { inlet=25;outlet=25;belt(10,16,25);for(let x=16;x<26;x++)put(BP_SCREW,1,x,24);belt(26,32,25);start=[72,99]; } else if(kind==='screw-up'||kind==='screw-down') { const up=kind==='screw-up';inlet=up?35:20;outlet=up?24:32;axis=1;sign=up?-1:1; belt(10,16,inlet);for(let y=up?24:20;y<(up?35:31);y++)put(BP_SCREW,up?0:2,16,y); for(let x=16;x<20;x++)put(BP_SCREW,1,x,up?23:31);belt(20,32,outlet);start=[65,up?128:88]; } else { const up=kind==='screw-up-right';inlet=up?35:20;outlet=up?25:30;diagonal=true; belt(10,16,inlet);for(let k=0;k<10;k++)put(BP_SCREW,up?4:5,16+k,(up?35:20)+k*(up?-1:1));belt(26,32,outlet);start=[72,up?133:89]; } const shift=24-inlet;for(const b of blocks)b[3]+=shift;start[1]+=shift*4;outlet+=shift;inlet=24; if(reverse)for(const b of blocks){b[2]=41-b[2];if(b[0]===BP_SCREW)b[1]=[0,3,2,1,7,6,5,4][b[1]];else {if(isSlopeBelt(b[0]))b[0]+=b[0]===BP_BELT_UP||b[0]===BP_FILTER_UP?1:-1;b[1]=isFilter(b[0])?0:0;}} for(const [c,v,x,y] of blocks)placeBlock(c,v,x,y,true,{m:[CUORE],inv:0}); if(reverse)start[0]=167-start[0]; return {kind,reverse,inlet,outlet,start,axis,sign,diagonal,feedX:reverse?123:44,sink:reverse?40:128}; } function transportFeed(s,depth) { let added=0; for(let l=1;l<=depth;l++){const i=(s.inlet*4-l)*W+s.feedX;if(mat[i]===EMPTY){setCell(i,SAND,20,0);added++;}} return added; } function transportCollect(s) { let out=0; for(let y=0;y=0;j--)if(flyers[j].m===SAND&&(s.reverse?flyers[j].x=s.sink)){out++;flyers.splice(j,1);} return out; } function transportChainFixture() { RS=7; nextPowerBuild=0; money=1e6; AMB.fill(20); temp.fill(20); hot.fill(0); weather.next=1e15; const belt=(a,b,y)=>{for(let x=a;x[name,(()=>{let n=0;for(let yy=y-20;yy