<!-- Comment --> (set: $array to (a: "one", "two", "three")) (for: each _a, $array)[(print: _a)] (for: each _i, 1, 2, 3, 4)[thing] (for: each _i in ...(range:1,10))[(print: _i)] There is a small dish of water. (click: "dish")[Your finger gets wet.] (link: "Stake")[The vampire crumbles to dust.] (link-reveal: "Heart")[broken] (set: $counter to 0)View `$`counter in debug. (link-repeat: "Add")[(set: $counter to $counter + 1)] (set: _options to (a: "a", "b", "c")) _options *italics* **bold** ~~strikethrough~~ super^^script^^ changing (font: "Courier New")[font with] hooks (current-date:) It is $day the $date of $month, $year. |ghost>[Awoo] |ghost>[Ooooh] (enchant: ?ghost, (text-style:'outline'))It's a $day in { (if: $dateNum <= 10)[early] (else-if: $dateNum >= 20)[late] (else:)[mid] } $month. Earlier today you read something that inspired a furtive sense of adventure and now find yourself, quite unexpectedly, riding a sleeper train deep into the night.(click: "sleeper train")[ All around you are the gentle snores and soft whimpers of your fellow passengers. There is the occasional rustle of paper, a discreet cough or two, but mostly it's just you and the window.(click: "window")[ You managed to get a window seat, with a table no less, but the stranger next to you has long since fallen asleep. You are trapped with only a diminishing view of rolling countryside as the last of [[the daylight fades]].]]{ <!-- Default variable values --> (set: $gender to "female") <!-- Splitting the (current-date:) macro into nicer formatted strings. This means you can say "It is $day the $date of $month, $year" to print something like "It is Saturday the 18th of November, 2017" $day is the string day name e.g. "Saturday" $month is the string month name e.g. "November" $year is the string year e.g. "2017" $date is the string day number with suffix letters e.g. "18th" $dateNum is the number day number e.g. 18 --> (set: $date to (current-date:)) (set: $year to (words: $date)'s 4th) (if: $date contains "Mon")[(set: $day to "Monday")] (else-if: $date contains "Tue")[(set: $day to "Tuesday")] (else-if: $date contains "Wed")[(set: $day to "Wednesday")] (else-if: $date contains "Thu")[(set: $day to "Thursday")] (else-if: $date contains "Fri")[(set: $day to "Friday")] (else-if: $date contains "Sat")[(set: $day to "Saturday")] (else-if: $date contains "Sun")[(set: $day to "Sunday")] (if: $date contains "Jan")[(set: $month to "January")] (else-if: $date contains "Feb")[(set: $month to "February")] (else-if: $date contains "Mar")[(set: $month to "March")] (else-if: $date contains "Apr")[(set: $month to "April")] (else-if: $date contains "May")[(set: $month to "May")] (else-if: $date contains "Jun")[(set: $month to "June")] (else-if: $date contains "Jul")[(set: $month to "July")] (else-if: $date contains "Aug")[(set: $month to "August")] (else-if: $date contains "Sep")[(set: $month to "September")] (else-if: $date contains "Oct")[(set: $month to "October")] (else-if: $date contains "Nov")[(set: $month to "November")] (else-if: $date contains "Dec")[(set: $month to "December")] (set: $date to (words: $date)'s 3rd) (set: $dateNum to (num: $date)) (if: $date is any of (a: "01", "21", "31"))[(set: $date to $date + "st")] (else-if: $date is any of (a: "02", "22"))[(set: $date to $date + "nd")] (else-if: $date is any of (a: "03", "23"))[(set: $date to $date + "rd")] (else:)[(set: $date to $date + "th")] <!-- Text styles --> (set: $color to (a: (text-colour: #FF77A8), (text-colour: #008751), (text-colour: #FF4300) )) (set: $font to (a: (font: "Indie Flower"), (font: "Caveat"), (font: "Nothing You Could Do"), (font: "Reenie Beanie"), (font: "Annie Use Your Telescope"), (font: "Kristi") )) (set: $yourStyle to $color's 1st + $font's 1st) (set: $theirStyle to $color's 2nd + $font's 2nd) }{ }{ (if: $gender is "female")[ (set: $pronoun to "she") (set: $pronounCapital to "She") (set: $possessive to "her") (set: $s to "s") (set: $dont to "doesn't") (set: $are to "she's") (set: $them to "her") ] (elseif: $gender is "male")[ (set: $pronoun to "he") (set: $pronounCapital to "He") (set: $possessive to "his") (set: $s to "s") (set: $dont to "doesn't") (set: $are to "he's") (set: $them to "him") ] (elseif: $gender is "nonspecific")[ (set: $pronoun to "they") (set: $pronounCapital to "They") (set: $possessive to "their") (set: $s to "") (set: $dont to "don't") (set: $are to "they're") (set: $them to "them") ] }- pull into a platform ablaze with light and start guessing at where and why the people on the platform are travelling - keep adding more text to the same page of the notebook, then when it's full you turn over a new page and that clears the text - automatic game of tic-tac-toe that plays out with short pauses between turns, ending in a draw. "You remember that this is a bad game. Thankfully she/he/they suggest$s something else."As the train pulls away $pronoun begin$s to wrestle a notepad out of $possessive bag. With a victorious shove the notepad is freed and you hear a thud as something falls to the floor, but $pronoun $dont seem to notice as $are already scribbling away, clearly continuing some earlier spark.(click: "thud")[ $pronounCapital glance$s up just as you start to say something but silence$s you with a wry smile and a finger to $possessive lips, flicking a look at your sleeping neighbour. You look at $them dumbly for a moment, then $pronoun slide$s the notepad over and offer$s you 3 pens. [[ You take <span class='penColor1'>(link: "the pink one")[{ (set: $yourStyle to $color's 1st) (set: $colorChoice to "the pink one") (if: (random: 1) is 0)[(set: $theirStyle to $color's 2nd)] (else:)[(set: $theirStyle to $color's 3rd)] (replace: ?Color2)[](replace: ?Color3)[](show: ?FontChoice) }]</span>]<Color1|[ You take <span class='penColor2'>(link: "the green one")[{ (set: $yourStyle to $color's 2nd) (set: $colorChoice to "the green one") (if: (random: 1) is 0)[(set: $theirStyle to $color's 1st)] (else:)[(set: $theirStyle to $color's 3rd)] (replace: ?Color1)[](replace: ?Color3)[](show: ?FontChoice) }]</span>]<Color2|[ You take <span class='penColor3'>(link: "the red one")[{ (set: $yourStyle to $color's 3rd) (set: $colorChoice to "the red one") (if: (random: 1) is 0)[(set: $theirStyle to $color's 1st)] (else:)[(set: $theirStyle to $color's 2nd)] (replace: ?Color1)[](replace: ?Color2)[](show: ?FontChoice) }]</span>]<Color3|]<ColorChoice|[$colorChoice and hesitate, suddenly very aware that your handwriting is $yourStyle[ |Font1>[(link: "friendly and welcoming")[{ (set: $yourStyle to $color's 1st + $font's 1st) (set: $theirStyle to $theirStyle + (either: $font's 2nd, $font's 3rd, $font's 4th, $font's 5th, $font's 6th)) (set: _fontChoice to "friendly and welcoming") (replace: ?FontChoice)[](show: ?FontChosen) }]] |Font2>[(link: "straightforward and intelligent")[{ (set: $yourStyle to it + $font's 2nd) (set: $theirStyle to it + (either: $font's 1st, $font's 3rd, $font's 4th, $font's 5th, $font's 6th)) (set: _fontChoice to "straightforward and intelligent") (replace: ?FontChoice)[](show: ?FontChosen) }]] |Font3>[(link: "professional and well-practiced")[{ (set: $yourStyle to it + $font's 3rd) (set: $theirStyle to it + (either: $font's 1st, $font's 2nd, $font's 4th, $font's 5th, $font's 6th)) (set: _fontChoice to "professional and well-practiced") (replace: ?FontChoice)[](show: ?FontChosen) }]] |Font4>[(link: "small and quiet")[{ (set: $yourStyle to it + $font's 4th) (set: $theirStyle to it + (either: $font's 1st, $font's 2nd, $font's 3rd, $font's 5th, $font's 6th)) (set: _fontChoice to "small and quiet") (replace: ?FontChoice)[](show: ?FontChosen) }]] |Font5>[(link: "simple and clean")[{ (set: $yourStyle to it + $font's 5th) (set: $theirStyle to it + (either: $font's 1st, $font's 2nd, $font's 3rd, $font's 4th, $font's 6th)) (set: _fontChoice to "simple and clean") (replace: ?FontChoice)[](show: ?FontChosen) }]] |Font6>[(link: "messy but elegant")[{ (set: $yourStyle to it + $font's 6th) (set: $theirStyle to it + (either: $font's 1st, $font's 2nd, $font's 3rd, $font's 4th, $font's 5th)) (set: _fontChoice to "messy but elegant") (replace: ?FontChoice)[](show: ?FontChosen) }]] ]](FontChoice|[$colorChoice and hesitate, suddenly very aware that your handwriting is _fontChoice. $yourStyle[I think something fell out of your backpack] you write, [[sliding]] the notepad back.](FontChosen|]{ (enchant: ?Font1, $font's 1st) (enchant: ?Font2, $font's 2nd) (enchant: ?Font3, $font's 3rd) (enchant: ?Font4, $font's 4th) (enchant: ?Font5, $font's 5th) (enchant: ?Font6, $font's 6th) }As the night finally wins you start to pick out city lights moving lazily across the background. Constellations of houses flicker into life. You feel the train begin to slow and see the blaze of light ahead that marks another station.(click: "station")[ It's a small station, this one, deep in the countryside with just two platforms; forward and back. There is a solitary figure waiting. [[She]<She| / [he]<He| / [they]<They|]<Pronouns|{ (click: ?She)[(replace: ?Pronouns)[{ (set: $gender to "female") (display: "header") (show: ?continue) }]] (click: ?He)[(replace: ?Pronouns)[{ (set: $gender to "male") (display: "header") (show: ?continue) }]] (click: ?They)[(replace: ?Pronouns)[{ (set: $gender to "nonspecific") (display: "header") (show: ?continue) }]] }]|continue)[$pronounCapital board$s the carriage ahead of you, but it is evidently full as $pronoun soon quietly shuffle$s into yours.(click: "quietly shuffle" + $s)[ With a quick gesture $pronoun silently check$s that the seats opposite you are available, then settle$s down with a polite smile and rest$s $possessive [[backpack]] on the aisle seat.]](link: "Reload passage")[(go-to: (passage:)'s name)] (link-repeat: "Toggle debugger")[{ <script> var sheet = document.styleSheets[1]; var ruleFound = false; for (var i = 0; i < sheet.rules.length; i++) { if (sheet.rules[i].cssText.includes("tw-debugger")) { sheet.deleteRule(i); ruleFound = true; break; } } if (ruleFound == false) { sheet.insertRule("tw-debugger { visibility: hidden; }"); } </script>}] Debug: [She]<DebugShe| / [He]<DebugHe| / [They]<DebugThey| { (click: ?DebugShe)[(set: $gender to "female")(go-to: (passage:)'s name)] (click: ?DebugHe)[(set: $gender to "male")(go-to: (passage:)'s name)] (click: ?DebugThey)[(set: $gender to "nonspecific")(go-to: (passage:)'s name)] }{ }$pronounCapital duck$s down and sure enough come$s up with a heavy bag of boiled sweets, smiling brightly. $theirStyle[Thanks!! want one?] $pronoun write$s, then begin$s tearing at the bag.(click: "tearing")[ Suddenly the bag gives way and sweets shoot out all over the table, noisily clacking around. You both flinch guiltily, freeze and look warily at the third member of this little party. Their face twitches and head lolls to the other side; you haven't woken them. As you lock eyes with your would-be sweet giver you both crack up into silent fits of laughter. This journey just got a lot more fun.(click: "silent fits of laughter")[ You recover with tears in your eyes and aching sides. Your new companion is sheepishly gathering sweets into a pile. You pop one into your mouth then [[help them tidy up.|tidy up]]]]With the sweets repackaged you lapse into a comfortable silence and return your gaze to the window. Over the next hour the carriage slowly gets even quieter as more people succumb to its rhythmic rocking. The train tracks now run along a wide road and you're going at about the same speed as the traffic. A few vehicles have internal lights, their inhabitants the unwitting stars of little travelling vignettes.(click: "travelling vignettes")[ A minivan in the far lane is slowly being overtaken by pretty much everything else. A man is driving, looking tense, while a woman dozes in the passenger seat and two girls lounge on the back bench, their faces lit up by a screen they occasionally jostle over.(click: "overtaken")[ A little hatchback loaded to the brim comes struggling along in the fast lane. From the fortress of suitcases you guess they're going on holiday. The driver and passenger are energetically dancing and singing to a song you can't hear. You catch yourself nodding to their rhythm.(click: "catch")[ Your own moving reflection draws your eye and you shift focus to the translucent mirror train beside you. As you look at your companion's double you realise the real them is looking at the real you. You turn back to find the [[notepad]] in front of you once more.]]](set: $descriptionComplete to false)$theirStyle[can't sleep either?] (live: 1.5s)[(stop:)(t8n: "dissolve")[$yourStyle[|A1>[(link-reveal: "i like the way things look at night")[(show: ?B)(replace: ?A2)[](replace: ?A3)[]]]|SA>[ ]|A2>[(link-reveal: "i find it hard to sleep around strangers")[(show: ?B)(replace: ?A1)[](replace: ?A3)[]]]|SA>[ ]|A3>[(link-reveal: "i had way too much coffee")[(show: ?B)(replace: ?A1)[](replace: ?A2)[]]]]]] |B)[(replace: ?SA)[](live: 1.5s)[(stop:)(t8n: "dissolve")[...]] (live: 3s)[(stop:)(t8n: "dissolve")[$theirStyle[do you wanna play a game or something?]]] (live: 4.5s)[(stop:)(t8n: "dissolve")[$yourStyle[sure]]] (live: 6s)[(stop:)(t8n: "dissolve")[The two of you proceed to play several games of tic-tac-toe that all inevitably end in a draw. You remember for the hundredth time that it is a bad game.]] (live: 9s)[(stop:)(t8n: "dissolve")[$theirStyle[oh i know! let's guess their story] $pronoun write$s, gesturing to your neighbour still fast asleep.] (live: 1.5s)[(stop:)(t8n: "dissolve")[$yourStyle[hah ok. they're clearly |SB>[ ]|B1>[(link-reveal: "a smuggler")[(replace: ?B2)[](replace: ?B3)[](replace: ?SB)[](display: "smuggler")]]|SB>[ ]|B2>[(link-reveal: "psychic")[(replace: ?B1)[](replace: ?B3)[](replace: ?SB)[](display: "psychic")]]|SB>[ ]|B3>[(link-reveal: "a hopeless romantic")[(replace: ?B1)[](replace: ?B2)[](replace: ?SB)[](display: "romantic")]]]]]]] (live: 1s)[(if: $descriptionComplete is true)[By now you're both grinning stupidly and staring at the blissfully unaware traveller beside you. You each have another sweet and admire your handiwork but after a while $pronoun sigh$s and look$s to the window, chin on hand.(click: "sigh" + $s)[(goto: "sigh")]]]message 1 (live: 1s)[(stop:)message 2](live: 1s)[(stop:)(t8n:"dissolve")[this text fades in after 1s]] (live: 1s)[(t8n:"dissolve")[now what1?](stop:)] (live: 2s)[(t8n:"dissolve")[now what2?](stop:)] (live: 3s)[(t8n:"dissolve")[now what3?](stop:)] (text-colour: (rgba: 0, 0, 0, 0.5))[alpha] line 1 (set: $test to "")(live: 0.1s)[(set: $test to $test + " test")] (live: 1s)[$test] (set: $fadeLength to 200) (set: $updateInterval to 0.1) (set: $alpha to 0)(live: $updateInterval)[(set: $alpha to $alpha + $updateInterval / $fadeLength)] (live: $updateInterval)[(text-colour: (rgba: 0, 0, 0, $alpha / 10))[line 2]] (live: $updateInterval)[(text-colour: (rgba: 0, 0, 0, $alpha))[$alpha]] line 3 (live: 0.01s)[(text-colour: (rgba: 0, 0, 0, (abs: (sin: $alpha))))[sine wave]] $theirStyle[can't sleep either?] $yourStyle[|A1>[(link-reveal: "i like to explore at night")[(show: ?B)(replace: ?A2)[](replace: ?A3)[]]]|SA1>[ ]|A2>[(link-reveal: "i find it hard to sleep around strangers")[(show: ?B)(replace: ?A1)[](replace: ?A3)[]]]|SA2>[ ]|A3>[(link-reveal: "had way too much coffee")[(show: ?B)(replace: ?A1)[](replace: ?A2)[]]]] |B)[(replace: ?SA1)[](replace: ?SA2)[](live: 1s)[(stop:)$theirStyle[want to play a game or something?]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " of pineapples", " of ghosts", " of antique toothbrushes")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[$yourStyle[|S1>[ ]|A1>[(link-reveal: " fleeing the country")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A2)[](replace: ?A3)[](display: "smuggler 2")]]|S2>[ ]|A2>[(link-reveal: " heading to a deal")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A3)[](display: "smuggler 2")]]|S3>[ ]|A3>[(link-reveal: " going on holiday")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A2)[](display: "smuggler 2")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " but only on weekends", " but only while asleep", " but only while naked")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[$yourStyle[|S1>[ ]|A1>[(link-reveal: " and they're trying to find")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A2)[](replace: ?A3)[](display: "psychic 2")]]|S2>[ ]|A2>[(link-reveal: " and they're running from")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A3)[](display: "psychic 2")]]|S3>[ ]|A3>[(link-reveal: " and they're dreaming of")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A2)[](display: "psychic 2")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " who missed the stop for their date", " who met their soulmate on this very train", " who likes long train rides by the sea")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[$yourStyle[|S1>[ ]|A1>[(link-reveal: " but will always remember")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A2)[](replace: ?A3)[](display: "romantic 2")]]|S2>[ ]|A2>[(link-reveal: " but seems to always forget")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A3)[](display: "romantic 2")]]|S3>[ ]|A3>[(link-reveal: " and has a recurring dream of")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?A1)[](replace: ?A2)[](display: "romantic 2")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " after they get revenge", " but they were sedated by a rival", " after a quick power nap")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[$yourStyle[|S1>[ ]|C1>[(link-reveal: " and their true ambition is")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C2)[](replace: ?C3)[](display: "smuggler 3")]]|S2>[ ]|C2>[(link-reveal: " and their favourite film is about")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C3)[](display: "smuggler 3")]]|S3>[ ]|C3>[(link-reveal: " and they were on TV for")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C2)[](display: "smuggler 3")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " making cupcake sculptures.", " feeding monkeys at the zoo.", " being a clown in a travelling circus.")]](set: $descriptionComplete to true)](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " two kids in a trench coat.", " an angry florist.", " their childhood bully.")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[ $yourStyle[|S1>[ ]|C1>[(link-reveal: "They're listening to our thoughts right now")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C2)[](replace: ?C3)[](display: "psychic 3")]]|S2>[ ]|C2>[(link-reveal: "They're actually what's moving the train")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C3)[](display: "psychic 3")]]|S3>[ ]|C3>[(link-reveal: "They're making my hand write this")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C2)[](display: "psychic 3")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " so we better leave them some sweets.", " and they rigged all the games of tic-tac-toe.", " but they have to sleep 23 hours a day.")]](set: $descriptionComplete to true)]$theirStyle[It's been fun but this is my stop...] Sure enough you see another island of light approaching as $pronoun begin$s to pack up. $pronounCapital hover$s over the notepad before ripping out the page you've both been writing on and offering it to you. |Take>[(link-reveal: "You take it.")[(replace: ?Newline)[](replace: ?Leave)[](show: ?Finale)]]|Newline>[ ]|Leave>[(link-reveal: "You let " + $them + " keep it.")[(replace: ?Newline)[](replace: ?Take)[](show: ?Finale)]] |Finale)[ As the train comes to rest $pronoun quietly depart$s with a wave to you and a salute to your neighbour. The couple on the platform stop their conversation and hurry over, clearly there to greet $them. You can't help but watch $them as the train laboriously begins to pick up speed once more. As you do you realise that the frantic hand waving you thought was excitement is actually sign language. It dawns on you that a sleeper train is pretty much the same with or without hearing. As you pass $pronoun spot$s you and wave$s you off; you smile and wave back, thinking of $them as you move onward into the night. $yourStyle[Fin.]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " how they got on this train", " how love finds a way", " how expensive train travel is")]]](live: 2.5s)[(stop:)(t8n: "dissolve")[ $yourStyle[|S1>[ ]|C1>[(link-reveal: " and deep down in their heart of hearts")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C2)[](replace: ?C3)[](display: "romantic 3")]]|S2>[ ]|C2>[(link-reveal: " and as their mother always used to say")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C3)[](display: "romantic 3")]]|S3>[ ]|C3>[(link-reveal: " and just like the fortune teller foretold")[(replace: ?S1)[](replace: ?S2)[](replace: ?S3)[](replace: ?C1)[](replace: ?C2)[](display: "romantic 3")]]]]](live: 1s)[(stop:)(t8n: "dissolve")[$theirStyle[(either: " tic-tac-toe is terrible.", " they could sleep through anything.", " words are hard.")]](set: $descriptionComplete to true)]