forked from sent/waves
88 lines
49 KiB
HTML
88 lines
49 KiB
HTML
|
|
|
|
<style>
|
|
body {
|
|
color:white;
|
|
background-color:black;
|
|
font-family:sans-serif;
|
|
}
|
|
* {
|
|
background-color:black;
|
|
color:white;
|
|
}
|
|
|
|
</style>
|
|
<script>
|
|
const M=Math;const U=Number;let sortby=(i,t)=>{var l=[];for(let e=0;e<i.length;e++)l.push(i[e][t]);var s=[];for(let e=0;e<i.length;e++){let t=1e6,a=0;for(let e=0;e<i.length;e++)l[e]<t&&(t=l[e],a=e);s.push(i[a]),l[a]=1e6}return s},sortarr=i=>{var l=[];for(let e=0;e<i.length;e++)l.push(i[e]);var s=[];for(let e=0;e<i.length;e++){let t=1e6,a=0;for(let e=0;e<i.length;e++)l[e]<t&&(t=l[e],a=e);s.push(i[a]),l[a]=1e6}return s},co=(t,a)=>{var i=sortarr(Object.keys(t)),l=sortarr(Object.keys(a));if(i.length!=l.length)return!1;for(let e=0;e<i.length;e++){if(i[e]!=l[e])return!1;if(t[i[e]]!=a[l[e]])return!1}return!0},sTag=class{constructor(){let c=class{constructor(e,t,a,i,l,s,r,n,c){this.id=e,this.lv=t,this.name=a,this.lnkto=i,this.lnkfr=l,this.avl=s,this.des=r,this.eff=n,this.ev=c,this.joinable=t=>{if(this.lnkto.length)for(let e=0;e<this.lnkto.length;e++)if(0==this.lnkto[e][0]&&this.lnkto[e][1]==t)return this.lnkto[e][2];return-1},this.linkable=t=>{if(this.lnkto.length)for(let e=0;e<this.lnkto.length;e++)if(this.lnkto[e][1]==t)return this.lnkto[e][2];return-1},this.findParent=()=>this.lnkfr}get n(){return this.name}get d(){if(0==this.lnkfr.length)return this.des;let t=this.des+"<br />linked from: ";for(let e=0;e<this.lnkfr.length;e++)t=(t=(t=(t+="(")+stag.t[this.lnkfr[e][1]].n)+(this.lnkfr[e][0]?" && ":" & "))+stag.t[this.lnkfr[e][2]].n+")",e<this.lnkfr.length-1&&(t+=" or ");return t}},d={},r=-2;this.linkedTagCur=()=>r,this.pushlTag=(e,t,a,i,l)=>{let s=r;return d[r]=new c(r,d[t[0]].lv+d[t[1]].lv,e,[],[[1,t[0],t[1]]],a,i,l),d[r].lnkfr.forEach(t=>{let a=!0;d[t[1]].lnkto.forEach(e=>{e[0]==t[0]&&e[1]==t[2]&&e[2]==s&&(a=!1)}),a&&d[t[1]].lnkto.push([t[0],t[2],s]),a=!0,d[t[2]].lnkto.forEach(e=>{e[0]==t[0]&&e[1]==t[1]&&e[2]==s&&(a=!1)}),a&&d[t[2]].lnkto.push([t[0],t[1],s])}),r--};this.tagTable=()=>d,this.newTag=(i,e,t,a,l,s,r,n)=>{d[i]=new c(i,e,t,[],a,l,s,r,n),d[i].lnkfr.forEach(t=>{let a=!0;d[t[1]].lnkto.forEach(e=>{e[0]==t[0]&&e[1]==t[2]&&e[2]==i&&(a=!1)}),a&&d[t[1]].lnkto.push([t[0],t[2],i]),a=!0,d[t[2]].lnkto.forEach(e=>{e[0]==t[0]&&e[1]==t[1]&&e[2]==i&&(a=!1)}),a&&d[t[2]].lnkto.push([t[0],t[1],i])})},this.joinTag=(e,t)=>d[e].joinable(t),this.linkTag=(e,t)=>d[e].linkable(t),this.parentTag=e=>d[e].lnkfr,this.ct=(t,a)=>{if(t.length!=a.length)return!1;if(1==t.length)return t[0].id==a[0].id;if(2==t.length)return M.min(t[0].id,t[1].id)==M.min(a[0].id,a[1].id)&&M.max(t[0].id,t[1].id)==M.max(a[0].id,a[1].id);var i=[],l=[];i[0]=M.min(t[0].id,t[1].id,t[2].id),l[0]=M.min(a[0].id,a[1].id,a[2].id),i[2]=M.max(t[0].id,t[1].id,t[2].id),l[2]=M.max(a[0].id,a[1].id,a[2].id);for(let e=0;e<3;e++)t[e].id!=i[0]&&t[e].id!=i[2]&&(i[1]=t[e].id);for(let e=0;e<3;e++)a[e].id!=l[0]&&a[e].id!=l[2]&&(l[1]=a[e].id);for(let e=0;e<3;e++)if(i[e]!=l[e])return!1;return!0},this.getltagname=(e,t)=>"linked tag of "+e+" and "+t}get t(){return this.tagTable()}},stag=new sTag,sEff=class{constructor(){let aEff=class{constructor(id,na,ev,ne,de,syn){this.id=id,this.na=na,this.ev=ev,this.ne=ne,this.de=de,this.syn=syn,this.getname=(x,y)=>eval(this.ne)(x,y),this.getdesc=(x,y)=>eval(this.de)(x,y)}},efftab={};this.pushEff=(e,t,a,i,l,s)=>{efftab[e]=new aEff(e,t,a,i,l,s)},this.efftab=()=>efftab}get f(){return this.efftab()}},seff=new sEff,sItem=class{constructor(){let a={},f=class{constructor(e,t,a,i,l,s,r,n,c,d,o){this.id=e,this.name=t,this.typ=a,this.cat=i,this.eff=l,this.pnt=s,this.rec=r,this.atkdef=n,this.used=c,this.lv=d,this.price=o}get n(){return this.name}get d(){return""}},u={},p=0,y=(this.aItemP=()=>p,class{constructor(e,t,a,i,l,s,r,n,c,d,o,f,u,p,h,g,m,v){this.xid=e,this.aID=t,this.tags=a,this.effects=i,this.cost=l,this.price=s,this.quality=r,this.points=n,this.vol=c,this.atkdef=d,this.used=o,this.givencat=f,this.lvd=u,this.voltmp=0,this.fup=p,this.lup=h,this.incr=g,this.decr=m,this.perp=v}get lvsum(){return 0<u[this.aID].lv-this.lvd?u[this.aID].lv-this.lvd:1}get n(){return u[this.aID].n}get v(){return this.vol-this.voltmp}get calused(){var t=this.used[2],a=this.used[1],i=this.used[0],l=[this.perp,a*i,t*i];if(1<=i){if(l[1]+=a*(this.fup-1),l[1]+=a*(this.lup-1),l[2]+=t*(this.fup-1),l[2]+=t*(this.lup-1),this.incr)for(let e=0;e<i;e++)l[1]+=a*this.incr*e,l[2]+=t*this.incr*e;if(this.decr)for(let e=i;0<e;e--)l[1]+=a*this.decr*e,l[2]+=t*this.decr*e;this.perp&&(0<l[1]&&(l[1]=1/0),0<l[2])&&(l[2]=1/0)}return l}}),x=[],b=(this.aCats=()=>a,this.newaCat=(e,t)=>{a[e]=t},this.aItemTab=()=>u,this.newaItem=(e,t,a,i,l,s,r,n,c,d,o)=>{e=p,p++,u[e]=new f(e,t,a,i,l,s,r,n,c,d,o)},this.bItemTab=()=>x,(t,a)=>{for(let e=0;e<t.length;e++)if(t[e]!=a[e])return!1;return!0});this.newbItem=(t,a,i,l,s,r,n,c,d,o,f,u,p,h,g,m,v)=>{for(let e=0;e<x.length;e++)if(x[e].aID==t&&stag.ct(x[e].tags,a)&&((t,e)=>{if(t.length!=e.length)return!1;var a=sortby(t,0),i=sortby(t,0);for(let e=0;e<t.length;e++)if(a[e]!=i[e])return!1;return!0})(x[e].effects,i)&&b(x[e].atkdef,d)&&b(x[e].used,o)&&((t,e)=>{if(t.length!=e.length)return!1;var a=sortarr(t),i=sortarr(e);for(let e=0;e<t.length;e++)if(a[e]!=i[e])return!1;return!0})(x[e].givencat,f)&&x[e].cost==l&&x[e].price==s&&x[e].quality==r&&x[e].lvd==u&&x[e].fup==p&&x[e].lup==h&&x[e].incr==g&&x[e].decr==m&&x[e].perp==v&&x[e].points[0]==n[0]&&x[e].points[1]==n[1]&&x[e].points[2]==n[2]&&x[e].points[3]==n[3]&&x[e].points[4]==n[4])return x[e].vol+=c,x[e];var e=new y(x.length,t,a,i,l,s,r,n,c,d,o,f,u,p,h,g,m,v);return x.push(e),e},this.removebItem=(e,t)=>{x[e].vol-=t},this.filterbItem=i=>{var l=[];if(0==i[0]){for(let e=0;e<x.length;e++)x[e].vol<=x[e].voltmp||x[e].aID==i[1]&&l.push(x[e]);return l}if(1==i[0]){for(let a=0;a<x.length;a++)if(!(x[a].vol<=x[a].voltmp)){let t=!1;for(let e=0;e<x[a].givencat.length;e++)if(x[a].givencat[e]==i[1]){t=!0;break}if(t)l.push(x[a]);else{for(let e=0;e<u[x[a].aID].cat.length;e++)if(i[1]==u[x[a].aID].cat[e]){t=!0;break}t&&l.push(x[a])}}return l}if(2==i[0]){for(let t=0;t<x.length;t++)if(!(x[t].vol<=x[t].voltmp))for(let e=0;e<x[t].tags.length;e++)if(i[1]==x[t].tags[e].id){l.push(x[t]);break}return l}},this.resetvol=()=>{for(let e=0;e<x.length;e++)x[e].voltmp=0},this.applyvol=()=>{for(let e=0;e<x.length;e++)x[e].vol-=x[e].voltmp}}get a(){return this.aItemTab()}get b(){return this.bItemTab()}get c(){return this.aCats()}},sitem=new sItem,sFarm=class{constructor(){let s=class{constructor(e,t,a,i,l){this.id=e,this.name=t,this.lv=a,this.price=i,this.itemlist=l}},r={};this.fl=()=>r;this.newFarm=(e,t,a,i,l)=>r[e]=new s(e,t,a,i,l),this.excavation=e=>{var t=r[e].itemlist,a=M.floor(M.random()*t.length),i=(t[a][2],[]),l=20*(l=t[a][2])+(M.floor(10*M.random()*l)-10),e=r[e].price,i=sitem.newbItem(t[a][0],i,[],e,1,l,[0,0,0,0,0],t[a][1],[0,0,0,0,0,0],[0,0,0],[],lvd,fup,lup,incr,decr,perp),e=[[i.xid,t[a][1]]];return sfac.newfrec(e),[i,e]}}},sfarm=new sFarm,sFactory=class{constructor(){let i=[];this.makingtab=()=>i,this.newrec=t=>{for(let e=0;e<i.length;e++)if(co(i[e],t))return;i.push(t)},this.getfaci=t=>{let a=-1;return Object.keys(i[t]).forEach(e=>{0<=i[t][e]&&(a=e)}),a},this.applyrec=t=>{Object.keys(i[t]).forEach(e=>{console.log(t,e,i[t][e]),sitem.b[U(e)].vol+=i[t][e]})}}get t(){return this.makingtab()}},sfac=new sFactory,sAtelier=class{constructor(){let recipe=-1,mLt=[],tagsList={},tagsresult=[],crp=[0,0,0,0,0],smp=[0,0,0,0,0],effect=[],qs=0,qup=0,quppercent=0,cq=0,extramake=0,ict=0,cost=0,price=1,lvd=0,link=0,unlink=0,jointag=!0,givecat=[],effpnt=[0,0,0,0,0],atkdef=[0,0,0,0,0,0],used=[0,0,0],fup=10,lup=10,incr=0,decr=0,perp=!1;const elv=4;let ead=[!0,!0,!0,!0,!0],pushcat=t=>{for(let e=0;e<givecat.length;e++)if(givecat[e]==t)return;givecat.push(t)},applysyneff=(pushcat,e=>{5<=e[0]&&e[0]<=26&&eval(seff.efftab()[e[0]].ev)(e[1],e[2]),37<=e[0]&&e[0]<=39&&eval(seff.efftab()[e[0]].ev)(e[1],e[2])}),applyeff=t=>{if(0<=t[0]&&t[0]<=4)0<=t[1]?effpnt[t[0]]+=t[1]:effpnt[t[0]]*=-t[1];else if(27==t[0]){for(let e=0;e<givecat.length;e++)if(givecat==t[1])return;givecat.push(t[1])}else 28<=t[0]&&t[0]<=33?0<=t[1]?atkdef[t[0]-28]+=t[1]:atkdef[t[0]-28]*=-t[1]:34<=t[0]&&t[0]<=36&&(0<=t[1]?used[t[0]-34]+=t[1]:used[t[0]-34]*=-t[1])},pushTags=e=>{tagsList[e.id]?tagsList[e.id]++:tagsList[e.id]=1},removeTags=e=>{tagsList[e.id]&&tagsList[e.id]--,0==tagsList[e.id]&&delete tagsList[e.id]},joinTags=(this.sr=t=>{recipe=t,sitem.a[t].rec.forEach(t=>{for(let e=0;e<t[1];e++)mLt.push([[t[0],t[2]],[0,0]])});for(let e=0;e<6;e++)atkdef[e]=sitem.a[t].atkdef[e];for(let e=0;e<3;e++)used[e]=sitem.a[t].used[e];for(let e=0;e<5;e++)effpnt[e]=sitem.a[t].pnt[e];return price=sitem.a[t].price,{mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}},this.insert=(t,e)=>{if(0==mLt[e][1][1]&&sitem.b[t].vol>sitem.b[t].voltmp){mLt[e][1][1]=1,sitem.b[t].voltmp++,cost+=sitem.b[t].cost,ict++,qs+=sitem.b[t].quality,cq=M.floor((qs/ict+qup)*(1+quppercent/100));var a=sitem.a[sitem.b[t].aID].pnt;for(let e=0;e<5;e++)a[e]+=sitem.b[t].points[e];for(let e=0;e<5;e++)smp[e]+=a[e],crp[e]+=a[e];crp[0]+=M.floor(a[4]/2),smp[0]+=M.floor(a[4]/2),crp[1]-=M.floor(a[4]/2),crp[1]+=M.floor(a[0]/2),smp[1]+=M.floor(a[0]/2),crp[2]-=M.floor(a[0]/2),crp[2]+=M.floor(a[1]/2),smp[2]+=M.floor(a[1]/2),crp[3]-=M.floor(a[1]/2),crp[3]+=M.floor(a[2]/2),smp[3]+=M.floor(a[2]/2),crp[4]-=M.floor(a[2]/2),crp[4]+=M.floor(a[3]/2),smp[4]+=M.floor(a[3]/2),crp[0]-=M.floor(a[3]/2);for(let e=0;e<5;e++)crp[e]=M.max(crp[e],0);ead[0]&&crp[0]>elv&&(ead[0]=!1,mLt.push([[1,10],[1,0]])),ead[1]&&crp[1]>elv&&(ead[1]=!1,mLt.push([[1,2],[1,0]])),ead[2]&&crp[2]>elv&&(ead[2]=!1,mLt.push([[1,22],[1,0]])),ead[3]&&crp[3]>elv&&(ead[3]=!1,mLt.push([[1,5],[1,0]])),ead[4]&&crp[4]>elv&&(ead[4]=!1,mLt.push([[1,7],[1,0]]));for(let e=0;e<sitem.b[t].tags.length;e++)pushTags(sitem.b[t].tags[e]);var i=[];for(let e=0;e<sitem.b[t].effects.length;e++){var l=sitem.a[sitem.b[t].aID].eff[sitem.b[t].effects[e][0]].eff[sitem.b[t].effects[e][1]].eff;l[0]<27&&4<l[0]&&i.push(l)}for(let e=0;e<i.length;e++)applysyneff(i[e])}return{mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}},()=>{if(jointag){var i=Object.keys(tagsList);let a=!0;for(let t=0;t<i.length;t++)for(let e=0;e<t;e++){var l=stag.joinTag(U(i[t]),U(i[e]));-1!=l&&(removeTags(stag.tagTable()[U(i[t])]),removeTags(stag.tagTable()[U(i[e])]),pushTags(stag.tagTable()[l]),a=!1)}a||joinTags()}}),applyTagEff=(this.insertdone=()=>{var i=sitem.a[recipe].eff;for(let a=0;a<i.length;a++){let t=0;for(let e=0;e<i[a].eff.length&&!(smp[i[a].element]<i[a].eff[e].lv);e++)t=e;effect.push([a,t])}return effect.forEach(e=>{e=sitem.a[recipe].eff[e[0]].eff[e[1]];applyeff(e.eff)}),joinTags(),{mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}},this.linkTags=(t,a)=>{if(tagsList[t]&&tagsList[a]){let e=stag.linkTag(t,a);return-1==e?(e=stag.pushlTag(stag.getltagname(t,a),[t,a],1,t+"and"+a+"linked",[]),removeTags(stag.tagTable()[t]),removeTags(stag.tagTable()[a]),pushTags(stag.tagTable()[e]),link--,{status:1,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}):(removeTags(stag.tagTable()[t]),removeTags(stag.tagTable()[a]),pushTags(stag.tagTable()[e]),link--,{status:0,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd})}return{status:-1,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}},this.unlinkTag=e=>{var t;return tagsList[e]?(t=stag.parentTag(e)).length?(removeTags(stag.tagTable()[e]),e=M.floor(M.random()*t.length),pushTags(stag.tagTable()[t[e][1]]),pushTags(stag.tagTable()[t[e][2]]),unlink--,{status:0,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}):{status:-1,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}:{status:-2,mLt:mLt,cq:cq,ict:ict,extramake:extramake,crp:crp,smp:smp,used:used,atkdef:atkdef,tagsList:tagsList,cost:cost,link:link,unlink:unlink,recipe:recipe,lvd:lvd}},t=>{eval(t.ev)}),vali=(this.commitTag=e=>{tagsresult=[],e.forEach(a=>{if(tagsList[a])if(0==tagsresult.length)tagsresult.push(stag.tagTable()[a]);else{let t=!0;tagsresult.forEach(e=>{a==e.id&&(t=!1)}),t&&tagsresult.push(stag.tagTable()[a])}}),3<=tagsresult.length&&(tagsresult=[tagsresult[0],tagsresult[1],tagsresult[2]])},()=>{for(let e=0;e<mLt.length;e++)if(0==mLt[e][1][0]&&0==mLt[e][1][1])return!0;return!1});this.commit=()=>{if(vali())return"required item not instered";if(link!=unlink)return"bad link";var t={};for(let e=0;e<sitem.b.length;e++)0!=sitem.b[e].voltmp&&(t[e]=-sitem.b[e].voltmp);cq=M.floor((qs/ict+qup)*(1+quppercent/100)),cost=M.floor(cost/(ict+extramake)),tagsresult.forEach(applyTagEff),999<=(cq=M.floor(cq))&&(cq=999),(cost=M.floor(cost))<=0&&(cost=0),(price=M.floor(price))<=0&&(price=0);var e=sitem.newbItem(recipe,tagsresult,effect,cost,price,cq,effpnt,ict+extramake,atkdef,used,givecat,lvd,fup,lup,incr,decr,perp);return t[e.xid]=ict+extramake,sitem.applyvol(),sitem.resetvol(),sfac.newrec(t),splayer.daypass(e.lvsum),{xidlist:t,newb:e.xid}}}},sPlayer=class{constructor(){let s=0,r=1,n=1,a=!1;this.negItem2zero=()=>{sitem.b.forEach(e=>{e.vol<0&&(s+=e.vol*e.price*2,e.vol=0)})},this.money=e=>e?s+=e:s,this.daypass=t=>{for(let e=0;e<t;e++){8==++n&&(n=1,r++);let t=!0;for(let e=1;e<6;e++)this.chktask(e)||(t=!1);a||t&&(a=!0,alert("you have won the game, time: "+r+" weeks "+n+" days"))}},this.getinfo=()=>({money:s,week:r,day:n}),this.save=()=>{var t={aa:[]};t.aw=r,t.bd=n,t.cm=s,t.dt=[],t.eb=[],t.ff=sfac.makingtab();for(let e=0;e<sitem.aItemP();e++){var a=JSON.parse(JSON.stringify(sitem.a[e]));t.aa.push(a)}for(let e=0;e<sitem.b.length;e++){var i=JSON.parse(JSON.stringify(sitem.b[e]));i.tagid=[];for(let e=0;e<i.tags.length;e++)i.tagid.push(i.tags[e].id);delete i.tags,t.eb.push(i)}for(let e=2;e<-stag.linkedTagCur();e++){var l=JSON.parse(JSON.stringify(stag.t[-e]));delete l.id,delete l.lnkto,delete l.lv,t.dt.push(l)}return JSON.stringify(t)},this.load=e=>{var a=JSON.parse(e);r=a.aw,n=a.bd,s=a.cm;for(let e=0;e<a.aa.length;e++)sitem.newaItem(a.aa[e].id,a.aa[e].name,a.aa[e].typ,a.aa[e].cat,a.aa[e].eff,a.aa[e].pnt,a.aa[e].rec,a.aa[e].atkdef,a.aa[e].used,a.aa[e].lv,a.aa[e].price);for(let e=0;e<a.dt.length;e++)stag.pushlTag(a.dt[e].name,[a.dt[e].lnkfr[0][1],a.dt[e].lnkfr[0][2]],a.dt[e].avl,a.dt[e].des,a.dt[e].eff);for(let t=0;t<a.eb.length;t++){var i=[];for(let e=0;e<a.eb[t].tagid.length;e++)i.push(stag.t[a.eb[t].tagid[e]]);sitem.newbItem(a.eb[t].aID,i,a.eb[t].effects,a.eb[t].cost,a.eb[t].price,a.eb[t].quality,a.eb[t].points,a.eb[t].vol,a.eb[t].atkdef,a.eb[t].used,a.eb[t].givencat,a.eb[t].lvd,a.eb[t].fup,a.eb[t].lup,a.eb[t].incr,a.eb[t].decr,a.eb[t].perp)}for(let e=0;e<a.ff.length;e++)sfac.newrec(a.ff[e])},this.chktask=e=>{switch(e){case 1:return 999999<=this.money();case 2:for(let e=0;e<sitem.b.length;e++)if(999<=sitem.b[e].quality)return!0;return!1;case 3:for(let e=0;e<sitem.b.length;e++)if(sitem.b[e].cost<=0)return!0;return!1;case 4:for(let e=0;e<sitem.b.length;e++)if(999<=sitem.b[e].used[1])return!0;return!1;case 5:for(let e=0;e<sitem.b.length;e++)if(sitem.b[e].calused()[1]>=1/0)return!0;return!1}}}},splayer=new sPlayer,le=e=>{JSON.parse(e).forEach(e=>{var t,a,i,l,s;0!=e.id&&!e.id||(t=U(e.id),a=e.effN,i=e.eval,l=e.Tl,s=e.desc,e="1"==e.syneff,seff.pushEff(t,a,i,l,s,e))})},lt=e=>{JSON.parse(e).forEach(e=>{if("0"===e.id||e.id){let t=[];e.lfrom&&e.lfrom.split(";").forEach(e=>{e=e.trim().split(" ");"&"==e[1]?t.push([0,U(e[0]),U(e[2])]):t.push([1,U(e[0]),U(e[2])])});var a=e.eval;stag.newTag(U(e.id),U(e.llv),e.N,t,63,e.effect,[],a)}})},litem=e=>{e=JSON.parse(e);if(0==e.id||e.id){var l=U(e.id),r=e.N,n=U(e.type);let s=[],t=[];e.cat.split(";").forEach(e=>{e=e.trim();t.push(U(e))});var c=[];c[0]=U(e.metal),c[1]=U(e.water),c[2]=U(e.wood),c[3]=U(e.fire),c[4]=U(e.earth);let a=[];var d=e.receipt.split(";");for(let e=0;e<d.length;e+=2){var o,f=U(d[e].trim()),u=d[e+1].trim();if(-1==f){a=[[-1,0,0]];break}"("==u[0]?(o=U(u.slice(1,u.length-1)),a.push([1,f,o])):"#"==u[0]?(o=U(u.slice(1,u.length)),a.push([2,f,o])):a.push([0,f,U(u)])}e.effect&&e.effect.split("!").forEach(e=>{var t=(e=e.trim()).split("#"),e=U(t[0].trim()),a=[];for(let e=1;e<t.length;e++){var i=t[e].split(";"),l=(i[0]=i[0].trim(),i[1]=i[1].trim(),i[1].split("+"));a.push({lv:U(i[0]),eff:[U(l[0]),U(l[1]),U(l[2])]})}s.push({element:e,eff:a})});let i=[0,0,0,0,0,0];if("0"==e.atkdefbase)i=[0,0,0,0,0,0];else{var p=e.atkdefbase.trim().split(";");for(let e=0;e<=5;e++)i[e]=U(p[e].trim())}var h=[0,0,0],g=(h[0]=U(e.used),h[1]=U(e.damage),h[2]=U(e.heal),U(e.price)),e=U(e.lv);sitem.newaItem(l,r,n,t,s,c,a,i,h,e,g)}};JSON.parse('[{"id":"0","cat":"metal"},{"id":"1","cat":"gas"},{"id":"2","cat":"liquid"},{"id":"3","cat":"plant"},{"id":"4","cat":"wood"},{"id":"5","cat":"fuel"},{"id":"6","cat":"dynamite"},{"id":"7","cat":"dirt"},{"id":"8","cat":"stone"},{"id":"9","cat":"ore"},{"id":"10","cat":"mysterious power"},{"id":"11","cat":"radioactive material"},{"id":"12","cat":"toxic chemicals"},{"id":"13","cat":"herbs"},{"id":"14","cat":"seed"},{"id":"15","cat":"animail material"},{"id":"16","cat":"wire"},{"id":"17","cat":"fabric"},{"id":"18","cat":"alloy"},{"id":"19","cat":"acid"},{"id":"20","cat":"alkali"},{"id":"21","cat":"salt"},{"id":"22","cat":"impurities"},{"id":"23","cat":"neutralizer"},{"id":"24","cat":"food"},{"id":"25","cat":"grain"},{"id":"26","cat":"bomb"},{"id":"27","cat":"potion"},{"id":"28","cat":"weapon"},{"id":"29","cat":"armor"},{"id":"30","cat":"accessories"}]').forEach(e=>{sitem.newaCat(U(e.id),e.cat)}),le(`[{"id":"-1","effN":"no effect","eval":"-1","Tl":"()=>'no effect'","desc":"()=>'no effect'"},{"id":"0","effN":"add point metal","eval":"-1","Tl":"x=>'metal '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase metal by '+x+((x>=0)?'':' times')"},{"id":"1","effN":"add point water","eval":"-1","Tl":"x=>'water '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase water by '+x+((x>=0)?'':' times')"},{"id":"2","effN":"add point wood","eval":"-1","Tl":"x=>'wood '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase wood by '+x+((x>=0)?'':' times')"},{"id":"3","effN":"add point fire","eval":"-1","Tl":"x=>'fire '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase fire by '+x+((x>=0)?'':' times')"},{"id":"4","effN":"add point earth","eval":"-1","Tl":"x=>'earth '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase earth by '+x+((x>=0)?'':' times')"},{"id":"5","effN":"syn: add point metal","eval":"x=>{if(x>=0){crp[0]+=x;smp[0]+=x}else{x=-x;smp[0]+=(crp[0]*(x-1));crp[0]*=x;}}","Tl":"x=>'syn: metal '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase metal by '+x+((x>=0)?'':' times')+''"},{"id":"6","effN":"syn: add point water","eval":"x=>{if(x>=0){crp[1]+=x;smp[1]+=x}else{x=-x;smp[1]+=(crp[1]*(x-1));crp[1]*=x;}}","Tl":"x=>'syn: water '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase water by '+x+((x>=0)?'':' times')+''"},{"id":"7","effN":"syn: add point wood","eval":"x=>{if(x>=0){crp[2]+=x;smp[2]+=x}else{x=-x;smp[2]+=(crp[2]*(x-1));crp[2]*=x;}}","Tl":"x=>'syn: wood '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase wood by '+x+((x>=0)?'':' times')+''"},{"id":"8","effN":"syn: add point fire","eval":"x=>{if(x>=0){crp[3]+=x;smp[3]+=x}else{x=-x;smp[3]+=(crp[3]*(x-1));crp[3]*=x;}}","Tl":"x=>'syn: fire '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase fire by '+x+((x>=0)?'':' times')+''"},{"id":"9","effN":"syn: add point earth","eval":"x=>{if(x>=0){crp[4]+=x;smp[4]+=x}else{x=-x;smp[4]+=(crp[4]*(x-1));crp[4]*=x;}}","Tl":"x=>'syn: earth '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase earth by '+x+((x>=0)?'':' times')+''"},{"id":"10","effN":"syn: add link times","eval":"x=>{link+=x}","Tl":"x=>'syn: link + '+x","desc":"x=>'increase links by '+x+''"},{"id":"11","effN":"syn: add unlink times","eval":"x=>{unlink+=x}","Tl":"x=>'syn: unllink + '+x","desc":"x=>'increase unlinks by '+x+''"},{"id":"12","effN":"syn: suppress tag joining","eval":"_=>{(jointag?(jointag=false):false)}","Tl":"x=>'syn: suppress tag joining'","desc":"x=>'syn: suppress tag joining'"},{"id":"13","effN":"syn: quality up","eval":"x=>{if(x>=0){qup+=x}else{quppercent-=x}cq=M.floor(((qs/ict)+qup)*(1+(quppercent/100)))}","Tl":"x=>'syn: quality up by'+x+((x>=0)?'':' %')","desc":"x=>'increase quality by '+x+((x>=0)?'':' %')+''"},{"id":"14","effN":"syn: extra item by item id","eval":"(x,y)=>{for(let i=0;i<y;i++)mLt.push([0,x],[1,0])}","Tl":"(x,y)=>'syn: extra item: '+sitem.a[x].n+' x '+y","desc":"(x,y)=>'add extra item: '+sitem.a[x].n+''+' x '+y"},{"id":"15","effN":"syn: extra item by category","eval":"(x,y)=>{for(let i=0;i<y;i++)mLt.push([1,x],[1,0])}","Tl":"(x,y)=>'syn: extra item: ('+sitem.c[x]+')'+' x '+y","desc":"(x,y)=>'add extra item: ('+sitem.c[x]+')'+' x '+y"},{"id":"16","effN":"syn: extra item by tag","eval":"(x,y)=>{for(let i=0;i<y;i++)mLt.push([2,x],[1,0])}","Tl":"(x,y)=>'syn: extra item: #'+stag.t[x].n+' x '+y","desc":"(x,y)=>'add extra item: #'+stag.t[x].n+'when used as ingredient'+' x '+y"},{"id":"17","effN":"syn: quantity up","eval":"x=>{extramake+=x}","Tl":"x=>'syn: quantity up by'+x","desc":"x=>'syn: quantity up by'+x+''"},{"id":"24","effN":"syn: give tag","eval":"x=>{pushTags(stag.t[x])}","Tl":"x=>'syn: extra tag: #'+stag.t[x].n","desc":"x=>'give extra tag: #'+stag.t[x].n+' to product'"},{"id":"25","effN":"syn: give category","eval":"x=>{pushcat(x)}","Tl":"x=>'syn: extra category: ('+sitem.c[x]+')'","desc":"x=>'give extra category: ('+sitem.c[x]+') to product'"},{"id":"26","effN":"syn: level down","eval":"x=>{lvd+=x}","Tl":"x=>'syn: lv down by + '+x","desc":"x=>'decrease lv of product by '+x+''"},{"id":"27","effN":"give category","eval":"-1","Tl":"x=>'extra category: ('+sitem.c[x]+')'","desc":"x=>'extra category: ('+sitem.c[x]+')'"},{"id":"34","effN":"use time up","eval":"-1","Tl":"x=>'usage count '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase usage count by '+x+((x>=0)?'':' times')"},{"id":"35","effN":"damage up","eval":"-1","Tl":"x=>'damage '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase damage by '+x+((x>=0)?'':' times')"},{"id":"36","effN":"heal up","eval":"-1","Tl":"x=>'heal '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase heal by '+x+((x>=0)?'':' times')"},{"id":"37","effN":"syn: use time up","eval":"x=>{if(x>=0){used[0]+=x}else{used[0]*=(-x)}}","Tl":"x=>'syn: usage count '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase usage count by '+x+((x>=0)?'':' times')+''"},{"id":"38","effN":"syn: damage up","eval":"x=>{if(x>=0){used[1]+=x}else{used[1]*=(-x)}}","Tl":"x=>'syn: damage '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase damage by '+x+((x>=0)?'':' times')+''"},{"id":"39","effN":"syn: heal up","eval":"x=>{if(x>=0){atkdef[2]+=x}else{atkdef[2]*=(-x)}}","Tl":"x=>'syn: heal '+((x>=0)?'+ ':'x ')+x","desc":"x=>'increase heal by '+x+((x>=0)?'':' times')+''"}]`),lt('[{"id":"0","llv":"1","N":"quality increasement","effect":"quality + 10%","eval":"cq*=1.1"},{"id":"1","llv":"1","N":"quality increasement +","effect":"quality + 15%","eval":"cq*=1.15"},{"id":"2","llv":"1","N":"quality increasement ++","effect":"quality + 20%","eval":"cq*=1.2"},{"id":"3","llv":"2","N":"good quality","lfrom":"0 & 1","effect":"quality + 25%","eval":"cq*=1.25"},{"id":"4","llv":"2","N":"best quality","lfrom":"1 & 2","effect":"quality + 35%","eval":"cq*=1.35"},{"id":"5","llv":"4","N":"super quality","lfrom":"3 & 4","effect":"quality + 50%","eval":"cq*=1.5"},{"id":"6","llv":"1","N":"low cost","effect":"cost - 10%","eval":"cost*=0.9"},{"id":"7","llv":"1","N":"low cost +","effect":"cost - 15%","eval":"cost*=0.85"},{"id":"8","llv":"1","N":"low cost ++","effect":"cost - 20%","eval":"cost*=0.8"},{"id":"9","llv":"2","N":"special discount","lfrom":"6 & 7","effect":"cost - 25%","eval":"cost*=0.75"},{"id":"10","llv":"2","N":"limited offer","lfrom":"7 & 8","effect":"cost - 30%","eval":"cost*=0.7"},{"id":"11","llv":"4","N":"costless","lfrom":"9 & 10","effect":"cost - 50%","eval":"cost*=0.5"},{"id":"12","llv":"1","N":"high price","effect":"price + 20","eval":"price+=20"},{"id":"13","llv":"1","N":"high price +","effect":"price + 30","eval":"price+=30"},{"id":"14","llv":"1","N":"high price ++","effect":"price + 40","eval":"price+=40"},{"id":"15","llv":"2","N":"quite worthy","lfrom":"12 & 13","effect":"price + 25%","eval":"price*=1.25"},{"id":"16","llv":"2","N":"inbelivible value","lfrom":"13 & 14","effect":"price + 30%; price + 45","eval":"price*=1.3;price+=45"},{"id":"17","llv":"4","N":"priceless","lfrom":"15 & 16","effect":"price + 50%; price + 50","eval":"price*=1.5;price+=50"},{"id":"18","llv":"8","N":"very economic","lfrom":"5 && 11","effect":"quality + 40%; cost - 40%","eval":"cq*=1.4;cost*=0.6"},{"id":"19","llv":"8","N":"worth it","lfrom":"5 && 17","effect":"quality + 40%; price + 40%; price + 40","eval":"cq*=1.4;price*=1.4;price+=40"},{"id":"20","llv":"8","N":"market cheater","lfrom":"11 && 17","effect":"cost - 35%; price + 35%; price + 35","eval":"cost*=0.65;price*=1.35;price+=35"},{"id":"21","llv":"12","N":"golden ray","lfrom":"5 && 20; 11 && 19; 17 && 18","effect":"quality + 30%; cost - 30%; price + 30%; price + 30","eval":"cq*=1.3;cost*=0.7;price*=1.3;price+=30"},{"id":"22","llv":"1","N":"damage up","effect":"damage + 10%","eval":"used[1]*=1.1"},{"id":"23","llv":"1","N":"damage up +","effect":"damage + 15%","eval":"used[1]*=1.15"},{"id":"24","llv":"1","N":"damage up ++","effect":"damage + 20%","eval":"used[1]*=1.2"},{"id":"25","llv":"2","N":"explosive","lfrom":"22 & 23","effect":"damage + 25%","eval":"used[1]*=1.25"},{"id":"26","llv":"2","N":"destructive","lfrom":"23 & 24","effect":"damage + 35%","eval":"used[1]*=1.35"},{"id":"27","llv":"4","N":"dynamitic dynamite","lfrom":"25 && 26","effect":"damage + 60%","eval":"used[1]*=1.6"},{"id":"28","llv":"1","N":"heal up","effect":"heal + 10%","eval":"used[2]*=1.1"},{"id":"29","llv":"1","N":"heal up +","effect":"heal + 15%","eval":"used[2]*=1.15"},{"id":"30","llv":"1","N":"heal up ++","effect":"heal + 20%","eval":"used[2]*=1.2"},{"id":"31","llv":"2","N":"healthy","lfrom":"28 & 29","effect":"heal + 25%","eval":"used[2]*=1.25"},{"id":"32","llv":"2","N":"medical","lfrom":"29 & 30","effect":"heal + 35%","eval":"used[2]*=1.35"},{"id":"33","llv":"4","N":"secert of health","lfrom":"31 && 32","effect":"heal + 60%","eval":"used[2]*=1.6"},{"id":"34","llv":"6","N":"energy drain","lfrom":"27 && 31","effect":"add damage to heal","eval":"used[2]+=used[1]"},{"id":"35","llv":"1","N":"half life","effect":"add damage x 50% to heal","eval":"used[2]+=(used[1]*0.5)"},{"id":"36","llv":"7","N":"curse of life","lfrom":"34 && 35","effect":"50 % damage to self; damage x 500%","eval":"used[2]-=(used[1]*0.5);used[1]*=5"},{"id":"37","llv":"11","N":"costless curse of life","lfrom":"11 && 36","effect":"50 % damage to heal self; damage x 500%","eval":"used[2]+=(used[1]*0.5);used[1]*=5"},{"id":"77","llv":"1","N":"concentration increasement","effect":"points + 1","eval":"for(let i=0;i<5;i++)effpnt[i]+=1"},{"id":"78","llv":"1","N":"concentration increasement +","effect":"points + 2","eval":"for(let i=0;i<5;i++)effpnt[i]+=2"},{"id":"79","llv":"1","N":"concentration increasement ++","effect":"points + 3","eval":"for(let i=0;i<5;i++)effpnt[i]+=3"},{"id":"80","llv":"2","N":"high concentration","lfrom":"77 & 78","effect":"points x 2","eval":"for(let i=0;i<5;i++)effpnt[i]*=2"},{"id":"81","llv":"2","N":"higher concentration","lfrom":"78 & 79","effect":"points x 3","eval":"for(let i=0;i<5;i++)effpnt[i]*=3"},{"id":"82","llv":"4","N":"highest concentration","lfrom":"80 && 81","effect":"points + 1 then points x 3","eval":"for(let i=0;i<5;i++){effpnt[i]+=1;effpnt[i]*=3}"},{"id":"83","llv":"1","N":"usage count + 1","effect":"use 1 more time","eval":"used[0]+=1"},{"id":"84","llv":"1","N":"usage count + 2","effect":"use 2 more times","eval":"used[0]+=2"},{"id":"85","llv":"2","N":"proliferation","lfrom":"83 & 84","effect":"use 3 more times","eval":"used[0]+=3"},{"id":"86","llv":"10","N":"recyclable","lfrom":"18 && 85","effect":"usage count x 2","eval":"used[0]*=2"},{"id":"87","llv":"1","N":"perpetual","effect":"usage count do not reduce","eval":"perp=true"},{"id":"88","llv":"1","N":"usage count - 1","effect":"use 1 less time; damage or heal + 5%","eval":"used[0]-=1;used[1]*=1.05;used[2]*=1.05"},{"id":"89","llv":"1","N":"usage count - 2","effect":"use 2 less times; damage or heal + 10%","eval":"used[0]-=2;used[1]*=1.1;used[2]*=1.1"},{"id":"90","llv":"2","N":"reduction","lfrom":"88 & 89","effect":"use 3 less times; damage or heal + 15%","eval":"used[0]-=3;used[1]*=1.15;used[2]*=1.15"},{"id":"91","llv":"10","N":"eruption","lfrom":"19 & 90","effect":"usage count halfed; damage or heal + 50%","eval":"used[0]-=M.floor(used[0]*0.5);used[1]*=1.5;used[2]*=1.5"}]');"use strict";const D=document,gei=e=>D.getElementById(e),dcr=e=>D.createElement(e);HTMLElement.prototype.apc=HTMLElement.prototype.appendChild;let sUi=class{constructor(){this.elelist=["earth","water","wood","fire","earth"],this.equlist=["HP","MP","atk","def","agi","luk"]}updateEncyclopedia(){gei("items")}switchTO(e){var t=gei("atelier"),a=gei("factory"),i=gei("explore"),l="display:none";switch(e){case 1:t.style="",a.style=i.style=l;break;case 2:i.style="",t.style=a.style=l;break;default:a.style="",i.style=t.style=l}}expandSel(e,t){1==U(e.size)?(e.size=5,t.innerHTML="-"):(e.size=1,t.innerHTML="+")}noSwitch(){gei("actionbuttons").style="display:none",gei("fakebuttons").style="",gei("buy").disabled=!0,gei("sell").disabled=!0,gei("buysell").disabled=!0,gei("savebtn").disabled=!0}yeSwitch(){gei("actionbuttons").style="",gei("fakebuttons").style="display:none",gei("buy").disabled=!1,gei("sell").disabled=!1,gei("buysell").disabled=!1,gei("savebtn").disabled=!1}newAtelier(){let L=new sAtelier,T=(gei("createa").disabled=!0,gei("creater").disabled=!0,this.noSwitch(),gei("newAtelier")),v=dcr("select"),e=dcr("button");e.innerHTML="-",e.onclick=()=>this.expandSel(v,e),v.id="selr",v.size=5;var t,a=Object.keys(sitem.a);for(let e=0;e<a.length;e++)-1!=sitem.a[a[e]].rec[0][2]&&((t=dcr("option")).value=sitem.a[a[e]].id,t.innerHTML=sitem.a[a[e]].name,v.apc(t));var i=dcr("button"),i=(i.innerHTML="cancel",i.onclick=()=>{T.innerHTML="",gei("createa").disabled=!1,gei("creater").disabled=!1,this.yeSwitch(),sitem.resetvol()},T.apc(i),dcr("p"));i.innerHTML="step 1: choose recipe",T.apc(i);let l=dcr("details"),y=(l.id="recipedetail",dcr("button"));v.oninput=()=>{var e=U(v.value);l.innerHTML=JSON.stringify(sitem.a[e]),this.showaItemDesc(l,e),y.disabled=!1},T.apc(v),T.apc(e),y.disabled=!0,y.innerHTML="select recipe",y.onclick=()=>{v.size=1;var e=dcr("p"),t=dcr("table"),a=dcr("tbody"),i=dcr("tr");let l=dcr("td"),s=dcr("td"),r=dcr("td");e.innerHTML="step 2: insert ingredients",T.apc(e);var e=L.sr(U(v.value)),n=e.mLt;let x=t=>{let a="<ul>";for(let e=0;e<5;e++)a+="<li>"+this.elelist[e]+": "+t.crp[e]+"</li>";a=(a+="</ul>")+"<p>can use "+t.used[0]+" times, damage: "+t.used[1]+", heal: "+t.used[2]+"</p>",l.innerHTML=a;let i="<ul>";for(let e=0;e<6;e++)i+="<li>"+this.equlist[e]+": "+t.atkdef[e]+"</li>";i+="</ul>",s.innerHTML=i;var e="<ul><li>quality: "+t.cq+"</li><li>quantity: "+(t.extramake+t.ict);r.innerHTML=e},b=(x(e),y.disabled=!0,v.disabled=!0,console.log(n),dcr("ul")),k=(b.id="itemSelList",dcr("button")),u=(k.disabled=!0,k.innerHTML="done",k.onclick=()=>{var e=dcr("p"),e=(k.onclick=()=>{},k.disabled=!0,e.innerHTML="step 3: link tags",T.apc(e),b.innerHTML="",L.insertdone()),t=(x(e),dcr("table"));T.apc(t);let i=dcr("button");i.innerHTML="link done",T.apc(i);var a=dcr("tbody");t.apc(a);let l=dcr("tr");t=dcr("tr");let s=dcr("tr"),r=(a.apc(l),a.apc(t),a.apc(s),dcr("td")),n=(r.colSpan=2,dcr("td"));var a=dcr("td"),c=dcr("td"),d=dcr("td"),o=dcr("td"),f=(o.colSpan=2,dcr("td"));l.apc(r),l.apc(n),t.apc(a),t.apc(c),t.apc(d),s.apc(o),s.apc(f);let u=dcr("select"),p=dcr("select"),h=dcr("select"),g=(a.apc(u),c.apc(p),d.apc(h),u.size=p.size=h.size=5,dcr("button")),m=dcr("button"),v=(o.apc(g),f.apc(m),g.innerHTML="link",m.innerHTML="unlink",g.disabled=m.disabled=!0,e=>{var t=e.tagsList;r.innerHTML="links: "+e.link,n.innerHTML="unlinks: "+e.unlink;let i=[];var a=Object.keys(t);for(let e=0;e<a.length;e++){var l=a[e];i.push([U(l),U(t[l])])}[u,p,h].forEach(t=>{t.innerHTML="";var e=dcr("option");e.value="unselected",t.apc(e);for(let e=0;e<i.length;e++){var a=dcr("option");a.value=i[e][0],a.innerHTML=stag.t[i[e][0]].n+" x "+i[e][1],t.apc(a)}t.oninput=()=>{isNaN(U(u.value))||isNaN(U(p.value))?g.disabled=!0:g.disabled=!1,isNaN(U(h.value))?m.disabled=!0:m.disabled=!1}})}),y=(v(e),e);g.onclick=()=>{y=L.linkTags(U(u.value),U(p.value)),v(y),y.link==y.unlink?i.disabled=!1:i.disabled=!0},m.onclick=()=>{y=L.unlinkTag(U(h.value)),v(y),y.link==y.unlink?i.disabled=!1:i.disabled=!0},i.onclick=()=>{l.innerHTML='<td colspan="3">select 3 tags</td>',v(y),s.innerHTML="";let e=sitem.a[y.recipe].lv;(e-=y.lvd)<=1&&(e=1),i.innerHTML="confirm ("+e+" days)",i.onclick=()=>{i.disabled=!0;let t=[];[u,p,h].forEach(e=>{isNaN(U(e.value))||t.push(U(e.value))}),L.commitTag(t);var e=L.commit().newb,a=(T.innerHTML="",dcr("details")),a=(a.open=!0,T.apc(a),this.showbItemDesc(a,e),dcr("button"));a.innerHTML="ok",a.onclick=()=>{T.innerHTML="",gei("createa").disabled=!1,gei("creater").disabled=!1,this.reloadBItem(),this.yeSwitch(),this.updateDate()},T.apc(a)}}},i.apc(l),i.apc(s),i.apc(r),t.apc(a),a.apc(i),()=>{for(let e=0;e<b.children.length;e++){var t=b.children[e].children[0].children[0].children[0].children[0].children[0];for(let e=0;e<t.children.length;e++){var a=t.children[e];isNaN(U(a.value))||a.value&&(a.innerHTML=sitem.b[U(a.value)].n+" x "+sitem.b[U(a.value)].v)}}}),p=(e,t)=>{var e=L.insert(e,t),s=(x(e),e.mLt);if(b.children,s.length!=b.children.length)for(let l=b.children.length;l<s.length;l++){var r=dcr("table"),n=dcr("tbody"),c=dcr("tr"),n=(n.apc(c),r.apc(n),dcr("td")),d=dcr("td"),c=(c.apc(n),c.apc(d),dcr("li"));let t=dcr("select");t.disabled=!1;var o=sitem.filterbItem(s[l][0]);let e=dcr("details");t.size=1,t.apc(dcr("option"));for(let e=0;e<o.length;e++){var f=dcr("option");f.value=o[e].xid,f.innerHTML=sitem.a[o[e].aID].n,t.apc(f)}n.apc(t);let a=dcr("button"),i=(a.innerHTML="+",a.onclick=()=>this.expandSel(t,a),n.apc(a),dcr("button"));i.innerHTML="ok",i.id="itemOkButton"+String(l),i.disabled=!0,t.oninput=()=>{if(t.value)return sitem.b[U(t.value)].v<=0?(i.onclick=()=>{},void(i.disabled=!0)):(this.showbItemDesc(e,U(t.value)),i.onclick=()=>p(U(t.value),l),void(i.disabled=!1));i.onclick=()=>{},i.disabled=!0},d.apc(i),d.apc(dcr("br")),c.apc(r),c.apc(e),b.apc(c)}e=gei("itemOkButton"+String(t));e.disabled=!0,e.innerHTML="used",gei("itemSelList").children[t].children[0].children[0].children[0].children[0].children[0].disabled=!0,e.onclick=()=>{},k.disabled=!1,u();for(let e=0;e<s.length;e++)s[e][1][0]||s[e][1][1]||(k.disabled=!0)};for(let l=0;l<n.length;l++){var c=dcr("table"),d=dcr("tbody"),o=dcr("tr"),d=(d.apc(o),c.apc(d),dcr("td")),f=dcr("td"),o=(o.apc(d),o.apc(f),dcr("li"));let t=dcr("select");t.disabled=!1;var h=sitem.filterbItem(n[l][0]);let e=dcr("details");t.size=1;var g=dcr("option");g.innerHTML="required",g.selected=!0,t.apc(g);for(let e=0;e<h.length;e++){var m=dcr("option");m.value=h[e].xid,m.innerHTML=sitem.a[h[e].aID].n,t.apc(m)}d.apc(t);let a=dcr("button"),i=(a.innerHTML="+",a.onclick=()=>this.expandSel(t,a),d.apc(a),dcr("button"));i.innerHTML="ok",i.id="itemOkButton"+String(l),i.disabled=!0,t.oninput=()=>{if(!isNaN(U(t.value)))return sitem.b[U(t.value)].v<=0?(i.onclick=()=>{},void(i.disabled=!0)):(this.showbItemDesc(e,U(t.value)),i.onclick=()=>p(U(t.value),l),void(i.disabled=!1));i.onclick=()=>{},i.disabled=!0},f.apc(i),f.apc(dcr("br")),o.apc(c),o.apc(e),b.apc(o),u()}T.apc(b),T.apc(t),T.apc(k)},T.apc(y);i=dcr("button");i.innerHTML="what's this",i.onclick=()=>window.location.hash="e_item_"+v.value,T.apc(i),T.apc(l)}updateDate(){gei("dateweek").innerHTML=splayer.getinfo().week,gei("dateday").innerHTML=splayer.getinfo().day,gei("datemoney").innerHTML=splayer.money()}checkfilter(){var e=U(gei("SelFilBy1").value);let t=gei("SelFilBy2"),a=gei("filok");if(-1==e)t.style="display:none",a.disabled=!1;else{t.innerHTML="",t.style="",a.disabled=!0;var i=dcr("option");if(i.selected=!0,i.value="unsel",t.apc(i),0==e)for(let e=0;e<Object.keys(sitem.a).length;e++){var l=Object.keys(sitem.a)[e],s=dcr("option");s.value=sitem.a[l].id,s.innerHTML=sitem.a[l].n,t.apc(s)}if(1==e)for(let e=0;e<Object.keys(sitem.c).length;e++){var r=Object.keys(sitem.c)[e],n=dcr("option");n.value=r,n.innerHTML=sitem.c[r],t.apc(n)}if(2==e)for(let e=0;e<Object.keys(stag.t).length;e++){var c=Object.keys(stag.t)[e],d=dcr("option");d.value=c,d.innerHTML=stag.t[c].name,t.apc(d)}t.oninput=()=>a.disabled="unsel"==t.value}}reloadBItem(){var t=gei("ItemBoxList");t.innerHTML="";let a=void 0;a="-1"==gei("SelFilBy1").value?sitem.b:sitem.filterbItem([U(gei("SelFilBy1").value),U(gei("SelFilBy2").value)]);for(let e=t.children.length;e<a.length;e++){var i=dcr("option");i.value=a[e].xid,i.innerHTML=a[e].n+" x "+a[e].v,t.apc(i)}}showbItemDesc(e,t){var a=sitem.b[t];let i=sitem.a[a.aID],l="";l=(l+="<p>lv "+a.lvsum+': <a href="#e_item_'+a.aID+'">'+a.n+"</a> [quality: "+a.quality+"]")+"<p>volume: "+a.v+" cost: "+a.cost+" price: "+a.price+"</p><p>categoery:<ul>";for(let e=0;e<i.cat.length;e++)l+='<li><a href="#e_cat_'+i.cat[e]+'">('+sitem.c[i.cat[e]]+")</a></li>";for(let e=0;e<a.givencat.length;e++)l+='<li><a href="#e_cat_'+a.givencat[e]+'">('+sitem.c[a.givencat[e]]+")</a></li>";l+="</ul></p><p>effects:<ul>",0==a.effects.length&&(l+="<li>no effect</li>"),a.effects.forEach(e=>{l=(l=l+('<li><a href="#e_eff_'+i.eff[e[0]].eff[e[1]].eff[0]+'">'+seff.f[i.eff[e[0]].eff[e[1]].eff[0]].getname(i.eff[e[0]].eff[e[1]].eff[1],i.eff[e[0]].eff[e[1]].eff[2]))+"</a><details>")+seff.f[i.eff[e[0]].eff[e[1]].eff[0]].getdesc(i.eff[e[0]].eff[e[1]].eff[1],i.eff[e[0]].eff[e[1]].eff[2])+"</details></li>"}),l+="</ul></p><p>tags:<ul>";for(let e=0;e<a.tags.length;e++)l=(l=(l=(l+='<li><a href="#e_tag_')+a.tags[e].id+'">')+a.tags[e].n+"</a><details>")+a.tags[e].d+"</details></li>";l+="</ul></p><p>points:<ul>";for(let e=0;e<5;e++)l+="<li>"+this.elelist[e]+": "+(i.pnt[e]+a.points[e])+"</li>";l+="</ul></p><p>equippment:<ul>";for(let e=0;e<6;e++)l+="<li>"+this.equlist[e]+": "+a.atkdef[e]+"</li>";l=(l=(l+="</ul></p>")+"<p>can use "+a.used[0]+" times, damage: "+a.used[1]+", heal: "+a.used[2]+"</p>")+"<p>total damage: "+a.calused[1]+", total heal: "+a.calused[2],a.calused[0]&&(l+=", perpetual"),l+="</p>",e.innerHTML=l}reloadBItemDesc(){var e=gei("ItemBoxDetail"),t=sitem.b[U(gei("ItemBoxList").value)],a="";a+="<p>lv "+t.lvsum+": "+t.n+" [quality: "+t.quality+"]",e.innerHTML=a}save(){gei("savecontent").style="",gei("savebox").value=splayer.save()}load(){gei("loadbtn").style="display:none",gei("savebtn").style="",gei("loadtext").style="display:none",gei("title").style="display:none",gei("game").style="",gei("encyc").style="";var e=gei("loadbox");e.style="display:none",e.value&&splayer.load(e.value),this.reloadBItem(),this.updateDate(),this.ency()}iboninput(){this.showbItemDesc(gei("ItemBoxDetail"),U(gei("ItemBoxList").value)),this.bsoninput()}bsoninput(){var e=gei("buysell"),t=U(e.value),a=U(e.min),i=U(e.max),a=(isNaN(t)&&(e.value=1),M.floor(t)!=t&&(e.value=M.floor(t)),t<a&&(e.value=a),i<t&&(e.value=i),M.floor((t-1)/10)+1);gei("buyday").innerHTML=a}buysell(e){var t=gei("buysell"),t=U(t.value),a=M.floor((t-1)/10)+1,i=U(gei("ItemBoxList").value);if(1==e){if(t>sitem.b[i].v)return alert("item not enough");sitem.b[i].vol-=t,splayer.money(sitem.b[i].price*t)}else{if(sitem.b[i].cost*t>splayer.money())return alert("money not enough");sitem.b[i].vol+=t,splayer.money(-sitem.b[i].cost*t)}splayer.daypass(a),this.updateDate()}cfac(){let e=gei("facdiv"),t=gei("facbtn"),a=dcr("select");this.noSwitch(),t.disabled=!0;var i=dcr("button"),i=(i.innerHTML="close",i.onclick=()=>{this.yeSwitch(),t.disabled=!1,e.innerHTML=""},e.apc(i),e.apc(dcr("br")),dcr("option"));i.value="none",i.selected=!0,a.apc(i),a.size=5;let l=dcr("button");l.innerHTML="-",l.onclick=()=>this.expandSel(a,l),e.apc(a),e.apc(l);for(let e=0;e<sfac.t.length;e++){var s=sfac.getfaci(e),r=dcr("option");r.value=e,r.innerHTML=sitem.b[s].n+" x "+sfac.t[e][s],a.apc(r)}let n=dcr("div");e.apc(n),a.oninput=()=>{n.innerHTML="";let e=U(a.value);if(!isNaN(e)){var i=dcr("button");i.innerHTML="ok (1 day)",n.apc(i),i.onclick=()=>{console.log(1);for(let e=0;e<a.length;e++)if(t[a[e]]+sitem.b[a[e]].v<0)return alert("item not enough");sfac.applyrec(e),splayer.daypass(1),this.updateDate(),this.reloadBItem()},n.apc(dcr("br"));let t=sfac.t[e],a=Object.keys(t);for(let e=0;e<a.length;e++)a[e]=U(a[e]);for(let e=0;e<a.length;e++){var l=dcr("i"),l=(l.innerHTML=sitem.b[a[e]].n+(0<t[a[e]]?" + ":" - ")+M.abs(t[a[e]]),n.apc(l),dcr("details"));n.apc(l),this.showbItemDesc(l,a[e])}}}}showaItemDesc(e,t){var a=sitem.a[t];let i="";i=i+("<p>lv"+a.lv+': <a href="#e_item_'+t+'">'+a.n+"</a> price: "+a.price)+"</p><p>categoery:<ul>";for(let e=0;e<a.cat.length;e++)i+='<li><a href="#e_cat_'+a.cat[e]+'">('+sitem.c[a.cat[e]]+")</a></li>";i+="</ul></p><p>recipe:<ul>",-1==a.rec[0][2]?i+="<li>get from excavation only</li>":a.rec.forEach(e=>{i+="<li>",0==e[0]?i+='<a href="#e_item_'+e[2]+'">'+sitem.a[e[2]].n+"</a>":1==e[0]?i+='<a href="#e_cat_'+e[2]+'">('+sitem.c[e[2]]+")</a>":i+='<a href="#e_tag_'+e[2]+'">'+stag.t[e[2]].name+"</a>",i+=" x "+e[1]+"</li>"}),i+="</ul></p><p>effects:<ul>",0==a.eff.length&&(i+="<li>no effect</li>"),a.eff.forEach(e=>{i+="<li>"+this.elelist[e.element]+"<ul>",e.eff.forEach(e=>{i+="<li>lv "+e.lv+': <a href="#e_eff_'+e.eff[0]+'">'+seff.f[e.eff[0]].getname(e.eff[1],e.eff[2])+"</a><details>"+seff.f[e.eff[0]].getdesc(e.eff[1],e.eff[2])+"</details></li>"}),i+="</ul></li>"}),i+="</ul></p><p>base points:<ul>";for(let e=0;e<5;e++)i+="<li>"+this.elelist[e]+": "+a.pnt[e]+"</li>";i+="</ul></p><p>equippment:<ul>";for(let e=0;e<6;e++)i+="<li>"+this.equlist[e]+": "+a.atkdef[e]+"</li>";i+="</ul></p><p>can use "+a.used[0]+" times, damage: "+a.used[1]+", heal: "+a.used[2]+"</p>",e.innerHTML=i}exca(){var e=Object.keys(sitem.a);let t=M.floor(M.random()*(e.length+1));t==e.length&&t--;e=sitem.a[e[t]].id;let a=M.floor(5*M.random());0==a&&a++;var i=M.floor(25*M.random()),l=Object.keys(stag.t);let s=M.floor(3*M.random());var r=[],n=[];0==s&&(s=3);for(let a=0;a<s;a++){let e=M.floor(M.random()*(l.length+1)),t=(e==l.length&&e--,!0);var c=U(l[e]);for(let e=0;e<a;e++)r[e]==c&&(t=!1);t?r.push(c):a--}console.log(r);for(let e=0;e<r.length;e++)n.push(stag.t[r[e]]);sitem.newbItem(e,n,[],2,2,i,[0,0,0,0,0],a,[0,0,0,0,0,0],[0,0,0],[],0,1,1,!1,!1,!1),splayer.daypass(1),this.updateDate(),this.reloadBItem()}etag(){var e=stag.linkedTagCur(),t=gei("etag2");for(let a=t.children.length-2;a>e;a--){console.log(a);var i=dcr("li"),l=(i.innerHTML="tag "+a+": #"+stag.t[a].name+' <a href="#system">back to top</a>',i.id="e_tag_"+a,dcr("ul")),s=dcr("li");if(s.innerHTML=stag.t[a].d,l.apc(s),stag.t[a].lnkfr.length){s=dcr("li");let t="linked from:<ul>";for(let e=0;e<stag.t[a].lnkfr.length;e++)t=(t=(t+='<li><a href="#e_tag_'+stag.t[a].lnkfr[e][1]+'">#'+stag.t[stag.t[a].lnkfr[e][1]].name+"</a>")+(stag.t[a].lnkfr[e][0]?" && ":" & "))+'<a href="#e_tag_'+stag.t[a].lnkfr[e][2]+'">#'+stag.t[stag.t[a].lnkfr[e][2]].name+"</a></li>";t+="</ul>",s.innerHTML=t,l.apc(s)}i.apc(l),t.apc(i)}}dfsFindTag(t,a,i){t.tagName.toLowerCase()==a.toLowerCase()&&i.push(t);for(let e=0;e<t.children.length;e++)this.dfsFindTag(t.children[e],a,i)}encytoggle(){var t=[];this.dfsFindTag(gei("encyc"),"details",t);for(let e=0;e<t.length;e++)t[e].open=!t[e].open}ency(){let i=gei("eitem");i.innerHTML="";var a=Object.keys(sitem.a);for(let e=0;e<a.length;e++){a[e]=U(a[e]);var t=dcr("li"),l=dcr("details"),s=(t.id="e_item_"+a[e],this.showaItemDesc(l,sitem.a[a[e]].id),dcr("summary")),s=(s.innerHTML="item # "+a[e]+": "+sitem.a[a[e]].n,l.apc(s),dcr("a"));s.href="#system",s.innerHTML="back to top",t.apc(s),t.apc(l),i.apc(t)}(i=gei("ecat")).innerHTML="";var r=Object.keys(sitem.c);for(let t=0;t<r.length;t++){r[t]=U(r[t]);var n,c,e=dcr("li"),d=(e.innerHTML="categoery # "+r[t]+": "+sitem.c[r[t]]+' <a href="#system">back to top</a>',e.id="e_cat_"+r[t],dcr("ul"));for(let e=0;e<a.length;e++)sitem.a[a[e]].cat.includes(r[t])&&(n=dcr("li"),(c=dcr("a")).href="#e_item_"+a[e],c.innerHTML=sitem.a[a[e]].n,n.apc(c),d.apc(n));e.apc(d),i.apc(e)}(i=gei("etag1")).innerHTML="";var o=Object.keys(stag.t);for(let a=0;a<o.length;a++)if(o[a]=U(o[a]),!(o[a]<0)){var f=dcr("li"),u=(f.innerHTML="tag "+o[a]+": #"+stag.t[o[a]].name+' <a href="#system">back to top</a>',f.id="e_tag_"+o[a],dcr("ul")),p=dcr("li");if(p.innerHTML=stag.t[o[a]].d,u.apc(p),stag.t[o[a]].lnkfr.length){p=dcr("li");let t="linked from:<ul>";for(let e=0;e<stag.t[o[a]].lnkfr.length;e++)t=(t=(t+='<li><a href="#e_tag_'+stag.t[o[a]].lnkfr[e][1]+'">#'+stag.t[stag.t[o[a]].lnkfr[e][1]].name+"</a>")+(stag.t[o[a]].lnkfr[e][0]?" && ":" & "))+'<a href="#e_tag_'+stag.t[o[a]].lnkfr[e][2]+'">#'+stag.t[stag.t[o[a]].lnkfr[e][2]].name+"</a></li>";t+="</ul>",p.innerHTML=t,u.apc(p)}f.apc(u),i.apc(f)}this.etag();var h=Object.keys(seff.f);(i=gei("eeff")).innerHTML="";for(let e=0;e<h.length;e++){h[e]=U(h[e]);var g=dcr("li");g.innerHTML="effect # "+h[e]+": "+seff.f[h[e]].na+' <a href="#system">back to top</a>',g.id="e_eff_"+h[e],i.apc(g)}}newRecipe(){let e=gei("newRecipe");this.noSwitch(),gei("creater").disabled=!0,gei("createa").disabled=!0;var t=dcr("button");t.innerHTML="close",t.onclick=()=>{this.yeSwitch(),gei("creater").disabled=!1,gei("createa").disabled=!1,e.innerHTML=""},e.apc(t),e.apc(dcr("br"));let a=dcr("input");e.apc(a);var t=dcr("button"),i=(t.innerHTML="ok",dcr("details"));i.innerHTML='refer to <a href="#help">help</a> for examples.</pre>',e.apc(i),e.apc(t),t.onclick=()=>{try{litem(a.value)}catch(e){alert("create recipe failed"+e)}this.ency()}}},ui=new sUi;
|
|
</script>
|
|
<h1 id="title">Fort@dmin</h1>
|
|
<div id="system"><i id="loadtext">leave blank for new game</i><input id="loadbox"><button id="loadbtn" onclick="ui.load()">load</button><button id="savebtn" onclick="ui.save()" style="display:none">save</button>
|
|
<p id="savecontent" style="display:none"><input id="savebox"></p>
|
|
<div id="help"><a href="//github.com/ch1p2/js2023kgamesentry">help</a>
|
|
</div>
|
|
</div>
|
|
<div id="game" style="display:none">
|
|
<div id="status">
|
|
<h2>Status</h2>
|
|
<div id="days">
|
|
<h3>week: <i id="dateweek">1</i> day: <i id="dateday">1</i></h3>
|
|
<h3>money: <i id="datemoney">1</i>$</h3>
|
|
</div>
|
|
<div id="items">
|
|
<h3>items</h3>
|
|
<details>
|
|
<summary>filter</summary><select id="SelFilBy1" size="5" oninput="ui.checkfilter()"><option value="-1" selected>none</option><option value="0">filter by item</option><option value="1">filter by category</option><option value="2">filter by tag</option></select><select id="SelFilBy2" size="5" style="display:none"></select><br /><button id="filok" onclick="ui.reloadBItem()">ok</button></details><select id="ItemBoxList" size="1" oninput="ui.iboninput()"></select>
|
|
<buttonid="ItemBoxListExp" onclick="ui.expandSel(document.getElementById('ItemBoxList'), document.getElementById('ItemBoxListExp'))">+</button>
|
|
<details id="ItemBoxDetail"></details><input id="buysell" oninput="ui.bsoninput()" type="number" min="1" max="99" step="1"><button id="buy" onclick="ui.buysell(0)">buy</button><button id="sell" onclick="ui.buysell(1)">sell</button>(<i id="buyday">0</i> days needed)</div>
|
|
<div id="tasks">
|
|
<h3>tasks</h3>
|
|
<ul>
|
|
<li id="task1">earn 999999$</li>
|
|
<li id="task2">get any item with quality greater than 999</li>
|
|
<li id="task3">get any item whose cost is 0$</li>
|
|
<li id="task4">get any item with damage greater than 999</li>
|
|
<li id="task5">get any item with infinity total damage</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div id="actions">
|
|
<h2>Actions</h2>
|
|
<div id="actionbuttons"><button id="switchToAtelier" onclick="ui.switchTO(1)">Atelier</button>
|
|
<buttonid="switchToExplore" onclick="ui.switchTO(2)">Excavation</button><button id="switchToFactory" onclick="ui.switchTO(0)">Factory</button></div>
|
|
<div id="fakebuttons" style="display:none"><button disabled>Atelier</button>
|
|
<buttondisabled>Excavation</button><button disabled>Factory</button></div>
|
|
<div id="factory" style="display:none">
|
|
<h3>Factory</h3><button id="facbtn" onclick="ui.cfac()">factory</button>
|
|
<div id="facdiv"></div>
|
|
</div>
|
|
<div id="atelier">
|
|
<h3>Atelier</h3><button id="creater" onclick="ui.newRecipe()">new recipe</button><button id="createa" onclick="ui.newAtelier()">new synthesize</button>
|
|
<div id="newAtelier"></div>
|
|
<div id="newRecipe"></div>
|
|
</div>
|
|
<div id="explore" style="display:none">
|
|
<h3>Excavation</h3><button onclick="ui.exca()">excavation (1 day)</button></div>
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div id="encyc" style="display:none">
|
|
<h2>Encyclopedia</h2><button onclick="ui.encytoggle()">toggle</button>
|
|
<details open>
|
|
<summary>ITEMS</summary>
|
|
<ul id="eitem"></ul>
|
|
</details>
|
|
<details open>
|
|
<summary>CATEGORIES</summary>
|
|
<ul id="ecat"></ul>
|
|
</details>
|
|
<details id="etag" open>
|
|
<summary>TAGS</summary>
|
|
<ul id="etag1"></ul>
|
|
<ul id="etag2"></ul>
|
|
</details>
|
|
<details open>
|
|
<summary>EFFECTS</summary>
|
|
<ul id="eeff"></ul>
|
|
</details>
|
|
</div> |