diff --git a/assets/gameLoop.e7fe227b.js b/assets/gameLoop.a207ac6d.js
similarity index 91%
rename from assets/gameLoop.e7fe227b.js
rename to assets/gameLoop.a207ac6d.js
index a99ab39..bf9601e 100644
--- a/assets/gameLoop.e7fe227b.js
+++ b/assets/gameLoop.a207ac6d.js
@@ -1 +1 @@
-import{_ as d,s as p,p as e,a as f,l as T,D as o,b as m,g as u}from"./index.c6c71963.js";import"./vue.92681fcb.js";import{b1 as c}from"./@vue.4ce677c2.js";/* empty css                    */import"./nanoevents.1080beb7.js";import"./lz-string.731cedc5.js";import"./is-plain-object.906d88e8.js";import"./vue-next-select.a2bfab1d.js";import"./vue-toastification.6f567382.js";import"./vuedraggable.7949458c.js";import"./sortablejs.29100d8a.js";import"./vue-textarea-autosize.35804eaf.js";import"./workbox-window.8d14e8b7.js";let n=null,l=null;function a(){const t=Date.now();let i=(t-e.time)/1e3;e.time=t;const r=i;if(f.lastTenTicks.push(r),f.lastTenTicks.length>10&&(f.lastTenTicks=f.lastTenTicks.slice(1)),!((l==null?void 0:l.value)&&!e.keepGoing)&&!f.hasNaN&&(i=Math.max(i,0),e.devSpeed!==0)){if(T.value=!1,e.offlineTime!=null){if(o.gt(e.offlineTime,m.offlineLimit*3600)&&(e.offlineTime=m.offlineLimit*3600),o.gt(e.offlineTime,0)&&e.devSpeed!==0){const s=Math.max(e.offlineTime/10,i);e.offlineTime=e.offlineTime-s,i+=s}else e.devSpeed===0&&(e.offlineTime+=i);(!e.offlineProd||o.lt(e.offlineTime,0))&&(e.offlineTime=null)}i=Math.min(i,m.maxTickLength),e.devSpeed!=null&&(i*=e.devSpeed),Number.isFinite(i)||(i=1e308),!o.eq(i,0)&&(e.timePlayed+=i,Number.isFinite(e.timePlayed)||(e.timePlayed=1e308),u.emit("update",i,r),p.unthrottled?(requestAnimationFrame(a),n!=null&&(clearInterval(n),n=null)):n==null&&(n=setInterval(a,50)))}}async function x(){l=(await d(()=>import("./index.c6c71963.js").then(function(t){return t.c}),["assets/index.c6c71963.js","assets/index.2a838b71.css","assets/@fontsource.c175eac8.css","assets/vue.92681fcb.js","assets/lz-string.731cedc5.js","assets/@vue.4ce677c2.js","assets/nanoevents.1080beb7.js","assets/is-plain-object.906d88e8.js","assets/vue-next-select.a2bfab1d.js","assets/vue-next-select.9e6f4164.css","assets/vue-toastification.6f567382.js","assets/vue-toastification.4b5f8ac8.css","assets/vuedraggable.7949458c.js","assets/sortablejs.29100d8a.js","assets/vue-textarea-autosize.35804eaf.js","assets/workbox-window.8d14e8b7.js"])).hasWon,c(l,t=>{t&&u.emit("gameWon")}),p.unthrottled?requestAnimationFrame(a):n=setInterval(a,50)}export{x as startGameLoop};
+import{_ as d,s as p,p as e,a as f,l as T,D as o,b as m,g as u}from"./index.b8abff7d.js";import"./vue.92681fcb.js";import{b1 as c}from"./@vue.4ce677c2.js";/* empty css                    */import"./nanoevents.1080beb7.js";import"./lz-string.731cedc5.js";import"./is-plain-object.906d88e8.js";import"./vue-next-select.a2bfab1d.js";import"./vue-toastification.6f567382.js";import"./vuedraggable.7949458c.js";import"./sortablejs.29100d8a.js";import"./vue-textarea-autosize.35804eaf.js";import"./workbox-window.8d14e8b7.js";let n=null,l=null;function a(){const t=Date.now();let i=(t-e.time)/1e3;e.time=t;const r=i;if(f.lastTenTicks.push(r),f.lastTenTicks.length>10&&(f.lastTenTicks=f.lastTenTicks.slice(1)),!((l==null?void 0:l.value)&&!e.keepGoing)&&!f.hasNaN&&(i=Math.max(i,0),e.devSpeed!==0)){if(T.value=!1,e.offlineTime!=null){if(o.gt(e.offlineTime,m.offlineLimit*3600)&&(e.offlineTime=m.offlineLimit*3600),o.gt(e.offlineTime,0)&&e.devSpeed!==0){const s=Math.max(e.offlineTime/10,i);e.offlineTime=e.offlineTime-s,i+=s}else e.devSpeed===0&&(e.offlineTime+=i);(!e.offlineProd||o.lt(e.offlineTime,0))&&(e.offlineTime=null)}i=Math.min(i,m.maxTickLength),e.devSpeed!=null&&(i*=e.devSpeed),Number.isFinite(i)||(i=1e308),!o.eq(i,0)&&(e.timePlayed+=i,Number.isFinite(e.timePlayed)||(e.timePlayed=1e308),u.emit("update",i,r),p.unthrottled?(requestAnimationFrame(a),n!=null&&(clearInterval(n),n=null)):n==null&&(n=setInterval(a,50)))}}async function x(){l=(await d(()=>import("./index.b8abff7d.js").then(function(t){return t.c}),["assets/index.b8abff7d.js","assets/index.2a838b71.css","assets/@fontsource.c175eac8.css","assets/vue.92681fcb.js","assets/lz-string.731cedc5.js","assets/@vue.4ce677c2.js","assets/nanoevents.1080beb7.js","assets/is-plain-object.906d88e8.js","assets/vue-next-select.a2bfab1d.js","assets/vue-next-select.9e6f4164.css","assets/vue-toastification.6f567382.js","assets/vue-toastification.4b5f8ac8.css","assets/vuedraggable.7949458c.js","assets/sortablejs.29100d8a.js","assets/vue-textarea-autosize.35804eaf.js","assets/workbox-window.8d14e8b7.js"])).hasWon,c(l,t=>{t&&u.emit("gameWon")}),p.unthrottled?requestAnimationFrame(a):n=setInterval(a,50)}export{x as startGameLoop};
diff --git a/assets/index.c6c71963.js b/assets/index.b8abff7d.js
similarity index 99%
rename from assets/index.c6c71963.js
rename to assets/index.b8abff7d.js
index 6314c24..a2f7f4a 100644
--- a/assets/index.c6c71963.js
+++ b/assets/index.b8abff7d.js
@@ -16,4 +16,4 @@ Created at:
                             margin: 10px 0;"/>${ye}`:T,n.value=!0},onOpenLayer(){if(Me.value=!1,window.matchMedia("(min-width: 1468px)").matches)if(L.tabs.includes(I!=null?I:"trees")){const Ae=L.tabs.lastIndexOf(I!=null?I:"trees");L.tabs.splice(Ae,1)}else L.tabs.push(I!=null?I:"trees"),W.minimized.value=!0;else L.tabs.splice(1,1/0,I!=null?I:"trees")},onUnlockLayer(){A.value=!0,setTimeout(()=>{var Ae,oe;l.value=-1,a.value=u((oe=(Ae=it[I!=null?I:"trees"])==null?void 0:Ae.name)!=null?oe:""),s.value=T,L.devSpeed=null,n.value=!0},1e3)}}}}})}const c=[r(()=>({day:1,shouldNotify:!1,layer:"trees",symbol:oi,story:"Oh no! Santa forgot about Christmas and it's only 25 days away! He's asked for your help due to your history getting large quantities of things in short amounts of time. Unfortunately you're really starting from scratch here - let's start with getting wood, which you'll need for everything from building workshops to wrapping paper to many of the toys themselves!",completedStory:"Santa looks at all the wood you've gathered and tells you you've done well! He says you should take the rest of the day off so you're refreshed for tomorrow's work. Good Job!"})),r(()=>({day:2,shouldNotify:!1,layer:"workshop",symbol:ri,story:"Santa looked over your tree farm and was impressed with how much you could accomplish in just one day. Today's goal is to get a workshop built up for the elves to work in - and apparently, they need quite a lot of space to work!",completedStory:"The workshop complete, Santa once again dismisses you for the day. With a strong foundation, this workshop should suffice for supporting future work toward this impossible mission. Good Job!"})),r(()=>({day:3,shouldNotify:!1,layer:"coal",symbol:ui,story:"Santa tells you that unfortunately there are quite a few naughty children out there this year, and he's going to need you to gather as much coal as you can for him to give out.",completedStory:"Santa looks at all the coal you've gathered and tells you you've done well! He says you should take the rest of the day off so you're refreshed for tomorrow's work. Good Job!"})),r(()=>({day:4,shouldNotify:!1,layer:"elves",symbol:ci,story:"Alright, it seems you finally have enough things set up to start bringing in the elves! Unfortunately, it seems they'll need to be retrained on how to help, since they've stopped practicing for 11 months!",completedStory:"The workshop now hums with the bustling elves working on everything. They can take it from here - you deserve a break after such a long day! Good Job!"})),r(()=>({day:5,shouldNotify:!1,layer:"paper",symbol:di,story:"With the elves trained, we're almost ready to start working on these presents! Just a couple more pre-reqs first, starting with turning all this wood into wood pulp and finally into paper, which will be required for wrapping paper later on but in the meantime can be used to help write guides which will help these elves continue their education!",completedStory:"You look upon your rivers of book pulp as you hand out stacks of papers to elves to read through. You've continued getting closer and closer to preparing for Christmas, and can go to bed satisfied with your progress. Good Job!"})),r(()=>({day:6,shouldNotify:!1,layer:"boxes",symbol:mi,story:"You watch all these elves carrying incredibly large loads just in their open elf-sized hands, and realize there's probably a better way. You need to put the toys in boxes anyways, so why don't we get started working on those so the workers can take advantage as well?",completedStory:"Wow, those boxes are really convenient! The workshop feels more and more proper with every day. You tick another requirement on your list and start looking towards tomorrow. Good Job!"})),r(()=>({day:7,shouldNotify:!1,layer:"metal",symbol:pi,story:"You woke up ready to make some toys, before realizing most toys these days are made out of more than just wood! You're sure you're close to really getting to work, but there's a few more materials you're going to need - like metal! Lots of things need metal!",completedStory:"The sounds of drills and metal clanging join the already loud din as yet another piece of the puzzle fits into place. You're making solid progress, Good Job!"})),r(()=>({day:8,shouldNotify:!1,layer:"cloth",symbol:fi,story:"Another resource you're going to need for gifts is cloth! Fortunately you think this should be pretty easy to prepare using a sheep farm - and as you've already proven with the tree farm, that's something you can handle!",completedStory:"You fall into a pile of wool, sighing contentedly as you look at all the progress you've made today. Good Job!"})),r(()=>({day:9,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:10,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:11,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:12,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:13,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:14,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:15,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:16,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:17,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:18,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:19,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:20,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:21,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:22,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:23,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""})),r(()=>({day:24,shouldNotify:!1,layer:null,symbol:"",story:"",completedStory:""}))];function m(){l.value=e.value-1,a.value="Day Complete!",s.value=c[e.value-1].completedStory,n.value=!0,e.value++,W.minimized.value=!1,L.devSpeed=0}return{name:"Calendar",days:c,day:e,timeUntilNewDay:t,loreScene:l,loreTitle:a,loreBody:s,showLoreModal:n,completeDay:m,minWidth:700,display:B(()=>o(P,null,[L.devSpeed===0?o("div",null,[p("Game Paused")]):null,L.devSpeed&&L.devSpeed!==1?o("div",null,[p("Dev Speed: "),ue(L.devSpeed),p("x")]):null,L.offlineTime?o("div",null,[p("Offline Time: "),Dn(L.offlineTime)]):null,o(ve,null,null),o("div",{class:"advent"},[c.reduce((d,y)=>(d[d.length-1].length===4&&d.push([]),d[d.length-1].push(y),d),[[]]).map(d=>Fe(...d))])]))}}),Fo=e=>[W,se,st,q,Ve,pe,dt,mn,Nt],al=k(()=>!1);function To(e,t){t.offlineProd=!1}var Do=Object.freeze(Object.defineProperty({__proto__:null,main:W,getInitialLayers:Fo,hasWon:al,fixOldSave:To},Symbol.toStringTag,{value:"Module"}));const $o={class:"scene"},Ro=["src"],Uo=["src"],Oo=["src"],qo=["src"],Vo=["src"],Lo=["src"],Go={key:6,class:"scene-bubble",style:{left:"50%",bottom:"38%"}},Ho=["src"],Qo=["src"],jo=K({__name:"Scene",props:{day:null},setup(e){return(t,n)=>(b(),M("div",$o,[e.day>=7?(b(),M("img",{key:0,src:u(fi),class:"scene-item",style:{left:"4%",bottom:"3%",width:"40px",height:"40px"}},null,8,Ro)):F("",!0),e.day>=0?(b(),M("img",{key:1,src:u(oi),class:"scene-item",style:{left:"10%",bottom:"10%"}},null,8,Uo)):F("",!0),e.day>=1?(b(),M("img",{key:2,src:u(ri),class:"scene-item",style:{left:"40%",bottom:"12%"}},null,8,Oo)):F("",!0),e.day>=2?(b(),M("img",{key:3,src:u(ui),class:"scene-item",style:{left:"65%",bottom:"12%",width:"40px",height:"40px"}},null,8,qo)):F("",!0),e.day>=6?(b(),M("img",{key:4,src:u(pi),class:"scene-item",style:{left:"72%",bottom:"8%",width:"40px",height:"40px"}},null,8,Vo)):F("",!0),e.day>=3?(b(),M("img",{key:5,src:u(ci),class:"scene-item",style:{left:"52%",bottom:"12%"}},null,8,Lo)):F("",!0),e.day>=4?(b(),M("div",Go,[e.day>=4?(b(),M("img",{key:0,src:u(di),class:"scene-item"},null,8,Ho)):F("",!0),e.day>=5?(b(),M("img",{key:1,src:u(mi),class:"scene-item"},null,8,Qo)):F("",!0)])):F("",!0)]))}});var zo=he(jo,[["__scopeId","data-v-217dad6a"]]);const Ko=K({components:{Context:Ql},props:{index:{type:Number,required:!0},tab:{type:Function,required:!0},display:{type:R(Object,String,Function),required:!0},minimized:{type:Object,required:!0},minWidth:{type:R(Number,String),required:!0},name:{type:R(String),required:!0},color:R(String),minimizable:R(Boolean),nodes:{type:Object,required:!0}},setup(e){const{display:t,index:n,minimized:l,minWidth:a,tab:s}=tt(e),r=Bn(t),c=k(()=>fe.allowGoBack&&n.value>0&&!l.value);function m(){L.tabs.splice(u(e.index),1)}Jt(()=>y(l.value,u(a.value))),_t([l,rs(a)],([g,w])=>y(g,w));function d(g){e.nodes.value=g}function y(g,w){const v=typeof w=="number"||Number.isNaN(parseInt(w))?w+"px":w,_=s.value();_!=null&&(g?(_.style.flexGrow="0",_.style.flexShrink="0",_.style.width="60px",_.style.minWidth=_.style.flexBasis="",_.style.margin="0"):(_.style.flexGrow="",_.style.flexShrink="",_.style.width="",_.style.minWidth=_.style.flexBasis=v,_.style.margin=""))}return{component:r,showGoBack:c,updateNodes:d,unref:u,goBack:m}}});function Wo(e,t,n,l,a,s){const r=qt("Context");return b(),M("div",{class:"layer-container",style:Ge({"--layer-color":e.unref(e.color)})},[e.showGoBack?(b(),M("button",{key:0,class:"goBack",onClick:t[0]||(t[0]=(...c)=>e.goBack&&e.goBack(...c))},"\u274C")):F("",!0),e.minimized.value?(b(),M("button",{key:1,class:"layer-tab minimized",onClick:t[1]||(t[1]=c=>e.minimized.value=!1)},[f("div",null,J(e.unref(e.name)),1)])):(b(),M("div",{key:2,class:Oe(["layer-tab",{showGoBack:e.showGoBack}])},[o(r,{onUpdateNodes:e.updateNodes},{default:H(()=>[(b(),Q(Ie(e.component)))]),_:1},8,["onUpdateNodes"])],2)),e.unref(e.minimizable)?(b(),M("button",{key:3,class:"minimize",onClick:t[2]||(t[2]=c=>e.minimized.value=!0)}," \u25BC ")):F("",!0)],4)}var Jo=he(Ko,[["render",Wo],["__scopeId","data-v-0158bec3"]]);const hi=e=>(Bt("data-v-4b4bda40"),e=e(),xt(),e),Xo=hi(()=>f("h2",null,"Changelog",-1)),Yo=hi(()=>f("details",{open:""},[f("summary",null,[p("v0.0 Initial Commit - "),f("time",null,"2021-09-04")]),p(" This is the first release :D "),f("ul",null,[f("li",{class:"feature"},"Did everything"),f("li",{class:"fix"},"Had some fun"),f("li",{class:"breaking"},"Removed everything"),f("li",{class:"balancing"},"Created some bugs to fix later")])],-1)),Zo=K({__name:"Changelog",setup(e,{expose:t}){const n=O(!1);return t({open(){n.value=!0}}),(l,a)=>(b(),Q(rt,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=s=>n.value=s)},{header:H(()=>[Xo]),body:H(()=>[Yo]),_:1},8,["modelValue"]))}});var er=he(Zo,[["__scopeId","data-v-4b4bda40"]]),tr=K({props:{element:Object,display:{type:R(Object,String,Function),required:!0},style:R(Object,String,Array),classes:R(Object),direction:R(String),xoffset:R(String),yoffset:R(String),pinned:Object},setup(e){const{element:t,display:n,pinned:l}=tt(e),a=O(!1),s=k(()=>(We(l)||a.value)&&r.value),r=Vt(n),c=ht(ce(B(()=>{const y=We(t);return y==null?"":wt(y)})));function m(y){const g=l;y.shiftKey&&g&&(g.value=!g.value,y.stopPropagation(),y.preventDefault())}const d=k(()=>We(l)&&yn[Pe.theme].showPin);return{Direction:re,isHovered:a,isShown:s,comp:r,elementComp:c,unref:u,togglePinned:m,showPin:d}}});const nr={key:0,class:"material-icons pinned"};function lr(e,t,n,l,a,s){return b(),M("div",{class:Oe(["tooltip-container",{shown:e.isShown}]),onMouseenter:t[0]||(t[0]=r=>e.isHovered=!0),onMouseleave:t[1]||(t[1]=r=>e.isHovered=!1),onClickCapture:t[2]||(t[2]=(...r)=>e.togglePinned&&e.togglePinned(...r))},[Ct(e.$slots,"default",{},void 0,!0),e.elementComp?(b(),Q(Ie(e.elementComp),{key:0})):F("",!0),o(Fn,{name:"fade"},{default:H(()=>{var r;return[e.isShown?(b(),M("div",{key:0,class:Oe(["tooltip",{top:e.unref(e.direction)===e.Direction.Up,left:e.unref(e.direction)===e.Direction.Left,right:e.unref(e.direction)===e.Direction.Right,bottom:e.unref(e.direction)===e.Direction.Down,...e.unref(e.classes)}]),style:Ge([{"--xoffset":e.unref(e.xoffset)||"0px","--yoffset":e.unref(e.yoffset)||"0px"},(r=e.unref(e.style))!=null?r:{}])},[e.showPin?(b(),M("span",nr,"push_pin")):F("",!0),e.comp?(b(),Q(Ie(e.comp),{key:1})):F("",!0)],6)):F("",!0)]}),_:1})],34)}var qe=he(tr,[["render",lr],["__scopeId","data-v-6102fa3a"]]);const ir={class:"info-modal-header"},ar=["src","alt"],sr={class:"info-modal-title"},or={key:0},rr=p(" - "),ur={key:0},cr={key:0},dr=f("div",null," Made in Profectus, by thepaperpilot with inspiration from Acameada and Jacorb ",-1),mr=f("br",null,null,-1),pr=f("br",null,null,-1),fr=["href"],hr=f("span",{class:"material-icons info-modal-discord"},"discord",-1),gr=f("div",null,[f("a",{href:"https://discord.gg/WzejVAx",class:"info-modal-discord-link",target:"_blank"},[f("span",{class:"material-icons info-modal-discord"},"discord"),p(" The Paper Pilot Community ")])],-1),vr=f("div",null,[f("a",{href:"https://discord.gg/F3xveHV",class:"info-modal-discord-link",target:"_blank"},[f("span",{class:"material-icons info-modal-discord"},"discord"),p(" The Modding Tree ")])],-1),yr=f("br",null,null,-1);var br=K({__name:"Info",props:{changelog:null},setup(e,{expose:t}){const n=e,{title:l,logo:a,author:s,discordName:r,discordLink:c,versionNumber:m,versionTitle:d}=fe,y=tt(n),g=O(!1),w=k(()=>Dn(L.timePlayed)),v=k(()=>ce(B(()=>o(P,null,[ei.map(de)]))));t({open(){g.value=!0}});function _(){var N;(N=u(y.changelog))==null||N.open()}return(N,I)=>(b(),Q(rt,{class:"info-modal",modelValue:g.value,"onUpdate:modelValue":I[0]||(I[0]=ne=>g.value=ne)},{header:H(()=>[f("div",ir,[u(a)?(b(),M("img",{key:0,class:"info-modal-logo",src:u(a),alt:u(l)},null,8,ar)):F("",!0),f("div",sr,[f("h2",null,"- "+J(u(l))+" -",1),f("h4",null,[p(" - v"+J(u(m)),1),u(d)?(b(),M("span",or,": "+J(u(d)),1)):F("",!0),rr])])])]),body:H(({shown:ne})=>[ne?(b(),M("div",ur,[u(s)?(b(),M("div",cr,"By "+J(u(s)),1)):F("",!0),dr,mr,f("div",{class:"link",onClick:_},"Changelog"),pr,f("div",null,[u(c)?(b(),M("a",{key:0,href:u(c),class:"info-modal-discord-link",target:"_blank"},[hr,p(" "+J(u(r)),1)],8,fr)):F("",!0)]),gr,vr,yr,f("div",null,"Time Played: "+J(u(w)),1),(b(),Q(Ie(u(v))))])):F("",!0)]),_:1},8,["modelValue"]))}});const gi=e=>(Bt("data-v-0d685451"),e=e(),xt(),e),wr=gi(()=>f("h2",null,"Options",-1)),_r=gi(()=>f("hr",null,null,-1));var kr=K({__name:"Options",setup(e,{expose:t}){const n=O(!1);t({open(){n.value=!0}});const l=Object.keys(yn).map(v=>({label:Gl(v),value:v})),a=k(()=>ce(B(()=>o(P,null,[Zl.map(de)])))),{showTPS:s,theme:r}=tt(Pe),{autosave:c,usingLog:m}=tt(L),d=k({get(){return L.devSpeed===0},set(v){L.devSpeed=v?0:null}}),y=B(()=>o("span",null,[p("Autosave"),o(qe,{display:"Save-specific"},{default:()=>[p("*")]})])),g=B(()=>o("span",null,[p("Pause game"),o(qe,{display:"Save-specific"},{default:()=>[p("*")]})])),w=B(()=>o("span",null,[p("Use log for progress bar"),o(qe,{display:"Save-specific"},{default:()=>[p("*")]})]));return(v,_)=>(b(),Q(rt,{modelValue:n.value,"onUpdate:modelValue":_[5]||(_[5]=N=>n.value=N)},{header:H(()=>[wr]),body:H(()=>[o(il,{title:"Theme",options:u(l),modelValue:u(r),"onUpdate:modelValue":_[0]||(_[0]=N=>Le(r)?r.value=N:null)},null,8,["options","modelValue"]),(b(),Q(Ie(u(a)))),o(At,{title:"Show TPS",modelValue:u(s),"onUpdate:modelValue":_[1]||(_[1]=N=>Le(s)?s.value=N:null)},null,8,["modelValue"]),_r,o(At,{title:u(y),modelValue:u(c),"onUpdate:modelValue":_[2]||(_[2]=N=>Le(c)?c.value=N:null)},null,8,["title","modelValue"]),u(fe).enablePausing?(b(),Q(At,{key:0,title:u(g),modelValue:u(d),"onUpdate:modelValue":_[3]||(_[3]=N=>Le(d)?d.value=N:null)},null,8,["title","modelValue"])):F("",!0),o(At,{title:u(w),modelValue:u(m),"onUpdate:modelValue":_[4]||(_[4]=N=>Le(m)?m.value=N:null)},null,8,["title","modelValue"])]),_:1},8,["modelValue"]))}});var Cr=he(kr,[["__scopeId","data-v-0d685451"]]);const Nr=["onSubmit"],Sr={class:"field"},Mr={key:0,class:"field-title"},Ar=["placeholder"],Ir=K({__name:"Text",props:{title:null,modelValue:null,textArea:{type:Boolean},placeholder:null,maxHeight:null,submitOnBlur:{type:Boolean}},emits:["update:modelValue","submit","cancel"],setup(e,{emit:t}){const n=e,l=Vt(kt(n,"title"),"span"),a=ht(null);xn(()=>{var m;(m=a.value)==null||m.focus()});const s=k({get(){return u(n.modelValue)||""},set(m){t("update:modelValue",m)}});function r(){t("submit")}function c(){n.submitOnBlur!==!1?t("submit"):t("cancel")}return(m,d)=>(b(),M("form",{onSubmit:pn(r,["prevent"])},[f("div",Sr,[u(l)?(b(),M("span",Mr,[(b(),Q(Ie(u(l))))])):F("",!0),e.textArea?(b(),Q(u(Ri),{key:1,modelValue:u(s),"onUpdate:modelValue":d[0]||(d[0]=y=>Le(s)?s.value=y:null),placeholder:e.placeholder,maxHeight:e.maxHeight,onBlur:c,ref_key:"field",ref:a},null,8,["modelValue","placeholder","maxHeight"])):Pn((b(),M("input",{key:2,type:"text","onUpdate:modelValue":d[1]||(d[1]=y=>Le(s)?s.value=y:null),placeholder:e.placeholder,class:Oe({fullWidth:!e.title}),onBlur:c,ref_key:"field",ref:a},null,42,Ar)),[[xi,u(s)]])])],40,Nr))}});var vi=he(Ir,[["__scopeId","data-v-67b44a54"]]);const Er={key:0},Br=["onClick","disabled"],xr={key:0},Pr=["onClick"],Fr=K({__name:"DangerButton",props:{disabled:{type:Boolean},skipConfirm:{type:Boolean}},emits:["click","confirmingChanged"],setup(e,{emit:t}){const l=tt(e),a=O(!1);_t(a,c=>{t("confirmingChanged",c)});function s(){if(u(l.skipConfirm)){t("click");return}a.value&&t("click"),a.value=!a.value}function r(){a.value=!1}return(c,m)=>(b(),M("span",{class:Oe(["container",{confirming:a.value}])},[a.value?(b(),M("span",Er,"Are you sure?")):F("",!0),f("button",{onClick:pn(s,["stop"]),class:"button danger",disabled:e.disabled},[a.value?(b(),M("span",xr,"Yes")):Ct(c.$slots,"default",{key:1},void 0,!0)],8,Br),a.value?(b(),M("button",{key:1,class:"button",onClick:pn(r,["stop"])},"No",8,Pr)):F("",!0)],2))}});var Tr=he(Fr,[["__scopeId","data-v-2f8ef34c"]]);const Dr=["onClick"],$r=K({__name:"FeedbackButton",props:{left:{type:Boolean}},emits:["click"],setup(e,{emit:t}){const n=O(!1),l=O(null);function a(){t("click"),l.value&&clearTimeout(l.value),n.value=!1,Jt(()=>{n.value=!0,l.value=setTimeout(()=>n.value=!1,500)})}return(s,r)=>(b(),M("button",{onClick:pn(a,["stop"]),class:Oe(["feedback",{activated:n.value,left:e.left}])},[Ct(s.$slots,"default",{},void 0,!0)],10,Dr))}});var Rr=he($r,[["__scopeId","data-v-01a1b95c"]]);const Pt=e=>(Bt("data-v-5285ac49"),e=e(),xt(),e),Ur=Pt(()=>f("div",{class:"handle material-icons"},"drag_handle",-1)),Or={key:0,class:"actions"},qr=Pt(()=>f("span",{class:"material-icons"},"content_paste",-1)),Vr=Pt(()=>f("span",{class:"material-icons"},"content_copy",-1)),Lr=Pt(()=>f("span",{class:"material-icons"},"edit",-1)),Gr=Pt(()=>f("span",{class:"material-icons",style:{margin:"-2px"}},"delete",-1)),Hr={key:1,class:"actions"},Qr=Pt(()=>f("span",{class:"material-icons"},"check",-1)),jr=Pt(()=>f("span",{class:"material-icons"},"close",-1)),zr={key:2,class:"details"},Kr={class:"save-version"},Wr=Pt(()=>f("br",null,null,-1)),Jr={key:0},Xr={key:1},Yr={key:3,class:"details"},Zr={key:4,class:"details error"},eu=Pt(()=>f("br",null,null,-1)),tu=K({__name:"Save",props:{save:null},emits:["export","open","duplicate","delete","editName"],setup(e,{emit:t}){const n=e,{save:l}=tt(n),a=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}),s=O(!1),r=O(!1),c=O("");_t(s,()=>c.value=l.value.name||"");const m=k(()=>l.value&&l.value.id===L.id),d=k(()=>m.value?L.time:l.value&&l.value.time||0),y=Bn(k(()=>{var w,v,_,N;return`Day ${(N=(_=(v=(w=l.value)==null?void 0:w.layers)==null?void 0:v.main)==null?void 0:_.day)!=null?N:1}`}));function g(){t("editName",c.value),s.value=!1}return(w,v)=>(b(),M("div",{class:Oe(["save",{active:u(m)}])},[Ur,s.value?(b(),M("div",Hr,[f("button",{onClick:g,class:"button"},[o(qe,{display:"Save",direction:u(re).Left,class:"info"},{default:H(()=>[Qr]),_:1},8,["direction"])]),f("button",{onClick:v[5]||(v[5]=_=>s.value=!s.value),class:"button"},[o(qe,{display:"Cancel",direction:u(re).Left,class:"info"},{default:H(()=>[jr]),_:1},8,["direction"])])])):(b(),M("div",Or,[u(l).error==null&&!r.value?(b(),Q(Rr,{key:0,onClick:v[0]||(v[0]=_=>t("export")),class:"button",left:""},{default:H(()=>[o(qe,{display:"Export",direction:u(re).Left,class:"info"},{default:H(()=>[qr]),_:1},8,["direction"])]),_:1})):F("",!0),u(l).error==null&&!r.value?(b(),M("button",{key:1,onClick:v[1]||(v[1]=_=>t("duplicate")),class:"button"},[o(qe,{display:"Duplicate",direction:u(re).Left,class:"info"},{default:H(()=>[Vr]),_:1},8,["direction"])])):F("",!0),u(l).error==null&&!r.value?(b(),M("button",{key:2,onClick:v[2]||(v[2]=_=>s.value=!s.value),class:"button"},[o(qe,{display:"Edit Name",direction:u(re).Left,class:"info"},{default:H(()=>[Lr]),_:1},8,["direction"])])):F("",!0),o(Tr,{disabled:u(m),onClick:v[3]||(v[3]=_=>t("delete")),onConfirmingChanged:v[4]||(v[4]=_=>r.value=_)},{default:H(()=>[o(qe,{display:"Delete",direction:u(re).Left,class:"info"},{default:H(()=>[Gr]),_:1},8,["direction"])]),_:1},8,["disabled"])])),u(l).error==null&&!s.value?(b(),M("div",zr,[f("button",{class:"button open",onClick:v[6]||(v[6]=_=>t("open"))},[f("h3",null,J(u(l).name),1)]),f("span",Kr,"v"+J(u(l).modVersion),1),Wr,u(d)?(b(),M("div",Jr,"Last played "+J(u(a).format(u(d))),1)):F("",!0),u(y)?(b(),M("div",Xr,[(b(),Q(Ie(u(y))))])):F("",!0)])):u(l).error==null&&s.value?(b(),M("div",Yr,[o(vi,{modelValue:c.value,"onUpdate:modelValue":v[7]||(v[7]=_=>c.value=_),class:"editname",onSubmit:g},null,8,["modelValue"])])):(b(),M("div",Zr,[p(" Error: Failed to load save with id "+J(u(l).id),1),eu,p(J(u(l).error),1)]))],2))}});var nu=he(tu,[["__scopeId","data-v-5285ac49"]]);const sl=e=>(Bt("data-v-3b9991aa"),e=e(),xt(),e),lu=sl(()=>f("h2",null,"Saves Manager",-1)),iu={class:"modal-footer"},au={class:"field"},su=sl(()=>f("span",{class:"field-title"},"Create Save",-1)),ou={class:"field-buttons"},ru={class:"footer"},uu=sl(()=>f("div",{style:{"flex-grow":"1"}},null,-1)),cu=K({__name:"SavesManager",setup(e,{expose:t}){const n=O(!1),l=O(null);t({open(){n.value=!0}});const a=O(!1),s=O(""),r=O(null);_t(s,A=>{A?Jt(()=>{try{if(A[0]!=="{")if(A[0]==="e")A=decodeURIComponent(escape(atob(A)));else if(A[0]==="\u1BE1")A=Rt.decompressFromUTF16(A);else{console.warn("Unable to determine preset encoding",A),a.value=!0;return}const S=JSON.parse(A);if(typeof S!="object"){a.value=!0;return}const T=Sn();S.id=T,bt(S),s.value="",a.value=!1,Pe.saves.push(T)}catch{a.value=!0}}):a.value=!1});let c={},m=O(Object.keys(c).reduce((A,S)=>(A.push({label:S.split("/").slice(-1)[0].slice(0,-4),value:c[S]}),A),[]));const d=Tn({});function y(A){if(d[A]==null){let S=localStorage.getItem(A);if(S==null)d[A]={error:"Save doesn't exist in localStorage",id:A};else if(S==="dW5kZWZpbmVk")d[A]={error:"Save is undefined",id:A};else try{if(S[0]!=="{")if(S[0]==="e")S=decodeURIComponent(escape(atob(S)));else if(S[0]==="\u1BE1")S=Rt.decompressFromUTF16(S);else return console.warn("Unable to determine preset encoding",S),a.value=!0,d[A]={error:"Unable to determine preset encoding",id:A},d[A];d[A]={...JSON.parse(S),id:A}}catch(T){d[A]={error:T,id:A},console.warn(`SavesManager: Failed to load info about save with id ${A}:
 ${T}
 ${S}`)}}return d[A]}_t(n,A=>{A&&Object.keys(d).forEach(S=>delete d[S])});const g=k(()=>Pe.saves.reduce((A,S)=>(A[S]=y(S),A),{}));function w(A){let S;switch(L.id===A?S=Jl(L[xe]):S=JSON.stringify(g.value[A]),fe.exportEncoding){default:console.warn(`Unknown save encoding: ${fe.exportEncoding}. Defaulting to lz`);case"lz":S=Rt.compressToUTF16(S);break;case"base64":S=btoa(unescape(encodeURIComponent(S)));break;case"plain":break}const T=document.createElement("textarea");T.value=S,document.body.appendChild(T),T.select(),T.setSelectionRange(0,99999),document.execCommand("copy"),document.body.removeChild(T)}function v(A){L.id===A&&bt();const S={...g.value[A],id:Sn()};bt(S),Pe.saves.push(S.id)}function _(A){Pe.saves=Pe.saves.filter(S=>S!==A),localStorage.removeItem(A),d[A]=void 0}function N(A){g.value[L.id].time=L.time,bt(),d[L.id]=void 0,Kt(g.value[A]),d[A]=void 0}function I(A){if(r.value=A,Jt(()=>{r.value=null}),A[0]!=="{")if(A[0]==="e")A=decodeURIComponent(escape(atob(A)));else if(A[0]==="\u1BE1")A=Rt.decompressFromUTF16(A);else{console.warn("Unable to determine preset encoding",A);return}const S=JSON.parse(A);S.id=Sn(),bt(S),Pe.saves.push(S.id),N(S.id)}function ne(A,S){const T=g.value[A];T&&(T.name=S,L.id===A?(L.name=S,bt()):(bt(T),d[A]=void 0))}return(A,S)=>(b(),Q(rt,{modelValue:n.value,"onUpdate:modelValue":S[4]||(S[4]=T=>n.value=T),ref_key:"modal",ref:l},{header:H(()=>[lu]),body:H(({shown:T})=>[T?(b(),Q(u($i),{key:0,list:u(Pe).saves,handle:".handle",itemKey:ye=>ye},{item:H(({element:ye})=>[o(nu,{save:u(g)[ye],onOpen:Me=>N(ye),onExport:Me=>w(ye),onEditName:Me=>ne(ye,Me),onDuplicate:Me=>v(ye),onDelete:Me=>_(ye)},null,8,["save","onOpen","onExport","onEditName","onDuplicate","onDelete"])]),_:1},8,["list","itemKey"])):F("",!0)]),footer:H(()=>[f("div",iu,[o(vi,{modelValue:s.value,"onUpdate:modelValue":S[0]||(S[0]=T=>s.value=T),title:"Import Save",placeholder:"Paste your save here!",class:Oe({importingFailed:a.value})},null,8,["modelValue","class"]),f("div",au,[su,f("div",ou,[f("button",{class:"button",onClick:S[1]||(S[1]=T=>N(u(tn)().id))},"New Game"),Object.keys(u(m)).length>0?(b(),Q(il,{key:0,options:u(m),modelValue:r.value,"onUpdate:modelValue":S[2]||(S[2]=T=>I(T)),closeOnSelect:"",placeholder:"Select preset",class:"presets"},null,8,["options","modelValue"])):F("",!0)])]),f("div",ru,[uu,f("button",{class:"button modal-default-button",onClick:S[3]||(S[3]=T=>n.value=!1)}," Close ")])])]),_:1},8,["modelValue"]))}});var yi=he(cu,[["__scopeId","data-v-3b9991aa"]]);const pt=e=>(Bt("data-v-8495e562"),e=e(),xt(),e),du=["src","alt"],mu={key:1,class:"title"},pu=pt(()=>f("div",{style:{"flex-grow":"1",cursor:"unset"}},null,-1)),fu={class:"discord"},hu={class:"discord-links"},gu={key:0},vu=["href"],yu=pt(()=>f("li",null,[f("a",{href:"https://discord.gg/WzejVAx",target:"_blank"},"The Paper Pilot Community")],-1)),bu=pt(()=>f("li",null,[f("a",{href:"https://discord.gg/F3xveHV",target:"_blank"},"The Modding Tree")],-1)),wu={href:"https://forums.moddingtree.com/",target:"_blank"},_u=pt(()=>f("span",{class:"material-icons"},"forum",-1)),ku=pt(()=>f("span",{class:"material-icons"},"info",-1)),Cu=pt(()=>f("span",{class:"material-icons"},"library_books",-1)),Nu=pt(()=>f("span",{class:"material-icons"},"settings",-1)),Su=pt(()=>f("span",{class:"material-icons"},"library_books",-1)),Mu=pt(()=>f("span",{class:"material-icons"},"settings",-1)),Au=pt(()=>f("span",{class:"material-icons"},"info",-1)),Iu={href:"https://forums.moddingtree.com/",target:"_blank"},Eu=pt(()=>f("span",{class:"material-icons"},"forum",-1)),Bu={class:"discord"},xu={class:"discord-links"},Pu={key:0},Fu=["href"],Tu=pt(()=>f("li",null,[f("a",{href:"https://discord.gg/WzejVAx",target:"_blank"},"The Paper Pilot Community")],-1)),Du=pt(()=>f("li",null,[f("a",{href:"https://discord.gg/F3xveHV",target:"_blank"},"The Modding Tree")],-1)),$u=K({__name:"Nav",setup(e){const t=O(null),n=O(null),l=O(null),a=O(null),{useHeader:s,banner:r,title:c,discordName:m,discordLink:d,versionNumber:y}=fe;function g(){window.open(d,"mywindow")}return(w,v)=>(b(),M(P,null,[u(s)?(b(),M("div",Xt({key:0,class:"nav"},w.$attrs),[u(r)?(b(),M("img",{key:0,src:u(r),class:"banner",alt:u(c)},null,8,du)):(b(),M("div",mu,J(u(c)),1)),f("div",{onClick:v[0]||(v[0]=_=>{var N;return(N=a.value)==null?void 0:N.open()}),class:"version-container"},[o(qe,{display:"Changelog",direction:u(re).Down,class:"version"},{default:H(()=>[f("span",null,"v"+J(u(y)),1)]),_:1},8,["direction"])]),pu,f("div",fu,[f("span",{onClick:g,class:"material-icons"},"discord"),f("ul",hu,[u(d)?(b(),M("li",gu,[f("a",{href:u(d),target:"_blank"},J(u(m)),9,vu)])):F("",!0),yu,bu])]),f("div",null,[f("a",wu,[o(qe,{display:"Forums",direction:u(re).Down,yoffset:"5px"},{default:H(()=>[_u]),_:1},8,["direction"])])]),f("div",{onClick:v[1]||(v[1]=_=>{var N;return(N=t.value)==null?void 0:N.open()})},[o(qe,{display:"Info",direction:u(re).Down,class:"info"},{default:H(()=>[ku]),_:1},8,["direction"])]),f("div",{onClick:v[2]||(v[2]=_=>{var N;return(N=n.value)==null?void 0:N.open()})},[o(qe,{display:"Saves",direction:u(re).Down,xoffset:"-20px"},{default:H(()=>[Cu]),_:1},8,["direction"])]),f("div",{onClick:v[3]||(v[3]=_=>{var N;return(N=l.value)==null?void 0:N.open()})},[o(qe,{display:"Options",direction:u(re).Down,xoffset:"-66px"},{default:H(()=>[Nu]),_:1},8,["direction"])])],16)):(b(),M("div",Xt({key:1,class:"overlay-nav"},w.$attrs),[f("div",{onClick:v[4]||(v[4]=_=>{var N;return(N=a.value)==null?void 0:N.open()}),class:"version-container"},[o(qe,{display:"Changelog",direction:u(re).Right,xoffset:"25%",class:"version"},{default:H(()=>[f("span",null,"v"+J(u(y)),1)]),_:1},8,["direction"])]),f("div",{onClick:v[5]||(v[5]=_=>{var N;return(N=n.value)==null?void 0:N.open()})},[o(qe,{display:"Saves",direction:u(re).Right},{default:H(()=>[Su]),_:1},8,["direction"])]),f("div",{onClick:v[6]||(v[6]=_=>{var N;return(N=l.value)==null?void 0:N.open()})},[o(qe,{display:"Options",direction:u(re).Right},{default:H(()=>[Mu]),_:1},8,["direction"])]),f("div",{onClick:v[7]||(v[7]=_=>{var N;return(N=t.value)==null?void 0:N.open()})},[o(qe,{display:"Info",direction:u(re).Right},{default:H(()=>[Au]),_:1},8,["direction"])]),f("div",null,[f("a",Iu,[o(qe,{display:"Forums",direction:u(re).Right,xoffset:"7px"},{default:H(()=>[Eu]),_:1},8,["direction"])])]),f("div",Bu,[f("span",{onClick:g,class:"material-icons"},"discord"),f("ul",xu,[u(d)?(b(),M("li",Pu,[f("a",{href:u(d),target:"_blank"},J(u(m)),9,Fu)])):F("",!0),Tu,Du])])],16)),o(br,{ref_key:"info",ref:t,changelog:a.value},null,8,["changelog"]),o(yi,{ref_key:"savesManager",ref:n},null,512),o(Cr,{ref_key:"options",ref:l},null,512),o(er,{ref_key:"changelog",ref:a},null,512)],64))}});var bi=he($u,[["__scopeId","data-v-8495e562"]]);const ol=e=>(Bt("data-v-248e2ebb"),e=e(),xt(),e),Ru={class:"inner-tab"},Uu={key:1},Ou=ol(()=>f("br",null,null,-1)),qu=p(" You can help continue the "),Vu=ol(()=>f("i",null,"advent",-1)),Lu=p("ure at: "),Gu=ol(()=>f("a",{href:"https://discord.gg/WzejVAx",class:"info-modal-discord-link",target:"_blank"},[f("span",{class:"material-icons info-modal-discord"},"discord"),p(" The Paper Pilot Community ")],-1)),Hu=K({__name:"Game",setup(e){const t=kt(L,"tabs"),n=k(()=>Object.keys(it)),l=fe.useHeader,a=Vt(W.loreBody);function s(r){const{display:c,minimized:m,minWidth:d,name:y,color:g,minimizable:w,nodes:v}=r;return{display:c,minimized:m,minWidth:d,name:y,color:g,minimizable:w,nodes:v}}return(r,c)=>(b(),M("div",{class:Oe(["tabs-container",{useHeader:u(l)}])},[(b(!0),M(P,null,Pl(u(t),(m,d)=>{var y,g;return b(),M("div",{key:d,class:Oe(["tab",u((y=u(it)[m])==null?void 0:y.classes)]),ref_for:!0,ref:`tab-${d}`,style:Ge(u((g=u(it)[m])==null?void 0:g.style))},[d===0&&!u(l)?(b(),Q(bi,{key:0})):F("",!0),f("div",Ru,[u(n).includes(m)?(b(),Q(Jo,Xt({key:0},s(u(it)[m]),{index:d,tab:()=>{var w;return(w=r.$refs[`tab-${d}`])==null?void 0:w[0]}}),null,16,["index","tab"])):(b(),Q(Ie(m),{key:1,index:d},null,8,["index"]))])],6)}),128)),o(rt,{modelValue:u(W).showLoreModal.value,"onUpdate:modelValue":c[0]||(c[0]=m=>u(W).showLoreModal.value=m)},{header:H(()=>[f("h2",null,J(u(W).loreTitle.value),1)]),body:H(()=>[u(a)?(b(),Q(Ie(u(a)),{key:0})):F("",!0),u(W).loreScene.value!==-1?(b(),M("div",Uu,[o(zo,{day:u(W).loreScene.value},null,8,["day"]),Ou,qu,Vu,Lu,Gu])):F("",!0)]),_:1},8,["modelValue"])],2))}});var Qu=he(Hu,[["__scopeId","data-v-248e2ebb"]]);const _n=e=>(Bt("data-v-4a50ce42"),e=e(),xt(),e),ju={class:"game-over-modal-header"},zu=["src","alt"],Ku={class:"game-over-modal-title"},Wu=_n(()=>f("h2",null,"Congratulations!",-1)),Ju={key:0},Xu=_n(()=>f("br",null,null,-1)),Yu=_n(()=>f("div",null," Please check the Discord to discuss the game or to check for new content updates! ",-1)),Zu=_n(()=>f("br",null,null,-1)),ec=["href"],tc=_n(()=>f("span",{class:"material-icons game-over-modal-discord"},"discord",-1)),nc=K({__name:"GameOverScreen",setup(e){const{title:t,logo:n,discordName:l,discordLink:a,versionNumber:s,versionTitle:r}=fe,c=k(()=>Dn(L.timePlayed)),m=k(()=>al.value&&!L.keepGoing),d=kt(L,"autosave");function y(){L.keepGoing=!0}function g(){Kt(tn())}return(w,v)=>(b(),Q(rt,{"model-value":u(m)},{header:H(()=>[f("div",ju,[u(n)?(b(),M("img",{key:0,class:"game-over-modal-logo",src:u(n),alt:u(t)},null,8,zu)):F("",!0),f("div",Ku,[Wu,f("h4",null,"You've beaten "+J(u(t))+" v"+J(u(s))+": "+J(u(r)),1)])])]),body:H(({shown:_})=>[_?(b(),M("div",Ju,[f("div",null,"It took you "+J(u(c))+" to beat the game.",1),Xu,Yu,Zu,f("div",null,[f("a",{href:u(a),class:"game-over-modal-discord-link"},[tc,p(" "+J(u(l)),1)],8,ec)]),o(At,{title:"Autosave",modelValue:u(d),"onUpdate:modelValue":v[0]||(v[0]=N=>Le(d)?d.value=N:null)},null,8,["modelValue"])])):F("",!0)]),footer:H(()=>[f("div",{class:"game-over-footer"},[f("button",{onClick:y,class:"button"},"Keep Going"),f("button",{onClick:g,class:"button danger"},"Play Again")])]),_:1},8,["model-value"]))}});var lc=he(nc,[["__scopeId","data-v-4a50ce42"]]);const On=e=>(Bt("data-v-3de07c06"),e=e(),xt(),e),ic=On(()=>f("div",{class:"nan-modal-header"},[f("h2",null,"NaN value detected!")],-1)),ac={key:0},sc=On(()=>f("br",null,null,-1)),oc=["href"],rc=On(()=>f("span",{class:"material-icons nan-modal-discord"},"discord",-1)),uc=On(()=>f("br",null,null,-1)),cc={class:"nan-footer"},dc=K({__name:"NaNScreen",setup(e){const{discordName:t,discordLink:n}=fe,l=kt(L,"autosave"),a=kt(Re,"hasNaN"),s=O(null),r=k(()=>{var v;return(v=Re.NaNPath)==null?void 0:v.join(".")}),c=k(()=>{var v;return(v=Re.NaNPath)==null?void 0:v.slice(-1)[0]}),m=k(()=>Re.NaNReceiver&&c.value?Re.NaNReceiver[c.value]:null),d=k({get(){return L.devSpeed===0},set(v){L.devSpeed=v?null:0}});function y(){Re.NaNReceiver&&c.value&&(Re.NaNReceiver[c.value]=new i(0),Re.hasNaN=!1)}function g(){Re.NaNReceiver&&c.value&&(Re.NaNReceiver[c.value]=new i(1),Re.hasNaN=!1)}function w(){Re.NaNReceiver&&c.value&&(Re.NaNReceiver[c.value]=new i(NaN),Re.hasNaN=!1)}return(v,_)=>(b(),M(P,null,[o(rt,Xt({modelValue:u(a),"onUpdate:modelValue":_[4]||(_[4]=N=>Le(a)?a.value=N:null)},v.$attrs),{header:H(()=>[ic]),body:H(()=>[f("div",null,[p(' Attempted to assign "'+J(u(r))+'" to NaN',1),u(m)?(b(),M("span",ac,J(" ")+"(previously "+J(u(ue)(u(m)))+")",1)):F("",!0),p(". Auto-saving has been "+J(u(l)?"enabled":"disabled")+". Check the console for more details, and consider sharing it with the developers on discord. ",1)]),sc,f("div",null,[f("a",{href:u(n),class:"nan-modal-discord-link"},[rc,p(" "+J(u(t)),1)],8,oc)]),uc,o(At,{title:"Autosave",modelValue:u(l),"onUpdate:modelValue":_[0]||(_[0]=N=>Le(l)?l.value=N:null)},null,8,["modelValue"]),u(fe).enablePausing?(b(),Q(At,{key:0,title:"Pause game",modelValue:u(d),"onUpdate:modelValue":_[1]||(_[1]=N=>Le(d)?d.value=N:null)},null,8,["modelValue"])):F("",!0)]),footer:H(()=>[f("div",cc,[f("button",{onClick:_[2]||(_[2]=N=>{var I;return(I=s.value)==null?void 0:I.open()}),class:"button"},"Open Saves Manager"),f("button",{onClick:y,class:"button"},"Set to 0"),f("button",{onClick:g,class:"button"},"Set to 1"),u(m)&&u(i).neq(u(m),0)&&u(i).neq(u(m),1)?(b(),M("button",{key:0,onClick:_[3]||(_[3]=N=>a.value=!1),class:"button"}," Set to previous ")):F("",!0),f("button",{onClick:w,class:"button danger"},"Ignore")])]),_:1},16,["modelValue"]),o(yi,{ref_key:"savesManager",ref:s},null,512)],64))}});var mc=he(dc,[["__scopeId","data-v-3de07c06"]]);const pc={key:0,class:"tpsDisplay"},fc={key:0,class:"low"},hc=K({__name:"TPS",setup(e){const t=k(()=>i.div(Re.lastTenTicks.length,Re.lastTenTicks.reduce((s,r)=>s+r,0))),n=O([]);mt(()=>{n.value.push(Math.round(t.value.toNumber())),n.value.length>10&&(n.value=n.value.slice(1))});const l=k(()=>n.value.reduce((s,r)=>i.max(s,r),0)),a=k(()=>i.sub(t.value,l.value).gt(1));return(s,r)=>u(t).isNan()?F("",!0):(b(),M("div",pc,[p(" TPS: "+J(u(le)(u(t)))+" ",1),o(Fn,{name:"fade"},{default:H(()=>[u(a)?(b(),M("span",fc,J(u(le)(u(l))),1)):F("",!0)]),_:1})]))}});var gc=he(hc,[["__scopeId","data-v-46a3ed5b"]]);var vc=K({__name:"App",setup(e){const t=fe.useHeader,n=k(()=>yn[Pe.theme].variables),l=kt(Pe,"showTPS"),a=k(()=>ce(B(()=>o(P,null,[ls.map(de)]))));return(s,r)=>(b(),M(P,null,[f("div",{id:"modal-root",style:Ge(u(n))},null,4),f("div",{class:Oe(["app",{useHeader:u(t)}]),style:Ge(u(n))},[u(t)?(b(),Q(bi,{key:0})):F("",!0),o(Qu),u(u(l))?(b(),Q(gc,{key:1})):F("",!0),o(lc),o(mc),(b(),Q(Ie(u(a))))],6)],64))}});var yc=he(vc,[["__scopeId","data-v-580927bb"]]);function bc(e={}){const{immediate:t=!1,onNeedRefresh:n,onOfflineReady:l,onRegistered:a,onRegisterError:s}=e;let r,c;const m=async(d=!0)=>{d&&(r==null||r.addEventListener("controlling",y=>{y.isUpdate&&window.location.reload()})),c&&c.waiting&&await Oi(c.waiting,{type:"SKIP_WAITING"})};if("serviceWorker"in navigator){r=new Ui("./sw.js",{scope:"./",type:"classic"}),r.addEventListener("activated",d=>{d.isUpdate||l==null||l()});{const d=()=>{n==null||n()};r.addEventListener("waiting",d),r.addEventListener("externalwaiting",d)}r.register({immediate:t}).then(d=>{c=d,a==null||a(d)}).catch(d=>{s==null||s(d)})}return m}function wc(e={}){const{immediate:t=!0,onNeedRefresh:n,onOfflineReady:l,onRegistered:a,onRegisterError:s}=e,r=O(!1),c=O(!1);return{updateServiceWorker:bc({immediate:t,onNeedRefresh(){r.value=!0,n==null||n()},onOfflineReady(){c.value=!0,l==null||l()},onRegistered:a,onRegisterError:s}),offlineReady:c,needRefresh:r}}document.title=fe.title;window.projInfo=fe;if(fe.id==="")throw"Project ID is empty! Please select a unique ID for this project in /src/data/projInfo.json";requestAnimationFrame(async()=>{console.log(`%cMade in Profectus%c
