<<set $se = 2>>\n<<display "TTT-board-display">>\n\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the bottom right corner.\n[[Wait|max-move]]
<<set $rand_bulletchamber = Math.round(Math.random() * 6)>><<set $shotsfired = 0>>Alexandra exhales with a strange air of relief as she draws the pistol from its case. You start backwards, just slightly, out of reflex.\n\n"Eugenie's only left one invitation for us, as I'm sure you recall." She spins the cylinder of the revolver harshly with her index finger, and it hums smoothly.\n\n<<if ($winner eq 1)>>"And I believe by the terms of our game, the honor is yours." She reverses the gun in her hands and offers it to you, pearled handle first.\n\n[[Take the gun.|take-gun]]<<endif>><<if ($winner neq 1)>>"Since victory in games belongs to you, my friend, it falls to me to accept this invitation." She shrugs at you, then cranes her slender arm back to place the barrel of the pistol against the roof of her mouth.\n\n[[Watch.|watch-alex-shoot]]\n[[Say something before she fires.|propose-game]]<<endif>>
Your breath mists into the morning air.\n\n"Really? It must have been a while since you've played. Any child knows how to force a draw." She stares at you with a trace of pity before pulling her gaze away into the empty branches around you.\n\n"You met me here, as we agreed. I ask you to play a game. A child's game, to be sure, and one we used to share." The blue-green clarity of her eyes intercepts your line of sight once more.\n\n"If you can't take a trifling game seriously, if you can't think enough to win, to fight it out to a draw... I would at least hope you'd take *me* seriously. I don't need your pity, but I will take the win."\n\nShe turns and stalks into the trees, her tall boots crunching leaves underfoot.\n\n[[Follow her.|follow_alex]]
Your breath mists into the morning air.\n\n"Your choice?" She stares at you incredulously, then looks away, into the empty branches around you.\n\n"You met me here, as we agreed. I ask you to play a game... and certainly, it's a child's game. One we used to share." The blue-green clarity of her eyes intercepts your line of sight once more.\n\n"If you can't take it seriously and try to win, I would at least hope you'd take *me* seriously. I don't need your pity, but I will take the win."\n\nShe turns and stalks into the trees, her tall boots crunching leaves underfoot.\n\n[[Follow her.|follow_alex]]
<<set $drinks = $drinks + 1>>\n<<if $drinks eq 1>>You reach for the flask as Alexandra profers it, a word of gratitude on your lips.\n\nThen she pulls it away, with a laugh like a little bark. "Not so fast! This is valuable stuff. It's yours for only 37 pieces of eight. And if you don't have any pieces of eight, I can sell you 50 for only 769 rubles."\n\nYou stare at her disbelievingly. Rubles?\n\n"All right, all right. It's another joke, and a poor one at that. Whatever's passed between us, you know I could never be so crass. At least not anymore."\n\nShe hands you the flask, and you take a sip. You'd only intended to sample a taste, but the strange, nearly flavorless alcohol slides so quickly down your gullet that you've swallowed a dram before you know it.<<else>>She hands you the flask, and you take a sip. The strange, nearly flavorless alcohol slides so quickly down your gullet that you've swallowed a dram before you know it.\n\nOddly enough, you feel invigorated, but lightheaded, too. Alexandra takes the flask back from you.<<endif>>\n<<set $tiredness = $drinks>>\n[[Go back to digging.|digging]]\n
<<if $nw eq 0>>_<<endif>><<if $nw eq 1>>X<<endif>><<if $nw eq 2>>O<<endif>> <<if $n eq 0>>_<<endif>><<if $n eq 1>>X<<endif>><<if $n eq 2>>O<<endif>> <<if $ne eq 0>>_<<endif>><<if $ne eq 1>>X<<endif>><<if $ne eq 2>>O<<endif>>\n<<if $w eq 0>>_<<endif>><<if $w eq 1>>X<<endif>><<if $w eq 2>>O<<endif>> <<if $center eq 0>>_<<endif>><<if $center eq 1>>X<<endif>><<if $center eq 2>>O<<endif>> <<if $e eq 0>>_<<endif>><<if $e eq 1>>X<<endif>><<if $e eq 2>>O<<endif>>\n<<if $sw eq 0>>_<<endif>><<if $sw eq 1>>X<<endif>><<if $sw eq 2>>O<<endif>> <<if $s eq 0>>_<<endif>><<if $s eq 1>>X<<endif>><<if $s eq 2>>O<<endif>> <<if $se eq 0>>_<<endif>><<if $se eq 1>>X<<endif>><<if $se eq 2>>O<<endif>>
<<set $w = 2>>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the left space. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
<<silently>><<if ($nw eq $n) and ($nw eq $ne)>><<set $winner = $nw>><<endif>>\n<<if ($nw eq $w) and ($nw eq $sw)>><<set $winner = $nw>><<endif>>\n<<if ($sw eq $s) and ($sw eq $se)>><<set $winner = $sw>><<endif>>\n<<if ($se eq $e) and ($se eq $ne)>><<set $winner = $se>><<endif>>\n<<if ($nw eq $center) and ($nw eq $se)>><<set $winner = $nw>><<endif>>\n<<if ($ne eq $center) and ($ne eq $sw)>><<set $winner = $ne>><<endif>>\n<<if ($e eq $center) and ($e eq $w)>><<set $winner = $e>><<endif>>\n<<if ($n eq $center) and ($n eq $s)>><<set $winner = $n>><<endif>><<endsilently>>\n<<if ($winner eq 1)>>Alexandra howls in triumph, looking genuinely happy for a moment before her face falls precipitously. It's as if she's remembered who she is, where she is.\n\nAlex pins you with a discerning gaze. "Noughts and crosses? Was I truly able to win? Or did you let me...?"\n\n[["I... may have gotten a bit sloppy."|admit-nothing]]\n[["Perhaps. It's my choice, how to play."|admit-something]]\n<<endif>><<if ($winner eq 2)>>Alexandra curses. "That wasn't supposed to be possible. I... I'm flawed, not what I was meant to be. I must do penance to my creator. <HTML><A HREF="mailto:naomi@halfrobot.com">Will you tell her for me?</A></html><<endif>>\n<<if ($winner eq 0) and ($nw neq 0) and ($n neq 0) and ($ne neq 0) and ($w neq 0) and ($center neq 0) and ($e neq 0) and ($sw neq 0) and ($s neq 0) and ($sw neq 0)>>Alexandra makes the last move, then looks up at you.\n\n"Ah. It's a draw after all. I suppose I ought to have expected as much. Well, the game's to you, then. Let's be off."\n\nShe strides into the trees, her tall boots crunching leaves underfoot.\n[[Follow her.|follow_alex]]<<else>><<if ($winner eq 0)>>Alex is looking at you expectantly.\nThis business is a bit too serious for the game in front of you.\nBy the same token, however, it's too serious to keep her waiting.\n\n<<if $nw eq 0>>[[(Play O in Top Left)|nw-move]]<<else>>(Top Left is Taken)<<endif>> <<if $n eq 0>>[[(Play O in Top Center)|n-move]]<<else>>(Top Center is Taken)<<endif>> <<if $ne eq 0>>[[(Play O in Top Right)|ne-move]]<<else>>(Top Right is Taken)<<endif>>\n<<if $w eq 0>>[[(Play O in Center Left)|w-move]]<<else>>(Center Left is Taken)<<endif>> <<if $center eq 0>>[[(Play O Dead Center)|center-move]]<<else>>(Center is Taken)<<endif>> <<if $e eq 0>>[[(Play O in Center Right)|e-move]]<<else>>(Center Right is Taken)<<endif>>\n<<if $sw eq 0>>[[(Play O in Bottom Left)|sw-move]]<<else>>(Bottom Left is Taken)<<endif>> <<if $s eq 0>>[[(Play O in Bottom Center)|s-move]]<<else>>(Bottom Center is Taken)<<endif>> <<if $se eq 0>>[[(Play O in Bottom Right)|se-move]]<<else>>(Bottom Right is Taken)<<endif>><<endif>><<endif>>
<<set $e = 2>>\n\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the right space. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
The lid swings up.\n\nThe interior sports a dark, molded velvet that looks as if it might crumble under a touch.\n\n<<revision revolver>><<revise revolver "The revolver">><<becomes>>Eugenie's revolver<<endrevision>> is still there, nestled in its velvet mold. It still looks [[well-oiled.|openbox4]]
You exhale and squeeze the trigger.\n\n<<set $shotsfired = $shotsfired + 1>><<if $rand_bulletchamber eq $shotsfired>>Suddenly, everything is happening very, very slowly. You're frozen, but you can feel an awful burning heat in your mouth.\n\nThough you can't see it, a bullet is peeking shyly out from the barrel of Eugenie's revolver. It spins as it digs its way into the roof of your mouth. It must hurt horribly, but everything's happening too slow for you to understand it as pain.\n\nThe bullet is moving, burrowing up into you, into who you are. It reaches your brain. For an unmeasurable instant you wonder if you should have--\n\nTHE END\n\n<<else>>The hammer clicks on an empty chamber as the cylinder rotates sixty degrees.\n\n[[Squeeze the trigger.|firing-gun]]\n<<revision spincylinder>><<revise spincylinder "Spin the cylinder of the revolver.">><<becomes>>That won't do. Neither of you is actually Russian, after all.<<endrevision>>\n[[Stop and say something instead.|propose-game]]<<endif>>\n
<<silently>>\n<<set $maxmove = "null">><<set $maxwin = 0>><<set $maxblock = 0>><<set $maxcenter = 0>><<set $maxoppcorner = 0>><<set $maxcorner = 0>><<set $maxside = 0>>\n<<display "max-thinks-about-wins">>\n<<display "max-thinks-about-threats">>\n<<display "max-thinks-about-center">>\n<<display "max-thinks-about-oppcorners">>\n<<display "max-thinks-about-corners">>\n<<display "max-thinks-about-sides">>\n<<endsilently>><<if $maxmove eq "nw">><<set $nw = 1>><<endif>><<if $maxmove eq "n">><<set $n = 1>><<endif>><<if $maxmove eq "ne">><<set $ne = 1>><<endif>><<if $maxmove eq "w">><<set $w = 1>><<endif>><<if $maxmove eq "center">><<set $center = 1>><<endif>><<if $maxmove eq "e">><<set $e = 1>><<endif>><<if $maxmove eq "sw">><<set $sw = 1>><<endif>><<if $maxmove eq "s">><<set $s = 1>><<endif>><<if $maxmove eq "se">><<set $se = 1>><<endif>>\n<<if $movetype eq "victory">>"Aha!" Alexandra cries. "I strike, thus."<<endif>><<if $movetype eq "defense">>Alexandra wags a long finger at you. "Not so fast. My eye's too sharp for so bold a thrust."<<endif>><<if $movetype eq "encircle">>Alexandra smiles wolfishly. "Ware your flank, friend. I'm coming around behind."<<endif>><<if $movetype eq "centergrab">>Alexandra nods sagely and slashes an X across the center of her makeshift board.<<endif>><<if $movetype eq "cornergrab">>Alexandra shrugs and marks an X in one of the empty corners.<<endif>><<if $movetype eq "sidegrab">>Alexandra frowns and makes her move.<<endif>>\n\n<<display "TTT-board-display">>\n<<display "TTT-choice-moves">>
<<if $winner eq 1>>You pull the revolver back out of your mouth.<<endif>>\n\n"Wait... wait! Why can't we--" You're stammering, as if words are unfamiliar.\n\n<<if $winner neq 1>>Alexandra glares at you stonily, but takes the revolver from her mouth.<<endif>>\n\nShe looks at you with more than a trace of contempt. "Surely you jest. We've come to the end, it's no time for changes of heart."\n\n<<if $winner eq 1>>Alex moves towards you, staring you down, and for a moment you almost think she'll shove the revolver back into you, tighten her hand on the trigger for you. Then she grabs the gun out of your hand.<<endif>><<if $winner neq 1>>She frowns and looks at her hand, ready to place the barrel of the gun back inside of her.<<endif>>\n\n"<<if $winner eq 1>>Apparently, you can't be entrusted with our invitation.<<endif>> Now, what were you going to say?"\n\n[[Inhale.|find-words]]\n\n
<<silently>>\n<<if ($n eq 0) and ($maxmove eq "null")>><<set $maxmove = "n">><<set $movetype = "sidegrab">><<endif>>\n<<if ($w eq 0) and ($maxmove eq "null")>><<set $maxmove = "w">><<set $movetype = "sidegrab">><<endif>>\n<<if ($s eq 0) and ($maxmove eq "null")>><<set $maxmove = "s">><<set $movetype = "sidegrab">><<endif>>\n<<if ($e eq 0) and ($maxmove eq "null")>><<set $maxmove = "e">><<set $movetype = "sidegrab">><<endif>>\n<<endsilently>>
<<silently>>\n<<if ($sw eq 1) and ($ne eq 0) and ($maxmove eq "null")>><<set $maxmove = "ne">><<set $movetype = "encircle">><<endif>>\n<<if ($se eq 1) and ($nw eq 0) and ($maxmove eq "null")>><<set $maxmove = "nw">><<set $movetype = "encircle">><<endif>>\n<<if ($nw eq 1) and ($se eq 0) and ($maxmove eq "null")>><<set $maxmove = "se">><<set $movetype = "encircle">><<endif>>\n<<if ($ne eq 1) and ($sw eq 0) and ($maxmove eq "null")>><<set $maxmove = "sw">><<set $movetype = "encircle">><<endif>>\n<<endsilently>>
The lid swings up.\n\nThe interior sports a dark, molded velvet that looks as if it might crumble under a touch.\n\nEugenie's revolver is still there, nestled in its velvet mold. It still looks well-oiled.\n\nNext to the revolver, without an inset to house it, lies a [[bleached fingerbone|bone-wonder]] with <<revision ring>><<revise ring "a golden ring">><<becomes>>Eugenie's favorite ring<<endrevision>> on it.
<<silently>><<set $tiredness=0>><<set $dugamount=0>><<set $drinks=0>><<endsilently>>\nYou poke experimentally at the ground with the shovel. It's hard, nearly frozen, but winter's still far enough away that perhaps the cold hasn't deepened into the earth.\n\n[[Keep digging.|digging]]
<<set $dugamount = $dugamount + 1>><<set $tiredness = $tiredness + 1>><<if $dugamount eq 20>>Your shovel hits something with a hard thunk. Alexandra looks up. "Is that it? The box?"\n\n[[Investigate.|picking-up-box]]\n<<else>>\n\n<<if $tiredness eq 1>>You continue to shovel the cold earth, your pulse quickening slightly.<<endif>><<if $tiredness eq 2>>Your breath leaves you in visible huffs as you dig into the earth.<<endif>><<if $tiredness eq 3>>You're getting tired, sweat beading and chilling on your forehead in the cold air. But you keep digging.<<endif>><<if $tiredness eq 4>>You're breathing heavily as you stab the shovel's blade into the hardening soil, the ache of fatigue biting into your muscles.<<endif>><<if $tiredness eq 5>>The fatigue of digging is numbing you, maybe even slowing your pace, making your movements awkward. You keep breaking up and scooping out hard chunks of dirt.<<endif>><<if $tiredness gt 5>>You dig slowly, making progress into the deepening hole. But your muscles ache, and you know you've got to take a break.<<endif>>\n\nThe hole gets a little bit deeper. Alexandra sits nearby, looking pensively at some anonymous, distant patch of forest floor.\n\n<<if $tiredness lt 6>>[[Keep digging.|digging]]<<endif>>\n[[Take a break.|digbreak]]\n<<if ($tiredness gt 4) and ($drinks gt 3)>>[[Quit digging and leave.|quitter]]<<endif>>\n<<endif>>
You halt, and the trees seem to spin and sigh around you for a moment. What is it you hoped to accomplish here?\n\nAlex doesn't slacken her pace or turn to see why you've stopped; she continues to stride into the forest. Soon she'll be lost to sight.\n\n[[Try not to lose her in the trees.|follow_alex]]
<<silently>>\n<<if ($center eq 0) and ($maxmove eq "null")>><<set $maxmove = "center">><<set $movetype = "centergrab">><<endif>>\n<<endsilently>>
[[by Naomi Clark|author-notes]]
<<silently>>\n<<if ($nw eq 2) and ($maxmove eq "null")>>\n<<if ($se eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($ne eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($se eq 2) and ($maxmove eq "null")>>\n<<if ($nw eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($sw eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($w eq 2) and ($maxmove eq "null")>>\n<<if ($e eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($e eq 2) and ($maxmove eq "null")>>\n<<if ($w eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($n eq 2) and ($maxmove eq "null")>>\n<<if ($s eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($s eq 2) and ($maxmove eq "null")>>\n<<if ($n eq 2) and ($center eq 0)>>\n<<set $maxmove = "center">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($se eq 2) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($w eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($n eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($e eq 2) and ($maxmove eq "null")>>\n<<if ($se eq 2) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($n eq 2) and ($maxmove eq "null")>>\n<<if ($nw eq 2) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($nw eq 2) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($e eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($s eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($w eq 2) and ($maxmove eq "null")>>\n<<if ($nw eq 2) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($s eq 2) and ($maxmove eq "null")>>\n<<if ($se eq 2) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($nw eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($w eq 0)>>\n<<set $maxmove = "w">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($e eq 2) and ($w eq 0)>>\n<<set $maxmove = "w">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($nw eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($n eq 0)>>\n<<set $maxmove = "n">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($s eq 2) and ($n eq 0)>>\n<<set $maxmove = "n">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($se eq 2) and ($maxmove eq "null")>>\n<<if ($ne eq 2) and ($e eq 0)>>\n<<set $maxmove = "e">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($w eq 2) and ($e eq 0)>>\n<<set $maxmove = "e">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($se eq 2) and ($maxmove eq "null")>>\n<<if ($sw eq 2) and ($s eq 0)>>\n<<set $maxmove = "s">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<if ($center eq 2) and ($maxmove eq "null")>>\n<<if ($n eq 2) and ($s eq 0)>>\n<<set $maxmove = "s">><<set $movetype = "defense">>\n<<endif>><<endif>>\n<<endsilently>>
The revolver rests comfortably in your palm. Almost as if by instinct, you do what Alexandra's expecting you to, just as you used to with Eugenie. Lifting your thumb towards your nose, you raise your head, let your jaw hang, then place the barrel of the revolver in your mouth.\n\nYou taste oil and gunmetal. The tip of the barrel is cold against your upper palate. Your hand trembles slightly.\n\n[[Squeeze the trigger.|firing-gun]]\n[[Stop and say something instead.|propose-game]]
body {\n font-family:"Times New Roman", Times, serif;\n font-size: 1em;\n}\n.revision-span-in {\n opacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n transition: 1s;\n -webkit-transition: 1s;\n}\n.revision-span-out {\n position:absolute;\n opacity: 0;\n}
(function () {\n version.extensions['revisionMacros'] = {\n major: 1,\n minor: 2,\n revision: 0\n };\n\n function tagcontents(b, starttags, desttags, endtags, k) {\n function tagfound(i, e) {\n for (var j = 0; j < e.length; j++) {\n if (a.indexOf(e[j], i) == i) {\n return e[j];\n }\n }\n }\n var a = b.source.slice(k);\n var l = 0;\n var c = "";\n var tg;\n for (var i = 0; i < a.length; i++) {\n if (tg = tagfound(i, starttags)) {\n l++;\n }\n else if ((tg = tagfound(i, desttags)) && l == 0) {\n b.nextMatch = k + i + tg.length;\n return [c, tg];\n }\n else if (tg = tagfound(i, endtags)) {\n l--;\n if (l < 0) {\n return null;\n }\n }\n c += a.charAt(i);\n }\n return null;\n }\n macros['cycle'] = macros['insertion'] = macros['removal'] = macros['revision'] = macros['span'] = {\n handler: function (g, e, f, b) {\n var begintags = ["<<revision", "<<cycle", "<<insertion", "<<removal", "<<span"];\n var becomes = ["<<becomes>>", "<<gains>>"];\n var endtags = ["<<endrevision>>", "<<endcycle>>", "<<endinsertion>>", "<<endremoval>>", "<<endspan>>"];\n var name = f[0].replace(" ", "_");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var c, vsns, vsn, i, cn, vtype;\n vsns = [];\n c = tagcontents(b, begintags, becomes.concat(endtags), endtags, k);\n if (c && endtags.indexOf(c[1]) == -1) {\n while (c) {\n vsns.push(c);\n c = tagcontents(b, begintags, becomes, endtags, b.nextMatch);\n }\n c = tagcontents(b, begintags, ["<<end" + e + ">>"], endtags, b.nextMatch);\n }\n if (!c) {\n throwError(g, "can't find matching end" + e);\n return;\n }\n vsns.push(c);\n i = 0;\n cn = 0;\n m = insertElement(g, "span", null, e + " " + name);\n if (vsns.length > 0) {\n h = insertElement(m, "span", null, "revision-span initial");\n }\n else {\n h = m;\n }\n if (e == "insertion") {\n h.style.display = "none";\n }\n h.setAttribute("data-enabled", (e != "insertion") + "");\n vsn = vsns.shift();\n h.tweecode = vsn[0];\n while (vsns.length > 0) {\n i += 1;\n vtype = vsn[1].slice(2, -2);\n vsn = vsns.shift();\n h = insertElement(m, "span", null, "revision-span " + vtype);\n h.tweecode = vsn[0];\n h.setAttribute("data-enabled", "false");\n h.style.display = "none";\n }\n h = m.firstChild;\n new Wikifier(h, h.tweecode);\n }\n }\n var de = "data-enabled";\n\n function revise(rt, rname) {\n var rall, r, rc, rcl, ind, ind2, curr, next, ins, rmv, cyc, rev, rnd;\n rev = (rt == "revert");\n rnd = (rt.indexOf("random") > -1);\n var rsp = "revision-span";\n\n function showVer(n) {\n n.innerHTML = "";\n new Wikifier(n, n.tweecode);\n n.setAttribute(de, "true");\n n.style.display = "inline";\n n.classList.remove(rsp + "-out");\n n.classList.add(rsp + "-in");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n n.classList.remove(rsp + "-in");\n }, 1);\n }\n\n function hideVer(n) {\n n.setAttribute(de, "false");\n n.classList.remove(rsp + "-in");\n n.classList.add(rsp + "-out");\n if (n.timeout) clearTimeout(n.timeout);\n n.timeout = setTimeout(function () {\n if (n.getAttribute(de) == "false") {\n n.classList.remove(rsp + "-out");\n n.style.display = "none";\n n.innerHTML = "";\n }\n }, 1000);\n }\n\n function doToGainerSpans(n, fn) {\n for (var k = n - 1; k >= 0; k--) {\n if (rc[k + 1].classList.contains("gains")) {\n fn(rc[k]);\n }\n else break;\n }\n }\n rall = document.getElementsByClassName(rname);\n for (var i = 0; i < rall.length; i++) {\n r = rall[i];\n rc = r.childNodes;\n ins = r.classList.contains("insertion");\n rmv = r.classList.contains("removal");\n cyc = r.classList.contains("cycle");\n rcl = rc.length - 1;\n ind = -1;\n for (var k = 0; k <= rcl; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1) {\n if (ins) {\n ind = -1;\n curr = null;\n }\n else if (rmv) {\n ind = rcl + 1;\n curr = null;\n }\n }\n else {\n if (rev) {\n ind -= 1;\n }\n curr = (ind >= 0 ? rc[ind] : (cyc ? rc[rcl] : null));\n }\n ind2 = ind;\n if (rnd) {\n ind2 = (ind + (Math.floor(Math.random() * rcl))) % rcl;\n }\n next = (ind2 < rcl ? rc[ind2 + 1] : (cyc ? rc[0] : null));\n var docurr = (rev ? showVer : hideVer);\n var donext = (rev ? hideVer : showVer);\n if (curr) {\n if (!(next && next.classList.contains("gains")) || rnd) {\n docurr(curr);\n doToGainerSpans(ind, docurr);\n }\n }\n if (next) {\n donext(next);\n if (rnd) {\n doToGainerSpans(ind2 + 1, donext);\n }\n }\n }\n }\n\n macros['revert'] = macros['revise'] = macros['randomise'] = macros['randomize'] = {\n handler: function (a, b, c) {\n var l, rev, rname;\n\n function disableLink(l) {\n l.style.display = "none";\n }\n\n function enableLink(l) {\n l.style.display = "inline";\n }\n\n function updateLink(l) {\n if (l.className.indexOf("random") > -1) {\n enableLink(l);\n return;\n }\n var rall = document.getElementsByClassName(rname);\n var cannext, canprev;\n for (var i = 0; i < rall.length; i++) {\n var r = rall[i];\n if (r.classList.contains("cycle")) {\n cannext = canprev = true;\n }\n else {\n var rc = r.childNodes;\n var rcl = rc.length;\n var ins = r.classList.contains("insertion");\n var rmv = r.classList.contains("removal");\n var rnd = rname.indexOf("random") > -1;\n var ind = -1;\n for (var k = 0; k < rc.length; k++) {\n if (rc[k].getAttribute(de) == "true") {\n ind = k;\n }\n }\n if (ind == -1 && (ins || rmv)) {\n (ins ? cannext = true : canprev = true);\n }\n if (ind > (ins ? -1 : 0)) {\n canprev = true;\n }\n if (ind > -1 && ind < (rmv ? rcl : rcl - 1)) {\n cannext = true;\n }\n }\n }\n var can = (l.classList.contains("revert") ? canprev : cannext);\n (can ? enableLink : disableLink)(l);\n }\n function toggleText(w) {\n w.classList.toggle(rl + "Enabled");\n w.classList.toggle(rl + "Disabled");\n w.style.display = ((w.style.display == "none") ? "inline" : "none");\n }\n var rl = "reviseLink";\n if (c.length < 2) {\n throwError(a, b + ' macro needs 2 parameters');\n return;\n }\n rname = c.shift().replace(" ", "_");\n l = Wikifier.createInternalLink(a, null);\n l.className = "internalLink " + rl + " " + rl + "_" + rname + " " + b;\n var v = "";\n var end = false;\n var out = false;\n if(c.length>1 && c[0][0] == "$") {\n v = c[0].slice(1);\n c.shift();\n }\n switch(c[c.length - 1]) {\n case "end":\n end = true;\n c.pop();\n break;\n case "out":\n out = true;\n c.pop();\n break;\n }\n var h = state.history[0].variables;\n for(var i = 0; i < c.length; i++) {\n var on = (i == Math.max(c.indexOf(h[v]), 0));\n var d = insertElement(null, "span", null, rl + ((on) ? "En" : "Dis") + "abled");\n if(on) {\n h[v] = c[i];\n l.setAttribute("data-cycle", i);\n } else {\n d.style.display="none";\n }\n insertText(d, c[i]);\n l.appendChild(d);\n }\n l.onclick = function () {\n revise(b, rname);\n var t = this.childNodes;\n var u = this.getAttribute("data-cycle") - 0;\n var m = t.length;\n if((end || out) && u == m - (end ? 2 : 1)) {\n if (end) {\n var n = this.removeChild(t[u + 1]);\n n.className = rl + "End";\n n.style.display = "inline";\n this.parentNode.replaceChild(n, this);\n } else {\n this.parentNode.removeChild(this);\n return;\n }\n } else {\n toggleText(t[u]);\n u = (u + 1) % m;\n if(v) {\n h[v] = c[u];\n }\n toggleText(t[u]);\n this.setAttribute("data-cycle", u);\n }\n var lall = document.getElementsByClassName(rl + "_" + rname);\n for (var i = 0; i < lall.length; i++) {\n updateLink(lall[i]);\n }\n };\n disableLink(l);\n setTimeout(function () {\n updateLink(l);\n }, 1);\n }\n }\n macros['hoverrevise'] = {\n handler: function (a, b, c, d) {\n var endtags = ["<<end" + b + ">>"];\n var t = tagcontents(d, ["<<" + b + ">>"], endtags, endtags, d.source.indexOf('>>', d.matchStart) + 2);\n if (t) {\n var rname = c[0].replace(" ", "_");\n h = insertElement(a, "span", null, "hoverrevise hoverrevise_" + rname);\n new Wikifier(h, t[0]);\n h.onmouseover = function () {\n revise("revise", rname);\n }\n h.onmouseout = function () {\n revise("revert", rname);\n }\n }\n }\n }\n macros['becomes'] = macros['gains'] = macros['endrevision'] = macros['endinsertion'] = macros['endremoval'] = macros[\n 'endcycle'] = macros['endhoverrevise'] = {\n handler: function () {}\n }\n\n}());\n
You exhale and squeeze the trigger.\n\n<<set $shotsfired = $shotsfired + 1>><<if $rand_bulletchamber eq $shotsfired>>Suddenly, everything is happening very, very slowly. You're frozen, but you can feel an awful burning heat in your mouth.\n\nThough you can't see it, a bullet is peeking shyly out from the barrel of Eugenie's revolver. It spins as it digs its way into the roof of your mouth. It must hurt horribly, but everything's happening too slow for you to understand it as pain.\n\nThe bullet is moving, burrowing up into you, into who you are. It reaches your brain. For an unmeasurable instant you wonder if you should have--\n\nTHE END\n\n<<else>>The hammer clicks on an empty chamber as the cylinder rotates sixty degrees.\n\n[[Hand the revolver to Alex.|alex-fires-playtogether]]<<endif>>\n
You pick up the pistol by its handle, and turn to Alexandra.\n\nThen you pivot and throw it deep into the woods. No need for a burial this time.\n\nAlexandra has collapsed onto the forest floor, her arms and legs spread, her face stained with tears.\n\n[[Help Alex up.|help-alex-end]]\n[[Walk away.|walk-away-end]]
<<set $nw = 2>>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the top left corner. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
You turn back in the direction the two of you came from. Alex is silent for a while, but as you begin to move, you think you hear her rustle behind you.\n\nYou walk through the growing light filtering down from the treetops.\n\nTHE END
You brush dirt away from the object, glimpsing a grain of hard wood, just scarred by the blade of the shovel.\n\nHow did Eugenie bury it so deep? She was always stronger than you, but not by that much... but then you look around. The hole you're standing in is scarcely a deep one, despite the ache in your muscles, and the original must have been dug after the summer rains.\n\nAlexandra is staring impatiently. "Let's have it here, then. Can you get it out?"\n\nAfter a moment you've freed the box from its long embrace in the chill soil.\n\nIt's as you remember it, although the box was Eugenie's, recently purchased at the time and not long in your memories.\n\nSquat and mahogany, just big enough for its contents, with corners and hasp of wrought iron. Carving of a raven atop the lid, with a spring of holly in its beak. The letters "ERS" carved crudely in one corner, marring the workmanship.\n\n<<if ($winner eq 1)>>Alexandra makes no move to take the box from you, and simply nods, then come to stand by you, waiting for you to open the lockless lid.\n\n[[Open the box.|open-box]]<<endif>>\n\n<<if ($winner neq 1)>>Alexandra takes the box from your hands as if it's heavy as granite. She waits for you to step out of the hole and come to her side, then opens the lid.\n\n[[Watch Alexandra open the box.|open-box]]<<endif>>
<<silently>>\n<<if ($ne eq 0) and ($maxmove eq "null")>><<set $maxmove = "ne">><<set $movetype = "cornergrab">><<endif>>\n<<if ($nw eq 0) and ($maxmove eq "null")>><<set $maxmove = "nw">><<set $movetype = "cornergrab">><<endif>>\n<<if ($se eq 0) and ($maxmove eq "null")>><<set $maxmove = "se">><<set $movetype = "cornergrab">><<endif>>\n<<if ($sw eq 0) and ($maxmove eq "null")>><<set $maxmove = "sw">><<set $movetype = "cornergrab">><<endif>>\n<<endsilently>>
Solved
<<set $center = 2>>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the center. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
<<silently>>\n<<if ($nw eq 1) and ($maxmove eq "null")>>\n<<if ($se eq 1) and ($center eq 0)>>\n<<set $maxmove = "center1">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($ne eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($center eq 0)>>\n<<set $maxmove = "center2">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($se eq 1) and ($maxmove eq "null")>>\n<<if ($nw eq 1) and ($center eq 0)>>\n<<set $maxmove = "center3">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($sw eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($center eq 0)>>\n<<set $maxmove = "center4">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($w eq 1) and ($maxmove eq "null")>>\n<<if ($e eq 1) and ($center eq 0)>>\n<<set $maxmove = "center5">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($e eq 1) and ($maxmove eq "null")>>\n<<if ($w eq 1) and ($center eq 0)>>\n<<set $maxmove = "center6">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($n eq 1) and ($maxmove eq "null")>>\n<<if ($s eq 1) and ($center eq 0)>>\n<<set $maxmove = "center7">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($s eq 1) and ($maxmove eq "null")>>\n<<if ($n eq 1) and ($center eq 0)>>\n<<set $maxmove = "center8">><<set $movetype = "victory">><<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($se eq 1) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($w eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($n eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($nw eq 0)>>\n<<set $maxmove = "nw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($e eq 1) and ($maxmove eq "null")>>\n<<if ($se eq 1) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($n eq 1) and ($maxmove eq "null")>>\n<<if ($nw eq 1) and ($ne eq 0)>>\n<<set $maxmove = "ne">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($nw eq 1) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($e eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($s eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($se eq 0)>>\n<<set $maxmove = "se">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($w eq 1) and ($maxmove eq "null")>>\n<<if ($nw eq 1) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($s eq 1) and ($maxmove eq "null")>>\n<<if ($se eq 1) and ($sw eq 0)>>\n<<set $maxmove = "sw">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($nw eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($w eq 0)>>\n<<set $maxmove = "w">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($e eq 1) and ($w eq 0)>>\n<<set $maxmove = "w">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($nw eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($n eq 0)>>\n<<set $maxmove = "n">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($s eq 1) and ($n eq 0)>>\n<<set $maxmove = "n">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($se eq 1) and ($maxmove eq "null")>>\n<<if ($ne eq 1) and ($e eq 0)>>\n<<set $maxmove = "e">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($w eq 1) and ($e eq 0)>>\n<<set $maxmove = "e">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($se eq 1) and ($maxmove eq "null")>>\n<<if ($sw eq 1) and ($s eq 0)>>\n<<set $maxmove = "s">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<if ($center eq 1) and ($maxmove eq "null")>>\n<<if ($n eq 1) and ($s eq 0)>>\n<<set $maxmove = "s">><<set $movetype = "victory">>\n<<endif>><<endif>>\n<<endsilently>>\n
<<set $nw=0>><<set $n=0>><<set $ne=0>><<set $w=0>><<set $center=0>><<set $e=0>><<set $sw=0>><<set $s=0>><<set $se=0>><<set $winner=0>>
The lid swings up.\n\nThe interior sports a dark, molded velvet that looks as if it might crumble [[under a touch.|openbox3]]
<<display "TTT-board-initialize">>\n<<display "TTT-board-display">>\n\nAlexandra looks up at you from where she's crouching in the dirt, then lets the stick fall from her hands. It lands to one side of the nine lines she's just scratched into the earth, resting against her old shovel. \n\n"Remember how bored we were out here as children? I think we should play noughts and crosses to decide this matter, just as we used to. Winner to determine who'll do the digging later, and to solve... other matters, I suppose. We'll figure out the details then."\n\nShe turns away, then twists one edge of her angular frame back in your direction. "Since this trivial duel is my fancy, I could let you go first... but I think you'll have to answer a riddle of mine for that privilege."\n\nYou wince, inwardly. Alex's riddles were seldom fair and always obscure.\n\n"Farmer Ash comes to market every week with a rich bundle of gossamer, harvested from the skirts of the Sky Princess. One day I saw Ash arrive with a full load, but leave empty-handed: no gossamer, and no profits. Why was that, do you think?"\n\n[[Draw a breath and give an answer|TTT-first-move]]\n
You start to say something else. Alexandra doesn't cut you off this time, but you're halted by the angry embers in her eyes. She won't forgive you for losing to her, and there's nothing else to say.\n\n[[Pick up the shovel.|start_digging]]
Alexandra picks up the stick again and scratches an X into one of the spaces she's drawn.\n\nShe always wanted to be X back then, too.\n<<silently>>\n<<set $rand_firstmove = Math.round(Math.random() * 9)>>\n<<if $rand_firstmove lt 3>><<set $nw = 1>><<endif>>\n<<if ($rand_firstmove gt 2) and ($rand_firstmove lt 5)>><<set $ne = 1>><<endif>>\n<<if ($rand_firstmove gt 4) and ($rand_firstmove lt 7)>><<set $sw = 1>><<endif>>\n<<if ($rand_firstmove gt 6) and ($rand_firstmove lt 9)>><<set $se = 1>><<endif>>\n<<if ($rand_firstmove eq 9)>><<set $center = 1>><<endif>>\n<<endsilently>>\n<<display "TTT-board-display">>\n\n"Your move, my friend. Simply point, and I'll use my stick here to draw your naught. No sense in defoliating the estate further, eh?"\n<<display "TTT-choice-moves">>
The revolver rests comfortably in your palm. You raise your head, let your jaw hang, then place the barrel of the revolver in your mouth.\n\nYou taste oil and gunmetal. The tip of the barrel is cold against your upper palate. Your hand trembles slightly.\n\n<<if $shotsfired eq 0>>//It's better than the other way,// you think to yourself. //At least this way there's a chance... a chance that...//\n\nBut you can't remember what there's a chance of.<<endif>>\n\n[[Squeeze the trigger.|firing-gun-playtogether]]
<<if $shotsfired eq 5>>Alex takes the revolver from you and quickly, almost mechanically puts the barrel back in her mouth.\n\nAs she squeezes her hand, something in her arm tenses, and a strange look comes into her eyes.\n\nShe stares at you, and you look back in confusion as her arm grows slack, the revolver falling from her grip onto the forest floor.\n\nAlexandra is laughing. There's a roaring of blood in your ears. She's saying something in between giggles.\n\n"The last chamber... It has the only..."\n\nYou finish her sentence. "The bullet's in the last chamber. Without a doubt."\n\nShe looks up at you with tears in her eyes. "I've lost, the invitation was entirely mine to take and I couldn't do it. It was too..."\n\n"Certain?" you say.\n\n[[Pick up the pistol.|final_pistol_pickup]]<<else>>Alex takes the revolver from you, puts it in her mouth and hastily squeezes the trigger.\n\n<<set $shotsfired = $shotsfired + 1>><<if $rand_bulletchamber eq $shotsfired>>Her hand jerks, and the left side of her face bursts into a senseless, miniature storm of crimson.\n\nYou rush forward, unable to process such ruin manifesting with such speed. Alexandra is still raggedly breathing, though part of her head is missing. Your throat catches, clutches.\n\n"<<print $riddle_answer>>?" she wheezes. "What kind of an answer is..."\n\nThen she's gone, they're both gone, and you're alone.\n\nTHE END\n<<else>>The hammer clicks on an empty chamber as the cylinder rotates sixty degrees.\n\nAlex sighs and hands the revolver back to you.\n\n[[Take the gun.|playing-together]]<<endif>><<endif>>\n
You offer Alex your hand. She reaches up and clasps your arm, but then releases it, letting her shoulders fall back to the ground.\n\n"No, no... you go ahead. I want to be alone for a while, to think."\n\nShe sees your gaze cast in the direction you threw the pistol. You threw it pretty hard, you think.\n\n"Don't worry. I just need to think."\n\nYou walk through the growing light filtering down from the treetops.\n\nTHE END
<<set $s = 2>>\n<<display "TTT-board-display">>\n\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the bottom space.\n[[Wait|max-move]]
<HTML><PRE><BIG><STRONG>WARNING:</STRONG> This game contains non-inevitable possibilities of suicide, gore and failure at tic-tac-toe.</BIG></PRE></HTML>[[Play "Solved."|beginning]]\n[[Find a different Twine game|http://twinehub.weebly.com/]]
<<set $ne = 2>>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the top right corner. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
You climb out of the small hole you've dug and drop the shovel.\n\nAlexandra looks up, startled. You begin to walk away without looking back.\n\n"Where do you think -- hey, we had a deal! We made a pact!!" You don't let her anger faze you, because you don't need to play her games.\n\n"You bastard! You utter bitch! Get back here!"\n\nThe sound dies away as the trees fall in place behind you, separating your footfalls from Alexandra's sorrow.\n\nTHE END
<<set $n = 2>>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the top space. She pauses to consider the board.\n\n<<display "TTT-board-display">>\n\n[[Wait for her move|max-move]]
<<set $sw = 2>>\n<<display "TTT-board-display">>\nAlexandra obediently flicks a deft counter-parry with her wrist, drawing your circle in the bottom right corner.\n[[Wait|max-move]]
Alexandra stops in front of a large oak. A memory flits through your consciousness, and you look down.\n\nThere it is, just where Eugenia left it. A pile of dirt, sodden and unpacked by foot or claw, garlanded only by the fallen leaves. Nobody's been here since, then. At least nobody's touched it.\n\nAlex turns her head to look at you. "Ahh, the lone grave. We've come back, you and I."\n\nBut it's too small to be a grave, unless the dearly departed were a squirrel or other small thing.\n\nYou're holding your breath again.\n\n[[Exhale.|alex_proposal]]
<<set $riddle_answer = prompt("How do you answer her?")>>\nYour breath mists into the morning air.\n\n"<<print $riddle_answer>>?" Alexandra bends her wry mouth into a frown.\n"Not quite right, I'm afraid." You smirk, hoping to convey your lack of surprise. It was just a guess, and what kind of riddle was that supposed to be, anyway?\n\nShe sighs, her broad exhalation creating a much more dramatic puff of steam. "I take the meaning of that look. No, it wasn't a fair riddle. The answer has to do with events that have happened since we last met. With my own thoughts about those events, even. We've been friends a long while, but not recently enough for you to know the answer."\n\nYou simply stare at her, not in the mood to be disarmed by her humor today.\n\n"I'll tell you what. If I don't win, we'll call the game for you. Ties in your favor, as if you're the croupier of our little trifle."\n\n"But I still move first."\n\n[[Nod.|TTT-first-move2]]\n[[Shrug.|TTT-first-move2]]
Her eyes sparkle. "Here's what I'd suggest, now that we've had a walk to turn it over in mind. Loser opens the box, and agrees to go after Eugenia with what she's left inside."\n\nYou open your mouth to say something, but she cuts you off with a curt motion.\n\n<<if ($winner eq 1)>>"I won, so I'm setting the terms. And you're getting the box."\n\nThe feeling that's pressed on your thoughts for days suddenly prickles at you again. It had fled to some corner during your return to childhood play, but you couldn't forget for long that there wasn't any other way.\n\nAlex set the terms for this game a long time ago.\n\n"You lost to me. At noughts and crosses! Whether it was your choice or no, deal with the consequences and dig."\n\n[[Pick up the shovel.|start_digging]]\n[[Talk to Alexandra.|try_talking_lost]]\n<<else>>"You've won, so it's my duty to take that box. No arguments!"\n\nThe feeling that's pressed on your thoughts for days suddenly prickles at you again. It had fled to some corner during your return to childhood play, but you couldn't forget for long that there wasn't any other way.\n\nAlex doesn't brook arguments. Not if she's lost.\n\nSuddenly she looks tired, a look you remember only rarely. "I want to ask you a favor, though. I need... I need a moment to think first. I'll open the box, but would you dig it up for me? For old time's sake?"\n\n[[Pick up the shovel.|start_digging]]\n[[Talk to Alexandra.|try_talking_won]]<<endif>>
The lid swings [[up.|openbox2]]
History.prototype.display=function(d,b,a){var c=tale.get(d);this.history.unshift({passage:c,variables:clone(this.history[0].variables)});\nthis.history[0].hash=this.save();var e=c.render();if(a!="offscreen"){removeChildren($("passages"));\n$("passages").appendChild(e);if(a!="quietly"){fade(e,{fade:"in"});}}if((a=="quietly")||(a=="offscreen")){e.style.visibility="visible";\n}if(a!="offscreen"){document.title=tale.title;document.title+=": "+c.title;window.scroll(0,0);\n}return e;};
Some notes about this game, which are best read later if you want an "unspoiled" experience:\n\n* I wrote the original concept for the scenario in "Solved" during a time when I was very depressed, which may explain some of the themes involved.\n* There are five endings to "Solved," but two of them have a fairly low chance of occurring. (You'd have to make the same choices on three or more playthroughs to have even odds of reaching them.)\n* Systems in "Solved" represent the triptych of Skill, Chance, and Labor that I've sometimes [[talked about|http://www.textuality.org/2011/12/games-of-skill-games-of-chance-games-of-labor.html]] in relation to games.\n* Alexandra really is playing Tic-Tac-Toe against the player, using a search tree that resembles simple board-game AIs. Althoug she might be a minimal example of an AI, she should be impossible to beat. At some point in the future I may change the game so that you can choose to move first, which will give her more to think about. (And more ways to wolfishly circle your flank.)\n* Similarly, the russian roulette is an actual random simulator, and does not have foreordained results. In the future I may add simple physics to the simulation (which in the real world make the 4th barrel more likely to carry the bullet, due to weight).\n* Most of the twine pieces for this game were made separately in little experiments over a long time, but the total time spent making it was probably about 10 hours, including testing & feedback.\n* Alexandra is the first AI I've ever programmed. Twine is a very easy system to make all kinds of things in, not just branching narratives.\n* The impetus to publish some of these experiments was inspired in part by Darius Kazemi's Twine game [["On Formalism"|http://tinysubversions.com/game/formalism/]] and the way it comments on perceptions of Twine / "CYOA" games.\n* Thanks to [[Porpentine|http://aliendovecote.com/]] and [[Andi McClure|http://runhello.com]] and [[Leon Arnott|http://runhello.com]] for technical advice.\n* Thanks to [[Porpentine|http://aliendovecote.com/]] and [[Anna Anthropy|http://www.auntiepixelante.com//]] and the creators of [[Depression Quest|http://www.depressionquest.com/]] for various flavors of Twine goodness and inspiration.\n* Thanks to everyone who tested and sent in feedback and play reports.\n<<print "[["+"Go Back"+"|"+state.history[1].passage.title+"]]">>
Alex squeezes the trigger.\n\n<<set $shotsfired = $shotsfired + 1>><<if $rand_bulletchamber eq $shotsfired>>Her hand jerks, and the left side of her face bursts into a senseless, miniature storm of crimson.\n\nYou rush forward, unable to process such ruin manifesting with such speed. Alexandra is still raggedly breathing, though part of her head is missing. Your throat catches, clutches.\n\n"<<print $riddle_answer>>?" she wheezes. "What kind of an answer is..."\n\nThen she's gone, they're both gone, and you're alone.\n\nTHE END\n<<else>>The hammer clicks on an empty chamber as the cylinder rotates sixty degrees.<<if $shotsfired eq 1>>\nYou give Alexandra a strange look as she cocks the hammer again. She raises an eyebrow, but clearly understands your meaning, and pulls the gun from her mouth.\n\n"No, I'm not going to spin the cylinder. We're not even Russian, and furthermore we don't have all day to finish this. You took too long in digging."\nShe smirks, teasing you to the last, then replaces the barrel against the roof of her mouth.<<endif>>\n\n[[Watch.|watch-alex-shoot]]\n[[Say something.|propose-game]]<<endif>>\n
You hurry after Alexandra in an effort not to be left behind, but she's moving quickly. You imagine she's retained more familiarity than you with these woods.\n\nCatching up, you notice her lips pressed into a thin line. She seems lost in thought. The shovel swings in her left hand; she must have picked it up during the game. You scarcely noticed.\n\n[[Keep walking.|arrive_ground]]\n[[Stop in your tracks.|pause_walking]]
The lid swings up.\n\nThe interior sports a dark, molded velvet that looks as if it might crumble under a touch.\n\nEugenie's revolver is still there, nestled in its velvet mold. It still looks well-oiled.\n\nNext to the revolver, without an inset to house it, lies a bleached fingerbone with Eugenie's favorite ring on it.\n\nThought you knew the contents, you're startled to see bare, white bone in the box. It hasn't been that long, and everything else is intact.\n\nA strange sensation runs down your spine.\n\n[[Shiver.|pickup_pistol]]
<<set $rand_bulletchamber = Math.round(Math.random() * 6)>><<set $shotsfired = 0>>You find the words. "Couldn't we try another game...? The both of us."\n\nShe starts, then stares, and finally smiles. "I take your meaning. Perhaps this should have been our trifle all along, eh? False riddles and invincible strategy aside..."\n\nShe spins the cylinder of the revolver again, then offers you the gun. "It's your suggestion of game this time, my friend. So you're the X. You go first."\n\n[[Take the gun|playing-together]]
You start to say something else. Alexandra doesn't cut you off this time, but you're halted by the fathoms of sadness in her eyes. There's nothing you can say that could sink so deep.\n\n[[Pick up the shovel.|start_digging]]
You take a break, exhaling again into the cold air. It's a little brighter than it was when you started walking here. Or perhaps the world seems a little less dull upon looking up from labor.\n\n<<if $drinks eq 0>>Alexandra looks over. "Tired already? You never did have the mettle for real work." She sees your scowl and laugh.\n\n"Come now, it's only a jest. I can hardly find fault when you're doing the digging for us. Look, I'll make amends."\n\nShe pulls a flask from her side pocket: inlaid throughout with shards of cobalt, but with a emblem of a single-tined lightning bolt slashing across the center, done in the color of warm, fatty butter.\n\n"This tonic is guaranteed to restore the vitality to your muscles, to your very bones! All your fatigue will vanish. Care for a pull?"<<else>>Alexandra is watching you still.\n\n"I suppose you'd like another swig to keep you going, eh? I really ''should'' charge you, but we're old friends, so here you go."<<endif>>\n\n[[Accept the flask.|drink-tonic]]\n[[Shake your head and keep digging.|digging]]