[[stairs]]
<<if $twoStories>>You open the door, seeing a [[set of stairs leading up|upstairs]].<<else>>The door is locked. You put your ear to the door, <<if either(true, false)>>but don't hear anything.<<else if either(true, false)>>and can hear the sound of snoring from inside.<<else>>and can hear the muffled sound of rain falling.<<endif>><<endif>>\n\nYou're in a [[hallway]].
A man with <<print either("light", "tan", "dark")>> skin and <<print either("long", "medium-length")>> black hair is standing in front of the door, wearing <<print either("dirty sneakers", "polished brown leather shoes", "beige sandals", "an old baseball cap")>> and <<print either("khaki slacks", "frayed blue jeans", "a red T-shirt", "a navy blue sweater")>>. He looks at you, says "Everything's locked up tight. Not sure how else I'm gonna get you inside, kiddo."\n\n<<print either(\n\n"He takes a step back from the door and then throws his entire body at it. There is an awful groan from the wood of the door, but it remains in place. He winces in pain, but winds up to try again. With a loud crack he crashes his shoulder into the door and disappears [[inside|garage decay]] as the door flies open.", \n\n"He smashes his fist through the window of the door and reaches inside to unlock the door. His hand is red with blood when he removes it from the window. He opens the door, with a wince, and then disappears [[inside|garage decay]]."\n\n)>><<set $houseClosed to false>><<set $backDoor to "open">>
<<if $numChairs eq "four">>The door is locked, but you can hear the sound of someone typing on a keyboard and occasionally muttering to themselves.<<else>>The door opens, and on the inside is a room with spartan furnishings. A small bed and a table with a few books on it, but little else.<<endif>>\n\nThe [[stairs down|hallway]] are behind you.
Three doors connect to this small, cramped hallway, barely four feet across. The [[door nearest to you|ogre's pit]] is on your left, and is slightly ajar. The [[middle door|bedroom]] is on the right, wide open. The [[door at the end of the hall|the rain room]] is closed. Along the wall is <<$hallPicture>>.\n\nBehind you is the [[living room]].
<<remember $gemsReturned = 0; $familyRoom = false>>You pick up the gems from the <<$basinMaterial>> basin and throw them onto the ground. They land with the sound of a splash against the darkness, and drift gently away.\n\n<<basin>>
Standing at the doorframe you can see <<if $bed eq "twin">>the hulking shape of an ogre, its skin covered in mud and warts. <<if either(true, false)>>It sits hunched at the end of the bed, staring at a book. Its needle-sharp fangs gleam like knives. <<else>>It seems to be practicing the <<if $numChairs eq "four">>trumpet<<else>>guitar<<endif>>.<<endif>>\n\n"Go away," the monster rumbles.<<else>>a misshapen lump under a large bedspread. There is an odd, almost musty smell in the room. The lump rumbles something incoherently and shifts slightly, then settles down again. <<if either(true, false)>>A calico cat is sleeping <<print either("on top of the lump", "at the end of the bed", "on top of one of the pillows")>>.<<endif>><<endif>>\n\nYou're in a [[hallway]].
<<if $gemLocation eq "dehumidifier">>The basement is cold and damp. There are various boxes stacked against the wall, some of them half-open to reveal old toys and holiday decorations.\n\nOff to the distance is a [[dehumidifier]]. Behind you the stairs lead [[back up|kitchen]].<<else>>A set of rickety stairs lead down into pitch black darkness. You are likely to be eaten by a grue. It would be better to return to the [[kitchen]].<<endif>>
The machine makes a gentle whirring sound. Set into the back is a large metal coil, which is coated in ice. Water drips down from the melting ice and into a rectangular bucket positioned below.\n\nInside the bucket you can see a [[blue glint]].
<<if $subtitle>><<print $subtitle>><<set document.title = $subtitle>><<else>><<set document.title to "Shelter">><<endif>>
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:4};var nullobj={handler:function(){}};function showVer(n,notrans){if(!n){return\n}n.innerHTML="";new Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");n.style.display="inline";n.classList.remove("revision-span-out");\nif(!notrans){n.classList.add("revision-span-in");if(n.timeout){clearTimeout(n.timeout)}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");\nn=null},1)}}function hideVer(n,notrans){if(!n){return}n.setAttribute("data-enabled","false");n.classList.remove("revision-span-in");\nif(n.timeout){clearTimeout(n.timeout)}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";n.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]}}}a=b.source.slice(k);for(i=0;\ni<a.length;i++){if(tg=tagfound(i,starttags)){l++}else{if((tg=tagfound(i,desttags))&&l==0){b.nextMatch=k+i+tg.length+4;return[c,tg]\n}else{if(tg=tagfound(i,endtags)){l--;if(l<0){return null}}}}c+=a.charAt(i)}return null}var begintags=[];var endtags=[];function 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);h.setAttribute("data-enabled",false);h.style.display="none";\nh.tweecode="";return 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"])}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype])}else{becomes=["becomes","gains"];c=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)}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch)\n}if(!c){throwError(g,"can't find matching end"+e);return}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),""])}}if(this.flavour=="remove"){vsns.push(["","becomes"])}cn=0;m=insertElement(g,"span",null,e);\nm.setAttribute("data-flavour",this.flavour);h=mkspan("initial");vsn=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)}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove")\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_")}function keySetup(m,g,f){var 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}}}throwError(g,s+" isn't a CSS time unit");\nreturn 0}var tm=cssTimeUnit(f[0]);setTimeout(function timefn(){var done=!revise("revise",m);if(!done){setTimeout(timefn,tm)\n}},tm)}function hoverSetup(m){var fn,noMouseEnter=(document.head.onmouseenter!==null),m1=m.children[0],m2=m.children[1];if(!m1||!m2){return\n}m1.onmouseenter=function(e){if(this.getAttribute("data-enabled")!="false"){revise("revise",this.parentNode)}};m2.onmouseleave=function(e){if(this.getAttribute("data-enabled")!="false"){revise("revert",this.parentNode)\n}};if(noMouseEnter){fn=function(n){return function(e){if(!event.relatedTarget||(event.relatedTarget!=this&&!(this.compareDocumentPosition(event.relatedTarget)&Node.DOCUMENT_POSITION_CONTAINED_BY))){this[n]()\n}}};m1.onmouseover=fn("onmouseenter");m2.onmouseout=fn("onmouseleave")}m=null}function mouseSetup(m){var evt=(document.head.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null}};m=null}function linkSetup(m,g,f){var l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);l.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m)}if(done){this.parentNode.insertBefore(m,this);this.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}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);macros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);\nendtags.push("end"+e.name)});function insideDepartingSpan(elem){var r=elem.parentNode;while(!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 [data-flavour]."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){if(!insideDepartingSpan(rall[i])){ret=revise(rt,rall[i])||ret}}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)}else{break\n}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k}}if(rev){ind-=1}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));\nind2=ind;if(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));var docurr=(rev?showVer:hideVer);\nvar donext=(rev?hideVer:showVer);var currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}};var nextfn=function(){donext(next,notrans);if(rnd){doToGainerSpans(ind2+1,donext,notrans)\n}};if(!rev){currfn();nextfn()}else{nextfn();currfn()}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)))}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"}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);\nreturn}var rall=document.querySelectorAll(".passage [data-flavour]."+rname),cannext,canprev,i,ind,r,fl;for(i=0;i<rall.length;\ni++){r=rall[i],fl=r.getAttribute("data-flavour");if(insideDepartingSpan(r)){continue}if(fl=="cycle"){cannext=canprev=true\n}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true\n}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l)}function toggleText(w){w.classList.toggle(rl+"Enabled");\nw.classList.toggle(rl+"Disabled");w.style.display=((w.style.display=="none")?"inline":"none")}var rl="reviseLink";if(c.length<2){throwError(a,b+" macro needs 2 parameters");\nreturn}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);l.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;\nvar v="";var end=false;var out=false;if(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);c.shift()}switch(c[c.length-1]){case"end":end=true;\nc.pop();break;case"out":out=true;c.pop();break}var h=state.history[0].variables;for(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");if(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);var 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]);n.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}}else{toggleText(t[u]);u=(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;i++){updateLink(lall[i])}};l=null}};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]);if(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(" ","_"))}};macros.endmouserevise=nullobj;\nmacros.endhoverrevise=nullobj}());
The stench of the processed meat and gravy is intermingled with something else, something more crystalline.\n\n[[Sift through the cat food with your hands.]]\n[[Put your face into the pile of pureed meat.]]
!<<StoryTitle>>\n//<<StoryAuthor>>//\n[[about|About]]\n\n[[begin|beginning]]
You follow in pursuit of the silver and gold coins, but have difficult maintaining pace. They either tire, or the adrenaline pushes you on, and you come within an arms reach of a coin. You reach out—missing, but catching a glimpse of the mirror-scaled fish as it banks <<print either("left", "right")>>.\n\nDeeper in the water, you can see that [[familiar blue glimmer|sapphire]] again.
In the middle of a small colony of lakeweed is a fist-sized [[sapphire|gem]].
Along the back of the garage is another door. <<if $backDoor eq "open">>It's [[unlocked|garage]].<<else>>The handle won't budge, though, this door is locked.<<endif>>\n\nYou're in the [[backyard]].
There isn't much in this bedroom except for a <<if $bed eq "twin">>small bed with a [[headboard|matchbox][$bedRoute = "shelf"]] that doubles as a shelf. A grey cat is sleeping <<print either("on the pillow", "at the end of the bed", "on top of a floor vent near the bed")>><<if either(true, false)>>. It meows and begins purring to itself when you walk in the room, but doesn't otherwise move<<endif>><<else>>bright blue bunk bed. Jutting out from below the bed are several [[plastic drawers|matchbox][$bedRoute = "drawer"]]. The top bunk is empty<<if either(true, false)>>, save for a grey cat curled fast asleep<<endif>><<endif>>.\n\n<<nobr>>Along an outside wall is a window looking out into the backyard, where you can see the <<$backTree>> tree. \n<<if either(true, false) or $gemLocation eq "fireplace">>\nThere's a second window next to the bed, \n/%\t%/<<if either(true, false) or $gemLocation eq "fireplace">>/%\t%/which looks into \n/%\t\t%/<<if $familyRoom>>the [[family room]]\n/%\t\t%/<<else>>[[another room|family room]]\n/%\t\t%/<<endif>>. \n/%\t%/<<else>>\n/%\t\t%/but it's sealed shut and boarded up with particle board. \n/%\t%/<<endif>>\n<<endif>>Behind you is the [[hallway]].<<endnobr>>
You reach for it and find that the lump is hard, like a rock. Fuschia sloughs of the lump with another //plop//. Underneath the fuschia is black: [[a piece of onyx|gem]].
The stairs creak loudly as you climb up them, leading you into a large, brightly lit room. This room is empty save for a large table<<if $numChairs eq "three" or $gemLocation eq "catfood">>, on top of which is a paper plate with <<if $gemLocation eq "catfood">>[[cat food]]<<else>>cat food<<endif>> on it. A brownish sauce is bleeding out from the misshapen pile<<endif>>.\n\nThrough the large window to your left you can see out toward the other houses in the neighborhood. On the far side of the room is a [[closed door|office]].\n\nBehind you are the [[stairs down|hallway]].
.revision-span-in {\n\topacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n\ttransition: 1s; -webkit-transition: 1s;\n}\n.revision-span-out {\n\tposition:absolute;\n\topacity: 0;\n}
A large metal door, painted white. A handle juts out from the bottom. <<if $garageDoor eq "open">>The handle twists easily, you could [[get in through this entrance|garage]].<<else>>The handle firmly resists you when you twist it. This door is locked.<<endif>>\n\nYou're in the [[front yard]].
<<if parameter(1) gt 1>>\n<<printArray parameter(0) parameter(1)-1>>\n<<endif>>\n\n<<print "\sn\sn" + parameter(0)[parameter(1)-1]>>
You can't bring yourself to look at the animal while you do so, but you reach into the gaping hole where its left eye once was and get a grip on something hard. The flesh around your hand is dry and cold, even in the bright sun.\n\nPulling your hand out, you see that the object is a small [[amethyst|gem]].
Unlike the other brilliant fungal gems lying all around you, this one is on closer inspection an actual gem. As you near it you can see more clearly that the small hillock is actually the corpse of the man who led you into this place. As you watch, his body is quickly disintegrates as it becomes the food of thousands of fruiting bodies that explode into a beautiful bouquet of gems.\n\nTransfixed, you watch as the innumerable organisms all begin at once to glisten and a sickly sweetness fills your nostrils. Slowly, and then all at once the fruiting bodies all collapse, leaving only the [[ruby|gem]], inches away from the skeletonized remains of the man from earlier. You're not sure whether he was reaching for the gem or attempting to discard it.
<<nobr>>\n<<if $conv eq false>>\n<<set $conv to ["John walks up. \s"Hey Mary, how's it going?\s""]>>\n<<endif>>\n\n<<if $key eq false>>\n<<set $key to 0>>\n<<endif>>\n\n<<if $responses eq false>>\n<<set $responses to []>>\n<<set $responses[0] to ["//\s"Hey!\s"//", "//\s"Fuck off, John.\s"//", "//\s"Oh... hey.\s"//"]>>\n<<set $responses[1] to ["//\s"Do we have to do this right now?\s"//"]>>\n<<endif>>\n\n<<endnobr>><<printArray $conv $conv.length>>\n\n<<$responses>>\n\n<<if $key eq 0>>[[<<$responses[0][0]>>|stretchB][$conv.push($responses[0][0], "\s"Have a good time at the party last night?\s""); $key = 1]]\n[[<<$responses[0][1]>>|stretchB][$conv.push($responses[0][1], "\s"Now, now, is that any way to treat an old friend?\s""); $key = 1]]\n[[<<$responses[0][2]>>|stretchB][$conv.push($responses[0][2], "\s"Still feeling worn out?\s""); $key = 1]]\n<<else if $key eq 1>>\n[[<<$reponses[1][0]>>|stretchB][$conv.push($responses[1][0], "\s"No, I guess not. I'll see you later.\s""); $key = 2]]\n<<else>>END<<endif>>
<<BenRoot $call $response>>\n\n<<if $proceed eq true>>//[[<<print either("Sure. ", "Alright. ", "I'd love to. ") + either("It's not like I'm doing anything else.", "You're not exactly giving me much of a choice in the matter.", "I'm free for a little while.")>>|task]]//\n<<else if $gemsReturned gt 0>><<set $choice1 to "Another treasure hunt?">>//[[<<$choice1>>|BenTalk][$call = $choice1; $response = "Yes, precisely. A gem, the same as before. You know what to look for."; $proceed = true]]//\n<<else>><<set $choice2 to "Yes, that's correct. I'm the " + $role + ".">>//[[<<$choice2>>|BenTalk][$name = $role; $call = $choice2; $response = $named1 + $name + $named2; $proceed = true]]//\n//<<if $role eq "player">><<set $newRole to "reader">><<else>><<set $newRole to "player">><<endif>><<set $choice3 to "You're wrong. I'm the " + $newRole + ", not the " + $role + ".">>[[<<$choice3>>|BenTalk][$name = "player"; $call = $choice3; $response = $named1 + $name + $named2; $proceed = true]]//\n//[[Please, call me...|BenTalk][$name = prompt("My name is...", "Justin Bailey"); $call = "Please, call me " + $name + "."; $response = $named1 + $name + $named2; $proceed = true]]//\n//<<set $choice5 to "Urnitomildmos. I am an ancient demon trapped in unspace.">>[[<<$choice5>>|BenTalk][$name = "Urnitomildmos"; $call = $choice5; $response = $named1 + $name + $named2; $proceed = true]]//<<endif>><<nobr>>\n\n<<set $named1 = "I'll remember that.\s" Those blue eyes seem to light up briefly. \s"Say now, ">>\n<<set $named2 = "... Would you mind helping me with a short task? I've misplaced something that belongs to me, I'd like for you to find it. A gem, you see. Very precious. Finding it won't be anything too difficult, but it's a matter of diligence.">>\n\n<<endnobr>>
//"<<$greeting>>"//\n\n<<nobr>>\nThe <<$benefactor>> <<$benSays>><<if $gemsReturned gt 0>> in a familiar voice<<endif>>, \n\n<<if $gemsReturned gte $gemLocs.length>>\n"Hello, <<$name>>. It's been quite some time since I saw you last. Did you want to play another game with me? My collection of gems is complete, but if you'd like I can hide one for you to find."\n\n<<else if $gemsReturned gt 0>>\n"Hello again, <<$name>>. <<print either("I have another task for you", "Another request for you", "There's more work to be done")>>, if <<print either("you'd like", "you're ready", "you're willing")>>."\n\n<<else>>\n"Hello. You must be the <<$role>>. Or... am I mistaken? Who are you?"\n\n<<endif>><<endnobr>><<extend parameter(0) "player">><<extend parameter(1)>><<$stretch>>
<<if $bedRoute eq "shelf">>All along the shelf in a neat grid are <<print either("dozens", "scores", "hundreds")>> of miniature cars.<<else>>The drawers are filled with junk, mostly, but one of them is filled with old miniature cars.<<endif>><<if $gemLocation eq "matchbox">> One of the cars catches your attention. It's a small <<print either("ambulance", "police car", "firetruck")>>, complete with lights on the top that come to life when you [[press the wheels]].<<else>>\n\nYou're in a [[bedroom]].<<endif>>
!July 25, 2014\n//6745 words, 78 passages, 108 links.//\nWhich gem is hidden is no longer chosen randomly until after the player has found every gem at least once. Returning players may wish to restart the game by emptying the basin in the beginning.\n\n!June 29, 2014\n//3932 words, 57 passages, 72 links.//\n\n[[back|previous()]]
<<nobr>><<if $frontTree eq "a huge pine">>The huge evergreen looms overhead, casting dancing shadows all over the yard and the street.<<print either(" A cardinal is perched in the boughs above you.", "")>>\n<<else if $frontTree eq "an old oak">>A gnarled oak spans most of the front lawn.<<print either(" You can see a brown squirrel in the tree above.", "">>\n<<else if $frontTree eq "a young white birch">>Several thin birch saplings are in the front yard, supported by wooden stakes set into the ground.<<print either(" Ants are lazily crawling around the surface of the trunk.", "">>\n<<else if $frontTree eq "a tall fir">>The thin fir tree here seems slightly out of place.<<print either(" A titmouse is foraging among the bark of the tree.", "")>>\n<<else if $frontTree eq "a reeking gingko">>The ginkgo tree is in fruiting, and the stench of vomit is incredibly strong.<<print either(" Flies are buzzing happily around the tree.", "")>>\n<<else>>\n<<endif>><<endnobr>>\n\nYou're in the [[front yard]].
The garage only has several shelves, all filled with various garden tools, boxes, holiday decorations, and so on. There's space for a car, but it isn't here. <<if $gemLocation eq "fungus">>A [[ruby|gem]] is lying on the ground. <<endif>>A door leads back out to the [[backyard]], and another leads <<if $familyRoom>>[[inside|family room]]<<else>>[[inside|kitchen]]<<endif>>.
The thing is deeply set into the trunk of the tree, and at such an angle that you're not sure how it got into the trunk in the first place. It takes you a long time to loose it from its bindings, but when you finally do you notice that it's a [[piece of topaz|gem]].
Standing on the porch, you see a heavy wooden door, painted <<print $frontDoorColor>>. <<if $garageDoor eq "open">>You turn the handle and the door [[opens easily|living room]].<<else>>The handle won't budge, though, this door is locked.<<endif>>\n\nYou're in the [[front yard]].
The <<$basinMaterial>> basin is brightly lit, though you aren't certain what source is lighting it. <<display gems in basin>> <<if $gemsReturned gt 0>>If you wanted to, you could empty it and [[start over]].<<endif>>\n\n[[The <<$benefactor>> stares at you expectantly.|BenTalk]]
You dig around through the cake of flesh, but don't see anything. You can smell the gem, though. You know it's here. [[And you're so, so hungry...|Put your face into the pile of pureed meat.]]
.transition-out { display:none; }
<<if $familyRoom>><<else>><<remember $familyRoom = true>>You climb through the window and drop several feet onto a couch, finding yourself in a cozy-looking family room.\n\nThe voice of the <<$benefactor>> rings through your head again, "Has this room always... Yes, this should have been here all along. How could I have forgotten?"\n\nThe voice trails off.<<endif>>\n\n<<uglycouch>> Opposite the couch is a [[fireplace]]; a few logs are gently burning inside.\n\nA door leads to the [[garage]] on one side of the room, and another leads to the [[kitchen]].
The meat tastes like a <<print either("chocolate chip cookie", "peanut butter cookie", "snickerdoodle")>> that's been <<print either("baked to perfection", "half-baked", "burnt to a crisp">>. You mindlessly stuff every last glistening crumb into your mouth, though, after which the subtle taste in your mouth begins to shift. You realize that the food is excessively <<print "sweet","buttery", "salty")>> to the point that you begin [[gagging]].
You climb high up into the pine tree. Your hands accrue a thin layer of sap from touching the trunk. The boughs are very sturdy, though, or at least sturdy enough to support your weight.\n\n<<if $backPine eq "tall">>You can see over and above the house, out onto the surrounding neighborhood. A flat expanse of small <<if $twoStories>>two<<else>>one<<endif>>-story houses, most with a car or two in the driveway. You can see all the way to Ford Ave. some distance away, bustling with midday traffic. <<else>>You could've sworn you climbed for a long time, but you can barely see over the top of the house.<<endif>>\n\n<<if $gemLocation eq "pine">>When you make to climb down, you notice something carved into the trunk of the tree. Sets of initials, as well as... there's [[something embedded]] in the trunk, something like amber.<<else>>Eventually, you [[climb down|trees]].<<endif>>
!About the Author\nMatthew R.F. Balousek ([[@mrfb|http://twitter.com/mrfb]]) makes games, bread, interactive fiction, bots, and bad jokes.\n\n!About //Shelter//\n"Shelter" is a hypertext fiction story about memory and/or gems. It was written in the summer of 2014.\n\n[[back|previous()]]
The carpet in the living room is a neutral white color. <<if $familyRoom>>Along one wall is a eggshell-colored leather couch.<<else>><<uglycouch>><<endif>> A dusty television sits atop a stand opposite the couch, showing <<if either(true, true, false)>><<print either("a nature documentary", "a gaudy science fiction drama", "a news report")>> at a low volume<<else>>white noise<<endif>>. \n\n<<nobr>>\nThrough the window you can see hedges and \n\n<<if $frontTree eq "a huge pine">>the big pine tree beyond. <<if either(true, false, false)>>A pinecone happens to drop as you watch. <<endif>>\n<<else if $frontTree eq "an old oak">>the ancient oak tree, shadowing most of the front yard. \n<<else if $frontTree eq "a young white birch">>the skinny bone-white birch trees lining the street, some propped up by wooden scaffolding. \n<<else if $frontTree eq "a tall fir">>the tall fir tree. On this side you can see a red bauble hung up high in the tree. \n<<else if $frontTree eq "a reeking gingko">>the awful-smelling ginkgo tree, though thankfully you can't smell it from inside the house. \n<<else>>the street beyond. Across the street there's an old woman sitting in a rocking chair. <<endif>>\n\n<<if either(true, false, false)>><<print either("A crow is", "A blue jay is", "A female cardinal is", "A male cardinal is", "Two chipmunks are", "A junco is", "A titmouse is", "Three starlings are")>> lands on the hedges, <<if either(true, false)>>resting and surveying the area around it.<<else>>resting for a moment before flying off again.<<endif>><<endif>>\n\n<<endnobr>>\n\nA [[hallway]] continues in one direction, and the [[kitchen]] is through an arch. Behind you the front door leads [[outside|front yard]].
Bowls of food and water sit nearby, half-<<print either("full", "empty")>>.\n\nThe dog's [[collar]] hangs limply around its neck, but there don't seem to be any signs of decay. It looks peaceful, almost.
jquery:off\nhash:off\nbookmark:off\nmodernizr:off\nundo:off\nobfuscate:off\nexitprompt:off\nblankcss:off\n
<<if parameter(0)>>\n<<if parameter(1) eq "player">><<set $stretch += "//">><<endif>>\n<<set $stretch += "\sn\sn\s"" + parameter(0) + "\s"">>\n<<if parameter(1) eq "player">><<set $stretch += "//">><<endif>>\n<<endif>>
[[About]]\n[[Updates]]<<if $name eq "whaleboatmusket" or $name eq "tbxsmason">>\n[[Debug]]\n[[Writeup]]<<endif>>
Along the wall is an ugly couch covered in zig-zag stripes in varying shades of <<$couchColor>>. <<if $bed eq "twin">>A meandering line has been scribbled on the side of the couch in black marker.<<endif>>
You reach in and fall for miles, but where there was a bucket there is now a small lake in the middle of a flat, snow-covered landscape.\n\nThere is no pain as your body crashes into the surface of the water in a tremendous foamy bedlam. The water is frigid, but magnificently azure.\n\nA torrent of silver and gold coins rains past you, falling into the deeper water at an incredible speed.\n\n[[Surface for air.|the lake]]\n[[Follow the coins downward.|the floor]]
/* Your story will use the CSS in this passage to style the page.\nGive this passage more tags, and it will only affect passages with those tags. */\n\n/* Plain Sugarcane Stylesheet version 1.03 by Richard D. Sharpe, Dec. 30, 2013 */\n\nbody {\n\t/* This affects the entire page. */\n\n\t/* Remove default styles */\n\tcolor: black;\n\tbackground-color: transparent;\n\tmargin: 0;\n}\n\n#sidebar {\n\t/* This affects the Sugarcane sidebar */\n\n\t/* Removes the Sugarcane sidebar */\n\tdisplay: none;\n}\n\n#passages { \n\t/* This is a container for all passages displayed on the page */\n\n\t/* Removes the vertical line to the left of Sugarcane passages */\n\tborder: 0;\n\n\t/* Removes the space left from removing the Sugarcane sidebar */\n\tmargin: 0;\n\n\t/* Creates space between the passage and the top and bottom of the page */\n\tpadding-bottom: 5%;\n\tpadding-left: 0;\n\tpadding-right: 0;\n\tpadding-top: 5%;\n}\n\n.passage {\n\t/* This only affects passages */\n\n\t/* Passage width */\n\twidth: 640px;\n\n\t/* Passage height */\n\theight: auto;\n\n\t/* Centers the passage horizontally */\n\tmargin-left: auto;\n\tmargin-right: auto;\n\n\t/* Padding */\n\tpadding-top:25px;\n\tpadding-bottom:25px;\n\tpadding-right:50px;\n\tpadding-left:50px;\n\n\t/* Text formatting */\n\tfont-style: normal;\n\tfont-variant: normal;\n\tfont-weight: normal;\n\tfont-stretch: normal;\n\tfont-size: medium;\n\tline-height: normal;\n\tfont-family: sans-serif;\n\n\t/* Sets a border around the passage */\n\tborder-style: solid;\n\tborder-width: 0;\n\n\t/* Sets the passage background color */\n\tbackground: transparent;\n}\n\n.passage a {\n\t/* This affects passage links */\n\n\tcolor: #4169E1;\t\n}\n\n.passage a:hover {\n\t/* This affects links while the cursor is over them */\n\n\tcolor: #6495ED;\n}
<<if !$fruit>><<set $fruit = "an apple">><<endif>>On the table is [[<<$fruit>>|change fruit]]. It looks <<if $fruit eq "a grapefruit" or $fruit eq "an apricot">>disgusting<<else>>delicious<<endif>>.
There is a lump in your throat, and you're finding it difficult to control your body as you begin coughing and sputtering violently.\n\nDrool, bits of cat food, and droplets of blood dribble forth from your mouth onto the table in front of you. <<print either("You hold on to the edge of the table for support and comfort as your vision blurs and fades in and out.", "Tears blur your vision.", "Your legs feel weak under the weight of everything, and it feels like every muscle in your body is quivering in unanimous disgust.")>>\n\nYou feel calm for a moment, sure that the spell has passed, but then another wave of nausea pulls you under. A large volume of a thick gelatinous substance wells up from inside you and onto the table. The color that comes is a brilliant fuschia: you half-drunkenly paint broad strokes of it across most of the table.\n\nThere is silence, except for the sound of an occasional soft //plop// as the fuschia drips down from the table to the floor. The rancid reek of everything begins to fade, though you're uncertain if it's actually abating or if your senses have just numbed themselves to the sheer intensity of the scene.\n\nThere is a [[lump of fuschia]] on the table.
The lowest boughs of the pine have been trimmed, but it seems almost [[climbable|climb pine]].\n\nThe [[<<print $backTree>> tree|x fruittree]] is fruiting.\n\nBehind you is the [[backyard]].
Several [[<<print $backTree>>s|x fruit]] lie strewn around the base of the tree, most half-eaten by <<print either("worms", "flies", "mice")>> or <<print either("rabbits", "raccoons", "beetles")>>.\n\nYou're in the [[backyard]].
<<if $gemLocation eq "fireplace">>Tongues of flame lick at the logs, coating them in that peculiar black saliva and drooling ash onto the base of the stone cavity.\n\nA [[sparkle|fear is the mindkiller]] in the licking flames catches your eye.<<else>>The gentle heat from the fire is comforting. You warm your hands for a long moment.<<endif>>\n\nYou're standing in the [[family room]].
You follow the man into the garage. Where you might expect to find tools and boxes, though, there are instead countless numbers of large mushrooms, in a dazzling array of colors. Hundreds of fist-sized topazes have embedded themselves all across the far wall, and the floor all around you is studded with miniscule sapphires.<<if $gemLocation eq "fungus">>Just a few feet away, however, there is a small hill topped in a single [[ruby]].<<else>>\n\nYou can see a [[door leading further into the house|kitchen]].<<endif>>
Is that <<$fruit>>? Wait... Yes, you're actually quite sure it's <<cycle test>><<set $fruit = either("a banana", "a grapefruit", "a pear", "an apricot")>><<$fruit>><<endcycle>>.\n\n<<revise test "Or is it something else?">>\n\n[[Go back|switchTest]]
You peer inside and can see a small, hard object glinting inside. You might be able to get it if you [[reach inside]].
You try a few of the grapes--they're very delicious.<<if either(true, false)>> You notice a few small red bugs crawling around on the grapes.<<endif>>\n\nYou're standing in the [[kitchen]].
Shelter
<<back>>\n\n__''TRAILHEADS''__\n(these hit the initialization passages and will re-roll random variables)\n[[beginning]] | [[gulley]] | ==gallimere | natoma | longview | prehistory | miravista==\n\n__''VARIABLES: GENERAL''__\n<<<\ngems returned: <<print $gemsReturned>><<remember $gemsReturned>> | [[=0|Debug][$gemsReturned = 0]] | [[+1|Debug][$gemsReturned = $gemsReturned + 1]] | [[=7|Debug][$gemsReturned = 7]]\nname: <<print $name>> | [[change name|Debug][$name = prompt("New name?")]]\ncurrent location: <<print $subtitle>>\n<<<\n__''VARIABLES: INTRO''__\n<<<\nshelter: <<$shelter>> \nshelter description: <<$shortDescription>>\nbasin: <<$basinMaterial>> \nbenefactor: <<$benefactor>> \n<<<\n__''VARIABLES: GULLEY''__\n<<<\ngemLoc: <<$gemLocation>>\nfrontDoor: <<$frontDoor>>\ngarageDoor: <<$garageDoor>>\nbackDoor: <<$backDoor>>\nhouseClosed: <<$houseClosed>>\n\nfrontDoorColor: <<$frontDoorColor>>\nfrontTree: <<$frontTree>>\n\nfamilyRoom: <<$familyRoom>> | [[toggle|Debug][$familyRoom = !$familyRoom]]\n\nbackTree: <<$backTree>>\nfence: <<$fence>>\npathMaterial: <<$pathMaterial>>\nvine: <<$vine>>\nbush: <<$bush>>\n\nbed: <<$bed>>\ncouchColor: <<$couchColor>>\ntileColor: <<$tileColor>>\nnumChairs: <<$numChairs>>\nkitchenAnimal: <<$kitchenAnimal>>\nbasement: <<$basement>>\n<<<\n<<back>>
You find yourself in a small yard, bordered by a <<print $fence>> fence. All along the fence are <<$bush>> bushes that give off a lovely smell. A trellis<<if $vine eq "alive">>, covered in bright green vines,<<elseif $vine eq "fruiting">>, covered in vines and burdened with countless dark-violet grapes,<<else>>, covered in the skeletal remains of what might have been a vine,<<endif>> casts shade on a flat cement slab. <<if $gemLocation eq "shadow" and $houseClosed eq false>>[[A dog is lying on the cement slab|shadow]]. <<endif>>Further back in the yard you can see two <<if $houseClosed>>trees<<else>>[[trees]]<<endif>>: one <<print $backTree>> and the other pine.\n\nTo your left is a <<if $houseClosed>>side door<<else>>[[side door]]<<endif>>, heading into the garage. The <<$pathMaterial>> path leads to the <<if $houseClosed>>front yard<<else>>[[front yard]]<<endif>>. <<if $houseClosed>><<display open sesame>><<endif>>
Approaching the dog, it becomes apparent that [[it isn't breathing]].\n\nDo you want to be here? You can [[turn away|backyard]].
You're nowhere, standing in an ocean of inky black [[void|The Void]].
The tag on the collar reads "Shadow".\n\nThis close to the body you notice that the eyes are missing. Out from [[the empty socket]] crawls a wasp, which flies off. It's shortly followed by another two.\n\nYou feel a queasy feeling in your stomach, but you're not sure that it's from the dead dog.\n\nBehind you is the [[backyard]].
In your ear you can hear that voice again.\n\n"Ah, that's it. Excellent!"<<remember $gemsReturned += 1>>\n\nThe blue-eyed <<print $benefactor>> reappears and eagerly takes the item from you before you realize you even offered it. The gem glints for a moment in the light before disappearing from sight.\n\n<<if $gemsReturned gte $gemLocs.length>>"My collection is complete," <<$benSays>> the <<$benefactor>>, "and I have you to thank for that. This has been most helpful. Is there anything I can do for you?"\n\n//[[I just want to know... who are you?|EndTalk][$conv = ""]]//\n//[[Nothing at the moment, thanks.|task completed]]//<<else>>"This will do very nicely, <<print $name>>. You have my sincere thanks for the favor you've done me. This is all I need for now, but perhaps if you return later I'll have another task for you. You'll [[think about it|task completed]], I hope."<<endif>>
Garish <<print $tileColor>> linoleum lines the floor, complete with a faux wood wall treatment. There is a small table with <<print $numChairs>> chairs crowded around it. <<if $food eq "ramen">> A cup of ramen is sitting on the table, a fork placed on top of it. The label says "<<$ramen>>". <<endif>>A rotary phone the color of a latte hangs from the wall.\n\nAdorning the wall is a framed poem with an illustration of a <<print $kitchenAnimal>>.<<if $vine eq "fruiting">> A bowl of ripe [[grapes]] lies on the counter, next to a vase of fresh-cut <<if $bush eq "pink rose">>roses<<else>>peonies<<endif>> from the garden<<if either(true, false)>>. You watch as an ant crawls along the head of the peony bloom and then disappears from view.<<endif>>.<<endif>><<if $food eq "ice cream">> A carton of ice cream is on the counter, perspiring slightly. A used ice cream scoop lies next to it, dripping onto the counter.<<endif>>\n\nOn the <<$stove>> stove is a small saucepan full of <<$backTree>>s, simmering quietly on a low heat. It smells like <<if $backTree eq "pomegranate">>lemon<<else>>cinnamon<<endif>> and sugar have been added to the mixture. The light inside the oven is on as well, <<if $food eq "casserole">>it looks like some sort of casserole is cooking. Bubbling cheese covered in breadcrumbs crowns the oval ramekin.<<else if $food eq "salmon">>it looks like there's a paper bag baking inside. The odor from the oven is lemon, butter, and dill.<<else>>but there are only various pots and cookie sheets inside.<<endif>>\n\nA door leads out into the <<if $familyRoom>>[[family room]]<<else>>[[garage]]<<endif>>, and through an arch you can see the [[living room]].<<if $basement or $gemLocation eq "dehumidifier">> A third door leads into [[the basement]].<<endif>>
<<remember $name>>You blink, and the <<print $benefactor>> is gone.\n\nIn front of you is <<print "[[" + $shortDescription + "|" + $shelter + "]]">>.\n\nYour gem senses tingle. There is a gem in this place.
<<if parameter(0) eq 1>>one\n<<else if parameter(0) eq 2>>two\n<<else if parameter(0) eq 3>>three\n<<else if parameter(0) eq 4>>four\n<<else if parameter(0) eq 5>>five\n<<else if parameter(0) eq 6>>six\n<<else if parameter(0) eq 7>>seven\n<<else if parameter(0) eq 8>>eight\n<<else if parameter(0) eq 9>>nine\n<<else if parameter(0) eq 10>>ten\n<<else>>countless\n<<endif>>
Places and descriptions are paired index-wise:\n\n$places is complete pool\n\t...is it possible to manage this using StoryIncludes?\n\nrem: scope got out of hand here, but there were plans for five or more areas. decided to trim it back and polish the first completed one instead.\n\n<<set $places to [\t\t"gulley"]>>\n<<set $unfinishedPlaces to [\n\t\t\t\t\t\t"longview", \n\t\t\t\t\t\t"natoma", \n\t\t\t\t\t\t"gallimere", \n\t\t\t\t\t\t"prehistory"]>>\n\n<<set $descriptions to [\t"a house"]>>\n<<set $unfDesc to [\n\t\t\t\t\t\t"a house", \n\t\t\t\t\t\t"an apartment building", \n\t\t\t\t\t\t"a quaint cottage", \n\t\t\t\t\t\t"a forest path"]>>\n\n<<set $role to either("player", "reader")>>\n<<set $subtitle to "">>\n\n<<set $shelter to either($places)>>\n<<set $shortDescription to $descriptions[$places.indexOf($shelter)]>>\n\n<<set $benefactor to either("cherub", "newt", "cat", "fish", "sparrow", "goblin")>>\n\n<<if $benefactor eq "cat">>\n\t<<set $benSays to "meows">>\n<<else if $benefactor eq "sparrow">>\n\t<<set $benSays to "chirps">>\n<<else if $benefactor eq "cherub">>\n\t<<set $benSays to "sings">>\n<<else if $benefactor eq "newt">>\n\t<<set $benSays to "groans">>\n<<else if $benefactor eq "fish">>\n\t<<set $benSays to "gurgles">>\n<<else if $benefactor eq "goblin">>\n\t<<set $benSays to "grunts">>\n<<else>>\n\t<<set $benSays to "says">>\n<<endif>>\n\n<<set $basinMaterial to either("marble", "porcelain", "ivory", "oak", "iron")>>\n\n<<set $stretch = ""; $proceed = false; $call = false; $response = false>>\n\nuse either() to assign content to nodes in the structure\n\tremove selected area from array between assignments\n\nbut as to how to generate structure randomly for later projects? this might be more complicated. might need to break into JS macros.\n
<<set $subtitle to "Void">>You turn, for no particular reason, and find a large <<$basinMaterial>> <<if $greeting>>basin<<else>>[[basin]]<<endif>> set on a pedestal.\n\n<<nobr>>From behind the basin \n<<if $benefactor eq "fish">>swims<<else>>walks<<endif>> \na small <<print $benefactor>>. Its piercing blue eyes are almost luminous. It \n<<if $benefactor eq "cat">>\npurrs quietly while swishing its long <<print either("black", "white", "orange", "grey", "gray")>> tail gently around\n<<else if $benefactor eq "sparrow">>\nchirps <<print either("loudly", "quietly")>> while darting its head around\n<<else if $benefactor eq "cherub">>\nholds a <<print either("silver", "gold", "leather", "platinum")>> quiver of arrows on its back\n<<else if $benefactor eq "newt">>\nlicks its eye with a flash of its <<print either("pink", "blue", "yellow")>> tongue\n<<else if $benefactor eq "fish">>\nfloats three feet above the nothingness where the ground would normally be\n<<else if $benefactor eq "goblin">>\nbegins to sharpen <<print either("an iron", "a steel", "a gold", "a silver", "a glowing crystal")>><<if either(true, false, false, false, false, false, false, false)>> sacrificial<<endif>> dagger with a whetstone while <<print either("glaring", "grinning")>> at you<<else>>@@ERROR: Please check the value of $benefactor in the debug menu.@@<<endif>>.<<endnobr>>\n\n<<set $greeting to either("Hello", "Hi", "Hey")>><<if $gemsReturned gt 0>><<set $greeting += ".">><<else>><<set $greeting += "?">><<endif>>//[[<<$greeting>>|BenTalk]]//
<<if $gemsReturned eq 1>>\nThere is a single chunk of topaz lying inside the basin.\n<<else if $gemsReturned eq 2>>\nA piece of topaz lies in the basin, next to a piece of opal.\n<<else if $gemsReturned eq 3>>\nA topaz, an opal, and an amethyst are in the basin.\n<<else if $gemsReturned eq 4>>\nInside the basin are a piece of topaz, a round opal, an amethyst, and a ruby.\n<<else if $gemsReturned eq 5>>\nThe basin has five gems inside: a topaz, an opal, an amethyst, a ruby, and a diamond.\n<<else if $gemsReturned eq 6>>\nSix gems are inside. A topaz, an opal, an amethyst, a ruby, a diamond, and a piece of onyx.\n<<else if $gemsReturned gte 7>>\nA topaz, an opal, an amethyst, a ruby, a diamond, a piece of onyx, and a sapphire are inside the basin.\n<<else>>\nThe basin is empty, but seemingly yearns to be filled.\n<<endif>>
[[cottage]]
<<if $frontTree eq "none">>The front yard is barren save for grass. Near the driveway is a two-meter high lamp.<<else>>There's [[<<$frontTree>>|x tree]], <<print either("lazily swaying in a gentle wind", "rustling in a brisk wind", "standing motionless in an eerie moment of dead wind")>>.<<endif>>
<<nobr>><<set $subtitle to (Math.max(7 - $gemsReturned, 0) * random(-20, 20) + 918) + " N. Gulley">>\n\n/% General %/\n\n<<set $gemLocs to ["pine", "matchbox", "shadow", "fungus", "fireplace", "catfood", "dehumidifier"]>>\n<<set $gemNames to ["topaz", "opal", "amethyst", "ruby", "diamond", "onyx", "sapphire"]>>\n\n<<if $gemsReturned gte $gemLocs.length>>\n<<set $gemLocation to either($gemLocs)>>\n<<else>>\n<<set $gemLocation to $gemLocs[$gemsReturned]>>\n<<endif>>\n\n/% House Structure %/\n<<set $frontDoor to either("unlocked", "open", "locked")>>\n<<set $garageDoor to either("open", "closed")>>\n<<set $backDoor to either("open", "closed")>>\n<<set $houseClosed to $frontDoor eq "locked" and $garageDoor eq "closed" and $backDoor eq "closed">>\n<<set $twoStories to either(true, false, false, false) or $gemLocation eq "catfood">>\n\n/% Frontyard %/\n<<set $frontDoorColor to either("green", "blue", "red", "white", "black")>>\n<<set $trees to ["a huge pine", "an old oak", "a young white birch", "a tall fir", "a reeking gingko", "none"]>>\n<<set $frontTree to either($trees)>>\n\n/% Backyard %/\n<<set $fruitTrees to ["pear", "pomegranate", "apple"]>>\n<<set $backTree to either($fruitTrees)>>\n<<set $fence to either("chainlink", "wooden", "white picket")>>\n<<set $pathMaterial to either("cement", "dirt", "cobblestone", "brick")>>\n<<set $vine to either("dead", "alive", "fruiting")>>\n<<set $bush to either("white peony", "pink rose", "pink peony")>>\n\n/% Inside %/\n<<set $bed to either("bunk", "twin")>>\n<<set $couchColor to either("brown", "grey", "blue", "green")>>\n<<set $tileColor to either("green", "yellow", "olive", "pink")>>\n<<set $numChairs to either("three", "four")>>\n<<set $kitchenAnimal to either("chicken", "duck", "cow", "horse")>>\n<<set $hallPicture to either("a black-and-white portrait of John F. Kennedy", "a color painting of Jesus", "a color print of a girl on a swing in a forest", "an abstract painting. It evokes warmth and imagery of a calm, sunny meadow", "a large photograph of a man standing in the ocean, with a mall escalator blended into the background behind him")>>\n<<set $backPine to either("tall", "short", "short")>>\n<<set $food to either("casserole", "ice cream", "salmon", "ramen", "none")>>\n<<set $ramen to either("Chicken", "Beef", "Creamy Alfredo", "Shrimp")>>\n<<set $basement to either($numGems gt 6, false, false, false)>>\n<<set $stove to either("gas", "electric")>>\n\n<<endnobr>><<display front yard>>
//"I just want to know... who are you?"//\n\nThe <<$benefactor>> looks surprised, if that's possible. "I'm nobody. I made this place, that's all."<<$conv>>\n\n//<<choice [[How do I leave this place?|EndTalk][$conv += "\sn\sn//\s"How do I leave this place?\s"//\sn\snThe blue eyes stare back blankly. \s"You're only here for as long as you wish to be here, unlike me. The way out is to step back outside the magic circle.\s""; $howLeave = true]]>>//\n<<if visited() eq 2>>//[[Why can't you leave?|EndTalk][$conv += "\sn\sn//\s"Why can't you leave?\s"//\sn\sn\s"I'm under a sort of house arrest, you see. Trapped within my own half-remembered construct. But I'm beginning to reclaim some of memories.\s""; $whyHere = true]]//\n<<else if visited() gt 2>>//@@.disabled;Why can't you leave?@@//\n<<endif>>//[[I don't have anything else to ask.|task completed]]//
You pick up a <<$backTree>> and hold it in your hand and feel the weight of it and the coolness of its skin against yours.\n\n"Something seems wrong," the familiar voice of the <<$benefactor>> rings in your ear, "Did this tree really grow <<$backTree>>s?"\n\nYou close your eyes for a moment to concentrate. You let your mind wander and focus on <<print either(\n"the ground pushing comfortingly back against your weight.", \n"the sweet smell of the " + $bush + " bushes not far off.",\n"the smell of fresh pine needles filling your nostrils.", \n"the coolness of the fruit in your hand, and the " + either("warmth", "searing heat") + " of the sun on your face.")>>\n\n<<set $backTree to either($fruitTrees)>>The voice continues, "No, I'm certain that this tree has always grown <<$backTree>>s."\n\nYour eyes open and in your hand and strewn along the ground are <<$backTree>>s. You put the fruit you were holding back on the ground.\n\nYou're standing in the [[backyard]].
version.extensions.cyclinglinkMacro={major:3,minor:3,revision:0};\nmacros.cyclinglink={handler:function(a,b,c){var rl="cyclingLink";\nfunction toggleText(w){w.classList.remove("cyclingLinkInit");\nw.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none")}switch(c[c.length-1]){case"end":var end=true;\nc.pop();break;case"out":var out=true;c.pop();break}var v="";if(c.length&&c[0][0]=="$"){v=c[0].slice(1);\nc.shift()}var h=state.history[0].variables;if(out&&h[v]===""){return\n}var l=Wikifier.createInternalLink(a,null);l.className="internalLink cyclingLink";\nl.setAttribute("data-cycle",0);for(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,"cyclingLinkInit cyclingLink"+((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]);if(on&&end&&i==c.length-1){l.parentNode.replaceChild(d,l)\n}else{l.appendChild(d)}}l.onclick=function(){var t=this.childNodes;\nvar u=this.getAttribute("data-cycle")-0;var m=t.length;toggleText(t[u]);\nu=(u+1);if(!(out&&u==m)){u%=m;if(v){h[v]=c[u]}}else{h[v]=""}if((end||out)&&u==m-(end?1:0)){if(end){var n=this.removeChild(t[u]);\nn.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}return}toggleText(t[u]);\nthis.setAttribute("data-cycle",u)}}};
<<set $subtitle = "Void">>The <<print $benefactor>> and all of your surroundings melt away into blackness. There is only the void again.\n\n[Your progress is saved. Things will be different the next time you return, should you wish to do so. If you wish to play again now, you can refresh the page or hit the "Restart" link in the menu.]
A small <<if $twoStories>>two<<else>>one<<endif>>-story house is in front of you. <<if $familyRoom>>A small chimney juts out from the top of the house. Smoke is lazily rolling out of it. <<endif>>The <<if $frontDoor eq "open">>front door<<else>>[[front door]]<<endif>><<if $frontDoor eq "open">>—which is hanging [[wide open|living room]]—<<else>> <<endif>>is painted <<print $frontDoorColor>>. <<fronttree>> <<if $houseClosed>> A red car with two doors sits in the driveway.<<endif>>\n\nThere is an [[attached garage]] to the side of the house, and a <<print $pathMaterial>> path to the right of the garage leading into the [[backyard]].
The small toy collapses under the pressure you exert on it, and the miniature speaker that emits ambulance-like beeps fades out with a whine. The pieces fall to the floor.\n\nAmong the pieces is a small chunk of [[opal|gem]].
Matthew R.F. Balousek
You thrust your arm into the burning logs as swiftly as you can, clutching your fist tightly around the gem which had been hidden among the flames.\n\nIn a matter of seconds, your body is drowned in the ice of shock and adrenaline, and as you watch your skin is scoured clean by the tongues of a hundred burnt salamanders, leaving only ash and char.\n\nBits of char begin to flake away, falling from your body like snow and sticking to the ground and carpet. This continues until you cannot see anything except that cold blackness.\n\nYou open your hand, and the pain and fire and ash is all gone. In your hand is a [[brilliantly cut diamond as wide across as your thumb|gem]].
The air is colder than the water, something you hadn't thought possible. In the distance is a beach, which continues into a series of steep inclines leading to higher ground. Thick wads of cottony snow blanket the landscape ahead, and motes of snow swirl around your head as you suck in desperate breaths.\n\nYou feel the cold, but only at a distance.\n\nThe black water surrounding you seems inviting. And [[below|the floor]] are countless treasures.<<if false>> Ahead, [[the beach]] isn't too far away to swim to.<<endif>>
<<back>>\n\n''07/25/2014''\n\nMajor changes from the previous version:\n* ''Dialog''. The exchange between the player and the benefactor has changed slightly to move towards a stretchtext-y interface. It's not totally where I want it to be, but it works for short exchanges.\n* ''More Gems''. Three new gems have been added, for a total of seven.\n* ''Visible Variation''. Instead of the consistency only being decided at the beginning of each runthrough, there are events that are meant to explicitly call into question the accuracy of the situation and change it. The fruit tree in the back of the house, and the family room are both part of this. The family room, once created, will persist until the game is restarted via the basin. In this there's an element of trying to work from fuzzy, inaccurate memories toward more accurate ones, which I really like.\n* ''Static Gem Order''. The hiding locations are now in a fixed order. If the player plays again after all seven gems have been found, a random location is picked.\n* ''Ending''. There is a short dialogue with the benefactor after all seven gems have been found, which is sort of meant to take the place of the about page or artists statement. I think there's a thin line with being hamhanded about intent here.\n\nThings I'm thinking about for future versions:\n* ''Characters''. I would like a few characters that the player can interact with, mostly for atmospheric reasons and to more directly incorporate the people they would abstractly represent. But as this is a rabbit hole of its own I'm saving it for after the class ends. On the other hand, it feels like it might be a different direction, and I wonder if the "eerily empty house" aesthetic has a value on its own.\n* ''Variation''. A couple passages get seen over and over, and I think it's important to make them more variable to keep the player engaged with the text.\n* ''Style''. In places the prose feels robotic ("there is... there is... there's a...") and I think it needs tightening up. I guess it could be argued that the sparse areas serve as a contrast to some of the more florid gem-getting scenes.\n* ''Spectacle''. The scenes where the player gets the gems are some of the ones I enjoy writing most, and are hopefully among the more memorable to read. I think expanding those moments and making them more interesting, fantastical, and interactive might be worthwhile. Or does that distract from the goal of the piece?\n\nI asked my family members to make me maps of the house as they remember it, and there are a number of other things I got wrong in my construction of the twine fascimile. I've tried to incorporate a few of these things, but there's more work to be done there as far as incorporating the reality.\n\nIn this iteration, I feel like the game is more about the process of reclaiming and correcting that initial faulty memory. I'm leaning towards the opinion that this is more interesting and synergistic MDA-wise than the previous memory-delving roguelike spiel.\n\nI'm really happy with the static ordering of the gems, also. I might need to fuss with the order more or adjust things, but I think it's a great way to control dramatic tension as the player progresses while keeping the feeling of randomness. A thing for me to focus on in the future is how I can make the player engage with all the content. I think this might have to do with revising things and making sure they're always discovering something new to propel them onward through each playthrough.\n\n<hr>\n''06/29/2014''\n\nIn this game I wanted to explore the mutable, changing nature of memory. Details in my memories change often, or become conflated with any number of things: a tidbit from a movie, something I heard about, and so on. Mental detritus. Humans don't have the benefit of memory correction algorithms that computers and hard drives do.\n\nI wanted to use randomness to explore those mutations. Different things are decided stochastically on each playthrough, and stay consistent until another playthrough is started. I wanted to create a stable sense of space, albeit one that shifts and changes in subtle ways each time.\n\nUnder the regime of randomness, what details stay the same and which ones change? Over the course of multiple traversals of the game, patterns emerge and details are averaged out, hopefully leaving the player with an impression of the structure lying underneath the mutable details.\n\n<<back>>