I can hear her breathing \n(gasping)\nin the other room\n\nair caught in the back of her throat and forced out through her <b>thick</b>, slacked lips \n\nin a bro\nken\nunnatural rhythm.\n
(function(){version.extensions.replaceMacrosCombined={major:1,minor:0,revision:1};\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"])}console.log(JSON.stringify(vsns));\ncn=0;m=insertElement(g,"span",null,e);m.setAttribute("data-flavour",this.flavour);\nh=mkspan("initial");vsn=vsns.shift();console.log(e+" "+vsn[0]);\nh.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(" ","_");\nshowVer(m.firstChild,true)}function keySetup(m,g,f){var fl=this.flavour,key=f[0];\nm.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 reviseAll(rt,rname){var rall=document.querySelectorAll(".passage ."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){ret=ret||revise(rt,rall[i])}return ret\n}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);\nif(curr){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}}if(next){donext(next,notrans);\nif(rnd){doToGainerSpans(ind2+1,donext,notrans)}}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(fl=="cycle"){cannext=canprev=true}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.endmouserevise=nullobj;macros.endhoverrevise=nullobj\n}());1;
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)}}};
My mother painted her face on so prettily each morning. The soft white powders covering her face. Dark, dark lines alone her eyes. Eyebrows brushed and deepened to match her jet black hair (dyed to hide the grays she desperately hated). Everything was so perfect.\n\nHer clothes ironed. Every strand of her soft brown hair in place, like it took no effort but I knew better.\n\nShe'd spend every morning in front of her mirror, and great antique vanity in a gaudy old wooden frame painted gold and carved roughly with fake ivy. She'd sit on her soft fabric stool and lean over with her palette before her, her browns and golds and ivories.\n\n[[Until that day.|Scene 4]]
Gold powders and ivory creams and <font color="#000000">dark inky lines</font> in blacks and blues and [[deep crimson red|furious]]...\n
The television droned on with voices shocked and pleased and soothingly dramatic as they talked through their problems and my mother nodded her head and savored her nightly glass of dark wine eyes glued to the set as I wandered in freedom around the dark house and found by will and chance or happenstance myself in her bedroom before [[her vanity|her makeup]].
try { \n\nversion.extensions.backMacro={major:1,minor:1,revision:0};\nmacros['back'] = {\n\n handler: function (place, name, params) {\n var labeltouse = this.labeltext;\n var hash = '';\n if (params[0] && params[0] != 'label' && params[0] != 'labeldefault') {\n for (var i = 0; i < state.history.length; i++) {\n if (state.history[i].passage.title == params[0]) {\n hash = state.history[i].hash;\n break;\n }\n }\n } else {\n if(params[0] == 'label' || params[0] == 'labeldefault') {\n if(!params[1]) {\n throwError(place, params[0] + 'keyword needs an additional label parameter');\n return;\n }\n labeltouse = params[1];\n if(params[0] == 'labeldefault') this.labeltext = params[1];\n }\n if (state.history[1]) {\n hash = state.history[1].hash;\n } else {\n throwError(place, 'cannot go back from the first passage read');\n return;\n }\n }\n\n if (hash === '') {\n throwError(place, 'cannot find passage "' + params[0] + '" in history');\n return;\n }\n\n el = document.createElement('a');\n el.className = 'back';\n el.href = hash;\n el.innerHTML = labeltouse;\n place.appendChild(el);\n },\n\n labeltext: '« back'\n\n};\n\n} catch(e) { \n throwError(place,"Macro back supporting labels Error: "+e.message); \n}
I remember being just a little girl, maybe five or six, when I [[snuck]] into my mothers bathroom and started going through [[her makeup]].\n\n
!It Wore My Mother's Face\n!!an interactive horror story \n!!!by Liz England\n\n\n\n\n\nI want to tell you about \n[[my mother|Scene 1]].\n\nDEBUG\n[[Scene 2]]\n[[Scene 3]]\n[[Scene 4]]
\ndark brown\n#1C0700\n\nlight peach skin\nEFD2B2\n\nvarious light or tan browns/skin\nB8703B\nCA9F5A\nE2A972\nE2A972
<<display "Start">>
(function () {\n var bs = String.fromCharCode(92);\n Wikifier.formatters.unshift({\n name: "htmltag",\n match: "<"+bs+"w+(?:(?:"+bs+"s+"+bs+"w+(?:"+bs+"s*="+bs+"s*(?:"+'"'+".*?"+'"'+"|'.*?'|[^'"+'"'+">"+bs+"s]+))?)+"+bs+"s*|"+bs+"s*)"+bs+"/?>",\n tagname: "<("+bs+"w+)",\n voids: ["br", "hr", "area", "img", "input", "embed", "param", "source", "track"],\n handler: function (a) {\n var re, tn, e;\n re = new RegExp(this.tagname).exec(a.matchText);\n tn = re && re[1];\n if(tn) {\n e = document.createElement(a.output.tagName);\n e.innerHTML = a.matchText;\n e = e.firstChild;\n if(this.voids.indexOf(tn.toLowerCase()) == -1) {\n a.subWikify(e, "<" + bs + "/" + bs + "s*" + tn + bs + "s*>");\n }\n a.output.appendChild(e);\n }\n }\n });\n}());
try {\n version.extensions['divboxdemoMacro'] = { \n major:1, minor:0, revision:0 \n };\n macros['divboxdemo'] = {\n handler: function insertElement ( place, type, id, className, text ) {\n new Wikifier( place, '<html><div class="itembox">Hello</div></html>');\n },\n init: function() { },\n };\n} catch(e) {\n throwError(place,"divboxdemo Setup Error: "+e.message); \n}\n\nif(state) (function(){ var it = setInterval(function(){ var fd = $('passages').firstChild; if (fd!=fc) { clearInterval(it); fd.setAttribute("data-tags",tgs); } },0); }());
She was furious when she found me, lipstick smeared across my mouth with clumsy hands, mascara all over my wide shocked eyes and little button-nose.
version.extensions.ifMacros={major:2,minor:0,revision:0};macros["if"]={handler:function(place,macroName,params,parser){\nvar conditions=[],clauses=[],srcOffset=parser.source.indexOf(">>",parser.matchStart)+2,src=parser.source.slice(srcOffset),endPos=-1,currentCond=parser.fullArgs(),currentClause="",t=0,nesting=0;\nfor(var i=0;i<src.length;i++){if(src.substr(i,9)=="<<endif>>"){nesting--;if(nesting<0){endPos=srcOffset+i+9;\nconditions.push(currentCond);clauses.push(currentClause);break;}}if((src.substr(i,6)=="<<else")&&nesting==0){conditions.push(currentCond);\nclauses.push(currentClause);currentClause="";t=src.indexOf(">>",i+6);if(src.substr(i+6,4)==" if "){currentCond=Wikifier.parse(src.slice(i+10,t));\n}else{currentCond="true";}i=t+2;}if(src.substr(i,5)=="<<if "){nesting++;}currentClause+=src.charAt(i);\n}try{if(endPos!=-1){parser.nextMatch=endPos;for(i=0;i<clauses.length;i++){if(eval(conditions.shift())){new Wikifier(place,clauses[i ].trim());\nbreak;}}}else{throwError(place,"can't find matching endif");}}catch(e){throwError(place,"bad condition: "+e.message);\n}}};
version.extensions.timedgotoMacro={major:1,minor:1,revision:0};macros["goto"]=macros["timedgoto"]={timer:null,handler:function(a,b,c,d){\nfunction 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(a,s+" isn't a CSS time unit");\nreturn 0;}var t,d,m,s;t=c[c.length-1];d=d.fullArgs();m=0;if(b!="goto"){d=d.slice(0,d.lastIndexOf(t));\nm=cssTimeUnit(t);}d=eval(Wikifier.parse(d));if(d+""){if(this.timer){clearTimeout(this.timer);\n}s=state.history[0].passage.title;this.timer=setTimeout(function(){if(state.history[0].passage.title==s){state.display(d,a);\n}},m);}}};
It was the first time I knew something was wrong.\n\nI came home to find her there, her lipstick smeared across her lower lip and past the corner of her mouth in a childlike scrawl of a clown.\n\nIt got worse over time.
It Wore My Mother's Face
;(function() {\n\n /*jslint browser: true, onevar: true, undef: true, nomen: false, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */\n\n var smoke = {\n smoketimeout: [],\n init: false,\n zindex: 1000,\n i: 0,\n\n bodyload: function(id) {\n var ff = document.createElement('div');\n ff.setAttribute('id','smoke-out-'+id);\n ff.className = 'smoke-base';\n ff.style.zIndex = smoke.zindex;\n smoke.zindex++;\n document.body.appendChild(ff);\n },\n\n newdialog: function() {\n var newid = new Date().getTime();\n newid = Math.random(1,99) + newid; \n\n if (!smoke.init) { \n smoke.listen(window,"load", function() {\n smoke.bodyload(newid);\n });\n }else{\n smoke.bodyload(newid); \n }\n\n return newid;\n },\n\n forceload: function() {},\n\n build: function (e, f) {\n smoke.i++;\n\n f.stack = smoke.i;\n\n e = e.replace(/\sn/g,'<br />');\n e = e.replace(/\sr/g,'<br />');\n\n var prompt = '',\n ok = 'OK',\n cancel = 'Cancel',\n classname = '',\n buttons = '',\n box;\n\n if (f.type === 'prompt') {\n prompt = \n '<div class="dialog-prompt">'+\n '<input id="dialog-input-'+f.newid+'" type="text" ' + (f.params.value ? 'value="' + f.params.value + '"' : '') + ' />'+\n '</div>';\n }\n\n if (f.params.ok) {\n ok = f.params.ok;\n }\n\n if (f.params.cancel) {\n cancel = f.params.cancel;\n }\n\n if (f.params.classname) {\n classname = f.params.classname;\n }\n\n if (f.type !== 'signal') {\n buttons = '<div class="dialog-buttons">';\n if (f.type === 'alert') {\n buttons +=\n '<button id="alert-ok-'+f.newid+'">'+ok+'</button>';\n }\n else if (f.type === 'quiz') {\n\n if (f.params.button_1) {\n buttons +=\n '<button class="quiz-button" id="'+f.type+'-ok1-'+f.newid+'">'+f.params.button_1+'</button>';\n }\n\n if (f.params.button_2) {\n buttons +=\n '<button class="quiz-button" id="'+f.type+'-ok2-'+f.newid+'">'+f.params.button_2+'</button>';\n }\n\n if (f.params.button_3) {\n buttons +=\n '<button class="quiz-button" id="'+f.type+'-ok3-'+f.newid+'">'+f.params.button_3+'</button>';\n }\n if (f.params.button_cancel) {\n buttons +=\n '<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+f.params.button_cancel+'</button>';\n }\n\n }\n\n else if (f.type === 'prompt' || f.type === 'confirm') {\n if (f.params.reverseButtons) {\n buttons +=\n '<button id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>' +\n '<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>'; \n } else {\n buttons +=\n '<button id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>'+\n '<button id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>';\n }\n }\n buttons += '</div>';\n }\n\n\n box = \n '<div id="smoke-bg-'+f.newid+'" class="smokebg"></div>'+\n '<div class="dialog smoke '+classname+'">'+\n '<div class="dialog-inner">'+\n e+\n prompt+\n buttons+ \n '</div>'+\n '</div>';\n\n if (!smoke.init) { \n smoke.listen(window,"load", function() {\n smoke.finishbuild(e,f,box);\n });\n } else{\n smoke.finishbuild(e,f,box);\n }\n\n },\n\n finishbuild: function(e, f, box) {\n\n var ff = document.getElementById('smoke-out-'+f.newid);\n\n ff.className = 'smoke-base smoke-visible smoke-' + f.type;\n ff.innerHTML = box;\n\n while (ff.innerHTML === "") {\n ff.innerHTML = box;\n }\n\n if (smoke.smoketimeout[f.newid]) {\n clearTimeout(smoke.smoketimeout[f.newid]);\n }\n\n smoke.listen(\n document.getElementById('smoke-bg-'+f.newid),\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n if (f.type === 'prompt' || f.type === 'confirm' || f.type === 'quiz') {\n f.callback(false);\n } else if (f.type === 'alert' && typeof f.callback !== 'undefined') {\n f.callback();\n } \n }\n );\n\n\n switch (f.type) {\n case 'alert': \n smoke.finishbuildAlert(e, f, box);\n break;\n case 'confirm':\n smoke.finishbuildConfirm(e, f, box);\n break;\n case 'quiz':\n smoke.finishbuildQuiz(e, f, box);\n break;\n case 'prompt':\n smoke.finishbuildPrompt(e, f, box);\n break;\n case 'signal':\n smoke.finishbuildSignal(e, f, box);\n break;\n default:\n throw "Unknown type: " + f.type;\n }\n },\n\n finishbuildAlert: function (e, f, box) {\n smoke.listen(\n document.getElementById('alert-ok-'+f.newid),\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n if (typeof f.callback !== 'undefined') {\n f.callback();\n }\n }\n );\n\n document.onkeyup = function (e) {\n if (!e) {\n e = window.event;\n }\n if (e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 27) {\n smoke.destroy(f.type, f.newid);\n if (typeof f.callback !== 'undefined') {\n f.callback();\n } \n }\n }; \n },\n\n finishbuildConfirm: function (e, f, box) {\n smoke.listen(\n document.getElementById('confirm-cancel-' + f.newid),\n "click", \n function () \n {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n );\n\n smoke.listen(\n document.getElementById('confirm-ok-' + f.newid),\n "click", \n function () \n {\n smoke.destroy(f.type, f.newid);\n f.callback(true);\n }\n );\n\n document.onkeyup = function (e) {\n if (!e) {\n e = window.event;\n }\n if (e.keyCode === 13 || e.keyCode === 32) {\n smoke.destroy(f.type, f.newid);\n f.callback(true);\n } else if (e.keyCode === 27) {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n }; \n },\n\n finishbuildQuiz: function (e, f, box) {\n smoke.listen(\n document.getElementById('quiz-cancel-' + f.newid),\n "click", \n function () \n {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n );\n\n\n if (a = document.getElementById('quiz-ok1-'+f.newid))\n smoke.listen(\n a,\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n f.callback(a.innerHTML);\n }\n );\n\n\n if (b = document.getElementById('quiz-ok2-'+f.newid))\n smoke.listen(\n b,\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n f.callback(b.innerHTML);\n }\n );\n\n\n if (c = document.getElementById('quiz-ok3-'+f.newid))\n smoke.listen(\n c,\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n f.callback(c.innerHTML);\n }\n );\n\n document.onkeyup = function (e) {\n if (!e) {\n e = window.event;\n }\n if (e.keyCode === 27) {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n }; \n\n },\n\n finishbuildPrompt: function (e, f, box) {\n var pi = document.getElementById('dialog-input-'+f.newid);\n\n setTimeout(function () {\n pi.focus();\n pi.select();\n }, 100);\n\n smoke.listen(\n document.getElementById('prompt-cancel-'+f.newid),\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n );\n\n smoke.listen(\n document.getElementById('prompt-ok-'+f.newid),\n "click", \n function () {\n smoke.destroy(f.type, f.newid);\n f.callback(pi.value);\n }\n );\n\n document.onkeyup = function (e) {\n if (!e) {\n e = window.event;\n }\n\n if (e.keyCode === 13) {\n smoke.destroy(f.type, f.newid);\n f.callback(pi.value);\n } else if (e.keyCode === 27) {\n smoke.destroy(f.type, f.newid);\n f.callback(false);\n }\n };\n },\n\n finishbuildSignal: function (e, f, box) {\n\n\n document.onkeyup = function (e) {\n if (!e) {\n e = window.event;\n }\n if (e.keyCode === 27) {\n smoke.destroy(f.type, f.newid);\n if (typeof f.callback !== 'undefined') {\n f.callback();\n }\n }\n }; \n\n smoke.smoketimeout[f.newid] = setTimeout(function () {\n smoke.destroy(f.type, f.newid);\n if (typeof f.callback !== 'undefined') {\n f.callback();\n }\n }, f.timeout);\n },\n\n\n destroy: function (type,id) {\n\n var box = document.getElementById('smoke-out-'+id);\n\n if (type !== 'quiz') {\n var okButton = document.getElementById(type+'-ok-'+id);\n }\n\n var cancelButton = document.getElementById(type+'-cancel-'+id);\n box.className = 'smoke-base';\n\n if (okButton) {\n smoke.stoplistening(okButton, "click", function() {});\n document.onkeyup = null;\n }\n\n if (type === 'quiz') {\n var quiz_buttons = document.getElementsByClassName("quiz-button");\n for (var i = 0; i < quiz_buttons.length; i++) {\n smoke.stoplistening(quiz_buttons[i], "click", function() {});\n document.onkeyup = null;\n } \n }\n\n if (cancelButton) {\n smoke.stoplistening(cancelButton, "click", function() {});\n }\n\n smoke.i = 0;\n box.innerHTML = '';\n },\n\n alert: function (e, f, g) {\n if (typeof g !== 'object') {\n g = false;\n }\n\n var id = smoke.newdialog();\n\n smoke.build(e, {\n type: 'alert',\n callback: f,\n params: g,\n newid: id\n });\n },\n\n signal: function (e, f, g) {\n if (typeof g === 'undefined') {\n g = 5000;\n }\n\n var id = smoke.newdialog();\n smoke.build(e, {\n type: 'signal',\n callback: f,\n timeout: g,\n params: false,\n newid: id\n });\n },\n\n confirm: function (e, f, g) {\n if (typeof g !== 'object') {\n g = false;\n }\n\n var id = smoke.newdialog();\n smoke.build(e, {\n type: 'confirm',\n callback: f,\n params: g,\n newid: id\n });\n },\n\n quiz: function (e, f, g) {\n if (typeof g !== 'object') {\n g = false;\n }\n\n var id = smoke.newdialog();\n smoke.build(e, {\n type: 'quiz',\n callback: f,\n params: g,\n newid: id\n });\n },\n\n prompt: function (e, f, g) {\n if (typeof g !== 'object') {\n g = false;\n }\n\n var id = smoke.newdialog();\n return smoke.build(e,{type:'prompt',callback:f,params:g,newid:id});\n },\n\n listen: function (e, f, g) {\n if (e.addEventListener) {\n return e.addEventListener(f, g, false);\n } \n\n if (e.attachEvent) {\n return e.attachEvent('on'+f, g);\n } \n\n return false;\n },\n\n stoplistening: function (e, f, g) { \n if (e.removeEventListener) {\n return e.removeEventListener("click", g, false);\n }\n\n if (e.detachEvent) {\n return e.detachEvent('on'+f, g);\n }\n\n return false;\n }\n };\n\n\n smoke.init = true;\n\n if (typeof module != 'undefined' && module.exports) {\n module.exports = smoke;\n }\n else if (typeof define === 'function' && define.amd) {\n define(smoke);\n }\n else {\n this.smoke = smoke;\n }\n\n})();
@import url(http://fonts.googleapis.com/css?family=Alegreya+Sans);\n\nbody {\n font-family: 'Alegreya Sans', sans-serif;\n text-shadow: 1px 1px 1px #B8703B;\n margin: 0;\n position: absolute;\n height: 100%;\n width: 100%;\n text-align: center;\n font-size: 1.2em;\n color: #E2A972;\n\n //background-image: url("img/skin.jpg");\n background-image: url("img/hair.png");\n background-position: 100% 0%;\n background-repeat: no-repeat;\n\n background-color: #41321B;\n}\n\na.internalLink, a.externalLink, a.back, a.return {\n color: #FF2E00;\n text-shadow: 1px 1px 1px #000;\n}\n\na.internalLink:hover, a.externalLink:hover, a.back:hover, a.return:hover {\n color: #DB3C00;\n}\n\na.cyclingLink {\n //color: #000;\n display:inline-block;\n padding: 10px;\n margin: 3px;\n background-color:rgba(0,0,0,0.4);\n font-size: 1.5em;\n border: 1px solid #000;\n}\n\na.cyclingLink:hover {\n //color: #fff;\n}\n\nblockquote {\n width: 100%;\n color: #EFD2B2;\n padding-left: 0px;\n margin: 0;\n line-height: 0.95em;\n}\n\n\n#passages {\n //background-color:rgba(0,0,0,0.1);\n padding: 50px;\n border-left: 0px;\n\n margin-left: auto;\n margin-right: 1em;\n margin-top: 0;\n margin-bottom: 0;\n\n height: auto;\n width: 75%;\n position: relative;\n bottom: 20px;\n top: 20px;\n //left: 20px;\n //right: 20px;\n}\n\n.passage {\n line-height: 100%;\n}\n\n.passage ul {\n padding-top: 0px;\n}\n\n.passage li {\n display: block;\n text-align: left;\n margin-left: 50px;\n margin-top: 0px;\n}\n\nh1 {\n font-size: 2.0em;\n -webkit-margin-before: 0.2em;\n -webkit-margin-after: 0.2em;\n padding: 0px;\n color: #EFD2B2;\n}\n\nh2 {\n font-size: 1.1em;\n //text-align: center;\n -webkit-margin-before: 0em;\n -webkit-margin-after: 0em;\n padding: 0px;\n}\n\nh3 {\n font-size: 0.9em;\n //font-style: italic;\n font-weight: normal;\n line-height: 1.2em;\n padding: 0px;\n -webkit-margin-before: 0em;\n -webkit-margin-after: 0em;\n}\n\n#sidebar {\n width: 0px;\n height: 0px;\n margin: 0 0 0 0;\n padding: 0 0 0 0;\n display: none;\n}\n\n\n//keep for macro\n.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\nimg.grayscale {\n filter: url("data:image/svg+xml;utf8,<svg xmlns=\s'http://www.w3.org/2000/svg\s'><filter id=\s'grayscale\s'><feColorMatrix type=\s'matrix\s' values=\s'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\s'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */\n filter: gray; /* IE6-9 */\n -webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */\n}\n\n#snapback, #share, #credits {\n visibility: hidden;\n height: 0px;\n}
!!the end\n\nThis is the end of the game\n\n[[Play again from the beginning|Restart]]\n\nIf you liked this game, you might like some of my other horror twine games - Her Pound of Flesh and ISIS.\n\nIf you like horror twine games, I also recommend Horse Master and My Father's Long Long Legs.\n\nIf you like this kind of horror, I also recommend Emily Carroll's halloween comics and Junji Ito's horror manga.\n\nWebsite: lizengland.com\nTwitter: @lizardengland\nEmail: lizengland07@gmail.com\n\nIt Wore My Mother's Face was made for Ludum Dare 28 over the course of 13hrs during a flight between Los Angeles and Istanbul.