-Learn more at www.moddingtree.com`,"font-weight: bold; font-size: 24px; color: #A3BE8C; background: #2E3440; padding: 4px 8px; border-radius: 8px;","padding: 4px;"),await Ya();const{globalBus:e}=await An(()=>Promise.resolve().then(function(){return Da}),void 0),{startGameLoop:t}=await An(()=>import("./gameLoop.e7fe227b.js"),["assets/gameLoop.e7fe227b.js","assets/@fontsource.c175eac8.css","assets/vue.92681fcb.js","assets/lz-string.731cedc5.js","assets/@vue.4ce677c2.js","assets/nanoevents.1080beb7.js","assets/is-plain-object.906d88e8.js","assets/vue-next-select.a2bfab1d.js","assets/vue-next-select.9e6f4164.css","assets/vue-toastification.6f567382.js","assets/vue-toastification.4b5f8ac8.css","assets/vuedraggable.7949458c.js","assets/sortablejs.29100d8a.js","assets/vue-textarea-autosize.35804eaf.js","assets/workbox-window.8d14e8b7.js"]),n=window.vue=Pi(yc);e.emit("setupVue",n),n.mount("#app"),Jt(()=>{const l=Tl(),{updateServiceWorker:a}=wc({onNeedRefresh(){l.info("New content available, click or reload to update.",{timeout:!1,closeOnClick:!1,draggable:!1,icon:{iconClass:"material-icons",iconChildren:"refresh",iconTag:"i"},rtl:!1,onClick(){a()}})},onOfflineReady(){l.info("App ready to work offline")},onRegisterError:console.warn,onRegistered(s){s&&setInterval(s.update,60*60*1e3)}})}),t()});export{i as D,An as _,Re as a,fe as b,Do as c,Te as g,Zn as l,L as p,Pe as s};
+Learn more at www.moddingtree.com`,"font-weight: bold; font-size: 24px; color: #A3BE8C; background: #2E3440; padding: 4px 8px; border-radius: 8px;","padding: 4px;"),await Ya();const{globalBus:e}=await An(()=>Promise.resolve().then(function(){return Da}),void 0),{startGameLoop:t}=await An(()=>import("./gameLoop.a207ac6d.js"),["assets/gameLoop.a207ac6d.js","assets/@fontsource.c175eac8.css","assets/vue.92681fcb.js","assets/lz-string.731cedc5.js","assets/@vue.4ce677c2.js","assets/nanoevents.1080beb7.js","assets/is-plain-object.906d88e8.js","assets/vue-next-select.a2bfab1d.js","assets/vue-next-select.9e6f4164.css","assets/vue-toastification.6f567382.js","assets/vue-toastification.4b5f8ac8.css","assets/vuedraggable.7949458c.js","assets/sortablejs.29100d8a.js","assets/vue-textarea-autosize.35804eaf.js","assets/workbox-window.8d14e8b7.js"]),n=window.vue=Pi(yc);e.emit("setupVue",n),n.mount("#app"),Jt(()=>{const l=Tl(),{updateServiceWorker:a}=wc({onNeedRefresh(){l.info("New content available, click or reload to update.",{timeout:!1,closeOnClick:!1,draggable:!1,icon:{iconClass:"material-icons",iconChildren:"refresh",iconTag:"i"},rtl:!1,onClick(){a()}})},onOfflineReady(){l.info("App ready to work offline")},onRegisterError:console.warn,onRegistered(s){s&&setInterval(s.update,60*1e3)}})}),t()});export{i as D,An as _,Re as a,fe as b,Do as c,Te as g,Zn as l,L as p,Pe as s};
diff --git a/index.html b/index.html
index f6eb644..2f63814 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
 		<title>Advent Incremental</title>
 		<meta name="description" content="An incremental game you play a day at a time, leading up to Christmas!"/>
 		<script defer="true" data-domain="thepaperpilot.org" src="https://plausible.io/js/plausible.js"></script>
