,,,,,,,{=
(masteraudio: 'stopall')
=><=
a game by
<br>
DreamCartographer
<br>
<br>
<br>
[[[Next->Start screen]]]<start|
<br>
(if:(history:) contains "Figure something out" or "Reveal" and does not contain "Endless void")[
(click:"Dream", (colour:white)+(text-style:"bold"))[(live: 0.2s)[(hide:?start)(force-input-box: 2bind $unlockNellie, "=XX=", 1, "ELEANOR ")(stop:)]]
(event: when $unlockNellie is "ELEANOR ")[ (set:$awakening to true)(goto: "Start screen") ]
]
(if:(history:) contains "Endless void")[
(replace: "Dream")[ []<dream| ]
(link: "Wake her up", (text-style: "italic"))[
(display: "Puzzle")
]
]{=
(if: not (track: 'main-theme', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'main-theme', 'play')
(track: 'main-theme', 'loop', true)
]
=><=
<br>
<br>
<br>
<div class="title">ROSA</div>
<br>
<br>
<br>
[
###[[Play->Yet another day]]
]<play|
[
###[[Play->End scene]]
](restart|
[
###(link: "Play")[
(set: $passNum to it +1)
(if: $passNum > $path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]](chase|
]
[
###[[Play->Taunting Void]]
](loop|
(if: (history:) contains "Time to go")[
(hide:?restart)(hide:?loop)(hide:?chase)(show:?play)
]
(else-if: (history:) contains "Endless void")[
(hide:?play)(show:?loop) ]
(else-if: (history:) contains "Figure something out" and does not contain "Endless void")[
(hide:?play)(show:?restart) ]
(else-if: (history:) contains "Reveal" and does not contain "Endless void")[
(hide:?play)(show:?chase)
]{=
(set: _run to false)
(set: _eye to (either: ...$eyeOn))
|original>[
[(unless:(track: 'heroic', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'heroic', 'play')
(track: 'heroic', 'loop', true)
]]<default-music|
<div class="portal">
We're almost there.
<br>
I lead the hero (either:...$travelling) under the shimmering night sky. I grip his hand tight as we run. (either:...$hand)
<br>
I don't have time to think about it, because her voice rings out again.
<br>
|fake-Nellie>[//"As the intrepid hero closes in on the destination, tragedy strikes young $chosenName! For just as they're about to reach the portal to $chosenRealm, a wild wolf attacks her!"//
<br>
The wolf leaps out of the bushes and bears down on us at lightning speed. Before either of us can react, it raises a paw and smacks my head into the ground.
<br>
As I lie there I hear the shouts and vicious growling as the hero fights the wolf. For a moment I wonder if he'll make it.
<br>
A couple of seconds later there's a slash and a piercing whine. The sound of footsteps rushes towards me, and soon the hero is by my side.
<br>
[[[Next->Another death]]]<progress|
[[[Next->Back home]]](replacement|
]
(if: (history:) contains "Figure something out")[
(hide:?progress)(show:?replacement)
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(else-if: (history:) contains "Reveal" and does not contain "Time to go")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]</div>
]
(if: (history:) contains "Time to go")[
<div class="portal">
(replace:?fake-Nellie)[
(replace:?default-music)[(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
]
(after:7s)[(masteraudio: 'stopall')]
(t8n:"flicker")+(t8n-delay:4.5s)[
''//"Before the Void can say another word, it feels itself pulling away from Rosa and Nellie's minds. It's impossible for it to resist this invisible force. As the last of it leaves the two girls forever, its very being is reduced to dust. The wind scatters the Void in a million directions, never to be seen again."//''
<br>
[[Next->Void disappears]]
]
]
</div>
]
{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(if: (history:) contains "Figure something out" or "Reveal")[
(unless:(track: 'sad', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'sad', 'play')
(track: 'sad', 'loop', true)
]
]
(else:)[
(track: 'heroic', 'fadeout', 2)
(live: 2s)[
(stop:)
(track: 'sad', 'fadein', 2)
(track: 'sad', 'loop', true)
]
]
<div class="portal">
"$chosenName!" he cries, tears streaming down his face. "I'm so sorry... I should've-"
<br>
"Shhh..." I lift up a slow, shaky hand to caress his face. "It's okay... you... did your best..."
<br>
The hero sniffs, a look of determination on his face. "I... I'll get you out of here," he says. "I'll take you somewhere safe and heal you up-"
<br>
"No! You have to... go through the portal... you have to go to $chosenRealm... and save everyone..."
<br>
"I can't! I can't leave you here all alone..."
<br>
"It's too late for me." I smile weakly. "I know you can do it. You don't need... someone like me there..."
<br>
[[[Next->End scene]]]<progress|
[[[Next->Yet another day]]](replacement|
(if: (history:) contains "Figure something out")[
(hide:?progress)(show:?replacement)
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(else-if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]</div>
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]
{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'sad', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'sad', 'play')
(track: 'sad', 'loop', true)
]
<div class="portal">
His tears drip onto my face. “$chosenName… no…”
<br>
My vision begins to fade. “It’ll be okay. Go on… without me…”
<br>
Soon everything goes dark. The hero’s voice is like smoke, thick and choking. As my body goes limp, its echoes grow weaker until they fade into nothing.
<br>
And once again, I wait.
<br>
[[[Next->Back home]]]<progress|
[[[Next->Another death]]](replacement|
(if: (history:) contains "Figure something out")[
(hide:?progress)(show:?replacement)
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(else-if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]</div>
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]
{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(if: (history:) contains "Figure something out" or "Reveal")[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
]
(else:)[
(track: 'sad', 'fadeout', 2)
(live: 2s)[
(stop:)
(track: 'void', 'fadein', 2)
(track: 'void', 'loop', true)
]
]
[When I wake up ]<gone|I'm on the sofa again. [The first thing I see is the endless darkness above, and once again I wonder if I'm still asleep.]<gone| But then the pale white outline [of a jellyfish ]<gone|swims by, and I breathe a small sigh of relief. I'm home.
<br>
The moment I sit up, her voice calls to me from nearby.
<br>
["Rosa, come get some pizza!"]<gone|
<br>
I turn my head. The sight is the same as always - my sister Nellie sitting cross-legged in front of the TV[, her back hidden by her messy blonde hair]<gone|. And beside her, a white plate with a few slices of squid ink pizza.
<br>
I stand up[ and go over to take my place beside her]<gone|. As I lift up a slice of pizza, I fix my eyes on the screen. "How did this one do?"
<br>
Nellie cackles. ["Didn't get past the fire lizards!"]<gone|
<br>
On the screen the hero stands amongst the castle ruins, surrounded by giant lizards with blood-red skin.[ He watches with a look of terror as one of them opens its mouth.]<gone| A volley [of flames]<gone| shoots out at the hero and burns his body to a crisp before he even has a chance to scream.
<br>
"Did you see how he just stood there?" Nellie asks me. ["He couldn't even lift his sword! It's like he'd already given up."]<gone|
<br>
[[[Next->Talking with Nellie]]]<progress|
(if: visits > 1)[ (enchant: ?gone, (text-style: "shudder")) ]
(if: (history:) contains "Figure something out")[
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(set: _run to true)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
[The scene plays again. I take a bite out of my pizza and stare blankly as the fire engulfs him. Inside I feel... tired.]<help|
<br>
"He was super torn up about you the whole time. I bet he was already dead inside." Nellie pokes my shoulder. "Stop being so convincing! If the heroes keep giving up because of you we'll run out of them!"
<br>
["Okay."]<help|
<br>
She laughs. "I'm kidding, Rosa. You know I don't care what happens to those losers."
<br>
["I know." I don't look at her.]<help|
<br>
[[[Next->Hiding her feelings]]]<progress|
[(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]]
](reveal-next|
(if: visits > 1 and (history:) does not contain "Reveal")[
(hide:?progress)
(replace:?help)[help me](after:1s)[ (rerun:?help)(show:?progress) ]]
(else-if: (history:) contains "Reveal")[
(hide:?progress)
(replace:?help)[help me](after:1s)[ (rerun:?help)(show:?reveal-next) ]
]
]
(if: (history:) contains "Figure something out")[
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
[My eyes rest on a patch of ghostly seaweed by my knee. I allow myself to get lost in its silent sway until Nellie speaks again.
]<actions|
<br>
["Hey, are you alright? You're being all quiet again."]<question|
<br>
[I turn my head. Nellie's face is serious now, a rare expression for her. I figure I should say something.
]<actions|
<br>
["How many more times... will I have to die?"]<response|
<br>
[[[Next->It doesn't matter]]]<progress|
(if: visits > 1)[ (hide:?actions)(enchant: ?question, (text-rotate-y:33))(enchant: ?response, (text-rotate-y:331)) ]
(if: (history:) contains "Figure something out")[
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
Nellie is quiet for a moment, then she shrugs. "Until the Void doesn't want to eat anymore? I don't know. Why does it matter?"
<br>
["It's just..." I pause. "I don't understand why I have to die. I could just stay behind and wait for the hero to return, or say only heroes can go through the portal, or something. But you always say something or someone kills me."]<why|
<br>
Nellie looks like I'm telling her about the weather. She sighs. "That would be *boring*, Rosa. Besides, if nothing bad happens to you, there'll be no low point for the heroes to recover from. And who really cares, anyway?" She smiles. "You're not real, so it doesn't matter if you live or die."
<br>
[[[Next->Sister cruelty]]]<progress|
(if: visits > 1)[(enchant:?why, (text-style:"wavy-strike"))]
(if: (history:) contains "Figure something out")[
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
I lower my eyes. "I know, but-"
<br>
"If I killed you here, you wouldn't come back." Her voice is low and emotionless. "It still wouldn't matter. Nothing is real, so nothing matters."
<br>
I want to hold myself, but I don't want to look scared. Besides... she's not wrong.
<br>
"Nothing is real, so nothing matters," I repeat.
<br>
"See? You get it too!" Nellie says cheerfully. "So don't ask again, okay? |threat>[(either:...$deathThreat)]."
<br>
[[[Next->Going to sleep]]]<progress|
(if: visits > 1)[ (enchant:"nothing", (text-style:"strike"))(enchant:"Nothing", (text-style:"strike"))
(enchant: ?threat, (text-style: "fidget")) ]
(if: (history:) contains "Figure something out")[
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(if: (history:) contains "Reveal")[
(hide:?progress)
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(set: _run to $voidPresent's random)
(set: _eye to (either: ...$eyeOn))
|original>[
(unless:(track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
I nod in silence, clasping my hands together in my lap. I have to stop them from twitching.
<br>
[Nellie picks up the remote and turns off the TV. It, the plate and the pizza all turn to black sludge and melt into the floor until there's nothing left.]<one|
<br>
["Well, that's enough for now. Night, Rosa." She stretches and yawns, then lies down on the pitch black floor. The darkness lifts up from below and cuccoons her body, holding her in its gentle embrace.]<two|
<br>
[I wait till she's asleep.]<three|
<br>
(if:(history:) contains "Figure something out")[
[[Next->Confusion]]
_eye[
(enchant: ?Page, (background: "img/void-eye-background.png"))
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
(set: $sawEyes to true)
]
(else:)[(track: 'breath', 'stop')]
]
(else-if: (history:) contains "Reveal")[
(link: "Next")[
(set: $passNum to it +1)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(else:)[(goto: $path's $passNum)]
]
]
(else:)[
[[Next->Talking to you]]
]
(if: visits > 1)[ (enchant:?one, (opacity:0.75))(enchant:?two, (opacity:0.5))(enchant:?three, (opacity:0.25)) ]
]
(if: (history:) contains "Reveal" and _run is true)[
(replace:?original)[
(unless:(track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
(display: "Chase countdown")
]
]{=
(unless: (track: 'void', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'void', 'play')
(track: 'void', 'loop', true)
]
(t8n:"fade")[<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">]
Hello? Are you there?
<br>
(link: "Next")[=
...
<br>
(link: "Next")[=
I know you're there. You've been here this whole time. I can feel you.
<br>
(link: "Next")[=
...Are you going to say anything?
<br>
[[Are you talking to me?->Responding]]{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
Yes, I'm talking to you. The one who exists beyond this place.
<br>
(link: "Next")[=
You're different, aren't you? You're not like those heroes. You're... real.
<br>
[[What do you mean?->Another presence]]Nellie and I are fictional characters. Neither of us really exist at all. Us, this place, the heroes who come into that story... all of it is just made-up. Nothing here is real... except for you.
[[What are you and Nellie doing here alone?->Bottomless Sea]]
[[How long have you been living here?->Endless times]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">...We've been here ever since we were thrown into the Bottomless Sea. The Void has been taking care of us.
[[The Void?->Void]]
[[Why were you thrown into the sea?->Nellie's powers]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">I don't remember. Time doesn't seem to exist here either. But it doesn't matter where I am, as long as Nellie's with me.
[[How did you end up here?->Nellie's powers]]
[[Didn't Nellie threaten to hurt you?->Nellie]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">The Void rescued us. It keeps us safe in its depths... In exchange, we lead other fictional people through a world of adventure. When they reach the end of the story, they discover everything, even their existence, was a sham. Then they become the source of the Void's favourite meal: despair.
[[Are you really okay with helping it do this?->Nothing is real]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
People were afraid of Nellie's voice because it could control everything, so they locked her up. They gagged her so she couldn't speak and left her to starve. When I tried to help her escape, they caught us and decided to punish us both. But the Void absorbed us into itself before we could drown.
<br>
(if:(history:) does not contain "Bottomless Sea")[(replace: "punish us both")[throw us into the Bottomless Sea]]
(link: "Next")[=
The momemt it embraced us... is the moment we realised what we really are. We realised our lives, the people who hurt us... they were all a lie. Nothing more than figments of imagination.
<br>
[[Surely your life means more than that.->No meaning]]Nothing is real, so nothing matters. Even if the heroes die nobody gets hurt, because they don't actually exist.
[[Your sister threatened to hurt you.->Nellie]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
[...She doesn't care about anything anymore. Even for the heroes she makes up their adventure as she goes along. She forgot the true story a long time ago.
<br>
[[What was your life like before this?->Nellie's powers]]
](past|
[
Why would you say that? We're sisters. We're meant to be together.
<br>
(link: "Next")[Anyway, she's right. I'm not important. The Void could probably replace me if Nellie killed me for real. I already don't exist, so what does it matter if I die?
<br>
[[It matters because *you* matter.->Convince her]]
<br>
[[Are you in danger, Rosa?->Troubling details]]
]
](help|
(if: (history:) contains "Nellie's powers")[
(show: ?help) ]
(else:)[
(show: ?past) ]{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
It doesn't. The only thing worth living for is the Void. It told us the the truth. It gave us something to do, something to be alive for. Even if nothing matters, at least Nellie and I will never be separated again.
<br>
[[That doesn't sound like a good thing.->Nellie]]
...Why? Why would you say that? You're real and I'm not... so why are you acting like I mean anything? Are you trying to give me false hope?
[[Real or not, you shouldn't have to live like this.->What to do]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
...
<br>
(link: "Next")[=
I don't know. I never know what she's thinking... I shouldn't have complained today. I should've just smiled. Nellie's always smiling...
<br>
[[If you don't feel safe here, then you should be allowed to leave.->What to do]]
What are you... trying to say?
[[I'm going to help you get out of here.->Help]]
[[...Nothing. I'll talk to you some other time, okay?->Leave]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">What!? You... can't be serious...
[[If I go into Nellie's story, I can reach the Void and make it let you go.->Plan of action]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
Oh... okay then. Goodbye.
<br>
(link: "Next")[=
It was nice... talking to you...
<br>
[[Next->Figure something out]]
But without the Void, I have nothing... I don't belong anywhere...
[[I'll create something better for you. You deserve to be happy.->Determined]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">{=
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
...
<br>
(link: "Next")[=
Are you sure about this?
<br>
[[Yes, I am.->Yes]]
<br>
[[No, nevermind.->No]]
{=
[(track: 'void', 'stop')]
[...]<silence|
<br>
(link: "Next")[=
(replace:?silence)[
(track: 'breath', 'play')
(track: 'breath', 'loop', true)
=><=
<br>
<br>
<br>
<br>
<br>
(after: 5s)[[[Next->Reveal]]]
]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
(track: 'void', 'fadeout', 3)
You have a bad feeling about Nellie and the Void. What's going to happen to Rosa if she stays with them? Is it really okay to just leave her behind?
<br>
It can't be. You have to do something, but what? Like Rosa said, she's a fictional character. You can't bring her into the real world with you. That's impossible.
<br>
But maybe you can create something yourself? Another story where she can be happy?
<br>
...First things first. You have to find a way to free her. There has to be something in the game that can help. Some kind of loophole.
<br>
[[You have to go back to the start.->Splash screen]] {=
(enchant: "Rosa", (text-colour: white))
(track: 'void', 'fadeout', 2)
(if: (track: 'breath', 'isplaying'))[
(track: 'breath', 'fadeout', 1)
]
Wait a minute. Why was so much of that different? [You're sure you read it right before. This is the same Rosa you talked to... isn't it?]<reading|
<br>
[[Next->Something amiss]]
$sawEyes[
(replace: ?reading)[And those eyes... was something watching you?
]
]{=
(enchant: "Rosa", (text-colour: white))
Maybe you should try talking to Rosa first and see what happens. There has to be a way to figure out-
<br>
[["You're back."->Rosa again]]{=
(enchant: "Rosa", (text-colour: white))
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
"I was wondering where you'd gone. Why did you leave me?"
<br>
(if: (history:) contains "Have to find her")[
[[Rosa, are you okay?->Talking]]
]
(else:)[
[[Rosa... you remember me?->Talking]]
]{=
(unless: (track: 'reveal', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
]
[
(track: 'fast-breath', 'play')
(track: 'fast-breath', 'loop', true)
]
[<img id="stalker1" class="reveal-speed" src="img/void-attack.png" alt="Void Reveal">]<reveal|
(live: 6s)[
(set: $timer to it - 6)
(if: $timer is 0 and $escape < 18)[
(goto: "Game over")(stop:)]
]
<div class="button">
(link-repeat: "RUN")[
(set: $escape to it + 1)
(if: $escape is 18)[
(set:$revealOn to true)(set: $escape to 0)(goto: "Splash screen")
]
]<run|
</div>
{=
(enchant: "Rosa", (text-colour: white))
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
(if: (history:) contains "Have to find her")[
"Of course I am! It hasn't been that long since we last talked..."
<br>
]
(else:)[
"Of course! You were asking about me... You were worried..."
<br>
]
[[Rosa, I think something's wrong.->Curious]]{=
(enchant: "Rosa", (text-colour: white))
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">
"Oh? What do you mean by that?"
<br>
(if: (history:) contains "Have to find her")[
[[One minute we were talking, then next thing I know I'm being chased by the Void... I don't know what's going on, but it's too dangerous here!->Unfazed]]
]
(else:)[
[[I tried to figure out a way to save you, but for some reason your past was different...->Unfazed]]
]{=
[<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">]<rosa|
"Oh? That is strange..."
<br>
(link:"Next")[=
"Very strange..."
<br>
(link:"Next")[=
(hide: ?rosa)
(text-size:2)["Very, very, VERY STRANGE..."]
<br>
[[Rosa?->Rosa shows herself]]
(enchant: "Rosa", (text-colour: white)){=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
<img id="void-rosa" src="img/rosa_head_2.png" alt="ROSA">
"Foolish mortal..."
<br>
(link:"Next")[=
"Just like those heroes, you have fallen into a lie."
<br>
(link:"Next")[=
"I am all that is here. I am all that exists. There is no Nellie. There is no Void. There is only ROSA."
<br>
(link:"Next")[=
"I am the game, and the game is me. I have already consumed this story. Soon I will consume your mind."
<br>
[[You can't. You're not real.->Stuck in your head]]
<br>
[[You're not Rosa! Give her back!->Long buried]]{=
<img id="void-rosa" src="img/rosa_head_2.png" alt="ROSA">
"Don't you see? I already exist in your memories. I'll spread and spread through your mind until all you can think of is me. It'll happen when you least expect it. I'll be lurking at the back of your mind, where you can never get rid of me."
<br>
[[I'll get rid of you right now.->The loop]]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
<img id="void-rosa" src="img/rosa_head_2.png" alt="ROSA">
"Rosa and Nellie's story is in stasis. They're doomed to have it never come to an end. Soon your story here will be the same."
<br>
[[I won't be your victim.->The loop]]{=
(enchant: ?Nellie, (background: black))
(unless: (track: 'reveal', 'isplaying'))[
(track: 'reveal', 'play')
]
<img id="void-rosa" src="img/rosa_head_2.png" alt="ROSA">
(set: $Nellie to 0)
["Oh really? Are you sure about that?"]<challenge|
<br>
$awakening[
(event: when $Nellie is 10)[W]<Nellie|
(event: when $Nellie is 14)[(append:?Nellie)[A]]
(event: when $Nellie is 18)[(append:?Nellie)[K]]
(event: when $Nellie is 22)[(append:?Nellie)[E]]
(event: when $Nellie is 26)[(append:?Nellie)[U]]
(event: when $Nellie is 30)[(append:?Nellie)[P](click-goto:?Nellie, "Nellie wakes up")]
]
(else:)[
(event: when $Nellie is 25)[ (goto:"Endless void") ]
]
<br>
(link-repeat:"Escape<br><br>")[(set:$Nellie to it + 1)Are you sure? ]
<br>
(if: visits > 1)[
(hide: ?challenge)
]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
(track: 'reveal', 'stop')
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
AH! Where am I... Rosa!
<br>
(link: "Next")[=
Wait a minute... who are you!? Are you working with the Void???
<br>
(link: "Next")[=
...
<br>
(link: "Next")[=
Hang on. You're not like the Void. You're... a real person? How?
<br>
[[Nellie? I thought you didn't exist.->Eleanor]]
<br>
[[There's no time to explain, Nellie. We have to save Rosa.->Dire situation]]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
My name is Eleanor. Only Rosa calls me Nellie. And of course I exist! I'm just not real, that's all. But thanks to the Void I've been asleep this whole time. And Rosa...
<br>
[[What happened to her?->Mind-melding]]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
It's Eleanor. Only Rosa calls me Nellie. And you think I don't know that!? I've been trying to get out of that sleep for ages! And poor Rosa, I can't imagine what she's gone through...
<br>
[[Is the Void behind all this?->Mind-melding]]{=
(enchant: "Rosa", (text-colour: white))
(enchant: "Nellie", (text-colour: white))
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
When the Void showed us what we really were, part of it seeped into our minds. I think it might have melded with Rosa's and grown out of control...
<br>
[[There has to be a way to stop it.->The solution]]{=
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
...My voice. I can make anything happen just by saying it does. Now that you've woken me up, I can use it to banish the Void forever. We just need to get out of here first.
<br>
[[I can take you to the beginning of the game. But we have to hurry or we'll get caught again.->Time to go]]{=
(enchant: "Rosa", (text-colour: white))
<img id="nellie" src="img/nellie.png" alt="A portrait of Nellie">
Let's go, then. I'm not leaving Rosa like this for another second.
<br>
[[Take her back->Start screen]] {=
(enchant: "Rosa", (text-colour: black))
Everything's gone.
<br>
There's nothing here but empty white space. Every speck of darkness has vanished. And it's quiet.
<br>
It's quiet.
<br>
[["Rosa!"->Reunited]]{=
(enchant: "Rosa", (text-colour: black))
(enchant: "Eleanor", (text-colour: black))
Eleanor and Rosa flicker into existence as they run into each other's arms. They hold each other close, smiling and weeping and exchanging I-love-yous. But it's all just sound. The sisters are frozen there, frozen in time, and their bodies are already starting to fade away.
<br>
You have to preserve them.
<br>
[[Write their story]]{=
(enchant: "Rosa", (text-colour: black))
(enchant: "Eleanor", (text-colour: black))
You can't exactly write a whole novel before they disappear, but it'll be a start. You begin to type.
<br>
(live:0.2s)[
(force-input-box: 2bind $story, "=XX=", "There once lived two girls named Rosa and Eleanor, and together they were happy.")(stop:)]
(event: when $story is "There once lived two girls named Rosa and Eleanor, and together they were happy.")[
<br>
As you finish the sentence, the two of them fade into nothing. All that's left of them is the words before you.
<br>
[[Next->Memories]]
]Maybe in the back of your mind, there's a world where they don't have to suffer. Maybe in your dreams, you'll be able to see them again.
But for now the fact that their nightmare is over is enough. Even if they no longer exist, even if they never existed, at least now they're free. And for a brief moment they were able to savour that freedom.
Somewhere in the quiet, there was joy.
[[TRUE END->Credits]]Story and programming by DreamCartographer
''Music & Sound:''
"Ludum Dare 32 - Track 5", "Ludum Dare 30 - Track 8", "Ludum Dare 28 - Track 7", "VGMA Challenge - July 1st", "VGMA Challenge - July 11th" -
Abstraction (abstractionmusic.com)
Static sound effect by Jace from freesound (https://freesound.org/s/35291/)
Breathing sound effect by DreamCartographer, edited in Audacity
[[Next->Credits 2]]{=
(track: 'reveal', 'stop')
There's no way out of this cycle. The more you click, the further away you move from freedom. Soon you come to realise she's truly wormed her way into your mind. Now that you're here, there is no solace. There is no escape.
<br>
There is only ROSA.
<br>
[[BAD END->Splash screen]]{=
(masteraudio: 'volume', 0.4)
(set: $locked to true)
(set: $num to 1)
(set: $dial to (a: "", "", "", "", ""))
(set:$awakening to false)
(set: $timer to 6)
(set: $revealOn to false)
(set:$voidPresent to (a: true, false))
(set: $eyeOn to (a: true, false, false))
(set: $sawEyes to false)
(set: $passNum to 0)
(set: $escape to 0)
(set: $voidSpeeds to (a: 4000, 3000, 2000, 1375))
(set: $timerB to $voidSpeeds's 1st)
(set: $movedSpeeds to (a:))
(set: $path to (shuffled: "Yet another day", "Another death", "End scene", "Back home", "Talking with Nellie", "Hiding her feelings", "It doesn't matter", "Sister cruelty", "Going to sleep"))
(set:$rosaName to (a:"Tilly", "Megan", "Natalie", "Star", "Alice", "Lily", "Gina", "Vivian", "Penny", "Susan"))
(set:$chosenName to $rosaName's random)
(set: $otherRealm to (a:"Mirven", "Zemulon", "Lizen", "Tarakar", "Vilaman", "Nikatalia", "Izmel"))
(set: $chosenRealm to $otherRealm's random)
(set: $travelling to (a:"across the clearing", "across the beach", "through the tall grass", "to the top of the hill", "through the valley", "across the palace courtyard"))
(set: $hand to (a:
"This one is smooth and slim, and fits perfectly into mine. These heroes, are they getting younger?",
"He staggers behind me, and I struggle to keep hold of his massive palm. Will we get there in time?",
"The hand is long and slender, and so smooth it feels like mine could slip away from it any second. How is it that even now, it seems like he's never fought a day in his life?")
)
(set: $deathThreat to (a: "Or I'll starve you", "Or I'll choke you to death", "Or I'll slit your throat"))main-theme: ./audio/LudumDare28-Track7.wav
heroic: ./audio/LudumDare30-Track8.wav
sad: ./audio/VGMAChallenge-July1st.wav
void: ./audio/LudumDare32-Track5.wav
reveal: ./audio/VGMAChallenge-July11th.wav
static: ./audio/35291-jace-continuous-static.wav
breath: ./audio/Void-Breathing.wav
fast-breath: ./audio/Void-Breathing-Faster.wav...Okay. I understand.
[[I think I should go now.->Leave]]
<img id="rosa" src="img/rosa.png" alt="A portrait of Rosa">Made in Twine for Narrative Driven Jam #2
Theme: "Unreliable narrator"
Submitted to Improve My Game Jam 17
Thanks for playing!
=><=
####(link: "Play again")[(restart:)]{=
(track: 'main-theme', 'stop')
(track: 'reveal', 'play')
(track: 'reveal', 'loop', true)
<img id="void-rosa" src="img/rosa_head_2.png" alt="ROSA">
"Still trying to leave? Don't bother. I can never be erased.
<br>
You will never escape this DREAM."
<br>
[[Try to escape->Endless void]] {=
(enchant: "Rosa", (text-colour: red))
(enchant: "Nellie", (text-colour: yellow))
(enchant: "Eleanor", (text-colour:#ffec99)){=
(masteraudio: 'stopall')
(set: $revealOn to false)
What the heck is happening!? What was that thing?
<br>
[[Next->Have to find her]]{=
(enchant: "Rosa", (text-colour: white))
...If that was the Void, then you definitely have to get Rosa out of here. But how are you going to find her? The story's been taken over and-
<br>
[["You're back."->Rosa again]]{=
(unless:(track: 'static', 'isplaying'))[
(masteraudio: 'stopall')
(track: 'static', 'volume', 0.3)
(track: 'static', 'play')
(track: 'static', 'loop', true)
]
=><=
<br>
<br>
<br>
<br>
<br>
<br>
<br>
#(background:black)[GAME OVER]
<br>
####(background:black)[(link: "Try again")[
(if: $passNum is 0)[
(set: $escape to 0)(set: $timer to 6)(goto: "Reveal")
]
(else:)[
(set: $passNum to 1)(set:$escape to 0)(set: $timerB to $voidSpeeds's 1st)(set: $voidSpeeds to (a: 4000, 3000, 2000, 1375))(set: $path to (shuffled: "Yet another day", "Another death", "End scene", "Back home", "Talking with Nellie", "Hiding her feelings", "It doesn't matter", "Sister cruelty", "Going to sleep"))(goto: $path's $passNum)
]
]]{=
(track: 'fast-breath', 'play')
(track: 'fast-breath', 'loop', true)
(live: $timerB)[
(set: $timerB to it - $timerB)
(if: $timerB is 0 and $escape < 8)[
(goto: "Game over")(stop:)]
]
<div class="button">
(link-repeat: "RUN")[ (set: $escape to it + 1)
(if: $escape is 6)[
(set: $passNum to it +1)(set: $escape to 0)
(if: $passNum>$path's length)[ (goto:"Freaking out") ]
(if: $voidSpeeds's length is 1)[
(goto: $path's $passNum)
]
(else:)[
(move: $voidSpeeds's 1st into $movedSpeeds)(goto: $path's $passNum)
]
]
]<run|
</div>
[<img id="stalker1" class="speed1" src="img/void-attack.png" alt="The Void 1">](stage1|
[<img id="stalker1" class="speed2" src="img/void-attack.png" alt="The Void 2">](stage2|
[<img id="stalker1" class="speed3" src="img/void-attack.png" alt="The Void 3">](stage3|
[<img id="stalker1" class="speed4" src="img/void-attack.png" alt="The Void 4">](stage4|
(if: $voidSpeeds's 1st is 4000)[ (show:?stage1) ]
(else-if: $voidSpeeds's 1st is 3000)[ (show:?stage2) ]
(else-if: $voidSpeeds's 1st is 2000)[ (show:?stage3) ]
(else-if: $voidSpeeds's 1st is 1375)[ (show:?stage4) ]
{=
(live: 0.5s)[
(if: $num is 6)[
(if: $dial's 1st is "D" and $dial's 2nd is "R" and $dial's 3rd is "E" and $dial's 4th is "A" and $dial's 5th is "M")[
(set: $locked to false)(hide:?dials)(hide:?start)
](else:)[ (set: $dial to (a: "", "", "", "", ""))(set:$num to 1)(rerun:?dream)]
]](stop:)
(click:"DREAM", (colour:white))[(live: 0.2s)[(force-input-box: 2bind $unlockNellie, "=XX=", 1, "ELEANOR ")(stop:)]]
(event: when $unlockNellie is "ELEANOR ")[ (set:$awakening to true)
(goto:"The loop") ]
<br>
(display: "Dials"){=
|dials>[
(link-repeat: "A")[ (set: $dial's $num to "A")(set: $num to it + 1)(append: ?dream)[A] ]
(link-repeat: "B")[ (set: $dial's $num to "B")(set: $num to it + 1)(append: ?dream)[B] ]
(link-repeat: "C")[ (set: $dial's $num to "C")(set: $num to it + 1)(append: ?dream)[C] ]
(link-repeat: "D")[ (set: $dial's $num to "D")(set: $num to it + 1)(append: ?dream)[D] ]
(link-repeat: "E")[ (set: $dial's $num to "E")(set: $num to it + 1)(append: ?dream)[E] ]
(link-repeat: "F")[ (set: $dial's $num to "F")(set: $num to it + 1)(append: ?dream)[F] ]
(link-repeat: "G")[ (set: $dial's $num to "G")(set: $num to it + 1)(append: ?dream)[G] ]
(link-repeat: "H")[ (set: $dial's $num to "H")(set: $num to it + 1)(append: ?dream)[H] ]
(link-repeat: "I")[ (set: $dial's $num to "I")(set: $num to it + 1)(append: ?dream)[I] ]
(link-repeat: "J")[ (set: $dial's $num to "J")(set: $num to it + 1)(append: ?dream)[J] ]
(link-repeat: "K")[ (set: $dial's $num to "K")(set: $num to it + 1)(append: ?dream)[K] ]
(link-repeat: "L")[ (set: $dial's $num to "L")(set: $num to it + 1)(append: ?dream)[L] ]
(link-repeat: "M")[ (set: $dial's $num to "M")(set: $num to it + 1)(append: ?dream)[M] ]
(link-repeat: "N")[ (set: $dial's $num to "N")(set: $num to it + 1)(append: ?dream)[N] ]
(link-repeat: "O")[ (set: $dial's $num to "O")(set: $num to it + 1)(append: ?dream)[O] ]
(link-repeat: "P")[ (set: $dial's $num to "P")(set: $num to it + 1)(append: ?dream)[P] ]
(link-repeat: "Q")[ (set: $dial's $num to "Q")(set: $num to it + 1)(append: ?dream)[Q] ]
(link-repeat: "R")[ (set: $dial's $num to "R")(set: $num to it + 1)(append: ?dream)[R] ]
(link-repeat: "S")[ (set: $dial's $num to "S")(set: $num to it + 1)(append: ?dream)[S] ]
(link-repeat: "T")[ (set: $dial's $num to "T")(set: $num to it + 1)(append: ?dream)[T] ]
(link-repeat: "U")[ (set: $dial's $num to "U")(set: $num to it + 1)(append: ?dream)[U] ]
(link-repeat: "V")[ (set: $dial's $num to "V")(set: $num to it + 1)(append: ?dream)[V] ]
(link-repeat: "W")[ (set: $dial's $num to "W")(set: $num to it + 1)(append: ?dream)[W] ]
(link-repeat: "X")[ (set: $dial's $num to "x")(set: $num to it + 1)(append: ?dream)[X] ]
(link-repeat: "Y")[ (set: $dial's $num to "Y")(set: $num to it + 1)(append: ?dream)[Y] ]
(link-repeat: "Z")[ (set: $dial's $num to "Z")(set: $num to it + 1)(append: ?dream)[Z] ]
]''Images:''
Space and star backgrounds by Screaming Brain Studios (https://screamingbrainstudios.itch.io/seamless-space-backgrounds)
Void background by Joshua Rodriguez on Unsplash, edited in PicsArt
Eyes background by DreamCartographer, edited in Pixlr
Rosa portrait by Jennifer Burk on Unsplash, edited in PicsArt and Pixlr
Nellie portrait by Cheryl Holt on Pixabay, edited in Pixlr
Glitch background by Michael Dziedzic on Unsplash, edited in Pixlr
Five faces photo by Richmond Fajardo on Unsplash, edited in Pixlr
Mouth photo by Thiébaud Faix on Unsplash, edited in Pixlr
Portal photo by Jeremy Perkins on Unsplash, edited in Pixlr
''Fonts:''
Title font: "Yeseva One" by Jovanny Lemonad
Story fonts: "Karla" by Jonny Pinhorn, "Archivo Black" by Omnibus-Type, "Russo One" by Jovanny Lemonad
[[Next->Credits 3]]
(enchant: "Rosa", (text-colour: black))
(enchant: "Nellie", (text-colour: black))