{
<h2 class="center">3. Beyond the Wall</h2>
<p>“After many trials,<br />
he was destined to face the end of his days<br />
in this mortal world; as was the dragon,<br />
for all his long leasehold on the treasure.”<br /><br /><em>Beowulf</em> (as translated by Seamus Heaney)</p>
<p class="center">[[Continue->lair]]</p>
}{
<h2 class="center">3. Voyaging</h2>
<p>“Current-borne, wave-flung, tugged hugely by the whole might of ocean, the jellyfish drifts in the tidal abyss. The light shines through it, and the dark enters it. Borne, flung, tugged from anywhere to anywhere, for in the deep sea there is no compass but nearer and farther, higher and lower, the jellyfish hangs and sways; pulses move slight and quick within it, as the vast diurnal pulses beat in the moondriven sea. Hanging, swaying, pulsing, the most vulnerable and insubstantial creature, it has for its defence the violence and power of the whole ocean, to which it has entrusted its being, its going, and its will.”<br /><br /><em>The Lathe of Heaven</em> by Ursula K. Le Guin</p>
<p class="center">[[Continue->depart]]</p>
}{
<h2 class="center">3. Repentance</h2>
<p>The present moment<br />
Contains past and future.<br />
The secret of transformation<br />
Is in the way we handle this very moment.<br /><br />From <em>Fifty Verses on the Nature of Consciousness</em> by Thích Nhất Hạnh</p>
<p class="center">[[Continue->dissolve]]</p>
}{
(set: $shadespeech to true)
(enchant: ?who's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 30) + (t8n:"blur"))
<p>“Who are you?” you ask.</p>
<p>The impact of your words is immediate. Your fellow passengers speak, one over the other, words blurring into (link-replace: "<span class=\"underdot\">a head-splitting chaos.</span></p>")[a head-splitting chaos.</p>(show: ?who)]
<span class="shades">
|who)[<span class="float"><p style="top:-15px;left:-27px;">Who am I?</p><p style="right:-55px;">Who am I?</p><p style="top:10px;left:50px;">Who are we?</p><p>Who am I?</p></span>]
|who)[<span class="float"><p style="left:19px;">Who are you?</p><p style="top:15px;left:-10px;">Who are we?</p></span>]
|who)[<span class="float"><p style="top:-15px;left:-40px;">Who are you?</p><p style="right:5px;">Who am I?</p><p style="top:10px;left:50px;">Who are we?</p><p>Who am I?</p></span>]
|who)[<span class="float"><p style="top:-50px;left:-50px;">Who am I?</p><p style="top:5px;left:-26px;">Who are you?</p></span>]
|who)[<span class="float" style="top:-150px"><p style="top:-150px;left:-40px;">Who are you?</p><p style="right:-25px;top:150px;">Who are you?</p><p style="top:10px;left:50px;">Who am I?</p><p>Who are we?</p></span> (t8n-delay: 1s)+(t8n:"dissolve")(show:?stop)]
|stop)[<p class="clear">“Stop!” you scream at last. (link-replace:"<span class=\"underdot\">\"Stop!\"</span>")["Stop!" (t8n-delay: 1s)+(t8n:"dissolve")(show:?link-text)]</p>]
</span>
|link-text)[<p>They stop all at once, the echoes of their words quickly sinking beneath the relentless eternities of wind and wave.</p>
<p>In the quiet, you realise suddenly why their faces look so familiar: your fellow passengers are shades of you. [[Shades of your forgotten past]].</p>]
}{
(set: $shadespeech to true)
(enchant: ?who's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 30) + (t8n:"blur"))
<p>“Who am I?” you ask.</p>
<p>You aren’t sure if the question is directed at yourself or the others in the boat, but the impact of your words is immediate. Your fellow passengers speak, one over the other, words blurring into (link-replace: "<span class=\"underdot\">a head-splitting chaos.</span></p>")[a head-splitting chaos.</p>
<span class="shades">
(show: ?who) (t8n-delay: 1s)+(t8n:"flicker")(show:?stop)]
|who)[<span class="float"><p style="top:-15px;left:-27px;">Who are you?</p><p style="right:-55px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>]
|who)[<span class="float"><p style="left:19px;">Who are you?</p><p style="top:15px;left:-10px;">Who are you?</p></span>]
|who)[<span class="float"><p style="top:-15px;left:-40px;">Who are you?</p><p style="right:5px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>]
|who)[<span class="float"><p style="top:-50px;left:-50px;">Who are you?</p><p style="top:5px;left:-26px;">Who are you?</p></span>]
|who)[<span class="float" style="top:-150px"><p style="top:-150px;left:-40px;">Who are you?</p><p style="right:-25px;top:150px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>]
|stop)[<p class="clear">"Stop!” you scream at last. (link-replace:"<span class=\"underdot\">\"Stop!\"</span>")[“Stop!" (t8n-delay: 1s)+(t8n:"dissolve")(show:?link-text)]</p>]
</span>
|link-text)[<p>They stop all at once, the echoes of their words quickly sinking beneath the relentless eternities of wind and wave.</p>
<p>In the quiet, you realise suddenly why their faces look so familiar: your fellow passengers are shades of you. [[Shades of your forgotten past]].</p>]
}{
(set: $day_counter to it + 1)(set: $ayya_1 to true)
<p>“Don’t let him get to you,” you tell Ayya. “You’ve had allergies forever. Right?”</p>
<p>She nods, then takes a forkful of the seaweed salad her aunt sent her to school with.</p>
<p>A stranger might think she’s been reassured, but you’ve known her since you moved here from the island. She’s by far the person you’re closest with, and you can see she’s trying not to succumb to a panic attack.</p>
<p>(Your memory flickers. What did you say?)</p>
<!--first dialogue choice-->
|first-chat>[
(set: $cycler to 1)
<p>
|first-cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[ (link-replace: "<span class=\"underdot\">If anyone here is sick, it’s Jullen</span>")[<p>“If anyone here is sick,” you say, “it’s Jullen. That whole ‘calling it spirit sickness’ shtick is reactionary garbage, so he’s clearly the sort of person who’d rather blame someone else and not take precautions.”</p>
<p>“<em>What</em>?” Jullen sputters.</p>
<p>“Hey, no offence, bud,” you say with a smirk. “You’re just doomed to catch supernatural diseases and have your skin turn to ice or whatever.”</p>(set: $anger_count to it + 1)(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
<!--first dialogue cycler-->
(click-rerun: ?first-cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">If anyone here is sick, it’s Jullen</span>")[<p>“If anyone here is sick,” you say, “it’s Jullen. That whole ‘calling it spirit sickness’ shtick is reactionary garbage, so he’s clearly the sort of person who’d rather blame someone else and not take precautions.”</p>
<p>“<em>What</em>?” Jullen sputters.</p>
<p>“No offence, bud,” you say with a smirk. “You’re just doomed to catch supernatural diseases and have your skin turn to ice or whatever.”</p>(set: $anger_count to it + 1) (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[ (link: "<span class=\"underdot\">The symptoms are nothing like this</span>")[<p>“The symptoms are nothing like this,” you remind her. “I know it’s scary, but sneezing and a runny nose aren’t anything like what people are calling ‘spirit sickness’.” You set a hand atop hers. “You’ll be fine. I promise.”</p> (set: $observe_count to it + 1)(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else:)[
(replace: ?link-text)[(link-replace: "<span class=\"underdot\">Don’t worry. When your head melts I’ll use your skull as a soup bowl</span>")[<p>“Don’t worry,” you tell Ayya, resting one hand atop hers. “When your head melts I’ll use your skull as a soup bowl.”</p>
<p>Jullen looks at you as if he’s thinking how hard he can hit you, but Ayya just laughs, abrupt and surprised. “What kind of soup?” she asks.</p>
<p>“Hmmmm,” you say, drawing out the sound. “Tomato and cheese. Or perhaps a nice miso. But don’t worry, I’d never use your soup skull for chicken noodle. I’m not a <em>monster</em>.” (set: $whackadoodle to it + 1) (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
]
<!--first response -->
|first-response)[
(hide: ?first-cycle)
<p>“Thanks,” Ayya says, shaking her head ruefully. “You always know just what to say to make me feel better.”</p>
<p>“Any time,” you reply. “What are friends for?”</p>
<p>Jullen snorts derisively, not bothering to hide what he thinks (link-replace:"<span class=\"underdot\">about your position as her friend</span>")[about your position as her friend(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>
]
|endlink)[
<p>You fix him with a look. “You’re the one who brought it up. Blame yourself, if you don’t like how I dealt with it.”</p>
<p>Since you aren’t outright fighting, Ayya ignores you both—you decide to be the bigger person for once and [[follow her example->day 1]].</p>
]
}{
(if: $ayya_response is 1)[
(set: $anger_counter to it + 1)
<p>Whether it’s gods and spirits or alchemists meddling with powers beyond human reckoning, you don’t care. You curse them, loud and long, while Ayya lies there breathing slow and staring up at nothing.</p>
]
(else-if: $ayya_response is 2)[
(set: $observe_counter to it + 1)
<p>You collapse at Ayya’s side, clutching her remaining hand in both of yours. “It’s okay,” you tell her, although it’s clearly not. “Everything is going to be okay.”</p>
<p>And then you sit and you watch her final moments as she lies there breathing slow and staring up at nothing.</p>
]
(else:)[
(set: $despair_counter to it + 1)
<p>You collapse at Ayya’s side, sobbing openly. You should say something reassuring, or swear vengeance, or something. You know you should.</p>
<p>But what good would it do? Nothing you can do here and now will help Ayya at all. So instead you just sit there, chest heaving with sorrow, as she lies there breathing slow and staring up at nothing.</p>
]
<p>The worst of it, in some ways, is that she seems to have no clear idea of who or where she is. Of what’s happened and what’s going to happen.</p>
<p>She simply stares, eyes flitting back and forth across the classroom’s ugly ceiling, with a curious smile on her face. Her hair wafts up around her head in an unreal breeze, a disturbingly liquid shimmer rippling across her exposed skin with every third or fourth breath she takes.</p>
<p>“I’m here," you tell her, your voice urgent. (link-replace:"<span class=\"underdot\">“I’ve got you.”</span>")[“I’ve got you.”(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)]</p>
|endlink)[
<p>That’s all you have time for.</p>
<p>Suddenly, Ayya’s whole body flashes, the brightness of it obscuring your vision. When you can see again, there is nothing before you but a scintillating pool of rich blue water, which releases a slow stream of more white butterflies. They fly around the ceiling, where Ayya was looking, and then [[they, too, disappear->interstitial]].</p>
]
}{
(set: $solo to false)
<p>You turn to your shades. “Who am I?” you ask them. “Who was I? Who will I be?”</p>
<span class="clear">
(display: "shades")
(if: $location is 2)[
(set: $current_link to "the village of your youth")
(if: $village_finished is true)[(set: $current_loc to "the island of your youth")]
(else:)[(set: $current_loc to "the island before you")]
]
(else-if: $location is 3)[
(set: $current_link to "the thriving island city")
(if: $city_finished is true)[(set: $current_loc to "the city where you lived after leaving your home")]
(else:)[(set: $current_loc to "the still-thriving city")]
]
(else-if: $location is 4)[
(set: $current_link to "the lonely island")
(if: $island_finished is true)[(set: $current_loc to "the island where you suffered under your master’s thumb")]
(else:)[(set: $current_loc to "the lonely island")]
]
(else-if: $location is 5)[
(set: $current_loc to "the ruins")
(set: $current_link to "the ruins")
]
(else-if: $location is 6)[
(set: $current_loc to "the maelstrom in the waters")
(set: $current_link to "the underwater cave")
]
(else:)[
(set: $current_loc to "the impassable wall")
(set: $current_link to "the impassable wall")
]
<p class="clear">That seems to be all your shades can offer you...for now.</p>
<p>(link: "Return your attention to $current_loc")[(goto: $current_link)].</p>
}{
<h1>Credits</h1>
<p><em>Crescent Sea Stories</em> was created and written by Stewart C Baker. All assets listed, and other thanks, credits, and acknowledgements, are below.</p>
<h2>License</h2>
<p>Unless otherwise noted below, this game is released under a <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.en">CC-BY-NC-ND license</a>.</p>
<h2>Design Elements</h2>
<p><img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon"> Refresh icon by <a href="https://www.flaticon.com/free-icon/refresh-page-option_25429?">Dave Gandy</a>, used under a CC-BY license. Colour modified by the author.</p>
<p>Colour palettes selected from <a href="https://colorhunt.co">colorhunt.com</a>, an open collection of user-created palettes, and <a href="https://davidmathlogic.com/colorblind/#%23648FFF-%23785EF0-%23DC267F-%23FE6100-%23FFB000">coloring for colorblindness</a>, which does what it says on the tin.</p>
<p>The map and other graphical elements are hand drawn on Arches cold press watercolour paper, and painted with a light watercolour wash. I used the excellent tutorials from <a href="https://www.mapeffects.co/">mappeffects.co</a> as references for mountains and things.</p>
<h2>Audio</h2>
<p>This game uses the following audio tracks, all of which are created by <a href="http://purrplecat.bandcamp.com/">Purrple Cat</a> and are used here with no modification under the terms of a <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC-BY-SA license</a>:</p>
<ul>
<li><a href="https://purrplecat.bandcamp.com/track/desert-rain">Desert Rain</a></li>
<li><a href="https://purrplecat.bandcamp.com/track/sandstorm">Sandstorm</a></li>
<li><a href="https://purrplecat.bandcamp.com/track/desolate">Desolate</a></li>
<li><a href="https://purrplecat.bandcamp.com/track/on-the-brink">On the Brink</a></li>
<li><a href="https://purrplecat.bandcamp.com/track/what-lies-beyond">What Lies Beyond</a></li>
<li><a href="https://purrplecat.bandcamp.com/track/fallen">Fallen</a></li>
</ul>
<h2>Code and Other Assets</h2>
<p>Audio enabled using the <a href="https://twinelab.net/harlowe-audio/#/">Harlowe Audio Library</a> (HAL) created by Chapel. HAL has been released into the public domain under the terms of <a href="https://github.com/ChapelR/harlowe-audio/blob/master/LICENSE">the Unlicense</a>.</p>
<h2>Beta Testers</h2>
<p>Many thanks as always to my beta testers!</p>
<p>In alphabetical order by first name, they are: Aletheia Knights; Craig Lincoln; E.D.E. Bell; Merc Fenn Wolfmoor; Stephen Granade.</p>
<h2>Miscellany</h2>
<p>The small bit of French in the “City” memory is from Isidore Lucien Ducasse’s <a href="https://fr.wikisource.org/wiki/Les_Chants_de_Maldoror_(1874)/Chant_I"><em>Les Chants de Maldoror</em></a>, an obscure work from the 1870s that greatly influenced the Surrealists. The French original is in the public domain. (The translation, if you’re curious, is something like “Me, I use my genius to paint the delights of cruelty.”) If you’d like to see the context for <em>that</em>, I heartily recommend the <a href="https://exactchange.com/books/p/comte-de-lautramont-maldoror-amp-the-complete-works"><em>Exact Change</em> translation</a> of Ducasse’s complete works.</p>
}{
(set: $lights_known to true)
<p>You turn away from the figures and gaze out at the ocean.</p>
<p>The light from your lantern is weak, and barely illuminates a circle a few metres wide. But it is not, you see as you look out at the waters, the only light there is. There’s (link-replace: "<span class=\"underdot\">something else</span>,")[something else, (t8n-delay: 1s)+(t8n:"dissolve")(show:?patterns)] far beneath the waves.</p>
|patterns)[
<p>You lean out over the gunwale, entranced by these other lights. They must be natural, although you cannot imagine how. They pulse like breathing, dart to and fro as though whatever makes them is skating along the bottom of the sea.</p>
<p>The patterns are beautiful and strange, but you do not watch them long. For when they flicker out, the surface of the ocean becomes mirror-clear, and (link-replace: "<span class=\"underdot\">you can see in it your face.</span>")[you can see in it your face. (t8n-delay: 1s)+(t8n:"dissolve")(show:?face)]</p>]
|face)[<p>Your face, which matches to a tee the one worn by the others in your boat. You clench your jaw, the motion at once involuntary and familiar, and look at them again, one after the other. They watch you, motionless and ghostly, eyes baleful, (link-replace: "<span class=\"underdot\">lips pursed shut</span>")[lips pursed shut (t8n-delay: 1s)+(t8n:"dissolve")(show:?link-text)], saying nothing.</p>]
|link-text)[<p>But what need have they to speak? Suddenly, it’s clear that they are shades of you. [[Shades of your forgotten past]].</p>]
}{
(set: $day_counter to it + 1)(set: $jullen_1 to true)
<p>“Shut it, Jullen,” you snap. “Ayya’s supposed to be your friend. Keep your shitty conspiracy theories to yourself instead of stressing her out over nothing.”</p>
<p>His jaw clenches at your words, and he at least has the decency to glance in Ayya’s direction. “Sorry, Ay,” he mutters. “I know you’re like this every spring.”</p>
<p>You think that’ll be the end of it, but then he looks back to you, glare hardening. “Spirit sickness isn’t a conspiracy theory, though. Haven’t you seen all the bulletins? Read the reports? It’s out there, and it’s killing people—<em>the spirits</em> are killing people.”</p>
<p>(Your memory flickers. What did you say?)</p>
<!--first dialogue choice-->
|first-chat>[
(set: $cycler to 1)
<p>
|first-cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[ (link-replace: "<span class=\"underdot\">The spirits have nothing to do with it</span>")[<p>“The spirits have nothing to do with it,” you snap. “I’ve read the reports <em>and</em> seen the bulletins, the only people talking about ‘spirit sickness’ are reactionary tools who don’t want to admit there are consequences for our own actions. Or are you forgetting that the first guy to get sick was casting curses on his ex-lover with the essence of a spirit he’d captured and imprisoned?”</p>(set: $anger_count to it + 1)(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
<!--first dialogue cycler-->
(click-rerun: ?first-cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">The spirits have nothing to do with it</span>")[<p>“The spirits have nothing to do with it,” you snap. “I’ve read the reports <em>and</em> seen the bulletins, the only people talking about ‘spirit sickness’ are reactionary tools who don’t want to admit there are consequences for our own actions. Or are you forgetting that the first guy to get sick was casting curses on his ex-lover with the essence of a spirit he’d captured and imprisoned?”</p>(set: $anger_count to it + 1) (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[ (link: "<span class=\"underdot\">The symptoms are nothing like this</span>")[<p>“The symptoms are nothing like this,” you remind him. “I kinda think we’d have noticed if Ayya started, you know, turning transparent or speaking backwards or if her eyes ignited or her skin sloughed off all at once.” You pause, then smirk. “Or perhaps <em>you</em> haven’t been paying attention to the bulletins?”</p> (set: $observe_count to it + 1)(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else:)[
(replace: ?link-text)[(link-replace: "<span class=\"underdot\">I know you are but what am I</span>")[<p>“I know you are but what am I,” you say. (Mature? Sure. You’re <em>real</em> mature. But you know this sort of thing gets right up Jullen’s nose.)</p> (set: $whackadoodle to it + 1) (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
]
<!--first response -->
|first-response)[
(hide: ?first-cycle)
<p>“Alchemic slime,” he swears. “Do you even hear yourself right now? I swear, I don’t know why Ayya hangs out with you. You’re <em>the worst</em>.”</p>
<p>The two of you stare daggers at one another, each (link-replace:"<span class=\"underdot\">waiting for the other to back down</span>")[waiting for the other to back down(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>
]
|endlink)[
<p>Ayya, as always, is the one who puts a stop to it.</p>
<p>With a weary sigh, she pinches her nose. “Guys, can we not do this today? I’m just... I’m tired.”</p>
<p>“Sure thing,” you say, at the same time as Jullen says, “Sorry, Ay.”</p>
<p>She gives you both an attempt at a smile and [[takes a bite of her food->day 1]].</p>
]
}{
<h2 class="center">1. Awakening</h2>
<p>“It is no secret. All power is one in source and end, I think. Years and distances, stars and candles, water and wind and wizardry, the craft in a man’s hand and the wisdom in a tree’s root: they all arise together. My name, and yours, and the true name of the sun, or a spring of water, or an unborn child, all are syllables of the great word that is very slowly spoken by the shining of the stars. There is no other power. No other name.”<br /><br /> — Ursula K. Le Guin, <em>A Wizard of Earthsea</em></p>
<p class="center">[[Continue->the boat]]</p>
}{
<p>(if: $i > 0)[(set: $i to 0)Frustrated, you ](else:)[You ] reach for the tiller with your right hand and make a sharp gesture in the air with your left. It is only when a strong breeze immediately comes down, turning the boat and starting you southward, that you wonder how you knew to make that particular motion. How you knew you were able to (link-replace:"<span class=\"underdot\">harness the winds.</span>")[harness the winds.(t8n-delay: 1s)+(t8n:"dissolve")(show:?winds)]</p>
|winds)[<p>Perhaps there are other powers, too, out there waiting for you to reclaim them. It’s food for thought, certainly, as you and your shades scud across the waters at a steady pace towards that outpouring of energy that [[lights up the sky]].</p>]
}{
<h1>Menu</h1>
<p>(link:"Return to Title")[(masteraudio:'stopall')(go-to:"Start")]</p>
<h2>Game State</h2>
<p>(link: "Save Game")[(display: "autosave")]</p>
(if: (saved-games: ) contains "Slot A")[
<p>(link: "Load Game")[(load-game:"Slot A")]</p>]
<h2>Walkthrough</h2>
<p><a href="Crescent%20Sea%20Story%20-%20Walkthrough.pdf" target="_blank">A PDF walkthrough of the game containing hints, maps, and solutions to puzzles is available at this link</a>. (link opens in a new tab).</p>
<h2>Download</h2>
<p><a href="Crescent%20Sea%20Story.zip" target="_blank">A ZIP file containing all game files, suitable for offline play, is available at this link</a>. (link opens in a new tab).</p>
}{
(track: 'sandstorm', 'fadeout', 5)
(track: 'desert', 'fadein', 25)
<p>The realisation invigorates you. Makes you determined to uncover who you were and what you were doing.</p>
<p>But before you can act on the impulse, a particularly strong swell passes beneath the boat. It yaws to one side, tipping you (link-replace:"<span class=\"underdot\">into one of your shades.</span>")[into one of your shades. (t8n-delay: 1s)+(t8n:"dissolve")(show: ?shades)]</p>
|shades)[<p>Your arm and shoulder sink into the shimmering form, jolting as your elbow strikes the floor of the boat beneath. You barely feel it—contact with the shade sends a searing pain through your body. Starting in your wrist, it burns up your arm, through your chest, up your throat and into your head. It feels like [[fire and death and agony]].</p>]
}{
(track: 'sandstorm', 'playwhenpossible')
<div class="map">
<img style="width:100%;" src="img/map.png" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" style="width:75%;max-width:650px; !important;" src="img/title.png" alt="Crescent Sea Story, by Stewart C Baker" />
</div>
<div class="text">
<p class="center">[[Play->note]] — [[Credits]] (if: (saved-games: ) contains "Slot A")[ —
(link: "Load Game")[(load-game:"Slot A")] ]</p>
<p class="center">(link-replace:"<span class=\"underdot\">Content Notes</span>")[Some scenes contain depictions of death, a pandemic (albeit supernatural), terminal illness, and violence.</p>
<p>If you are struggling with suicidal thoughts or other crises, help is available. Visit <a href="https://findahelpline.com/i/iasp">https://findahelpline.com/i/iasp</a> to find a helpline in your country.]</p>
</div>
}{
<p>“Toilet!” you blurt abruptly, jumping to your feet and fast-walking to the front of the room.</p>
<p>The teacher looks up from his meal with a sigh as you approach. “Toilet?” he asks, with a patently-fake smile. “You're excused. Be back before the bell.” He doesn't even bother to take off his headphones.</p>
<p>“Thanks,” you mutter, and duck out the door to the empty hallway.</p>
<p>Are you that obvious? You didn't think so. Oh well—at least he didn't stop [[your escape->the toilet]].</p>
}{
(set: $check_return to (passage:)'s name)
(set: $cycler to 1)
<p>The guardian of the northern isle approaches, ready to destroy you in defence of the gods.</p>
<p>You know it cannot be defeated with mere magic alone—perhaps not at all. You will need to split a portion of your very self off to remove the threat it poses and the arcane barrier it supports.</p>
<p>(Your memory falters. How did you get past this?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You split off a part of your analytical mind")[(set: $solution_type to 2)(display: "barrier check")] ] ]
(else:)[(replace: ?link-text)[ (link: "You split off a part of your despair")[(set: $solution_type to 3)(display: "barrier check")] ] ]
]
}{
(set: $check_return to (passage:)'s name)
(set: $cycler to 1)
<p>The guardian of the eastern isle approaches, its antennae twitching, ready to grasp you in its claws and devour you in defence of the gods.</p>
<p>You know you cannot best this foe with mere magic—perhaps it will be too strong for you entirely. You will need to split a portion of your very self off to remove the threat it poses and the arcane barrier it supports.</p>
<p>(Your memory falters. How did you get past this?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You split off a part of your analytical mind")[(set: $solution_type to 2)(display: "barrier check")] ] ]
(else:)[(replace: ?link-text)[ (link: "You split off a part of your despair")[(set: $solution_type to 3)(display: "barrier check")] ] ]
]
}{
(if: $cave_visited is false)[
(if: $tasks_complete < 6)[
(if: $force_known is false)[
<p>A flickering, barely-there magic force prevents you from entering this cave.</p>
(set: $force_known to true)
]
(else:)[
<p>Try as you might, you cannot get past the force field.</p>
]
]
(else:)[
(if: $force_known is false)[
<p>A flickering, barely-there magic force prevents you from entering this cave.</p>
<p>You step forward, anger boiling over, and thrust one hand directly into it.</p>
(set: $force_known to true)
]
(else:)[
<p>You step forward, anger boiling over, and thrust one hand into the force field that blocks the cave.</p>
]
<p>The pain is immense, but you grit your teeth and answer its power with your own, a surge of light and power that burns brighter than the sun. You close your eyes instinctively, then open them again, blinking, as you feel the other magic fade and die.</p>
<p>And then you (link-replace:"<span class=\"underdot\">step inside</span>")[step inside(t8n-delay: 1s)+(t8n:"dissolve")(show:?inside)].</p>
|inside)[
(set: $cave_visited to true)(set: $wizard_options to it + 1)
<p>At first glance, the cave itself holds nothing of interest.</p>
<p>But as you step in from the sunny beach outside, your vision adjusts, and you can see what it contains: dozens of stone markers, narrow and tall, (link-replace:"<span class=\"underdot\">each carved with sigils</span>")[each carved with sigils(t8n-delay: 1s)+(t8n:"dissolve")(show:?sigils)].</p>]
|sigils)[<p>You squat before one of the markers and run your hands across its carvings. As you do, a chill pierces your very soul.</p>
<p>These markers are graves. Worse, really. Because carved on each is powerful magic. Magic that siphons off the life force of those buried beneath and feeds it to its master.</p>
<p>(link-replace:"<span class=\"underdot\">To <em>your</em> master</span>")[To <em>your</em> master(t8n-delay: 1s)+(t8n:"dissolve")(show:?hand)].</p>
]
|hand)[<p>Because you recognise your master’s hand in the sigils. He has never spoken of this place. Never acknowledged that he had any other apprentice.</p>
<p>You have always found his methods frustrating and obscure. Now, you view them with new eyes. Is this why he never teaches you? Is this dark, cool cave what <em>your</em> future holds?</p>]
]
]
(else:)[
<p>You return to the cave, taking in once again its many burial markers. Your throat is tight, and you wonder if this will be your fate as well.</p>
]
<p>Behind you, the beach leads back around the island [[to the familiar path->path c]].</p>
}{
(set: $cycler to 1)
<p>More streams of power stretch out into your shades, burying into their abdomens. Each stream is mirrored by a more powerful flow of silver-blue from the top of each head. This light arcs out into the vast night ocean in five different directions, (link-replace:"<span class=\"underdot\">vanishing into the middle distance</span>")[vanishing into the middle distance(t8n-delay: 1s)+(t8n:"dissolve")(show:?arc)] just before the horizon.</p>
|arc)[<p>You follow each arc with your eyes and your mind as far as you can, but you cannot find where they lead. As you do, you see (if: $lights_known is true)[the lights you spotted earlier, deep beneath the surface of the waves. These, too, glow with power just like the lantern and the shades.](else:)[strange lights nearby as well, far beneath the surface, swaying back and forth with the waves, emanating power.(set: $lights_known to true)] But these smaller bursts and arcs don’t hold your attention.</p>
<p>For there’s another source of arcane energy calling to you, far to the south. And this one is no stream—not even the flow of a river—but an ocean’s worth of power, lighting up the sky in (link-replace:"<span class=\"underdot\">an inverted aurora</span>")[an inverted aurora(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[Sail away from it] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[You cannot turn away (set: $i to it + 1) ] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[Sail away from it] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[You cannot turn away (set: $i to it + 1) ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ [[Sail towards it]] ] ]
(else:)[(replace: ?link-text)[ |link-2>[Dive into the waves] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-2)[You cannot even stand (set: $i to it + 1)] ] ]
]
}{
(if: $merchants_seen is false)[
<p>You tell Anil you’re bored, and they shrug. “Why not explore the road to the north of town?" they ask.</p>
<p>You gasp, faintly scandalised. “I’m not supposed to go there.”</p>
<p>Anil just grins. “That’s why it’s exciting. [[Off you go->beach]], now, and may the spirits keep you safe.” (The last, with a wink.)</p>
]
(else-if: $headwoman_notified is false)[
<p>You tell Anil what you’ve seen, and they frown. “News like that, you should tell the headwoman.”</p>
<p>Well. It’s not as if you didn’t already know that.</p>
<p>Something tugs at the line on their rod, and they turn away from you. “[[Off you go->beach]], now.”</p>
]
(else-if: $guard_known is false)[
<p>You tell Anil you can’t stop thinking about the (if: $merchants_found is false)[shape in the road](else:)[outsiders in the road], and they nod in understanding.</p>
<p>“I shouldn’t be telling you this,” they say. “But I heard a couple of the others say the headwoman put (if: $merchants_found is false)[something](else:)[them] in the storage hut, under guard and key. [[Off you go->beach]], now.”</p>
]
(else-if: $guard_gone is false)[
<p>You tell Anil about the guard, and they raise one eyebrow. “If you want to (if: $merchants_found is false)[see what’s in the hut](else:)[speak to the outsiders again], you’ll have to get past.”</p>
<p>You fix them with your most frustrated look, and after a minute they laugh.</p>
<p>“I know. That’s why you’re here. I suppose I shouldn’t really tell you this, but there’s only one thing in this village stronger than an order from the headwoman, and that’s the meeting gong.</p>(set: $gong_problems to true)
<p>(if: $ladder_retrieved is false or $rock_retrieved is false)[“](if: $ladder_retrieved is false)[There should be a ladder tall enough to reach it in your dad’s mess of tools. ](if: $rock_retrieved is false)[I saw some nice-sized rocks in the northern part of the cliff path the other day. I bet they’d make a lovely hammer.] (if: $ladder_retrieved is true and $rock_retrieved is true)[“][[Off you go->beach]], now.”</p>
]
(else:)[<p>Anil gives you a distracted nod. “Sorry, kid. I’ve finally got a good bite. [[Off you go->beach]], now.”</p>]
}{
(if:(save-game:"Slot A"))[
(if: (saved-games:) contains "Slot A")[
<p>(Your progress has been saved.)</p>](else: )[
<p>Something went wrong, and your game was unable to save.</p>
]
]
}{
(set: $current_isle to 1)
<p>You guide your boat across the water to the shore of the northern island, where you find a humble wooden dock jutting out into the sea.</p>
<p>The island beyond it is all gentle slopes and green grasses, many-coloured flowers that line a well-tended gravel path winding upwards to a copse of pine and maple at its peak.</p>
<p>It looks peaceful. Idyllic. But you know it is one source of the barrier that hides the bounty of the gods’ power, and that means you must [[shatter its calm->the copse]].</p>
}{
(set: $current_isle to 2)
<p>You guide your boat across the water to the eastern island, which rises abruptly from the sea to a dizzying height, its slopes all sharp rock and jagged edges.</p>
<p>There is no dock here, but you eventually find a section of shoreline that’s flat enough to hold your boat secure. You tie it to a handy boulder, then pause to look up to the peak far above.</p>
<p>This place is menacing. Lifeless. But you know it is one source of the barrier that hides the bounty of the gods’ power, and that means you must [[conquer its harshness->the peak]].</p>
}{
(set: $current_isle to 3)
<p>You guide your boat across the water to the southern island, which is covered in slick, modern buildings.</p>
<p>There is an automated dock, which receives your boat so gently you can barely tell it has been secured. Beyond, on the island proper, moving walkways lead inexorably through the gleaming glass and neon lights and up towards the top of a hill.</p>
<p>The illusion of a thriving city is almost complete—save for the lack of any human life. All the same, it is one source of the barrier that hides the bounty of the gods’ power, and that means you must [[find a way to overcome it->the city]].</p>
}{
<!--check each solved island to see if the player has enough of the type of energy they are trying to split off to take down the barrier-->
(set: $solved to false)
(if: $solution_type is 1)[
(if: $rage_isles > 0)[(set: $solved to true)(set: $rage_count to it + 1)(set: $rage_isles to it - 1)]
]
(else-if: $solution_type is 2)[
(if: $cold_isles > 0)[(set: $solved to true)(set: $cold_count to it + 1)(set: $cold_isles to it - 1)]
]
(else-if: $solution_type is 3)[
(if: $despair_isles > 0)[(set: $solved to true)(set: $despair_count to it + 1)(set: $despair_isles to it - 1)]
]
(if: $solved is true)[
(if: $current_isle is 1)[(go-to: "the statue cast down")]
(else-if: $current_isle is 2)[(go-to: "the mantis devoured")]
(else-if: $current_isle is 3)[(go-to: "the dead city")]
(else:)[(go-to: "the drained lagoon")]
]
(else:)[
(replace: ?passage)[
(if: $current_isle is 1)[<p>You try to rip a portion of your (if: $solution_type is 1)[rage](else-if: $solution_type is 2)[coldness](else:)[despair] free from your sense of self and set it on the statue, but nothing comes loose—you do not have enough of that feeling within you to successfully create a shade that knows your will.</p>
<p>With its malevolent jackdaw screams, the guardian closes on you, its swords (link-replace:"<span class=\"underdot\">slicing you to pieces</span>")[slicing you to pieces(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
(else-if: $current_isle is 2)[<p>You try to rip a portion of your (if: $solution_type is 1)[rage](else-if: $solution_type is 2)[coldness](else:)[despair] free from your sense of self and use it to destroy the mantis but nothing comes loose—you do not have enough of that feeling within you to successfully create a shade that knows your will.</p>
<p>With an eerie silence and a speed beyond what you expected, the mantis strikes, (link-replace:"<span class=\"underdot\">its arms snapping closed around your shoulders, sharp as death</span>")[its arms snapping closed around your shoulders, sharp as death(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
(else-if: $current_isle is 3)[<p>You try to rip a portion of your (if: $solution_type is 1)[rage](else-if: $solution_type is 2)[coldness](else:)[despair] free from your sense of self and ... but nothing comes loose—you do not have enough of that feeling within you to successfully create a shade that knows your will.</p>
<p>The temperature inside the building drops, rapidly becoming frigid. You can’t breathe, can’t move, can’t... The darkness closes in, your vision tunnelling to a single point, and then (link-replace:"<span class=\"underdot\">all thought ceases</span>")[all thought ceases(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
(else:)[<p>You try to rip a portion of your (if: $solution_type is 1)[rage](else-if: $solution_type is 2)[coldness](else:)[despair] free from your sense of self and ... but nothing comes loose—you do not have enough of that feeling within you to successfully create a shade that knows your will.</p>
<p>The giant turtle turns and sinks beneath the waves of the lagoon, swamping you with a wave that is hotter than boiling oil. (link-replace:"<span class=\"underdot\">It burns off your flesh before it can drown you</span>")[It burns off your flesh before it can drown you(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[<p>No... No!</p>
<p>That isn’t how it happened. That isn’t what defeated you.</p>
<p>(link: "You struggle to remember.")[(go-to: $check_return)]</p>]
]
]
}{
(set: $current_isle to 4)
<p>You guide your boat across the water to the western island—little more than an atoll, it barely breaks the surface of the waves.</p>
<p>You easily pull your boat up onto the sands, then look around. There really is nothing here. No life. No rocks. Not even a tree or two to shelter under.</p>
<p>What there is, though, is a central lagoon, vibrant blue and teeming with small silver fish. Or... more than fish, you realise. These little silver creatures are more spirit than animal.</p>
<p>And in amongst them, one larger beast: a massive turtle, its shell dotted with crackling fire that does not seem to affect the water in which it swims. This last is clearly the guardian of the island, the being that helps uphold the barrier. That means you must [[find a way to destroy it->the lagoon]].</p>
}{
<p>You are standing on the beach.</p>
<p>Behind you [[to the north->meeting place]], the amphitheatre climbs up the hillside to the village. Further [[to the south->water’s edge]], there is nothing but the water’s edge and a few fisher-folk standing in the waves.</p>
}{
(set: $cycler to 1)
<p>You are in your master’s cabin.</p>
<p>Your master is pottering about the place, as usual, (if: $has_task is true)[no doubt waiting for you to finish this latest chore](else:)[probably thinking up what menial task to give you next].</p>
(if: $current_task is 7)[<p>(if: $sweep_count is 4)[The floor is finally spotless.](else:)[You’ve been ordered to [[sweep the floor]], and should probably get to work. (if: $sweep_count is 1)[You wonder where all this dust even came from.](else-if: $sweep_count > 2)[It’s looking much cleaner, but you’re not finished yet.](else:)[To be fair, it is <em>quite</em> dusty in here.]</p>] ]
(if: $cave_visited is true)[<p>You know you need to ask him about what lies within the cave at the beach’s end.</p>](else-if: $tasks_completed is 8)[<p>Welp. Surely he can’t have anything other than that. You've got to calmly confront him about what he’s doing to you.</p>](else-if: $tasks_completed > 6)[<p>Honestly? You’re not even pissed anymore. You’re genuinely curious how much bullshit your master has up his sleeve for you.</p><p>Maybe if you finish it all, something interesting will happen.</p>](else-if: $tasks_completed > 3)[<p>You’re absolutely furious at how your master is wasting your time—just like always.</p><p>This cannot stand. You must confront him.</p>](else-if: $tasks_completed > 1)[<p>You feel your familiar frustration growing, although you are not yet at breaking point.</p>]
|leave-cabin>[<p>You can [[leave the cabin->path a]] or (link-replace:"<span class=\"underdot\">speak to your master</span>")[speak to your master(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)(hide:?leave-cabin)].</p>]
|endlink)[
<p>(Your memory falters. What did you do here?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (if: $has_task is true)[ [[You asked for help with your task->task helper]] ](else:)[ [[You asked for a lesson->task master]] ] ]</p>]
(click-rerun: ?cycle)[
(if: $cycler is $wizard_options)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (if: $has_task is true)[ [[You asked for help with your task->task helper]] ](else:)[ [[You asked for a lesson->task master]] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (if: $has_task is true)[ [[You reported on your task->task master]] ](else:)[ [[You asked for your next chore->task master]] ] ] ]
(else-if: $cycler is 3)[(replace: ?link-text)[ (if: $has_task is true)[ [[You asked for a new task->task replace]] ] (else:)[(link:"You exploded with anger")[(if: $tasks_complete > 3)[(goto: "confrontation")] (else:)[ (transition:"blur")+(t8n-delay:1s)+(replace: ?link-text)[No... not yet.] ] ] ] ] ]
(else-if: $cycler is 4)[(if: $tasks_complete is 8)[ (replace: ?link-text)[ [[You calmly confronted your master->calmfrontation]] ] ](else:)[ (replace: ?link-text)[ [[You asked about the graves->godfrontation]] ] ] ]
(else:)[(replace: ?link-text)[ [[You asked about the graves->godfrontation]] ] ]
]
}{
(set: $cycler to 1)
|rim>[
<p>From your vantage at the caldera rim, you can see through the rising smoke to the roiling lava far below, deep within the centre of the volcanic island.</p>
<p>There is a platform there—a hexagonal thing of stone and gold and precious gems, apparently impervious to the heat of its surroundings. And at the platform’s centre lies a dragon, tail curled around its massive body. Watching you. Waiting.</p>
<p>This must be what the gods have poured their essence into. The creature they hope to use to erase the threat you pose them.</p>
<p>All you have to do is (link-replace:"<span class=\"underdot\">reach it</span>")[reach it(t8n-delay: 1s)+(t8n:"dissolve")(show:?challenge)].</p>
|challenge)[
(if: $rage_count > 2)[(display: "second rage")](else-if: $despair_count > 2)[(display: "second despair")](else:)[(display: "second calculation")]
]
]
}{
(set: $island_type to 2)(set: $cold_isles to it + 1)(set: $in_memory to false)
<p>You have completed every task this charlatan set you—today and on many other days you’ve spent on this isle. Your rage curdles inside you, mixing with your determination to become powerful until it cools and forms and hardens.</p>
<p>Your master must know something of what goes on within you, for he fixes you with a glare. Although designed to put you in your place, the look does no such thing. It only solidifies your resolve.</p>
<p>You... <em>reach</em>... unsure of exactly how or for what, and (link-replace:"<span class=\"underdot\">something inside of you <em>twists</em></span>")[something inside of you <em>twists</em>(t8n-delay: 1s)+(t8n:"dissolve")(show:?ice)].</p>
|ice)[<p>Ice bursts from your hands, forming jagged frozen spikes that measure the depth of your discontent. Your master raises one arm, fury flashing in his eyes now, and liquid lightning pools in the ceiling, striking you over and over. The pain is intense, and for a moment you black out.</p>
<p>But then your determination returns. The determination, and with it that twisting, reaching sensation. Power floods into you again, but this time it does not create ice—it pours from your fingertips and into your master, turning first his feet, then his legs, then his torso and head to (link-replace:"<span class=\"underdot\">the purest obsidian</span>")[the purest obsidian(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>He does not even have time to scream before it is over, and you stand facing the man you thought would teach you, taking in his eternal expression of shock. It’s almost comical, really. Or perhaps that’s the sudden rush to your head, the way you feel weak and woozy.</p>
<p>You know this is your chance. You can read his books to your heart’s content now. Learn everything you want. Become powerful. Steer the world in the direction it ought to go. [[But there, the memory ends->island end]].</p>
]
}{
(set: $cave_steps to it + 1)
(if: $cave_steps > 40)[
<p>Cold hatred burns within you at the thought of whoever—whatever—trapped you here.</p>
<p>(if: $ruins_finished is true)[The gods, you presume, and the spirits. For after what you remember of the rooftop, you feel certain they are your foes.](else:)[For this place is intended as your prison and your grave, you are sure of that even with your memory in pieces.]</p>
<p>Your fury builds at the thought, bitter as ice and implacable as the sea. You vow they will not keep you here. You <em>will</em> escape. You <em>will</em> regain your power. You <em>will</em> have vengeance, [[no matter how long it takes->cave-cold]].</p>
]
(else:)[
(if: $intrusive_thoughts's length is 0)[
(set: $intrusive_thoughts to (a:"you deserve every bit of this", "you brought this on yourself", "you’ll never escape this place", "there’s no point in trying", "it doesn’t matter—nothing does", "you should just stay here forever: lost, forgotten, alone", "this punishment is just", "best to just surrender, and let the worst happen"))
]
(if: $cave_steps % 3 is 0)[
<p>You feel (if: $cave_steps < 10)[a faint](else-if: $cave_steps < 25)[a faint, but insistent](else-if: $cave_steps < 40)[a strong](else:)[an intense] pull deep within you. It’s coming from (if: (passage:)'s name is "promontory")[just north of here](else-if: (passage:)'s name is "ravine")[right here(if: $ravine_visits < 3)[—but then it’s gone. Perhaps you need to come back later]](else:)[the southern part of the tunnel loop].</p>
]
(if: $cave_steps % 5 is 0)[
(set: $current_thought to $intrusive_thoughts's random)
(set: $intrusive_thoughts to ($intrusive_thoughts - (a: $current_thought)))
<p>An intrusive thought surfaces in the maelstrom of your mind: <em>(print: $current_thought).</em></p>
]
]
}{
(enchant: ?who's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 30) + (t8n:"blur"))
(display: "autosave")
<script>$('html').removeClass("memory");</script>
(set: $has_traveled to false)
(if: $cave_finished is false)[(set: $cave_finished to true) (set: $memories_gained to it + 1)
<p>This memory feels fresh, as though it only just happened—and perhaps it did. You look once again at the whirlpool, picturing the caves that lie beyond it, and realise you feel more sure of yourself now. Of (link-replace:"<span class=\"underdot\">who you were</span>")[who you were(show:?shadehook)] and who you still could be.</p>
|shadehook)[
<p>The shade that represents this memory speaks:</p>
<span class="clear"> </span>
<span class="shades">
|who>[
(if: $cave_finished is false)[
<span class="float" style=""><p style="left:-40px;">Who are you?</p><p style="right:-25px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>
]
(else-if: $cave_type is 1)[
<span class="float" style="color:#DC267F;"><p style="left:-40px;">I escaped that prison.</p><p style="right:-25px;">I grew stronger!</p><p style="top:10px;left:50px;">My enemies could not contain me.</p><p>I will destroy them.</p></span>
]
(else-if: $cave_type is 2)[<span class="float" style="color:#FE6100;"><p style="top:left:-40px;">I wandered for ages.</p><p style="right:-25px;">Lost. Alone.</p><p style="top:10px;left:50px;">Eventually I found my way.</p><p>I will not be imprisoned again.</p></span>]
(else:)[<span class="float" style="color:#785EF0;"><p style="left:-40px;">I could not die.</p><p style="right:-25px;">The dark was endless.</p><p style="top:10px;left:50px;">Those lonely caves...</p><p>I had to get out.</p></span>]
]
</span>
<span class="clear"> </span>
(t8n-delay: 1s)+(t8n:"dissolve")(show:?endhook)
]
|endhook)[
<p style="clear:both;">Once the overlapping speech fades, you turn to face [[the open seas->the lonely island]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>]
]
(else:)[
<p style="clear:both;">The memory feels fresh, as though it only just happened—and perhaps it did. You look once again at the whirlpool, picturing the caves that lie beyond it, and then you turn to face [[the open seas->the underwater cave]].</p>
<p>Once the shade’s speech fades, you turn to face [[the open seas->the underwater cave]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>
]
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The Caves</h1>
|memory>[<p>Misery.</p>
<p>Agony.</p>
<p>An endless loop.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->cave_1]]</p>
(if: $cave_finished is true)[<p>(Your current memory of this place is one of (if: $cave_type is 1)[rage](else-if: $cave_type is 2)[cold observation](else:)[despair]. Revisiting this memory will reset that. Don’t want to remember things differently? You can [[return to the map->the underwater cave]].)</p>]
]
}{
(set: $cave_steps to 0)
(set: $intrusive_thoughts to (a:"you deserve every bit of this", "you brought this on yourself", "you’ll never escape this place", "why bother trying", "it doesn’t matter—nothing does", "you should just stay here forever: lost, forgotten, alone", "this punishment is just", "the gods are right to punish you"))
(set: $current_thought to "")
(set: $ravine_visits to 0)
(set: $rockfall_visit to false)
(set: $fork_a_visit to false)
(set: $curve_a_visit to false)
(set: $curve_b_visit to false)
(set: $curve_c_visit to false)
(set: $curve_d_visit to false)
(set: $fork_b_visit to false)
(set: $lake_visit to false)
(set: $ravine_visit to false)
(set: $promontory_visit to false)
(if: $cave_finished is true)[
(if: $cave_type is 1)[(set: $rage_isles to it - 1)]
(else-if: $cave_type is 2)[(set: $cold_isles to it - 1)]
(else:)[(set: $despair_isles to it - 1)].
]
}{
(set: $cave_type to 2)(set: $cold_isles to it + 1)(set: $in_memory to false)
<p>You do not remember what happened after that.</p>
<p>But, sure as you are now on the surface, you must eventually have found some way to escape. Even if it took hundreds of years, you eventually overcame the power of (if: $ruins_finished is true)[the gods](else:)[whoever sought to bind you]. Your analytical mind regained its own power and you rose above that enemy’s intentions.</p>
<p>And you will rise, too, above whatever other obstacles you face from here on out. [[You know it with a bone-deep certainty->cave end]], buoyed up by your long, dark solitary deep below the ocean in the bowels of the earth.</p>
}{
(set: $cave_type to 1)(Set: $rage_isles to it + 1)(set: $in_memory to false)
<p>You tore into the flesh with tooth and nail, rending huge chunks of it, stuffing it into your mouth. Choking it down despite the fury that threatened to rise in your gorge.</p>
<p>You do not remember what happened after that.</p>
<p>But, sure as you are now on the surface, you escaped. The power you regained from that dead and hidden god was more than enough to counter (if: $ruins_finished is true)[the gods who still lived](else:)[whoever sought to bind you].</p>
<p>And you will continue to work against them, too, above whatever other obstacles you face from here on out. [[You know it with a bone-deep certainty->cave end]], buoyed up by your long, dark solitary deep below the ocean in the bowels of the earth.</p>
}{
(set: $cave_type to 3)(set: $despair_isles to it + 1)(set: $in_memory to false)
<p>You tore into the flesh with teeth and nail, rending huge chunks of it, stuffing it into your mouth. Choking it down as you sobbed with despair and dismay. Wishing you had any other way forward than this.</p>
<p>You do not remember what happened after that.</p>
<p>But, sure as you are now on the surface, you escaped. The power you regained from that dead and hidden god was more than enough to rise above (if: $ruins_finished is true)[the gods who still lived](else:)[whoever sought to bind you].</p>
<p>And you will continue to rise, too, above whatever other obstacles you face from here on out. [[You know it with a bone-deep certainty->cave end]], buoyed up by your long, dark solitary deep below the ocean in the bowels of the earth.</p>
}{
(display: "cave startup")
(track: 'desolate', 'fadein', 5)
<script>$('html').addClass("memory");</script>(set: $in_memory to true)
<p>It has not been long since you wandered in the caves that curve beneath the sea, here at the eastern edge of the rocky spires that seem to stretch forever.</p>
<p>Cold air; inescapable dimness; the slow, steady drip of water. As the memory floods back in, you can’t help but shudder.</p>
<p>You wandered so long you felt sure you would haunt those winding caverns for eternity. It is ironic, in some ways: had you not been encased in those despairing depths, you never would have taken [[the first step to reclaiming your power->rockfall]].</p>
}{
<script>$('html').removeClass("memory");</script>
(display: "autosave")
(set: $has_traveled to false)
(if: $city_finished is false)[(set: $city_finished to true) (set: $memories_gained to it + 1)
<p>It feels like it all happened a very long time ago—and perhaps it did. You look at the lights of the city in the middle distance and realise you feel more sure of yourself now. Of (link-replace:"<span class=\"underdot\">who you were</span>")[who you were(show:?shadehook)] and who you still could be.</p>
|shadehook)[
<p>The shade that represents this memory speaks:</p>
(set: $solo to true)(set: $speaker to 2)
(display: "shades")
(t8n-delay: 1s)+(t8n:"dissolve")(show:?endhook)
]
|endhook)[
<p class="clear">Once the overlapping speech fades, you turn to face [[the open seas->the thriving island city]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>]
]
(else:)[
<p class="clear">It feels like it all happened a very long time ago—and perhaps it did. You look again at the lights of the city in the middle distance, and then you turn to face [[the open seas->the thriving island city]].</p>
<p>(If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>
]
}{
(set: $in_memory to false)
<p>There was more that happened after that, of course. But those two days, for all that they were a short time, felt like the centre of everything.</p>
(if: $despair_counter > $observe_counter and $despair_counter > $anger_counter)[(set: $city_type to 3)(set: $despair_isles to it + 1)<p>And all you did was hide. Cower, afraid of everything. It's no wonder that you didn’t make a difference. That Ayya got sick. That she died.<p>]
(else-if: $observe_counter > $anger_counter and $observe_counter > $despair_counter)[(set: $city_type to 2)(set: $cold_isles to it + 1)<p>You took careful note of all of it, but you didn’t make a difference. Ayya still got sick. She still died.<p>]
(else:)[(set: $city_type to 1)(set: $rage_isles to it + 1)<p>And despite your getting involved, despite your trying to get Jullen and Kerixia to <em>see</em>, you didn’t make a difference. Ayya still got sick. She still died.<p>]
<p>And the city, and most of your classmates, went on as if that didn’t matter at all. It (if: $city_type is 3)[drove you to despair.](else-if: $city_type is 2)[tracked with what you’d always seen in these people.](else:)[made you simmer with fury—fury at the spirits, fury at the gods, but also fury at those who called themselves human.] You swore that, once you were done in this place, you wouldn't be so complacent. You’d seek out someone else who could teach you more. Someone who could help you (if: $city_type is 3)[stop this from happening to anybody else](else-if: $city_type is 2)[learn enough to solve any problem](else:)[take revenge].</p>
<p>[[But that memory comes later->city end]].</p>
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The City</h1>
|memory>[<p>Fear.</p>
<p>Sickness.</p>
<p>A loss held dear.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->city_1]]</p> (if: $city_finished is true)[<p>(Your current memory of this place is one of (if: $city_type is 1)[rage](else-if: $city_type is 2)[cold observation](else:)[despair]. Revisiting this memory will reset that. Don’t want to remember things differently? You can [[return to the map->the thriving island city]].)</p>]
]
}{
(set: $day_counter to 0)
(set: $day_num to 1)
(set: $day_rand to (a: "shaking your head at a too-exuberant performer climbing into the sky on an invisible rope—hardly a sophisticated example of befriending the spirits and borrowing their power", "stopping at the hypermarket to pick up some supplies, awkwardly avoiding Jullen when you saw him there", "marvelling despite yourself at the sight of a new high rise going up in mere minutes, as workers oversaw row after row of glossy black smart-bricks clicking effortlessly into the desired configuration", "via a considerable detour—an outbreak of spirit sickness had been reported in a district between the school and your home, and your normal route was completely blocked", "staring only at your feet as you walked", "stopping at a bookshop to pick up the latest title in a series you were faintly obsessed with" ))
(set: $toilet_counter to 0)
(set: $anger_counter to 0)
(set: $observe_counter to 0)
(set: $whackadoodle to 0)
(set: $day_toilet to false)
(set: $jullen_1 to false)
(set: $ayya_1 to false)
(set: $jullen_2 to false)
(set: $ayya_2 to false)
(set: $kerixia_2 to false)
(set: $jullen_3 to false)
(set: $kerixia_3 to false)
(set: $jullen_4 to false)
(set: $kerixia_4 to false)
(if: $city_finished is true)[
(if: $city_type is 1)[(set: $rage_isles to it - 1)]
(else-if: $city_type is 2)[(set: $cold_isles to it - 1)]
(else:)[(set: $despair_isles to it - 1)].
]
}{
(display: "city startup")
(track: 'desolate', 'fadein', 5)
<script>$('html').addClass("memory");</script>(set: $in_memory to true)
<p>When you were in your teens, you lived in this city.</p>
<p>You lived alone, (if: $village_finished is true)[your parents having become convinced it would be better for you to be elsewhere than the island of your youth, ] and although sometimes you felt lonely, most of the time you were fine. (That, at least, is what you always said when people asked you.)</p>
<p>You spent years in the city(if: $island_finished is true)[ before you left, at last, to serve your so-called master], but there is one set of memories in particular that encapsulate your time here. One stretch of school days where it felt like everything came to a head.</p>
<p>It was during an outbreak of what they called ‘spirit sickness.’ The parts you remember did not even span a week, all told, but now, here, looking out at the lights of whatever the city has become since, you can’t help but feel it [[changed the world forever->day 1]].</p>
}{
<p>You follow the path along the top of the cliff. It comes quite close to the edge here and, unlike most of the path, it’s (if: $gong_problems is true and $rock_retrieved is false)[ (link-replace:"<span class=\"underdot\">strewn with rocks of various sizes</span>")[strewn with rocks of various sizes(t8n-delay: 1s)+(t8n:"dissolve")(show:?rock-get)].](else:)[strewn with rocks of various sizes.] |rock-get)[These might work for the gong—you look around until you find one that fits snugly in the palm of your hand, then stuff it into your pocket.(set: $rock_retrieved to true)]</p>
<p>The road that leads through the village lies [[to the west->road a]], while the cliff-top path continues past your parents’ house [[to the south->cliffs b]].</p>
}{
<p>From this part of the cliff-side path, you can see (if: $helping is true)[the veranda of your parents’ house.</p>
<p>The path continues along the top of the cliffs to the north and [[to the south->cliffs c]].</p>
]
(else:)[ [[the veranda of your parents’ house->veranda]].</p>
<p>The path continues along the top of the cliffs (if: $gong_struck is true)[ |link-1>[to the north](transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[ to the north (but you don’t need anything from that direction)]](else:)[ [[to the north->cliffs a]]], as well as (if: $gong_struck is true)[ |link-2>[to the south.] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-2)[to the south, leading back to the meeting place, where you definitely do not want to be.] ](else:)[ [[to the south->cliffs c]].]</p>
]
}{
<p>You stand at the southern edge of the cliff-top path.</p>
(if: $helping is true)[
<p>The path continues along the cliffs, while the village meeting place lies to your south-west. But neither of those are routes your body can follow. Not now, under the compulsion of this woman from abroad.</p>
<p>There is only one place she wishes to be taken, and that is to the spirit well, which is nearby [[to the north-west->spirit well]].</p>
]
(else:)[
<p>The path continues along the cliffs [[to the north->cliffs b]], while the village meeting place lies (if: $gong_struck is true)[|link-1>[to the south-west](transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[to the south-west (you can’t go back that way—it’ll be crawling with villagers)].](else:)[ [[to the south-west->meeting place]].] You can see the ceremonial ropes that encircle the spirit well (if: $gong_struck is true)[|link-2>[to the north-west]. (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-2)[to the north-west, but you don’t have time to pay it a visit]](else:)[ [[to the north-west->spirit well]].]</p>
]
}{
|climb>[
(set: $cycler to 1)
<p>The base of the volcano seems to pose no obvious threat: its slope is gentle, its surface warm to the touch but not scalding.</p>
(if: $rage_count > 2)[(display: "first rage")](else-if: $despair_count > 2)[(display: "first despair")](else:)[(display: "first calculation")]
]
}{
(set: $ruins_type to 2)(set: $cold_isles to it + 1)(set: $in_memory to false)
<p>After that, despite your best efforts to remember, things grow fuzzy.</p>
<p>What happened? Did your observations of the spell ever bear fruit and help you determine whether it was best to stop or continue its ravaging of the earth? It seems unlikely, given what you’ve seen of the world since emerging. But who can say. Perhaps if you had not observed its effects so closely, things would have been <em>worse</em>.</p>
<p>You guess it doesn’t matter. Even if you were to remember, even if you knew for sure, it’s not like you can go back and [[change things->ruins end]].</p>
}{
(set: $island_type to 1)(set: $rage_isles to it + 1)(set: $in_memory to false)
<p>Faced with task after task after task, for all these countless days you’ve spent on this isle, your rage finally overspills its bounds.</p>
<p>You snap at your master (you can no longer remember what you said), and he fixes you with a glare. Although designed to put you in your place, the look does no such thing—instead, it only inflames your indignation.</p>
<p>You... <em>reach</em>... unsure of exactly how or for what, and (link-replace:"<span class=\"underdot\">something inside of you <em>twists</em></span>")[something inside of you <em>twists</em>(t8n-delay: 1s)+(t8n:"dissolve")(show:?flames)].</p>
|flames)[<p>Flames burst from your hands, flaring in time with your rapidly pounding heart. Your master raises one arm, fury flashing in his eyes now, and liquid lightning pools in the ceiling, striking you over and over. The pain is intense, and for a moment you black out.</p>
<p>But then the anger returns. The anger, and with it that twisting, reaching sensation. Power floods into you again, but this time it does not create flames—it pours from your fingertips and into your master, turning first his feet, then his legs, then his torso and head to (link-replace:"<span class=\"underdot\">the purest obsidian</span>")[the purest obsidian(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>He does not even have time to scream before it is over, and you stand facing the man you thought would teach you, taking in his frozen expression of shock. It’s almost comical, really. Or perhaps that’s the sudden rush to your head, the way you feel weak and woozy.</p>
<p>You know this is your chance. You can read his books to your heart’s content now. Learn everything you want. Become powerful. Steer the world in the direction it ought to go. [[But there, the memory ends->island end]].</p>
]
}{
<p>The ground in this part of the caves is covered in gravel and sand. (if: $curve_a_visit is false)[(set: $curve_a_visit to true)A trench passes through the loose material down the tunnel’s centre. You can still faintly remember the ground being smooth and unbroken, but those days are far behind you. You wonder: will your endless passage carve a path into the rock itself, eventually?](else:)[Your endless walking has worn a weary trench through its centre.]</p>
(display: "cave counter")
<p>The tunnel curves away [[to the north-west->fork a]] and [[to the south-west->curve d]].</p>
}{
<p>The ceiling in this part of the tunnel is low, but not so low you need duck or crawl. (if: $curve_b_visit is false)[(set: $curve_b_visit to true) By now, after so many countless hours spent traversing these caves, the motion of squatting and stumbling forward is second nature.]</p>
(display: "cave counter")
<p>[[To the south->curve c]] the tunnel splits into many branches, and the northern fork lies [[to the east->fork a]].</p>
}{
<p>This section of the tunnel is beset with twisty little passages, all alike. (if: $curve_c_visit is false)[(set: $curve_c_visit to true)You spent a good long time mapping out these passages early in your entrapment, hoping one would lead you to the surface. But it was no good—not only were they all alike, but they all led back to the main part of the tunnel, and not a single one of them held anything of use.](else:)[It doesn’t matter which you take—they all simply lead back to the main part of the tunnel.]</p>
(display: "cave counter")
<p>The path rises slightly [[to the south-east->fork b]] of the passages, and curves away [[to their north->curve b]].</p>
}{
<p>This section of tunnel is entirely unremarkable. (if: $curve_d_visit is false)[(set: $curve_d_visit to true)You remember being struck by that the first time you saw it. By the idea that, if one were to create an illustrated reference book and needed an image for ‘tunnel,’ this would be the perfect location. It is the Platonic ideal of tunnels. The tunnelest of all tunnels ever to have tunnelled.](else:)[(Or does that, in itself, make it remarkable?)]</p>
(display: "cave counter")
<p>The cave stretches on [[to the north-east->curve a]] and [[to the west->fork b]], where it meets the southern fork.</p>
}{
(if: $day_counter is 0)[
<p>The bell rings, signalling the start of the lunch period.</p>
<p>Your classmates dash from their desks to retrieve their lunches from cubbyholes or pull them from their desks and satchels, breaking into their usual little cliques to chat and relax before another afternoon of lectures and lessons.</p>
<p>As usual, the teacher stays at his desk, although he does put on (link-replace:"<span class=\"underdot\">a bulky set of headphones</span>")[a bulky set of headphones(t8n-delay: 1s)+(t8n:"dissolve")(show:?headphones)] after he sets his meal of rice and stir-fried vegetables before him. |headphones)[(As soon as they’re on, the noise gets louder.)]</p>
<p>You pull your own lunch out of your satchel, and Ayya and Jullen both turn their chairs around to eat with you. Jullen is a jerk (at least to you), but Ayya is your only real friend and she likes him for some reason, so you’re used to putting up with his presence.</p>
<p>As the two of them take out their food, (link-replace:"<span class=\"underdot\">Ayya sneezes</span>")[Ayya sneezes(t8n-delay: 1s)+(t8n:"dissolve")(show:?sneeze)].</p>
|sneeze)[
<p>“Spirits keep you safe,” you say, (if: $village_finished is true)[the phrase from your childhood long drilled into you](else:)[the rote pleasantry coming easy to your lips].</p>
<p>Ayya gives you a little smile. “Thanks,” she says. “Allergies. Blah.”</p>
<p>Jullen takes this as a provocation. He puts his elbows on your desk, leaning towards you with a glare. “Spirits keep you safe,” he repeats, mockingly. “From what <em>I've</em> been hearing, it’s the spirits making us sick in the first place.”</p>
<p>Ayya pales. “It’s just allergies,” she repeats.</p>
(display: "day 1 options")
]
]
(else-if: $day_counter is 2)[
<p>(if: $day_toilet is true)[You make it back to your desk just as](else:)[As the lunch period reaches its end, people put their empty lunchboxes back where they came from and start getting ready for the afternoon lessons. Soon enough,] [[the bell rings->interstitial]].</p>]
(else:)[
<p>You turn your attention to your lunch for a moment, picking at your boring sandwich. Most people get their parents to make their lunches, but yours are back home on the island—you're stuck with whatever you can scrounge up the energy to make in the morning.</p>
<p>(if: $jullen_1 is true)["Still,” Ayya whispers. "What if it <em>is</em> more than allergies?](else:)["Whatever," Jullen mutters to himself. "This is bullshit."]</p>
(display: "day 1 options")
]
}{
(set: $cycler to 1)
<p>(Your memory falters. What happened next?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ [[You excused yourself->Teacher 1]] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ [[You excused yourself->Teacher 1]] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (if: $ayya_1 is false)[ [[You reassured Ayya->Ayya 1]] ](else:)[Ayya gave you a weak smile.] ] ]
(else:)[(replace: ?link-text)[ (if: $jullen_1 is false)[ [[You told Jullen to shut it->Jullen 1]] ](else:)[Jullen grumbled, but wouldn't meet your eye.] ] ]
]
}{
<p>Before class starts, Ayya is quiet, withdrawn. She seems to have trouble focusing—staring fixedly out the window at nothing you can see.</p>
<p>“You all right?” you ask her.</p>
<p>She blinks and looks up, as if only just noticing you're there. “Oh. Hey. I’m okay. Just... Just tired.”</p>
<p>You’re about to make sure she means it, but the bell rings, and that means the school day has started. But it’s not the first time Ayya’s been tired in the morning, especially when her allergies are acting up. You see no reason not to (link-replace:"<span class=\"underdot\">take her at her word</span>")[take her at her word(t8n-delay: 1s)+(t8n:"dissolve")(show:?history)].</p>
|history)[
<p>First period is world history, and you sit at your desk while the teacher tries to fill your brain with as many facts about the ancient geopolitics of alchemists and gods as he can come up with.</p>
<p>You keep half an eye on Ayya, and notice Jullen doing the same from a few rows up. But although she seems a little distracted, let’s be honest: it’s world history. Who <em>isn’t</em> distracted?</p>
<p>It’s not until second period (world languages) that (link-replace:"<span class=\"underdot\">everything changes</span>")[everything changes(t8n-delay: 1s)+(t8n:"dissolve")(show:?changes)].</p>]
|changes)[
<p>The teacher reads from the text for a while, then marks his place with one finger and looks around the room with an exaggerated grimace.</p>
<p>A quiet groan goes up from the other students, and you join them. This can only mean one thing.</p>
<p>“That’s right,” he says, clearly enjoying himself even if nobody else is. “It’s time for individual readings.” He lets his gaze wander further, looking for his first victim, and then he strikes. “Ayya. Pick up where I left off, please. ‘Moi, je fais servir mon génie à peindre les délices de la cruauté...’”</p>
<p>Ayya stands, book in her hands, and clears her throat. “Moi,” she says. But then she wavers, wobbling in place, and begins to speak backwards. Her right arm sloughs off all at once, a splatter of gore and melted flesh that transmogrifies into small white butterflies.</p>
<p>The classroom erupts into screams, but you ignore the panicked cries of “spirit sickness!” and “get out!” Nobody else matters: (link-replace:"<span class=\"underdot\">you have to get to Ayya</span>")[you have to get to Ayya(t8n-delay: 1s)+(t8n:"dissolve")(show:?lasthook)].</p>
]
|lasthook)[
<p>You’re at Ayya’s side faster than anyone—even Jullen. But now’s no time to score points in whatever your taut little triangle is. Ayya needs you.</p>
<p>(Your memory whites out completely for a moment. What did you do here?)</p>
(display: "day 2 options")
]
}{
(set: $cycler to 1)
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link:"You cursed whatever caused this sickness")[(set: $ayya_response to 1)(go-to: "Ayya 2")] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link:"You cursed whatever caused this sickness")[(set: $ayya_response to 1)(go-to: "Ayya 2")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link:"You waited in solemn vigil")[(set: $ayya_response to 2)(go-to: "Ayya 2")] ] ]
(else:)[(replace: ?link-text)[ (if: $jullen_2 is false)[ (link:"You sobbed openly")[(set: $ayya_response to 3)(go-to: "Ayya 2")] ] ]
]
]
}{
(track: 'brink', 'fadeout', 15)
<p>Drained as you were of your powers after the barrier islands, you had nothing left within to best your foe, the guardian the gods had formed to cast you down.</p>
<p>The last thing you remember—as the dragon took you in its mouth and leapt into the skies—was a shimmering wall rising after you. Protecting that volcanic sanctuary and expelling your shades.</p>
<p>After that, there was the misery of the caves, where the creature must have dropped you. The blankness of your awakening on the surface of the sea when you escaped them. The struggle to regain your memories.</p>
<p>And, finally, your return to this place. (link: "To this impregnable wall")[(set: $rage_isles to $rage_store)(set: $cold_isles to $cold_store)(set: $despair_isles to $despair_store)(go-to: "wall end")].</p>
}{
<p>You press your hand against that shimmering wall, thinking one last time of what you could accomplish by dissolving it. By passing beyond it and claiming your destiny.</p>
<p>But then, slowly and with certainty, you withdraw your touch. Your probing magics. It is not that you are afraid of defeat, or that you regret what led you here. Rather, you know (link-replace:"<span class=\"underdot\">there is still more to learn, more to see</span>")[there is still more to learn, more to see(t8n-delay: 1s)+(t8n:"dissolve")(show:?moreto)].
|moreto)[<p>Revisiting your memories. Regaining your past. If this task has taught you anything, it is that more knowledge awaits you.</p>
<p>And the next steps you take towards that knowledge do not lie here, in these islands that the gods have made their sanctuary. The truth about the world and your place in it lies out there in the seas, in the transformed world that you yourself have played a part in making.</p>
<p>You turn your boat away, placing your back to the wall as you call down the winds. As your craft scuds across the waves, you let your mind roam.</p>
<p>Where, you wonder, (link-replace:"<span class=\"underdot\">will you go first</span>")[will you go first(t8n-delay: 1s)+(t8n:"dissolve")(show:?first)]?</p>
]
|first)[<p>The books that your master kept may yet house secrets undiscovered. Perhaps you will spend some time with those. (A month, a year, a century—time holds no sway over one such as you.)</p>
<p>Or there is the village of your youth. Its people are now long dead, but the spirit well awaits. How has it changed, in the time since you called down the spell that destroyed so many spirits and ravaged the gods? What lies at the bottom of its vertiginous abyss?</p>
<p>Even the caves where you were imprisoned have some allure. Although each centimetre of those tunnels is engraved in your mind, it is possible the other remains of the god upon whose arm you feasted fester still, somewhere in its depths.</p>
<p>And somewhere out there in the world, you can feel smaller gods and spirits. Running in fear. Hiding where they think they are safe. A few larger gods must still move amongst them as well, biding their time. Plotting against you.</p>
<p>But you do not need to decide now. (link-replace:"<span class=\"underdot\">You have nothing but time</span>")[You have nothing but time(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>You will go where the winds and waves take you, explore where your mind—unbidden—leads you.</p>
<p>You will grow stronger. Smarter.</p>
<p>More and more you will become like a god in your own right. Until perhaps, one day, no difference remains between man and god, between self and shade, between thought and action.</p>
<p>When that day comes, you know you will return. You know you will face down your destiny.</p>
<p class="center">The End.</p>
<p class="center">[[Return to title->Start]] — (link: "Remember things differently")[(track: 'beyond', 'fadeout', 5)(load-game:"Slot B")]
]
}{
<p>You press your hand against that shimmering wall, thinking one last time of what you could accomplish by dissolving it. By passing beyond it and claiming your destiny.</p>
<p>But destiny is what you make of it. And you? You have made nothing but a mess.</p>
<p>You hurt others. You hurt yourself. You were unable, in the end, to stop what you unleashed. You press your hand harder into the barrier the gods have created to keep you out, (link-replace:"<span class=\"underdot\">tears burning in your eyes</span>")[tears burning in your eyes(t8n-delay: 1s)+(t8n:"dissolve")(show:?burning)].
|burning)[<p>You cannot take back what you have done. No matter how powerful the magic, no matter how potent your memories, time can never truly be turned aside.</p>
<p>But although it is true that you can never change the past, there is no time like the present.</p>
<p>You call your shades to you, unravelling their essence and weaving it into the wall, warp to shimmering weft. Increasing its power. Eating away at your own.</p>
<p>Your sense of self fades as each part of you dissolves into the gods’ protective barrier. But you do not feel regret—(link-replace:"<span class=\"underdot\">you feel peace</span>")[you feel peace(t8n-delay: 1s)+(t8n:"dissolve")(show:?peace)]?</p>
]
|peace)[<p>Some time later, you awake in a small, age-worn sailboat, surrounded by the endless swell and sway of the darkened ocean waves.</p>
<p>You do not remember losing consciousness. You do not remember who you are or where you were or what you have been doing.</p>
<p>Groggy, you reach for sail and tiller, adjusting both with the ease of long familiarity. Are you a sailor, then? </p>
<p>Certainly, you are someone who knows his way about a boat. For in a matter of moments, you are moving. Across the water, across the sea. To the west, where the last shred of sun is sinking beneath the low, lumpy form of an island, dotted here and there with bright points of light that speak of home and hearth.</p>
<p>The place seems familiar. Is it <em>your</em> home, or might it yet become so? In the fullness of your unwritten future, you suppose, (link-replace:"<span class=\"underdot\">you will find out</span>")[you will find out(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>(It is possible, as well, you will return to that volcanic isle one day. Possible that your path will cross the gods’ once more. But even if this kernel of your old, despairing self remains deep within you, it does not come near the surface of who you now are. Who you now might be.)</p>
<p>As for destiny? As for revenge and regret?</p>
<p>Those words no longer hold meaning. All that you will know from this day forth is the presence of the world. The vital energy of each and every breath.</p>
<p>The eternal transience of living.</p>
<p class="center">The End.</p>
<p class="center">[[Return to title->Start]] — (link: "Remember things differently")[(track: 'beyond', 'fadeout', 5)(load-game:"Slot B")]
]
}{
(if: $doom_count is 3)[
(hide:?cycle)(hide:?link-text)
(t8n-delay: 1s)+(t8n:"dissolve")(show:?end-text)
]
}{
(set: $cycler to 1)
<p>At last, you reach the place at the volcano’s centre. Here is where the gods have set their champion—this massive dragon into which they have poured all their power, hoping to destroy you.</p>
<p>All you need to do now is deal with it and everything will be over. You will finally have what you want.</p>
<p>As if it can hear your thoughts, the massive creature stirs, rising from its slumber with a mighty yawn. It looks down at you with eyes that are equal parts mocking and defiant, and (link-replace:"<span class=\"underdot\">it speaks into your mind</span>")[it speaks into your mind(t8n-delay: 1s)+(t8n:"dissolve")(show:?dragon)].</p>
|dragon)[
<p><em>Hello, little human,</em> it says. <em>Are you here to play?</em></p>
<p>Along with the words comes a psychic blow that makes you stagger. You know immediately you are outmatched. The gods have poured their very being into this beast. They have sacrificed all that they were and might be to create something that could beat you.</p>
<p>Perhaps if you were at your best. Perhaps if you had not just siphoned off four pieces of your essence to lower the barrier. Perhaps then you would be on equal footing.</p>
<p>But as it is now? (link-replace:"<span class=\"underdot\">You know that you are doomed</span>")[You know that you are doomed(t8n-delay: 1s)+(t8n:"dissolve")(show:?nextchat)].</p>
]
|nextchat)[
<p>If the dragon can read your thoughts as well as speak into your mind, it does not seem perturbed by your response to its question. It simply smiles—the expression uncanny on its reptilian face—snaps its tail to and fro like a cat, and pounces.</p>
<p>But you cannot give up. Not here. Not now. You have overcome so much already.</p>
<p>You reach deep within yourself and...</p>
<p>(What comes next is important. The core of everything you were and are and will be. (link-replace:"<span class=\"underdot\">You have to <em>remember</em></span>")[You have to <em>remember</em>(t8n-delay: 1s)+(t8n:"dissolve")(show:?lastchoice)]).</p>]
|lastchoice)[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[
(if: $rage_doom is false)[ |link-1>[You create a shade of incandescent rage] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace: ?link-text)[You cannot access your rage.](set: $rage_doom to true)(set: $doom_count to it + 1)(display: "doom check")] ] (else:)[You cannot access your rage.]
]</p>
|end-text)[<p>You cannot access your rage. You cannot access your analytical mind. You cannot access your regrets.</p>
<p>You do nothing. You cannot. [[You simply have nothing left->defeat]].</p>]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text)[
(if: $rage_doom is false)[ |link-1>[You create a shade of incandescent rage] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace: ?link-text)[You cannot access your rage.](set: $rage_doom to true)(set: $doom_count to it + 1)(display: "doom check")] ] (else:)[You cannot access your rage.]
]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[
(if: $cold_doom is false)[ |link-1>[You create a shade of coldest observation] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace: ?link-text)[You cannot access your analytical mind.](set: $cold_doom to true)(set: $doom_count to it + 1)(display: "doom check")] ] (else:)[You cannot access your analytical mind.]
]
]
(else:)[
(replace: ?link-text)[
(if: $despair_doom is false)[ |link-1>[You create a shade of purest despair] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace: ?link-text)[You cannot access your regrets.](set: $despair_doom to true)(set: $doom_count to it + 1)(display: "doom check")] ] (else:)[You cannot access your regrets.]
]
]
]
]
}{
<p>This area of cleared dirt goes all the way to the cliff face. Looks dangerous!</p>
<p>Your master’s garden is [[to the east->garden]]. If you climb [[to the north->peak]], you can reach the highest point on the island.</p>
}{
(set: $cycler to 1)
(enchant: ?who's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 30) + (t8n:"blur"))
<p>You yank your arm back, nearly pitching off the boat in your haste to rid yourself of the pain. And then(if: $shadespeech is true)[, once more, ] (link-replace:"<span class=\"underdot\">your shades speak.</span>")[your shades speak.(show: ?who)]</p>
<span class="shades">
|who)[<span class="float"><p style="top:-15px;left:-27px;">Awaken.</p><p style="right:-55px;">Awaken.</p><p style="top:10px;left:50px;">Awaken.</p><p>Awaken.</p></span>]
|who)[<span class="float"><p style="left:19px;">Remember.</p><p style="top:15px;left:-10px;">Remember.</p></span>]
|who)[<span class="float"><p style="top:-15px;left:-40px;">Remember.</p><p style="right:5px;">Remember.</p><p style="top:10px;left:50px;">Awaken.</p><p>Remember.</p></span>]
|who)[<span class="float"><p style="top:-50px;left:-50px;">Awaken.</p><p style="top:5px;left:-26px;">Remember.</p></span>]
|who)[<span class="float" style="top:-150px"><p style="top:-150px;left:-40px;">Awaken.</p><p style="right:-25px;top:150px;">Remember who you are.</p><p style="top:10px;left:50px;">Remember.</p><p>Awaken.</p></span> (t8n-delay: 1s)+(t8n:"dissolve")(show:?stop)]
|stop)[<p class="clear">As the overlapping babble of your shades quiets into nothing, so too does the pain in your head. In its place is ... not <em>knowing</em>, as such. But a sort of peace. A sort of clarity.</p>
<p>You do not know who you are, who you were. But you must have been powerful. Can you not see shades of your missing pieces? Do they not speak to you, (link-replace:"<span class=\"underdot\">exhorting you to action</span>")[exhorting you to action(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)]?</p>]
</span>
|endlink)[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link-reveal-goto:"“I will awaken.”", "the call")[(set: $speech to "I will awaken")] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link-reveal-goto:"“I will awaken.”", "the call")[(set: $speech to "I will awaken")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link-reveal-goto:"“I will remember.”", "the call")[(set: $speech to "I will remember")] ] ]
(else:)[(replace: ?link-text)[ (link-reveal-goto:"“I will not fail.”", "the call")[(set: $speech to "I will not fail")] ] ]
]</p>
}{
<p>You proceed easily at first, and are just falling into complacency when the gods make their next challenge known: the ground itself ignites, creating a blinding, burning wall of living flame between you and the caldera above.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[You strode through the fire.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the fire—or at least you try. But fire is fire, no matter how powerful the wizard. It burns your flesh, dissolves your bone, kills you in an instant.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[You strode through the fire.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the fire—or at least you try. But molten rock is molten rock, no matter how powerful the wizard. It burns your flesh, dissolves your bone, kills you in an instant.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You called up a storm of ice.] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You call up a storm of ice, colder than even your rage. But although it dims the fire, its frozen winds are indiscriminate. You feel chilled to the bone, your body temperature dropping, until you can do nothing but shiver and struggle to breathe.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You carefully observed the flames.] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>If you simply walked through the flames, they would burn you. But you are a cold and calculating man—cold enough to observe the fire and find its pattern.</p>
<p>And have you not seen the patterns that make up reality? The to and fro of magic? Of the tides?</p>
<p>It is easy enough to find the gaps in the fire and walk through, as though there were no obstacle to your passage at all.</p>
<p>From there, you simply stroll up the slope to [[the caldera->caldera]].
] ] ] ]
]
}{
<p>You proceed easily at first, and are just falling into complacency when the gods make their next challenge known: a thick cloud of ash drops upon you, choking you and hiding the path to the caldera above.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[You strode through the ash.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the ash.</p>
<p>It is a struggle to breathe, a struggle to draw air, but that is nothing new—not for you. Have you not choked on despair for so long now? Have you not had to fight for every breath through the panic in your chest?<p>
<p>The obstacle may be physical, tangible, but that is not enough of a difference to slow you down. You simply pass by and continue on your way to [[the caldera->caldera]].] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[You strode through the ash.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the ash.</p>
<p>It is a struggle to breathe, a struggle to draw air, but that is nothing new—not for you. Have you not choked on despair for so long now? Have you not had to fight for every breath through the panic in your chest?<p>
<p>The obstacle may be physical, tangible, but that is not enough of a difference to slow you down. You simply pass by and continue on your way to [[the caldera->caldera]].] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You called up a storm of ice.] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You call up a storm of ice, colder than even your despair. But it does nothing to the ash, and its frozen winds are indiscriminate. You feel chilled to the bone, your body temperature dropping, until you can do nothing but shiver. The ash claws its way down your throat, colder than death, and soon it is the last thing you feel.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You carefully observed the ash.] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stand where you are and watch as the clouds of ash surround you.</p>
<p>Perhaps there are patterns in the way the winds fall. Something you can observe that will help you overcome this obstacle.</p>
<p>But no matter how carefully you look, you can see no way through. Nothing but drifting ash and smoke. It claws its way down your throat, and soon its choking frustration the last thing you feel.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")
] ] ] ]
]
}{
<p>No. That isn’t what happened. You didn’t fall here.</p>
<p>You clear your mind and [[try to remember->climb]].</p>
}{
(set: $cycler to 1)
(if: $merchants_chat is true)[(set: $merchants_report to "There are strangers. They need help")](else-if: $merchants_found is true)[(set: $merchants_report to "There are strangers in the road outside the village")](else:)[(set: $merchants_report to "There’s... something in the road outside the village")]
<p>Uneasy at what you have seen, you hammer on the wall next to her beaded doorway. It’s terribly rude, but this is probably an emergency. For a while, nothing happens, but then you hear somebody grumbling from the shadows on the door’s other side.</p>
<p>“Enough!” a voice snaps a moment later. “Unless the gods have drowned the world, it can wait, can’t it?”</p>
<p>The headwoman steps out onto the veranda a moment later, grumbling and rubbing sleep from her eyes. When she sees you, something in your face wakes her all the way up. “What’s happened?” she asks. (link-replace:"<span class=\"underdot\">“Tell me true, child.”</span>")[“Tell me true, child.”(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-choice)]</p>
|first-choice)[
<p>
|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[ |link-1>[Nothing happened] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[The words die in your mouth. You cannot lie.] ]
</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[
Nothing happened (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[The words die in your mouth. You cannot lie.] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[ (link: "$merchants_report")[ (replace:?first-choice)[ <p>“$merchants_report,” you say.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
]
(else:)[(replace: ?link-text)[
Timmy fell into the well! (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[The words die in your mouth. You cannot lie.] ]
]
]
<!--first response -->
|first-response)[
(hide: ?first-cycle)
<p>The headwoman’s eyes glitter, her mouth twisting in some dark emotion you do not yet have the words to name. “I see,” she says. “Wait here.”</p>
<p>She ducks back beneath the beaded curtain and disappears inside. You (link-replace:"<span class=\"underdot\">wait on the veranda</span>")[wait on the veranda(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)], awkward and unsure, as you hear the sounds of a phone being dialled, followed by the headwoman’s voice as she speaks to someone. Her tone is urgent, but too low for you to make out the words.</p>
|endlink)[
<p>Eventually, she comes back outside. “That will be all,” she says. “Return to your home, child, and may the spirits walk with and protect you.”</p>
<p>You’re not sure you really want to, but it doesn’t matter. You find [[you cannot disobey->home]].</p>
]
]
}{
<p>You proceed easily at first, and are just falling into complacency when the gods make their next challenge known: the ground you took for solid crumbles away, placing a river of molten rock between you and the caldera above.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[You strode through the magma] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the magma—or at least you try. But molten rock is molten rock, no matter how powerful the wizard. It burns your flesh, dissolves your bone, kills you in an instant.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[You strode through the magma] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You stride through the magma—or at least you try. But molten rock is molten rock, no matter how powerful the wizard. It burns your flesh, dissolves your bone, kills you in an instant.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You called up a storm of ice] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You call up a storm of ice, colder than even your rage. It cools the molten rock in an instant, removing any obstacle to your passage.</p><p>From there, you simply stroll up the slope to [[the caldera->caldera]].] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You called down a curse] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?climb)[<p>You channel your fury into a curse against the gods, designed to burn them with the power of the magma. But either it didn’t take or they redirect it, because the ground beneath your feet collapses, plunging you into the molten rock. It burns your flesh, dissolves your bone, kills you in an instant.</p>(transition:"blur")+(t8n-delay:4s)(display:"first fail")] ] ] ]
]
}{
(set: $forest_loc to 1)
<p>This dirt trail disappears into the thickly forested hillside. You know from other tasks your master has set you in the past that beyond this point, the woods are like a maze.</p>
<p>The path that leads to your master’s cabin is [[to the west->path b]]. Or you can continue into the forest, taking the trail further [[to the east->forest 1]].</p>
}{
(set: $cycler to 1)
(display: "forest locate")
<p>You follow the trail through the forest as it twists and turns—just as before, all these little passages look alike. One upside of this is that no matter how far you walk, the way back to the cliff-side path always seems to be [[right behind you->forest 0]].</p>
(if: $forest_loc is 9)[<p>There is <em>one</em> unusual thing here: (if: $current_task is 8 and $has_water is false)[(link-replace:"<span class=\"underdot\">a fountain</span>")[a fountain(t8n-delay: 1s)+(t8n:"dissolve")(show:?fountain)] ](else:)[a fountain] just to one side of the trail, burbling quietly.</p>
|fountain)[<p>It might not contain the forest, but it’s probably close enough. You dip the ewer in and draw it out again, careful not to slosh any over the side.</p>(set: $has_water to true)
(display: "quick travel")
]
]
(if: $forest_loc is 12)[<p>The opening to (if: $current_task is 4 and $has_scat is false)[(link-replace:"<span class=\"underdot\">a fox’s den</span>")[a fox’s den(t8n-delay: 1s)+(t8n:"dissolve")(show:?den)] ](else:)[a fox’s den] nestles amidst the trees in this part of the trail.</p>
|den)[
<p>Of course! A forest trickster. You poke around until you find some dried droppings, and carefully scoop them into a sachet.</p>(set: $has_scat to true)
(display: "quick travel")]
<p>There is only one way to go from here: back (link:"to the west")[(set: $forest_loc to 7)(goto:"forest 1")].</p>]
(else-if: $forest_loc is 13)[<p>The trail dead-ends here, and you can hear the soft, fragile chirping of birds from the tree before you. You look more closely. Ah, there! (if: $current_task is 3 and $has_twigs is false)[(link-replace:"<span class=\"underdot\">A bird’s nest</span>")[A bird’s nest(t8n-delay: 1s)+(t8n:"dissolve")(show:?nest)]](else:)[A bird’s nest].</p>
|nest)[<p>Wait a minute... woven tree? This must be it. You climb until you can work a little bit of the nest free, then drop back down with a jolt when an adult crow dive bombs you. At least you got what you needed.</p>(set: $has_twigs to true)
(display: "quick travel")]
<p>There is only one way to go from here: back (link:"to the south")[(set: $forest_loc to 11)(goto:"forest 1")].</p>
]
(else:)[<p>(The trail (if: $forest_max is 3)[splits three ways](else:)[forks] here, but your memory falters. Which direction did you take?)</p>
|endlink>[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link:"$forest_first")[(set: $forest_loc to $first_loc)(goto:"forest 1")] ]</p>
]
(click-rerun: ?cycle)[
(if: $forest_max is 3)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link:"$forest_first")[(set: $forest_loc to $first_loc)(goto:"forest 1")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link:"$forest_second")[(set: $forest_loc to $second_loc)(goto:"forest 1")] ] ]
(else:)[(replace: ?link-text)[(link:"$forest_third")[(set: $forest_loc to $third_loc)(goto:"forest 1")] ] ]
]
(else:)[
(if: $cycler is 2)[(set: $cycler to 1)](else:)[(set: $cycler to 2)]
(if: $cycler is 1)[(replace: ?link-text)[ (link:"$forest_first")[(set: $forest_loc to $first_loc)(goto:"forest 1")] ] ]
(else:)[(replace: ?link-text)[ (link:"$forest_second")[(set: $forest_loc to $second_loc)(goto:"forest 1")] ] ]
]
]
]
}{
<!-- handles setup for forest trails -->
(if: $forest_loc is 1)[
(set: $forest_first to "north")
(set: $first_loc to 2)
(set: $forest_second to "east")
(set: $second_loc to 5)
(set: $forest_third to "south")
(set: $third_loc to 3)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 2)[
(set: $forest_first to "east")
(set: $first_loc to 6)
(set: $forest_second to "south")
(set: $second_loc to 1)
(set: $forest_max to 2)
]
(else-if: $forest_loc is 3)[
(set: $forest_first to "east")
(set: $first_loc to 4)
(set: $forest_second to "north")
(set: $second_loc to 1)
(set: $forest_max to 2)
]
(else-if: $forest_loc is 4)[
(set: $forest_first to "north")
(set: $first_loc to 5)
(set: $forest_second to "east")
(set: $second_loc to 8)
(set: $forest_third to "west")
(set: $third_loc to 3)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 5)[
(set: $forest_first to "north")
(set: $first_loc to 6)
(set: $forest_second to "west")
(set: $second_loc to 1)
(set: $forest_third to "south")
(set: $third_loc to 4)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 6)[
(set: $forest_first to "south")
(set: $first_loc to 5)
(set: $forest_second to "west")
(set: $second_loc to 2)
(set: $forest_third to "east")
(set: $third_loc to 10)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 7)[
(set: $forest_first to "east")
(set: $first_loc to 12)
(set: $forest_second to "north")
(set: $second_loc to 8)
(set: $forest_max to 2)
]
(else-if: $forest_loc is 8)[
(set: $forest_first to "north")
(set: $first_loc to 9)
(set: $forest_second to "west")
(set: $second_loc to 4)
(set: $forest_third to "south")
(set: $third_loc to 7)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 9)[
(set: $forest_first to "north")
(set: $first_loc to 10)
(set: $forest_second to "south")
(set: $second_loc to 8)
(set: $forest_max to 2)
]
(else-if: $forest_loc is 10)[
(set: $forest_first to "west")
(set: $first_loc to 6)
(set: $forest_second to "east")
(set: $second_loc to 11)
(set: $forest_third to "south")
(set: $third_loc to 9)
(set: $forest_max to 3)
]
(else-if: $forest_loc is 11)[
(set: $forest_first to "west")
(set: $first_loc to 10)
(set: $forest_second to "north")
(set: $second_loc to 13)
(set: $forest_max to 2)
]
}{
<p>You are at a fork in the path. (if: $fork_a_visit is false)[(set: $fork_b_visit to true)On the southern face of the fork, there are little marks you made when first you arrived in this place—one for each day. You forget how far you got before giving up, but it was many hundreds, surely. And in all of that time, you’ve had no need to eat. No need to drink. Nothing to do but stumble and stagger and walk the dim emptiness.](else:)[You grimace as the marks on the wall remind you of your situation.]</p>
(display: "cave counter")
<p>The tunnel continues [[to the west->curve b]] and [[to the south-east->curve a]], while an offshoot slopes up and [[to the north->rockfall]].</p>
}{
<p>The ground here slopes up slightly, the walls stretching away, until you stand at an intersection in the cave system. (if: $fork_b_visit is false)[(set: $fork_b_visit to true)This fork is close to where you first awoke, at the shore of an underground lake.]</p>
(display: "cave counter")
<p>[[To the south->ravine]], a narrow natural bridge crosses a vast underground ravine, while a broader opening [[to the north->lake]] leads to the underground lake. The main tunnel loop continues [[to the east->curve d]] and [[to the north-west->curve c]].</p>
}{
<p>Your master keeps this small garden for fresh vegetables and herbs. (More accurately, you do the keeping.)</p>
|weeder>[(if: $current_task is 5)[(display: "weeding")]]
<p>A gravel path leads past his cabin [[to the east->path a]], while a cleared area of hard-packed dirt goes all the way to the cliff face [[to the west->face]].</p>
}{
|task_generator>[
(set: $current_task to $tasks_left's random)
(set: $tasks_left to $tasks_left - (a: $current_task))
(if: $current_task is 1)[
(set: $task_description to "gather me three homes that have been left behind")
]
(else-if: $current_task is 2)[
(set: $task_description to "gather me two clumps of seaweed")
]
(else-if: $current_task is 3)[
(set: $task_description to "gather me a woven bit of tree")
]
(else-if: $current_task is 4)[
(set: $task_description to "gather me the desiccated essence of a trickster")
]
(else-if: $current_task is 5)[
(set: $task_description to "weed the garden beds")
]
(else-if: $current_task is 6)[
(set: $task_description to "seal the purest nothing in a jar")
]
(else-if: $current_task is 7)[
(set: $task_description to "sweep the cabin floor")
]
(else:)[
(set: $task_description to "fill my ewer with the forest")
]
]
}{
<p>The hut stinks of death and sickness, and as you step fully inside the stench only thickens.</p>
<p>There are a dozen outsiders, all told, laid out on makeshift cots and hammocks, some simply lying on the one-room building’s dirt floor. Whatever afflicted them at the fork in the road north of the village seems to have slowed for now, but you note that a fair number are no longer moving.</p>
<p>Worse, parts of the dead seem to be (link-replace:"<span class=\"underdot\">rotting away</span>")[rotting away(t8n-delay: 1s)+(t8n:"dissolve")(show:?rotting)] even as you watch, horror thick in your mouth like choking gauze.</p>
|rotting)[
<p>You are about to back away—coming was a mistake, you shouldn’t <em>be</em> here—when one of the outsiders fixes you with her eyes and says: “Come here, boy.”</p>
<p>She is old, this one. Older than the headwoman, grizzled and sure, with eyes like burning lights and fingers like the claws of a bird.</p>
<!--first dialogue choice-->
|first-chat>[
|falters>[<p>(Your memory falters. What did you do?)</p>]
(set: $cycler to 1)
<p>
|first-cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[ (link-replace: "<span class=\"underdot\">You ignored her</span>")[<p>Though your heart beats hard, you ignore her, looking away in pretend disregard.</p><p>“Come here,” she repeats, and this time you find you can not ignore the order.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)]
</p>]
]
<!--first dialogue cycler-->
(click-rerun: ?first-cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">You ignored her.</span>")[ <p>Though your heart beats hard, you ignore her, looking away in pretend disregard.</p>
<p>“Come here,” she repeats, and this time you find you can not ignore the order.</p>(t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">You went to her.</span>")[<p>You walk over, heart beating hard in your chest.</p><p>“Good,” she says. “Now listen.” You find you can not disobey, even if you wanted.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else:)[
(replace: ?link-text)[(link-replace: "<span class=\"underdot\">You stayed put. “What is it?”</span>")[ <p>You stay put. “What is it?” you ask.</p><p>“Come here,” she repeats, and this time you find you can not ignore the order.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
]
<!--first response -->
|first-response)[
(hide: ?first-cycle)(hide: ?falters)
(set: $helping to true)
<p>She coughs violently.</p>
<p>You try to flinch away, but she grabs you with one clawed hand and holds you there as her body shakes.</p>
<p>“Help me up,” she rasps, when she is done. “Take me to the spirit well.”</p>
<p>And, once again, [[you find your body doing as it’s told->hut]].</p>
]
]
}{
(set: $island_type to 3)(set: $despair_isles to it + 1)(set: $in_memory to false)
<p>You think of those graves, of the bodies they must hold—bodies of people like you, who came here only to learn and to grow—and you know your master is not who he claims. Not <em>what</em>.</p>
<p>Your master must know something of what goes on within you, for he fixes you with a glare. Although designed to put you in your place, the look does no such thing. It only solidifies your resolve.</p>
<p>You... <em>reach</em>... unsure of exactly how or for what, and (link-replace:"<span class=\"underdot\">something inside of you <em>twists</em></span>")[something inside of you <em>twists</em>(t8n-delay: 1s)+(t8n:"dissolve")(show:?fog)].</p>
|fog)[<p>Fog erupts from your hands, hiding both you and your would-be killer in thick, pungent clouds of vapour. Through a swirl in the substance, you see your master raise one arm, fury flashing in his eyes now, and liquid lightning pools in the ceiling, striking you over and over. The pain is intense, and for a moment you black out.</p>
<p>But then your determination returns. The determination, and with it that twisting, reaching sensation. Power floods into you again, but this time it does not merely hide you—it pours from your fingertips and into your master, turning first his feet, then his legs, then his torso and head to (link-replace:"<span class=\"underdot\">the purest obsidian</span>")[the purest obsidian(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>He does not even have time to scream before it is over, and you stand facing the man you thought would teach you, taking in his eternal expression of shock. It’s almost comical, really. Or perhaps that’s the sudden rush to your head, the way you feel weak and woozy.</p>
<p>You know this is your chance. You can read his books to your heart’s content now. Learn everything you want. Become powerful. Steer the world in the direction it ought to go. [[But there, the memory ends->island end]].</p>
]
}beyond: audio/whatliesbeyond.mp3
brink: audio/onthebrink.mp3
desert: audio/desertrain.mp3
desolate: audio/desolate.mp3
epiphany: audio/epiphany.mp3
fallen: audio/fallen.mp3
sandstorm: audio/sandstorm.mp3{
<nav class="header-nav">
<ul>
(unless: (passage:)'s tags contains "Settings")[
<li class="one">[[Menu->Settings]]</li>
(set: $lastPassage to (passage:)'s name)
]
(if: (passage:)'s tags contains "Settings")[<li class="one">(link-goto: "Return to Game", $lastPassage)</li>]
(if: (passage:)'s tags contains "main")[
(if: $rage_isles + $cold_isles + $despair_isles < 1)[<li class="three stat">You feel... empty.</li>]
(else:)[
<li class="one stat">rage: (print: $rage_isles)</li>
<li class="one stat">coldness: (print: $cold_isles)</li>
<li class="one stat">despair: (print: $despair_isles)</li>
]
]
(else-if: (passage:)'s tags contains "rage")[<li class="three stat">You burn with unquenchable rage.</li>]
(else-if: (passage:)'s tags contains "observe")[<li class="three stat">Your mind turns endlessly, observing everything.</li>]
(else-if: (passage:)'s tags contains "despair")[<li class="three stat">You are drowning in despair.</li>]
(if: $in_memory is true and $endgame is false)[<li class="three stat">You are absorbed in memory.</li>
(unless: (track: 'desolate', 'isplaying'))[
(set: $i to it + 1)
(if: $i is 5)[ (set: $i to 0)(track: 'desolate', 'fadein', 15) ]
]
]
</ul>
</nav>
}{
<p>You are on the veranda of the village headwoman’s house. (if: $headwoman_notified is true)[(Wow, you’re really pushing your luck, huh?)]</p>
(if: ($merchants_seen is true or $merchants_found is true or $merchants_chat is true) and $headwoman_notified is false)[
(set: $headwoman_notified to true)
(display: "first headwoman")
]
(else:)[
<p>The road is [[to the east->road b]], with the rest of the village beyond it.</p>
]
}{
<p>You (if: $headwoman_notified is true)[return to](else:)[are in] your parents’ home.</p>
(if: $village_open is false)[(set: $village_open to true)<p>It is the middle of a long, hot afternoon, and most of the villagers are resting, the benevolent spirits who guard the town protecting all who slumber until the evening winds blow in cooler weather. Your parents are resting too, in the other room, and they told you to do the same.</p>
<p>It irritates you to no end. They treat you like such a child! Everyone in the village does, even though you’re twelve years old now and your coming-of-age ceremony is mere months away. Shouldn’t you have a say in what you get to do? Anyway you aren’t remotely tired—only bored.</p>
<p>You have read your parents’ books until you can practically recite the stories from memory: all those stories of the spirits and the gods working with people like you. All the wonders and marvels and ancient tales are almost as dull as doing nothing. There’s the computer, but even though it has some cool games you don’t feel like playing. (Besides, you’re banned. It still has the scorch marks from last time.)</p>]
(else-if: $headwoman_notified is true and $first_headwoman is false)[<p>You blink as you walk into the main room, the headwoman’s strange hold over you fading. It isn’t a shock that she can do these things—it’s common knowledge she is favoured by the gods, and you’ve seen her step into that role at meetings and tribunals, forcing truths and obedience from those who break the village’s laws or threaten its peace.</p>
<p>This is the first time it’s happened to <em>you</em>, and you are not eager to repeat the experience. Still, while you are no longer bored, you find your thoughts turning to (if: $merchants_seen is true)[the travellers you saw. Where were they from? What happened to them?](else:)[that distant shape in the road. What was it? What happened to it?]</p>
<p>So while you do not wish to draw the headwoman’s ire, you find you cannot simply lie down and rest. Besides, she told you to come home and you have. Nothing in her words said to <em>stay here</em>.</p>(set: $first_headwoman to true)]
(else:)[<p>You fetch a drink of water and rest for a moment, eyeing the familiar shape of the books on their shelves.</p>]
<p>An open door leads to the veranda [[to the east->veranda]], while another [[to the west->residences]] leads out to the residential area. (if: $anil_met is false)[There’s a note tacked to the wall from Nuncle Anil asking your father to go fishing at the beach south of the village meeting place, but he must not have seen it before his habitual nap.]</p>
}{
<p>This hut is nothing special. Twenty strides by twenty, it holds whatever the village needs holding.</p>
(if: $helping is true)[
<p>The woman leans on you, grunting, in clear pain as you walk. “To the well,” she says. “Hurry.”</p>
<p>You can reach the veranda of your home [[to the south-east->veranda]], while a dirt path (link:"leads south-west")[leads south-west (show:?no-help)] towards the main road|no-help)[, but that way is too risky—the other villagers may have already started returning to their homes].</p>
]
(else:)[
(if: $headwoman_notified is false)[<p>At the moment, it stands empty.</p>]
(else-if: $guard_gone is false)[<p>One of the other villagers stands before its door, which has been closed. (if: $ladder_retrieved is true)[She snorts as you walk up. “Starting a roofing business, kid? Get outta here before you hurt yourself.”](else:)[She scowls as you approach. “No one is to bother the outsiders,” she tells you. “Headwoman’s orders.”]</p>
(if: $guard_known is false)[(set: $guard_known to true)] ]
(if: $guard_gone is true)[<p>The villager who stood guard before it is gone, no doubt heading to the meeting place after your striking of the gong. You test the door, and you’re relieved to find it isn’t locked. If you’re going to [[go inside]], now’s your chance.](else:)[]
]
(if: $gong_struck is false)[<p>You can reach the veranda of your home [[to the south-east->veranda]], while a dirt path [[leads south-west->residences]] towards the main road.</p>]
}{
<h2 class="center">2. Memories</h2>
<p>“The world has changed. I see it in the water. I feel it in the Earth. I smell it in the air. Much that once was is lost, for none now live who remember it.”<br /><br />— J.R.R. Tolkien, <em>The Fellowship of the Ring</em></p>
(display: "autosave")
(set: $location to 7)
<p class="center">[[Continue->travel]]</p>
}{
(set: $day_counter to 0)
(set: $day_toilet to false)
(set: $day_num to it + 1)
(set: $chatter to $day_rand's random)
(set: $day_rand to $day_rand - (a: $chatter))
(if: $day_num is 3)[<p>The rest of the day was... a blur.</p>
<p>There must have been health checks and state visits. Back then, nobody really understood the sickness. Whether it was a curse cast down by the spirits and the gods or something that somehow could spread.</p>
<p>But if indeed there were, you can’t recall them. Not even a bit.</p>
]
(else:)[
<p>Eventually, the school day drew to a close: lessons and assignments, chores and readings.</p>]
<p>After the home bell finally rang, you remember going home to your empty room in one of the city’s many common living buildings, (print: $chatter).<p>
<p>And then? Just like always, you ate alone; you went to sleep alone; you woke alone.</p>
<p>And when it was time, you got out of bed and dressed. Because despite it all (link: "another school day waited")[
(if: $day_num is 2)[(goto: "day 2")]
(else:)[(goto: "city outro")]
].</p>
}{
(display: "autosave")
<script>$('html').removeClass("memory");</script>
(set: $has_traveled to false)
(if: $island_finished is false)[(set: $island_finished to true) (set: $memories_gained to it + 1)
<p>It feels like it all happened a very long time ago—and perhaps it did. You look at the now-familiar outline of the island before you and realise you feel more sure of yourself now. Of (link-replace:"<span class=\"underdot\">who you were</span>")[who you were(show:?shadehook)] and who you still could be.</p>
|shadehook)[
<p>The shade that represents this memory speaks:</p>
(set: $solo to true)(set: $speaker to 3)
(display: "shades")
(t8n-delay: 1s)+(t8n:"dissolve")(show:?endhook)
]
|endhook)[
<p class="clear">Once the overlapping speech fades, you turn to face [[the open seas->the lonely island]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>]
]
(else:)[
<p class="clear">It feels like it all happened a very long time ago—and perhaps it did. You look one last time at the now-familiar outline of the island before you, and then you turn to face [[the open seas->the lonely island]].</p>
<p>(If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>
]
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The Lonely Island</h1>
|memory>[<p>Tedium.</p>
<p>Rage.</p>
<p>A burning confrontation.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->island_1]]</p>
(if: $island_finished is true)[<p>(Your current memory of this place is one of (if: $island_type is 1)[rage](else-if: $island_type is 2)[cold observation](else:)[despair]. Revisiting this memory will reset that. Don’t want to remember things differently? You can [[return to the map->the lonely island]].)</p>]
]
}{
<!--set variables for the island-->
(set: $tasks_left to (a:1, 2, 3, 4, 5, 6, 7, 8))
(set: $wizard_options to 3)
(set: $force_known to false)
(set: $cave_visited to false)
<!--task tracking-->
<!-- tasks: 1 = gather shells; 2 = gather seaweed; 3 = gather twigs from a bird nest; 4 = gather fox scat; 5 = weed the garden; 6 = put air in a jar; 7 = sweep the cabin; 8 = draw water from the spring-->
(set: $current_task to 0)
(set: $tasks_complete to 0)
(set: $has_task to false)
(set: $task_hint to "")
(set: $task_description to "")
(set: $task_loc to "")
(set: $shells_done to false)
(set: $shell_count to 0)
(set: $has_conch to false)
(set: $has_limpet to false)
(set: $has_cockle to false)
(set: $seaweed_done to false)
(set: $seaweed_count to 0)
(set: $has_clump to false)
(set: $has_strand to false)
(set: $twigs_done to false)
(set: $has_twigs to false)
(set: $scat_done to false)
(set: $has_scat to false)
(set: $weeding_done to false)
(set: $weeds_count to 4)
(set: $air_done to false)
(set: $has_air to false)
(set: $sweeping_done to false)
(set: $sweep_count to 0)
(set: $water_done to false)
(set: $has_water to false)
(if: $island_finished is true)[
(if: $island_type is 1)[(set: $rage_isles to it - 1)]
(else-if: $island_type is 2)[(set: $cold_isles to it - 1)]
(else:)[(set: $despair_isles to it - 1)].
]
}{
(display: "island startup")
(track: 'desolate', 'fadein', 5)
<script>$('html').addClass("memory");</script>(set: $in_memory to true)
<p>You spent years on this island, studying the arts of magic—or at least, whatever fragments your teacher deigned to teach.</p>
<p>He made you feel ignorant, enigmatic and distant as he was, and often you felt more menial laborer than student. But each time you found yourself at the end of your patience, he would utter some simple phrase that would spin your mind around and leave you panting, dizzy, looking at the world with new eyes. New perspective.</p>
<p>You could feel yourself expanding, body and mind, and for a while that was enough. But in the end, [[you always needed more->cabin]].</p>
}{
<p>You slam your rage and fury against that shimmering wall and it dissolves, sublimating with a hiss into sheer power.</p>
<p>You drink it down, laughing with manic abandon as the rest of your memories pour back into your mind—a thousand thousand moments that remind you who you are and who you were (link-replace:"<span class=\"underdot\">always meant to be</span>")[always meant to be(t8n-delay: 1s)+(t8n:"dissolve")(show:?meantto)].
|meantto)[<p>You are the hero of all mankind, destined to strike down the gods, to bind all wayward spirits to your will.</p>
<p>And the next step you take towards that destiny lies here, on these islands where the gods have placed their champion. Where they sought to hide from the world—and you—after they cast you deep beneath the waves.</p>
<p>With the wall gone, the barrier islands and the volcano beyond them are once more reachable. It is a simple matter to sail your boat over and climb, once more, up and then down to the dragon’s lair.</p>
<p>This time, (link-replace:"<span class=\"underdot\">there is no contest</span>")[there is no contest(t8n-delay: 1s)+(t8n:"dissolve")(show:?nocontest)].</p>
]
|nocontest)[<p>Unlike your previous battle, this time you are prepared. You have not been weakened by the barrier islands, either. Quite the contrary. You undo each island with your mind as your boat passes by, and when you reach the mount you feel stronger than ever. More determined. More powerful.</p>
<p>The dragon that the gods have forged flies valiantly against you, but before it can so much as strike, you manifest chains from your will and secure the creature to the ground. Before it can breathe its charring flames, you call up sigils of binding and push it into a near-death state.</p>
<p>As it shudders and lies still, (link-replace:"<span class=\"underdot\">your lips curl up in a smile</span>")[your lips curl up in a smile(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>]
|endlink)[
<p>Although you have defeated the champion of the gods, avenging yourself for that earlier loss and absorbing almost all the power they placed within the dragon, you know the war is not yet over.</p>
<p>Somewhere out there in the world, you can feel smaller gods and spirits. Running in fear. Hiding where they think they are safe. A few larger gods must still move amongst them as well, biding their time. Plotting against you.</p>
<p>But you are not worried. After all, you are the hero of all mankind. It is your destiny to destroy them and free your fellows from their scorn and their disdain. </p>
<p>You may not have succeeded in your mission yet, but eventually those last remaining powers of the world will come before you. And when they do?</p>
<p>When they do, you will be here, waiting and ready.</p>
<p class="center">The End.</p>
<p class="center">[[Return to title->Start]] — (link: "Remember things differently")[(track: 'beyond', 'fadeout', 5)(load-game:"Slot B")]
]
}{
<p>This wide branch of the tunnel continues to the north, but it has long been subsumed by the sea. (if: $lake_visit is false)[(set: $lake_visit to true)This is where you awoke, countless days ago. Lying on the shore, drenched through to your skin, barely aware of who you were or what you did before coming. In the time since then you have become slightly more aware of yourself—but only slightly.]</p>
(display: "cave counter")
<p>The fork that leads to the main tunnel loop is [[to the south->fork b]].</p>
}{
(track: 'desert', 'fadeout', 5)
<p>Your boat skims across the moonlit ocean towards the outpouring of arcane light, propelled by your urgency to reach whatever calls you. At such a speed, it does not take long for (link-replace:"<span class=\"underdot\">you to arrive</span>")[you to arrive(t8n-delay: 1s)+(t8n:"dissolve")(show:?wall)].</p>
|wall)[<p>There in the midst of the waves stands a wall of crackling power, at least ten times taller than even the tallest person you have ever met. It seems to stretch in a straight line forever, although you know it cannot.</p>
<p>Half-cautious, half-eager, you call down another wind and circle around, looking for an opening, but there is nothing. Somehow, no matter from which angle you approach this area of the ocean is blocked by the wall, stretching unbroken. Unyielding.</p>
<p>This unnatural obstacle can only be the work of the gods, and (link-replace:"<span class=\"underdot\">you know you cannot overcome it.</span>")[you know you cannot overcome it.(t8n-delay: 1s)+(t8n:"dissolve")(show:?lost)]</p>]
|lost)[<p>At least, not yet. Not as you are now, with your memories scattered and your sense of self spread far and wide across the seas. But you do not let that discourage you—you feel, deep within your soul, that it is your destiny to overcome whatever lies before you.</p>
<p>Perhaps you will be capable once you have [[recovered what you’ve lost->ii]].]
}{
<!--set location-specific text for link to the village-->
(if: $village_known is true)[(set: $village_loc to "the village of your youth")]
(else:)[
(if: $location is 7)[(set: $village_loc to "the north-west")]
(else-if: $location is 2)[(set: $village_loc to "the village off your bow")]
(else-if: $location is 3)[(set: $village_loc to "the south")]
(else-if: $location is 4)[(set: $village_loc to "the far south-west")]
(else-if: $location is 5)[(set: $village_loc to "the south-west")]
(else:)[(set: $village_loc to "the far south-west")]
]
<!--set location-specific text for link to the island city-->
(if: $city_known is true)[(set: $city_loc to "the thriving island city")]
(else:)[
(if: $location is 7)[(set: $city_loc to "due north-north-west")]
(else-if: $location is 2)[(set: $city_loc to "the north")]
(else-if: $location is 3)[(set: $city_loc to "the thriving city off your bow")]
(else-if: $location is 4)[(set: $city_loc to "due west-south-west")]
(else-if: $location is 5)[(set: $city_loc to "the west")]
(else:)[(set: $city_loc to "the far west")]
]
<!--set location-specific text for link to the island-->
(if: $island_known is true)[(set: $island_loc to "the lonely island")]
(else:)[
(if: $location is 7)[(set: $island_loc to "the north")]
(else-if: $location is 2)[(set: $island_loc to "the far north-east")]
(else-if: $location is 3)[(set: $island_loc to "the north-east")]
(else-if: $location is 4)[(set: $island_loc to "the island off your bow")]
(else-if: $location is 5)[(set: $island_loc to "the north-east")]
(else:)[(set: $island_loc to "the north-west")]
]
<!--set location-specific text for link to the ruins-->
(if: $ruins_known is true)[(set: $ruins_loc to "the ruined city")]
(else:)[
(if: $location is 7)[(set: $ruins_loc to "the north")]
(else-if: $location is 2)[(set: $ruins_loc to "the north-west")]
(else-if: $location is 3)[(set: $ruins_loc to "the west")]
(else-if: $location is 4)[(set: $ruins_loc to "the south")]
(else-if: $location is 5)[(set: $ruins_loc to "the ruins off your bow")]
(else:)[(set: $ruins_loc to "the south-west")]
]
<!--set location-specific text for link to the underwater cave-->
(if: $cave_known is true)[(set: $cave_loc to "the underwater cave")]
(else:)[
(if: $location is 7)[(set: $cave_loc to "the far north-east")]
(else-if: $location is 2)[(set: $cave_loc to "due east-north-east")]
(else-if: $location is 3)[(set: $cave_loc to "the far east")]
(else-if: $location is 4)[(set: $cave_loc to "the south-east")]
(else-if: $location is 5)[(set: $cave_loc to "the north-east")]
(else:)[(set: $cave_loc to "the submerged cave off your bow")]
]
<!--set current location text value-->
(if: $location is 7)[(set: $current_loc to "the impassable wall")]
(else-if: $location is 2)[(set: $current_loc to "the village of your youth")]
(else-if: $location is 3)[(set: $current_loc to "the thriving island city")]
(else-if: $location is 4)[(set: $current_loc to "the lonely island")]
(else-if: $location is 5)[(set: $current_loc to "the ruins")]
(else:)[(set: $current_loc to "the underwater cave")]
}{
(if: $location is 2)[(display: "map village")]
(else-if: $location is 3)[ (display: "map city")]
(else-if: $location is 4)[(display: "map island")]
(else-if: $location is 5)[(display: "map ruins")]
(else-if: $location is 6)[(display: "map cave")]
(else-if: $location is 7)[(display: "map wall")]
(else:)[<div class="map"><img style="width:100%;" src="https://infomancy.net/crescent-sea-stories/img/map.png" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" /></div>]
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/cave.png" alt="a monstrous whirlpool occupies the sea, a swirling maelstrom of water and foam" />
</div>
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/city.png" alt="a fishing vessel plies the water, the lights of a city visible on the island beyond it" />
</div>
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/island.png" alt="a lonely island rises from the sea here, with a winding path that travels past forested hills to its peak" />
</div>
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/ruins.png" alt="ruined buildings rise from the sea here, with broken windows and clear signs of decay" />
</div>
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/village.png" alt="you are at a stretch of beach along a large island lined with tall cliffs; atop the cliffs is a path atop, along with a ruined home" />
</div>
}{
<div class="map">
<img style="width:100%;" src="img/map.jpg" alt="the waters of the crescent sea spread out, bordered by the boiling sea in the far northeast and the jagged spikes of the broken range to the far west and north" />
<img class="loc" src="img/wall.png" alt="a glowing wall stands atop the water here, impervious and stretching far above" />
</div>
}{
(set: $ruins_type to 1)(set: $rage_isles to it + 1)(set: $in_memory to false)
<p>After that, despite your best efforts to remember, things grow fuzzy.</p>
<p>Did your efforts pay off? From the feeling of pure rage that still resonates within you, you can’t imagine having failed. Not with that kind of energy. That kind of anger.</p>
<p>You guess it doesn’t matter. Even if you were to remember, even if you knew for sure, it’s not like you can go back and [[change things->ruins end]].</p>
}{
<p>The stone benches of this outdoor amphitheatre have served as the village’s meeting place since time out of time.</p>
<p>The road leads back through the village (if: $gong_struck is true)[ |link-1>[to the north](transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[to the north (but you can’t go that way—you’ll get caught for sure)]](else:)[ [[to the north->road c]]], while the cliff-top path winds away [[to the north-east->cliffs c]]. At the foot of the amphitheatre, [[the meeting gong]] hangs high on a wooden crossbeam, and beyond that (if: $gong_struck is true)[ |link-2>[to the south](transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-2)[to the south (whence the fisher-folk will be arriving soon)]](else:)[ [[to the south->beach]]], you can see the only stretch of proper beach in town.</p>
}{
(set: $cycler to 1)
<h1>Before We Begin...</h1>
<p>To turn off sound, you can click or tap the arrow in the top left corner of your screen and select "mute all."</p>
<p>This game has three different types of links:</p>
<ul>
<li><strong>Normal links</strong>: Clicking a normal link will take you to a different part of the game, erasing all the text on the current page. Make sure you’re ready to proceed before clicking these! Care to [[try it out->Start]]?</li>
<li><strong>Soft links</strong>: Clicking a link with a dashed underline will add new text to the current page, but won’t erase existing text. Why don’t you (link-replace:"<span class=\"underdot\">try it out</span>")[try it out(t8n-delay: 1s)+(t8n:"dissolve")(show:?hookname)]?</li>
|hookname)[<li>Gods and spirits! You’re a natural.</li>]
<li><strong>Refreshable links</strong>: Some links will have a small ‘refresh’ icon to their immediate left. Clicking the icon will change the choices available to you, so be sure to check what you can do before you decide. Refreshable links can also be soft links (in which case the refresh icon will vanish), and in some cases the game will offer options you can’t actually select. Try it out below: </li>
</ul>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link-replace:"<span class=\"underdot\">Okay, let’s go</span>")[(hide:?cycle)(t8n-delay: 1s)+(t8n:"dissolve")(show:?hookname2)] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link-replace:"<span class=\"underdot\">Okay, let’s go</span>")[(hide:?cycle)(t8n-delay: 1s)+(t8n:"dissolve")(show:?hookname2)] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ [[Exit to title->Start]] ] ]
(else:)[(replace: ?link-text)[|link-1>[Beat the game] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[You can’t beat it that easily...] ] ]
]
|hookname2)[
<p>This game auto-saves after you complete each major section—you will receive a notification when this happens.</p>
<p>You can reload your game to the most recent save file, or create a manual save file, by visiting the <strong>menu</strong> screen available at the top of each game page.</p>
<p>[[Okay, got it.->Play]]</p>]
}{
<p>You are halfway up the island’s cliffs, at the end of the dirt path that leads from the shore.</p>
<p>Your teacher’s cabin stands [[to the west->cabin]], while a gravel walkway [[snakes around it->garden]] leading to the garden. The path continues [[to the south-east->path b]].</p>
}{
<p>You are halfway up the path that leads from your master’s cabin to the shore.</p>
<p>The path continues [[to the north-west->path a]] and [[to the south->path c]]. A narrow trail leads into dense forest [[to the east->forest 0]].</p>
}{
(set: $shorecount to 0)
<p>You are at the bottom of the path that leads to your master’s cabin.</p>
<p>The path climbs the hill [[to the north->path b]], and [[to the west->shore]] is the shore.</p>
}{
<p>You are at the peak of the island’s central mountain—really, it’s not much more than a very tall hill.</p>
(if: $current_task is 6)[<p>The air up here is much purer. Breathing it almost burns your lungs. You can’t be sure it’s ‘pure nothing’ like your master wanted, but perhaps it’s close enough. (link-replace:"<span class=\"underdot\">Gather some air in the jar</span>.")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?jar)]</p>
|jar)[<p>Feeling more than a little foolish, you unscrew the lid from your jar and swish it around in the air, then close the lid up tight. Kind of ridiculous, but not the most absurd thing he’s ever asked you for. It’s probably not even in the top ten.</p>(set: $has_air to true)(display: "quick travel")]
]
<p>There is no way to go but down and [[to the south->face]].</p>
}{
<p>You are on a promontory that reaches out across a huge underground cavern.</p>
<p>To the south, the cavern stretches on—apparently without end. Huge stalactites obscure the distance, while narrow, sparkling stalagmites reach up from the floor far below you.</p>
(display: "cave counter")
<p>The only way out is back [[to the north->ravine]].</p>
}{
<p>Your task is complete, and you can now [[return to your master’s cabin->cabin]].</p>
}{
(set: $village_type to 3)(set: $despair_isles to it + 1)(set: $in_memory to false)
<p>Terrified, you do not wait for the woman to put you under her spell once more.
<p>This has all been a mistake. You realise that your boredom has led you down a dangerous path. One that you may never be able to turn aside from, if you do not flee now.</p>
<p>You turn, leaving her there, blood on her lips, coughs shaking her body. You turn and then...</p>
<p>And then...</p>
<p>And then [[the memory ends->village end]].</p>
}{
(set: $ravine_visits to it + 1)
<p>You are on a narrow natural bridge that spans a vast underground ravine. (If: $ravine_visit is false)[(set: $ravine_visit to true)The first time you came here, you stumbled and almost fell into that darkness. Every time since, you have wondered if perhaps you should simply save yourself the bother and step right off.</p>
<p>Every time so far, you have resisted. Every time so far, you have wondered if next time you will not.]</p>
(display: "cave counter")
(if: $ravine_visits < 2)[ <p>The bridge ends in a promontory [[to the south->promontory]], and leads to the main loop of tunnels [[to the north->fork b]].</p>]
(else:)[
(set: $cycler to 1)
<p>As you set foot out over the ravine, you notice something. Some presence, far down in the darkness below.</p>
<p>(Your memory falters... Something happened here. But what?)</p>
|link-section>[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "You climbed down, your fury rising")[(set: $bottom_type to 1)(go-to: "ravine bottom")] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "You climbed down, your fury rising")[(set: $bottom_type to 1)(go-to: "ravine bottom")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "Despairing, you misstepped and slipped")[(set: $bottom_type to 2)(go-to: "ravine bottom")] ] ]
(else:)[(replace: ?link-text)[ (link: "You continued on your way")[(replace: ?link-section)[<p>The bridge ends in a promontory [[to the south->promontory]], and leads to the main loop of tunnels [[to the north->fork b]].</p>] ] ] ]
]
]
}{
(if: $bottom_type is 1)[
<p>The climb is perilous, and takes longer than you’d thought—you wonder just how deep this ravine goes. Not for the first time, you try to place yourself and your prison in the world. You have, after all, been stuck in these tunnels for longer than you can recall. Not eating. Not drinking. Still alive. Where exactly <em>are</em> you? Who put you here?</p>
<p>After what feels like hours, you arrive at a small ledge that spans the gap between the bridge and the far wall. It is soft to the touch and (link-replace:"<span class=\"underdot\">strangely hairy</span>")[strangely hairy(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>
]
(else:)[
<p>You lose your footing, distracted by your despair, and silp straight off the ravine.</p>
<p>It's not what you wanted—not at all—and you close your eyes as you fall, dreading the end. Can you even die? you wonder. You have, after all, been stuck in these tunnels for longer than you can recall. Not eating. Not drinking. Still alive.</p>
<p>After several minutes—during which you wonder if perhaps you will simply fall forever—you strike the ground. You feel one leg break, and your ribs, as all the air is expressed from you in a sudden, jolting gasp. You do not die after all, although you are not certain if the reason is to do with you and what you have become, or because the ledge you have landed on, which spans the gap between the bridge and the far wall, is soft to the touch and (link-replace:"<span class=\"underdot\">strangely hairy</span>")[strangely hairy(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].</p>
]
|endlink)[<p>It is not hairy, you realise with a jolt(if: $bottom_type is 2)[ through the intense pain]. It is <em>hair.</em> This ledge is not of rock, but of flesh.</p>
<p>(if: $bottom_type is 2)[You blink until your eyes water, muttering a spell until the pain fades enough for you to focus.] You are long used to the dim light of the cave system, and luminescent fungi line the walls of the ravine.</p>
<p>What they illuminate makes it clear: you have landed on the arm of a god, flung out from further below, its fingers jabbed like the roots of a tree into the wall. On the opposite side of the ravine is jagged bone, all that remains of what must have once been an elbow.</p>
<p>How long has this arm been here, hidden in the depths of this system of caves? What happened to its owner? (if: $ruins_finished is true)[Did <em>you</em> cause this, with what you called down?]</p>
<p>You do not know, but it does not matter. As your (if: $bottom_type is 1)[fury](else:)[despair] grows, the sense that drew you down here gets stronger. That something is down here you <em>need</em>. The sense grows and grows until it overwhelms you, and then there is only one thing you are able to do. (if: $bottom_type is 1)[ [[You eat->cave-default]].](else:)[ [[You eat->cave-repent]].]</p>
]
}{
<p>This dirt path leads to the village’s main road, cutting through its residential area. Houses line both sides, each with its own distinct style of bead curtain.</p>
<p>Since it’s midday, everyone appears to be either sleeping or staying indoors.</p>
<p>The path leads to your parents’ home [[to the east->home]], and the main road is [[to the west->road b]]. You can reach the village’s storage hut [[to the north-east->hut]], or the spirit well along a narrow dirt trail [[to the south->spirit well]].</p>
}{
(set: $cycler to 1)
|main>[
<p>You are on the road that leads from your village. It continues to the north, and (you know from experience) turns sharply west as it leads into the hills inland.</p>
(if: $headwoman_notified is true)[<p>(if: $merchants_seen is false)[The strange dark blot in the distance is gone.](else:)[There is no sign of the outsiders at the bend in the road.] The headwoman—or whoever she was speaking to—must already have taken care of things.</p> ]
(else-if: $merchants_found is false)[<p>Just before that westerly bend, you can see something in the road, an uneasy dark blot on the landscape, broad and disjointed, parts of it moving slightly. At this distance, you are not sure what it is—only that it should not be there. Only that something about it is wrong.</p>(if: $merchants_seen is false)[(set: $merchants_seen to true)] ](else-if: $headwoman_notified is false)[<p>The injured outsiders are still there at the bend in the road, and although you are not close enough to see what they are doing you remember all too well how some moaned in agony when you saw them last, while others lay perilously still.</p>]
(if: $merchant_chat is true and $headwoman_notified is false)[<p>You need to [[tell the headwoman about this->road b]].</p>]
(else:)[
<p>Behind you [[to the south->road b]], the road leads through the centre of the village. [[To the east->cliffs a]], a narrower dirt path edges along the top of the cliffs that separate the village’s huts from the sea.</p>
(if: $headwoman_notified is false)[
<p>(Your memory falters. What did you do here?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (if: $merchants_found is true)[ [[Approached the outsiders->travellers]] ](else:)[ [[Approached the bend in the road->travellers]] ] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (if: $merchants_found is true)[ [[Approached the outsiders->travellers]] ](else:)[ [[Approached the bend in the road->travellers]] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "Went to tell someone")[ (replace: ?main)[<p>Eyeing (if: $merchants_found is true)[the distant shape of those injured outsiders](else:)[that distant, worrying shape] in the road, you know you need to tell somebody about it. And in the village of your youth, ‘somebody’ only ever means one person: the village headwoman, whose home stands opposite your own [[to the south->road b]].</p> ] ] ] ]
(else:)[(replace:?link-text)[ (link: "Left, quickly")[(replace: ?main)[<p>Unsettling shapes in the road are none of your concern, you tell yourself. And you are not supposed to go further from the village than this—you turn quickly and [[go back->road b]].</p> ] ] ] ]
]
]
]
}{
<p>You are on the road that leads through your village.</p>
<p>The village headwoman’s house stands [[to the west->headwoman]], opposite the residential area [[to the east->residences]]. The road continues [[to the south->road c]] and [[to the north->road a]].</p>
}{
<p>You are on the road that leads through your village.</p>
<p>[[To the south->meeting place]] is the meeting place, while the spirit well is a gaping hole [[to the east->spirit well]]. The road continues [[to the north->road b]].</p>
}{
(display: "cave counter")
<p>Rocks block the passage here. (if: $rockfall_visited is false)[(set: $rockfall_visited to true)You have spent countless hours trying to move them, trying to find a way through, hoping that somewhere beyond them is a way back to the surface. But you know deep down it’s futile—that’s the whole reason you were put here, after all.] There is no way out.</p>
<p>The familiar tunnels and caverns are behind you [[to the south->fork a]].</p>
}{
(set: $cycler to 1)
(set: $ruins_count to it + 1)
<p>You stand atop the skyscraper, closer to the sky than the streets far below.<p>
(if: $ruins_count > 15)[
<p>And then, although you didn’t think it possible, the power that runs through you—the power that you called down—[[grows stronger still->cold observer]].</p>
]
(else-if: $ruins_count is 1)[
<p>It is (link-replace:"<span class=\"underdot\">a quiet evening</span>")[a quiet evening(t8n-delay: 1s)+(t8n:"dissolve")(show:?you-must)], and the people of this quadrant of the city are returning to their homes. The streets below are full of autocars and bikes, pedestrians and joggers, while the skies nearer to your level are alive with the occasional friend of the spirits, striding across thin air as if it were solid. (if: ($village_finished is true) or ($island_finished is true))[There are not as many of these now, though, as there were in your youth,](else:)[Still, you feel the number of these last is fewer than it should be,] and you shudder to think (if: $city_finished is true)[the sickness may be spreading](else:)[what that may mean].</p>
|you-must)[
<p>For the barest of moments, you wonder if perhaps you have erred in your judgement. If perhaps the spell you (if: $island_finished is true)[have at long last wrested from your former master’s precious tomes](else:)[are about to cast] might be a mistake.</p>
<p>But you have come too far to stop now. [[Haven’t you?->rooftop]]]
]
(else:)[
(set: $current_transformation to $transformations's random)
(set: $transformations to ($transformations - (a: $current_transformation)))
<p>(if: $current_action is 2)[You try desperately to stop the spell, but it is no use—its power strikes, and ](else-if: $current_action is 3)[You put all your rage and fury into the spell, and it intensifies, burning through your body as ](else:)[You stand and observe as ](print: $current_transformation).</p>(set: $current_action to 1)
(if: $ruins_count % 3 is 0)[
<p>(Your memory falters. What did you do next?)</p>
|endlink>[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ [[You stood in silent witness->rooftop]] ] </p>]
]
(else:)[
<p>(if: $stop_count >1)[Despite all your efforts, the magic](else-if: $go_count > 1)[Powered by your rage, the magic](else:)[The magic you have unleashed] continues to pour through you and out into the world, and you find you can do nothing but [[serve as its conduit->rooftop]].</p>]
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ [[You stood in silent witness->rooftop]] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You tried to stop the spell")[(set: $stop_count to it + 1)(set: $go_count to it - 1)(set: $current_action to 2)
(if: $stop_count > 2)[(go-to: "stop spell")](else:)[(go-to: "rooftop")] ] ] ]
(else:)[(replace: ?link-text)[ (link: "You poured your fury into the spell")[(set: $go_count to it + 1)(set: $stop_count to it - 1)(set: $current_action to 3)
(if: $go_count > 2)[(go-to: "maximum effort")](else:)[(go-to: "rooftop")]] ] ]
]
}{
<script>$('html').removeClass("memory");</script>
(display: "autosave")
(set: $has_traveled to false)
(if: $ruins_finished is false)[(set: $ruins_finished to true) (set: $memories_gained to it + 1)
<p>It feels like it all happened a very long time ago—and perhaps it did. You look at the ruined buildings, picturing how once they appeared and what you witnessed from atop them, and realise you feel more sure of yourself now. Of (link-replace:"<span class=\"underdot\">who you were</span>")[who you were(show:?shadehook)] and who you still could be.</p>
|shadehook)[
<p>The shade that represents this memory speaks:</p>
(set: $solo to true)(set: $speaker to 4)
(display: "shades")
(t8n-delay: 1s)+(t8n:"dissolve")(show:?endhook)]
|endhook)[
<p class="clear">Once the overlapping speech fades, you turn to face [[the open seas->the ruins]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>]
]
(else:)[
<p class="clear">It feels like it all happened a very long time ago—and perhaps it did. You look again at the ruined buildings, picturing how once they appeared and what you witnessed from atop them, and then you turn to face [[the open seas->the ruins]].</p>
<p>(If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>
]
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The Ruined Skyscrapers</h1>
|memory>[<p>Pride.</p>
<p>Power.</p>
<p>The end of an age.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->ruins_1]]</p>
(if: $ruins_finished is true)[<p>(Your current memory of this place is one of (if: $ruins_type is 1)[rage](else-if: $ruins_type is 2)[cold observation](else:)[despair]. Revisiting this memory will reset that. Don’t want to remember things differently? You can [[return to the map->the ruins]].)</p>]
]
}{
(set: $ruins_count to 0)
(set: $stop_count to 0)
(set: $go_count to 0)
(set: $transformations to (a:"a portion of the street collapses on itself, the tarmac a river of crackling energy", "a thousand thousand voices erupt from nowhere, their agony rippling through the air with such force that the building opposite you crumbles to dust", "a fount of spirits rises into the sky, limned with arcane fire", "your own limbs seem to stretch and warp to infinity before returning to normalcy with an audible <em>snap</em>", "a person leaps out the window of a building opposite in a rain of shattering glass—as they fall, they twist and writhe, screaming, and then transform into a massive bird that flies unsteadily away", "a group of people on the street far below shapeshift into enormous wolves, their screams dopplering into wild howls", "one of the buildings in the distance shivers, then turns to liquid and rains down onto the ground, the unmoving bodies of its former occupants spreading out along the street", "thick clouds pour down from a clear sky, only to boil into shimmering vapour and vanish a moment later", "the entire world goes black as pitch, sounds echoing strangely, for so long you think it’s permanent—fortunately, the sensation fades eventually", "all the visible glass in the buildings nearby reflects a human face—the face of your father", "an alchemist bursts onto the rooftop behind you, face a picture of fury. They reach into their coat and pull forth some unnatural potion, but as they drink it their expression changes to shock—they grow smaller and smaller with each sip, until at last they vanish from sight with a little <em>pop</em> of air", "the upper body of a god appears in the sky, its limbs a shining green and gold. Its enormous trio of eyes rove the ground, each ranging in a different direction, as if it’s trying to find you. Fortunately (for you) it vanishes again before it does", "the sun decoheres, then stitches itself together again", "up becomes down, and down up, and inside out and outside in, twisting you around and around, gasping for air, until your body flips back to normal with a scream of agony that comes unbidden from your lips", "waters pour from the south, steadily rising without cease"))
(set: $current_transformation to "")
<!-- current action is 1 if default, 2 if trying to stop, 3 if maximum effort-->
(set: $current_action to 1)
(if: $ruins_finished is true)[
(if: $ruins_type is 1)[(set: $rage_isles to it - 1)]
(else-if: $ruins_type is 2)[(set: $cold_isles to it - 1)]
(else:)[(set: $despair_isles to it - 1)].
]
}{
(display: "ruins startup")
(track: 'desolate', 'fadein', 5)
<script>$('html').addClass("memory");</script>(set: $in_memory to true)
<p>(if: $island_finished is true)[After you defeated your master, you spent a decade learning everything that could be gleaned from his books. The anguished cries from his petrified form were unsettling, but sometimes they, too, taught you what you needed to know. After that](else:)[Once], you were powerful.</p>
<p>And not only powerful. You were in your prime. Brimming with the confidence of a man who had learned all he could of the world’s secrets, and the righteous pride of one who knew what he must do.</p>
<p>And it was not easy, to do what you knew you must do. But all the same, you could not allow yourself to fail. [[The stakes were too high->rooftop]].</p>
}{
<p>But before you take a step, you observe more closely: connecting the rim to the platform is a narrow bridge of rope and wood, barely intact.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[
<p>Do they think to stop you with a mere bridge? That you will be too afraid to cross such a rickety-looking construction?<p>
<p>You charge forward, your fury burning in your throat.</p>
<p>It’s a mistake. You barely manage three pounding steps before you place a foot wrong, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>Do they think to stop you with a mere bridge? That you will be too afraid to cross such a rickety-looking construction?<p>
<p>You charge forward, your fury burning in your throat.</p>
<p>It’s a mistake. You barely manage three pounding steps before you place a foot wrong, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You picked your way expertly across.] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>The bridge may not be sturdy or particularly whole, but you’re calm and collected. Expert at finding your way where no others would dare to tread.</p>
<p>You take one step, then another, and another. For a moment, you nearly falter. But then you recover: this is no struggle at all.</p>
<p>Carefully, but smoothly, you pick your way over the bridge, all the way down and across to [[the platform->dragon]].] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You crawled across on hands and knees.] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>The sheer drop beneath the bridge is too much for you to bear. You sink to your hands and knees, then slowly, slowly venture out across it, keeping your eyes fixed on the far side.</p>
<p>For a while, the tactic works. You make it nearly halfway across, regaining a little of your confidence. Then you make the mistake of looking down.</p>
<p>That dizzying emptiness makes your head spin, and you lurch to one side, gripping the rope at the bridge’s side for all you’re worth. The motion tips the whole structure over, you with it, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")
] ] ] ]
]
}{
<p>But before you can take a step, the entire island begins to shake. It’s a massive earthquake.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[
<p>Do they think to stop you with a mere earthquake? That you will be too afraid to move forward just because the ground shakes beneath your feet?<p>
<p>You charge forward, your fury burning in your throat.</p>
<p>It’s a mistake. You barely manage three pounding steps before you place a foot wrong, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>Do they think to stop you with a mere earthquake? That you will be too afraid to move forward just because the ground shakes beneath your feet?<p>
<p>You charge forward, your fury burning in your throat.</p>
<p>It’s a mistake. You barely manage three pounding steps before you place a foot wrong, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You picked your way expertly across.] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>The ground may be shaking beneath your feet, but you’re calm and collected. Expert at finding your way where no others would dare to tread.</p>
<p>You take one step, then another, and for a moment you think this will work. You will make it.</p>
<p>But then you miss the next step, and the rim collapses beneath you. You scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You dropped to your knees in despair.] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>Suddenly, it is all too much for you to bear. You sink to your hands and knees, lowering your head, sobbing as your despair overcomes you.</p>
<p>It isn’t a tactic. Not exactly. But when you do eventually submerge from the fog of regret, you realise the earthquake has passed.</p>
<p>The rim looks stable enough now, and you manage with great effort to lever yourself back to standing, to stagger across what’s left of it, then down the inner slope of the volcano and all the way to [[the platform->dragon]].
] ] ] ]
]
}{
<p>No. That isn’t what happened. You didn’t fall here.</p>
<p>You clear your mind and [[try to remember->caldera]].</p>
}{
<p>But before you can take a step, the caldera rim begins to crumble underfoot, threatening to pitch you into the magma itself.</p>
<p>(Your memory falters. How did you overcome this obstacle?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>You charge forward, your fury burning in your throat.</p>
<p>Do they think to stop you like this? That you would be too afraid to cross such dangerous terrain?<p>
<p>Your psyche is more dangerous by far, and you cross it with every waking moment. You do not slow until you are past the crumbling rim, your anger propelling you down the inner slope of the volcano and all the way to [[the platform->dragon]].] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ |link-1>[Your fury got you across.] (click: ?link-1)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>You charge forward, your fury burning in your throat.</p>
<p>Do they think to stop you like this? That you would be too afraid to cross such dangerous terrain?<p>
<p>Your psyche is more dangerous by far, and you cross it with every waking moment. You do not slow until you are past the crumbling rim, your anger propelling you down the inner slope of the volcano and all the way to [[the platform->dragon]].] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ |link-2>[You picked your way expertly across.] (click: ?link-2)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>The ground may be collapsing, but you’re calm and collected. Expert at finding your way where no others would dare to tread.</p>
<p>You take one step, then another, and for a moment you think this will work. You will make it.</p>
<p>But then you miss the next step, and the ground drops out from beneath you. You scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")] ] ] ]
(else:)[(replace: ?link-text)[ |link-3>[You sank to the ground, waiting for the danger to pass.] (click: ?link-3)[(transition:"blur")+(t8n-delay:1s)+(replace:?rim)[<p>Suddenly, it’s all too much. You sink to your knees, waiting for the ground to stabilise. For your passage to be safer.</p>
<p>It’s a mistake. The ground drops out from beneath you, and you scream as you plunge into the volcano’s core, missing the platform by inches. And after that? Well. After that, there’s very little time to do anything at all before the end comes.</p>(transition:"blur")+(t8n-delay:4s)(display:"second fail")
] ] ] ]
]
}{
(if: $village_finished is false)[
<span class="float" style="color:#DC267F;"><p style="top:-15px;left:-27px;">Who are you?</p><p style="right:-55px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>]
(else-if: $village_type is 1)[
<span class="float"><p style="top:-15px;left:-27px;">The spirits sickened us!</p><p style="right:-55px;">They deserved to suffer.</p><p style="top:10px;left:50px;">I took the first step then.</p><p>I have no regrets.</p></span>]
(else-if: $village_type is 2)[<span class="float" style="color:#FE6100;"><p style="top:-15px;left:-27px;">The women lied.</p><p style="right:-55px;">They saw me as a child, all of them.</p><p style="top:10px;left:50px;">None knew the keenness of my intellect then.</p><p>I was not fooled.</p></span>]
(else:)[<span class="float" style="color:#785EF0;"><p style="top:-15px;left:-27px;">I was afraid.</p><p style="right:-55px;">I wanted no part in it.</p><p style="top:10px;left:50px;">I was only a child.</p><p>What else could I have done?</p></span>]
}{
(if: $city_finished is false)[
<span class="float"><p style="left:19px;">Who are you?</p><p style="top:15px;left:-10px;">Who are you?</p></span>
]
(else-if: $city_type is 1)[
<span class="float" style="color:#DC267F;"><p style="left:19px;">They killed her!</p><p style="top:15px;left:-10px;">They deserved to die.</p></span>]
(else-if: $city_type is 2)[<span class="float" style="color:#FE6100;"><p style="left:19px;">I needed more time.</p><p style="top:15px;left:-10px;">I did not know how to stop it.</p></span>]
(else:)[<span class="float" style="color:#785EF0;"><p style="left:19px;">So many regrets... </p><p style="top:15px;left:-10px;">I could not save her.</p></span>]
}{
(if: $island_finished is false)[
<span class="float"><p style="top:-15px;left:-40px;">Who are you?</p><p style="right:5px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>]
(else-if: $island_type is 1)[<span class="float" style="color:#DC267F;"><p style="top:-15px;left:-40px;">I killed him.</p><p style="right:5px;">I destroyed him.</p><p style="top:10px;left:50px;">He used me.</p><p>He was weak.</p></span>]
(else-if: $island_type is 2)[<span class="float" style="color:#785EF0;"><p style="top:-15px;left:-40px;">I killed him.</p><p style="right:5px;">I grew stronger.</p><p style="top:10px;left:50px;">He was no use to me.</p><p>He tried to keep me down.</p></span>]
(else:)[<span class="float" style="color:#FE6100;"><p style="top:-15px;left:-40px;">I survived.</p><p style="right:5px;">I destroyed him.</p><p style="top:10px;left:50px;">He lied to me.</p><p>I had no other choice.</p></span>]
}{
(if: $ruins_finished is false)[
<span class="float"><p style="top:-50px;left:-50px;">Who are you?</p><p style="top:5px;left:-26px;">Who are you?</p></span>
]
(else-if: $ruins_type is 1)[
<span class="float" style="color:#DC267F;"><p style="top:-50px;left:-50px;">They deserved it!</p><p style="top:5px;left:-26px;">The strong do as they will!</p></span>
]
(else-if: $ruins_type is 2)[<span class="float" style="color:#FE6100;"><p style="top:-50px;left:-50px;">I watched it all.</p><p style="top:5px;left:-26px;">I did not try to stop it.</p></span>]
(else:)[<span class="float" style="color:#785EF0;"><p style="top:-50px;left:-50px;">I could not stop it.</p><p style="top:5px;left:-26px;">I was weak.</p></span>]
}{
(if: $cave_finished is false)[
<span class="float" style="top:-150px"><p style="top:-150px;left:-40px;">Who are you?</p><p style="right:-25px;top:150px;">Who are you?</p><p style="top:10px;left:50px;">Who are you?</p><p>Who are you?</p></span>
]
(else-if: $cave_type is 1)[
<span class="float" style="color:#DC267F;"><p style="top:-150px;left:-40px;">I escaped that prison.</p><p style="right:-25px;top:150px;">I grew stronger!</p><p style="top:10px;left:50px;">My enemies could not contain me.</p><p>I will destroy them.</p></span>
]
(else-if: $cave_type is 2)[<span class="float" style="color:#FE6100;"><p style="top:-150px;left:-40px;">I wandered for ages.</p><p style="right:-25px;top:150px;">Lost. Alone.</p><p style="top:10px;left:50px;">Eventually I found my way.</p><p>I will not be imprisoned again.</p></span>]
(else:)[<span class="float" style="color:#785EF0;"><p style="top:-150px;left:-40px;">I could not die.</p><p style="right:-25px;top:150px;">The dark was endless.</p><p style="top:10px;left:50px;">Those lonely caves...</p><p>I had to get out.</p></span>]
}{
<span class="clear"></span>
(enchant: ?who's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 30) + (t8n:"blur"))
<span class="shades">
(if: $solo is false or $speaker is 1)[ |who>[(display: "shade 1")] ]
(if: $solo is false or $speaker is 2)[ |who>[(display: "shade 2")] ]
(if: $solo is false or $speaker is 3)[ |who>[(display: "shade 3")] ]
(if: $solo is false or $speaker is 4)[ |who>[(display: "shade 4")] ]
(if: $solo is false or $speaker is 5)[ |who>[(display: "shade 5")] ]
</span>
<span class="clear"></span>
}{
(set: $cycler to 1)
(if: $shorecount > 12)[(set: $shorecount to 12)]
(if: $shorecount is 0)[
<p>The beach stretches around the island, broken up by dunes and tufts of long grass. You know from experience it continues like this nearly all the way around.</p>
<p>The path that leads to your master’s cabin is [[behind you->path c]]. Or will you (link-replace:"<span class=\"underdot\">walk along the shore</span>")[walk along the shore(t8n-delay: 1s)+(t8n:"dissolve")(show:?chooser)]?
]
(else-if: $shorecount is 12)[
<p>You reach the end of the beach—a small hillock of grass and dirt set before a sheer cliff face that extends into the water.</p>
<p>Beyond the grass, you can just see [[a shallow cave mouth]] in the cliff. The path that leads to your master’s cabin is [[far behind you->path c]].</p>
]
(else:)[
<p>The beach stretches around the island, broken up by dunes and tufts of long grass. You know from experience it continues like this nearly all the way around.</p>
(display: "shore check")
<p>The path that leads to your master’s cabin is [[behind you->path c]]. Or will you (link-replace:"<span class=\"underdot\">walk along the shore</span>")[walk along the shore(t8n-delay: 1s)+(t8n:"dissolve")(show:?chooser)]?
]
|chooser)[<p>(Your memory falters. How long did you walk along the shore?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link:"A little while.")[(set: $shorecount to it + 1)(go-to: "shore")] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link:"A little while.")[(set: $shorecount to it + 1)(go-to: "shore")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link:"A long while.")[(set: $shorecount to it + 3)(go-to: "shore")] ] ]
(else:)[(replace: ?link-text)[ (link:"A very long while.")[(set: $shorecount to it + 5)(go-to: "shore")] ] ]
]
}{
<!-- Check to see if there is anything on the beach -->
(if: $shorecount is 1)[
(if: $has_cockle is false)[
<p>A small white cockle shell sticks out of the sand, just above the surf line.
(if: $current_task is 1)[(link-replace: "<span class=\"underdot\">Take the shell</span>.")[You pick it up and put it in your pocket. (set: $shell_count to it + 1) You have gathered (print: "$shell_count") shell(if: $shell_count > 1)[s]. (set: $has_cockle to true) (if: $shell_count is 3)[(display: "quick travel")]] ]</p>
]
(else:)[<p>You vaguely recognise this spot of beach as where you found the cockle shell. There is nothing else of note here.</p>]
]
(else-if: $shorecount is 3)[
(if: $has_conch is false)[
<p>A spiky conch shell rests at the foot of a clump of grass.
(if: $current_task is 1)[(link-replace: "<span class=\"underdot\">Take the shell</span>.")[You pick it up and put it in your pocket. (set: $shell_count to it + 1) You have gathered (print: "$shell_count") shell(if: $shell_count > 1)[s]. (set: $has_conch to true)(if: $shell_count is 3)[(display: "quick travel")]] ]</p>
]
(else:)[<p>You vaguely recognise this spot of beach as where you found the conch shell. There is nothing else of note here.</p>]
]
(else-if: $shorecount is 7)[
(if: $has_limpet is false)[
<p>A conical limpet shell is buried in the sand, its shiny grey surface just visible.
(if: $current_task is 1)[(link-replace: "<span class=\"underdot\">Take the shell</span>.")[You pick it up and put it in your pocket. (set: $shell_count to it + 1) You have gathered (print: "$shell_count") shell(if: $shell_count > 1)[s]. (set: $has_limpet to true)(if: $shell_count is 3)[(display: "quick travel")]] ]</p>
]
(else:)[<p>You vaguely recognise this spot of beach as where you found the limpet shell. There is nothing else of note here.</p>]
]
(else-if: $shorecount is 4)[
(if: $has_strand is false)[
<p>A long strand of durable kelp lies tangled about some driftwood here.
(if: $current_task is 2)[(link-replace: "<span class=\"underdot\">Take the kelp</span>.")[You untangle the kelp and gather it in your arms. (set: $seaweed_count to it + 1) You have gathered (print: "$seaweed_count") piece(if: $seaweed_count > 1)[s] of seaweed. (set: $has_strand to true)(if: $seaweed_count is 2)[(display: "quick travel")]] ]</p>
]
(else:)[<p>The driftwood from which you gathered the strand of kelp rests on the beach here.</p>]]
(else-if: $shorecount is 9)[
(if: $has_clump is false)[
<p>A mounded clump of kelp is in the middle of this stretch of sand.
(if: $current_task is 2)[(link-replace: "<span class=\"underdot\">Take the kelp</span>.")[You gather the clump of seaweed in your arms. (set: $seaweed_count to it + 1) You have gathered (print: "$seaweed_count") piece(if: $seaweed_count > 1)[s] of seaweed. (set: $has_clump to true)(if: $seaweed_count is 2)[(display: "quick travel")]] ]</p>
]
(else:)[<p>This looks like the spot where you gathered the clump of kelp. You can still see a few errand tendrils in the sand. There is nothing else of note.</p>]
]
(else:)[<p>There is nothing of note here.</p>]
}{
(if: $helping is true)[
<p>At last, you arrive at your destination: the spirit well, its ceremonial ropes shaking softly to and fro in the calm breeze of the evening.</p>
<p>The woman staggers as you come to a stop, then pulls a small pouch from a hidden pocket. “Take this,” she says, gritting her teeth. “And throw it in.”</p>
<p>You steel yourself for your body to take over, for your hands to reach out and toss the pouch into the spirit well, but (link-replace:"<span class=\"underdot\">nothing happens</span>")[nothing happens(t8n-delay: 1s)+(t8n:"dissolve")(show:?know)].</p>
|know)[
<p>“No,” she says. “I need you to understand, so that when I am gone you can finish this. Now <em>listen.</em>”</p>
<p>And this time, your body reacts. “I’m listening,” you find yourself saying.</p>
<p>“The gods and spirits are (link-replace:"<span class=\"underdot\">enemy to all who draw breath</span>")[enemy to all who draw breath(t8n-delay: 1s)+(t8n:"dissolve")(show:?enemy)],” she says. “This sickness that we bear? It’s proof enough of that. It first came upon us when we tried to manufacture the spirits’ power for ourselves. When we dared to take the powers of the gods into our own hands.”</p>
|enemy)[
(set: $cycler to 1)
<p>This goes against everything you have ever learned, here in the village. The spirits are mankind’s siblings. The gods, too, in their own distant way. How could they possibly be the enemies of all who live?</p>
<p>But she has not given you leave to speak. And she seems to know what you are thinking.</p>
<p>“It is a lot to take in,” she admits. “And I understand that you have been taught otherwise. But look me in the eye and, please, decide for yourself whether you believe your childhood fairy tales or the evidence before you.” Her body shakes with violent coughing, and blood flecks her lips.</p>
<p>When she recovers, she fixes you with a wry grin and holds up that pouch. “I will command you no more,” she rasps. “But I beg you, please: (link-replace:"<span class=\"underdot\">do not make a dying woman wait</span>")[do not make a dying woman wait(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)].”</p>
|endlink)[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ [[You did as she asked->throw pouch]]. ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ [[You did as she asked->throw pouch]]. ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ [[You ran home, terrified->ran home]]. ] ]
(else:)[(replace: ?link-text)[ [[You took the bag and ran->take bag]]. ] ]
]
]
]
]
(else:)[
<p>You stand at the edge of the spirit well, slightly vertiginous by the sheer drop before you.</p>
<p>The village’s road lies [[to the west->road c]], while the cliff-top path is [[to the east->cliffs c]]. A narrow trail [[to the north->residences]] leads to the residential area.</p>
]
}{
(masteraudio: 'preload')
<!-- Variables that manage the map / background div -->
<!--location-keyed variables: 1 = lights (or default bg when in the boat) || 2 = settlement || 3 = city || 4 = island || 5 = ruins || 6 = cave || 7 = dragon's lair -->
<!-- Map variables -->
(set: $lights_known to false)
(set: $village_known to false)
(set: $village_finished to false)
(set: $village_type to 1)
(set: $city_known to false)
(set: $city_finished to false)
(set: $city_type to 1)
(set: $island_known to false)
(set: $island_finished to false)
(set: $island_type to 1)
(set: $ruins_known to false)
(set: $ruins_finished to false)
(set: $ruins_type to 1)
(set: $cave_known to false)
(set: $cave_finished to false)
(set: $cave_type to 1)
(set: $lair_known to false)
(set: $location to 1)
(set: $has_traveled to false)
<!-- Other variables -->
(set: $shadespeech to false)
(set: $solo to false)
(set: $speaker to 1)
(set: $rage_isles to 0)
(set: $cold_isles to 0)
(set: $despair_isles to 0)
(set: $in_memory to false)
(set: $memories_gained to 0)
(set: $i to 0)
(set: $endgame to false)
}{
(set: $ruins_type to 3)(set: $despair_isles to it + 1)(set: $in_memory to false)
<p>After that, despite your best efforts to remember, things grow fuzzy.</p>
<p>Did you manage to stop the spell? It seems unlikely, given what you’ve seen of the world since emerging. But perhaps you managed to lessen its effects. To somehow soften what you unleashed.</p>
<p>Perhaps things would have been <em>worse</em>.</p>
<p>You guess it doesn’t matter. Even if you were to remember, even if you knew for sure, it’s not like you can go back and [[change things->ruins end]].</p>
}{
<p>You push your dad’s ladder into position against one of the crossbeam’s pillars, then carefully climb up to the gong, rock in hand.<p>
<p>It’s awfully high, and you take a deep breath, steadying yourself against the pillar with your free hand. Is this really happening? Are you really going to (link-replace:"<span class=\"underdot\">strike the gong</span>")[strike the gong(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)]?</p>
|endlink)[
(set: $gong_struck to true)(set: $guard_gone to true)
<p>Before you can talk yourself out of it, you raise the rock high overhead and bring it crashing down against the gong. Its echoing clash near deafens you, and shakes you to your very soul.</p>
<p>You’re already at the meeting place, so you feel no compulsion to do anything. But Argh! The noise <em>hurts</em>.</p>
<p>In any case, you’ve just called up everyone in the village. If you’re going to (if: $merchants_seen is false)[find out what’s](else:)[talk to the travellers] in the hut, you need to [[get out of here->the meeting gong]]. (Also, once the headwoman learns what you’ve done, you’re going to be in so. much. trouble.)</p>
]
}{
(set: $sweep_count to it + 1)
<p>Grumbling to yourself, you sweep the floor, gathering up the dust and debris into your dustpan and then shaking it clean outside.</p>
<p>(if: $sweep_count is 1)[They say the first step is the hardest. May as well keep going.](else-if: $sweep_count is 4)[There. That should do it.](else:)[Surely you’ll be done soon.]</p>
<p>You look around [[the cabin->cabin]] at your handiwork.</p>
}{
(set: $village_type to 2)(set: $cold_isles to it + 1)(set: $in_memory to false)
<p>Belief is a strange thing, tempered by words and will. To be sure, what you have read in all those books cannot be wholly true. But what about this woman, and her drive to throw this pouch into the spirit well. What about the fact that <em>she will not do it herself</em>, but wishes you to do it?</p>
<p>Your observations make it clear: something here does not add up. You take the bag as she asked, but you do not throw it in. Instead, you turn tail and run. This is a problem for someone else: Nuncle Anil, your parents, maybe even the headwoman.</p>
<p>The woman’s voice rises in an angry curse behind you and then...</p>
<p>And then...</p>
<p>And then [[the memory ends->village end]].</p>
}{
(set: $task_finished to false)
(if: $current_task is 1)[(if: $shell_count is 3)[(set: $item_description to "shells.")(set:$task_finished to true)]]
(else-if: $current_task is 2)[(if: $seaweed_count is 2)[(set: $item_description to "seaweed.")(set:$task_finished to true)]]
(else-if: $current_task is 3)[(if: $has_twigs is true)[(set: $item_description to "twigs.")(set:$task_finished to true)]]
(else-if: $current_task is 4)[(if: $has_scat is true)[(set: $item_description to "pouch of dried fox scat.")(set:$task_finished to true)]]
(else-if: $current_task is 5)[(if: $weeds_count is 0)[(set: $item_description to "little pile of weeds.")(set:$task_finished to true)]]
(else-if: $current_task is 6)[(if: $has_air is true)[(set: $item_description to "sealed jar you brought back from the mountaintop.")(set:$task_finished to true)]]
(else-if: $current_task is 7)[(if: $sweep_count is 4)[(set: $item_description to "dustpan—as if he didn’t just stand there watching while you swept the whole blasted room!")(set:$task_finished to true)]]
(else:)[(if: $has_water is true)[(set: $item_description to "ewer of fresh spring water.")(set:$task_finished to true)]]
(if: $task_finished is true)[
(set: $tasks_complete to it + 1)(set: $has_task to false)(if: $tasks_complete is 8)[(set: $wizard_options to it + 1)]
<p>You hold up the (print: "$item_description")</p>
<p>“Ah, excellent!” he says. “Just what I needed.”</p>
<p>He makes a little gesture, and you hand him (if: $current_task is 7)[the dustpan, somewhat baffled](else-if: $current_task is 5)[the weeds, suddenly very tired](else:)[what he asked for]. He takes it and turns away, already muttering to himself, ignoring you as always, distracted with his latest prize while you’re left to [[your own devices->cabin]].</p>]
(else:)[<p>“Not yet,” you admit.</p>
<p>He nods, and although he doesn’t look disappointed you feel certain he must be. “Best get back to it, then,” he says, turning away and leaving you to [[your work->cabin]].</p> ]
}{
(if: $current_task is 1)[
(set: $task_hint to "find three seashells")
(set: $task_loc to "the beach")
]
(else-if: $current_task is 2)[
(set: $task_hint to "gather two clumps of seaweed")
(set: $task_loc to "the beach")
]
(else-if: $current_task is 3)[
(set: $task_hint to "find some twigs from a bird’s nest")
(set: $task_loc to "the forest")
]
(else-if: $current_task is 4)[
(set: $task_hint to "collect dried fox scat")
(set: $task_loc to "the forest")
]
(else-if: $current_task is 5)[
(set: $task_hint to "weed the garden beds")
(set: $task_loc to "the garden behind the hut")
]
(else-if: $current_task is 6)[
(set: $task_hint to "bring me air from the mountaintop")
(set: $task_loc to "the mountain trail behind the hut")
]
(else-if: $current_task is 7)[
(set: $task_hint to "sweep the cabin floor")
(set: $task_loc to "the broom in the corner")
]
(else:)[
(set: $task_hint to "gather water from the forest fountain")
(set: $task_loc to "the forest")
]
<p>“Too difficult for you, eh?” the wizard says with a shake of his head. “I thought I made it crystal clear! What I need you to do is (print: $task_hint). Understand?”</p>
<p>“Yes, master,” you reply.</p>
<p>“Good! Now be off with you, lad.” And he turns back to his workspace, grumbling under his breath about the quality of apprentices these days.</p>
<p>You know [[a dismissal->cabin]] when you hear one. Guess you’re heading to (print: $task_loc).</p>
}{
<p>Your master looks you over as you speak, his eyes narrowing slightly. This is always how he looks at you: this unsettling mix of condescension and disdain.</p>
(if: $tasks_complete is 8)[<p>“That’s all for today’s lessons,” he says at last. “Why don’t you go and [[take a break->cabin]]?”</p>]
(else-if: $has_task is true)[
<p>“Well?” he says. “Did you (print: "$task_description")?”</p>
(display: "task check")
]
(else:)[
(display: "generate task")
(set: $has_task to true)
<p>“At a loose end, eh?” he mutters. “I have just the thing. Go and (print: "$task_description").”</p>
<p>You can’t quite bite back a groan. You should have just kept your bloody mouth shut.</p>
<p>“Go on then,” your master says, making little shooing motions with his hands. “And remember: keep an open mind!”</p>
<p>He says this every single time, and it’s starting to get seriously old. But you’ve been given a task. (if: $current_task is 6)[You collect a jar and lid with a sigh—you](else-if: $current_task is 8)[You gather up your master’s ewer with a sigh—you](else-if: $current_task is 7)[You pick up the broom and dustpan with a weary grimace—you](else:)[You] may as well [[do it->cabin]].</p>
]
}{
<p>“Can you give me a different, uh, ‘lesson’?” you ask.</p>
<p>“Hmmph,” your master grumbles. “Can’t even do something so simple as that?</p>
(set: $has_task to false)
(set: $temp_task to $current_task)
(display: "generate task")
(set: $tasks_left to $tasks_left + (a: $temp_task))
(set: $has_task to true)
<p>“Fine,” he snaps. “Go and (print: "$task_description"). And remember: keep an open mind!”</p>
<p>You’ve been given another task. (if: $current_task is 6)[You collect a jar and lid with a sigh—you](else-if: $current_task is 8)[You gather up your master’s ewer with a sigh—you](else-if: $current_task is 7)[You pick up the broom and dustpan with a weary grimace—you](else:)[You] may as well [[do it->cabin]].</p>
}{
(set: $cycler to 1)
<p>You wake in a small, age-worn sailboat, surrounded by the endless swell and sway of the darkened ocean waves.</p>
<p>Who are you? How did you get here? You do not know, and there is nothing in the boat but you and a lantern, lit with a steady fire of the palest blue.</p>
<p>That, and five other passengers, each identical in (link-replace: "<span class=\"underdot\">face and form</span>.")[face and form.(t8n:"dissolve")+(t8n-time: 1s)(show: ?face)]</p>
|face)[<p>High silver brows framing eyes that bore into you like augers. Lips twisted into five perpetual scowls. (link-replace:"<span class=\"underdot\">They are only half here, these others,")[They are only half here, these others, (t8n:"dissolve")+(t8n-time: 1s)(show: ?next)] oblivious to the chill night air, their outlines shimmering in the lamplight, the stars and the ocean clearly visible through their translucent bodies.</p>]
|next)[<p>Unsettling, perhaps. But though your memories remain stubbornly vanished, something in these faces is... familiar. (link-replace: "<span class=\"underdot\">It tugs at your mind.</span>")[It tugs at your mind. (t8n:"dissolve")+(t8n-time: 1s)(show:?endlink)]</p>]
|endlink)[
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ [[Ask who they are]]]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ [[Ask who they are]] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ [[Ask who you are]] ] ]
(else:)[(replace: ?link-text)[ [[Gaze at the ocean]] ] ]
]</p>
}{
<p>“(print: $speech),” you say, into your shades’ expectant silence.</p>
<p>The words come out hoarse, but with a weight to them that unlocks something within you. (link-replace:"<span class=\"underdot\">Your head swims</span>")[Your head swims(t8n-delay: 1s)+(t8n:"dissolve")(show:?leylines)].</p>
|leylines)[<p>You squeeze your eyes shut, and when the sensation stops you open them. You can see so much more, now. Not just your shades and the pale blue light of the lantern, but the shimmering lines that maintain them—all the energies that underpin the world.</p>
<p>The lantern, for instance. You see now that it is no natural flame that lights your boat, but a thin stream of faint silver-blue power that crackles out from somewhere deep within your sternum. It pulses in time with your heartbeat, and the light of the lantern, too, strengthens and fades in [[the same steady rhythm->an inverted aurora]].</p>]
}{
<p>As you wander the empty city’s streets, the eeriness of the place grows.</p>
<p>You keep thinking you see someone out of the corner of your eye—a shadow reflected in a pane of glass, a silhouette cutting across the face of a neon sign. But when you turn, there is nobody.</p>
<p>At last, you find yourself in a gleaming mall that takes up half the island’s northern slope. The doors open to let you in with a burst of noise, then shut behind you with a final-sounding <em>click</em> as the building plunges into darkness.</p>
<p>That’s when you realise: [[the city itself is your foe]].</p>
}{
(set: $check_return to (passage:)'s name)
(set: $cycler to 1)
<p>How do you defeat an entire city? You cannot even attack it, not really. And yet, your foe has trapped you, here in the darkness.</p>
<p>But something must be powering this guardian. Something must be driving it. And that means there <em>is</em> a way to subdue it and render it inanimate once more. You will need to split a portion of your very self off to escape its captivity and lower the arcane barrier it supports.</p>
<p>(Your memory falters. How did you get past this?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You split off a part of your analytical mind")[(set: $solution_type to 2)(display: "barrier check")] ] ]
(else:)[(replace: ?link-text)[ (link: "You split off a part of your despair")[(set: $solution_type to 3)(display: "barrier check")] ] ]
]
}{
<p>It is a simple matter to secure your boat to the dock.</p>
<p>A simple matter, too, to stroll along that winding path until you reach the copse of pine and maple.</p>
<p>It would be simple, too, to assume this ease signifies the rightness of your quest, the inevitability of your destiny. That simplicity, though, you reject: it is just as likely to be a trap set by the gods.</p>
<p>You keep your wits about you as you climb, and so you are not taken off guard when you reach the end of the path at a clearing in the centre of the trees and find [[a living statue]], its eyes aflame with hate, its hundred hands holding jagged swords, its mouth grinding open in a wrast of screeching invective.</p>
}{
(set: $barrier_c to true)(set: $barriers_down to it + 1)
(if: $solution_type is 1)[(set: $c_type to 1)<p>Refusing to be bound by a building, no matter how aware, you rip out a portion of your fury with a primal scream. The raw energy coalesces into a shade of your self, and it raises both arms, light erupting from it that ruptures the darkness and tears through the doors that closed behind you.</p>
<p>Your foe has no form to struggle against your shade’s assault, but the building that contains you shakes and shudders, then suddenly... <em>deflates</em> around you.</p>
<p>Your shade rises from the ground, arms still upraised, that bright, burning light still pouring from its upraised arms.</p>]
(else-if: $solution_type is 2)[(set: $c_type to 2)<p>Refusing to be bound by a building, no matter how aware, you detach a portion of your analytical coldness. The raw energy coalesces into a shade of your self, which leaps through the air like lightning, striking over and over against the mall’s unseen walls, probing for weakness.</p>
<p>Your foe has no form to block your shade’s assault, and the building that contains you shakes and shudders, then suddenly... <em>deflates</em> around you, letting in the light of day.</p>
<p>Your shade does not rest, but leaps to the next building, and the next, striking expertly and accurately every time.</p>
]
(else:)[(set: $c_type to 3)<p>Refusing to be bound by a building, no matter how aware, you rip out a portion of your despair with a gut-wrenching sob. The raw energy coalesces into a shade of your self, which sinks to the ground before you, releasing a low, keening scream of agony.</p>
<p>Your foe has no form to struggle against your shade’s assault, but the building that contains you shakes and shudders, then suddenly... <em>deflates</em> around you.</p>
<p>Your shade seems not to notice, but collapses onto its hands and knees, cries still rising., lifting out into the other buildings.</p>
]
<p>With the buildings of the false city no longer able to contain you, the barrier that protects the gods weakens and flickers.</p>
<p>You have dealt with this island, and dealt with it well. Now it is time to [[see what remains->waters]].</p>
}{
(set: $barrier_d to true)(set: $barriers_down to it + 1)
(if: $solution_type is 1)[(set: $d_type to 1)<p>You will fight fire with fire: you rip out a portion of your fury with a primal scream. The raw energy coalesces into a shade of your self, which flies straight and true at the turtle, burning with a power even greater than any arcane fire the gods could possibly raise.</p>
<p>Your foe screeches as it cooks alive, steam rising from it and the waters of the lagoon around it.</p>
<p>Your shade does not stop its assault, but stays put in the center, burning with hatred and anger.</p>]
(else-if: $solution_type is 2)[(set: $d_type to 2)<p>You will not be defeated by a mere guardian: you detach a portion of your analytical coldness. The raw energy coalesces into a shade of your self, which flies straight and true at the turtle, then flips it on its back and drives it beneath the waves.</p>
<p>Whether the creature struggles or fights back, you are unable to tell. The moment its shell touches water, a cloud of steam fills the air, obscuring your vision.</p>
<p>In a way, it does not matter. Your shade stays true to its task as the water boils away.</p>
]
(else:)[(set: $d_type to 3)<p>You, too, know what it is like to suffer the agony of flames: you rip out a portion of your despair with a gut-wrenching sob. The raw energy coalesces into a shade of your self, which attaches itself to the turtle’s shell, smothering it and yet somehow increasing its the heat of its fire.</p>
<p>Your foe screeches as it cooks alive, steam rising from it and the waters of the lagoon around it.</p>
<p>Your shade does not let go, but clings tighter to your regrets and fears, hot with unshed tears.</p>
]
<p>As the last of the lagoon vanishes under your power, the turtle dies and the barrier that protects the gods weakens and flickers.</p>
<p>You have dealt with this island, and dealt with it well. Now it is time to [[see what remains->waters]].</p>
}{
(display: "map")
<div class="text">
(if: $has_traveled is false)[(set: $has_traveled to true)<p>You return your attention to the wall.</p>]
(else:)[
<p>You draw your boat back across the waters to the smooth, impenetrable line of the wall. It has not changed since last you saw it.</p>]
<p>(if: $memories_gained > 4)[
(track: 'fallen', 'fadeout', 5)
<p><em>It</em> has not. But you have. The memories you regained have opened something up inside of you. Whatever happened here—it ties together everything you are. You feel certain that by placing your hand along its shining flank, you will irrevocably change the world.</p>
<p>(link: "Remember this place")[
(if:(save-game:"Slot B"))[
(if: (saved-games:) contains "Slot B")[](else: )[Something went wrong, and your game was unable to save.]
]
(go-to:"wall start")]
]
(else:)|link-1>[Attempt to Pass (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[You cannot pass ]] — [[Travel elsewhere->travel]]</p>
</div>
}{
<p>You walk around the atoll, eyes on the water, testing the turtle’s defenses with probing attacks.</p>
<p>You are looking for weakness, but you find none. The beast keeps its route no matter what you do, no matter what you try. Endlessly circling, its shell burning with that incorporeal fire.</p>
<p>After you have walked the circumference and returned to your boat, you think to try entering the water. But no sooner have you set one foot within than it boils and bubbles, scalding your foot.</p>
<p>As you stagger back, cursing, [[the small silver creatures]] burst from the water, flying back and forth in a high-pitched, buzzing cadenza.</p>
}{
(display: "map")
<div class="text">
(if: $island_known is false)[(set: $island_known to true)<p>Your boat skims across the star-dotted ocean, and out of the gloom rises a solitary island, towering over the waters and waves.</p><p>You lower your hands as you come to a stop just offshore, your mouth dry, your palms sweating. There is something about this island. Something about its tree-lined hills and single, jagged peak. You are not sure what, but it calls to you.</p>]
(else-if: $has_traveled is false)[(set: $has_traveled to true)<p>You return your attention to the island off your bow, taking in once again its jagged peak, its shores lined with pine and fir.</p>]
(else:)[<p>You lower your hands as your boat arrives once more at the lonely northern isle. Its crags and pines call out to you, stirring something deep within your empty, aching soul.</p>]
<p>[[Remember this place->island start]] — [[Travel elsewhere->travel]]</p>
</div>
}{
(set: $barrier_b to true)(set: $barriers_down to it + 1)
(if: $solution_type is 1)[(set: $b_type to 1)<p>As the guardian approaches, you rip out a portion of your fury with a primal scream. The raw energy coalesces into a shade of your self, and it cuts through the air like a bird, landing on the mantis with a screech that echoes your anger.</p>
<p>Your foe struggles, striking at nothing with its arms, but it cannot overcome the force of your hatred. The power of your righteous rage.</p>
<p>The shade you have created drives a spike of anger through it, beak-sharp, and begins to savage the beast.</p>]
(else-if: $solution_type is 2)[(set: $b_type to 2)<p>As the guardian approaches, you detach a portion of your analytical coldness. The raw energy coalesces into a shade of your self, and it glides through the air like an owl, deceptively slow, before digging its claws into the mantis.</p>
<p>Your foe struggles, striking at nothing with its arms, but it cannot overcome the coldness of your observations. The careful analysis of weakness.</p>
<p>And then your shade strikes: a single blow that unravels the mantis entire, turning the would-be predator into prey.</p>
]
(else:)[(set: $b_type to 3)<p>As the guardian approaches, you rip out a portion of your despair with a gut-wrenching sob. The raw energy coalesces into a shade of your self, and it crashes through the air, collapsing on the mantis with all the weight of your regrets.</p>
<p>Your foe struggles, striking at nothing with its arms, but it cannot escape. It knows, now, the futility you have long felt. The pointlessness of life.</p>
<p>Held tight by your shade, it stiffens and then stills, dissolving from the inside.</p>
]
<p>With the mantis devoured, the barrier that protects the gods weakens and flickers.</p>
<p>You have dealt with this island, and dealt with it well. Now it is time to [[see what remains->waters]].</p>
}{
<p>The meeting gong has hung from the crossbeam atop this massive stone pillar for as long as anyone can remember. It’s bespelled to summon all who hear it to [[the meeting place->meeting place]] as quickly as possible, and it’s traditionally struck only in times of urgent need.</p>
(if: $gong_struck is true)[<p>Since you just gave it a mighty blow, the other villagers are sure to come running. You need to get out of here—and fast.</p>]
(else:)[
(if: $guard_known is true)[(set: $gong_problems to true)
<p>Striking it will bring the guard at the storage hut running—along with everyone else in town. (if: $ladder_retrieved is true and $rock_retrieved is true)[Your dad’s ladder will let you reach it, and with your newly-found rock, you can [[strike it a mighty blow]] if you choose to.</p>](else-if: $ladder_retrieved is true and $rock_retrieved is false)[Your dad’s ladder will let you reach it, but it’s not like you can whack it with your fist. You need something to serve as a hammer.](else-if: $ladder_retrieved is false and $rock_retrieved is true)[Your newly-found rock will serve as an excellent hammer, but the gong’s way too high up for you to reach.](else:)[You can’t even reach it, though. Besides which, you have nothing to strike it with.]</p>
]
(else:)[<p>But (if: $merchants_seen is true)[it would alarm everyone in the village—best to just tell the headwoman what You’ve seen.](else:)[you’re not <em>that</em> bored.] Besides, it’s way too high up for you to reach.</p>]
]
}{
<p>The isle is as unforgiving as it looks.</p>
<p>You spend hours working your way slowly up its jagged walls, finding handholds and footholds, navigating switchbacks and chimneys.</p>
<p>But these hours are time well spent. For, as you climb, you realise this place is not lifeless. Straggled clumps of greenery cling to the rocks, which are beset with small holes and cracks, themselves teeming with insects and vermin.</p>
<p>It is because of these small signs of flourishing that you keep your awareness honed to an edge as sharp as any rock. It is because of this resilience that you are not surprised to see [[a mantis the size of an elephant]] perched upon the island’s very peak.</p>
}{
(display: "map")
<div class="text">
(if: $ruins_known is false)[(set: $ruins_known to true)<p>Your boat skims to a stop in the shadow of a group of ruined buildings that jut out of the waters. Once, these were skyscrapers—they glimmered in the sun, all glass and steel and solar panels, mark of man’s place in the world. Now all that remains is rusted cross-bars and crumbling concrete, jagged, broken windows draped with ivy. The raucous cries of gulls fill the air, where once human voices showed lives well lived.</p>
<p>It should make you melancholy, these ruins and their signs of times gone by. But instead, your chest swells with a half-there echo of righteous pride. You enacted a great work here, although you do not remember what—a true and lasting hammer blow that struck the evils of the world like a gong, and echoes still across these empty waves.</p>
<p></p>]
(else-if: $has_traveled is false)[(set: $has_traveled to true)<p>You gaze back up at the towering heights, imagining the buildings as they were long ago.</p>]
(else:)[<p>You return to the ruined skyscrapers, picturing their former glory in your mind’s eye.</p>]
<p>[[Remember this place->ruins start]] — [[Travel elsewhere->travel]]</p>
</div>
}{
(set: $check_return to (passage:)'s name)
(set: $cycler to 1)
<p>Now they are free of the lagoon, you can clearly see what these creatures are made of. They resemble fish, but with wings and viciously sharp teeth.<p>
<p>They dive at you again and again as the water continues to boil, but they are mere nothings. (if: $barriers_down > 0)[Even reduced](else:)[As powerful] as you are, they pose no contest. You snap your fingers, and they ignite, tiny flames that leave behind nothing but soot, which drifts slowly in the air.</p>
<p>The attack does nothing to the turtle. Just as before, it circles, ambivalent to your passage.</p>
<p>(Your memory falters. How did you get past this?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "You split off a part of your fury")[(set: $solution_type to 1)(display: "barrier check")] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You split off a part of your analytical mind")[(set: $solution_type to 2)(display: "barrier check")] ] ]
(else:)[(replace: ?link-text)[ (link: "You split off a part of your despair")[(set: $solution_type to 3)(display: "barrier check")] ] ]
]
}{
(set: $barrier_a to true)(set: $barriers_down to it + 1)
(if: $solution_type is 1)[(set: $a_type to 1)<p>As the guardian approaches, you rip out a portion of your fury with a primal scream. The raw energy coalesces into a shade of your self, and it pounces on the statue like a lynx with a meal to devour.</p>
<p>Your foe struggles, swiping wildly with its blades, but it cannot overcome the force of your hatred. The power of your righteous rage.</p>
<p>Held tight by your shade, it stiffens and then stills.</p>]
(else-if: $solution_type is 2)[(set: $a_type to 2)<p>As the guardian approaches, you detach a portion of your analytical coldness. The raw energy coalesces into a shade of your self, and it stalks the statue like a wolf with prey that will not survive long.</p>
<p>Your foe advances—or at least, it tries to. But with every step it takes it is met by your shade, unable to move forward, pushed back until it stands once again at the centre of the clearing.</p>
<p>Defeated by your implacable attention, the guardian lowers its head and stiffens, then stills.</p>
]
(else:)[(set: $a_type to 3)<p>As the guardian approaches, you rip out a portion of your despair with a gut-wrenching sob. The raw energy coalesces into a shade of your self, and it wraps around the statue like the impossible might of the sea.</p>
<p>Your foe struggles, swiping wildly with its blades, but it cannot overcome the force of your regret. The power of your limitless bleakness.</p>
<p>Held tight by your shade, it stiffens and then stills.</p>
]
<p>With the statue rendered immobile (reminding you, briefly, of your old teacher), the barrier that protects the gods weakens and flickers.</p>
<p>You have dealt with this island, and dealt with it well. Now it is time to [[see what remains->waters]].</p>
}{
(display: "map")
<div class="text">
(if: $city_known is false)[(set: $city_known to true)<p>Your boat skims across the star-dotted ocean, and then you realise there are other lights as well. The lights of other boats, fishing the waters, and gathering seaweed. And, there, off beyond them, the raised berm of an island—a large one.</p>
<p>A whole constellation of lights sparkles from its greater darkness, accompanied by the distant sounds of commerce (even at this hour) and a faint smell of cooking grease. So then, you think. People <em>do</em> still live in the world. </p>
<p>You lower your hands as your boat arrives at its shore, your heart pounding fast. Because you know that these fisher-folk and their land-bound brethren are not worth your company. They will either look on you with disdain for who you are, or—worse—with apathy for what was done to you.</p>
<p>You know this because... something happened here. But what?</p>]
(else:)[
(if: $has_traveled is false)[(set: $has_traveled to true)<p>You return your attention to the island city off your bow, its lights and sounds and smells.</p>]
(else:)[<p>You lower your hands as your boat arrives once more at the busy island city. Its sounds set your heart to pounding, stirring something deep within your empty, aching soul.</p>]
]
<p>[[Remember this place->city start]] — [[Travel elsewhere->travel]]</p>
</div>
}{
(set: $day_toilet to true)
(if: $day_counter is 0)[
(set: $despair_counter to it + 2)
]
(else:)[
(set: $despair_counter to it + 1)
]
(set: $day_counter to 2)
<p>Permission granted, you dash to the toilet down the hall.</p>
<p>It isn't as though you need to use it so dreadfully (although after a half-day in a classroom seat, you <em>do</em> need to use it). It's just that the classroom at lunch is sometimes too loud. Too chatty. Too much.</p>
<p>You sit in one of the stalls with the door shut, hunched over, eyes closed and your hands pressed over your ears. The thrumming of your blood should calm you, but it doesn't. It just reminds you (if: $day_num is 1)[of how stressed Jullen makes you feel](else-if: $day_num is 3)[of this unnatural sickness and how you might never see Ayya again](else:)[of the counsellor’s false cheer, of Jullen’s bitter expression and Kerixia’s awkward grimace].</p>
<p>Still, sitting here in the toilet with your head in your hands has got to be better than going back in there. Than dealing with Jullen(if: $day_num > 1)[ and Kerixia]. So you stay put, counting down from 60 over and over again until the lunch period is nearly over.</p>
<p>Then, knowing you have no choice, you wash your hands and (link: "go back to class")[(if: $day_num is 1)[(go-to: "day 1")](else-if: $daynum is 3)[(go-to: "day 3")](else:)[(go-to: "day 4")]].</p>
}{
(display: "map")
<div class="text">
(if: $cave_known is false)[(set: $cave_known to true)<p>You propel your boat across the ocean, until you come to an area of open waters within sight of a furious maelstrom. As you near the edge of its pull in the water, something compels you to stop, and you lower your hand.</p>
<p>The wind dies away, and you drift near the churning , unmoored. Nothing about this looks familiar, but it is where your shade’s arc of light has led you. And then you realise: the light continues down into the water. And then it comes to you, making you shiver: this is directly above the underwater cave system. The one where you were imprisoned.</p>
]
(else-if: $has_traveled is false)[(set: $has_traveled to true)<p>You return your attention to the rocky spires, and to the caves that lie beneath the water’s surface, there off the bow of your boat..</p>]
(else:)[<p>Mouth twisted in distaste, you return to the foot of the jagged spires of rock. Just as before, you bring your boat to a stop at their western edge, directly above the underwater caves where you were once imprisoned.</p>]
<p>[[Remember this place->cave start]] — [[Travel elsewhere->travel]]</p>
</div>
}{
(display: "map")
<div class="text">
(if: $village_known is false)[(set: $village_known to true)<p>You manoeuvre your boat across the empty seas, following the light that arcs out from this particular shade. As you travel, you feel a prickling at the back of your neck. You may not know where you’re going, but your body remembers.</p>
<p>And then an island comes into view, and your mind goes blank in a different way. It is not the empty, crumbling huts on the outcropping that affect you, nor the obvious state of abandonment, the way the wilds have taken back over from what was once a human settlement. (You have seen (if:$city_known is true)[only the one city where people still live, after all](else:)[nothing but emptiness and ruin, after all].) No, what unsettles you is the realisation, sudden and sure, that the memory you will find here is of your earliest days—you grew up on this island, long ago when all was well and you were whole.</p>]
(else-if: $has_traveled is false)[(set: $has_traveled to true)<p>You turn your attention back towards the village of your youth—or at least, what’s left of it.</p>]
(else:)[<p>As the boat nears your childhood island, you still the magical wind you have called up. Looking at the empty huts makes your stomach churn with unease.</p>]
<p>[[Remember this place->village start]] — [[Travel elsewhere->travel]]</p>
</div>
}{
(set: $village_type to 1)(set: $rage_isles to it + 1)(set: $in_memory to false)
<p>You took in the blood on the woman’s lips and rage swelled within you.</p>
<p>Friends? Protectors? If the spirits and gods were either, how could they let this happen?</p>
<p>It was no choice. No choice at all. You took the pouch she held out and flung it deep within the spirit well.</p>
<p>The whole earth shudders, a scream rends the air, and then...</p>
<p>And then...</p>
<p>And then [[the memory ends->village end]].</p>
}{
(if: (track: 'desolate', 'isplaying'))[
(track: 'desolate', 'fadeout', 5)
]
(unless: (track: 'fallen', 'isplaying'))[
(track: 'fallen', 'fadein', 5)
]
(display: "location_text")
(display: "map")
(set: $i to 0)
<div class="text">
<p>Your boat rests (if: $location is 1)[in the midst of endless ocean.](else-if: $location is 2)[(if: $village_finished is true)[offshore from the island of your youth, the ruins of your parents’ hut in sight atop the cliffs](else:)[just off shore of an island that looks eerily familiar].](else-if: $location is 3)[(if: $city_finished is true)[near the city where you lived after leaving your home](else:)[near a still-thriving city]—were it not for the last vestiges of your power, the fishing boats that still ply the waters might see you.](else-if: $location is 4)[(if: $island_finished is true)[near the island where you suffered under your master’s thumb](else:)[near a lonely island].](else-if: $location is 5)[among the ruins of a once-proud city.](else-if: $location is 6)[at the edges of a maelstrom in the waters(if: $caves_finished is true)[ that leads to the caves where you were once imprisoned].](else:)[at the edge of the impassable wall.]</p>
<p>The arcing lines of energy from your shades reach out into the ocean:
(if: $location is not 4)[one to (link:"$island_loc")[(set: $location to 4)(goto: "the lonely island")];]
(if: $location is not 6)[one to (link:"$cave_loc")[(set: $location to 6)(goto: "the underwater cave")];]
(if: $location is not 5)[another to (link:"$ruins_loc")[(set: $location to 5)(goto: "the ruins")];]
(if: $location is not 3)[one to (link: "$city_loc")[(set: $location to 3)(goto:"the thriving island city")](if: $location is not 2)[; ](else:)[.]]
(if: $location is not 2)[one to (link: "$village_loc")[(set: $location to 2)(goto: "the village of your youth")].]
(if: $location is not 7)[Far to the south lies (link: "the impassable wall")[(set: $location to 7)(goto:"the impassable wall")].]</p>
<p>(link: "Stay where you are")[(set: $has_traveled to false)(goto: $current_loc)] — [[Consult with your shades]]</p>
</div>
}{
(set: $merchant_chat to true)
<p>The man grimaces as you clear your throat, lick your lips, and prepare to speak. “There’s no time for conversation,” he grinds out. “Go get somebody who can help.”</p>
<p>Around here, ‘somebody’ only ever means one person: the village headwoman, whose home stands opposite your own to the south.</p>
<!--first dialogue choice-->
|first-chat>[
(set: $cycler to 1)
<p>
|first-cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text>[ (link-replace: "<span class=\"underdot\">Are you okay?</span>")[<p>"Are you okay?" you ask.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] </p>]
]
<!--first dialogue cycler-->
(click-rerun: ?first-cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">Are you okay?</span>")[ <p>"Are you okay?" you ask.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text)[ (link-replace: "<span class=\"underdot\">What happened?</span>")[[ <p>"What happened?" you ask.</p> ] (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
(else:)[
(replace: ?link-text)[(link-replace: "<span class=\"underdot\">You’re dying</span>")[ <p>"You’re dying," you say. (You see no need to deny it.)</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?first-response)] ]
]
]
<!--first response -->
|first-response)[
(hide: ?first-cycle)
<p>The man laughs bitterly, and little flecks of red appear on his lips. “It doesn’t matter,” he rasps, wiping them away. “This is bigger than me. Bigger than any of us.” He laughs again, then his body shakes all over until—all at once—his right shoulder melts away, the left elongating to take it splace, and his eyes become those of a goat. He vomits blood, a bright red stream shot through with dark black clots. “Fuck,” he mutters, spitting a few times.</p>
<p>And then he forces his head back up, meeting your eyes with his own, strangely transformed as they are. “Listen, kid. Is it true that it’s here on this island? The origin of all the spirits?”</p>
<!--second dialogue choice-->
|second-chat>[
(set: $cycler to 1)
<p>
|second-cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />]
|link-text-2>[ (link-replace: "<span class=\"underdot\">You mean the spirit well?</span>")[<p>“You mean the spirit well?” you ask.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?second-response)] </p>]
]
]
<!--first dialogue cycler-->
(click-rerun: ?second-cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[
(replace: ?link-text-2)[ (link-replace: "<span class=\"underdot\">You mean the spirit well?</span>")[ <p>“You mean the spirit well?” you ask.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?second-response)] ]
]
(else-if: $cycler is 2)[
(replace: ?link-text-2)[ (link-replace: "<span class=\"underdot\">It is</span>")[ [ <p>“It is,” you say, assuming he means the spirit well.</p> ] (t8n-delay: 1s)+(t8n:"dissolve")(show:?second-response)] ]
]
(else:)[
(replace: ?link-text-2)[(link-replace: "<span class=\"underdot\">It isn’t.</span>")[ <p>“It isn’t,” you say, although it’s possible he means the spirit well.</p> (t8n-delay: 1s)+(t8n:"dissolve")(show:?second-response)] ]
]
]
<!--second response -->
|second-response)[
(hide: ?second-cycle)
<p>You’ve never heard it called the origin of all spirits before, but you’ve seen those ethereal forms come out of it and into the world, year in and year out. You’ve seen them disappear back within its depths—and some humans, besides, when they’re invited or just don’t care what will happen to them.</p>
<p>“It’s got to be here,” the man mumbles to himself, those unnatural eyes going unfocused. “We can’t fail. Not now.”</p>
<p>You’re wondering if he didn’t hear you, or if maybe he didn’t really care about your answer to begin with. Before you can repeat yourself, he begins to flicker, fading completely from view and then returning, over and over, until he shudders and sinks beneath the ground. The last part to vanish is his left hand, fingers reaching out and up, as if closing around an invisible object.
<p>And then you are alone. (link-replace:"<span class=\"underdot\">He is gone.</span>")[He is gone.(t8n-delay: 1s)+(t8n:"dissolve")(show:?endlink)]</p>
]
|endlink)[
<p>You swallow, your throat dry. You’d better [[go get help->road a]].</p>
]
}{
(set: $cycler to 1)
|main>[
(if: $merchants_found is false)[
(set: $merchants_found to true)
<p>Equal parts cautious and eager—you are not supposed to leave the village, not really—you walk north along the road until the shape on the horizon becomes something more: a group of people you have never seen. Outsiders. (link-replace:"<span class=\"underdot\"><em>Strangers</em></span>")[<em>Strangers</em>(t8n-delay: 1s)+(t8n:"dissolve")(show:?strangers)].</p>
|strangers)[(t8n-delay: 1s)+(t8n:"dissolve")(show: ?endlink)
<p>Your unease grows as you approach, but it is not until you reach them that you realise what is wrong: they are not moving, these people. Some are lying in the road, groaning in agony, while others dance in place, laughing and speaking to nobody; others still are silent, unmoving.</p>
<p>As you approach, one of the dancers jolts abruptly, then screams. The sound of it dopplers up into silence, and then the unfortunate person comes apart at the joints, each segment of them drifting off into the sky like a balloon dripping gore. Something is wrong here—very wrong.</p>
<p>One of the outsiders looks up as you come near, an old man, his mouth twisted in a grimace. He reaches his hand towards you and rasps out, “help.”</p>]
]
(else:)[
(t8n-delay: 1s)+(t8n:"dissolve")(show: ?endlink)
<p>Once more, you walk north from the village until you reach the group of outsiders.</p>
<p>The man from before looks up at you. “Well?” he gasps.</p>]
|endlink)[
<p>(Your memory falters. What happened next?)</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ [[You spoke to the man->traveller chat]] ]</p>
]
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ [[You spoke to the man->traveller chat]] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "Went to tell someone")[ (replace: ?main)[<p>You look down at the man and swallow, throat dry and tight. You need to tell somebody about this right away. And in the village of your youth, "somebody" only ever means one person: the village headwoman, whose home stands opposite your own [[to the south->road b]].</p> ] ] ] ]
(else:)[(replace:?link-text)[ (link: "You left, quickly")[(replace: ?main)[<p>Never mind being this far out of the village. You <em>definitely</em> are not meant to speak to strangers. You [[leave as quickly as you can->road b]].</p> ] ] ] ]
]
}{
<p>You are on the veranda to your parents’ home. Your dad’s tools take up literally a third of the space(if: $ladder_retrieved is true)[ but at least it looks more open now that you’ve taken the ladder.](else:)[, and (if: $gong_problems is true)[(link-replace:"<span class=\"underdot\">a ladder</span>")[a ladder(t8n-delay: 1s)+(t8n:"dissolve")(show:?take-ladder)] ](else:)[a ladder] is propped against one of the outer pillars, making it feel even more cramped than it is.] |take-ladder)[Well, at least you can fix that problem. You heft the ladder in one arm and lift it awkwardly. It’s heavy, but fortunately you’re a little tall for your age, so you can more or less carry it. (set: $ladder_retrieved to true)]</p>
(if: $helping is true)[
<p>“Faster,” your charge snaps. “We must close the egress to the spirit world before they can finish killing us.”</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (link: "Your steps falter")[Your steps falter—close the egress? Are these travellers attempting to destroy the spirits, somehow?</p><p>But it does not matter. You cannot disobey. [[You head east->cliffs b]], to the cliffs.(hide: ?cycle)] ]</p>
]
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (link: "Your steps falter")[Your steps falter—close the egress? Are these travellers attempting to destroy the spirits, somehow?</p><p>But it does not matter. You cannot disobey. [[You head east->cliffs b]], to the cliffs.(hide: ?cycle)] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (link: "You hurry your steps")[You hurry your steps. If they wish to close the egress, these travellers must be attempting to destroy the spirits. To shut off their access to the world.<p><p>[[You head east->cliffs b]], to the cliffs.(hide: ?cycle)] ] ]
(else:)[(replace: ?link-text)[(link: "You ask why")[“Why?” you ask.</p><p>She smirks. “They are a poison. We will destroy them, or they us. Now <em>hurry</em>!”</p><p>You cannot disobey. [[You head east->cliffs b]], to the cliffs.(hide: ?cycle)] ] ]
]
(else:)[
<p>A doorway leads inside (if: $gong_struck is true)[ |link-1>[to the west] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-1)[to the west (where your parents might yet be waking—safer to avoid it)], ](else:)[ [[to the west->home]], ] its beaded curtain jostling softly in the faint breeze. [[To the east->cliffs b]] is the cliff-side path, and the village’s storage hut stands [[to the north-west->hut]].</p>
]
}{
<script>$('html').removeClass("memory");</script>
(display: "autosave")
(set: $has_traveled to false)
(if: $village_finished is false)[(set: $village_finished to true) (set: $memories_gained to it + 1)
<p>It feels like it all happened a very long time ago—and perhaps it did. You look at the once-more-familiar shape of your parents’ hut on the cliff-side path and realise you feel more sure of yourself now. Of (link-replace:"<span class=\"underdot\">who you were</span>")[who you were(show:?shadehook)] and who you still could be.</p>
|shadehook)[
<p>The shade that represents this memory speaks:</p>
(set: $solo to true)(set: $speaker to 1)
(display: "shades")
(t8n-delay: 1s)+(t8n:"dissolve")(show:?endhook)
]
|endhook)[
<p class="clear">Once the shade’s speech fades, you turn to face [[the open seas->the village of your youth]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>]
]
(else:)[
<p class="clear">It feels like it all happened a very long time ago—and perhaps it did. You look one last time at the once-more-familiar shape of your parents’ hut on the cliff-side path, and then you turn to face [[the open seas->the village of your youth]]. (If: $memories_gained < 5)[There are still more pieces of you to regain.](else:)[The pull of the energy from that unnatural wall is nigh impossible to resist.]</p>
]
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The Village</h1>
|memory>[<p>Shock.</p>
<p>Change.</p>
<p>The end of innocence.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->village_1]]</p>
(if: $village_finished is true)[<p>(Your current memory of this place is one of (if: $village_type is 1)[rage](else-if: $village_type is 2)[cold observation](else:)[despair]. Revisiting this memory will reset that. Don’t want to remember things differently? You can [[return to the map->the village of your youth]].)</p>]
]
}{
(set: $village_open to false)
(set: $merchants_seen to false)
(set: $merchants_found to false)
(set: $merchants_chat to false)
(set: $headwoman_notified to false)
(set: $merchants_report to "")
(set: $first_headwoman to false)
(set: $guard_known to false)
(set: $guard_gone to false)
(set: $gong_problems to false)
(set: $ladder_retrieved to false)
(set: $rock_retrieved to false)
(set: $gong_struck to false)
(set: $helping to false)
(set: $anil_met to false)
(if: $village_finished is true)[
(if: $village_type is 1)[(set: $rage_isles to it - 1)]
(else-if: $village_type is 2)[(set: $cold_isles to it - 1)]
(else:)[(set: $despair_isles to it - 1)].
]
}{
<script>$('html').addClass("memory");</script>(set: $in_memory to true)
(track: 'desolate', 'fadein', 5)
(display: "village startup")
<p>When you were very young, you were confident. You had the support of your parents and elders, the swell of the sea and the balm of the island sun. The village was boring, and you knew you would leave it all behind you. That you would one day sail to broader shores and clasp greatness.</p>
<p>But nothing lasts forever in this watery world. You can taste again that bitterness, here on the cusp of memory. The bitterness of learning that [[your confidence was childish and unearned->home]].</p>
}{
(if: (track: 'desolate', 'isplaying'))[
(track: 'desolate', 'fadeout', 5)
]
(else-if: (track: 'epiphany', 'isplaying'))[
(track: 'epiphany', 'fadeout', 5)
]
(track: 'brink', 'fadein', 15)
<p>With the barriers no longer an obstacle, you sail your boat to the foot of the volcanic isle. From this angle, the cloud of ash obscures the sky, the smouldering bareness of the volcano sloping up and up as though it goes on forever.</p>
<p>As your boat comes to a stop, you feel the last of your emotions fade away. You feel... empty.</p>
<p>But for all that very little of you is still <em>you</em>, your sense of purpose has not faded. You must overcome this final obstacle and defeat the champion of the gods.</p>
<p>You step onto the rock and dirt, and you [[climb]].</p>
}{
(track: 'beyond', 'fadein', 15)
<script>$('html').removeClass("memory");</script>
(set: $cycler to 1)(set: $endgame to false)
<p>This close to the wall that was built from your powers, you could simply reach out and touch it. Destroy it and absorb it. Regain everything that was taken from you.</p>
<p>But is that what you want?</p>
<p>You think back on everything you’ve learned about what led you to your current situation, about everything you met when last facing the gods’ chosen champion, and you know there is but one thing you can do.</p>
<p>|cycle>[<img src="https://infomancy.net/crescent-sea-stories/img/refresh.png" class="icon" alt="refresh choice" />] |link-text>[ (if: $rage_count > 1)[ [[You must take vengeance.->3a: beyond the wall]] ](else:)[ |link-1>[You must take vengeance.] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[Your rage falters. You do not have it in you to seek revenge.] ] ]</p>
(click-rerun: ?cycle)[
(if: $cycler is 3)[(set: $cycler to 1)](else:)[(set: $cycler to it + 1)]
(if: $cycler is 1)[(replace: ?link-text)[ (if: $rage_count > 1)[ [[You must take vengeance.->3a: beyond the wall]] ](else:)[ |link-1>[You must take vengeance.] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[Your rage falters. You do not have it in you to seek revenge.] ] ] ]
(else-if: $cycler is 2)[(replace: ?link-text)[ (if: $cold_count > 1)[ [[You must seek further learning.->3b: voyaging]] ](else:)[ |link-1>[You must seek further learning.] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[Your sense of purpose falters. You have surely learned everything you can already.] ] ] ]
(else:)[(replace: ?link-text)[ (if: $despair_count > 1)[ [[You must pay for your crimes.->3c: repentance]] ](else:)[ |link-1>[You must pay for your crimes.] (transition:"blur")+(t8n-delay:1s)+(click-replace: ?link-text)[Your sense of regret fades. No. You have paid enough already.] ] ] ]
]
}{
(track: 'fallen', 'fadeout', 5)
(enchant: ?memory's chars, via (t8n-delay: 1.5s) + (t8n-delay: pos * 90) + (t8n:"blur"))
<h1>Memory: The Wall</h1>
|memory>[<p>Challenge.</p>
<p>Crisis.</p>
<p>A severing of self.</p>
<p>(link:"<span class=\"underdot\">.........</span>")[(t8n-delay: 1s)+(t8n:"dissolve")(show:?begin)]</p>
]
|begin)[<p>[[Delve into memory->wall_1]]</p>]
}{
(set: $barriers_down to 0)
(set: $current_isle to 1)
(set: $solution_type to 1)
(set: $check_return to "")
(set: $barrier_a to false)
(set: $a_type to 1)
(set: $barrier_b to false)
(set: $b_type to 1)
(set: $barrier_c to false)
(set: $c_type to 1)
(set: $barrier_d to false)
(set: $d_type to 1)
(set: $rage_count to 0)
(set: $cold_count to 0)
(set: $despair_count to 0)
(set: $rage_doom to false)
(set: $cold_doom to false)
(set: $despair_doom to false)
(set: $doom_count to 0)
(set: $rage_store to $rage_isles)
(set: $cold_store to $cold_isles)
(set: $despair_store to $despair_isles)
}{
(display: "wall startup")
(track: 'epiphany', 'fadein', 5)(set: $endgame to true)
<script>$('html').addClass("memory");</script>
<p>As you rest your hand upon the wall’s shimmering surface, the aurora of power overhead swirls and distorts, then funnels towards you, a vortex of energy and self.</p>
<p>There’s no mistaking what this means. What you did here—and what was done to you—holds the answer to everything of who you are.</p>
<p>Who you are, and [[what you were trying to do->wall_2]].</p>
}{
<p>In the months since your spell shattered the old ways forever, you have witnessed much. Spirits possessing inanimate objects in their desperation to escape from what you brought down. Gods dissolving into goo, too proud to flee from it.</p>
<p>If you thought your fellow mortals would thank you for freeing them from the yoke of the gods, you were mistaken. Everywhere you go, you have been treated with disgust and hatred—or, at best, with ignorance in the emptied eyes of people struggling to survive in the hellish seascape that used to be the world.</p>
<p>As you travelled, you heard rumours, as well: that the gods knew who you were. That the spirits passed along your every move. That your foes were planning a counter-attack, one that would doom you to an eternity of pain and solitude.</p>
<p>And now, here you are. At [[your final destination->waters]].</p>
}{
(if: (track: 'epiphany', 'isplaying'))[
(track: 'epiphany', 'fadeout', 5)
(track: 'desolate', 'fadein', 15)
]
(else:)[
(unless: (track: 'desolate', 'isplaying'))[
(track: 'desolate', 'fadein', 5)
]
]
<p>Your boat sits in the gentle waters before the location of the gods’ final gambit: a volcanic isle in the middle distance, its caldera letting off a constant stream of black smoke and blacker ash.</p>
(if: $barriers_down is 4)[(set: $rage_isles to 0)(set: $despair_isles to 0)(set: $cold_isles to 0)<p>Your sense of self is in tatters, but you’ve lowered all four barriers and you still have your sense of <em>purpose</em>. There is nothing to stop you from [[approaching the volcano->volcanic isle]].</p> ]
(else:)[
<p>Four islands sit around the volcano at the points of an imaginary compass, more or less equidistant, each sustaining a portion of the barrier that blocks you from reaching where the gods must lie in wait.</p>
<p>(if: $barrier_a is false)[ [[Visit the northern island->barrier a]]. ](else:)[You have sacrificed a part of yourself to lower the barrier on the northern island.]</p>
<p>(if: $barrier_b is false)[ [[Visit the eastern island->barrier b]]. ](else:)[You have sacrificed a part of yourself to lower the barrier on the eastern island.]</p>
<p>(if: $barrier_c is false)[ [[Visit the southern island->barrier c]]. ](else:)[You have sacrificed a part of yourself to lower the barrier on the southern island.]</p>
<p>(if: $barrier_d is false)[ [[Visit the western island->barrier d]]. ](else:)[You have sacrificed a part of yourself to lower the barrier on the western island.]</p>
]
}{
<p>You wade into the water, the waves lapping at your ankles.</p>
<p>Your nuncle Anil is here, fishing rod in their hands. (if: $anil_met is false)[(set: $anil_met to true) (Anil is not <em>really</em> your nuncle, of course. Everyone in the village calls them that.)] They look over with a vague, sun-drenched smile as you splash towards them, and then they turn their attention back to the horizon.</p>
<p>You could [[ask Anil for help]]. Otherwise, the beach waits behind you [[to the north->beach]], along with the rest of your village.</p>
}{
<p>
(if: $weeds_count > 3)[There are almost more weeds than herbs, now that you think to look.]
(else-if: $weeds_count > 1)[You’ve removed some of the weeds, but there are plenty left.]
(else-if: $weeds_count is 1)[Only a few weeds still dot the carefully-planted beds of herbs and vegetables.]
(else:)[You’ve finally removed all the weeds you can find. Your lower back aches dully, and your forehead is shiny with sweat.(display: "quick travel")]
</p>
(if: $weeds_count > 0)[<p>(link-replace: "Pull some weeds.")[You crouch down and pull up weeds, setting them in a pile (link-replace:"<span class=\"underdot\">at the edge of the garden</span>.")[(rerun:?weeder)] (set: $weeds_count to it - 1)]</p>]
}