0xf4dc91a5…4d2esent to0xa7d8d9ef…d270·#15,336,770·view on Etherscan
ill(nc),landBright+=brightness(nc),landPixel++):(nc=color(SHUE,SSAT,.739+max(-.178,2*H[ix][iy])+.261*H[ix][iy]),nc=lerpColor(nc,color(Hd[ix][iy]>0?SEAROUGHNESS:0),sqrt(abs(Hd[ix][iy]))),GeoMap.fill(nc),H[ix][iy]=200*H[ix][iy]),GeoMap.rect(ix,iy,1,1)}function GenerateFalloffMap(){famap=[];for(let j=0;j<Q;j++)famap[j]=[];for(i=0;i<Q;i++)for(j=0;j<Q;j++)xf=i/Q*2-1,yf=j/Q*2-1,hfa=Math.max(Math.abs(xf+dxf/Q*2),Math.abs(yf+dyf/Q*2)),famap[i][j]=Evalfa(hfa);return famap}function Evalfa(hfa){return Math.pow(hfa,af)/(Math.pow(hfa,af)+Math.pow(bf-bf*hfa,af))}function keyTyped(){"s"==key&&saveCanvas(join([tokenData.hash,tokenData.tokenId],"__"),"png"),32==keyCode&&noLoop(),"c"==key&&loop()}function NightMode(){for(NM=createGraphics(Q,Q),NM.colorMode(HSB,1),NM.noStroke(),NM.fill(240/360,.63,.09),NM.rect(0,0,Q,Q),ix=0;ix<Q;ix++)for(iy=0;iy<Q;iy++)H[ix][iy]>0&&(NM.fill(247/360,.5,.12+.3*H[ix][iy]/Mxx),NM.rect(ix,iy,1,1));for(CTTHR=RN.RNn(.86,.886),CTTHR2=.92,CTTHR3=.33,CTTHR4=1,FindMinMaxCities(),xlgts=[],ylgts=[],Nlights=RN.RNi(2e4,4e4),ilights=0;ilights<Nlights;ilights++)xlgts[ilights]=(Q-1)*RN.RNn(0,1),ylgts[ilights]=(Q-1)*RN.RNn(0,1);for(xlgts2=[],ylgts2=[],Nlights2=RN.RNi(5e3,2.1e4),ilights2=0;ilights2<Nlights2;ilights2++)xlgts2[ilights2]=(Q-1)*RN.RNn(0,1),ylgts2[ilights2]=(Q-1)*RN.RNn(0,1);for(ix=0;ix<Q;ix+=1)for(iy=0;iy<Q;iy+=1)ilights++,CLgts[ix][iy]/MxxCities>CTTHR&&CLgts[ix][iy]/MxxCities>1.5*CLgts2[ix][iy]/MxxCities2&&(xlgts[ilights]=ix,ylgts[ilights]=iy);for(ilights in NM2=createGraphics(Q,Q),NM2.colorMode(HSB,1),xlgts)ix=round(xlgts[ilights]),iy=round(ylgts[ilights]),H[ix][iy]>0&&H[ix][iy]<.28*Mxx&&CLgts[ix][iy]/MxxCities>CTTHR&&CLgts[ix][iy]/MxxCities>1.5*CLgts2[ix][iy]/MxxCities2&&(NM2.strokeWeight(CLgts[ix][iy]/MxxCities*1.5*M),NM2.stroke(34/360,1.5*(1-CLgts[ix][iy]/MxxCities),sq(CLgts[ix][iy]/MxxCities)),NM2.point(ix,iy)),!(H[ix][iy]>0&&H[ix][iy]<.28*Mxx&&CLgts[ix][iy]/MxxCities>CTTHR&&CLgts[ix][iy]/MxxCities>1.5*CLgts2[ix][iy]/MxxCities2)&&(NM2.strokeWeight(CLgts[ix][iy]/MxxCities*CTTHR4*M),NM2.stroke(34/360,.2,1*CLgts[ix][iy]/MxxCities),H[ix][iy]>0&&H[ix][iy]<CTTHR3*Mxx&&NM2.point(ix,iy));for(ilights2 in xlgts2)ix=round(xlgts2[ilights2]),iy=round(ylgts2[ilights2]),H[ix][iy]>CTTHR3&&(NM2.strokeWeight(CLgts[ix][iy]/MxxCities*CTTHR4*M),NM2.stroke(34/360,.2,1*CLgts[ix][iy]/MxxCities),NM2.point(ix,iy))}function SECSH(dxmount,dymount,MSC,LSCS){for(rnnn=[],iiit=0;iiit<14;iiit++)rnnn[iiit]=MSC*M*RN.RNn(-.3,.3);push(),translate(dxmount+dQ,dymount+dQ),beginShape(),WW=MSC*M,W2=.5,curveVertex(-WW+WW*rnnn[0],WW*W2+rnnn[1]),curveVertex(0+WW*rnnn[2],0+rnnn[3]),curveVertex(WW+WW*rnnn[4],WW*W2+rnnn[5]),curveVertex(2*WW+WW*rnnn[6],0+rnnn[7]),curveVertex(3*WW+WW*rnnn[8],WW*W2+rnnn[9]),curveVertex(4*WW+WW*rnnn[10],0+rnnn[11]),curveVertex(5*WW+WW*rnnn[12],WW*W2+rnnn[13]),endShape(),pop()}function Grass(dxmount,dymount,MSC,LSCS){for(push(),translate(dxmount+dQ,dymount+dQ),ig=1;ig<4;ig++)line(ig*MSC*M+RN.RNn(-.3,.3)*MSC*M,0+RN.RNn(-.3,.3)*MSC*M,(ig-1)*MSC*M+RN.RNn(-.3,.3)*MSC*M,2.5*MSC*M+RN.RNn(-.3,.3)*MSC*M);pop()}function LSCSH(dxmount,dymount,MSC,LSCS){for(rnnn=[],iiit=0;iiit<6;iiit++)rnnn[iiit]=MSC*M*RN.RNn(-.3,.3);push(),translate(dxmount+dQ,dymount+dQ),beginShape(),1==LSCS?(vertex(0+rnnn[0],3*MSC*M+rnnn[1]),vertex(1.5*MSC*M+rnnn[2],0+rnnn[3]),vertex(3*MSC*M+rnnn[4],3*MSC*M+rnnn[5])):line(0,0,3*MSC*M,H[dix+dtt-1][diyy]>=0?10*MSC*M/Mxx*(H[dix][diyy]-H[dix+dtt-1][diyy]):0),endShape(CLOSE),pop()}function createTexture(){const ND=400;RN=new Random;for(let i=0;i<ND;i++)rrx=RN.RNd()*width,rry=RN.RNd()*height,rrr1=M*RN.RNn(1,3),rrr2=M*RN.RNn(1,3),Paper.fill(ht,st,vt,at),Paper.stroke(ht,st,vt,at),Paper.ellipse(rrx,rry,rrr1,rrr2)}function createFibers(){Nf=1e4;let RN=new Random;for(i=0;i<Nf;i++)x1=RN.RNd()*width,y1=RN.RNd()*height,th=2*RN.RNd()*Math.PI,SL=(5*RN.RNd()+2)*pow(Globalw/2,2)/3,x2=cos(th)*SL+x1,y2=sin(th)*SL+y1,Paper.stroke(ht,st-.05*RN.RNd(),vt-.08*RN.RNd(),at2*(.1*RN.RNd()+.75)),Paper.line(x1,y1,x2,y2)}function RndN(Np,n){return round(Np*pow(10,n))/pow(10,n)}function shuffled(list){for(var newlist=[],i=0;i<list.length;i++)newlist.push(list[i]);for(var i=list.length-1;i>0;i--){var tmp=newlist[i],j=randrange(i);newlist[i]=newlist[j],newlist[j]=tmp}return newlist}function choose(list,exponent){return exponent=exponent||1,list[Math.floor(Math.pow(RN.RNd(),exponent)*list.length)]}function randrange(lo,hi){return null==hi&&(hi=lo,lo=0),Math.floor(RN.RNd()*(hi-lo))+lo}function join(list,sep){if(0==list.length)return"";sep=sep||"";for(var s=list[0],i=1;i<list.length;i++)s+=sep,s+=list[i];return s}function capitalize(word){return word[0].toUpperCase()+word.slice(1)}function spell(lang,syll){if(lang.noortho)return syll;for(var s="",i=0;i<syll.length;i++){var c=syll[i];s+=lang.cortho[c]||lang.vortho[c]||defaultOrtho[c]||c}return s}function makeSyllable(lang){for(;;){for(var syll="",i=0;i<lang.structure.length;i++){var ptype=lang.structure[i];"?"==lang.structure[i+1]&&(i++,RN.RNd()<.5)||(syll+=choose(lang.phonemes[ptype],lang.exponent))}for(var bad=!1,i=0;i<lang.restricts.length;i++)if(lang.restricts[i].test(syll)){bad=!0;break}if(!bad)return spell(lang,syll)}}function getMorpheme(lang,key){if(lang.nomorph)return makeSyllable(lang);key=key||"";var list=lang.morphemes[key]||[],extras=10;for(key&&(extras=1);;){var n=randrange(list.length+extras);if(list[n])return list[n];var morph=makeSyllable(lang),bad=!1;for(var k in lang.morphemes)if(lang.morphemes[k].includes(morph)){bad=!0;break}if(!bad)return list.push(morph),lang.morphemes[key]=list,morph}}function makeWord(lang,key){var nsylls=randrange(lang.minsyll,lang.maxsyll+1),w="",keys=[];keys[randrange(nsylls)]=key;for(var i=0;i<nsylls;i++)w+=getMorpheme(lang,keys[i]);return w}function getWord(lang,key){key=key||"";var ws=lang.words[key]||[],extras=3;for(key&&(extras=2);;){var n,w=ws[randrange(ws.length+extras)];if(w)return w;w=makeWord(lang,key);var bad=!1;for(var k in lang.words)if(lang.words[k].includes(w)){bad=!0;break}if(!bad)return ws.push(w),lang.words[key]=ws,w}}function makeName(lang,key){for(key=key||"",lang.genitive=lang.genitive||getMorpheme(lang,"of"),lang.definite=lang.definite||getMorpheme(lang,"the");;){var name=null;if(RN.RNd()<.5)name=capitalize(getWord(lang,key));else{var w1=capitalize(getWord(lang,RN.RNd()<.6?key:"")),w2=capitalize(getWord(lang,RN.RNd()<.6?key:""));if(w1==w2)continue;name=RN.RNd()>.5?join([w1,w2],lang.joiner):join([w1,lang.genitive,w2],lang.joiner)}if(RN.RNd()<.1&&(name=join([lang.definite,name],lang.joiner)),!(name.length<lang.minchar||name.length>lang.maxchar)){for(var used=!1,i=0;i<lang.names.length;i++){var name2=lang.names[i];if(-1!=name.indexOf(name2)||-1!=name2.indexOf(name)){used=!0;break}}if(!used)return lang.names.push(name),name}}}function makeBasicLanguage(){return{phonemes:{C:"ptkmnls",V:"aeiou",S:"s",F:"mn",L:"rl"},structure:"CVC",exponent:2,restricts:[],cortho:{},vortho:{},noortho:!0,nomorph:!0,nowordpool:!0,minsyll:1,maxsyll:1,morphemes:{},words:{},names:[],joiner:" ",maxchar:12,minchar:5}}function makeOrthoLanguage(){var lang=makeBasicLanguage();return lang.noortho=!1,lang}function makeRandomLanguage(){var lang=makeBasicLanguage();return lang.noortho=!1,lang.nomorph=!1,lang.nowordpool=!1,lang.phonemes.C=shuffled(choose(consets,2).C),lang.phonemes.V=shuffled(choose(vowsets,2).V),lang.phonemes.L=shuffled(choose(lsets,2).L),lang.phonemes.S=shuffled(choose(ssets,2).S),lang.phonemes.F=shuffled(choose(fsets,2).F),lang.structure=choose(syllstructs),lang.restricts=ressets[2].res,lang.cortho=choose(corthsets,2).orth,lang.vortho=choose(vorthsets,2).orth,lang.minsyll=randrange(1,3),lang.structure.length<3&&lang.minsyll++,lang.maxsyll=randrange(lang.minsyll+1,7),lang.joiner=choose(" -"),lang}var defaultOrtho={"ʃ":"sh","ʒ":"zh","ʧ":"ch","ʤ":"j","ŋ":"ng",j:"y",x:"kh","ɣ":"gh","ʔ":"‘",A:"á",E:"é",I:"í",O:"ó",U:"ú"},corthsets=[{name:"Default",orth:{}},{name:"Slavic",orth:{"ʃ":"š","ʒ":"ž","ʧ":"č","ʤ":"ǧ",j:"j"}},{name:"German",orth:{"ʃ":"sch","ʒ":"zh","ʧ":"tsch","ʤ":"dz",j:"j",x:"ch"}},{name:"French",orth:{"ʃ":"ch","ʒ":"j","ʧ":"tch","ʤ":"dj",x:"kh"}},{name:"Chinese (pinyin)",orth:{"ʃ":"x","ʧ":"q","ʤ":"j"}}],vorthsets=[{name:"Ácutes",orth:{}},{name:"Ümlauts",orth:{A:"ä",E:"ë",I:"ï",O:"ö",U:"ü"}},{name:"Welsh",orth:{A:"â",E:"ê",I:"y",O:"ô",U:"w"}},{name:"Diphthongs",orth:{A:"au",E:"ei",I:"ie",O:"ou",U:"oo"}},{name:"Doubles",orth:{A:"aa",E:"ee",I:"ii",O:"oo",U:"uu"}}],consets=[{name:"Minimal",C:"ptkmnls"},{name:"English-ish",C:"ptkbdgmnlrsʃzʒʧ"},{name:"Pirahã (very simple)",C:"ptkmnh"},{name:"Hawaiian-ish",C:"hklmnpwʔ"},{name:"Greenlandic-ish",C:"ptkqvsgrmnŋlj"},{name:"Arabic-ish",C:"tksʃdbqɣxmnlrwj"},{name:"Arabic-lite",C:"tkdgmnsʃ"},{name:"English-lite",C:"ptkbdgmnszʒʧhjw"}],ssets=[{name:"Just s",S:"s"},{name:"s ʃ",S:"sʃ"},{name:"s ʃ f",S:"sʃf"}],lsets=[{name:"r l",L:"rl"},{name:"Just r",L:"r"},{name:"Just l",L:"l"},{name:"w j",L:"wj"},{name:"r l w j",L:"rlwj"}],fsets=[{name:"m n",F:"mn"},{name:"s k",F:"sk"},{name:"m n ŋ",F:"mnŋ"},{name:"s ʃ z ʒ",F:"sʃzʒ"}],vowsets=[{name:"Standard 5-vowel",V:"aeiou"},{name:"3-vowel a i u",V:"aiu"},{name:"Extra A E I",V:"aeiouAEI"},{name:"Extra U",V:"aeiouU"},{name:"5-vowel a i u A I",V:"aiuAI"},{name:"3-vowel e o u",V:"eou"},{name:"Extra A O U",V:"aeiouAOU"}],syllstructs=["CVC","CVV?C","CVVC?","CVC?","CV","VC","CVF","C?VC","CVF?","CL?VC","CL?VF","S?CVC","S?CVF","S?CVC?","C?VF","C?VC?","C?VF?","C?L?VC","VC","CVL?C?","C?VL?C","C?VLC?"],ressets=[{name:"None",res:[]},{name:"Double sounds",res:[/(.)\1/]},{name:"Doubles and hard clusters",res:[/[sʃf][sʃ]/,/(.)\1/,/[rl][rl]/]}];function MineCraft(){for(FindMinMaxCities(),Mcraft=createGraphics(Q,Q),Mcraft.colorMode(RGB,1),Mcraft.noStroke(),Mcraft.fill(7/255,37/255,107/255),Mcraft.rect(0,0,Q,Q),dtt1=RN.RNi(4,7),dtt1=8,dtt=round(dtt1*M),dtt<3*M&&(MCGRID=0),MCGRID=1,Mcraft.stroke(0),Mcraft.strokeWeight(.1*M),1!=MCGRID&&Mcraft.noStroke(),BTh=RN.RNn(.01,.05),"Landlocked"==fn&&(BTh=.001),"MainLandCoast"==fn&&(BTh=.001),BTh=0,GTh=.33,GMTh=.5,ix=0;ix<Q-dtt;ix+=dtt)for(iy=0;iy<Q-dtt;iy+=dtt)dix=round(ix+dtt/2),diyy=round(iy+dtt/2),H[dix][diyy]>0&&H[dix][diyy]<BTh*Mxx&&(Mcraft.fill(173/255,164/255,112/255),Mcraft.rect(ix,iy,dtt)),H[dix][diyy]>BTh*Mxx&&H[dix][diyy]