I'm gaining on him. Gaining on him.\n\n"[[There|gaining 1]] [[is|frags]] [[no|gaining 3]] [[controller|gaining 4]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I fire. I take him out. Game over.\n\n"That's just it Alex, you don't get it...\n\n"[[There is no controller|winner]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Alex jumps out of his chair, he charges towards me and my controller.\n\nI line up my final shot. He's not even looking at the screen any more.\n\n"How is this POSSIBLE? How could you beat me... with a puny [[GAME CONTROLLER?|the end 2]]"\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I'm back at my desk now. The Shane Warne posters are gone, there's no yogurt in sight. Things haven't changed much. I got my cold green tea on left and my porridge on my right.\n\n[[But in a lonesome corridor in the kotaku office...|one use 2]]\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
The Iron Controller feels dead in my hands. [[Lifeless|remember]]. Heavy. Like it's pulling my hands to the floor.\n\nThis is not [[good|the game starts]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
(function(){version.extensions.replaceMacrosCombined={major:1,minor:1,revision:7};var nullobj={handler:function(){}};function showVer(n,notrans){if(!n){return;}n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");n.style.display="inline";n.classList.remove("revision-span-out");if(!notrans){n.classList.add("revision-span-in");\nif(n.timeout){clearTimeout(n.timeout);}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");n=null;},20);}}function hideVer(n,notrans){if(!n){return;\n}n.setAttribute("data-enabled","false");n.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout);}if(!notrans){n.classList.add("revision-span-out");\nn.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");n.style.display="none";n.innerHTML="";}n=null;\n},1000);}else{n.style.display="none";n.innerHTML="";n=null;}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;function tagfound(i,e,endtag){for(var j=0;\nj<e.length;j++){if(a.indexOf("<<"+e[j]+(endtag?">>":""),i)==i){return e[j];}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++;}else{if((tg=tagfound(i,desttags,true))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg];}else{if(tg=tagfound(i,endtags,true)){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";h.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);if(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);\nc=tagcontents(b,begintags,becomes,endtags,b.nextMatch);}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;b.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""]);}}if(this.flavour=="remove"){vsns.push(["","becomes"]);\n}cn=0;m=insertElement(g,"span",null,e);m.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");return 0;}var tm=cssTimeUnit(f[0]);var s=state.history[0].passage.title;\nsetTimeout(function timefn(){if(state.history[0].passage.title==s){var done=!revise("revise",m);if(!done){setTimeout(timefn,tm);}}},tm);}function hoverSetup(m){var fn,noMouseEnter=(document.head.onmouseenter!==null),m1=m.children[0],m2=m.children[1],gains=m2.className.indexOf("gains")>-1;\nif(!m1||!m2){return;}m1.onmouseenter=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);while(efp&&efp!==this){efp=efp.parentNode;}if(!efp){return;\n}if(this.getAttribute("data-enabled")!="false"){revise("revise",this.parentNode);}};m2.onmouseleave=function(e){var efp=document.elementFromPoint(e.clientX,e.clientY);\nwhile(efp&&efp!==this){efp=efp.parentNode;}if(efp){return;}if(this.getAttribute("data-enabled")!="false"){revise("revert",this.parentNode);}};if(gains){m1.onmouseleave=m2.onmouseleave;\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");if(gains){m1.onmouseout=m2.onmouseout;}}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);}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1;\n}}}[{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);endtags.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;}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;}}}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;if(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);var currfn=function(){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);doToGainerSpans(ind,docurr,notrans);\n}};var nextfn=function(){donext(next,notrans);if(rnd){doToGainerSpans(ind2+1,donext,notrans);}};if(!rev){currfn();nextfn();}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;function 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);return;}var rall=document.querySelectorAll(".passage [data-flavour]."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");if(insideDepartingSpan(r)){continue;}if(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;}}}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;var v="";var end=false;var out=false;\nif(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);c.shift();}switch(c[c.length-1]){case"end":end=true;c.pop();break;case"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));var d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");if(on){h[v]=c[i];l.setAttribute("data-cycle",i);\n}else{d.style.display="none";}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]||t[u]);n.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this);}else{this.parentNode.removeChild(this);\nreturn;}}else{toggleText(t[u]);u=(u+1)%m;if(v){h[v]=c[u];}toggleText(t[u]);this.setAttribute("data-cycle",u);}lall=document.getElementsByClassName(rl+"_"+rname);\nfor(i=0;i<lall.length;i++){updateLink(lall[i]);}};disableLink(l);setTimeout((function(l){return function(){updateLink(l);};}(l)),1);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);if(b!="hoverrevise"&&done){this[evt]=null;\n}};new Wikifier(h,t[0]);if(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname);};}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;}());
Alex stands. Chest out, hair blowing in the breeze. \n\nHow can I beat this man? He's on mouse and keyboard, I'm just using a pathetic controller...\n\nBut a voice. In my head? Or from [[another dimension|no controller]]...\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I can't lose. I can't lose.\n\nI have the Iron Controller.\n\n[[I'm not going to lose|iron controller]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
"There is no controller."\n\n[[A voice|familiar]]. Echoes. Again.\n\n"[[There is no controller|okay]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
His hair is ruffled, his face beet red. He didn't anticipate this. [[How could he?|the end]]\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\nga('create', 'UA-3652178-19', 'auto');\nga('send', 'pageview');
Somehow I did it. My own voice, across the dimensions. My own abilities, here and now. The controller itself... there. [[Always|winner 1]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
"THREE FRAGS LEFT"\n\nGoddamn Quake 3 has an awesome voice guy.\n\nI look at [[Alex|ruffled]]. His face is literally vibrating.\n\nThis is [[the end|the end]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
"[[There|gaining 1]] [[is|gaining 2]] [[no|gaining 3]] [[controller|gaining 4]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I shake the controller mindlessly. Work. Work. Work! \n\nI don't have time for this. \n\nWhy now? [[Alex|intense]] is just about to start the game.\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Now it's time. No excuses. Controller. Mouse and keyboard. It doesn't matter.\n\nOkay it matters a little bit, analogue sticks suck for aiming, but I still have my <i>brain</i>. \n\nI can [[still do this|gaining]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
"TWO FRAGS LEFT"\n\nAlex is screaming... NOOOOOOOOOOOOO\n\n[["ONE FRAG LEFT"|the end 1]]\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Where have I heard that voice... is it me? My own voice...\n\nBut older somehow.\n\nCould I be speaking to myself... from another dimension?\n\nIs this the true power of [[The Iron Controller|okay]]?
Such a powerful device. Too powerful. The ability to bend space, travel through time. To see every play before it happens. To maybe understand DOTA.\n\nIt's fun to think of the possibilities, [[but|one use]]...\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I hold the controller in my hand. It feels different.\n\nIt doesn't feel right.\n\nSomething [[isn't right here|dead]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
In a lonesome corridor in the kotaku office, as dusty and forgotten as my 3DS, is that magical device of legend. [[The one gamepad I never plug in...|finish]]\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I am losing. Badly.\n\nAlex is focused. Dialled in. \nMy shots miss, his don't. Period.\n\nWhat did I expect?\nI'm playing on a goddamn [[CONTROLLER|master race]]...\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Alex sits intense, ready to [[start the game|the game starts]].\n\nA brief moment of eye contact. A smirk.\n\nDoes he know? Is he behind this?\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
"What you are witnessing," Alex says, across the precipice, "is the difference between a controller and the <i>true</i> means of control: the mouse and keyboard."\n\n"Compared to me you're nothing but an ant to be crushed beneath my boot. What's Merv Hughes to Shane Warne..." \n\n[["What's a man... to a god?"|hair]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
The game begins. Quake 3. \n\nAlex Walker's game of choice, but he doesn't know the hours I've put in, the time I've spent over the years. \n\nI can beat him I [[can do this|broken]]...\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
I can do this.\n\n"[[There|frags]] [[is|gaining 2]] [[no|gaining 3]] [[controller|gaining 4]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Yes! Got him again. \n\nIMPRESSIVE\n\n"[[There|gaining 1]] [[is|frags]] [[no|gaining 3]] [[controller|gaining 4]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Before there was a pulse. A reciprocal pulse. Information and energy. A connection. \n\nNow it feels like... a [[regular controller|work dammit]].\n\nThis is bad. [[Very bad|the game starts]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
But the controller. This controller...\n\nIt's functional but... the magic. The Iron Controller's power is gone and I can't...\n\nI just can't move like I used to move. I can't [[play like I used to play|losing]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
It was a one use item I guess. You've played video games, you know how this [[works|one use 1]].\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>
Boom. Headshot.\n\n"[[There|gaining 1]] [[is|gaining 2]] [[no|gaining 3]] [[controller|frags]]."\n<<set ga('send', 'event', 'passage', 'loaded', 'Chapter5 - ' + state.history[0].passage.title); >>