-		<script type="module" crossorigin src="./assets/index.c6c71963.js"></script>
+		<script type="module" crossorigin src="./assets/index.b8abff7d.js"></script>
 		<link rel="modulepreload" href="./assets/lz-string.731cedc5.js">
 		<link rel="modulepreload" href="./assets/@vue.4ce677c2.js">
 		<link rel="modulepreload" href="./assets/vue.92681fcb.js">
diff --git a/sw.js b/sw.js
index a05a17d..d3cadbd 100644
--- a/sw.js
+++ b/sw.js
@@ -1 +1 @@
-if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const o=e=>i(e,r),u={module:{uri:r},exports:t,require:o};s[r]=Promise.all(n.map((e=>u[e]||o(e)))).then((e=>(l(...e),t)))}}define(["./workbox-958fa2bd"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/@fontsource.c175eac8.css",revision:null},{url:"assets/@vue.4ce677c2.js",revision:null},{url:"assets/gameLoop.e7fe227b.js",revision:null},{url:"assets/index.2a838b71.css",revision:null},{url:"assets/index.c6c71963.js",revision:null},{url:"assets/is-plain-object.906d88e8.js",revision:null},{url:"assets/lz-string.731cedc5.js",revision:null},{url:"assets/nanoevents.1080beb7.js",revision:null},{url:"assets/sortablejs.29100d8a.js",revision:null},{url:"assets/vue-next-select.9e6f4164.css",revision:null},{url:"assets/vue-next-select.a2bfab1d.js",revision:null},{url:"assets/vue-textarea-autosize.35804eaf.js",revision:null},{url:"assets/vue-toastification.4b5f8ac8.css",revision:null},{url:"assets/vue-toastification.6f567382.js",revision:null},{url:"assets/vue.92681fcb.js",revision:null},{url:"assets/vuedraggable.7949458c.js",revision:null},{url:"assets/workbox-window.8d14e8b7.js",revision:null},{url:"index.html",revision:"6b73b2df83ffb9a3516c2caa134269ad"},{url:"favicon.ico",revision:"eead31eb5b19fa3bdc34af83d898c0b7"},{url:"robots.txt",revision:"5e0bd1c281a62a380d7a948085bfe2d1"},{url:"apple-touch-icon.png",revision:"26e53bb981d06c8069ffd9d2a14fce0e"},{url:"pwa-192x192.png",revision:"a16785d9e890858c5b508e0ef6954aaf"},{url:"pwa-512x512.png",revision:"b84004b93fd62ef6599ff179372861a1"},{url:"manifest.webmanifest",revision:"5f32ad2a77eb001e1b6a588835dc1efc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
+if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const a=e=>i(e,r),o={module:{uri:r},exports:t,require:a};s[r]=Promise.all(n.map((e=>o[e]||a(e)))).then((e=>(l(...e),t)))}}define(["./workbox-958fa2bd"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"assets/@fontsource.c175eac8.css",revision:null},{url:"assets/@vue.4ce677c2.js",revision:null},{url:"assets/gameLoop.a207ac6d.js",revision:null},{url:"assets/index.2a838b71.css",revision:null},{url:"assets/index.b8abff7d.js",revision:null},{url:"assets/is-plain-object.906d88e8.js",revision:null},{url:"assets/lz-string.731cedc5.js",revision:null},{url:"assets/nanoevents.1080beb7.js",revision:null},{url:"assets/sortablejs.29100d8a.js",revision:null},{url:"assets/vue-next-select.9e6f4164.css",revision:null},{url:"assets/vue-next-select.a2bfab1d.js",revision:null},{url:"assets/vue-textarea-autosize.35804eaf.js",revision:null},{url:"assets/vue-toastification.4b5f8ac8.css",revision:null},{url:"assets/vue-toastification.6f567382.js",revision:null},{url:"assets/vue.92681fcb.js",revision:null},{url:"assets/vuedraggable.7949458c.js",revision:null},{url:"assets/workbox-window.8d14e8b7.js",revision:null},{url:"index.html",revision:"6ca2f22fca02adae6a4f26003cb61d9e"},{url:"favicon.ico",revision:"eead31eb5b19fa3bdc34af83d898c0b7"},{url:"robots.txt",revision:"5e0bd1c281a62a380d7a948085bfe2d1"},{url:"apple-touch-icon.png",revision:"26e53bb981d06c8069ffd9d2a14fce0e"},{url:"pwa-192x192.png",revision:"a16785d9e890858c5b508e0ef6954aaf"},{url:"pwa-512x512.png",revision:"b84004b93fd62ef6599ff179372861a1"},{url:"manifest.webmanifest",revision:"5f32ad2a77eb001e1b6a588835dc1efc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));