\n<<nobr>>\n<<if $increments.research gte 8>>\n<<if $flags.indexOf('glasses') lt 0 && $barbarians.main gte $costs.glasses*0.9>><<set $flags.push('glasses')>><<endif>>\n <<if $research.indexOf('glasses') gte 0>>Your barbarians are wearing reading glasses and, in a couple of cases, aviator shades.\n <<elseif $counts.glasses gt 1>>Your barbarians are experimenting with eyeballs. (<<print $counts.glasses>> seconds remaining)<<set $counts.glasses -= 1>>\n <<elseif $counts.glasses eq 1>>Your barbarians are experimenting with eyeballs. (<<print $counts.glasses>> seconds remaining)<<set $counts.glasses -= 1>><<set $increments.library += 1>><<set $research.push('glasses')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.glasses && $counts.glasses lte 0>><<replace>>Research reading glasses (cost: <<print $costs.glasses>> barbarians)<<becomes>>Your barbarians are experimenting with eyeballs.<<set $counts.glasses = $times.glasses>><<set $barbarians.main -= $costs.glasses>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('glasses') gte 0>>==Research reading glasses (cost: <<print $costs.glasses>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
\n<<nobr>>\n<<if $increments.research gte 3 && $buildings.salon gte 1>>\n<<if $flags.indexOf('worthit') lt 0 && $barbarians.main gte $costs.worthit*0.9>><<set $flags.push('worthit')>><<endif>>\n <<if $research.indexOf('worthit') gte 0>>Your barbarians have uncovered the secret of worthiness, and distilled it into a range of haircare products which makes each and every one of them, finally, worth it.\n <<elseif $counts.worthit gt 1>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode. (<<print $counts.worthit>> seconds remaining)<<set $counts.worthit -= 1>>\n <<elseif $counts.worthit eq 1>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode. (<<print $counts.worthit>> seconds remaining)<<set $counts.worthit -= 1>><<set $increments.salon = $increments.salon * 5>><<set $research.push('worthit')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.worthit && $counts.worthit lte 0>><<replace>>Research worth (cost: <<print $costs.worthit>> barbarians)<<becomes>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode.<<set $counts.worthit = $times.worthit>><<set $barbarians.main -= $costs.worthit>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('worthit')>>==Research worth (cost: <<print $costs.worthit>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
LADDER MAKING OUT OF TREE WOOD\n
[[BACK!|BEGIN]]\n\nv0.17 17/12/2013 - Version of the Nudged Bludgeon\n- added full save wipe for old versions, should prevent NaN incidents\n- now using Twine 1.4!\n- took out all backslash escapes because Twine 1.4\n- research now using elseif\n- various other research bugfixes\n- fixed invisible health and safety system\n- adjusted beer increments\n\nv0.16 16/12/2013 - Version of the Christmas Serpent\n- split changelog into current version & previous version as it was getting far too long\n- fixed drunks not counting up\n- fixed mead halls not incrementing barbarians-per-second\n- fixed projects in progress disappearing if current barbarians fell below costs\n- fixed invisble jobcentres\n- fixed occasional disappearing trees\n- added tweak that shows you some of your choices in advance, but struckthrough so you can't use them\n- added cancel button to dialog that asks you whether you want to delete your save\n- broke save system\n- fixed save system\n- added one new building and backend for related research & missions\n\nv0.15 15/12/2013 - Version of the Irritated Badger\n- made times, costs and countdowns into object variables for easier/better storage etc (if I did it right, that means no visible changes)\n- bugfixing on a bug that, it turns out, was caused by having an old version of the game open in a different browser window\n- wrote a macro to wipe saved data from local browser storage (my first Twine macro, thanks to <html><a href="http://eturnerx.blogspot.com.au/2012/12/howto-twine-vars-and-macros.html">eturnerx's tutorial</a></html>)\n- corrected the date on last week's changelog -_-\n- game now autosaves more effectively, including countdowns, making it harder to refresh for immediate project completion\n- spent TWO HOURS tracking down a global variable bug caused by MISSING OUT ONE COMMA\n- much headdesk\n- added health and safety system\n\nv0.14 08/12/2013 - Version of the Knitted Sword\n- added changelog\n- made it possible to hide About & Stats sections\n- added alpha banner so people who stumble across this don't think it's finished and get irritated\n- css tweaks\n- fixed bug preventing Training countdown\n- found <html><a href="https://groups.google.com/forum/#!topic/tweecode/2iq7IuZ9_VI">a way to store array variables in the browser using Twine</a></html>\n- rebuilt research system using array variables, for everyone's sanity\n- realised I'm gonna have to rebuild most of the systems using object variables\n- moderate despair\n- fixed bug where research would disappear on completion\n- one (1) new building type\n- rebuilt mission system using array variables\n\n[[BACK!|BEGIN]]
\n<<nobr>>\n<<if $increments.research gte 2>><<if $flags.indexOf('bassdrum') lt 0 && $barbarians.main gte $costs.bassdrum*0.9>><<set $flags.push('bassdrum')>><<endif>>\n <<if $research.indexOf('bassdrum') gte 0>>Your war drums are now extra-large bass drums with top-of-the-line skins and a double-pedal, enabling you to call more barbarians to your clearing.\n <<elseif $counts.bassdrum gt 1>>Your barbarians are hitting things at random in order to work out which ones make the best noises. (<<print $counts.bassdrum>> seconds remaining)<<set $counts.bassdrum -= 1>>\n <<elseif $counts.bassdrum eq 1>>Your barbarians are hitting things at random in order to work out which ones make the best noises. (<<print $counts.bassdrum>> seconds remaining)<<set $counts.bassdrum -= 1>><<set $increments.drums += 5>><<set $wardrumstext = 'pound the war bass drums'>><<set $research.push('bassdrum')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.bassdrum && $counts.bassdrums lte 0>><<replace>>Research bass drums (cost: <<print $costs.bassdrum>> barbarians)<<becomes>>Your barbarians are hitting things at random in order to work out which ones make the best noises.<<set $counts.bassdrum = $times.bassdrum>><<set $barbarians.main -= $costs.bassdrum>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('bassdrum') gte 0>>==Research bass drums (cost: <<print $costs.bassdrum>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
<<nobr>>\n<<if $increments.research gte 1>>\n <<if $flags.indexOf('goldteeth') lt 0 && $barbarians.main gte $costs.goldteeth*0.9>><<set $flags.push('goldteeth')>><<endif>>\n <<if $research.indexOf('goldteeth') gte 0>>Your tree-felling barbarians now have gold teeth, enabling them to gnaw more efficiently through their trunks.\n <<elseif $counts.goldteeth gt 1>>Your barbarians are biting everything they can find, including rocks, trees and each other, in an attempt to strengthen their teeth. (<<print $counts.goldteeth>> seconds remaining)<<set $counts.goldteeth -= 1>>\n <<elseif $counts.goldteeth eq 1>>Your barbarians are biting everything they can find, including rocks, trees and each other, in an attempt to strengthen their teeth. (<<print $counts.goldteeth>> seconds remaining)<<set $counts.goldteeth -= 1>><<set $increments.digger += 1>><<set $research.push('goldteeth')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.goldteeth && $counts.goldteeth lte 0>><<replace>>Research gold teeth (cost: <<print $costs.goldteeth>> barbarians)<<becomes>>Your barbarians are biting everything they can find, including rocks, trees and each other, in an attempt to strengthen their teeth.<<set $counts.goldteeth = $times.goldteeth>><<set $barbarians.main -= $costs.goldteeth>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('goldteeth') gte 0>>==Research gold teeth (cost: <<print $costs.goldteeth>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:0};\nvar nullobj={handler:function(){}};function showVer(n,notrans){n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");\nn.style.display="inline";n.classList.remove("revision-span-out");\nif(!notrans){n.classList.add("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");\nn=null},1)}}function hideVer(n,notrans){n.setAttribute("data-enabled","false");\nn.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}if(!notrans){n.classList.add("revision-span-out");n.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");\nn.style.display="none";n.innerHTML=""}n=null},1000)}else{n.style.display="none";\nn.innerHTML="";n=null}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;\nfunction tagfound(i,e){for(var j=0;j<e.length;j++){if(a.indexOf("<<"+e[j],i)==i){return e[j]\n}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++\n}else{if((tg=tagfound(i,desttags))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg]}else{if(tg=tagfound(i,endtags)){l--;if(l<0){return null\n}}}}c+=a.charAt(i)}return null}var begintags=[];var endtags=[];\nfunction revisionSpanHandler(g,e,f,b){var k=b.source.indexOf(">>",b.matchStart)+2,vsns=[],vtype=e,flen=f.length,becomes,c,cn,m,h,vsn;\nfunction mkspan(vtype){h=insertElement(m,"span",null,"revision-span "+vtype);\nh.setAttribute("data-enabled",false);h.style.display="none";h.tweecode="";\nreturn h}if(this.shorthand&&flen){while(f.length>0){vsns.push([f.shift(),(this.flavour=="insert"?"gains":"becomes")])\n}}else{if(this.flavour=="insert"||(this.flavour=="continue"&&this.trigger=="time")){vsns.push(["","becomes"])\n}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype])}else{becomes=["becomes","gains"];\nc=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);\nif(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);c=tagcontents(b,begintags,becomes,endtags,b.nextMatch)\n}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch)}if(!c){throwError(g,"can't find matching end"+e);\nreturn}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;\nb.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""])\n}}if(this.flavour=="remove"){vsns.push(["","becomes"])}cn=0;m=insertElement(g,"span",null,e);\nm.setAttribute("data-flavour",this.flavour);h=mkspan("initial");\nvsn=vsns.shift();h.tweecode=vsn[0];showVer(h,true);while(vsns.length>0){if(vsn){vtype=vsn[1]\n}vsn=vsns.shift();h=mkspan(vtype);h.tweecode=vsn[0]}if(typeof this.setup=="function"){this.setup(m,g,f)\n}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove")\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_")\n}function keySetup(m,g,f){var fl=this.flavour,key=f[0];m.setEventListener("keydown",function l(e){var done=!revise("revise",m);\nif(done){m.removeEventListener("keydown",l)}})}function timeSetup(m,g,f){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0\n}}}throwError(g,s+" isn't a CSS time unit");return 0}var fl=this.flavour;\nvar tm=cssTimeUnit(f[0]);setTimeout(function timefn(){var done=!revise("revise",m);\nif(!done){setTimeout(timefn,tm)}},tm)}function hoverSetup(m){m.onmouseover=function(){revise("revise",this)\n};m.onmouseout=function(){revise("revert",this)};m=null}function mouseSetup(m){var fl=this.flavour,evt=(window.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null\n}};m=null}function linkSetup(m,g,f){var fl=this.flavour,l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);\nl.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m)}if(done){this.parentNode.insertBefore(m,this);\nthis.parentNode.removeChild(this)}};l=null}function visitedSetup(m,g,f){var i,done,shv=state.history[0].variables,os="once seen",d=(m.firstChild&&(this.flavour=="insert"?m.firstChild.nextSibling:m.firstChild).tweecode);\nshv[os]=shv[os]||{};if(d&&!shv[os].hasOwnProperty(d)){shv[os][d]=1\n}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true)\n}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1}}}[{name:"insert",flavour:"insert",trigger:"link",setup:linkSetup},{name:"timedinsert",flavour:"insert",trigger:"time",setup:timeSetup},{name:"insertion",flavour:"insert",trigger:"revisemacro",setup:revisionSetup},{name:"later",flavour:"insert",trigger:"visited",setup:visitedSetup},{name:"keyinsert",flavour:"insert",trigger:"key",setup:keySetup},{name:"replace",flavour:"replace",trigger:"link",setup:linkSetup},{name:"timedreplace",flavour:"replace",trigger:"time",setup:timeSetup},{name:"mousereplace",flavour:"replace",trigger:"mouse",setup:mouseSetup},{name:"hoverreplace",flavour:"replace",trigger:"hover",setup:hoverSetup},{name:"revision",flavour:"replace",trigger:"revisemacro",setup:revisionSetup},{name:"keyreplace",flavour:"replace",trigger:"key",setup:keySetup},{name:"timedremove",flavour:"remove",trigger:"time",setup:timeSetup},{name:"mouseremove",flavour:"remove",trigger:"mouse",setup:mouseSetup},{name:"hoverremove",flavour:"remove",trigger:"hover",setup:hoverSetup},{name:"removal",flavour:"remove",trigger:"revisemacro",setup:revisionSetup},{name:"once",flavour:"remove",trigger:"visited",setup:visitedSetup},{name:"keyremove",flavour:"remove",trigger:"key",setup:keySetup},{name:"continue",flavour:"continue",trigger:"link",setup:linkSetup},{name:"timedcontinue",flavour:"continue",trigger:"time",setup:timeSetup},{name:"mousecontinue",flavour:"continue",trigger:"mouse",setup:mouseSetup},{name:"keycontinue",flavour:"continue",trigger:"key",setup:keySetup},{name:"cycle",flavour:"cycle",trigger:"revisemacro",setup:revisionSetup},{name:"mousecycle",flavour:"cycle",trigger:"mouse",setup:mouseSetup},{name:"timedcycle",flavour:"cycle",trigger:"time",setup:timeSetup},{name:"keycycle",flavour:"replace",trigger:"key",setup:keySetup}].forEach(function(e){e.handler=revisionSpanHandler;\ne.shorthand=(["link","mouse","hover"].indexOf(e.trigger)>-1);\nmacros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);\nendtags.push("end"+e.name)});function insideDepartingSpan(elem){var r=elem.parentNode;\nwhile(!r.classList.contains("passage")){if(r.classList.contains("revision-span-out")){return true\n}r=r.parentNode}}function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage ."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){if(!insideDepartingSpan(rall[i])){ret=revise(rt,rall[i])||ret\n}}return ret}function revise(rt,r,notrans){var ind2,curr,next,ind=-1,rev=(rt=="revert"),rnd=(rt.indexOf("random")>-1),fl=r.getAttribute("data-flavour"),rc=r.childNodes,cyc=(fl=="cycle"),rcl=rc.length-1;\nfunction doToGainerSpans(n,fn){for(var k=n-1;k>=0;k--){if(rc[k+1].classList.contains("gains")){fn(rc[k],notrans)\n}else{break}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k\n}}if(rev){ind-=1}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));ind2=ind;\nif(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));\nvar docurr=(rev?showVer:hideVer);var donext=(rev?hideVer:showVer);\nvar currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}};var nextfn=function(){donext(next,notrans);\nif(rnd){doToGainerSpans(ind2+1,donext,notrans)}};if(!rev){currfn();\nnextfn()}else{nextfn();currfn()}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)))\n}macros.revert=macros.revise=macros.randomise=macros.randomize={handler:function(a,b,c){var l,rev,rname;\nfunction disableLink(l){l.style.display="none"}function enableLink(l){l.style.display="inline"\n}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);\nreturn}var rall=document.querySelectorAll(".passage ."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");\nif(insideDepartingSpan(r)){continue}if(fl=="cycle"){cannext=canprev=true\n}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true\n}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true\n}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l)\n}function toggleText(w){w.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none")}var rl="reviseLink";\nif(c.length<2){throwError(a,b+" macro needs 2 parameters");return\n}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);\nl.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;var v="";\nvar end=false;var out=false;if(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);\nc.shift()}switch(c[c.length-1]){case"end":end=true;c.pop();break;\ncase"out":out=true;c.pop();break}var h=state.history[0].variables;\nfor(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");\nif(on){h[v]=c[i];l.setAttribute("data-cycle",i)}else{d.style.display="none"\n}insertText(d,c[i]);l.appendChild(d)}l.onclick=function(){reviseAll(b,rname);\nvar t=this.childNodes,u=this.getAttribute("data-cycle")-0,m=t.length,n,lall,i;\nif((end||out)&&u==m-(end?2:1)){if(end){n=this.removeChild(t[u+1]);\nn.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}}else{toggleText(t[u]);\nu=(u+1)%m;if(v){h[v]=c[u]}toggleText(t[u]);this.setAttribute("data-cycle",u)\n}lall=document.getElementsByClassName(rl+"_"+rname);for(i=0;i<lall.length;\ni++){updateLink(lall[i])}};disableLink(l);setTimeout(function(){updateLink(l);\nl=null},1)}};macros.mouserevise=macros.hoverrevise={handler:function(a,b,c,d){var endtags=["end"+b],evt=(window.onmouseenter===null?"onmouseenter":"onmouseover"),t=tagcontents(d,[b],endtags,endtags,d.source.indexOf(">>",d.matchStart)+2);\nif(t){var rname=c[0].replace(" ","_"),h=insertElement(a,"span",null,"hoverrevise hoverrevise_"+rname),f=function(){var done=!reviseAll("revise",rname);\nif(b!="hoverrevise"&&done){this[evt]=null}};new Wikifier(h,t[0]);\nif(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname)\n}}else{h[evt]=f}h=null}}};macros.instantrevise={handler:function(a,b,c,d){reviseAll("revise",c[0].replace(" ","_"))\n}};macros.endmouserevise=nullobj;macros.endhoverrevise=nullobj\n}());
<<if $counts.drums gt 0>>You <<print $wardrumstext>>. An extra <<print $increments.drums>> barbarian<<if $increments.drums gt 1>>s<<endif>> hear<<if $increments.drums eq 1>>s<<endif>> the call of war and joins your horde. (Available again in <<print $counts.drums>> seconds.)<<set $counts.drums -= 1>><<else if $barbarians.main + $increments.drums gte $barbarians.max>>\n==Bang war drums==<<else>><<replace>>Bang war drums<<becomes>>You <<print $wardrumstext>>. An extra <<print $increments.drums>> barbarian<<if $increments.drums gt 1>>s<<endif>> hears the call of war and joins your horde.<<set $barbarians.main += $increments.drums>><<set $barbarians.total += $increments.drums>><<set $buildings.drums += 1>><<display 'remember'>><<set $counts.drums = $times.drums>><<endreplace>><<endif>>
\n<<if $flags.indexOf('longhouse') lt 0 && $barbarians.main gte $costs.longhouse*0.9>><<set $flags.push('longhouse')>><<endif>>\n<<if $flags.indexOf('longhouse') gte 0>><<if $counts.longhouse gt 0>>Keen for new quaffing locations and better ventilation for the meat pits, your barbarians construct a longhouse. (Available again in <<print $counts.longhouse>> seconds.)<<set $counts.longhouse -= 1>><<else>><<if $barbarians.main lt $costs.longhouse>>==Build longhouse (cost: <<print $costs.longhouse>> barbarians)==<<endif>>\n<<if $barbarians.main gte $costs.longhouse>><<replace>>Build longhouse (cost: <<print $costs.longhouse>> barbarians)<<becomes>>Keen for new quaffing locations and better ventilation for the meat pits, your barbarians construct a longhouse.<<set $barbarians.total -= $costs.longhouse>><<set $increments.main += 25>><<set $buildings.longhouse += 1>><<set $counts.longhouse = $times.longhouse>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>>
\n<<nobr>>\n<<if $increments.research gte 4>>\n<<if $flags.indexOf('drummer') lt 0 && $barbarians.main gte $costs.drummer*0.9>><<set $flags.push('drummer')>><<endif>>\n <<if $research.indexOf('drummer') gte 0>>Your barbarians have uncovered the secret of worthiness, and distilled it into a range of haircare products which makes each and every one of them, finally, worth it.\n <<elseif $counts.drummer gt 1>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode. (<<print $counts.drummer>> seconds remaining)<<set $counts.drummer -= 1>>\n <<elseif $counts.drummer eq 1>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode. (<<print $counts.drummer>> seconds remaining)<<set $counts.drummer -= 1>><<set $increments.drummer += 1>><<set $research.push('drummer')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.drummer && $counts.drummer lte 0>><<replace>>Research worth (cost: <<print $costs.drummer>> barbarians)<<becomes>>Your barbarians are philosophising in an attempt to uncover the true meaning of worth. Occasionally their heads explode.<<set $counts.drummer = $times.drummer>><<set $barbarians.main -= $costs.drummer>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('drummer')>>==Research worth (cost: <<print $costs.drummer>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
try {\n version.extensions['looperMacro'] = { major:1, minor:0, revision:0 };\n macros['looper'] = {\n handler: function(place, macroName, params, parser) {\n var loopy = state.history[0].variables[params]\n for (var key in loopy) {\n if (loopy.hasOwnProperty(key)) {\n loopy[key] = Math.floor(loopy[key] * 0.9);\n }\n }\n return;\n },\n };\n} catch(e) {\n throwError(place,"looper Setup Error: "+e.message); \n}
<<if $increments.research gte 1>>\n\nRESEARCH!\n<<display 'goldteethResearch'>><<display 'bassdrumResearch'>><<display 'worthResearch'>><<display 'snareResearch'>><<display 'glassesResearch'>><<display 'furtherResearch'>><<display 'safetyResearch'>><<display 'safety2Research'>><<display 'safety3Research'>><<display 'safety4Research'>><<display 'safety5Research'>>\n<<endif>>
<<nobr>>\n<<if $barbarians.main + $increments.main lte $barbarians.max>><<set $barbarians.main+=$increments.main>><<set $barbarians.total += $increments.main>><<else if $barbarians.main lt $barbarians.max>><<set $barbarians.total = $barbarians.total + $barbarians.max - $barbarians.main>><<set $barbarians.main = $barbarians.max>><<endif>><<print $barbarians.main>>\n<<if $buildings.mead gte 1>><<if $counts.drunk gt 1>><<set $counts.drunk -= 1>><<endif>><<if $counts.drunk lte 1>><<set $barbarians.drunk+=1>><<set $counts.drunk = Math.floor((60/$buildings.mead)+1)>><<endif>><<endif>>\n<<if $buildings.library gte 1>><<if $counts.literate gt 1>><<set $counts.literate -= 1>><<endif>><<if $counts.literate lte 1>><<set $barbarians.literate+=1>><<set $counts.literate = Math.floor((120/$buildings.library)+1)>><<endif>><<endif>>\n<<if $buildings.salon gte 1>><<if $counts.beautiful gt 1>><<set $counts.beautiful -= 1>><<endif>><<if $counts.beautiful lte 1>><<set $barbarians.beautiful += $increments.salon>><<set $counts.beautiful = Math.floor((180/$buildings.salon)+1)>><<endif>><<endif>>\n<<if $buildings.jobcentre gte 1>><<if $counts.employed gt 1>><<set $counts.employed -= 1>><<endif>><<if $counts.employed lte 1>><<set $barbarians.employed += 1>><<set $counts.employed = Math.floor((300/$buildings.jobcentre)+1)>><<endif>><<endif>>\n<<if $buildings.godhall gte 1>><<if $counts.priest gt 1>><<set $counts.priest -= 1>><<endif>><<if $counts.priest lte 1>><<set $barbarians.priest += 1>><<set $counts.priest = Math.floor((600/$buildings.monastery)+1)>><<endif>><<endif>>\n\n<<if $increments.drummer gte 1>>\n<<if $counts.drumbang gt 1>><<set $counts.drumbang -= 1>><<endif>>\n<<if $counts.drumbang lte 1>>\n<<if $barbarians.main + $increments.main + $increments.drums lte $barbarians.max>><<set $barbarians.main += $increments.drums>><<endif>><<set $counts.drumbang = Math.floor((120/$increments.drummer)+1)>><<endif>>\n<<endif>>\n<<endif>>\n<<endnobr>>
\n<<nobr>>\n<<if $increments.research gte 50 && $research.indexOf('healthsafety4') gte 0>>\n<<if $flags.indexOf('healthsafety5') lt 0 && $barbarians.main gte $costs.healthsafety5*0.9>><<set $flags.push('healthsafety5')>><<endif>>\n <<if $research.indexOf('healthsafety5') gte 0>>Your barbarians have collectively passed Unit D in their National Diploma in Occupational Health and Safety. They are all wearing hard hats, carrying clipboards and labelled with 'corrosive chemical' signs.\n <<elseif $counts.healthsafety5 gt 1>>Your barbarians are hard at work studying for Unit D of the National Diploma in Occupational Health and Safety, which covers practical applications. They are practicing being unsafe in a variety of real-life situations. (<<print $counts.healthsafety5>> seconds remaining)<<set $counts.healthsafety5 -= 1>>\n <<elseif $counts.healthsafety5 eq 1>>Your barbarians are hard at work studying for Unit D of the National Diploma in Occupational Health and Safety, which covers practical applications. They are practicing being unsafe in a variety of real-life situations. (<<print $counts.healthsafety5>> seconds remaining)<<set $counts.healthsafety5 -= 1>><<looper costs>><<looper costs>><<set $research.push('healthsafety4')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.healthsafety5 && $counts.healthsafety5 lte 0>><<replace>>Research Unit D of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety5>> barbarians)<<becomes>>Your barbarians are hard at work studying for Unit D of the National Diploma in Occupational Health and Safety, which covers practical applications. They are practicing being unsafe in a variety of real-life situations.<<set $counts.healthsafety5 = $times.healthsafety5>><<set $barbarians.main -= $costs.healthsafety5>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('healthsafety5') gte 0>>==Research Unit D of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety5>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
explosives?
healthsafety4\nfireworks factories
<<display 'version banner'>>\n\nBARBARIAN COMMANDER! BUILD YOUR HORDE!\n\nBarbarians in your clearing: <<timedcycle 1s>><<display 'barbarianCount'>><<endtimedcycle>>\n\nTrees removed: <<timedcycle 1s>><<print $barbarians.max>><<endtimedcycle>>\n\nINFRASTRUCTURE!\n<<display 'buildings'>>\n<<timedcycle 1s>><<display 'missions'>><<endtimedcycle>>\n<<timedcycle 1s>><<display 'research'>><<endtimedcycle>>\n/% <<timedcycle 1s>><<display 'beers'>><<endtimedcycle>>\n<<timedcycle 1s>><<display 'gods'>><<endtimedcycle>>\n<<timedcycle 1s>><<display 'maps'>><<endtimedcycle>> %/\n\n<<timedcycle 1s>><<if $stats gte 1>><<replace>>HIDE STATISTICS!<<becomes>><<set $stats = 0>><<endreplace>>\n<<display 'statsheet'>><<else>><<replace>>STATISTICS!<<becomes>><<set $stats = 1>><<replace>>HIDE STATISTICS!<<becomes>><<set $stats = 0>><<endreplace>>\n<<display 'statsheet'>><<endreplace>><<endif>><<endtimedcycle>>\n\n<<timedcycle 1s>><<if $about gte 1>><<replace>>HIDE ABOUT?!<<becomes>><<set $about=0>><<endreplace>>\n<<display 'about'>><<else>><<replace>>ABOUT?!<<becomes>><<replace>>HIDE ABOUT?!<<becomes>><<set $about=0>><<endreplace>>\n<<display 'about'>><<set $about=1>>\n<<endreplace>><<endif>><<endtimedcycle>>\n\n<<timedcycle 1s>><<if $changes gte 1>><<replace>>HIDE CHANGES!<<becomes>><<set $changes = 0>><<endreplace>>\n<<display 'changelog'>><<else>><<replace>>CHANGES!<<becomes>><<set $changes = 1>><<replace>>HIDE CHANGES!<<becomes>><<set $changes = 0>><<endreplace>>\n<<display 'changelog'>><<endreplace>><<endif>><<endtimedcycle>>\n\n<<timedcycle 1s>><<if $thanks gte 1>><<replace>>HIDE THANKS!<<becomes>><<set $thanks = 0>><<endreplace>>\n<<display 'THANKS!'>><<else>><<replace>>THANKS!<<becomes>><<set $thanks = 1>><<replace>>HIDE THANKS!<<becomes>><<set $thanks = 0>><<endreplace>>\n<<display 'THANKS!'>><<endreplace>><<endif>><<endtimedcycle>>\n\n<<timedcycle 60s>><<display 'remember'>><<endtimedcycle>>\n/%\n<<timedcycle 1s>>DEBUG:\n<<print JSON.stringify(state.history[0].variables)>>\n<<endtimedcycle>>\n\n\n%/
GRENDEL
<<if $research.indexOf('healthsafety3') gte 0>> LABORATORY\n\nTHEN DIFFERENT TYPES OF YEAST
\n<<nobr>>\n<<if $flags.indexOf('beauty') lt 0 && $barbarians.main gte $costs.beautybase*0.9>><<set $flags.push('beauty')>><<endif>>\n<<if $counts.beauty gt 1>>Armed with foot-long scissors and combs that could severely injure untrained wielders, your barbarian hairdressers are hard at work sculpting new, impossibly beautiful haircuts for your warriors. (<<print $counts.beauty>> seconds left)<<set $counts.beauty -= 1>><<else>><<if $counts.beauty eq 1>>Your barbarian hairdressers are hard at work sculpting new, impossibly beautiful haircuts for your warriors. (<<print $counts.beauty>> seconds left)<<set $counts.beauty -= 1>><<display 'remember'>><<set $missions.push('beautiful')>><<set $increment += 10>><<endif>>\s\n<<if $missions.indexOf('beautiful') gte 1>>Your barbarians have designed a range of gorgeous new haircuts for the modern warrior, and launched their own range of stunning salon-quality products at affordable high-street prices. Your beautiful barbarians attract colleagues at a much higher rate than before.<<else>><<if $barbarians.beautiful gte $costs.beautybeauties && $barbarians.main gte $costs.beautybase>><<replace>>Beautify your barbarians (cost: <<print $costs.beauty>> barbarians)<<becomes>>Armed with foot-long scissors and combs that could severely injure untrained wielders, your barbarian hairdressers are hard at work sculpting new, impossibly beautiful haircuts for your warriors.<<set $counts.beauty = $times.beauty>><<set $barbarians.main -= $costs.beautybase>><<set $barbarians.beautiful -= $costs.beautybeauties>><<endreplace>><<else if $flags.indexOf('beauty') gte 0>>Barbarian beautification: you need <<print $costs.beautybase>> barbarians to make beautiful and <<print $costs.beautybeauties>> existing beauties.<<endif>><<endif>><<endif>>\n<<endnobr>>
MONSTERS
\n<<nobr>>\n<<if $increments.research gte 30 && $research.indexOf('healthsafety2') gte 0>>\n<<if $flags.indexOf('healthsafety3') lt 0 && $barbarians.main gte $costs.healthsafety3*0.9>><<set $flags.push('healthsafety3')>><<endif>>\n <<if $research.indexOf('healthsafety3') gte 0>>Your barbarians have collectively passed Unit B in their National Diploma in Occupational Health and Safety. They now have a rudimentary understanding of toxicology and dangerous chemicals. In theory, this has made them safer.\n <<elseif $counts.healthsafety3 gt 1>>Your barbarians are hard at work studying for Unit B of the National Diploma in Occupational Health and Safety, which covers chemical hazards, toxicology, epidemiology and biological agents. They are finding it surprisingly engaging. (<<print $counts.healthsafety3>> seconds remaining)<<set $counts.healthsafety3 -= 1>>\n <<elseif $counts.healthsafety3 eq 1>>Your barbarians are hard at work studying for Unit B of the National Diploma in Occupational Health and Safety, which covers chemical hazards, toxicology, epidemiology and biological agents. They are finding it surprisingly engaging. (<<print $counts.healthsafety3>> seconds remaining)<<set $counts.healthsafety3 -= 1>><<looper costs>><<set $research.push('healthsafety3')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.healthsafety3 && $counts.healthsafety3 lte 0>><<replace>>Research Unit B of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety3>> barbarians)<<becomes>>Your barbarians are hard at work studying for Unit B of the National Diploma in Occupational Health and Safety, which covers chemical hazards, toxicology, epidemiology and biological agents. They are finding it surprisingly engaging.<<set $counts.healthsafety3 = $times.healthsafety3>><<set $barbarians.main -= $costs.healthsafety3>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('healthsafety3) gte 0>>==Research Unit B of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety3>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
\n<<nobr>>\n<<if $flags.indexOf('training') lt 0 && $barbarians.main gte $costs.training*0.9>><<set $flags.push('training')>><<endif>>\n<<if $counts.training gt 1>>Your barbarian librarians are throwing books at their colleagues until they understand customer services and public relations. (<<print $counts.training>> seconds left)<<set $counts.training -= 1>><<else>><<if $counts.training eq 1>>Your barbarian librarians are throwing books at their colleagues until they understand customer services and public relations. (<<print $counts.training>> seconds left)<<set $counts.training -= 1>><<display 'remember'>><<set $missions.push('trained')>><<set $increment += 5>><<endif>><<if $missions.indexOf('trained') gte 1>>Your barbarians have implemented a new starter training scheme, greatly improving the retention rate of your horde.<<else>><<if $barbarians.literate gte $costs.trainingreaders && $barbarians.main gte $costs.trainingbase>><<replace>>Train your barbarians (cost: <<print $costs.trainingbase>> barbarians & <<print $costs.trainingreaders>> readers)<<becomes>>Your barbarian librarians are throwing books at their colleagues until they understand customer services and public relations.<<set $counts.training = $times.training>><<set $barbarians.main -= $costs.trainingbase>><<set $barbarians.literate -= $costs.trainingreaders>><<endreplace>><<else if $flags.indexOf('training') gte 0>>Barbarian training: you need <<print $costs.trainingbase>> barbarians to train and <<print $costs.trainingreaders>> barbarians who can read.<<endif>><<endif>><<endif>>\n<<endnobr>>
Mapmakers guild
ARE YOU SURE?\n\n[[YES, OBLITERATE THEM|ARE YOU SURE?]]\n[[NO, I AM A BENEVOLENT DICTATOR|BEGIN]]\n
\n<<if $flags.indexOf('godhall') lt 0 && $barbarians.main gte $costs.godhall*0.9>><<set $flags.push('godhall')>><<endif>>\n<<if $flags.indexOf('godhall') gte 0>><<if $counts.godhall gt 0>>You build a new Hall of the Gods in which your barbarians can lead lives of austerity, worship and shouting. (Available again in <<print $counts.godhall>> seconds.)<<set $counts.godhall -= 1>><<else>><<if $barbarians.main lt $costs.godhall>>==Build Hall of the Gods (cost: <<print $costs.godhall>> barbarians)==<<endif>><<if $barbarians.main gte $costs.godhall>><<replace>>Build Hall of the Gods (cost: <<print $costs.godhall>> barbarians)<<becomes>>You build a new Hall of the Gods in which your barbarians can lead lives of austerity, worship and shouting.<<set $increments.research += 1>><<set $increments.religion += 1>><<set $buildings.godhall += 1>><<set $barbarians.main -= $costs.godhall>><<set $counts.godhall = $times.godhall>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>>
BARBARIAN HORDE
Enormous thanks go to Grant Howitt, as always, for humouring me; Chris Taylor, for listening to me waffle and helping me come up with ideas; and Leon Arnett for making Twine 1.4 and the timed cycle macro that makes the game possible.\n\nThanks also to the ever-growing list of playtesters, punsters and interested alpha players: Andrew Armstrong, Jessica Townsend, James Wallis, Will Blackstock, Lindsay Mahood, Daisy Swaffer, Ben McKenzie, Keiran Sparksman, Matt Johnson.
<<display 'cleanslate'>>[[RECRUIT BARBARIAN. AGAIN.|BEGIN]]
\n<<nobr>>\n<<if $increments.research gte 9 && $buildings.monastery gte 1>>\n<<if $flags.indexOf('furthered') lt 0 && $barbarians.main gte $costs.furthered*0.9>><<set $flags.push('furthered')>><<endif>>\n <<if $research.indexOf('furthered') gte 0>>Your monks are hard at work attempting to educate your barbarians. There is a lot of shouting.\n <<elseif $counts.furthered gt 1>>Your priests are hard at work attempting to educate your barbarians. There is a lot of shouting. (<<print $counts.furthered>> seconds remaining)<<set $counts.furthered -= 1>>\n <<elseif $counts.furthered eq 1>>Your monks are hard at work attempting to educate your barbarians. There is a lot of shouting. (<<print $counts.furthered>> seconds remaining)<<set $counts.furthered -= 1>><<set $increments.library += 1>><<set $research.push('furthered')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.furthered && $counts.furthered lte 0 && $barbarians.priest gte $costs.furtheredMonk>><<replace>>Research further education (cost: <<print $costs.furthered>> barbarians & <<print $costs.furtheredMonk>> priests)<<becomes>>Your barbarians are experimenting with eyeballs.<<set $counts.furthered = $times.furthered>><<set $barbarians.main -= $costs.furthered>><<set $barbarians.priest -= $costs.furtheredMonk>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('furthered') gte 0>>==Research further education (cost: <<print $costs.furthered>> barbarians & <<print $costs.furtheredMonk>> priests)==\n <<endif>>\n<<endif>>\n<<endnobr>>
.revision-span-in {\n opacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n transition: 1s; -webkit-transition: 1s;\n}\n.revision-span-out {\n position:absolute;\n opacity: 0;\n}\n\n#sidebar {\n display: none;\n}\n\n#versionbanner {\n color: black;\n background-color:white;\n padding:5px;\n}\n\n#passages {\n border-left: 0px !important\n}\n\n.passage a {\n color:#8A0707;\n} \n\n.passage a:link {\n color:#8A0707;\n} \n\n.passage a:visited {\n color:#8A0707;\n}\n\n.passage a:hover {\n color:#8A0707;\n} \n\n.passage a:active {\n color:#8A0707;\n}\n\n.trophytable {\n margin:0px;\n padding:0px;\n border:1px solid #ffffff;\n}\n\n.trophytable td {\n vertical-align:middle;\n border:1px solid #ffffff;\n border-width:0px 1px 1px 0px;\n text-align:center;\n padding:12px;\n color:#ffffff;\n}
<html><p id="versionbanner">This is an alpha build of HORDE. It's buggy at times, rather ugly, far too short and nowhere near feature-complete, yet. Sometimes there will be new builds that break your saves and mean you have to start again from scratch. Sorry about that. Please send bug reports, feedback and suggestions to newsmary at gmail dot com, or <a href="http://twitter.com/newsmary">@newsmary</a> on Twitter.</p></html>
\n<<if $flags.indexOf('jobcentre') lt 0 && $barbarians.main gte $costs.jobcentre*0.9>><<set $flags.push('jobcentre')>><<endif>>\n<<if $flags.indexOf('jobcentre') gte 0>><<if $counts.jobcentre gt 0>>In an attempt to deal with the chaotic barbarian employment market and the problems of casual barbarian labour, your barbarians erect a job centre. (Available again in <<print $counts.jobcentre>> seconds.)<<set $counts.jobcentre -= 1>><<else>><<if $barbarians.main lt $costs.jobcentre>>==Build job centre (cost: <<print $costs.jobcentre>> barbarians)==<<endif>>\n<<if $barbarians.main gte $costs.jobcentre>><<replace>>Build job centre (cost: <<print $costs.jobcentre>> barbarians)<<becomes>>In an attempt to deal with the chaotic barbarian employment market and the problems of casual barbarian labour, your barbarians erect a job centre.<<set $barbarians.total -= $costs.jobcentre>><<set $increments.mission += 1>><<set $buildings.jobcentre += 1>><<set $counts.jobcentre = $times.jobcentre>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>>
<<timedcycle 1s>><<display 'wardrumsAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'treesAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'meadhallAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'libraryAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'salonAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'jobcentreAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'conurseryAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'microbreweryAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'godhallAction'>><<endtimedcycle>><<timedcycle 1s>><<display 'longhouseAction'>><<endtimedcycle>>
<<nobr>><<set $research = JSON.parse(localStorage.getItem("research"))>>\n<<set $missions = JSON.parse(localStorage.getItem("missions"))>>\n<<set $counts = JSON.parse(localStorage.getItem("counts"))>>\n<<set $times = JSON.parse(localStorage.getItem("times"))>>\n<<set $costs = JSON.parse(localStorage.getItem("costs"))>>\n<<set $buildings = JSON.parse(localStorage.getItem("buildings"))>>\n<<set $increments = JSON.parse(localStorage.getItem("increments"))>>\n<<set $barbarians = JSON.parse(localStorage.getItem("barbarians"))>>\n<<set $beers = JSON.parse(localStorage.getItem("beers"))>>\n<<set $trophies = JSON.parse(localStorage.getItem("trophies"))>>\n<<set $monsters = JSON.parse(localStorage.getItem("monsters"))>>\n<<set $flags = JSON.parse(localStorage.getItem("flags"))>>\n<<set $gods = JSON.parse(localStorage.getItem("gods"))>>\n<<set $maps = JSON.parse(localStorage.getItem("maps"))>>\n\n<<endnobr>>
HALL OF THE GODS!\n<<if $religion eq 'none'>>\nYour barbarians are godless. Your priests mill about aimlessly.\n<<endif>>
Current barbarians: <<print $barbarians.main>>\nTotal barbarians: <<print $barbarians.total>>\nBarbarians per second: <<print $increments.main>><<if $increments.drummer gte 1>>\nDrums of war: <<set $bang = $increments.drum / (Math.floor(120/$increments.drumbang))>><<print $bang>><<endif>>\n\n<<if $buildings.mead gte 1>>\nRascally drunk barbarians: <<print $barbarians.drunk>><<endif>><<if $buildings.library gte 1>>\nBarbarians who can read: <<print $barbarians.literate>><<endif>><<if $buildings.salon gte 1>>\nBeautifully coiffured barbarians: <<print $barbarians.beautiful>><<endif>><<if $buildings.jobcentre gte 1>>\nBarbarians with a job: <<print $barbarians.employed>><<endif>><<if $buildings.monastery gte 1>>\nPriests: <<print $barbarians.priest>><<endif>>\n\n<<if $buildings.drums gte 1>>War drums banged: <<print $buildings.drums>><<endif>><<if $buildings.mead gte 1>>\nMead halls: <<print $buildings.mead>><<endif>><<if $buildings.library gte 1>>\nLibraries: <<print $buildings.library>><<endif>><<if $buildings.salon gte 1>>\nSalons: <<print $buildings.salon>><<endif>><<if $buildings.jobcentre gte 1>>\nJob centres: <<print $buildings.jobcentre>><<endif>><<if $buildings.nursery gte 1>>\nNurseries: <<print $buildings.nursery>><<endif>><<if $buildings.microbrewery gte 1>>\nMicrobreweries: <<print $buildings.microbrewery>><<endif>><<if $buildings.godhall gte 1>>\nHalls of the Gods: <<print $buildings.godhall>><<endif>><<if $buildings.longhouse gte 1>>\nLonghouses: <<print $buildings.godhall>><<endif>>
\n<<if $barbarians.total gte $costs.mead>><<if $counts.mead gt 0>>You build a new mead hall where your barbarians can drink and carouse. (Available again in <<print $counts.mead>> seconds.)<<set $counts.mead -= 1>><<else>><<if $barbarians.main lt $costs.mead>>==Build mead hall (cost: <<print $costs.mead>> barbarians)==<<endif>><<if $barbarians.main gte $costs.mead>><<replace>>Build mead hall (cost: <<print $costs.mead>> barbarians)<<becomes>>You build a new mead hall where your barbarians can drink and carouse.<<set $increments.main = $increments.main + 1*$increments.beer>><<set $buildings.mead += 1>><<set $barbarians.main -= $costs.mead>><<set $counts.mead = $times.mead>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>>
<<set $barbarians += 100000>>
\n<<if $buildings.mead gte 1>><<if $flags.indexOf('microbrewery') lt 0 && $barbarians.main gte $costs.microbrewery*0.9>><<set $flags.push('microbrewery')>><<endif>><<if $flags.indexOf('microbrewery') gte 0>><<if $counts.microbrewery gt 0>>Your barbarians build a microbrewery. A surprising number of them fall in and drown, cheerfully. (Available again in <<print $counts.microbrewery>> seconds.)<<set $counts.microbrewery -= 1>><<else>><<if $barbarians.main lt $costs.microbrewery>>==Build microbrewery (cost: <<print $costs.microbrewery>> barbarians)==<<endif>><<if $barbarians.main gte $costs.microbrewery>><<replace>>Build microbrewery (cost: <<print $costs.microbrewery>> barbarians)<<becomes>>Your barbarians build a microbrewery. A surprising number of them fall in and drown, cheerfully.<<set $barbarians.main -= $costs.microbrewery>><<set $increments.beer += 1>><<set $buildings.microbrewery += 1>><<set $counts.microbrewery = $times.microbrewery>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>><<endif>>
\n<<if $flags.indexOf('nursery') lt 0 && $barbarians.main gte $costs.nursery*0.9>><<set $flags.push('nursery')>><<endif>>\n<<if $flags.indexOf('nursery') gte 0>><<if $counts.nursery gt 0>>Your barbarians set about training Conannies and building a Conursery. Unfortunately the sheer awfulness of the pun causes many deaths. (Available again in <<print $counts.nursery>> seconds.)<<set $counts.nursery -= 1>><<else>><<if $barbarians.main lt $costs.nursery>>==Build Conursery (cost: <<print $costs.nursery>> barbarians)==<<endif>><<if $barbarians.main gte $costs.nursery>><<replace>>Build Conursery (cost: <<print $costs.nursery>> barbarians)<<becomes>>Your barbarians set about training Conannies and building a Conursery. Unfortunately the sheer awfulness of the pun causes many deaths.<<set $barbarians.main -= $costs.nursery>><<set $increments.main += 10>><<set $buildings.nursery += 1>><<set $counts.nursery = $times.nursery>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>>
GRENDEL'S MUM
\n<<nobr>>\n<<if $increments.research gte 40 && $research.healthsafety3 gte 0>>\n<<if $flags.indexOf('healthsafety4') lt 0 && $barbarians.main gte $costs.healthsafety4*0.9>><<set $flags.push('healthsafety4')>><<endif>>\n <<if $research.indexOf('healthsafety4') gte 0>>Your barbarians have collectively passed Unit C in their National Diploma in Occupational Health and Safety. They now understand fire, explosions and how to store work equipment safely.\n <<elseif $counts.healthsafety4 gt 1>>Your barbarians are hard at work studying for Unit C of the National Diploma in Occupational Health and Safety, which covers equipment, explosions and construction hazards. They keep blowing each other up. (<<print $counts.healthsafety4>> seconds remaining)<<set $counts.healthsafety3 -= 1>>\n <<elseif $counts.healthsafety4 eq 1>>Your barbarians are hard at work studying for Unit C of the National Diploma in Occupational Health and Safety, which covers equipment, explosions and construction hazards. They keep blowing each other up. (<<print $counts.healthsafety4>> seconds remaining)<<set $counts.healthsafety4 -= 1>><<looper costs>><<set $research.push('healthsafety4')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.healthsafety4 && $counts.healthsafety4 lte 0>><<replace>>Research Unit C of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety4>> barbarians)<<becomes>>Your barbarians are hard at work studying for Unit C of the National Diploma in Occupational Health and Safety, which covers equipment, explosions and construction hazards. They keep blowing each other up.<<set $counts.healthsafety4 = $times.healthsafety4>><<set $barbarians.main -= $costs.healthsafety4>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('healthsafety4') gte 0>>==Research Unit C of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety4>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
MAPS!\n(there's nothing here yet)
<<if $increments.beer gte 2>>\n\nBEERS!\n(there's nothing here yet)\n<<endif>>
WIDEHOUSE
\nTROPHIES!\n
<<if localStorage.getItem("barbarians") neq null>>\n<<display 'loadsave'>>\n[[CONTINUE|BEGIN]] or [[DELETE SAVE]]\n(If this is the first time you've played the build posted on 22nd Dec 2013, please delete your save and start again - sorry, it's just that you'll almost certainly find the game is totally broken if you try to continue playing.)\n<<else>>\n<<display 'cleanslate'>>\n[[RECRUIT BARBARIAN|BEGIN]]\n<<endif>>
SVEN THE COLOSSUS
\n<<nobr>><<if $flags.indexOf('library') lt 0 && $barbarians.main gte $costs.library*0.9>><<set $flags.push('library')>><<endif>>\n<<if $flags.indexOf('library') gte 0>><<if $counts.library gt 0>>After an arduous training montage featuring barbarians eating, wearing and fighting books, your library is complete. (Available again in <<print $counts.library>> seconds.)<<set $counts.library -= 1>><<else>><<if $barbarians.main lt $costs.library>>==Build library (cost: <<print $costs.library>> barbarians)==<<endif>><<if $barbarians.main gte $costs.library>><<replace>>Build library (cost: <<print $costs.library>> barbarians)<<becomes>>After an arduous training montage featuring barbarians eating, wearing and fighting books, your library is complete.<<set $barbarians.main -= $costs.library>><<set $increments.research += $increments.library>><<set $buildings.library += 1>><<set $counts.library = $times.library>><<display 'remember'>><<endreplace>><<endif>><<endif>><<endif>><<endnobr>>
<<if $increments.mission gte 1>>\n\nMISSIONS!\n<<display 'trainingMission'>><<display 'beautyMission'>>\n<<endif>>
This is the result of several things. \n\nI had a week off and spent far too much time playing <html><a href="http://orteil.dashnet.org/cookieclicker/">Cookie Clicker</a></html>. Horde owes most of its genesis to that and <html><a href="http://candies.aniwey.net/">Candy Box</a></html>. At the same time, I read <html><a href="http://twitter.com/webbedspace">Leon Arnott</a></html>'s improved <html><a href="https://www.glorioustrainwrecks.com/node/5462">replace macro set</a></html>, particularly timed cycle, and got to thinking about how/whether you could use Twine to make that sort of game. Amd a few weeks previously someone at Freeplay asked the Twine panel whether Twine was really useful in teaching system design. This isn't a serious game or a literary one. It's also not an elegantly written one, because Twine's not the best system for simulating loops. But it exists, and it works (probably, mostly), and <html><a href="http://maryhamilton.co.uk/2013/10/make-shit-art/">that's what matters</a></html>.\n\nTLDR: bloody-mindedness and a lot of time playing Dungeons and Dragons.\n\nPlease send feedback and bug reports to newsmary at gmail dot com, or <html><a href="http://twitter.com/newsmary">@newsmary on Twitter</a></html>
\n<<nobr>>\n<<if $increments.research gte 20 && $research.indexOf('healthsafety') gte 0 && $research.indexOf('glasses') gte 1>>\n<<if $flags.indexOf('healthsafety2') lt 0 && $barbarians.main gte $costs.healthsafety2*0.9>><<set $flags.push('healthsafety2')>><<endif>>\n <<if $research.indexOf('healthsafety2') gte 0>>Your barbarians have collectively passed Unit A in their National Diploma in Occupational Health and Safety. They are very proud and can now identify hazards at 50 paces.\n <<elseif $counts.healthsafety2 gt 1>>Your barbarians are hard at work studying for Unit A of the National Diploma in Occupational Health and Safety, which covers risk management, loss causation, incident investigation and hazard identification. They are having some trouble with the last part. (<<print $counts.healthsafety2>> seconds remaining)<<set $counts.healthsafety2 -= 1>>\n <<elseif $counts.healthsafety2 eq 1>>Your barbarians are hard at work studying for Unit A of the National Diploma in Occupational Health and Safety, which covers risk management, loss causation, incident investigation and hazard identification. They are having some trouble with the last part. (<<print $counts.healthsafety2>> seconds remaining)<<set $counts.healthsafety2 -= 1>><<looper costs>><<set $research.push('healthsafety2')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.healthsafety2 && $counts.healthsafety2 lte 0>><<replace>>Research Unit A of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety2>> barbarians)<<becomes>>Your barbarians are hard at work studying for Unit A of the National Diploma in Occupational Health and Safety, which covers risk management, loss causation, incident investigation and hazard identification. They are having some trouble with the last part.<<set $counts.healthsafety2 = $times.healthsafety2>><<set $barbarians.main -= $costs.healthsafety2>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('healthsafety2') gte 0>>==Research Unit A of the National Diploma in Occupational Health and Safety (cost: <<print $costs.healthsafety2>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
<<nobr>>\n<<remember $wardrumstext>>\n<<remember $oldcost>>\n<<remember $religion>>\n<<set localStorage.setItem("research", JSON.stringify($research))>>\n<<set localStorage.setItem("missions", JSON.stringify($missions))>>\n<<set localStorage.setItem("times", JSON.stringify($times))>>\n<<set localStorage.setItem("costs", JSON.stringify($costs))>>\n<<set localStorage.setItem("counts", JSON.stringify($counts))>>\n<<set localStorage.setItem("buildings", JSON.stringify($buildings))>>\n<<set localStorage.setItem("increments", JSON.stringify($increments))>>\n<<set localStorage.setItem("barbarians", JSON.stringify($barbarians))>>\n<<set localStorage.setItem("beers", JSON.stringify($beers))>>\n<<set localStorage.setItem("trophies", JSON.stringify($trophies))>>\n<<set localStorage.setItem("monsters", JSON.stringify($monsters))>>\n<<set localStorage.setItem("gods", JSON.stringify($gods))>>\n<<set localStorage.setItem("flags", JSON.stringify($flags))>>\n<<set localStorage.setItem("maps", JSON.stringify($maps))>>\n<<endnobr>>
Changelog:\nv0.18 22/12/2013 Version of the Inflated Octogram\n- fixed teeth in the health and safety system\n- fixed bass drums\n- fixed unintentionally satirical barbarian employment issues\n- balanced times a bit because people have already started finding my massive placeholder numbers\n- added lots of research\n- a few display tweaks to minimise unused blackspace\n- got a bit stressed about CSS further down the line\n- decided to stop worrying about it\n- added THANKS!\n- bunch of back-end framework for mid-game systems added\n- added a couple of buildings\n- initial adds for microbrewing & religion\n- fixed peculiar, creepy bug where the whole game would flash slower and slower and then all the numbers started counting backwards\n- fixed disappearing trees\n- rearranged stats\n- added some debug help\n- fixed barbarians never being beautiful enough\n- fixed wardrums exploit\n- fixed total barbarians counting backwards at max-out (I think)\n\nKnown issues:\n- bps doesn't include drummers\n\n[[PREVIOUS CHANGES!]] (clicking this will interrupt your game)
PLATINUM TEETH
LADDER PIECES
\n<<if $flags.indexOf('salon') lt 0 && $barbarians.main gte $costs.salon*0.9>><<set $flags.push('salon')>><<endif>>\n<<if $flags.indexOf('salon') gte 0>><<if $counts.salon gt 0>>Bored of drab beards and knotted dreadlocks, your barbarians erect a salon offering a range of spa and beauty treatments. (Available again in <<print $counts.salon>> seconds.)<<set $counts.salon -= 1>><<else>><<if $barbarians.main lt $costs.salon>>==Build salon (cost: <<print $costs.salon>> barbarians)==<<endif>><<if $barbarians.main gte $costs.salon>><<replace>>Build salon (cost: <<print $costs.salon>> barbarians)<<becomes>>Bored of drab beards and knotted dreadlocks, your barbarians erect a salon offering a range of spa and beauty treatments.<<set $barbarians.main -= $costs.salon>><<set $buildings.salon += 1>><<set $increments.main += $increments.salon>><<display 'remember'>><<set $counts.salon = $times.salon>><<endreplace>><<endif>><<endif>><<endif>>
\n<<nobr>>\n<<if $increments.research gte 6 && $research.indexOf('snares') gte 0>>>>\n<<if $flags.indexOf('snares') lt 0 && $barbarians.main gte $costs.snares*0.9>><<set $flags.push('snares')>><<endif>>\n <<if $research.indexOf('snares') gte 0>>Your war drums now include snares, enabling you to call more barbarians to your clearing.\n <<elseif $counts.snares gt 1>>Your barbarians are collecting tiny rocks together then punching them, to see what noises they make. (<<print $counts.snares>> seconds remaining)<<set $counts.snares -= 1>>\n <<elseif $counts.snares eq 1>>Your barbarians are collecting tiny rocks together then punching them, to see what noises they make. (<<print $counts.snares>> seconds remaining)<<set $counts.snares -= 1>><<set $increments.drums += 10>><<set $wardrumstext = 'rock out on the war snares'>><<set $research.push('snares')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.snares && $counts.snares lte 0>><<replace>>Research snare drums (cost: <<print $costs.snares>> barbarians)<<becomes>>Your barbarians are collecting tiny rocks together then punching them, to see what noises they make.<<set $counts.snares = $times.snares>><<set $barbarians.main -= $costs.snares>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('snares') gte 0>>==Research snare drums (cost: <<print $costs.snares>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>
newsmary
\n<<if $counts.trees gt 0>>Your barbarians gnaw down <<print $oldcost>> trees with their teeth. (Available again in <<print $counts.trees>> seconds.)<<set $counts.trees -= 1>><<else>><<if $barbarians.main lt $costs.trees>>==Cut down some trees (cost: <<print $costs.trees>> barbarians)==<<endif>><<if $barbarians.main gte $costs.trees>><<replace>>Cut down some trees (cost: <<print $costs.trees>> barbarians)<<becomes>><<set $oldcost = Math.pow($costs.trees,$increments.digger)>>Your barbarians gnaw down <<print $oldcost>> trees with their teeth.<<set $barbarians.max += $oldcost>><<set $barbarians.main -= $costs.trees>><<set $costs.trees = $costs.trees+=1>><<set $counts.trees = $times.trees>><<display 'remember'>><<endreplace>><<endif>><<endif>>
<<nobr>><<set localStorage.clear();>>\n<<set $barbarians = {main:0,max:300,drunk:0,literate:0,beautiful:0,employed:0,priest:0,total:0}>>\n<<set $costs = {mead:25,library:150,jobcentre:5000,trainingbase:1000,trainingreaders:25,salon:1000,nursery:10000,beautybase:2500,beautybeauties:50,bassdrum:500,goldteeth:250,trees:5,healthsafety:10000,microbrewery:25000,worthit:5000,healthsafety2:100000,healthsafety3:200000,healthsafety4:500000,healthsafety5:1000000,glasses:4000,snares:3000,furthered:20000,furtheredMonk:3,godhall:15000,longhouse:50000,drummer:1000}>>\n<<set $oldcost = 0>>\n<<set $wardrumstext = 'bang the war drums'>>\n<<set $increments = {main:1,drums:1,digger:2,research:0,mission:0,beer:1,salon:2,library:1,religion:1,drummer:0}>>\n<<set $buildings = {drums:0,mead:0,library:0,jobcentre:0,salon:0,nursery:0,trees:0,microbrewery:0,godhall:0,longhouse:0}>>\n<<set $research = []>>\n<<set $missions = []>>\n<<set $times = {mead:30,library:60,drums:5,trees:10,jobcentre:300,training:300,salon:200,nursery:600,beauty:600,bassdrum:300,goldteeth:300,healthsafety:6000,microbrewery:1200,worthit:900,healthsafety2:6000,healthsafety3:6000,healthsafety4:6000,healthsafety5:6000,glasses:3000,snares:300,furthered:3000,godhall:900,longhouse:1800,drummer:450}>>\n<<set $counts = {mead:0,library:0,jobcentre:0,training:0,salon:0,nursery:0,beauty:0,bassdrum:0,goldteeth:0,trees:0,drunk:0,literate:0,beautiful:0,employed:0,healthsafety:0,microbrewery:0,worthit:0,healthsafety2:0,healthsafety3:0,healthsafety4:0,healthsafety5:0,glasses:0,snares:0,furthered:0,godhall:0,priest:0,longhouse:0,drumbang:0}>>\n<<set $beers = []>>\n<<set $trophies = []>>\n<<set $monsters = []>>\n<<set $flags = []>>\n<<set $gods = []>>\n<<set $religion = 'none'>>\n<<set $maps = []>>\n<<endnobr>>
CHAINSAW TEETH
\n<<nobr>>\n<<if $increments.research gte 10>>\n<<if $flags.indexOf('healthsafety') lt 0 && $barbarians.main gte $costs.healthsafety*0.9>><<set $flags.push('healthsafety')>><<endif>>\n <<if $research.indexOf('healthsafety') gte 0>>Your barbarians are fully trained in the basics of health and safety, and several possess their own clipboards and hard hats.\n <<elseif $counts.healthsafety gt 1>>Your barbarians are experimenting at length in an attempt to categorise the safety or otherwise of as many activities as possible. It's... messy. (<<print $counts.healthsafety>> seconds remaining)<<set $counts.healthsafety -= 1>>\n <<elseif $counts.healthsafety eq 1>>Your barbarians are experimenting at length in an attempt to categorise the safety or otherwise of as many activities as possible. It's... messy. (<<print $counts.healthsafety>> seconds remaining)<<set $counts.healthsafety -= 1>><<looper costs>><<set $research.push('healthsafety')>><<display 'remember'>>\n <<elseif $barbarians.main gte $costs.healthsafety && $counts.healthsafety lte 0>><<replace>>Research health and safety (cost: <<print $costs.healthsafety>> barbarians)<<becomes>>Your barbarians are experimenting at length in an attempt to categorise the safety or otherwise of as many activities as possible. It's... messy.<<set $counts.healthsafety = $times.healthsafety>><<set $barbarians.main -= $costs.healthsafety>><<display 'remember'>><<endreplace>>\n <<elseif $flags.indexOf('healthsafety') gte 0>>==Research health and safety (cost: <<print $costs.healthsafety>> barbarians)==\n <<endif>>\n<<endif>>\n<<endnobr>>