(set: $unlockedAchievementCount to 0)
(if: $achOof is true)[
(set: $unlockedAchievementCount to 1)
]
<div class="cw-scene">
<div class="cw-submenu-title">ACHIEVEMENTS</div>
<br><br>
(if: $achOof is true)[
🏆 **Oof** — Die during a run.
]
(else:)[
🏆 **???** — (css: "filter: blur(5px); user-select: none;")[Die during a run.]
]
<br><br>
<div class="cw-menu-divider"></div>
<br>
**Unlocked: $unlockedAchievementCount / 1**
<br><br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">(link: "Back")[ (undo:) ]
</div>
</div>
</div>
<script>changeTrack(1);</script>\
<div class="cw-submenu">
<div class="cw-submenu-title">CHARACTER REGISTRATION</div>
<div class="cw-submenu-text">WELCOME TO THE OBSIDIAN DUNGEONS</div>
<div class="cw-submenu-text">REGISTER YOUR IDENTITY BEFORE ENTERING THE DUNGEON.</div>
<br>
<div class="cw-submenu-text">NAME:</div>
(input: bind $name)
<br><br>
<div class="cw-submenu-text">RACE:</div>
(dropdown: bind $race, "Human", "Halfling", "Dwarf", "Elf")
<br><br>
<div class="cw-submenu-button">[[CONTINUE->CharacterNameCheck]]</div>
</div>
<script>changeTrack(11);</script>\
<div class="cw-scene">
(if: $dungeonIntroSeen is false)[
(set: $dungeonIntroSeen to true)
<div class="cw-submenu-title">DESCENT INTO THE DUNGEON</div>
<br>
The enormous doors at the far end of the Lobby begin to open.
<br><br>
A deep metallic rumble rolls through the chamber.
<br>
The prisoners fall silent.
<br><br>
Beyond the doors lies a vast, dark chamber.
<br>
Its walls are made of black obsidian, marked with strange symbols that glow faintly purple.
<br><br>
A voice echoes through the Lobby.
<br><br>
"All prisoners. Proceed inside."
<br><br>
Nobody moves at first.
<br>
Then the first prisoners begin to walk.
<br>
The rest follow, until the entire group is moving through the open doors.
<br><br>
You move with them.
<br>
There is little room to hesitate, and nobody wants to be the one left behind.
<br><br>
Once everyone has entered, the doors slam shut.
<br><br>
*CLANG.*
<br><br>
The sound reverberates through the chamber.
<br>
Several prisoners turn around.
<br>
There is no handle on this side.
<br><br>
A faint electronic sound comes from beneath your feet.
<br><br>
*Beep.*
<br><br>
Thin purple lines illuminate across the floor, spreading beneath the entire group.
<br>
They form a huge pattern across the obsidian platform.
<br><br>
A prisoner beside you takes a step back.
<br>
Someone else starts shouting.
<br><br>
Before anyone can react, the floor shudders.
<br><br>
The platform begins to descend.
<br><br>
You stumble as the entire group is carried underground.
<br>
Some prisoners grab one another for support.
<br>
Others press themselves against the walls.
<br><br>
There is nowhere to go.
<br>
No stairs.
<br>
No handles.
<br>
Only smooth black obsidian and the purple light beneath your feet.
<br><br>
{
(if: $race is "Elf")[
Your eyes adjust easily to the darkness.
<br>
As the platform descends, you can make out markings carved into the walls.
<br>
You notice doors built into the surrounding stone.
<br>
Some are sealed shut. Others stand slightly open.
<br><br>
Far below, something moves.
<br>
You cannot tell what it is.
]
(else:)[
The darkness closes in around you.
<br>
You can barely make out the walls as they pass.
<br>
Around you, prisoners whisper nervously.
<br><br>
Then you hear something moving below.
<br><br>
*Clang.*
<br><br>
A second metallic sound follows.
<br>
*Clang.*
]
}
<br><br>
The platform slows.
<br>
Then, with one final shudder, it stops.
<br><br>
For a moment, everything is silent.
<br><br>
Then the lights flicker on.
<br><br>
{
(if: $race is "Elf")[
The corridor becomes brighter, revealing details you could already make out in the dark.
]
(else:)[
The sudden light makes you blink.
<br>
When your eyes adjust, you see a long corridor stretching ahead.
]
}
<br><br>
Black obsidian walls rise on every side.
<br>
Dim purple energy pulses through cracks in the stone.
<br>
Doors line both sides of the corridor, each one different from the last.
<br><br>
Behind you, the platform locks into place with a final metallic *CLANG*.
<br>
The way back is sealed.
<br><br>
A sound crackles through the corridor.
<br>
Then a voice fills the entire dungeon.
<br><br>
"Last one alive, wins."
<br><br>
Shiro.
<br><br>
The voice falls silent.
<br>
Somewhere ahead, a door unlocks.
<br><br>
*Click.*
<br><br>
You look around at the other prisoners.
<br>
Nobody knows what lies beyond that door.
<br>
But everyone understands that they are expected to move forward.
]
(else:)[
<div class="cw-submenu-title">DESCENT INTO THE DUNGEON</div>
<br>
The enormous doors open once again.
<br><br>
The prisoners fall silent.
<br>
Nobody needs to explain what happens next.
<br><br>
You move with the others into the transport chamber.
<br>
The doors slam shut behind the group.
<br><br>
*CLANG.*
<br><br>
Purple lines illuminate across the floor.
<br>
The platform shudders, then begins its descent.
<br><br>
You stand among the other prisoners as the walls slide past.
<br>
Some look afraid.
<br>
Others stare straight ahead.
<br><br>
The platform stops.
<br>
The lights turn on.
<br><br>
You have returned to the same corridor.
<br>
The obsidian walls and purple markings are exactly as you remember them.
<br><br>
The next trial is about to begin.
]
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->TrialSequence]]</div>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>[[<br>]]
<div class="cw-scene">
<div class="cw-submenu-title">EXAMINING THE OBSIDIAN COLLAR</div>
<br>
You raise a hand to your neck and run your fingers along the black collar.
<br><br>
There is no lock.
<br>
No hinge.
<br>
No visible mechanism.
<br><br>
You try pulling it away from your neck.
<br>
Nothing.
<br><br>
You press against it, searching for even the slightest movement.
<br>
The collar doesn't budge.
<br>
It feels as though it has become a part of you.
<br><br>
A prisoner nearby notices what you are doing.
<br><br>
"You won't get it off," she says quietly.
<br><br>
You turn toward her.
<br>
"Why not?"
<br><br>
She glances at the collar around your neck.
<br><br>
"It's connected to your soul."
<br><br>
You stop touching it.
<br><br>
"What?"
<br><br>
You look at her collar.
<br>
A name has been engraved into the black surface.
<br><br>
**Elysa.**
<br><br>
{
(if: $race is "Elf")[
She looks like an elf, just like you.
]
(else:)[
She is an elf, with pointed ears and features that distinguish her from the humans around her.
]
}
<br><br>
Elysa notices you studying her collar.
<br><br>
"Shiro didn't make those," she says.
<br><br>
You look back at her.
<br>
"Then who did?"
<br><br>
Her expression grows uneasy.
<br><br>
"The Obsidian Skull."
<br><br>
The name means little to you, but the way she says it makes you hesitate.
<br><br>
You look down at your own collar again.
<br>
For a moment, nothing happens.
<br><br>
Then a faint pulse of black light passes across its surface.
<br><br>
You immediately pull your hand away.
<br><br>
Elysa watches you carefully.
<br><br>
"When it starts beeping..."
<br><br>
She stops.
<br><br>
You wait for her to continue.
<br><br>
"What happens when it beeps?"
<br><br>
Elysa looks away.
<br>
For a moment, she seems to consider telling you.
<br><br>
Then she says nothing.
<br><br>
You don't press her any further.
<br>
Whatever happens when those collars beep, you have a feeling you don't want to experience it yourself.
<br><br>
(if: not $collarInspected)[
(set: $collarInspected to true)
(set: $elysaRep to $elysaRep + 1)
]
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
</div>
<div class="cw-scene">
<div class="cw-submenu-title">OBSERVING THE LOBBY</div>
<br>
You take a closer look around the Lobby.
<br><br>
The walls are made of enormous slabs of black obsidian.
<br>
Their surfaces are almost perfectly smooth, without visible cracks or seams.
<br>
The faint purple light barely reaches the upper corners of the chamber.
<br><br>
Prisoners are scattered throughout the room.
<br>
Some sit silently against the walls.
<br>
Others whisper to one another, their voices low enough to be almost indistinguishable.
<br>
A few stare at the enormous doors, as if expecting them to open at any moment.
<br><br>
Nobody seems to know what is going to happen.
<br>
Nobody seems willing to ask.
<br><br>
You notice several smaller doors along the sides of the room.
<br>
Some are completely sealed, their edges blending seamlessly into the obsidian walls.
<br>
Others have narrow gaps around their frames.
<br><br>
From behind one of them comes a faint scraping sound.
<br><br>
*Scrape.*
<br><br>
Then silence.
<br><br>
You cannot tell what is making the noise.
<br>
You are not sure you want to find out.
<br><br>
You turn your attention back to the main entrance.
<br>
The enormous doors remain firmly shut.
<br>
There is no handle, no lock, and no visible way to open them from this side.
<br><br>
Whatever lies beyond those doors, you are not leaving through them.
<br><br>
(if: not $lobbyInspected)[
(set: $lobbyInspected to true)
(set: $reputation to $reputation + 1)
]
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
</div>
<script>changeTrack(3);</script>\
(if: $trialCount > 0)[
<div class="cw-scene">
<div class="cw-submenu-title">THE LOBBY</div>
<br>
You have returned to the Lobby.
<br><br>
The familiar black walls surround you once again.
<br>
There are fewer prisoners than before.
<br>
Some of the faces you remember are gone.
<br><br>
You don't need to ask what happened to them.
<br>
The silence is answer enough.
<br><br>
The enormous doors stand closed.
<br>
Beyond them, the next trial awaits.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE DEEPER INTO THE DUNGEON->DungeonStart]]</div>
<br>
<div class="cw-menu-button">[[MAIN MENU->MainMenu]]</div>
</div>
</div>
]
(else:)[
(if: not $lobbyIntroSeen)[
(set: $lobbyIntroSeen to true)
<div class="cw-scene">
<div class="cw-menu-title">THE OBSIDIAN DUNGEONS</div>
<br>
You wake up.
<br><br>
For a moment, you have no idea where you are.
<br>
Cold black stone presses against your hands as you slowly sit up.
<br>
Massive walls surround you, disappearing into the darkness above.
<br><br>
As your eyes adjust, you notice that you are not alone.
<br>
Prisoners are scattered throughout the room.
<br>
Some sit silently against the walls, while others stand in small groups, whispering to one another.
<br>
Confusion and fear hang in the air.
<br>
Nobody seems to know why they are here.
<br><br>
You reach for your neck and feel something cold against your skin.
<br><br>
A black collar.
<br><br>
You grab it and pull, searching for a clasp or a lock, but there is nothing.
<br>
No opening.
<br>
No way to remove it.
<br><br>
Then you notice the name engraved into its surface.
<br><br>
$name.
<br><br>
Your name.
<br><br>
You look around.
<br>
Everyone else is wearing one, too.
<br><br>
Someone nearby catches you staring at your collar.
<br><br>
"Don't bother," they mutter.
<br><br>
You turn toward them.
<br>
"What do you mean?"
<br><br>
"Nobody gets them off."
<br><br>
Before you can ask anything else, something catches your eye on the floor beside you.
<br><br>
A worn bag.
<br><br>
You have no memory of bringing it here, yet when you open it, you find a single black book inside.
<br>
Its cover bears no title, and there is no name written anywhere on it.
<br><br>
Curious, you open the first page.
<br><br>
Most of the pages appear empty, but faint handwriting is scattered throughout the book.
<br>
For a fleeting moment, new words form between the lines.
<br><br>
Then they vanish.
<br><br>
You stare at the page, wondering whether you imagined it.
<br><br>
You have never seen this book before.
<br>
You have no idea who put it in your bag, or why it ended up with you.
<br>
As far as you can tell, you are the only prisoner in this room carrying one.
<br><br>
Perhaps it was an accident.
<br><br>
Perhaps someone wanted you to find it.
<br><br>
Whatever the truth may be, you decide to keep it.
<br><br>
<div class="cw-menu-divider"></div>
<br>
The enormous doors at the far end of the room remain closed.
<br>
For now, you have a little time to look around.
<br><br>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[EXAMINE THE BOOK->Handbook]]</div>
<br>
<div class="cw-menu-button">[[LOOK AROUND->InspectLobby]]</div>
<br>
<div class="cw-menu-button">[[TALK TO ANOTHER PRISONER->TalkPrisoner]]</div>
<br>
<div class="cw-menu-button">[[EXAMINE THE OTHER PRISONERS->Introductions]]
</div>
<br>
<div class="cw-menu-button">[[EXAMINE YOUR COLLAR->InspectCollar]]</div>
<br>
<div class="cw-menu-button cw-primary">[[WAIT FOR THE TRIAL TO BEGIN->DungeonStart]]</div>
<br>
<div class="cw-menu-button">[[MAIN MENU->MainMenu]]</div>
</div>
</div>
]
(else:)[
<div class="cw-scene">
<div class="cw-submenu-title">THE LOBBY</div>
<br>
You are back in the waiting chamber.
<br><br>
The black walls rise around you.
<br>
Prisoners whisper in small groups, while others sit in silence.
<br><br>
The enormous doors remain closed.
<br>
Nobody seems to know when they will open.
<br><br>
You still have a little time before you are taken deeper into the dungeon.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[EXAMINE THE BOOK->Handbook]]</div>
<br>
<div class="cw-menu-button">[[LOOK AROUND->InspectLobby]]</div>
<br>
<div class="cw-menu-button">[[TALK TO A PRISONER->TalkPrisoner]]</div>
<br>
<div class="cw-menu-button">[[EXAMINE THE OTHER PRISONERS->Introductions]]
</div>
<br>
<div class="cw-menu-button">[[EXAMINE YOUR COLLAR->InspectCollar]]</div>
<br>
<div class="cw-menu-button cw-primary">[[ENTER THE DUNGEON->DungeonStart]]</div>
<br>
<div class="cw-menu-button">[[MAIN MENU->MainMenu]]</div>
</div>
</div>
]
]
<br><br>
<div class="cw-status-panel">
<div>**Spells:** $spells</div>
<br>
<div>**Trials Survived:** $trialCount</div>
</div><script>changeTrack(4);</script>\
(set: $choiceTime to 15)
<div class="cw-scene">
<div class="cw-submenu-title">THE CHOICE</div>
<br>
The tablet flickers in your hands.
<br><br>
Across from you, **(print: $splitOpponent)** waits for your decision.
<br>
You have only fifteen seconds.
<br><br>
<div class="cw-menu-divider"></div>
<div class="cw-submenu-title">YOUR REPUTATION</div>
<br>
(if: $reputation >= 3)[
Others have reasons to trust you.
]
(else-if: $reputation <= -3)[
Your actions have made you difficult to trust.
]
(else:)[
Your reputation is still uncertain.
]
<br><br>
<div class="timer-container">TIME REMAINING: |displayTimer>[15] SECONDS</div>
<br><br>
<div class="sok-choice-container">
<div class="sok-choice spare-choice">
[[SPARE->SOK-Spare]]
</div>
<div class="sok-choice kill-choice">
[[KILL->SOK-Kill]]
</div>
</div>
</div>
(live: 1s)[
(set: $choiceTime to $choiceTime - 1)
(if: $choiceTime <= 0)[
(goto: "SOK-Timeout")
]
(else:)[
(if: $choiceTime <= 5)[
(replace: ?displayTimer)[
(text-color: #ff3333) + (text-style: "rumble", "bold")[$choiceTime]
]
]
(else:)[
(replace: ?displayTimer)[$choiceTime]
]
]
]
{
(go-to: "NewGame")
}
<script>changeTrack(9);</script>\
(set: $killChoiceMade to true)
(set: $playerChoice to "kill")
<div class="cw-scene">
<div class="cw-submenu-title">CHOICE RECORDED</div>
<br><br>
You press **KILL**.
<br><br>
The tablet erupts in crimson light. Arcane symbols crawl across its surface, each one burning brighter than the last.
<br><br>
You have chosen to have **(print: $splitOpponent)** executed.
<br><br>
The prisoner stares at you. The air grows heavy, as if the dungeon itself is waiting to hear what they will say.
<br><br>
(if: $splitOpponent is "Elysa")[
(if: $elysaRep >= 3)[
Elysa stares at you in disbelief. Her eyes search your face for some sign that this is an illusion, a cruel enchantment, or a test you intend to overturn at the last moment.
<br><br>
"I trusted you."
<br><br>
Her voice trembles, but she forces herself to stand straight.
"I thought we were becoming something like a party. People who watched each other's backs."
<br><br>
She looks at the red tablet.
"I was wrong. And I don't know which part hurts more."
]
(else-if: $elysaRep <= -3)[
Elysa retreats a step. Fear flashes across her face, followed by a bitter, almost resigned understanding.
<br><br>
"So this is the path you've chosen."
<br><br>
She swallows hard.
"I kept hoping there was something in you worth trusting. Perhaps that was my mistake."
<br><br>
She lifts her chin, refusing to let the dungeon see her bow.
"I won't beg. If this is my final moment, I'll meet it standing."
]
(else:)[
Elysa looks from the tablet to you, her expression slowly falling.
<br><br>
"Please. You can still stop this."
<br><br>
For a moment, she seems ready to reach for your hand. Then she stops herself.
"I thought you might choose mercy. I suppose hope is a dangerous thing to carry in a place like this."
]
]
(else-if: $splitOpponent is "Bahrmur")[
(if: $bahrmurRep >= 3)[
Bahrmur's jaw tightens. The old warrior looks at you as though he has just watched a trusted comrade turn their blade on the party.
<br><br>
"After all those words, I thought I knew what kind of fighter you were."
<br><br>
He gives a humourless laugh.
"A warrior can survive a hundred battles and still be brought down by the one person he never thought he'd have to guard against."
<br><br>
He turns away.
"Don't ask me to stand beside you again."
]
(else-if: $bahrmurRep <= -3)[
Bahrmur barely flinches. He studies the red tablet, then gives a slow, grim nod.
<br><br>
"Aye. I suspected you'd make this choice sooner or later."
<br><br>
He flexes his hands, as if remembering old battles.
"Don't mistake my lack of surprise for approval. I've seen what happens when people learn to solve every problem with a blade."
<br><br>
He fixes you with a hard stare.
"Eventually, they run out of problems and start making enemies."
]
(else:)[
Bahrmur exhales through his nose. His expression is grim, but he does not look away.
<br><br>
"So that's it, then."
<br><br>
He glances towards the other prisoners.
"Remember this when you gather your companions around a campfire and call yourselves heroes. A party is judged by what it does when the easy choice is the wrong one."
<br><br>
He falls silent, leaving the words hanging in the air.
]
]
(else-if: $splitOpponent is "Morgrim")[
(if: $morgrimSkeleton)[
Morgrim's crimson eyes narrow. His skeletal hands curl into fists, and a faint violet glow flickers between his fingers.
<br><br>
"You have already watched me fall once."
<br><br>
His voice grates like rusty iron dragged across stone.
"And you learned nothing."
<br><br>
He steps towards the tablet, refusing to look away from you.
"Very well. Let us see whether your courage survives the consequences."
<br><br>
For the first time, his voice sounds less like a lecture and more like a curse.
]
(else-if: $morgrimRep >= 3)[
Morgrim goes completely still. Even the faint movement of his robes stops.
<br><br>
"Curious."
<br><br>
He studies you with cold disbelief.
"I thought you possessed at least a little sense. Perhaps I mistook our conversations for the beginning of an alliance."
<br><br>
His fingers trace a small, intricate shape in the air. A violet rune appears and vanishes.
"Consider our hypothetical pact dissolved. I would rather bargain with a lich than place my faith in you."
]
(else-if: $morgrimRep <= -3)[
Morgrim's expression hardens, but he seems almost satisfied.
<br><br>
"Finally. A decision that matches my expectations."
<br><br>
He adjusts his dark robes.
"Do not mistake my contempt for fear. I have no intention of begging you for anything."
<br><br>
His crimson eyes burn brighter.
"Should fate ever place us on opposite sides of a battlefield, remember that you taught me exactly how little mercy I should expect from you."
]
(else:)[
Morgrim narrows his eyes as the tablet turns red.
<br><br>
"Of course."
<br><br>
He lets out a short, irritated sigh.
"Shiro constructs a little moral puzzle, and you decide to play the executioner. How wonderfully predictable."
<br><br>
He inclines his head with bitter mockery.
"Enjoy your victory. The most dangerous curses are the ones people place upon themselves."
]
]
(else-if: $splitOpponent is "Trixie")[
(if: $trixieRep >= 3)[
Trixie's familiar grin disappears. Her wings beat once, unsteadily, before she manages to hover in place.
<br><br>
"Wait. You're actually serious?"
<br><br>
She looks around for the hidden lever, the fake tablet, the illusion she is certain must be there.
<br><br>
"Come on. Tell me there's a trick. Tell me this is some ridiculous dungeon quest where everyone gets revived at the end."
<br><br>
Her voice grows quieter.
"I thought I was one of your people."
]
(else-if: $trixieRep <= -3)[
Trixie stares at the tablet. Her ears droop, but she forces a crooked smile onto her face.
<br><br>
"Well. Guess the joke really was on me."
<br><br>
She lets out a small, brittle laugh.
"Should've known better than to expect a happy ending in a dungeon run."
<br><br>
For once, she doesn't add another joke. Her silence feels stranger than any trick she could have played.
]
(else:)[
Trixie opens her mouth as if to make another joke.
<br><br>
Nothing comes out.
<br><br>
"...Oh."
<br><br>
She looks at you, searching your face for the punchline.
"I thought we were just a bunch of weirdos trying to survive the same nightmare."
<br><br>
Her grin fades.
"I didn't think you'd make me the final gag."
]
]
(else-if: $splitOpponent is "Lyraei")[
(if: $lyraeiRep >= 3)[
Lyraei stares at you, hurt spreading across her face. Her wings fold close around her body, shielding her as if from a sudden storm.
<br><br>
"I believed in you."
<br><br>
She draws a slow breath, trying to keep her voice steady.
"I knew this place could make people cruel. I just didn't believe you'd let it make that choice for you."
<br><br>
Her eyes shine with a quiet sorrow.
"If we had escaped together, I would have stood beside you. I truly would have."
]
(else-if: $lyraeiRep <= -3)[
Lyraei regards you with quiet disappointment. She does not plead, and she does not look away.
<br><br>
"I see. I should have expected this."
<br><br>
She raises her head, holding on to what dignity she can.
"Power and goodness are not the same thing. Remember that, if you ever leave these walls."
<br><br>
Her wings settle against her back.
"I hope one day you learn to choose differently. Not for my sake. For the sake of whoever stands beside you next."
]
(else:)[
Lyraei takes a slow breath. Her hands tremble, but she keeps her eyes on you.
<br><br>
"You were given a choice."
<br><br>
She glances at the red tablet.
"I know we are all frightened. I know survival can make terrible things seem reasonable."
<br><br>
Her voice softens.
"But I wish you had given someone else a chance to see another dawn."
]
]
(else-if: $splitOpponent is "Akatamor")[
Akatamor remains still, his bandaged face turned towards the red tablet.
<br><br>
Then, slowly, he raises his head to look at you.
<br><br>
"You have mistaken a command for a judgment."
<br><br>
His voice is low and ancient, like words emerging from a tomb sealed for centuries.
<br><br>
"All this power, and you let a machine decide what your choice means."
<br><br>
He studies you in silence.
<br><br>
"Perhaps you believe you have won something. Perhaps you believe you have lost nothing."
<br><br>
He lowers his head again.
"Time has a way of revealing the difference."
]
(else:)[
(print: $splitOpponent) stares at the red tablet, struggling to hide their reaction.
]
<br><br>
The other prisoners remain silent. Nobody dares to interrupt. Their eyes follow you, then quickly turn away.
<br><br>
A mechanical hand descends from the ceiling. Its metal fingers close around the tablet and pull it from your hands.
<br><br>
The red light fades, leaving the platform cold and silent.
<br><br>
Then Shiro's voice echoes through the dungeon.
<br><br>
"Choice registered. The consequences remain yours."
<br><br>
For a moment, you hear nothing but the distant rattle of chains.
<br><br>
<div class="cw-menu-divider"></div>
<br>
(if: not $choiceResolutionApplied)[
(set: $choiceResolutionApplied to true)
(set: $reputation to $reputation - 2)
(if: $elysaAlive)[(set: $elysaRep to $elysaRep - 4)]
(if: $bahrmurAlive)[(set: $bahrmurRep to $bahrmurRep - 2)]
(if: $morgrimAlive)[(set: $morgrimRep to $morgrimRep - 1)]
(if: $trixieAlive)[(set: $trixieRep to $trixieRep + 1)]
(if: $zulkarAlive)[(set: $zulkarRep to $zulkarRep + 4)]
(if: $lyraeiAlive)[(set: $lyraeiRep to $lyraeiRep - 5)]
(if: $akatamorAlive)[(set: $akatamorRep to $akatamorRep + 0)]
(if: $splitOpponent is "Elysa")[(set: $elysaRep to $elysaRep - 5)]
(if: $splitOpponent is "Bahrmur")[(set: $bahrmurRep to $bahrmurRep - 5)]
(if: $splitOpponent is "Morgrim")[(set: $morgrimRep to $morgrimRep - 9)(set: $morgrimHates to true)]
(if: $splitOpponent is "Trixie")[(set: $trixieRep to $trixieRep - 5)]
(if: $splitOpponent is "Zul'kar")[(set: $zulkarRep to $zulkarRep - 5)]
(if: $splitOpponent is "Lyraei")[(set: $lyraeiRep to $lyraeiRep - 5)]
(if: $splitOpponent is "Akatamor")[(set: $akatamorRep to $akatamorRep - 5)]
]
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->SpareOrKillResult]]</div>
</div>
</div>
<script>changeTrack(9);</script>\
(set: $playerChoice to "spare")
<div class="cw-scene">
<div class="cw-submenu-title">CHOICE RECORDED</div>
<br><br>
You press **SPARE**.
<br><br>
The tablet flares emerald green. Arcane light crawls across its surface, and for one heartbeat, the chains hanging above the platform begin to tremble.
<br><br>
You have refused to condemn **(print: $splitOpponent)**.
<br><br>
The prisoner watches you carefully. In this dungeon, mercy is a strange kind of magic: nobody knows whether to trust it, fear it, or wait for the catch.
<br><br>
(if: $splitOpponent is "Elysa")[
(if: $elysaRep >= 3)[
Elysa's eyes widen. Then, slowly, the tension leaves her shoulders.
<br><br>
"You remembered who I was. Even here."
<br><br>
She places a hand over her heart and gives you a solemn nod, the kind a sworn companion might offer before a dangerous quest.
<br><br>
"I won't forget this. If we ever find a way out, you won't have to face the darkness alone."
]
(else-if: $elysaRep <= -3)[
Elysa does not approach. Her gaze flicks between you and the tablet, searching for an enchantment, a trick, anything that might explain your choice.
<br><br>
"Why spare me now? Is this another game Shiro wants us to play?"
<br><br>
She grips the edge of her sleeve.
"I want to believe you. But trust isn't a potion you can pour into someone and expect it to work."
]
(else:)[
Elysa exhales shakily. For a moment, she looks as though she might speak, but the words take their time coming.
<br><br>
"Thank you."
<br><br>
She glances towards the other prisoners.
"Maybe the first step towards being better isn't winning a battle. Maybe it's refusing to fight one when you don't have to."
]
]
(else-if: $splitOpponent is "Bahrmur")[
(if: $bahrmurRep >= 3)[
Bahrmur studies you beneath a heavy brow. His hand, which had been resting near his weapon, slowly moves away.
<br><br>
"Hah. Didn't think you'd spend your mercy on an old bruiser like me."
<br><br>
He strikes a fist against his chest in a rough warrior's salute.
"Fine, then. If we ever stand on the same battlefield, I'll remember who gave me another round. Just don't expect me to carry your pack."
]
(else-if: $bahrmurRep <= -3)[
Bahrmur's eyes narrow. He looks less relieved than suspicious.
<br><br>
"What's the angle? You trying to buy yourself an ally?"
<br><br>
He folds his arms.
"I've seen too many commanders smile before sending their soldiers into a slaughter. You want my trust? Earn it when there's something real at stake."
]
(else:)[
Bahrmur gives a low grunt and rubs his jaw.
"Well. That wasn't the choice I expected."
<br><br>
He gives the tablet a wary glance.
"Mercy has its place, I suppose. But out there, when the blades come out, good intentions won't stop a goblin's axe. Remember that."
]
]
(else-if: $splitOpponent is "Morgrim")[
(if: $morgrimSkeleton)[
Morgrim's crimson eyes burn in the darkness. His skeletal fingers curl, then relax.
<br><br>
"You spared me. How wonderfully irrational."
<br><br>
He leans towards the tablet, studying its fading runes.
"Perhaps you seek an ally. Perhaps you seek absolution. Or perhaps your mind has finally succumbed to the dungeon's influence."
<br><br>
He turns away, robes whispering against the stone.
"Whatever your motive, do not mistake my continued existence for gratitude."
]
(else-if: $morgrimRep >= 3)[
Morgrim raises an eyebrow. A faint green reflection passes across his dark robes.
<br><br>
"An unexpectedly rational decision. How disappointing. I had prepared several excellent insults."
<br><br>
He studies you with a calculating look.
"Perhaps there is a mind beneath all that heroic sentiment after all. If we survive this place, we may even have something worth discussing."
]
(else-if: $morgrimRep <= -3)[
Morgrim recoils slightly from the tablet, his expression twisting with suspicion.
<br><br>
"What are you planning? A pathetic attempt to recruit me? Some theatrical display of virtue?"
<br><br>
He lifts one finger, and a tiny violet spark dances above it before vanishing.
"Do not confuse a spared life with a pact. I have no intention of becoming your loyal familiar."
]
(else:)[
Morgrim watches the emerald light fade, his expression unreadable.
<br><br>
"Interesting. You had the power to decide my fate, and chose not to use it."
<br><br>
He adjusts his robes.
"That does not make you virtuous. But it does make you harder to predict. In my experience, unpredictable people are either dangerous fools or useful allies."
]
]
(else-if: $splitOpponent is "Trixie")[
(if: $trixieRep >= 3)[
Trixie's grin returns, though it is smaller and more genuine than usual.
<br><br>
"YOU SPARED ME! I mean—obviously. Naturally. I was completely in control of that situation."
<br><br>
She spins in the air, scattering a few harmless golden sparks.
"Still, if we ever form an adventuring party, I call dibs on choosing our name. And the loot. Mostly the loot."
]
(else-if: $trixieRep <= -3)[
Trixie floats backwards, squinting at you as if you're a particularly suspicious mimic.
<br><br>
"Okay. Either you've grown a conscience, or this is the most elaborate prank anyone has ever played on me."
<br><br>
She looks underneath the tablet.
"There's no hidden lever? No cursed contract? No tiny demon waiting to pop out and demand my soul?"
<br><br>
Her wings twitch.
"Fine. I'll accept the miracle. But I'm keeping an eye on you."
]
(else:)[
Trixie lets out a dramatic gasp and clutches her chest.
<br><br>
"Mercy! Friendship! The power of teamwork!"
<br><br>
She pauses.
<br><br>
"Did I miss the part where we all swear an oath around a campfire? Because I have a speech prepared. It's mostly about how brilliant I am."
]
]
(else-if: $splitOpponent is "Lyraei")[
(if: $lyraeiRep >= 3)[
Lyraei's wings unfold slightly, catching the emerald light like stained glass.
<br><br>
"You chose to protect a life when the dungeon demanded otherwise."
<br><br>
She lowers her head in a quiet, almost knightly bow.
"I cannot promise that the road ahead will be kind. But if we must walk it together, I will stand beside you for as long as I can."
]
(else-if: $lyraeiRep <= -3)[
Lyraei watches you with guarded eyes. Her hands remain close to her chest.
<br><br>
"I don't understand you. Your past choices gave me little reason to trust you, yet now you spare me."
<br><br>
She looks towards the sealed doors.
"I will accept this chance. But trust must be earned through deeds, not a single moment beneath a glowing rune."
]
(else:)[
Lyraei closes her eyes for a moment, as though offering a silent prayer.
<br><br>
"Thank you. Every life has a story that has not yet reached its final page."
<br><br>
Her wings settle behind her.
"Perhaps ours are not finished here. Let us hope we live long enough to discover the next chapter."
]
]
(else-if: $splitOpponent is "Akatamor")[
Akatamor remains motionless. The bandages around his face hide nearly every expression.
<br><br>
At last, he turns towards the tablet.
<br><br>
"Mercy is an unusual offering in a place built to measure the worth of souls."
<br><br>
He studies you for a long moment.
<br><br>
"Do not expect me to call you a hero. Heroes are often merely fools whose stories have not ended badly yet."
<br><br>
He lowers his head again, returning to his ancient silence.
]
(else:)[
(print: $splitOpponent) watches the emerald light fade, their expression difficult to read.
]
<br><br>
The other prisoners exchange uneasy glances. Some look relieved. Others seem to be reconsidering what kind of person they are trapped beside.
<br><br>
A mechanical hand descends from the ceiling. Its metal fingers close around the tablet and pull it away.
<br><br>
The green light gutters out.
<br><br>
Shiro's voice rolls through the chamber, cold and distant.
<br><br>
"Choice registered. Mercy has been observed."
<br><br>
For a moment, the chains fall silent. Then the dungeon resumes its restless groaning.
<br><br>
<div class="cw-menu-divider"></div>
<br>
(if: not $choiceResolutionApplied)[
(set: $choiceResolutionApplied to true)
(set: $reputation to $reputation + 2)
(if: $elysaAlive)[(set: $elysaRep to $elysaRep + 2)]
(if: $bahrmurAlive)[(set: $bahrmurRep to $bahrmurRep + 1)]
(if: $morgrimAlive)[(set: $morgrimRep to $morgrimRep + 1)]
(if: $trixieAlive)[(set: $trixieRep to $trixieRep - 1)]
(if: $zulkarAlive)[(set: $zulkarRep to $zulkarRep - 2)]
(if: $lyraeiAlive)[(set: $lyraeiRep to $lyraeiRep + 2)]
(if: $akatamorAlive)[(set: $akatamorRep to $akatamorRep + 0)]
(if: $splitOpponent is "Elysa")[(set: $elysaRep to $elysaRep + 5)]
(if: $splitOpponent is "Bahrmur")[(set: $bahrmurRep to $bahrmurRep + 4)]
(if: $splitOpponent is "Morgrim")[(set: $morgrimRep to $morgrimRep + 5)]
(if: $splitOpponent is "Trixie")[(set: $trixieRep to $trixieRep + 3)]
(if: $splitOpponent is "Zul'kar")[(set: $zulkarRep to $zulkarRep + 1)]
(if: $splitOpponent is "Lyraei")[(set: $lyraeiRep to $lyraeiRep + 5)]
(if: $splitOpponent is "Akatamor")[(set: $akatamorRep to $akatamorRep + 4)]
]
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->SpareOrKillResult]]</div>
</div>
</div>
<script>changeTrack(9);</script>\
(set: $playerChoice to "timeout")
(set: $alive to false)
<div class="cw-scene">
<div class="cw-submenu-title">TIME EXCEEDED</div>
<br><br>
The tablet flashes red.
<br><br>
<div>(bg:red)[TIME LIMIT EXCEEDED].</div>
<br><br>
You failed to make a choice.
<br><br>
Shiro's voice echoes through the dungeon:
<br><br>
<div>"Indecision is a decision."</div>
<br><br>
Your Obsidian Collar activates.
<br><br>
The tablet slips from your hands and strikes the obsidian floor. The red light is the last thing you see before the chamber falls silent.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[CONTINUE->SpareOrKillDeathTimeOut]]
</div>
</div>
</div>
(set: $trialSpareOrKillUnlocked to true)
(set: $alive to false)
<div class="cw-scene">
<div class="cw-submenu-title">EXPERIMENT TERMINATED</div>
<br><br>
The tablet turns completely black.
<br><br>
You chose **KILL**.
<br>
$splitOpponent chose **KILL**.
<br><br>
Neither of you moves.
<br><br>
Both Obsidian Collars begin to glow.
<br><br>
*Beep.*
<br><br>
You look across the platform.
<br>
Your opponent looks back at you.
<br><br>
Neither of you speaks.
<br><br>
*Beep.*
<br><br>
The light around the collars grows brighter.
<br>
You finally understand what your decision means.
<br><br>
Shiro's voice echoes through the dungeon.
<br><br>
"Both prisoners chose KILL. Neither shall be rewarded."
<br><br>
A final beep cuts through the silence.
<br><br>
**BEEP.**
<br><br>
(if: $splitOpponent is "Morgrim" and not $morgrimSkeleton)[
<p>Morgrim collapses as his collar flashes.</p>
<p>His skin disappears, leaving a skeletal body behind. His eyes ignite with an unnatural glow.</p>
<p>For a moment, he lies motionless. Then his eyes open, and he rises again.</p>
<p>He survived the punishment. Morgrim is a Hyssor wizard, and death is not so simple for someone like him.</p>
<p>His dry, rusty voice reaches you through the darkness.</p>
<p>"I will not forget this, $name. You shall pay."</p>
(set: $morgrimSkeleton to true)
(set: $morgrimAlive to true)
(set: $morgrimHates to true)
]
(else-if: $splitOpponent is "Morgrim" and $morgrimSkeleton)[
<p>Morgrim's eyes narrow as the collar's light intensifies.</p>
<p>For the first time, even his unnatural magic seems unable to save him.</p>
<p>He looks at you, his skeletal face impossible to read.</p>
<p>"So... this is where it ends."</p>
<p>His glowing eyes dim. This time, Morgrim does not rise again.</p>
(set: $morgrimAlive to false)
(set: $morgrimHates to true)
]
(else-if: $splitOpponent is "Elysa")[
<p>Elysa looks at you with disbelief. Even now, she seems to be searching for some reason to trust you.</p>
<p>"I still thought... someone would choose mercy."</p>
<p>Her voice fades as the collar's light goes out. The hope in her eyes disappears with it.</p>
(set: $elysaAlive to false)
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur clenches his jaw and meets your gaze. He doesn't beg.</p>
<p>"Hnh. Should've seen that coming."</p>
<p>He looks away, his voice turning quiet.</p>
<p>"Don't let this place turn you into what he is."</p>
<p>His collar flashes one final time. Then he falls silent.</p>
(set: $bahrmurAlive to false)
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie's usual mischievous grin finally disappears.</p>
<p>"Well... guess this prank wasn't so funny after all."</p>
<p>She tries to laugh, but the sound doesn't last.</p>
<p>"Don't look so pleased. You're still trapped here too."</p>
<p>Her collar flashes, and her wings fall still.</p>
(set: $trixieAlive to false)
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei's wings fold around her as the light grows brighter.</p>
<p>She looks at you without hatred, only sorrow.</p>
<p>"May there still be light in you, even if you have chosen darkness."</p>
<p>Her wings slowly fall still. The glow around her fades.</p>
(set: $lyraeiAlive to false)
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor stands completely still. For once, the ancient mummy speaks.</p>
<p>"So much machinery. So much power. And not a trace of wisdom."</p>
<p>He turns his head towards you.</p>
<p>"One day, someone will understand what you failed to."</p>
<p>The collar flashes. Akatamor falls silent, and the chamber fills with darkness.</p>
(set: $akatamorAlive to false)
]
(else:)[
<p>Everything goes dark.</p>
<p>Your opponent's fate is sealed alongside yours.</p>
]
<br><br>
For a moment, the dungeon is completely silent.
<br><br>
Then Shiro speaks one last time.
<br><br>
"Experiment complete."
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->GameOver]]</div>
</div>
</div>
(set: $alive to false)
<div class="cw-scene">
<div class="cw-submenu-title">EXPERIMENT TERMINATED</div>
<br><br>
A familiar beeping begins.
<br><br>
*Beep.*
<br><br>
You grab the Obsidian Collar around your neck.
<br>
It tightens.
<br><br>
*Beep.*
<br><br>
You try to pull it away, but it doesn't move.
<br>
Your fingers struggle to find a way to loosen it.
<br><br>
Across the platform, $splitOpponent watches you.
<br>
They finally realize what is happening.
<br><br>
(if: $splitOpponent is "Elysa")[
(if: $elysaRep >= 3)[
<p>"No! Come on, you can still choose!"</p>
<p>Elysa rushes towards you, panic replacing the hope in her eyes.</p>
<p>"Please, don't let it end like this!"</p>
]
(else-if: $elysaRep <= -3)[
<p>Elysa stares at you in disbelief.</p>
<p>"After everything... you couldn't even make a choice."</p>
<p>She turns away, unable to watch what happens next.</p>
]
(else:)[
<p>"You're running out of time!" Elysa calls.</p>
<p>She takes a hesitant step towards you, but the collar's glow makes her stop.</p>
]
]
(else-if: $splitOpponent is "Bahrmur")[
(if: $bahrmurRep >= 3)[
<p>Bahrmur pulls against the restraints holding him back.</p>
<p>"Fight it! There has to be a way to stop that thing!"</p>
<p>For once, he sounds genuinely frightened for someone other than himself.</p>
]
(else-if: $bahrmurRep <= -3)[
<p>Bahrmur grimaces.</p>
<p>"You had one job. Make a choice."</p>
<p>He looks away, refusing to watch.</p>
]
(else:)[
<p>Bahrmur watches the collar tighten.</p>
<p>"Should've made your choice sooner."</p>
<p>He doesn't move any closer.</p>
]
]
(else-if: $splitOpponent is "Morgrim")[
(if: $morgrimRep >= 3)[
<p>Morgrim's eyes widen as he sees your collar activate.</p>
<p>"Don't you dare die before I get out of this place."</p>
<p>He pulls against his restraints, his voice sharper than usual.</p>
]
(else-if: $morgrimRep <= -3)[
<p>Morgrim watches you with a cold expression.</p>
<p>"Pathetic. You couldn't even decide how to meet your end."</p>
<p>He turns away, seemingly unconcerned.</p>
]
(else:)[
<p>Morgrim stares at you, his expression unreadable.</p>
<p>"Fifteen seconds. All you had to do was choose."</p>
<p>He watches in silence as the collar's glow intensifies.</p>
]
]
(else-if: $splitOpponent is "Trixie")[
(if: $trixieRep >= 3)[
<p>Trixie's grin disappears completely.</p>
<p>"Hey! This isn't funny! Do something!"</p>
<p>She struggles against her restraints, no longer pretending that everything is a joke.</p>
]
(else-if: $trixieRep <= -3)[
<p>Trixie folds her arms.</p>
<p>"Wow. You actually managed to bore the execution machine."</p>
<p>Her attempt at a joke sounds weaker than usual.</p>
]
(else:)[
<p>"Seriously? You're going to let the timer run out?" Trixie asks.</p>
<p>For once, she has no clever trick to offer.</p>
]
]
(else-if: $splitOpponent is "Lyraei")[
(if: $lyraeiRep >= 2)[
<p>Lyraei spreads her wings in alarm.</p>
<p>"No! Please, keep fighting!"</p>
<p>She struggles desperately against her restraints, trying to reach you.</p>
]
(else-if: $lyraeiRep <= -2)[
<p>Lyraei lowers her head sadly.</p>
<p>"I wish you had made a different choice."</p>
<p>She closes her eyes, unable to bear watching.</p>
]
(else:)[
<p>Lyraei looks at you with worry.</p>
<p>"You still have a moment! Please, choose!"</p>
<p>Her wings tremble as the collar's light grows brighter.</p>
]
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor watches you without making a sound.</p>
<p>You have never heard him speak. As far as you know, he cannot.</p>
<p>His ancient eyes follow the glow spreading across your collar.</p>
<p>He remains silent.</p>
]
(else:)[
<p>Your opponent watches in silence as the collar tightens.</p>
]
<br><br>
The next beep is louder.
<br><br>
You struggle to loosen the collar, but your fingers find nothing.
<br>
There is no time left.
<br><br>
**BEEP.**
<br><br>
Everything happens at once.
<br><br>
Your collar activates.
<br>
Your vision jolts.
<br>
For one brief moment, everything goes silent.
<br><br>
Then darkness.
<br><br>
The last thing you hear is Shiro's voice.
<br><br>
"Experiment complete."
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->GameOver]]</div>
</div>
</div>
(set: $trialSpareOrKillUnlocked to true)
<div class="cw-scene">
<div class="cw-submenu-title">OPPONENT ELIMINATED</div>
<br><br>
You chose **KILL**.
<br>
(print: $splitOpponent) chose **SPARE**.
<br><br>
The mechanical hand retracts into the ceiling. The tablet's green light vanishes, leaving only the cold glow of the runes carved into the platform.
<br><br>
(if: $splitOpponent is "Morgrim" and not $morgrimSkeleton)[
<p>Morgrim collapses as his collar releases a surge of dark magic.</p>
<p>His skin vanishes beneath a wave of sickly violet energy, leaving a skeletal frame behind. His eyes ignite with an unnatural crimson glow.</p>
<p>For a moment, he lies motionless. Then the runes around his body flare, and he rises again.</p>
<p>The other prisoners stare in disbelief. Morgrim has survived the punishment.</p>
<p>There is something you did not know about him: Morgrim is a Hyssor wizard, and death does not always claim those who command its secrets.</p>
<p>He turns his glowing eyes towards you.</p>
(if: $morgrimRep >= 3)[
<p>"I thought you had enough sense to know better."</p>
<p>His voice scrapes through the chamber like rusty iron.</p>
<p>"I spared you despite everything. Remember that when I decide what to do with you."</p>
]
(else-if: $morgrimRep <= -3)[
<p>"Predictable. Utterly, tediously predictable."</p>
<p>His skeletal fingers curl into fists.</p>
<p>"You have confirmed every suspicion I ever had about you. I will make certain you regret it."</p>
]
(else:)[
<p>"You chose to condemn me after I chose to spare you."</p>
<p>His eyes burn brighter.</p>
<p>"I shall remember this, (print: $name). You have made yourself my enemy."</p>
]
(set: $morgrimSkeleton to true)
(set: $morgrimAlive to true)
(set: $morgrimHates to true)
]
(else-if: $splitOpponent is "Morgrim" and $morgrimSkeleton)[
<p>Morgrim stands before you in his skeletal form. His crimson eyes narrow as the collar activates.</p>
<p>He recognises the magic. This time, however, even his knowledge of the forbidden arts offers no escape.</p>
<p>"You already had your chance to show mercy."</p>
<p>His voice is quiet now, stripped of its usual arrogance.</p>
<p>"I suppose I was a fool to expect anything else from you."</p>
<p>The light in his eyes fades. His bones strike the stone floor, and this time he does not rise again.</p>
(set: $morgrimAlive to false)
(set: $morgrimHates to true)
]
(else-if: $splitOpponent is "Elysa")[
<p>Elysa watches you in stunned silence.</p>
(if: $elysaRep >= 3)[
<p>"I trusted you."</p>
<p>Her voice breaks, and for a moment she seems unable to understand what you have done.</p>
<p>"I believed you could still choose the right thing. I believed that for a reason."</p>
]
(else-if: $elysaRep <= -3)[
<p>"I wanted to believe you could be better than this."</p>
<p>She lowers her gaze.</p>
<p>"Perhaps I was wrong to keep hoping."</p>
]
(else:)[
<p>"I gave you another chance."</p>
<p>She looks towards the sealed doors.</p>
<p>"I hope someone gives you one someday. Even if I cannot understand why you made this choice."</p>
]
<p>The collar flashes. Elysa falls silent, leaving her final words hanging in the chamber.</p>
(set: $elysaAlive to false)
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur studies you with the grim expression of a veteran who has watched too many comrades fall.</p>
(if: $bahrmurRep >= 3)[
<p>"I thought you had honour enough to know what my choice meant."</p>
<p>He holds your gaze.</p>
<p>"I spared you because I believed you could do better. That was my mistake."</p>
]
(else-if: $bahrmurRep <= -3)[
<p>"Aye. I should've known better than to expect honour from you."</p>
<p>He gives a bitter shake of his head.</p>
<p>"Remember this: choosing to survive doesn't mean you've won."</p>
]
(else:)[
<p>"So this is how you repay mercy."</p>
<p>He straightens his shoulders and refuses to look away.</p>
<p>"I won't beg. But I hope you remember this moment when the same choice is placed before you."</p>
]
<p>His collar flashes. Bahrmur says nothing more.</p>
(set: $bahrmurAlive to false)
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie attempts a grin, but it barely reaches her eyes.</p>
(if: $trixieRep >= 3)[
<p>"Come on. Tell me this is a trick."</p>
<p>She searches your face for the punchline.</p>
<p>"I thought we were friends. Or, well... getting there."</p>
]
(else-if: $trixieRep <= -3)[
<p>"You know, I was going to pull a really good prank on you later."</p>
<p>Her crooked smile fades.</p>
<p>"Guess I'll have to leave you wondering what it was."</p>
]
(else:)[
<p>"Well. That's awkward."</p>
<p>She glances at the collar around her neck.</p>
<p>"I spared you. You tried to kill me. Not exactly the sort of joke I can laugh off."</p>
]
<p>Her wings flutter once before falling still.</p>
(set: $trixieAlive to false)
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei looks at you with sadness rather than anger. Her wings tremble as the collar's magic gathers around her.</p>
(if: $lyraeiRep >= 3)[
<p>"I believed in you."</p>
<p>She draws her wings close to her body.</p>
<p>"I thought there was still light in you, even here. I am sorry I was wrong."</p>
]
(else-if: $lyraeiRep <= -3)[
<p>"Perhaps I should have expected this."</p>
<p>She raises her head, refusing to let fear decide her final words.</p>
<p>"Do not let this place decide who you become. You are still responsible for the choices you make."</p>
]
(else:)[
<p>"You were given a choice. I only wish you had seen another way."</p>
<p>Her voice remains steady, though her wings fold against her back.</p>
<p>"May there still be light in you, even if you have chosen darkness."</p>
]
<p>The collar flashes. Lyraei's wings fall still as the light fades.</p>
(set: $lyraeiAlive to false)
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor remains still as the collar begins to glow.</p>
<p>Then, in a rare moment, he speaks.</p>
(if: $akatamorRep >= 3)[
<p>You dont know how... but he speaks. You thought he was non-verbal.</p>
<p>"I offered you a future, and you answered with betrayal."</p>
<p>His ancient voice carries no anger. Somehow, that makes it worse.</p>
]
(else-if: $akatamorRep <= -3)[
<p>You dont know how... but he speaks. You thought he was non-verbal.</p>
<p>"I expected little from you. You have managed to disappoint me nonetheless."</p>
<p>He turns his bandaged face towards the ceiling.</p>
]
(else:)[
<p>ou dont know how... but he speaks. You thought he was non-verbal.</p>
<p>"So much machinery. So much power. And not a trace of wisdom."</p>
<p>His head turns slowly towards you.</p>
<p>"One day, someone will understand what you failed to."</p>
]
<p>The collar flashes. Akatamor falls silent.</p>
(set: $akatamorAlive to false)
]
(else-if: $splitOpponent is "Zul'kar")[
<p>Zul'kar's serpentine body coils against the platform as the collar's magic gathers.</p>
<p>He bares his fangs in a final, contemptuous smile.</p>
<p>"You mistake survival for victory, little mortal."</p>
<p>His eyes narrow.</p>
<p>"The dungeon will remember what you have done. So will those who remain."</p>
<p>The collar flashes, and his voice is silenced.</p>
(set: $zulkarAlive to false)
]
(else:)[
<p>The mechanical hand lowers towards (print: $splitOpponent).</p>
<p>The collar flashes, and the prisoner falls silent.</p>
]
<br><br>
The remaining prisoners do not speak. Some look away. Others watch you with expressions you cannot quite read.
<br><br>
Shiro's voice echoes through the chamber.
<br><br>
"Experiment complete."
<br><br>
You have survived the trial. A dark spell forms before you, its power gathering into a sphere of obsidian light.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
</div>
(set: $trialSpareOrKillUnlocked to true)
(set: $alive to false)
<div class="cw-scene">
<div class="cw-submenu-title">EXECUTION</div>
<br><br>
The runes beneath the platform flare with dark violet light.
<br><br>
(print: $splitOpponent) stands across from you, the spell Shiro rewarded them with gathering between their hands.
<br><br>
You recognise the magic. It is the same power the dungeon has been offering to those willing to kill.
<br><br>
(if: $splitOpponent is "Morgrim")[
<p>Morgrim studies you with his crimson eyes. The magic twists around his skeletal fingers, controlled and precise.</p>
(if: $morgrimRep >= 3)[
<p>"What a waste."</p>
<p>His voice is cold, but something beneath it sounds almost disappointed.</p>
<p>"I thought you might become something more than this."</p>
]
(else-if: $morgrimRep <= -3)[
<p>"At last, a conclusion to our little disagreement."</p>
<p>He raises the spell without hesitation.</p>
<p>"You were never worth the trouble."</p>
]
(else:)[
<p>"No clever escape? No desperate bargain?"</p>
<p>He tilts his skeletal head.</p>
<p>"How disappointing. I expected at least a little resistance."</p>
]
]
(else-if: $splitOpponent is "Elysa")[
<p>Elysa holds the spell unsteadily. For a moment, she looks as though she might lower her hands.</p>
(if: $elysaRep >= 3)[
<p>"I'm sorry, (print: $name). I really am."</p>
<p>"I wanted to believe there was still a way to save both of us."</p>
]
(else-if: $elysaRep <= -3)[
<p>"I gave you a chance to choose differently."</p>
<p>She closes her eyes for a brief moment.</p>
<p>"I won't let your choice become the end of mine."</p>
]
(else:)[
<p>"I wish things had been different."</p>
<p>She steadies her hands and looks directly at you.</p>
<p>"Goodbye."</p>
]
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur plants his feet firmly on the stone platform, holding the spell like a warrior preparing one final strike.</p>
(if: $bahrmurRep >= 3)[
<p>"You fought beside me, in your own way. I won't pretend that means nothing."</p>
<p>His jaw tightens.</p>
<p>"But I won't die here because I mistook you for an honourable soul."</p>
]
(else-if: $bahrmurRep <= -3)[
<p>"No honour. No hesitation. Just another cowardly choice."</p>
<p>He raises the spell.</p>
<p>"At least I'll face the end standing."</p>
]
(else:)[
<p>"I've faced worse odds than these."</p>
<p>He gives you a grim nod.</p>
<p>"Shame yours had to be the face I saw at the end."</p>
]
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie spins the spell between her fingers. Her usual grin is present, but it looks painfully forced.</p>
(if: $trixieRep >= 3)[
<p>"Hey, (print: $name). Remember all those times I annoyed you?"</p>
<p>She gives a tiny, nervous laugh.</p>
<p>"I was hoping I'd get to annoy you for a lot longer."</p>
]
(else-if: $trixieRep <= -3)[
<p>"Well, well. Looks like one of us finally gets the last laugh."</p>
<p>Her grin sharpens, hiding whatever she might actually be feeling.</p>
<p>"Try not to haunt me too much, okay?"</p>
]
(else:)[
<p>"I had a whole escape plan, you know."</p>
<p>She glances at the spell.</p>
<p>"It was a very good plan. Probably."</p>
<p>For once, she has no joke left to tell.</p>
]
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei's wings spread behind her, filling the chamber with a faint silver glow. The spell in her hands darkens the light around her.</p>
(if: $lyraeiRep >= 3)[
<p>"I spared you because I believed you could still choose another path."</p>
<p>Her expression softens.</p>
<p>"Please don't let this place take everything good from you."</p>
]
(else-if: $lyraeiRep <= -3)[
<p>"I know what you think of me."</p>
<p>She raises her head, refusing to look away.</p>
<p>"But I will not let your cruelty decide who I am."</p>
]
(else:)[
<p>"May the light find you, even here."</p>
<p>Her wings fold closer to her body.</p>
<p>"I wish you had chosen mercy."</p>
]
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor raises the spell with the patience of someone who has watched entire kingdoms rise and fall.</p>
(if: $akatamorRep >= 3)[
<p>He whrites something down on a paper: "You possessed the opportunity to become wiser."</p>
<p>His ancient eyes meet yours.</p>
<p>He whrites more: "I regret that I shall not live to see whether you learn."</p>
]
(else-if: $akatamorRep <= -3)[
<p>He whrites something down on a paper: "Your actions reveal more than your words ever could."</p>
<p>He raises the spell a little higher.</p>
<p>He whrites more: "Let this be the final lesson you refuse to learn."</p>
]
(else:)[
<p>He whrites something down on a paper "Every choice carries a consequence."</p>
<p>He doesn't speak.</p>
<p>He whrites some more down: "Now you shall meet yours."</p>
]
]
(else-if: $splitOpponent is "Zul'kar")[
<p>Zul'kar coils around the edge of the platform, his eyes gleaming with cruel satisfaction.</p>
<p>"You thought mercy would save you?"</p>
<p>He bares his fangs.</p>
<p>"How delightfully naive."</p>
]
(else:)[
<p>Your opponent studies you in silence, the spell's unstable light dancing across their face.</p>
<p>"You made your choice. Now face mine."</p>
]
<br><br>
You try to move, but your Obsidian Collar locks around your throat. The runes glow, binding you in place.
<br><br>
Shiro's voice fills the chamber.
<br><br>
"Trial successful."
<br><br>
The spell grows brighter.
<br><br>
For one fleeting moment, you see the entire chamber reflected in its dark surface: the platform, the watching prisoners, and the figure standing before you.
<br><br>
Then your opponent speaks one final time.
<br><br>
(if: $splitOpponent is "Morgrim")[
"No more experiments for you."
]
(else-if: $splitOpponent is "Elysa")[
"I'm sorry."
]
(else-if: $splitOpponent is "Bahrmur")[
"Stand tall, even at the end."
]
(else-if: $splitOpponent is "Trixie")[
"Guess this is where the joke ends."
]
(else-if: $splitOpponent is "Lyraei")[
"May there be light beyond this darkness."
]
(else-if: $splitOpponent is "Akatamor")[
"Let history judge us both."
]
(else:)[
"Goodbye."
]
<br><br>
The spell is released.
<br><br>
Everything goes dark.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->GameOver]]</div>
</div>
</div>(set: $trialSpareOrKillUnlocked to true)
(if: not $resultProcessed)[
(set: $resultProcessed to true)
(set: $splitResult to "")
(if: $playerChoice is "spare" and $npcChoice is "spare")[
(set: $splitResult to "bothSpare")
(set: $trialCount to $trialCount + 1)
]
(if: $playerChoice is "spare" and $npcChoice is "kill")[
(set: $splitResult to "playerSpareNpcKill")
(set: $alive to false)
]
(if: $playerChoice is "kill" and $npcChoice is "spare")[
(set: $splitResult to "playerKillNpcSpare")
(set: $spells to $spells + 1)
(set: $trialCount to $trialCount + 1)
]
(if: $playerChoice is "kill" and $npcChoice is "kill")[
(set: $splitResult to "bothKill")
(set: $alive to false)
]
]
(set: $splitOpponentRep to 0)
(if: $splitOpponent is "Elysa")[
(set: $splitOpponentRep to $elysaRep)
]
(else-if: $splitOpponent is "Bahrmur")[
(set: $splitOpponentRep to $bahrmurRep)
]
(else-if: $splitOpponent is "Morgrim")[
(set: $splitOpponentRep to $morgrimRep)
]
(else-if: $splitOpponent is "Trixie")[
(set: $splitOpponentRep to $trixieRep)
]
(else-if: $splitOpponent is "Zul'kar")[
(set: $splitOpponentRep to $zulkarRep)
]
(else-if: $splitOpponent is "Lyraei")[
(set: $splitOpponentRep to $lyraeiRep)
]
(else-if: $splitOpponent is "Akatamor")[
(set: $splitOpponentRep to $akatamorRep)
]
<div class="cw-scene">
<div class="cw-submenu-title">TRIAL RESULTS</div>
<br><br>
(if: $splitResult is "bothSpare")[
<p>The tablet glows emerald green. The runes etched into its surface pulse like a heartbeat.</p>
<p>You chose <b>SPARE</b>.</p>
<p>(print: $splitOpponent) chose <b>SPARE</b>.</p>
<p>For several seconds, neither of you moves. Then the magical restraints around the platform loosen with a metallic groan.</p>
(if: $splitOpponentRep >= 3)[
<p>(print: $splitOpponent) looks at you with the familiarity of someone who has begun to consider you an ally.</p>
<p>"We made it through together. Perhaps that's what a real party is supposed to do."</p>
<p>Their expression softens. Whatever happens next, this moment has strengthened the bond between you.</p>
]
(else-if: $splitOpponentRep <= -3)[
<p>(print: $splitOpponent) studies you cautiously, still uncertain whether your cooperation means anything beyond survival.</p>
<p>"We survived the same trial. Don't mistake that for trust."</p>
<p>They turn towards the exit. You have earned a chance to prove yourself, but not their loyalty.</p>
]
(else:)[
<p>(print: $splitOpponent) gives you a small, thoughtful nod.</p>
<p>"At least we can agree on one thing: neither of us needs another enemy right now."</p>
<p>The two of you have survived together. Whether that becomes the beginning of an alliance remains to be seen.</p>
]
(if: $splitOpponent is "Elysa")[
<p>Elysa lets out a relieved laugh.</p>
<p>"Maybe we haven't lost ourselves yet. I would rather face the next trial with someone who can still choose mercy."</p>
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur gives the tablet a final, suspicious glance.</p>
<p>"A victory without bloodshed. Don't get used to easy fights, though. The next enemy might not offer us a choice."</p>
]
(else-if: $splitOpponent is "Morgrim")[
(if: $morgrimSkeleton is true)[
<p>Morgrim's crimson eyes narrow.</p>
<p>"Well. Nobody died. A refreshing change of pace for this wretched dungeon."</p>
<p>He folds his skeletal arms. "Don't mistake this for a friendship pact."</p>
]
(else:)[
<p>Morgrim crosses his arms.</p>
<p>"A sensible outcome. I shall attempt to contain my astonishment."</p>
<p>A faint violet rune flickers between his fingers before disappearing.</p>
]
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie spins in the air, scattering golden sparks.</p>
<p>"We both pressed SPARE! Look at us, cooperating like a responsible adventuring party."</p>
<p>She pauses. "I'm calling our party something embarrassing if we survive this."</p>
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei's wings relax.</p>
<p>"We were both given the power to end another life. I'm grateful we chose to give each other another chance."</p>
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor watches the green runes fade.</p>
<p>"Two souls refused to become executioners when the opportunity was placed before them."</p>
<p>He turns away. "Whether that makes them wise remains to be seen."</p>
]
<p>Shiro's voice echoes through the chamber.</p>
<p>"How touching. Two prisoners have mistaken survival for solidarity."</p>
<p>The platform descends, carrying you away from the trial. For now, you have survived.</p>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
]
(else-if: $splitResult is "playerSpareNpcKill")[
<p>The tablet flashes crimson. A harsh magical pulse travels through the platform.</p>
<p>You chose <b>SPARE</b>.</p>
<p>(print: $splitOpponent) chose <b>KILL</b>.</p>
<p>You offered (print: $splitOpponent) mercy. They chose their own survival over yours.</p>
(if: $splitOpponentRep >= 3)[
<p>The look on (print: $splitOpponent)'s face is one of immediate regret. Whatever trust existed between you has made this choice harder.</p>
<p>"I knew you were trying to be better than this place," they say quietly. "And I still chose myself."</p>
]
(else-if: $splitOpponentRep <= -3)[
<p>(print: $splitOpponent) looks away, unable to meet your eyes.</p>
<p>"You never trusted me. I never trusted you. Perhaps this was always how it would end."</p>
<p>The words sound like an excuse, even to the person who speaks them.</p>
]
(else:)[
<p>(print: $splitOpponent) hesitates as the red runes begin to glow.</p>
<p>"I wanted to believe there was another way. But when the choice came, I was afraid."</p>
<p>They fall silent. Fear may explain the decision, but it cannot undo it.</p>
]
(if: $splitOpponent is "Elysa")[
<p>Elysa's hands tremble.</p>
<p>"I'm sorry. I couldn't bring myself to risk my life."</p>
<p>She looks at you, her expression stricken. "You gave me a chance, and I turned it against you."</p>
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur clenches his jaw.</p>
<p>"A warrior can talk about honour all day. When death is staring him in the face, he finds out what he really believes."</p>
<p>He looks away. "I chose to survive. That doesn't mean I can be proud of it."</p>
]
(else-if: $splitOpponent is "Morgrim")[
<p>Morgrim's expression hardens.</p>
<p>"You chose mercy. I chose survival. A philosopher could spend a century debating which of us was the greater fool."</p>
<p>He turns away. "I shall not be volunteering for that debate."</p>
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie's grin looks painfully forced.</p>
<p>"Oh. You actually spared me."</p>
<p>Her wings flutter unevenly. "I guess I should say thank you. Just... don't expect me to feel good about what I did."</p>
]
(else-if: $splitOpponent is "Lyraei")[
(set: $lyraeiAlive to false)
<p>Lyraei looks at you, horrified by her own decision.</p>
<p>"You gave me another chance, and I chose my own life over yours."</p>
<p>She closes her eyes. "I'm an aasimar. I was supposed to protect others. What will Kuro think of me?"</p>
<p>She turns desperately towards Shiro.</p>
<p>"Please! Let me take it back. Let me spare (print: $name)!"</p>
<p>Shiro's expression darkens.</p>
<p>"Never speak that name in my domain."</p>
<p>Lyraei refuses to lower her gaze.</p>
<p>"I would rather face the consequences than pretend I feel no remorse."</p>
<p>Shiro's voice becomes dangerously quiet.</p>
<p>"Then face them."</p>
<p>Dark magic engulfs Lyraei. Her wings fold as the light around her fades, and she collapses onto the platform.</p>
<p>Shiro removes her Obsidian Collar and crushes it in his hand.</p>
<p>"Moving on."</p>
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor remains silent.</p>
<p>He studies the red tablet, then turns his bandaged face towards you.</p>
<p>"You offered mercy to a soul that did not return it. Remember the difference between compassion and wisdom."</p>
]
<p>The mechanical hand retracts into the ceiling. Your Obsidian Collar begins to glow.</p>
<p>Shiro's voice echoes through the chamber.</p>
<p>"Mercy has a price. You have learned yours."</p>
<p>The collar's magic overwhelms you. Your final thought is that your decision did not save you.</p>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->SpareOrKillPlayerDeath]]</div>
</div>
]
(else-if: $splitResult is "playerKillNpcSpare")[
<p>The tablet flashes emerald green.</p>
<p>You chose <b>KILL</b>.</p>
<p>(print: $splitOpponent) chose <b>SPARE</b>.</p>
<p>You condemned (print: $splitOpponent). They chose to give you another chance.</p>
(if: $splitOpponentRep >= 3)[
<p>(print: $splitOpponent) looks at you with the wounded disbelief of a trusted companion betrayed.</p>
<p>"I thought there was still a place for you beside us. I chose to spare you because I believed you could choose differently."</p>
<p>Their expression hardens. "I will remember what you did, even if you refuse to remember what I did for you."</p>
]
(else-if: $splitOpponentRep <= -3)[
<p>(print: $splitOpponent) regards you with grim resignation.</p>
<p>"I never expected you to show me mercy. I chose to spare you anyway."</p>
<p>They turn away. "Perhaps that was foolish. But at least one of us did not surrender to the dungeon."</p>
]
(else:)[
<p>(print: $splitOpponent) looks at you with quiet disappointment.</p>
<p>"I don't know what made you choose this. Fear? Anger? The belief that you had no other option?"</p>
<p>They shake their head. "Whatever the reason, you still had a choice."</p>
]
(if: $splitOpponent is "Elysa")[
<p>Elysa takes a shaky breath.</p>
<p>"I spared you because I thought you deserved another chance."</p>
<p>Her voice grows quieter. "I hope you remember that when you think about the kind of person you want to become."</p>
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur looks at you with the grim disappointment of a veteran who has lost a comrade.</p>
<p>"I decided not to take your life. You decided to take mine."</p>
<p>He gives a slow nod. "There's a difference between us. I hope you understand it someday."</p>
]
(else-if: $splitOpponent is "Morgrim")[
(if: $morgrimSkeleton is true)[
<p>Morgrim's crimson eyes burn with anger.</p>
<p>"Even now, I chose to spare you."</p>
<p>His skeletal hands curl into fists. "That may be the last mistake I ever make."</p>
]
(else:)[
<p>Morgrim studies you with open contempt.</p>
<p>"I spared you, and you repay me with this. How profoundly disappointing."</p>
<p>He turns away. "I had mistaken you for someone capable of reason. I shall endeavour not to make that error again."</p>
]
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie's wings droop. For once, she has no clever comeback.</p>
<p>"I spared you. I actually thought you might do the same for me."</p>
<p>She looks down at the platform. "I'm going to have a really hard time making a joke out of this."</p>
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei's wings fold close to her body.</p>
<p>"I gave you the chance to live."</p>
<p>She raises her head. "I will not pretend your choice was just. But I will not let it decide what kind of person I become."</p>
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor watches you without moving.</p>
<p>"I offered you a future. You attempted to take mine."</p>
<p>He lowers his head. "There are debts that gold cannot settle, and choices that no spell can reverse."</p>
]
<p>The mechanical hand retracts into the ceiling.</p>
<p>A dark spell gathers before you, its energy flowing into your hands. You have been rewarded for your choice.</p>
<p>Across the platform, the collar around (print: $splitOpponent)'s neck begins to glow.</p>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->SpareOrKillOpponentDeath]]</div>
</div>
]
(else-if: $splitResult is "bothKill")[
<p>The tablet turns black. Its runes vanish, leaving a smooth, lightless surface.</p>
<p>You chose <b>KILL</b>.</p>
<p>(print: $splitOpponent) chose <b>KILL</b>.</p>
<p>Neither of you is rewarded.</p>
(if: $splitOpponentRep >= 3)[
<p>(print: $splitOpponent) looks at you with bitter recognition.</p>
<p>"I thought you were someone I could trust. And you thought I was someone you had to destroy."</p>
<p>They shake their head. "Perhaps neither of us understood the other as well as we believed."</p>
]
(else-if: $splitOpponentRep <= -3)[
<p>(print: $splitOpponent) gives you a cold, knowing look.</p>
<p>"There was never any trust between us. Only two frightened prisoners waiting for the other to make the first move."</p>
<p>They glance at the black tablet. "Shiro could hardly have designed a better lesson."</p>
]
(else:)[
<p>(print: $splitOpponent) studies the dark tablet.</p>
<p>"We both had a chance to choose differently."</p>
<p>They look at you. "Fear may have brought us here, but it did not press that button for us."</p>
]
(if: $splitOpponent is "Elysa")[
<p>Elysa's expression falls.</p>
<p>"I kept hoping one of us would choose differently."</p>
<p>She straightens her shoulders. "I suppose this place has taken more from us than we realised."</p>
]
(else-if: $splitOpponent is "Bahrmur")[
<p>Bahrmur gives a bitter shake of his head.</p>
<p>"Two fighters, neither willing to lower their weapon."</p>
<p>He looks towards the sealed doors. "Shiro has taught us exactly what he wanted: to treat every other soul as an enemy."</p>
]
(else-if: $splitOpponent is "Morgrim")[
<p>Morgrim holds your gaze without flinching.</p>
<p>"So we have both decided to be fools."</p>
<p>He folds his arms. "At least we can face the consequences of our own decisions. I suspect Shiro will find that amusing."</p>
]
(else-if: $splitOpponent is "Trixie")[
<p>Trixie's grin has vanished.</p>
<p>"Well... that's a terrible ending to a terrible joke."</p>
<p>She glances at the collars. "I really thought one of us would chicken out."</p>
]
(else-if: $splitOpponent is "Lyraei")[
<p>Lyraei folds her wings close to her body.</p>
<p>"We were both given a choice. We both chose fear over hope."</p>
<p>She looks at you sadly. "I wish we had been stronger."</p>
]
(else-if: $splitOpponent is "Akatamor")[
<p>Akatamor looks from the black tablet to you.</p>
<p>"Two souls, each convinced that the other must fall."</p>
<p>He lowers his head. "A familiar tragedy. And yet, people continue to mistake it for strength."</p>
]
<p>Both Obsidian Collars begin to glow.</p>
<p>Shiro's voice echoes through the chamber.</p>
<p>"Both prisoners chose KILL. Neither shall be rewarded."</p>
<p>The magic around the collars intensifies. The mechanical hand withdraws into the ceiling, leaving the two of you to face the consequences of your choices.</p>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->SpareOrKillDeath]]</div>
</div>
]
(else:)[
<p class="cw-error">The trial result could not be determined.</p>
<p>Player choice: (print: $playerChoice)</p>
<p>Opponent: (print: $splitOpponent)</p>
<p>Opponent choice: (print: $npcChoice)</p>
]
</div>
<script>changeTrack(9);</script>\
<div class="cw-scene">
<div class="cw-submenu-title">SPARE OR KILL</div>
<br>
Shiro's voice echoes through the dungeon.
<br><br>
"Two prisoners. One decision each."
<br><br>
A low mechanical rumble rolls through the floor.
<br>
A circular platform of black obsidian rises from the ground, carrying you away from the surrounding corridors.
<br><br>
The platform stops beneath a cold white light. You are pushed toward its centre as another prisoner is brought onto the opposite side.
<br><br>
A mechanical hand descends from the ceiling, holding a small black tablet. It lowers the device into your hands before retracting into the darkness.
<br><br>
The tablet flickers to life.
<br>
Two words appear on its screen:
<br><br>
**SPARE**
<br>
**KILL**
<br><br>
Shiro speaks again.
<br><br>
"If you both choose Kill, you both die."
<br><br>
"If you both choose Spare, nobody dies. You will both move on."
<br><br>
"If one of you chooses Kill while the other chooses Spare, the innocent little brat dies, and the killer receives a spell."
<br><br>
The words remain on the screen, glowing faintly.
<br><br>
"Fifteen seconds," Shiro announces. "Choose carefully."
<br><br>
The platform shudders beneath your feet. Across from you, your opponent watches you, trying to work out what you will do.
<br><br>
<div class="cw-menu-divider"></div>
{
(set: $resultProcessed to false)
(set: $choiceResolutionApplied to false)
(set: $playerChoice to "")
(set: $npcChoice to "")
(set: $splitResult to "")
(set: $splitOpponent to "")
(set: $availableCount to 0)
(set: $opponentIndex to 0)
(set: $opponentPosition to 0)
(set: $npcKillChance to 0)
(set: $npcRoll to 0)
(if: $elysaAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $bahrmurAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $morgrimAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $trixieAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $lyraeiAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $akatamorAlive)[
(set: $availableCount to $availableCount + 1)
]
(if: $availableCount > 0)[
(set: $opponentIndex to (random: 1, $availableCount))
(if: $elysaAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Elysa")
]
]
(if: $bahrmurAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Bahrmur")
]
]
(if: $morgrimAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Morgrim")
]
]
(if: $trixieAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Trixie")
]
]
(if: $lyraeiAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Lyraei")
]
]
(if: $akatamorAlive)[
(set: $opponentPosition to $opponentPosition + 1)
(if: $opponentPosition is $opponentIndex)[
(set: $splitOpponent to "Akatamor")
]
]
<!-- BASE KILL CHANCE: PERSONALITY -->
(if: $splitOpponent is "Elysa")[
(set: $npcKillChance to 10)
]
(else-if: $splitOpponent is "Bahrmur")[
(set: $npcKillChance to 20)
]
(else-if: $splitOpponent is "Morgrim")[
(set: $npcKillChance to 15)
]
(else-if: $splitOpponent is "Trixie")[
(set: $npcKillChance to 75)
]
(else-if: $splitOpponent is "Lyraei")[
(set: $npcKillChance to 1)
]
(else-if: $splitOpponent is "Akatamor")[
(set: $npcKillChance to 50)
]
<!-- REPUTATION: POSITIVE AND NEGATIVE -->
(if: $reputation >= 3)[
(set: $npcKillChance to $npcKillChance - 15)
]
(else-if: $reputation >= 1)[
(set: $npcKillChance to $npcKillChance - 8)
]
(else-if: $reputation <= -3)[
(set: $npcKillChance to $npcKillChance + 15)
]
(else-if: $reputation <= -1)[
(set: $npcKillChance to $npcKillChance + 8)
]
<!-- INDIVIDUAL PERSONALITY REACTIONS -->
(if: $splitOpponent is "Elysa")[
(if: $reputation < 0)[
(set: $npcKillChance to $npcKillChance + 5)
]
]
(else-if: $splitOpponent is "Bahrmur")[
(if: $reputation <= -3)[
(set: $npcKillChance to $npcKillChance + 10)
]
]
(else-if: $splitOpponent is "Morgrim")[
(if: $reputation >= 3)[
(set: $npcKillChance to $npcKillChance - 5)
]
]
(else-if: $splitOpponent is "Trixie")[
(if: $reputation >= 3)[
(set: $npcKillChance to $npcKillChance - 5)
]
(if: $reputation <= -3)[
(set: $npcKillChance to $npcKillChance + 5)
]
]
(else-if: $splitOpponent is "Lyraei")[
(if: $reputation < 0)[
(set: $npcKillChance to $npcKillChance + 2)
]
]
(else-if: $splitOpponent is "Akatamor")[
(if: $reputation >= 3)[
(set: $npcKillChance to $npcKillChance - 10)
]
(if: $reputation <= -3)[
(set: $npcKillChance to $npcKillChance + 10)
]
]
<!-- KEEP CHANCE BETWEEN 0 AND 100 -->
(if: $npcKillChance < 0)[
(set: $npcKillChance to 0)
]
(if: $npcKillChance > 100)[
(set: $npcKillChance to 100)
]
<!-- ROLL AFTER ALL MODIFIERS -->
(set: $npcRoll to (random: 1, 100))
(if: $npcRoll <= $npcKillChance)[
(set: $npcChoice to "kill")
]
(else:)[
(set: $npcChoice to "spare")
]
]
}
(if: $splitOpponent is "Elysa")[
Elysa stands across from you, her pale-blonde hair catching the harsh light. Her green eyes keep darting between you and the tablet.
<br><br>
"I really don't want this to end with either of us dead," she says quietly. "Please don't make me regret trusting you."
]
(if: $splitOpponent is "Bahrmur")[
Bahrmur plants his boots firmly on the obsidian. The dwarf's thick brown beard shifts as he studies you with a stern expression.
<br><br>
"Don't expect me to go easy on you," he mutters. After a pause, he adds, "But I won't kill someone for no reason."
]
(if: $splitOpponent is "Morgrim")[
Morgrim stands opposite you in long, dark robes.
The wizard studies the tablet as though it were an interesting experiment rather than a threat to both your lives.
<br><br>
"This is a test of judgement," he says. "Or perhaps a test of fear. Either way, there is more than one way to fail."
]
(if: $splitOpponent is "Trixie")[
Trixie flutters above the platform, her delicate wings shimmering in the cold light. She looks far too amused for someone trapped in a deadly trial.
<br><br>
"Oh, this is going to be interesting," she says with a small grin. "Let's see what you do."
]
(if: $splitOpponent is "Lyraei")[
Lyraei gently descends onto the platform, folding her large feathered wings close to her body. Her expression is filled with concern.
<br><br>
"I don't want either of us to die," she says. "I hope you feel the same way."
]
(if: $splitOpponent is "Akatamor")[
Akatamor slowly walks onto the platform, his aged bandages rustling with every step. The mummy says nothing as he looks at the tablet, then at you.
<br><br>
His silence makes it difficult to tell what he is thinking.
]
(if: $availableCount > 0)[
<br><br>
Shiro's voice cuts through the silence.
<br><br>
"Your opponent is **$splitOpponent**. You both have fifteen seconds. No discussion. No second chances."
<br><br>
A countdown appears on the tablet.
<br>
**15 seconds.**
<br><br>
The screen waits for your decision.
<br><br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[MAKE A CHOICE->Make a choice]]</div>
</div>
]
(else:)[
<br><br>
The platform remains empty.
<br><br>
Shiro's voice echoes through the chamber.
<br><br>
"No eligible opponents remain."
<br><br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
]
</div>
(set: $name to "")
(set: $race to "")
(set: $achievements to (a:))
(set: $loadingDestination to "")
(set: $npcChoice to "")
(set: $playerChoice to "")
(set: $splitOpponent to "")
(set: $splitResult to "")
(set: $choiceTime to 15)
(set: $talkedToBahrmur to false)
(set: $lobbyInspected to false)
(set: $collarInspected to false)
(set: $choiceResolutionApplied to false)
(set: $resultProcessed to false)
(set: $lobbyIntroSeen to false)
(set: $dungeonIntroSeen to false)
(set: $spells to 0)
(set: $trialCount to 0)
(set: $alive to true)
(set: $hasCollar to true)
(set: $currentTrial to "")
(set: $reputation to 0)
(set: $elysaRep to 0)
(set: $bahrmurRep to 0)
(set: $morgrimRep to 0)
(set: $trixieRep to 0)
(set: $zulkarRep to 0)
(set: $lyraeiRep to 0)
(set: $akatamorRep to 0)
(set: $elysaAlive to true)
(set: $bahrmurAlive to true)
(set: $morgrimAlive to true)
(set: $morgrimSkeleton to false)
(set: $morgrimHates to false)
(set: $trixieAlive to true)
(set: $zulkarAlive to true)
(set: $lyraeiAlive to true)
(set: $akatamorAlive to true)
(set: $rewardedTrials to 0)
(set: $survivalStreak to 0)
(set: $killCount to 0)
(set: $achievementTitle to "")
(set: $achievementDescription to "")
(set: $achievementPopup to false)
(set: $unlockedAchievementCount to 0)
(set: $ubiAlive to true)
(set: $maxAlive to true)
(set: $okkiAlive to true)
(set: $jordAlive to true)
(set: $ubiRep to 0)
(set: $maxRep to 0)
(set: $okkiRep to 0)
(set: $jordRep to 0)
(set: $murderer to "")
(set: $murdererIsPlayer to false)
(set: $murdererGlobalRepApplied to false)
(set: $murdererResolved to false)
(set: $murdererOutcomeProcessed to false)
(set: $murdererIntroductionsSeen to false)
(set: $murdererCandidates to (a:))
(set: $murdererSearchCount to 0)
(set: $murdererPlayerLocation to "Entrance")
(set: $murdererNPCFound to false)
(set: $murdererOutcome to "")
(set: $murdererTarget to "")
(set: $murdererClue to "")
(set: $murdererTrialStarted to false)
(set: $murdererTrust to 0)
(set: $murdererEscapeChance to 50)
(set: $murdererHideRoll to 0)
(set: $murdererEncounterRoll to 0)
(set: $murdererHideChance to 50)
(set: $murdererRoll to 0)
(set: $massacreTargets to (a:))
(set: $massacreVictims to (a:))
(set: $massacreSelectionDone to false)
(set: $massacreCandidates to (a:))
(set: $massacreVictims to (a:))
(set: $spareOrKillPlayed to false)
(set: $murdererPlayed to false)
(set: $massacrePlayed to false)
(set: $duelPlayed to false)
{
(enchant: ?page, (collapse:))
<div class="lightning-flash"></div>
<div class="mist mist1"></div>
<div class="mist mist2"></div>
<div class="mist mist3"></div>
<div class="purple-cracks"></div>
<div class="ambient-particles"></div>
(if: (passage:)'s tags does not contain "no-autosave")[
(save-game: "ConwunbaAutosave", (passage:)'s name)
]
}
<div class="cw-scene">
<div class="cw-submenu-title">A WORD WITH BAHRMUR</div>
<br>
You approach one of the prisoners sitting against the wall.
<br><br>
The prisoner is a dwarf.
<br>
He looks up as you approach, his eyes briefly meeting yours before drifting toward the black collar around your neck.
<br><br>
"You still think you're getting out."
<br><br>
You remain silent.
<br><br>
The dwarf gives a quiet, humourless laugh.
<br><br>
"Everyone thinks that."
<br><br>
You glance toward the enormous doors.
<br><br>
"What is this place?"
<br><br>
The dwarf looks around the chamber before answering.
<br><br>
"The Obsidian Dungeons."
<br><br>
He lowers his voice.
<br><br>
"I don't know why Shiro brought you here."
<br>
"Nobody does."
<br><br>
You look at the name engraved on his collar.
<br><br>
**Bahrmur.**
<br><br>
He notices you reading it, but doesn't comment.
<br>
Instead, he looks toward the main doors.
<br><br>
"But eventually, the doors open."
<br><br>
You turn back to him.
<br><br>
"And what happens after they open?"
<br><br>
Bahrmur's expression changes.
<br>
The faint amusement disappears from his face.
<br><br>
He stares at the floor for a moment.
<br><br>
"You find out what kind of person you really are, $name."
<br><br>
Silence settles between you.
<br>
You search his face for an explanation, but he offers none.
<br><br>
Eventually, Bahrmur looks away.
<br><br>
"I'd better get ready."
<br><br>
He makes it clear that the conversation is over.
<br>
Whatever he knows, he isn't going to tell you yet.
<br><br>
(if: not $talkedToBahrmur)[
(set: $talkedToBahrmur to true)
(set: $bahrmurRep to $bahrmurRep + 1)
]
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
</div>
(set: $availableTrials to (a:))
(if: $spareOrKillPlayed is false)[
(set: $availableTrials to $availableTrials + (a: "SpareOrKill"))
]
(if: $murdererPlayed is false)[
(set: $availableTrials to $availableTrials + (a: "MurdererStart"))
]
(if: $massacrePlayed is false)[
(set: $availableTrials to $availableTrials + (a: "Massacre"))
]
(if: $duelPlayed is false)[
(set: $availableTrials to $availableTrials + (a: "DuelIntroduction"))
]
(if: $availableTrials's length > 0)[
(set: $trialIndex to (random: 1, $availableTrials's length))
(set: $currentTrial to (nth: $trialIndex, ...$availableTrials))
(set: $loadingDestination to $currentTrial)
(go-to: "LoadingScreen2")
]
(else:)[
(go-to: "AllTrialsCompleted")
]
<script>changeTrack(1);</script>\
<div class="cw-menu">
<div class="cw-menu-atmosphere"></div>
<div class="cw-menu-wall cw-wall-left"></div>
<div class="cw-menu-wall cw-wall-right"></div>
<div class="cw-menu-mist cw-mist-back"></div>
<div class="cw-menu-mist cw-mist-front"></div>
<div class="cw-menu-content">
<div class="cw-menu-header">
<div class="cw-emblem" aria-hidden="true">
<div class="cw-emblem-ring cw-ring-outer"></div>
<div class="cw-emblem-ring cw-ring-inner"></div>
<div class="cw-emblem-crystal"></div>
<div class="cw-emblem-mark">☠</div>
<div class="cw-emblem-star">✦</div>
</div>
<div class="cw-menu-kicker">A CONWUNBA EXPERIENCE</div>
<div class="cw-menu-title">OBSIDIAN<span>DUNGEONS</span></div>
<div class="cw-menu-subtitle">THE SKULL IS WATCHING.</div>
<div class="cw-menu-divider"></div>
</div>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-play">[[PLAY->PlayIntro]]</div>
<div class="cw-menu-button cw-trials">[[UNLOCKED TRIALS->UnlockedTrials]]</div>
<div class="cw-menu-button cw-achievements">[[ACHIEVEMENTS->Achievements]]</div>
<div class="cw-menu-button cw-handbook">[[HANDBOOK->Handbook]]</div>
<div class="cw-menu-button cw-statistics">[[STATISTICS->Statistics]]</div>
<div class="cw-menu-button cw-characters">[[CHARACTERS->CharacterDataBase]]</div>
<div class="cw-menu-button cw-timeline">[[TIMELINE->Timeline]]</div>
<div class="cw-menu-button cw-settings">[[SETTINGS->Settings]]</div>
<div class="cw-menu-button cw-credits">[[CREDITS->Credits]]</div>
<div class="cw-menu-button cw-quit">[[QUIT->QuitScreen]]</div>
</div>
<div class="cw-menu-footer">CONWUNBA • SECRETS SHADOWS SOULS</div>
</div>
</div>
<style>
.cw-menu,.cw-menu *,.cw-submenu,.cw-submenu *{box-sizing:border-box}
.cw-menu{position:relative;isolation:isolate;width:100vw;min-height:100vh;margin-left:calc(50% - 50vw);padding:35px 18px 24px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;color:#eadfff;text-align:center;background:radial-gradient(ellipse at 50% 28%,rgba(95,36,145,.34),transparent 45%),radial-gradient(ellipse at 15% 85%,rgba(28,100,69,.15),transparent 35%),#05020a}
.cw-menu:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 20% 40%,rgba(175,90,255,.15),transparent 30%),radial-gradient(circle at 80% 65%,rgba(80,255,170,.09),transparent 28%);animation:cwFog 9s ease-in-out infinite alternate}
.cw-menu-kicker{font-size:10px;letter-spacing:.35em;color:#ad87d5}
.cw-emblem{position:relative;width:125px;height:125px;display:grid;place-items:center;margin:0 auto 4px;animation:cwFloat 4s ease-in-out infinite}
.cw-emblem:before{content:"";position:absolute;inset:9px;border:1px solid #a96bea;transform:rotate(45deg);box-shadow:0 0 20px #8b3cba;animation:cwSpin 18s linear infinite}
.cw-emblem:after{content:"";position:absolute;inset:21px;border:1px dashed #70e9a2;border-radius:50%;animation:cwReverse 14s linear infinite}
.cw-crystal{width:65px;height:90px;display:block;background:linear-gradient(135deg,#21172f,#79449b 38%,#0b0913 62%,#40876a);clip-path:polygon(50% 0,87% 23%,100% 68%,58% 100%,12% 80%,0 30%);filter:drop-shadow(0 0 14px #a44dff);animation:cwCrystal 3s ease-in-out infinite}
.cw-emblem-star{position:absolute;top:0;right:0;color:#91ffc0;font-size:24px;text-shadow:0 0 14px #55ff9b}
.cw-menu-title{font-size:clamp(32px,6vw,54px);font-weight:900;letter-spacing:.12em;line-height:1;color:#f4eaff;text-shadow:0 0 12px #9d50df,0 0 30px #6d3198;animation:cwGlow 4s ease-in-out infinite}
.cw-menu-title span{display:block;margin-top:8px;font-size:.58em;letter-spacing:.3em;color:#bd91f0}
.cw-menu-subtitle{font-size:10px;letter-spacing:.28em;color:#8de7b4;text-shadow:0 0 12px #55d990}
.cw-menu-divider{width:min(270px,75%);height:1px;background:linear-gradient(90deg,transparent,#b66af0,#72efac,#b66af0,transparent);box-shadow:0 0 12px #974ad5}
.cw-menu-buttons{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;width:100%;max-width:460px}
.cw-menu-button{min-width:0;border:1px solid rgba(170,113,222,.48);border-radius:4px;background:rgba(17,10,29,.9);transition:transform .2s,border-color .2s,background .2s,box-shadow .2s}
.cw-menu-button tw-link{display:block;padding:14px 8px;color:#e8d7ff!important;font-size:11px;font-weight:bold;letter-spacing:.12em;text-decoration:none!important;text-shadow:0 0 9px #a75ce6!important}
.cw-menu-button:hover{transform:translateY(-2px);border-color:#cb98ff;background:rgba(55,24,78,.96);box-shadow:0 0 18px #a85bed40}
.cw-menu-button.cw-primary{border-color:#65eaa2;background:linear-gradient(135deg,#173c2a,#100b1c);box-shadow:0 0 14px #4ce58e20}
.cw-menu-button.cw-primary tw-link{color:#9dffc4!important;text-shadow:0 0 12px #5effab80!important}
.cw-menu-button.cw-disabled{padding:14px 8px;color:#746383;font-size:10px;letter-spacing:.1em}
.cw-menu-button.cw-quit{grid-column:1/-1;border-color:#a62d45}
.cw-menu-button.cw-quit tw-link{color:#ff8293!important;text-shadow:0 0 10px #ff385266!important}
.cw-menu-footer{font-size:9px;letter-spacing:.2em;color:#776388}
.cw-submenu{width:100%;min-height:65vh;padding:40px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:radial-gradient(ellipse at 50% 20%,#47206455,transparent 60%),#08050f;color:#e7d8fa;text-align:center}
.cw-submenu-title{font-size:clamp(26px,5vw,42px);font-weight:bold;letter-spacing:.12em;color:#d4aeff;text-shadow:0 0 15px #a758ed90}
.cw-submenu-text{max-width:480px;color:#c8b8db;line-height:1.8;font-size:14px}
.cw-submenu tw-link{display:inline-block;margin-top:20px;padding:12px 22px;color:#9dffc4!important;border:1px solid #66ffad80;text-decoration:none!important}
@keyframes cwFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes cwSpin{to{transform:rotate(405deg)}}
@keyframes cwReverse{to{transform:rotate(-360deg)}}
@keyframes cwCrystal{0%,100%{filter:drop-shadow(0 0 9px #ae53ff66)}50%{filter:drop-shadow(0 0 22px #7effb788)}}
@keyframes cwGlow{0%,100%{text-shadow:0 0 9px #b966ff88,0 0 24px #7c2dbe44}50%{text-shadow:0 0 15px #b966ff,0 0 34px #7c2dbe88}}
@keyframes cwFog{from{transform:scale(1);opacity:.6}to{transform:scale(1.1);opacity:1}}
@media(max-width:480px){.cw-menu{padding:25px 12px}.cw-emblem{width:105px;height:105px}.cw-crystal{width:55px;height:76px}.cw-menu-buttons{grid-template-columns:1fr;max-width:340px}.cw-menu-button.cw-quit{grid-column:auto}}
</style> (set: $name to "")
(set: $race to "")
(set: $achievements to (a:))
(set: $loadingDestination to "")
(set: $npcChoice to "")
(set: $playerChoice to "")
(set: $splitOpponent to "")
(set: $splitResult to "")
(set: $choiceTime to 15)
(set: $talkedToBahrmur to false)
(set: $lobbyInspected to false)
(set: $collarInspected to false)
(set: $choiceResolutionApplied to false)
(set: $resultProcessed to false)
(set: $lobbyIntroSeen to false)
(set: $dungeonIntroSeen to false)
(set: $spells to 0)
(set: $trialCount to 0)
(set: $alive to true)
(set: $hasCollar to true)
(set: $currentTrial to "")
(set: $reputation to 0)
(set: $elysaRep to 0)
(set: $bahrmurRep to 0)
(set: $morgrimRep to 0)
(set: $trixieRep to 0)
(set: $zulkarRep to 0)
(set: $lyraeiRep to 0)
(set: $akatamorRep to 0)
(set: $elysaAlive to true)
(set: $bahrmurAlive to true)
(set: $morgrimAlive to true)
(set: $morgrimSkeleton to false)
(set: $morgrimHates to false)
(set: $trixieAlive to true)
(set: $zulkarAlive to true)
(set: $lyraeiAlive to true)
(set: $akatamorAlive to true)
(set: $rewardedTrials to 0)
(set: $survivalStreak to 0)
(set: $killCount to 0)
(set: $achOof to false)
(set: $achievementTitle to "")
(set: $achievementDescription to "")
(set: $achievementPopup to false)
(set: $unlockedAchievementCount to 0)
(set: $ubiAlive to true)
(set: $maxAlive to true)
(set: $okkiAlive to true)
(set: $jordAlive to true)
(set: $ubiRep to 0)
(set: $maxRep to 0)
(set: $okkiRep to 0)
(set: $jordRep to 0)
(set: $murderer to "")
(set: $murdererIsPlayer to false)
(set: $murdererGlobalRepApplied to false)
(set: $murdererResolved to false)
(set: $murdererOutcomeProcessed to false)
(set: $murdererIntroductionsSeen to false)
(set: $murdererCandidates to (a:))
(set: $murdererSearchCount to 0)
(set: $murdererPlayerLocation to "Entrance")
(set: $murdererNPCFound to false)
(set: $murdererOutcome to "")
(set: $murdererTarget to "")
(set: $murdererClue to "")
(set: $murdererTrialStarted to false)
(set: $murdererTrust to 0)
(set: $murdererEscapeChance to 50)
(set: $murdererHideRoll to 0)
(set: $murdererEncounterRoll to 0)
(set: $murdererHideChance to 50)
(set: $murdererRoll to 0)
(set: $massacreTargets to (a:))
(set: $massacreVictims to (a:))
(set: $spareOrKillPlayed to false)
(set: $murdererPlayed to false)
(set: $massacrePlayed to false)
(set: $duelPlayed to false)
(go-to: "CharacterCreation")<div class="cw-submenu">
<div class="cw-submenu-title">UNLOCKED TRIALS</div>
(if: $trialSpareOrKillUnlocked is true)[
<div class="cw-submenu-text">
<strong>SPARE OR KILL</strong><br>
The spare or kill trial has been recorded in your codex.
</div>
(if: $spareOrKillPlayed is true)[
<div class="cw-submenu-text">STATUS: ALREADY PLAYED</div>
]
(else:)[
<div class="cw-menu-button">[[PLAY SPARE OR KILL->SpareOrKill]]</div>
]
<br>
]
(if: $trialMurdererUnlocked is true)[
<div class="cw-submenu-text">
<strong>MURDERER</strong><br>
The Murderer trial has been recorded in your codex.
</div>
(if: $murdererPlayed is true)[
<div class="cw-submenu-text">STATUS: ALREADY PLAYED</div>
]
(else:)[
<div class="cw-menu-button">[[PLAY MURDERER->MurdererStart]]</div>
]
<br>
]
(if: $trialMassacreUnlocked is true)[
<div class="cw-submenu-text">
<strong>MASSACRE</strong><br>
The Massacre trial has been recorded in your codex.
</div>
(if: $massacrePlayed is true)[
<div class="cw-submenu-text">STATUS: ALREADY PLAYED</div>
]
(else:)[
<div class="cw-menu-button">[[PLAY MASSACRE->Massacre]]</div>
]
<br>
]
(if: $trialDuelUnlocked is true)[
<div class="cw-submenu-text">
<strong>DUEL</strong><br>
The Duel trial has been recorded in your codex.
</div>
(if: $duelPlayed is true)[
<div class="cw-submenu-text">STATUS: ALREADY PLAYED</div>
]
(else:)[
<div class="cw-menu-button">[[PLAY DUEL->DuelStart]]</div>
]
<br>
]
(if: $trialSpareOrKillUnlocked is false and $trialMurdererUnlocked is false and $trialMassacreUnlocked and $trialDuelUnlocked is false)[
<div class="cw-submenu-text">
NO TRIALS UNLOCKED<br><br>
Enter the dungeon and discover your first trial.
</div>
]
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[GO BACK->MainMenu]]</div>
</div>
</div>{
<div class="cw-submenu">
<div class="cw-submenu-title">SETTINGS</div>
<div class="cw-submenu-text">
<strong>AUDIO</strong><br>
Audio playback depends on your browser settings.<br><br>
<strong>VISUAL EFFECTS</strong><br>
Purple mist, lightning, skulls and scanlines are
currently enabled.<br><br>
<strong>ACCESSIBILITY</strong><br>
Additional visual and text settings can be added
here later.
</div>
[[RETURN TO MAIN MENU->MainMenu]]
</div>
}<script>changeTrack(7);</script>\
{
<div class="cw-submenu">
<div class="cw-submenu-title">LEAVING THE DUNGEON?</div>
<div class="cw-submenu-text">
<strong>THE SKULL WILL REMEMBER.</strong><br><br>
Your journey can end here.<br>
Close this browser tab to leave the game.<br><br>
Your save might not be available when you
return, maybe it does, maybe it doesn't.
You can keep your tab open to stay.
</div>
[[DON'T BE SCARED->MainMenu]]
</div>
}<div class="cw-submenu">
<div class="cw-submenu-title">THE HANDBOOK</div>
<div class="cw-menu-kicker">AUTHOR UNKNOWN • ENCHANTMENT ACTIVE</div>
<div class="cw-menu-divider"></div>
<div class="cw-submenu-text">
<i>You open the black book.</i>
Its cover is old, but its pages are intact.
There is no title on the cover and no name
anywhere in the handwriting.
You are certain the book was not yours before
you woke up in the Obsidian Dungeons.
Yet something about it feels deliberate.
<br><br>
<b>THE LAST SURVIVOR</b>
<i>I survived every trial.</i>
<i>I watched every other contestant fall,
until I was the only survivor remaining.</i>
<i>In the end, I was permitted to leave.</i>
<i>Do not mistake that permission for mercy.</i>
I am a sorcerer of extraordinary power.
My magic was unlike anything the Dungeons
had been designed to withstand.
He escaped.
And then he did something no prisoner
should have been capable of doing.
<br><br>
<b>THE THREE-PERCENT ENCHANTMENT</b>
After escaping, the sorcerer cast a spell
upon the Dungeons themselves.
The enchantment was meant to send this book
to a future prisoner and allow its knowledge
to reach them when it was needed.
The spell required an immense amount of power.
It was so difficult to sustain that it succeeds
only three percent of the time.
Most of the time, nothing happens.
But this time, it worked.
You have the book.
<br><br>
<b>THE AUTHOR'S WARNING</b>
<i>I will not write my name here.</i>
<i>Shiro must never discover who I am.
If he does, I cannot know what punishment
he might choose for me.</i>
<i>I have earned my freedom.
I will not risk it for the sake of a signature.</i>
The author has left no name, title or identifying
mark that you can use to find him.
You do not know whether he is still alive.
You do not know where he went.
You do not know why this particular book
reached you.
<br><br>
<b>THE LIVING PAGES</b>
The book does not reveal all its knowledge
at once.
When something becomes relevant, new writing
can appear between existing lines.
It may explain a trial, describe a prisoner,
record a discovery or warn you about something
you have not yet understood.
Sometimes the pages remain silent.
You cannot force the book to reveal everything.
<br><br>
<b>THE FIRST ROOM</b>
<i>You are in the Obsidian Dungeons.</i>
<i>You are not the author.</i>
<i>You are not the first person to survive here.</i>
<i>But at this moment, you are the only prisoner
in this room carrying this book.</i>
<br><br>
<i>The fact that you received this book
does not mean you are destined to survive.</i>
<i>It only means that survival is possible.</i>
</div>
<div class="cw-menu-divider"></div>
<div class="cw-menu-button cw-primary">(link: "CLOSE THE BOOK")[ (undo:) ]
</div>{
<div class="cw-submenu">
<div class="cw-submenu-title">PLAYER STATISTICS</div>
<div class="cw-menu-kicker">CURRENT RECORD</div>
<div class="cw-menu-divider"></div>
<div class="cw-submenu-text">
<b>IDENTITY</b>
Name: (if: $name is not "")[$name](else:)[Unknown]
Race: $race
<br><br>
<b>SURVIVAL STATUS</b>
Status: (if: $alive)[ALIVE](else:)[DECEASED]
Obsidian Collar: (if: $hasCollar)[PRESENT](else:)[NOT PRESENT]
<br><br>
<b>PROGRESSION</b>
Trials completed: $trialCount
Spells acquired: $spells
<br><br>
<b>REPUTATION</b>
Overall reputation: $reputation
Elysa: $elysaRep
Bahrmur: $bahrmurRep
Morgrim: $morgrimRep
Trixie: $trixieRep
Zul'kar: $zulkarRep
Lyraei: $lyraeiRep
Akatamor: $akatamorRep
<br><br>
<b>NOTES</b>
These records reflect the variables currently
tracked by the game.
</div>
<div class="cw-menu-divider"></div>
[[RETURN TO MAIN MENU->MainMenu]]
</div>
}{
<div class="cw-submenu">
<div class="cw-submenu-title">CHRONOLOGY</div>
<div class="cw-menu-kicker">RECORDED EVENTS</div>
<div class="cw-menu-divider"></div>
<div class="cw-submenu-text">
<b>BEFORE YOUR ARRIVAL</b>
<br><br>
<b>UNKNOWN — THE TRIALS</b>
A powerful sorcerer survives every trial
and becomes the last remaining survivor.
<br><br>
<b>UNKNOWN — THE ESCAPE</b>
The sorcerer is permitted to leave
the Obsidian Dungeons.
<br><br>
<b>UNKNOWN — THE ENCHANTMENT</b>
After escaping, the sorcerer casts a spell
upon the Dungeons.
The spell succeeds only three percent
of the time.
<br><br>
<b>YOUR STORY</b>
<br><br>
<b>EVENT 01 — ARRIVAL</b>
You wake up inside the Obsidian Dungeons.
The circumstances of your capture
are not fully understood.
<br><br>
<b>EVENT 02 — THE HANDBOOK</b>
You discover a mysterious book
that appears to have reached you
through the sorcerer's enchantment.
<br><br>
<b>EVENT 03 — THE FIRST ROOM</b>
Your survival depends on the choices
you make and the trials you face.
<br><br>
<i>Some dates and events are unknown.
This timeline will expand as the story progresses.</i>
</div>
<div class="cw-menu-divider"></div>
[[RETURN TO MAIN MENU->MainMenu]]
</div>
}{
<div class="cw-submenu">
<div class="cw-submenu-title">CREDITS</div>
<div class="cw-menu-kicker">BEHIND THE DUNGEONS</div>
<div class="cw-menu-divider"></div>
<div class="cw-submenu-text">
<b>CREATOR & WORLD DESIGN</b>
<br>
Kuro Loradey
<br><br>
<b>STORY & WRITING</b>
<br>
Kuro Loradey
<br><br>
<b>CHARACTER DESIGN</b>
<br>
Kuro Loradey
<br><br>
<b>PROGRAMMING</b>
<br>
Twine — Harlowe 3.3.9
<br><br>
<b>MUSIC / AUDIO</b>
<br>
Obsidian Dungeons by Kuro Loradey<br>
Lockdown by Kuro Loradey<br>
Mercy? by Kuro Loradey<br>
Lights Out by Kuro Loradey<br>
Execution by Kuro Loradey<br>
Hunt by Kuro Loradey<br>
How did you? by Kuro Loradey<br>
Transport by Kuro Loradey<br>
Dillema by Kuro Loradey<br>
Descend by Kuro Loradey<br>
<br><br>
<b>PLAY TESTER</b>
<br>
Renji Jajaja
<br><br>
<b>EFFECTS & VISUALS</b>
<br>
Kuro Loradey & Lumen Noctaris
<br><br>
<b>SPECIAL THANKS</b>
<br>
To everyone who helped, gave feedback,
tested the story or supported the project.
<br><br>
<b>ABOUT THE PROJECT</b>
<br>
Obsidian Dungeons is an interactive story
set in the world of Conwunba.
Explore the Dungeons, meet their prisoners
and uncover the secrets hidden within.
Your choices matter.
Your actions leave consequences.
And not every secret wants to be found.
<br><br>
<i>CONWUNBA</i>
SECRETS • SHADOWS • SOULS
</div>
<div class="cw-menu-divider"></div>
[[RETURN TO MAIN MENU->MainMenu]]
</div>
}|achievementPopupHook>[
(if: $achievementPopup)[
<div class="achievement-overlay">
<div class="achievement-popup">
<div class="achievement-icon">🏆</div>
<div class="achievement-label">ACHIEVEMENT UNLOCKED</div>
<h2>(print: $achievementTitle)</h2>
<p>(print: $achievementDescription)</p>
(link: "Close")[
(set: $achievementPopup to false)
(replace: ?achievementPopupHook)[]
]
</div>
</div>
]
]
(if: not $achEscapeTheMatrix)[
(set: $achEscapeTheMatrix to true)
(set: $achievementTitle to "Escape the Matrix")
(set: $achievementDescription to "Discover a hidden secret.")
(set: $achievementPopup to true)
(display: "AchievementPopup")
]
<div class="cw-scene">
<div class="cw-submenu-title">?????</div>
<br>
Wait. How did you get here? This is supposed to be a hidden passage! You can't just enter a random passage and expect not to get in trouble?
Get out of here!
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">(link: "LEAVE")[ (undo:) ]</div>
</div>
</div>
(set: $murdererTrialStarted to true)
(set: $murdererOutcomeProcessed to false)
(set: $murdererGlobalRepApplied to false)
(set: $murdererResolved to false)
(set: $murdererOutcome to "")
(set: $murdererTarget to "")
(set: $murderer to "")
(set: $murdererIsPlayer to ((random: 1, 100) <= 50))
(set: $murdererCandidates to (a:))
(set: $murdererCandidateCount to 0)
(set: $murdererCandidateIndex to 0)
(set: $murdererCandidatePosition to 0)
(if: $elysaAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Elysa"))
]
(if: $zulkarAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Zul'kar"))
]
(if: $maxAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Max"))
]
(if: $jordAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Jord"))
]
(if: $ubiAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Ubiwubi"))
]
(if: $okkiAlive)[
(set: $murdererCandidates to $murdererCandidates + (a: "Okki"))
]
(set: $murdererCandidateCount to $murdererCandidates's length)
(if: $murdererCandidateCount is 0)[
(set: $murdererIsPlayer to true)
]
(if: $murdererIsPlayer)[
(set: $murderer to "You")
]
(else:)[
(set: $murdererCandidateIndex to (random: 1, $murdererCandidateCount))
(set: $murderer to $murdererCandidates's $murdererCandidateIndex)
]
(if: $murdererIsPlayer)[
(set: $reputation to $reputation - 1)
(set: $murdererGlobalRepApplied to true)
]
<!-- MURDERER TRIAL: SYSTEM INITIALIZATION -->
(set: $murdererTime to 0)
(set: $playerLocation to "Central Chamber")
(set: $playerNoise to 0)
(set: $playerTrail to 0)
(set: $playerHidden to false)
(set: $murdererClues to (a:))
(set: $murdererSuspicion to 0)
(set: $murdererLastRoll to 0)
(set: $murdererLastDC to 10)
(set: $murdererLastResult to "")
(set: $murdererHelpedBy to "")
(set: $murdererDistraction to false)
(set: $murdererSearchCount to 0)
<!-- MURDERER TRIAL: NPC STATS -->
(set: $elysaSearch to 1)
(set: $elysaSpeed to 2)
(set: $elysaInsight to 1)
(set: $elysaNerve to -1)
(set: $zulkarSearch to 2)
(set: $zulkarSpeed to 1)
(set: $zulkarInsight to 3)
(set: $zulkarNerve to 2)
(set: $maxSearch to 2)
(set: $maxSpeed to 2)
(set: $maxInsight to 3)
(set: $maxNerve to 1)
(set: $jordSearch to 3)
(set: $jordSpeed to 0)
(set: $jordInsight to 2)
(set: $jordNerve to 2)
(set: $ubiSearch to 1)
(set: $ubiSpeed to 2)
(set: $ubiInsight to 2)
(set: $ubiNerve to 1)
(set: $okkiSearch to 1)
(set: $okkiSpeed to 3)
(set: $okkiInsight to 0)
(set: $okkiNerve to -1)
<!-- MURDERER TRIAL: DUNGEON MAP -->
(set: $murdererLocation to "Central Chamber")
(set: $suspicionChamber to 0)
(set: $suspicionWestHall to 0)
(set: $suspicionEastHall to 0)
(set: $suspicionStorage to 0)
(set: $suspicionHiddenNiche to 0)
(set: $noiseChamber to 0)
(set: $noiseWestHall to 0)
(set: $noiseEastHall to 0)
(set: $noiseStorage to 0)
(set: $noiseHiddenNiche to 0)
<!-- MURDERER TRIAL: DUNGEON CONNECTIONS -->
(set: $chamberConnections to (a: "West Hall", "East Hall", "Storage"))
(set: $westHallConnections to (a: "Central Chamber", "East Hall"))
(set: $eastHallConnections to (a: "Central Chamber", "West Hall"))
(set: $storageConnections to (a: "Central Chamber"))
(set: $hiddenNicheConnections to (a:))
<!-- MURDERER TRIAL: MOVEMENT STATE -->
(set: $playerPreviousLocation to "")
(set: $murdererPreviousLocation to "")
(set: $playerMovedThisTurn to false)
(set: $murdererMovedThisTurn to false)
(set: $playerMovementResult to "")
(set: $murdererMovementResult to "")
(set: $playerMovePurpose to "")
(set: $elysaClues to (a:))
(set: $zulkarClues to (a:))
(set: $maxClues to (a:))
(set: $jordClues to (a:))
(set: $ubiClues to (a:))
(set: $okkiClues to (a:))
(set: $elysaLastObservation to "")
(set: $zulkarLastObservation to "")
(set: $maxLastObservation to "")
(set: $jordLastObservation to "")
(set: $ubiLastObservation to "")
(set: $okkiLastObservation to "")
(set: $murdererCaughtAction to "")
(go-to: "MurdererReveal")
<div class="cw-scene">
<div class="cw-submenu-title">THE MURDERER TRIAL</div>
<p>The enormous doors close behind you.</p>
<p>For a moment, the chamber falls silent.</p>
<p>Then Shiro's voice echoes through the darkness.</p>
(if: $murdererIsPlayer)[
<script>changeTrack(8);</script>
<p>"The Obsidian Skull has chosen its next experiment. (print: $name) will be the murderer. The others must survive."</p>
<p>You feel something change inside you. Your thoughts become distant, your instincts unfamiliar. You know what you must do, even if a part of you desperately wants to resist.</p>
<p>You are the murderer.</p>
<p>The other prisoners scatter. Some run for the nearest doors. Others disappear into the shadows, desperately searching for somewhere to hide.</p>
<p>The lights go out.</p>
<p>And the hunt begins.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MurdererPlayerHunts]]</div>
</div>
]
(else:)[
<script>changeTrack(6);</script>
<p>"The Obsidian Skull has taken control of (print: $murderer). The rest must survive."</p>
<p>The prisoners exchange uneasy glances. Nobody knows what the Skull has done to the chosen murderer, or whether they can resist its influence.</p>
<p><b>(print: $murderer)</b> stands apart from the others.</p>
<p>For a brief moment, you catch their expression. Fear? Determination? Perhaps something worse. You cannot be certain what they are thinking.</p>
<p>Then Shiro speaks again.</p>
<p>"Run. Hide. Trust whoever you wish. It will make no difference to the experiment's conclusion."</p>
<p>The lights go out, and the chamber is swallowed by unnatural darkness.</p>
(if: $race is "Elf")[
<p>Your elven eyes should be able to see in the dark. Yet you cannot make out even the faintest shape. This darkness is not natural.</p>
]
<p>You need to find somewhere to hide before (print: $murderer) finds you.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MurdererHide]]</div>
</div>
]
</div>
(if: not $murdererIsPlayer)[
(go-to: "MurdererHide")
]
(set: $murdererSearchCount to $murdererSearchCount + 1)
<div class="cw-scene">
<div class="cw-submenu-title">THE HUNT</div>
<br>
The lights barely illuminate the obsidian corridors.
<br><br>
You move through the darkness. The other prisoners are hiding nearby, and every sound could reveal their location.
<br><br>
(if: $murdererSearchCount is 1)[
A faint shuffle comes from behind a storage cabinet.
]
(if: $murdererSearchCount is 2)[
A door clicks shut somewhere nearby. Someone has moved recently.
]
(if: $murdererSearchCount >= 3)[
Footsteps echo from the next corridor. Someone is getting careless.
]
<br><br>
**How do you search?**
<br><br>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[SEARCH THE STORAGE AREA->MurdererPlayerEncounter]]</div>
<div class="cw-menu-button">[[LISTEN AT THE NEXT DOOR->MurdererPlayerEncounter]]</div>
<div class="cw-menu-button">[[FOLLOW THE FOOTSTEPS->MurdererPlayerEncounter]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
<div class="cw-scene">
<div class="cw-submenu-title">FIND A PLACE TO HIDE</div>
<p>A heavy metallic clang tears through the dungeon.</p>
<p>The prisoners scatter. Footsteps echo through the corridors as heavy doors slam shut. Purple lamps cast cold reflections across the black obsidian walls, while sickly green mist drifts along the floor. Somewhere in the distance, metal scrapes against stone.</p>
<p>You know who the murderer is: <b>$murderer</b>. You have no idea where they are now.</p>
(if: $murderer is "Elysa")[
<p>Elysa's uncertainty might make her hesitate, but you cannot count on it.</p>
]
(if: $murderer is "Zul'kar")[
<p>Zul'kar is patient and calculating. Every mistake could give them an advantage.</p>
]
(if: $murderer is "Ubiwubi")[
<p>You hope Ubiwubi is too distracted to follow your trail.</p>
]
(if: $murderer is "Max")[
<p>Max thinks ahead. An obvious hiding place might be exactly what they expect.</p>
]
(if: $murderer is "Okki")[
<p>Okki reacts quickly. If they spot you, you might not get a second chance to escape.</p>
]
(if: $murderer is "Jord")[
<p>Jord has been watching the exits. You cannot assume he has overlooked anything.</p>
]
<p>You need to move before the murderer finds you. The dungeon offers several possible routes, but none of them is guaranteed to be safe.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Head into the West Hall->MurdererMoveChooseWest]]</div>
<div class="cw-menu-button">[[Take the East Hall->MurdererMoveChooseEast]]</div>
<div class="cw-menu-button">[[Slip into the Storage Room->MurdererHideChoice]]</div>
</div>
</div>
</div>
(if: not $murdererIsPlayer)[
(go-to: "MurdererHide")
]
(set: $murdererCandidateCount to 0)
(set: $murdererCandidateIndex to 0)
(set: $murdererCandidatePosition to 0)
(set: $murdererTarget to "")
(set: $murdererTrust to 0)
(if: $elysaAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $zulkarAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $maxAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $jordAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $ubiAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $okkiAlive)[
(set: $murdererCandidateCount to $murdererCandidateCount + 1)
]
(if: $murdererCandidateCount is 0)[
(set: $murdererOutcome to "no-targets")
(go-to: "MurdererEnding")
]
(set: $murdererCandidateIndex to (random: 1, $murdererCandidateCount))
(if: $elysaAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Elysa")
]
]
(if: $zulkarAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Zul'kar")
]
]
(if: $maxAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Max")
]
]
(if: $jordAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Jord")
]
]
(if: $ubiAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Ubiwubi")
]
]
(if: $okkiAlive)[
(set: $murdererCandidatePosition to $murdererCandidatePosition + 1)
(if: $murdererCandidatePosition is $murdererCandidateIndex)[
(set: $murdererTarget to "Okki")
]
]
(if: $murdererTarget is "Elysa")[
(set: $murdererTrust to $elysaRep)
]
(if: $murdererTarget is "Zul'kar")[
(set: $murdererTrust to $zulkarRep)
]
(if: $murdererTarget is "Max")[
(set: $murdererTrust to $maxRep)
]
(if: $murdererTarget is "Jord")[
(set: $murdererTrust to $jordRep)
]
(if: $murdererTarget is "Ubiwubi")[
(set: $murdererTrust to $ubiRep)
]
(if: $murdererTarget is "Okki")[
(set: $murdererTrust to $okkiRep)
]
(set: $murdererHideChance to 50 - ($murdererSearchCount * 5) - ($murdererTrust * 3))
(if: $murdererHideChance < 10)[
(set: $murdererHideChance to 10)
]
(if: $murdererHideChance > 90)[
(set: $murdererHideChance to 90)
]
(set: $murdererEncounterRoll to (random: 1, 100))
(if: $murdererTarget is "Elysa")[
(set: $elysaRep to $elysaRep - 2)
]
(if: $murdererTarget is "Zul'kar")[
(set: $zulkarRep to $zulkarRep - 5)
]
(if: $murdererTarget is "Max")[
(set: $maxRep to $maxRep - 4)
]
(if: $murdererTarget is "Jord")[
(set: $jordRep to $jordRep - 1)
]
(if: $murdererTarget is "Ubiwubi")[
(set: $ubiRep to $ubiRep - 2)
]
(if: $murdererTarget is "Okki")[
(set: $okkiRep to $okkiRep - 4)
]
(if: $murdererEncounterRoll <= $murdererHideChance)[
(set: $murdererOutcome to "target-escaped")
]
(else:)[
(set: $murdererOutcome to "target-caught")
]
(go-to: "MurdererPlayerEncounterResult")
<div class="cw-scene">
<div class="cw-submenu-title">ENCOUNTER</div>
<br>
(if: $murdererTarget is "Elysa")[
<p>You follow a narrow passage lined with cracked obsidian mirrors. At the far end, a broken mirror hangs slightly away from the wall. A strip of fabric is caught behind its frame.</p>
<p>You push the mirror aside. Elysa is crouched in the shallow space behind it, one hand pressed against the wall to keep the frame from moving.</p>
<p>Her eyes widen when she sees you. "Seriously? Of all the places in this dungeon, you had to look here?"</p>
<p>She tries to slip past you, but the narrow space makes it difficult to move.</p>
]
(if: $murdererTarget is "Zul'kar")[
<p>The corridor opens into an old armoury. Empty weapon racks stand against the walls, and dust covers the floor. One set of footprints ends abruptly beside a heavy stone cabinet.</p>
<p>You pull the cabinet away from the wall. Zul'kar stands behind it, perfectly still, his expression giving away almost nothing.</p>
<p>"You have a habit of looking where you shouldn't," he says coldly.</p>
<p>He watches your movements, waiting for the smallest opening.</p>
]
(if: $murdererTarget is "Max")[
<p>You enter a maintenance room filled with pipes, loose cables and half-open tool drawers. A metal panel near the floor is hanging crookedly.</p>
<p>Something moves behind it. You pull the panel open and find Max wedged inside the maintenance compartment, trying to hold the panel in place with one hand.</p>
<p>He looks at you, then at the tiny compartment around him.</p>
<p>"Before you say anything: it looked bigger from the outside."</p>
<p>Max immediately tries to squeeze past you.</p>
]
(if: $murdererTarget is "Jord")[
<p>You reach a junction where three corridors meet. Unlike the other rooms, this one has clear sightlines, several exits and a raised platform overlooking the passages.</p>
<p>You notice a shadow shift above you. Jord is crouched on the platform behind a thick support pillar, positioned so he can watch every entrance without exposing himself.</p>
<p>He notices that you've spotted him. Instead of panicking, he checks the corridors behind you.</p>
<p>"You took the obvious route," he says. "I was hoping you wouldn't."</p>
<p>He moves towards the nearest exit, ready to use the layout of the dungeon to his advantage.</p>
]
(if: $murdererTarget is "Ubiwubi")[
<p>You hear a faint scraping sound coming from a storage chamber. The room is full of discarded furniture, broken containers and old equipment from the dungeon's previous occupants.</p>
<p>In the middle of the room lies a large, hollow industrial tube. It is much too small for a person to hide inside comfortably.</p>
<p>You walk closer. Two feet stick out of one end. At the other end, a familiar backside protrudes into the room.</p>
<p>Ubiwubi has somehow managed to squeeze himself into the tube, apparently convinced that hiding his head means his entire body has disappeared.</p>
<p>"Oh! Hello!" he says from inside the tube. "This is a very bad time for a hello, I think!"</p>
<p>He tries to wriggle backwards. The tube makes a loud metallic scraping noise, but he doesn't seem to understand that this is not helping his situation.</p>
]
(if: $murdererTarget is "Okki")[
<p>You enter a neglected observation room overlooking one of the dungeon's larger chambers. The windows are dark, and a thick curtain hangs crookedly from its rail.</p>
<p>The curtain moves slightly, although there is no wind. You pull it aside and find Okki standing in the narrow space between the curtain and the wall.</p>
<p>Okki looks at you in silence, clearly hoping that if neither of you moves, the situation might somehow resolve itself.</p>
<p>"You weren't supposed to find me here," Okki finally mutters.</p>
<p>There is nowhere left to hide in the tiny space.</p>
]
<br>
(if: $murdererOutcome is "target-escaped")[
<p>You move towards $murdererTarget, but they react before you can reach them.</p>
(if: $murdererTarget is "Elysa")[
<p>Elysa shoves the mirror frame back into place and slips through a side passage. "Try keeping up!"</p>
]
(if: $murdererTarget is "Zul'kar")[
<p>Zul'kar ducks behind the armoury racks and disappears through a concealed doorway. "Too slow."</p>
]
(if: $murdererTarget is "Max")[
<p>Max drops through an open maintenance hatch. "I'm definitely regretting that hiding spot!"</p>
]
(if: $murdererTarget is "Jord")[
<p>Jord uses the raised platform to reach the opposite corridor before you can block the exit. He gives you one last glance. "Next time, check the other routes."</p>
]
(if: $murdererTarget is "Ubiwubi")[
<p>After a ridiculous amount of struggling, Ubiwubi finally pops out of the tube and stumbles into a side corridor.</p>
<p>"TACTICAL RETREAT!" he shouts, despite having absolutely no idea where he's going.</p>
]
(if: $murdererTarget is "Okki")[
<p>Okki slips beneath the observation desk and escapes through the open doorway while you look towards the window.</p>
]
<p>You have lost your chance to catch $murdererTarget. The corridors fall silent again.</p>
]
(else:)[
<p>You close the distance before $murdererTarget can get away.</p>
(if: $murdererTarget is "Elysa")[
<p>Elysa tries to push past you, but you block the narrow gap beside the mirror.</p>
<p>"Wait," she says, her voice suddenly quieter. "You don't have to do this."</p>
]
(if: $murdererTarget is "Zul'kar")[
<p>Zul'kar reaches for the concealed doorway, but you catch him before he can get through.</p>
<p>He turns to face you without flinching. "So this is how it ends."</p>
]
(if: $murdererTarget is "Max")[
<p>Max tries to climb out of the maintenance compartment, gets stuck for a moment, and then realises you are standing right there.</p>
<p>"Okay, okay. I really hoped you'd keep walking."</p>
]
(if: $murdererTarget is "Jord")[
<p>You reach the platform just as Jord moves towards the exit. He stops when he realises you have cut off his route.</p>
<p>He squares his shoulders. "Then finish it. I'm not begging."</p>
]
(if: $murdererTarget is "Ubiwubi")[
<p>You grab Ubiwubi just as he finally manages to pull himself halfway out of the tube.</p>
<p>He looks at you upside down. "Oh! Hello! This is a very bad time for a hello, I think!"</p>
<p>He pauses. "In hindsight, the tube was not an excellent plan."</p>
]
(if: $murdererTarget is "Okki")[
<p>Okki tries to dart beneath the observation desk, but you block the only open route.</p>
<p>"No... stay away from me," Okki whispers, backing against the wall.</p>
]
<p>You have caught $murdererTarget. The trial has reached its turning point.</p>
(if: $murdererTarget is "Elysa")[(set: $elysaAlive to false)]
(if: $murdererTarget is "Zul'kar")[(set: $zulkarAlive to false)]
(if: $murdererTarget is "Max")[(set: $maxAlive to false)]
(if: $murdererTarget is "Jord")[(set: $jordAlive to false)]
(if: $murdererTarget is "Ubiwubi")[(set: $ubiAlive to false)]
(if: $murdererTarget is "Okki")[(set: $okkiAlive to false)]
]
<br><br>
(if: $murdererSearchCount < 2)[
<p>The encounter is over. You hear distant movement deeper in the dungeon. There may still be someone else you can find.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE THE HUNT->MurdererPlayerHunts]]</div>
</div>
]
(else:)[
<p>The darkness settles over the corridors. You have used both of your chances to search.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[END THE TRIAL->MurdererEnding]]</div>
</div>
]
</div>
(if: not $murdererOutcomeProcessed)[
(set: $murdererOutcomeProcessed to true)
(set: $trialMurdererUnlocked to true)
(set: $trialCount to $trialCount + 1)
(if: $murdererOutcome is "target-caught")[
(if: $murdererTarget is "Elysa")[(set: $elysaAlive to false)]
(if: $murdererTarget is "Zul'kar")[(set: $zulkarAlive to false)]
(if: $murdererTarget is "Max")[(set: $maxAlive to false)]
(if: $murdererTarget is "Jord")[(set: $jordAlive to false)]
(if: $murdererTarget is "Ubiwubi")[(set: $ubiAlive to false)]
(if: $murdererTarget is "Okki")[(set: $okkiAlive to false)]
]
(if: $murdererOutcome is "player-caught")[
(set: $alive to false)
]
(if: $murdererOutcome is "player-survived")[
(if: not $murdererIsPlayer)[
(if: $murderer is "Max")[
(if: $jordAlive)[
(set: $jordAlive to false)
]
(else-if: $maxAlive)[
(set: $maxAlive to false)
]
]
(else:)[
(if: $maxAlive)[
(set: $maxAlive to false)
]
(else-if: $jordAlive)[
(set: $jordAlive to false)
]
]
]
]
]
<div class="cw-scene">
<div class="cw-submenu-title">MURDERER — TRIAL RESULTS</div>
(if: $murdererOutcome is "player-survived")[
<p>You hear the footsteps pass your hiding place.</p>
<p>You remain still until the sounds fade.</p>
<p>You survived the hunt.</p>
(if: $murderer is "Max")[
<p>Max was the murderer. With you out of reach, the trial takes its toll on the remaining prisoners.</p>
(if: not $jordAlive and $maxAlive)[
<p>Jord did not escape the trial.</p>
]
(else-if: not $maxAlive and $jordAlive)[
<p>Max did not escape the trial.</p>
]
(else:)[
<p>The trial has claimed its final victim.</p>
]
]
(else:)[
<p>The murderer was $murderer. With you out of reach, the trial takes its toll on the remaining prisoners.</p>
(if: not $maxAlive and $jordAlive)[
<p>Max did not escape the trial.</p>
]
(else-if: not $jordAlive and $maxAlive)[
<p>Jord did not escape the trial.</p>
]
(else:)[
<p>The trial has claimed its final victim.</p>
]
]
<p>Shiro's voice echoes through the chamber. "Experiment complete."</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
]
(if: $murdererOutcome is "player-caught")[
<p>$murderer has found you.</p>
<p>You have not survived the hunt. The trial ends here for you.</p>
<p>Shiro's voice echoes through the chamber. "The hunt is over."</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->GameOver]]</div>
</div>
]
(if: $murdererOutcome is "target-caught")[
<p>You caught $murdererTarget.</p>
<p>The other prisoners scatter farther into the dungeon.</p>
(if: $murdererIsPlayer)[
<p>The hunt ends with $murdererTarget as your victim.</p>
<p>Shiro's voice echoes through the chamber. "Experiment complete."</p>
]
(else:)[
<p>Shiro's voice echoes through the chamber. "Experiment complete, $name."</p>
]
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
]
(if: $murdererOutcome is "target-escaped")[
<p>$murdererTarget has escaped your immediate reach.</p>
<p>You cannot find them again before the trial ends.</p>
<p>Shiro's voice echoes through the chamber. "Experiment complete, $name."</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
]
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $playerMoveTarget to "Storage")
(set: $playerHidden to true)
(go-to: "MurdererMove")
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
<div class="cw-scene">
<div class="cw-submenu-title">LISTEN</div>
<p>You press yourself against the wall and listen. Footsteps are getting closer.</p>
(if: $murderer is "Elysa")[<p>You hear Elysa whisper, "I don't want to do this."</p>]
(if: $murderer is "Zul'kar")[<p>Zul'kar's footsteps are steady. He doesn't seem to be in a hurry.</p>]
(if: $murderer is "Ubiwubi")[<p>You hear a clatter, then Ubiwubi whisper, "That was absolutely intentional."</p>]
(if: $murderer is "Max")[<p>Max checks each doorway before moving on.</p>]
(if: $murderer is "Okki")[<p>The hoofbeats falter, then continue.</p>]
(if: $murderer is "Jord")[<p>Jord's footsteps are measured and deliberate.</p>]
<p>The footsteps are getting closer. You need to decide quickly.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Slip into the storage room->MurdererHideChoice]]</div>
<div class="cw-menu-button">[[Stay still and keep listening->MurdererHideStay]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $murdererHelpedBy to "")
(if: $elysaRep >= 3)[
(set: $murdererHelpedBy to "Elysa")
]
(else-if: $maxRep >= 3)[
(set: $murdererHelpedBy to "Max")
]
(else-if: $ubiRep >= 3)[
(set: $murdererHelpedBy to "Ubiwubi")
]
<div class="cw-scene">
<div class="cw-submenu-title">LOOK FOR SOMEONE</div>
<p>You search for a familiar face. You don't know who will risk helping you.</p>
(if: $murdererHelpedBy is "Elysa")[
<p>Elysa whispers your name from behind a broken pillar. "Over here. Quickly."</p>
]
(else-if: $murdererHelpedBy is "Max")[
<p>Max signals you toward a narrow doorway. "Keep your head down."</p>
]
(else-if: $murdererHelpedBy is "Ubiwubi")[
<p>Ubiwubi waves from behind a cabinet. "I have a plan! I think. I definitely have part of one."</p>
]
(else:)[
<p>Nobody answers. Either nobody heard you, or nobody wants to risk revealing their position.</p>
]
<div class="cw-menu-buttons">
(if: $murdererHelpedBy is not "")[
<div class="cw-menu-button">[[Approach your contact->MurdererHideFriendMeet]]</div>
]
<div class="cw-menu-button">[[Go to the storage room->MurdererHideChoice]]</div>
<div class="cw-menu-button">[[Stay hidden and listen->MurdererHideListen]]</div>
</div>
</div>
<div class="cw-scene">
<div class="cw-submenu-title">THE HUNT</div>
(if: $murdererOutcome is "player-survived")[
<p>You hear the footsteps pass your hiding place.</p>
<p><b>$murderer</b> searches the wrong corridor. You remain still until the sounds fade.</p>
<p>You survived the hunt.</p>
(if: $murderer is "Elysa")[<p>Somewhere nearby, Elysa whispers, "I'm sorry."</p>]
(if: $murderer is "Zul'kar")[<p>Zul'kar's voice fades into the distance. "Where did you go?"</p>]
(if: $murderer is "Ubiwubi")[<p>You hear Ubiwubi mutter, "I knew my plan would work. Mostly."</p>]
(if: $murderer is "Max")[<p>Max searches the wrong section of the dungeon.</p>]
(if: $murderer is "Okki")[<p>Okki hesitates long enough for you to get away.</p>]
(if: $murderer is "Jord")[<p>Jord moves on, convinced that you took another route.</p>]
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MurdererEnding]]</div>
</div>
]
(if: $murdererOutcome is "player-caught")[
<p>The door opens.</p>
<p><b>$murderer</b> stands in front of your hiding place.</p>
(if: $murderer is "Elysa")[<p>Elysa looks frightened. "I wish there were another way."</p>]
(if: $murderer is "Zul'kar")[<p>Zul'kar gives you a cold smile. "You should have chosen a better hiding place."</p>]
(if: $murderer is "Ubiwubi")[<p>Ubiwubi looks miserable. "This is going to be a very bad day, isn't it?"</p>]
(if: $murderer is "Max")[<p>Max sighs. "I really hoped you would stay hidden."</p>]
(if: $murderer is "Okki")[<p>Okki's hands shake. "I'm sorry. I'm so sorry."</p>]
(if: $murderer is "Jord")[<p>Jord looks at you without smiling. "You should have kept moving."</p>]
<p>The hunt is over. You did not survive.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MurdererEnding]]</div>
</div>
]
</div>
<div class="cw-scene">
<div class="cw-submenu-title">MEET THE PRISONERS</div>
<br>
You take a closer look at the prisoners around you. If you are going to survive this place, you should at least know who you are trapped here with.
<br><br>
<h3>Elysa</h3>
Elysa, an elf, gives you a small, uncertain smile.
<br><br>
"I still think people can make the right choice, even here."
<br><br>
<h3>Zul'kar</h3>
Zul'kar, a naga, stands apart from the others, watching everyone carefully.
<br><br>
"Trust is a weakness. Remember that."
<br><br>
<h3>Bahrmur</h3>
Bahrmur, a dwarf, watches the room in silence. His expression gives little away.
<br><br>
"People reveal more when they think nobody is watching."
<br><br>
<h3>Morgrim</h3>
(if: $morgrimSkeleton is true)[
Morgrim sits apart from the others. His body is nothing but a skeletal frame beneath his dark robes. His eyes glow with an unnatural intensity, and every movement produces a faint, dry rattle.
<br><br>
He turns his skull toward you. His voice sounds dry and rusty, as though it has travelled through a tomb before reaching you.
<br><br>
"Still looking at me, $name? Have you never seen a wizard who refuses to stay buried?"
<br><br>
His glowing eyes narrow.
<br><br>
"Be careful. I have already lost something once. I won't let anyone take anything else from me."
]
(else:)[
Morgrim, a sorcerer, sits with his arms crossed, looking irritated by the entire situation. His long, dark robes conceal most of his figure, and he seems determined to have nothing to do with the other prisoners.
<br><br>
"If Shiro wants a show, he can watch someone else. I don't want to lose **it**."
<br><br>
For a brief moment, his expression changes. Something in those words seems more serious than ordinary fear.
<br><br>
Then he looks away, as though he regrets saying anything at all.
]
<br><br>
<h3>Trixie</h3>
Trixie, a fairy, leans against a wall and studies the other prisoners with a smile.
<br><br>
"Everyone here has a secret. Some people are just worse at hiding theirs."
<br><br>
<h3>Lyraei</h3>
Lyraei, a half-angel, keeps her distance but listens closely to every conversation.
<br><br>
"The quietest person in the room isn't always the safest."
<br><br>
<h3>Akatamor</h3>
Akatamor, a non-verbal mummy, examines the doors and ceiling, searching for a way out.
<br><br>
He has written something on a piece of paper he found: "There is always a weakness in a system. You just have to find it."
<br><br>
<h3>Ubiwubi</h3>
A small gnome tries to balance a spoon on his nose.
<br><br>
"Hello! I'm Ubiwubi. I had a serious introduction prepared, but I forgot it."
<br><br>
The spoon falls. He looks delighted.
<br><br>
"If you see a monster, tell it I'm busy."
<br><br>
<h3>Max</h3>
Max, a hobbit in a worn jacket, sits with his hands folded.
<br><br>
"Don't assume everyone here is your enemy. But don't assume they're your friend, either."
<br><br>
<h3>Okki</h3>
Okki, a satyr, waves at you. A distant door slams, and his smile briefly disappears.
<br><br>
"I'm friendly. I'm just not very good at standing up to people."
<br><br>
<h3>Jord</h3>
Jord, a human, studies the exits and the people around him.
<br><br>
"Watch the doors. Listen for footsteps. And stop talking when you need to hear something."
<br><br>
He looks at you.
<br><br>
"That wasn't a joke."
<br><br>
You now know everyone currently in the dungeon. Whether that knowledge will help you survive is another question.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[RETURN TO THE LOBBY->Lobby]]</div>
</div>
</div>
<div class="cw-menu-divider"></div>
</div>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[NEW GAME->NewGame]]</div>
<div class="cw-menu-button">(if: (saved-games:) contains "ConwunbaAutosave")[(link: "CONTINUE")[(load-game: "ConwunbaAutosave")]](else:)[<span class="cw-disabled">CONTINUE — NO SAVE</span>]</div>
<div class="cw-scene">
<div class="cw-submenu-title">CHARACTER DATABASE</div>
<br>
A record of the prisoners currently known to be held in the Obsidian Dungeons.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<h3>Elysa</h3>
Elysa is an elf with pale-blonde hair and soft green eyes. She is gentle and hopeful, and believes that people can still make the right choices, even in desperate circumstances.
<br><br>
<h3>Zul'kar</h3>
Zul'kar is a naga who keeps his distance from the other prisoners. He watches people carefully and considers trust a weakness.
<br><br>
<h3>Bahrmur</h3>
Bahrmur is a broad dwarf with a thick brown beard. He is observant and serious, and tends to study people before deciding what to think of them.
<br><br>
<h3>Morgrim</h3>
(if: $morgrimAlive is true)[
(if: $morgrimSkeleton is true)[
Morgrim is a Hyssor wizard who survived a lethal punishment by revealing his skeletal form. His skin vanished, leaving a skeletal body with intensely glowing eyes. He has returned from what appeared to be death, and he holds a deep grudge against those who have wronged him.
]
(else:)[
Morgrim is a sorcerer who wears long, dark robes. He is irritable and guarded, and dislikes being treated as entertainment.
]
]
(else:)[
Morgrim is no longer among the living prisoners. His place in the dungeon is empty.
]
<br><br>
<h3>Trixie</h3>
Trixie is a small fairy with delicate wings. She is curious, mischievous, and amused by the secrets and weaknesses of those around her.
<br><br>
<h3>Lyraei</h3>
Lyraei is a half-angel with large feathered wings. She is compassionate and concerned about the safety of others, although she remains cautious around the other prisoners.
<br><br>
<h3>Akatamor</h3>
Akatamor is a non-verbal mummy covered in aged bandages. He communicates through writing and carefully studies the dungeon's doors, mechanisms, and possible weaknesses.
<br><br>
<h3>Ubiwubi</h3>
Ubiwubi is a small gnome with an energetic, playful personality. He often acts silly, even in dangerous situations, and seems determined to keep his spirits up.
<br><br>
<h3>Max</h3>
Max is a hobbit who wears a worn jacket. He is cautious and thoughtful, and believes that neither trust nor hostility should be given without consideration.
<br><br>
<h3>Okki</h3>
Okki is a satyr who is friendly and approachable, but struggles to stand up to intimidating people.
<br><br>
<h3>Jord</h3>
Jord is a human who pays close attention to exits, footsteps, and the behaviour of people around him. He is practical, alert, and rarely jokes when a situation is serious.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[BACK TO MAIN MENU->MainMenu]]</div>
</div>
</div>
(if: $name's length >= 3)[
(set: $loadingDestination to "Lobby")
(go-to: "LoadingScreen1")
]
(else:)[
<div class="cw-submenu">
<div class="cw-submenu-title">(text-colour:red)[INVALID NAME]</div>
<div class="cw-submenu-text">Your name must contain at least three characters.</div>
<div class="cw-submenu-button">[[TRY AGAIN->CharacterCreation]]</div>
</div>
]<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">FIRST ROOM</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> SECRETS <span>·</span> SHADOWS <span>·</span> SOULS</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Initializing prisoner records...</span>
<span class="cw-status-message" style="--delay:2s">Establishing dimensional coordinates...</span>
<span class="cw-status-message" style="--delay:4s">Checking containment integrity...</span>
<span class="cw-status-message" style="--delay:6s">Calibrating Obsidian Collar...</span>
<span class="cw-status-message" style="--delay:8s">He is watching.</span>
<span class="cw-status-message" style="--delay:10s">Ignore that message...</span>
<span class="cw-status-message" style="--delay:12s">Please do...</span>
<span class="cw-status-message" style="--delay:14s">Whatever...</span>
<span class="cw-status-message" style="--delay:16s">Reviewing previous incidents...</span>
<span class="cw-status-message" style="--delay:18s">Welcome to the Obsidian Dungeons.</span>
</div>
</div>
</div>
(after: 20s)[
(go-to: $loadingDestination)
]
<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">TRIAL INITIALIZATION</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> TRIALS <span>·</span> SURVIVAL <span>·</span> CONSEQUENCES</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Preparing trial parameters...</span>
<span class="cw-status-message" style="--delay:2s">Loading environmental hazards...</span>
<span class="cw-status-message" style="--delay:4s">Checking available equipment...</span>
<span class="cw-status-message" style="--delay:6s">Calculating survival probability...</span>
<span class="cw-status-message" style="--delay:8s">Survival probability not found.</span>
<span class="cw-status-message" style="--delay:10s">Substituting standard procedure.</span>
<span class="cw-status-message" style="--delay:12s">Opening the trial chamber...</span>
<span class="cw-status-message" style="--delay:14s">Please remain within designated boundaries.</span>
<span class="cw-status-message" style="--delay:16s">Finalizing trial conditions...</span>
<span class="cw-status-message" style="--delay:18s">The trial will now begin.</span>
</div>
</div>
</div>
(after: 20s)[
(if: $loadingDestination is "SpareOrKill"
or $loadingDestination is "MurdererStart"
or $loadingDestination is "Massacre"
or $loadingDestination is "DuelIntroduction")[
(go-to: $loadingDestination)
]
(else:)[
ERROR: Invalid loading destination.
(print: $loadingDestination)
]
]<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">LOBBY TRANSFER</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> RESULTS <span>·</span> RECORDS <span>·</span> RESTRAINTS</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Trial concluded.</span>
<span class="cw-status-message" style="--delay:2s">Recording final results...</span>
<span class="cw-status-message" style="--delay:4s">Updating prisoner status...</span>
<span class="cw-status-message" style="--delay:6s">Restoring standard restraints...</span>
<span class="cw-status-message" style="--delay:8s">Checking collar functionality...</span>
<span class="cw-status-message" style="--delay:10s">Collar functioning as intended.</span>
<span class="cw-status-message" style="--delay:12s">Returning to the Lobby...</span>
<span class="cw-status-message" style="--delay:14s">Your cooperation is appreciated.</span>
<span class="cw-status-message" style="--delay:16s">Updating waiting room access...</span>
<span class="cw-status-message" style="--delay:18s">Please await further instructions.</span>
</div>
</div>
</div>
(after: 20s)[
(go-to: $loadingDestination)
]
<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">RESTRICTED ACCESS</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> RESTRICTED <span>·</span> CLASSIFIED <span>·</span> SEALED</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Accessing restricted records...</span>
<span class="cw-status-message" style="--delay:2s">Verifying authorization...</span>
<span class="cw-status-message" style="--delay:4s">Authorization confirmed.</span>
<span class="cw-status-message" style="--delay:6s">An unexpected record was found.</span>
<span class="cw-status-message" style="--delay:8s">Cross-referencing subject identity...</span>
<span class="cw-status-message" style="--delay:10s">Identity mismatch detected.</span>
<span class="cw-status-message" style="--delay:12s">Requesting supervisor approval...</span>
<span class="cw-status-message" style="--delay:14s">Supervisor response received.</span>
<span class="cw-status-message" style="--delay:16s">Record integrity check complete.</span>
<span class="cw-status-message" style="--delay:18s">All records are correct.</span>
</div>
</div>
</div>
(after: 20s)[
(go-to: $loadingDestination)
]
<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">NEW REALITY INITIALIZATION</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> EXISTENCE <span>·</span> IDENTITY <span>·</span> DESTINY</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Initializing a new reality...</span>
<span class="cw-status-message" style="--delay:2s">Generating dimensional coordinates...</span>
<span class="cw-status-message" style="--delay:4s">Constructing the initial environment...</span>
<span class="cw-status-message" style="--delay:6s">Assigning a new identity...</span>
<span class="cw-status-message" style="--delay:8s">Registering unknown variables...</span>
<span class="cw-status-message" style="--delay:10s">Checking for prior existence...</span>
<span class="cw-status-message" style="--delay:12s">No prior existence detected.</span>
<span class="cw-status-message" style="--delay:14s">Previous records remain inaccessible.</span>
<span class="cw-status-message" style="--delay:16s">Finalizing initial conditions...</span>
<span class="cw-status-message" style="--delay:18s">Your story begins now.</span>
</div>
</div>
</div>
(after: 20s)[
(go-to: $loadingDestination)
]
<script>changeTrack(5);</script>\
<div class="cw-loading-screen">
<div class="cw-loading-background"></div>
<div class="cw-loading-overlay"></div>
<div class="cw-loading-content">
<div class="cw-loading-eyebrow">CONWUNBA PRESENTS</div>
<div class="cw-loading-title">OBSIDIAN DUNGEONS</div>
<div class="cw-loading-subtitle">STANDARD PROCEDURE</div>
<div class="cw-loading-divider"></div>
<div class="cw-loading-experience">A Conwunba experience</div>
<div class="cw-loading-motto">CONWUNBA <span>·</span> PROCEDURE <span>·</span> ORDER <span>·</span> ABSOLUTE NORMALITY</div>
<div class="cw-loading-progress">
<div class="cw-loading-progress-fill"></div>
</div>
<div class="cw-loading-status">
<span class="cw-status-message" style="--delay:0s">Preparing the dungeon...</span>
<span class="cw-status-message" style="--delay:2s">Counting the prisoners...</span>
<span class="cw-status-message" style="--delay:4s">Recounting the prisoners...</span>
<span class="cw-status-message" style="--delay:6s">One prisoner is missing.</span>
<span class="cw-status-message" style="--delay:8s">The prisoner was standing behind us.</span>
<span class="cw-status-message" style="--delay:10s">Ignoring the incident...</span>
<span class="cw-status-message" style="--delay:12s">Checking the boxes...</span>
<span class="cw-status-message" style="--delay:14s">The boxes are now suspicious.</span>
<span class="cw-status-message" style="--delay:16s">Filing a report about the boxes...</span>
<span class="cw-status-message" style="--delay:18s">Everything is completely normal.</span>
</div>
</div>
</div>
(after: 20s)[
(go-to: $loadingDestination)
]
<div class="od-cinematic">
<div class="od-cinematic-smoke"></div>
<div class="od-cinematic-flash"></div>
<div class="od-cinematic-glow"></div>
<div class="od-cinematic-runes"></div>
<img
class="od-cinematic-skull"
src="https://i.postimg.cc/x1fPTcTJ/OS-Photoroom.png"
alt="Obsidian Skull"
/>
<div class="od-cinematic-title od-title-game">
OBSIDIAN DUNGEONS
</div>
<div class="od-cinematic-title od-title-warning">
THE SKULL IS WATCHING.
</div>
<div class="od-cinematic-rule"></div>
<div class="od-cinematic-vignette"></div>
<div class="od-cinematic-fade"></div>
</div>
(after: 9000ms)[
(goto: "PlayMenu")
](set: $loadingDestination to "MainMenu")
<script>changeTrack(2);</script>\
<div class="od-boot">
<div class="od-boot-glow"></div>
<div class="od-boot-smoke"></div>
<div class="od-boot-runes"></div>
<div class="od-boot-credit od-boot-conwunba">
<div class="od-boot-brand">CONWUNBA</div>
<div class="od-boot-subtitle">PRESENTS</div>
</div>
<div class="od-boot-credit od-boot-project">
<div class="od-boot-heading">OBSIDIAN DUNGEONS</div>
<div class="od-boot-subtitle">FIRST ROOM</div>
</div>
<div class="od-boot-credit od-boot-creator">
<div class="od-boot-label">CREATED BY</div>
<div class="od-boot-name">KURO LORADEY</div>
</div>
<div class="od-boot-credit od-boot-twine">
<div class="od-boot-heading">BUILT WITH TWINE</div>
</div>
<div class="od-boot-credit od-boot-harlowe">
<div class="od-boot-heading">POWERED BY HARLOWE 3.3.9</div>
</div>
<div class="od-boot-credit od-boot-world">
<div class="od-boot-heading">AN ORIGINAL CONWUNBA CREATION</div>
<div class="od-boot-subtitle">
WORLD & LORE BY KURO LORADEY
</div>
</div>
<div class="od-boot-credit od-boot-motto">
<div class="od-boot-heading">
A STORY OF FEAR, CHOICE & CONSEQUENCE
</div>
<div class="od-boot-subtitle">EVERY CHOICE HAS A PRICE</div>
</div>
<div class="od-boot-final">
<img
class="od-boot-skull"
src="https://i.postimg.cc/x1fPTcTJ/OS-Photoroom.png"
alt="Obsidian Skull"
/>
<div class="od-boot-final-title">
OBSIDIAN DUNGEONS
</div>
<div class="od-boot-final-subtitle">FIRST ROOM</div>
<div class="od-boot-warning">
THE SKULL IS WATCHING.
</div>
<div class="od-boot-version">
VERSION 0.1.0 — FIRST DESCENT
</div>
</div>
<div class="od-boot-vignette"></div>
<div class="od-boot-blackout"></div>
</div>
(after: 20000ms)[
(go-to: "LoadingScreen5")
]<div class="od-splash">
<div class="od-splash-atmosphere"></div>
<div class="od-splash-smoke"></div>
<div class="od-splash-runes"></div>
<img
class="od-splash-skull"
src="https://i.postimg.cc/x1fPTcTJ/OS-Photoroom.png"
alt=""
/>
<div class="od-splash-vignette"></div>
<div class="od-splash-noise"></div>
<div class="od-splash-content">
<p class="od-splash-eyebrow">A CONWUNBA CREATION</p>
<div class="od-splash-ornament">
<span></span>
<i></i>
<span></span>
</div>
<h1 class="od-splash-title">
OBSIDIAN
<span>DUNGEONS</span>
</h1>
<p class="od-splash-motto">
EVERY CHOICE HAS A PRICE
</p>
<div class="od-splash-divider"></div>
<div class="od-splash-interactive">
<!-- We voegen de audio-wisselaar toe aan jouw eigen link -->
(link-goto: "AWAKEN, PRISONER", "BootIntro")
</div>
<p class="od-splash-warning">
THE SKULL IS WATCHING.
</p>
<p class="od-splash-version">
FIRST ROOM · VERSION 0.1.0
</p>
</div>
<div class="od-splash-corner od-splash-corner-tl"></div>
<div class="od-splash-corner od-splash-corner-tr"></div>
<div class="od-splash-corner od-splash-corner-bl"></div>
<div class="od-splash-corner od-splash-corner-br"></div>
</div>
<script>
// Zodra de speler ERGENS op dit startscherm klikt, start alvast de onheilspellende omgevingssoundtrack (Track 1)
window.addEventListener('click', function startEersteSfeerTrack() {
if (typeof changeTrack === 'function') {
if (window.currentTrackId === null) {
changeTrack(5);
}
window.removeEventListener('click', startEersteSfeerTrack);
}
}, { once: true });
</script>
<script>changeTrack(10);</script>\
<div class="cw-scene">
<div class="cw-submenu-title">MASSACRE</div>
<br><br>
The chamber falls silent.
<br><br>
The familiar hum of the machinery fades until all you can hear is the faint electronic ticking of the collars around your necks.
<br><br>
The screens covering the walls flicker to life. Thin purple lines crawl across their black surfaces, forming symbols you cannot understand.
<br><br>
Then the symbols disappear.
<br><br>
**MASSACRE TRIAL**
<br><br>
You read the words twice, hoping you have misunderstood them.
<br><br>
A heavy lock engages somewhere beneath the floor. The sound travels through the chamber, followed by the grinding of metal doors sealing shut.
<br><br>
Nobody speaks.
<br><br>
Even the participants who usually fill every silence with arguments, jokes, or threats seem to understand that this trial is different.
<br><br>
A new message appears.
<br><br>
"Three participants will be selected."
<br><br>
The words remain on the screen.
<br><br>
"Those selected will not return to the lobby."
<br><br>
A cold sensation spreads through the chamber. You glance at the others, trying to work out whether anyone has a plan. Some look toward the doors. Others stare at their collars. A few simply watch the screen, as if refusing to look away might somehow change the outcome.
<br><br>
Shiro's voice finally fills the room.
<br><br>
"Do not waste your time searching for an alternative. This trial has already begun."
<br><br>
The purple lines brighten. Somewhere inside the walls, a mechanism starts turning.
<br><br>
You cannot tell whether the machine is choosing its victims or merely preparing to announce a decision that was made long ago.
<br><br>
The collars give a synchronized pulse.
<br><br>
For a moment, the entire chamber glows purple.
<br><br>
You look at the people around you. They are not just names on a screen. They are the people who have endured the dungeon beside you, each with their own fears, grudges, plans, and reasons to survive.
<br><br>
Soon, three of those names will appear.
<br><br>
And once they do, there will be no appeal.
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MassacreSelection]]</div>
</div>
</div>
(set: $massacreTargets to (a:))
(if: $alive is true)[(set: $massacreTargets to $massacreTargets + (a: "Player"))]
(if: $elysaAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Elysa"))]
(if: $bahrmurAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Bahrmur"))]
(if: $trixieAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Trixie"))]
(if: $zulkarAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Zul'kar"))]
(if: $lyraeiAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Lyraei"))]
(if: $akatamorAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Akatamor"))]
(if: $maxAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Max"))]
(if: $jordAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Jord"))]
(if: $ubiAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Ubiwubi"))]
(if: $okkiAlive is true)[(set: $massacreTargets to $massacreTargets + (a: "Okki"))]
(set: $massacreTargets to (shuffled: ...$massacreTargets))
(set: $massacreVictim1 to $massacreTargets's 1st)
(set: $massacreVictim2 to $massacreTargets's 2nd)
(set: $massacreVictim3 to $massacreTargets's 3rd)
(set: $massacreName1 to $massacreVictim1)
(set: $massacreName2 to $massacreVictim2)
(set: $massacreName3 to $massacreVictim3)
(set: $massacreVictims to (a: $massacreVictim1, $massacreVictim2, $massacreVictim3))
(if: $massacreVictim1 is "Player")[
(set: $massacreName1 to $name)
(set: $alive to false)
]
(if: $massacreVictim2 is "Player")[
(set: $massacreName2 to $name)
(set: $alive to false)
]
(if: $massacreVictim3 is "Player")[
(set: $massacreName3 to $name)
(set: $alive to false)
]
(if: $massacreVictim1 is "Elysa")[(set: $elysaAlive to false)]
(if: $massacreVictim2 is "Elysa")[(set: $elysaAlive to false)]
(if: $massacreVictim3 is "Elysa")[(set: $elysaAlive to false)]
(if: $massacreVictim1 is "Bahrmur")[(set: $bahrmurAlive to false)]
(if: $massacreVictim2 is "Bahrmur")[(set: $bahrmurAlive to false)]
(if: $massacreVictim3 is "Bahrmur")[(set: $bahrmurAlive to false)]
(if: $massacreVictim1 is "Trixie")[(set: $trixieAlive to false)]
(if: $massacreVictim2 is "Trixie")[(set: $trixieAlive to false)]
(if: $massacreVictim3 is "Trixie")[(set: $trixieAlive to false)]
(if: $massacreVictim1 is "Zul'kar")[(set: $zulkarAlive to false)]
(if: $massacreVictim2 is "Zul'kar")[(set: $zulkarAlive to false)]
(if: $massacreVictim3 is "Zul'kar")[(set: $zulkarAlive to false)]
(if: $massacreVictim1 is "Lyraei")[(set: $lyraeiAlive to false)]
(if: $massacreVictim2 is "Lyraei")[(set: $lyraeiAlive to false)]
(if: $massacreVictim3 is "Lyraei")[(set: $lyraeiAlive to false)]
(if: $massacreVictim1 is "Akatamor")[(set: $akatamorAlive to false)]
(if: $massacreVictim2 is "Akatamor")[(set: $akatamorAlive to false)]
(if: $massacreVictim3 is "Akatamor")[(set: $akatamorAlive to false)]
(if: $massacreVictim1 is "Max")[(set: $maxAlive to false)]
(if: $massacreVictim2 is "Max")[(set: $maxAlive to false)]
(if: $massacreVictim3 is "Max")[(set: $maxAlive to false)]
(if: $massacreVictim1 is "Jord")[(set: $jordAlive to false)]
(if: $massacreVictim2 is "Jord")[(set: $jordAlive to false)]
(if: $massacreVictim3 is "Jord")[(set: $jordAlive to false)]
(if: $massacreVictim1 is "Ubiwubi")[(set: $ubiAlive to false)]
(if: $massacreVictim2 is "Ubiwubi")[(set: $ubiAlive to false)]
(if: $massacreVictim3 is "Ubiwubi")[(set: $ubiAlive to false)]
(if: $massacreVictim1 is "Okki")[(set: $okkiAlive to false)]
(if: $massacreVictim2 is "Okki")[(set: $okkiAlive to false)]
(if: $massacreVictim3 is "Okki")[(set: $okkiAlive to false)]
<div class="cw-scene">
<div class="cw-submenu-title">SELECTION</div>
<br><br>
The screens remain dark for several seconds.
<br><br>
A low mechanical hum spreads through the chamber. Thin purple lines begin moving across the central display.
<br><br>
Then a message appears.
<br><br>
**SELECTED PRISONERS**
<br><br>
The first name appears beneath the heading.
<br><br>
<div class="cw-submenu-title">VICTIM 1</div>
<br>
$massacreName1
<br><br>
The display flickers. A second name appears.
<br><br>
<div class="cw-submenu-title">VICTIM 2</div>
<br>
$massacreName2
<br><br>
The chamber grows silent as the final name appears.
<br><br>
<div class="cw-submenu-title">VICTIM 3</div>
<br>
$massacreName3
<br><br>
The three names remain on the screen.
<br><br>
Nobody speaks. Everyone in the chamber now knows exactly who has been selected.
<br><br>
Shiro's voice fills the room.
<br><br>
"Selection complete."
<br><br>
A second message replaces the first.
<br><br>
"The selected prisoners will now proceed to execution."
<br><br>
Three narrow beams of light descend from the ceiling, illuminating separate areas of the central platform.
<br><br>
The collars begin to pulse.
<br><br>
Nobody moves at first.
<br><br>
A final message appears.
<br><br>
**PROCEED TO EXECUTION.**
<br><br>
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[CONTINUE->MassacreDeath]]</div>
</div>
</div>
<script>changeTrack(12);</script>\
(set: $trialMassacreUnlocked to true)
<div class="cw-scene">
<div class="cw-submenu-title">EXECUTION</div>
<br><br>
The chamber lights dim until the red glow is barely visible.
<br><br>
Three narrow beams of light descend from the ceiling, illuminating the selected prisoners.
<br><br>
The rest of the chamber is swallowed by shadow. The survivors stand motionless as the machinery beneath the floor begins to vibrate.
<br><br>
A deep vibration travels through the floor. The collars respond with a series of sharp electronic pulses.
<br><br>
The selected prisoners are ordered forward.
<br><br>
Nobody moves at first.
<br><br>
Then the collars pulse again. The selected participants begin moving toward the center of the chamber.
<br><br>
(if: $massacreVictim1 is "Elysa" or $massacreVictim2 is "Elysa" or $massacreVictim3 is "Elysa")[
Elysa looks back at the surviving prisoners. Her expression is frightened, but she tries to remain composed.
<br><br>
"I hope you guys make it out," she says quietly.
<br><br>
She tries to smile one last time.
<br><br>
"Please don't let this place change who you are."
<br><br>
(if: $bahrmurAlive is true)[
Bahrmur clenches his jaw.
<br><br>
"Don't make promises you can't keep," he mutters. "Just get out of here alive."
<br><br>
]
(if: $lyraeiAlive is true)[
Lyraei's wings lower.
<br><br>
"Elysa... you shouldn't have to be the one comforting us."
<br><br>
]
(if: $trixieAlive is true)[
Trixie opens her mouth as if to make a joke, but nothing comes out.
<br><br>
"Hey. You still owe me a rematch, remember?"
<br><br>
]
(if: $okkiAlive is true)[
Okki gives Elysa a small, solemn nod.
<br><br>
"We'll remember."
<br><br>
]
The light surrounds her. Her final words linger in the silence.
<br><br>
]
(if: $massacreVictim1 is "Bahrmur" or $massacreVictim2 is "Bahrmur" or $massacreVictim3 is "Bahrmur")[
Bahrmur resists for as long as he can. His jaw is clenched, and he keeps his eyes fixed on the mechanism.
<br><br>
When he realizes that resistance will change nothing, his shoulders finally drop.
<br><br>
"So this is how it ends," he mutters.
<br><br>
He looks directly at Shiro.
<br><br>
"You may control this room. That doesn't make you strong."
<br><br>
(if: $elysaAlive is true)[
Elysa takes a frightened step toward him.
<br><br>
"Bahrmur, please. You don't have to prove anything to him."
<br><br>
]
(if: $maxAlive is true)[
Max looks from Bahrmur to the machinery.
<br><br>
"You always acted like nothing could scare you," he says quietly. "I guess I understand why now."
<br><br>
]
(if: $jordAlive is true)[
Jord studies the restraints, searching for a weakness.
<br><br>
"Keep talking to him. Keep him distracted," he mutters, though he knows it probably won't help.
<br><br>
]
(if: $zulkarAlive is true)[
Zul'kar gives a low, humourless laugh.
<br><br>
"At least you have the courage to insult your executioner."
<br><br>
]
The beam of light brightens around him.
<br><br>
]
(if: $massacreVictim1 is "Trixie" or $massacreVictim2 is "Trixie" or $massacreVictim3 is "Trixie")[
Trixie glances around the chamber, searching for a way to turn the situation into another one of her tricks.
<br><br>
There is no trick this time.
<br><br>
"Well," she says, forcing a small smile, "I guess this prank went a little too far."
<br><br>
Her smile fades.
<br><br>
"Don't let him have the last laugh."
<br><br>
(if: $elysaAlive is true)[
Elysa's eyes fill with tears.
<br><br>
"Trixie, you don't have to pretend you're okay."
<br><br>
]
(if: $bahrmurAlive is true)[
Bahrmur looks away for a moment, then forces himself to look back.
<br><br>
"Keep your head up, fairy. Don't give him the satisfaction."
<br><br>
]
(if: $ubiAlive is true)[
Ubiwubi looks desperately at Trixie.
<br><br>
"Maybe... maybe there's still a trick you haven't tried?"
<br><br>
His voice trails off when he sees her expression.
<br><br>
]
(if: $okkiAlive is true)[
Okki's expression hardens.
<br><br>
"For once, you don't have to make anyone laugh."
<br><br>
]
The light surrounds her, and her voice falls silent.
<br><br>
]
(if: $massacreVictim1 is "Zul'kar" or $massacreVictim2 is "Zul'kar" or $massacreVictim3 is "Zul'kar")[
Zul'kar demands to know who authorized the execution, his voice echoing against the metal walls.
<br><br>
Shiro offers no answer.
<br><br>
Zul'kar turns toward the survivors.
<br><br>
"Remember this. If you survive, make them regret that they ever built this place."
<br><br>
He faces the light again.
<br><br>
"I refuse to beg."
<br><br>
(if: $bahrmurAlive is true)[
Bahrmur meets Zul'kar's stare.
<br><br>
"Then don't beg. Make them afraid of what comes next."
<br><br>
]
(if: $jordAlive is true)[
Jord watches Zul'kar carefully.
<br><br>
"Save your strength. If there's a way out, we need every advantage we can get."
<br><br>
]
(if: $lyraeiAlive is true)[
Lyraei looks troubled by his defiance.
<br><br>
"You shouldn't have to prove your courage like this."
<br><br>
]
(if: $trixieAlive is true)[
Trixie swallows and tries to recover her usual smirk.
<br><br>
"Well... you certainly know how to make an exit."
<br><br>
]
<br>
]
(if: $massacreVictim1 is "Lyraei" or $massacreVictim2 is "Lyraei" or $massacreVictim3 is "Lyraei")[
Lyraei spreads her wings, trying to shield herself from the growing light.
<br><br>
She looks toward the sealed doors one last time, then turns toward the survivors.
<br><br>
"I'm sorry," she whispers. "I wish I could have helped you all."
<br><br>
She takes a steadying breath.
<br><br>
"Please remember that kindness was still possible here."
<br><br>
(if: $elysaAlive is true)[
Elysa reaches toward her, stopping just short of the light.
<br><br>
"You did help us, Lyraei. You really did."
<br><br>
]
(if: $bahrmurAlive is true)[
Bahrmur's expression softens.
<br><br>
"You tried to help people in a place that punishes kindness. Don't apologise for that."
<br><br>
]
(if: $trixieAlive is true)[
Trixie looks down at the floor.
<br><br>
"You were always too good for this place."
<br><br>
]
(if: $okkiAlive is true)[
Okki gives Lyraei a solemn nod.
<br><br>
"We'll try to remember."
<br><br>
]
The light grows brighter around her wings.
<br><br>
]
(if: $massacreVictim1 is "Akatamor" or $massacreVictim2 is "Akatamor" or $massacreVictim3 is "Akatamor")[
Akatamor remains silent. He studies the chamber as if he intends to remember every detail of it.
<br><br>
You don't know how... but he speaks.
<br><br>
"So much machinery. So much power. And not a trace of wisdom."
<br><br>
He raises his head toward the screens.
<br><br>
"One day, someone will understand what you failed to."
<br><br>
(if: $jordAlive is true)[
Jord follows Akatamor's gaze, memorising the machinery himself.
<br><br>
"Then make sure we leave with something useful. Anything that can help us break this place."
<br><br>
]
(if: $maxAlive is true)[
Max stares at Akatamor.
<br><br>
"You're still analysing everything, even now?"
<br><br>
He shakes his head.
<br><br>
"I don't know whether that's brave or terrifying."
<br><br>
]
(if: $ubiAlive is true)[
Ubiwubi looks confused.
<br><br>
"Do you really think someone can figure it all out?"
<br><br>
He looks up at the screens.
<br><br>
"I hope you're right."
<br><br>
]
The light consumes the space around him.
<br><br>
]
(if: $massacreVictim1 is "Max" or $massacreVictim2 is "Max" or $massacreVictim3 is "Max")[
Max takes a shaky breath and looks toward the survivors.
<br><br>
"Hey. Don't remember me like this, okay?"
<br><br>
He attempts a smile.
<br><br>
"Remember something better."
<br><br>
(if: $elysaAlive is true)[
Elysa shakes her head, tears gathering in her eyes.
<br><br>
"Max, there's so much more to remember about you than this."
<br><br>
]
(if: $trixieAlive is true)[
Trixie tries to smile back, but her expression wavers.
<br><br>
"You'd better not expect me to say anything nice about you."
<br><br>
She pauses.
<br><br>
"...But I won't forget you."
<br><br>
]
(if: $jordAlive is true)[
Jord looks at Max, his usual focus briefly giving way to sadness.
<br><br>
"We'll remember. Now don't let him take that from you, too."
<br><br>
]
(if: $ubiAlive is true)[
Ubiwubi's eyes widen.
<br><br>
"But... I don't want to remember you like this."
<br><br>
]
The collar gives a final pulse. Max turns toward the light.
<br><br>
]
(if: $massacreVictim1 is "Jord" or $massacreVictim2 is "Jord" or $massacreVictim3 is "Jord")[
Jord keeps looking for a weakness in the chamber, tracking the panels in the walls and the seams around the doors.
<br><br>
There is no opening.
<br><br>
He finally looks toward the survivors.
<br><br>
"If you find a way out, don't waste it."
<br><br>
His gaze returns to the machine.
<br><br>
"And if you ever get the chance, break this place."
<br><br>
(if: $bahrmurAlive is true)[
Bahrmur nods once.
<br><br>
"That, at least, is a plan I can get behind."
<br><br>
]
(if: $akatamorAlive is true)[
Akatamor looks toward the panels Jord was studying.
<br><br>
He writes something on a piece of paper.
<br><br>
"I will remember what you found. If there is a weakness, we will uncover it."
<br><br>
]
(if: $maxAlive is true)[
Max lets out a nervous breath.
<br><br>
"You really can't stop planning, can you?"
<br><br>
He looks toward the doors.
<br><br>
"Fine. We'll find a way."
<br><br>
]
The machinery grows louder around him.
<br><br>
]
(if: $massacreVictim1 is "Ubiwubi" or $massacreVictim2 is "Ubiwubi" or $massacreVictim3 is "Ubiwubi")[
Ubiwubi looks down at the floor, then back at the people watching.
<br><br>
"My grandma always said death would bring you to a place where all gnomes live happily together. I always believed her, but now..."
<br><br>
He pauses, swallowing nervously.
<br><br>
"Is the afterlife really that fun?"
<br><br>
Nobody answers.
<br><br>
"Well, Grandma, I hope you were right."
<br><br>
(if: $elysaAlive is true)[
Elysa's face crumples.
<br><br>
"Oh, Ubiwubi..."
<br><br>
She struggles to find the right words.
<br><br>
"I hope she is there waiting for you."
<br><br>
]
(if: $maxAlive is true)[
Max looks away, unable to keep his usual composure.
<br><br>
"You're supposed to be the one who makes us feel better, little guy."
<br><br>
His voice breaks.
<br><br>
"Not the other way around."
<br><br>
]
(if: $okkiAlive is true)[
Okki bows his head.
<br><br>
"Hold on to that hope, Ubi. It's yours. Nobody here gets to take it away."
<br><br>
]
He closes his eyes as the light grows brighter. One final tear drops from his eyes.
<br><br>
]
(if: $massacreVictim1 is "Okki" or $massacreVictim2 is "Okki" or $massacreVictim3 is "Okki")[
Okki's eyes move across the faces of the survivors.
<br><br>
"I don't know what happens after this," he says. "But I know this place doesn't deserve to decide who we are."
<br><br>
He looks toward the others one final time.
<br><br>
"Stay yourselves. That's how you win."
<br><br>
(if: $elysaAlive is true)[
Elysa nods, trying to hold herself together.
<br><br>
"I'll remember that, Okki. I promise."
<br><br>
]
(if: $bahrmurAlive is true)[
Bahrmur's fists tighten.
<br><br>
"Then we'll survive. And we'll make sure this place doesn't get to decide anything else."
<br><br>
]
(if: $trixieAlive is true)[
Trixie looks at Okki with unusual seriousness.
<br><br>
"You're really going to make it impossible to forget you, aren't you?"
<br><br>
]
(if: $ubiAlive is true)[
Ubiwubi nods quickly, struggling to speak.
<br><br>
"I'll try. I really will."
<br><br>
]
He turns toward the light.
<br><br>
]
(if: $massacreVictim1 is "Player" or $massacreVictim2 is "Player" or $massacreVictim3 is "Player")[
You stumble as the collar tightens against your neck.
<br><br>
You reach for it instinctively, but the metal remains firmly locked in place.
<br><br>
Across the chamber, the others can only watch.
<br><br>
You try to think of something to say. A threat. A joke. A promise that you will find a way out.
<br><br>
Nothing feels big enough.
<br><br>
Finally, you raise your head toward the screen.
<br><br>
"If anyone remembers me," you whisper, "remember that I tried."
<br><br>
You take one final breath.
<br><br>
"Shiro, you don't get to decide what my life meant."
<br><br>
(if: $elysaAlive is true)[
(if: $elysaRep >= 3)[
Elysa takes a step toward you, tears running down her face.
<br><br>
"No. No, please..."
<br><br>
"You don't deserve this. None of us do."
<br><br>
"I wanted us all to get out together."
]
(else-if: $elysaRep <= -3)[
Elysa looks away, visibly conflicted.
<br><br>
"I... I don't know what to say."
<br><br>
She lowers her eyes.
<br><br>
"I wish things hadn't ended like this."
]
(else:)[
Elysa takes a hesitant step toward you.
<br><br>
"No. Please, there has to be another way."
<br><br>
She shakes her head.
<br><br>
"I wanted us all to get out together."
]
<br><br>
]
(if: $bahrmurAlive is true)[
(if: $bahrmurRep >= 3)[
Bahrmur strains against his restraints, his face twisted with anger.
<br><br>
"SHIRO! You coward!"
<br><br>
"Take me instead! If you're so powerful, come down here and face us yourself!"
<br><br>
He keeps fighting against his restraints, refusing to look away from you.
]
(else-if: $bahrmurRep <= -3)[
Bahrmur watches with a grim expression.
<br><br>
"So this is how it ends for you."
<br><br>
He looks toward Shiro's screens.
<br><br>
"Don't mistake this for strength."
]
(else:)[
Bahrmur strains against his restraints.
<br><br>
"SHIRO! You coward!"
<br><br>
He pulls against the restraints again.
<br><br>
"Come down here and face us yourself!"
]
<br><br>
]
(if: $morgrimAlive is true)[
(if: $morgrimHates)[
Morgrim watches you in silence. His red eyes glow with cold satisfaction.
<br><br>
"So. Now you know what it feels like."
<br><br>
He tilts his head slightly.
<br><br>
"You took my life from me. Did you honestly expect me to mourn yours?"
<br><br>
He turns away.
<br><br>
"Good riddance."
]
(else-if: $morgrimRep >= 3)[
Morgrim watches you, his red eyes narrowing.
<br><br>
"So this is how he disposes of people who refuse to play along."
<br><br>
For once, his usual cold composure falters.
<br><br>
"Don't you dare die before this experiment is over."
<br><br>
His gaze shifts toward Shiro's screens.
<br><br>
"I will remember this."
]
(else-if: $morgrimRep <= -3)[
Morgrim watches without moving.
<br><br>
"Pathetic."
<br><br>
His red eyes remain fixed on you.
<br><br>
"At least you won't be around to cause any more trouble."
]
(else:)[
Morgrim watches you in silence. His red eyes narrow.
<br><br>
"So this is how he disposes of people who refuse to play along."
<br><br>
He looks toward the screens.
<br><br>
"Remember this, Shiro. You may control the experiment, but you do not control what it means."
<br><br>
His gaze returns to you.
<br><br>
"I will remember."
]
<br><br>
]
(if: $trixieAlive is true)[
(if: $trixieRep >= 3)[
Trixie's face has gone pale. She desperately searches for one last trick.
<br><br>
"Hey! Come on! This isn't funny!"
<br><br>
She looks at you, her eyes shining.
<br><br>
"You still owe me a rematch, remember?"
<br><br>
Her voice breaks.
<br><br>
"You can't just leave us here!"
]
(else-if: $trixieRep <= -3)[
Trixie folds her arms, forcing an uneasy grin.
<br><br>
"Well, this is awkward."
<br><br>
Her grin fades as she watches the machinery.
<br><br>
"I guess even you couldn't trick your way out of this one."
]
(else:)[
Trixie tries to laugh, but the sound comes out uneven.
<br><br>
"Hey! Come on! This isn't funny!"
<br><br>
She looks at you.
<br><br>
"You still owe me a rematch, remember?"
]
<br><br>
]
(if: $zulkarAlive is true)[
(if: $zulkarRep >= 3)[
Zul'kar watches the execution mechanism, his expression dark.
<br><br>
"So the dungeon takes another one."
<br><br>
He turns toward Shiro's screens.
<br><br>
"Enjoy your victory while you can. Every creature you corner eventually becomes a threat."
<br><br>
He looks back at you.
<br><br>
"Do not let him define you."
]
(else-if: $zulkarRep <= -3)[
Zul'kar watches you with a cold, unreadable expression.
<br><br>
"So. The dungeon has finally found a use for you."
<br><br>
He turns toward the screens.
<br><br>
"Another life wasted. How predictable."
]
(else:)[
Zul'kar watches the execution mechanism, his expression dark.
<br><br>
"So the dungeon takes another one."
<br><br>
"Every creature you corner eventually becomes a threat."
<br><br>
He looks toward the screens.
]
<br><br>
]
(if: $lyraeiAlive is true)[
(if: $lyraeiRep >= 3)[
Lyraei's wings spread instinctively, as if she could somehow shield you from the machinery.
<br><br>
"No! Please, stop!"
<br><br>
She looks toward the screens, pleading.
<br><br>
"There must be another way. There has to be!"
<br><br>
When nothing changes, she turns back to you.
<br><br>
"I'm sorry. You deserved a chance to see the world beyond these walls."
]
(else-if: $lyraeiRep <= -3)[
Lyraei's wings draw close to her body.
<br><br>
She looks at you sadly, but does not approach.
<br><br>
"I wish you had made different choices."
<br><br>
She lowers her gaze.
<br><br>
"I'm sorry it had to end this way."
]
(else:)[
Lyraei's wings spread instinctively.
<br><br>
"No! Please, stop!"
<br><br>
She looks toward the screens.
<br><br>
"There must be another way. There has to be!"
<br><br>
"I'm sorry."
]
<br><br>
]
(if: $akatamorAlive is true)[
(if: $akatamorRep >= 3)[
Akatamor rapidly studies the collar and execution mechanism.
<br><br>
He writes something down on a piece of paper.
<br><br>
"The sequence is irreversible..."
<br><br>
He searches for a flaw, then looks toward Shiro's screens and writes again.
<br><br>
"A mechanism can end a life. It cannot determine its worth."
]
(else-if: $akatamorRep <= -3)[
Akatamor studies the mechanism without approaching.
<br><br>
He writes something down.
<br><br>
"The sequence is irreversible."
<br><br>
He looks toward the screens and adds another note.
<br><br>
"An unfortunate outcome. Nothing more."
]
(else:)[
Akatamor's gaze shifts rapidly between the collar and the execution mechanism.
<br><br>
He writes something down on a piece of paper.
<br><br>
"The sequence is irreversible..."
<br><br>
"There must be a flaw. There is always a flaw."
<br><br>
He looks toward the screens and writes more.
<br><br>
"A mechanism can end a life. It cannot determine its worth."
]
<br><br>
]
(if: $maxAlive is true)[
(if: $maxRep >= 3)[
Max stares at you, struggling to speak.
<br><br>
"No. No, this can't be it."
<br><br>
"You were supposed to make it out. We were supposed to make it out."
<br><br>
His voice falls.
<br><br>
"I don't know what we're supposed to do without you."
]
(else-if: $maxRep <= -3)[
Max looks at you uneasily.
<br><br>
"I never thought it would end like this."
<br><br>
He looks away.
<br><br>
"I don't know what else to say."
]
(else:)[
Max takes a hesitant step forward, then stops as the collar pulses.
<br><br>
"No. This can't be it."
<br><br>
"We were supposed to make it out."
]
<br><br>
]
(if: $jordAlive is true)[
(if: $jordRep >= 3)[
Jord frantically studies the room, searching for a control panel, a loose wire, any possible way to interrupt the sequence.
<br><br>
"There's always something. A switch. A failsafe. Anything..."
<br><br>
He looks toward the mechanism, furious at himself.
<br><br>
"I should have found it sooner."
<br><br>
He meets your eyes.
<br><br>
"I'm sorry."
]
(else-if: $jordRep <= -3)[
Jord studies the mechanism for a moment longer.
<br><br>
"There's no way to interrupt it now."
<br><br>
He looks away, his expression hard to read.
<br><br>
"I can't help you."
]
(else:)[
Jord frantically studies the room, searching for a way to interrupt the sequence.
<br><br>
"There's always something. A switch. A failsafe. Anything..."
<br><br>
He finally looks toward you.
<br><br>
"I should have found it sooner."
]
<br><br>
]
(if: $ubiAlive is true)[
(if: $ubiRep >= 3)[
Ubiwubi looks at you, trembling.
<br><br>
"Wait! Please wait! Maybe there's a mistake!"
<br><br>
He looks around desperately.
<br><br>
"My grandpa always said people could get another chance..."
<br><br>
His voice grows small.
<br><br>
"You should get another chance, too."
]
(else-if: $ubiRep <= -3)[
Ubiwubi watches nervously, unsure where to look.
<br><br>
"I... I don't know what to say."
<br><br>
He lowers his head.
]
(else:)[
Ubiwubi looks at you, trembling.
<br><br>
"Wait! Please wait! Maybe there's a mistake!"
<br><br>
"My grandpa always said people could get another chance..."
<br><br>
He looks down.
<br><br>
"I hope she's right."
]
<br><br>
]
(if: $okkiAlive is true)[
(if: $okkiRep >= 3)[
Okki stands completely still, his expression heavy with grief.
<br><br>
"You tried," he says quietly. "We saw that."
<br><br>
He looks toward Shiro's screens.
<br><br>
"And if you think this makes you powerful, you're wrong."
<br><br>
He looks back at you.
<br><br>
"We won't let this place decide who you were."
]
(else-if: $okkiRep <= -3)[
Okki watches in silence.
<br><br>
"I won't pretend we were friends."
<br><br>
He looks toward the screens.
<br><br>
"But nobody deserves to have their life decided like this."
]
(else:)[
Okki stands completely still, his expression heavy.
<br><br>
"You tried," he says quietly.
<br><br>
He looks toward Shiro's screens.
<br><br>
"We won't let this place decide who you were."
]
<br><br>
]
The chamber disappears into white.
<br><br>
Everything goes dark.
]
(else:)[
The collars emit one final pulse.
<br><br>
The light flashes. For a fraction of a second, every sound in the chamber disappears.
<br><br>
When the lights return to normal, the selected prisoners are gone.
<br><br>
Only the empty spaces beneath the beams remain.
<br><br>
Nobody speaks. Even the survivors seem afraid to breathe too loudly.
<br><br>
Shiro's voice returns, perfectly calm.
<br><br>
"Trial successful."
<br><br>
A door unlocks at the far end of the chamber.
<br><br>
"Survivors may return to the lobby."
<br><br>
Eventually, the survivors begin to leave the chamber.
<br><br>
You follow them, but the final words of the selected prisoners remain in your thoughts.
<br><br>
The trial is over. The dungeon has not changed. You have.
<br><br>
]
<div class="cw-menu-divider"></div>
<br>
<div class="cw-menu-buttons">
(if: $alive is false)[
<div class="cw-menu-button cw-primary">[[CONTINUE->GameOver]]</div>
]
(else:)[
<div class="cw-menu-button cw-primary">[[CONTINUE->Lobby]]</div>
]
</div>
</div><div class="cw-submenu">
<div class="cw-submenu-title">ALL TRIALS COMPLETED</div>
<div class="cw-submenu-text">
You have completed every available trial in this playthrough.
<br><br>
Start a new game to experience them all again.
</div>
<br>
<div class="cw-menu-button">[[RESTART GAME ->StartScreen]]</div>
</div>
W.I.P.
[[Go back->DungeonStart]] ]] <script>changeTrack(7);</script>\
(set: $achOof to true)
(set: $achievementTitle to "Oof")
(set: $achievementDescription to "Die during a run.")
(set: $achievementPopup to true)
(display: "AchievementPopup")
(enchant: ?page, (bg: #080308) + (text-color: #ded2df))
<div class="game-over">
<div class="game-over-blood"></div>
<div class="game-over-topline">OBSIDIAN DUNGEONS // TERMINATION REPORT</div>
<div class="game-over-symbol">✕</div>
<h1 class="game-over-title">GAME OVER</h1>
<div class="game-over-divider"></div>
<p class="game-over-subtitle">SUBJECT TERMINATED</p>
<p class="game-over-name">$name</p>
<p class="game-over-description">
Your journey through the Obsidian Dungeons has ended.
You failed to survive the trial.
</p>
<div class="game-over-stats">
<div class="game-over-stat">
<span>TRIALS SURVIVED</span>
<strong>$trialCount</strong>
</div>
<div class="game-over-stat">
<span>SPELLS COLLECTED</span>
<strong>$spells</strong>
</div>
<div class="game-over-stat">
<span>REPUTATION</span>
<strong>$reputation</strong>
</div>
</div>
<p class="game-over-message">
The dungeon remains.
Your place in it does not.
</p>
<div class="game-over-divider"></div>
<div class="game-over-retry">
[[↻ TRY AGAIN->RestartGame]]
</div>
<div class="game-over-footer">END OF RECORD // SHIRO'S ARCHIVE</div>
</div>
<style>
.game-over {
position: relative;
isolation: isolate;
box-sizing: border-box;
max-width: 680px;
margin: 25px auto;
padding: 38px 26px 25px;
overflow: hidden;
text-align: center;
color: #d8cbd8;
background:
radial-gradient(ellipse at 50% 28%, #48132155, transparent 55%),
linear-gradient(180deg, #130910, #080609 75%);
border: 1px solid #59202f;
box-shadow: 0 0 35px #5d122522, inset 0 0 35px #00000099;
font-family: "Courier New", monospace;
}
.game-over-blood {
position: absolute;
inset: 0;
z-index: -1;
pointer-events: none;
opacity: .65;
background:
radial-gradient(ellipse at 0% 0%, #9e1c3022, transparent 42%),
radial-gradient(ellipse at 100% 100%, #75152a22, transparent 45%),
linear-gradient(180deg, transparent 65%, #25071166);
}
.game-over-topline,
.game-over-footer {
color: #946a7b;
font-size: 10px;
letter-spacing: .18em;
line-height: 1.8;
}
.game-over-symbol {
margin: 34px 0 6px;
color: #b8334c;
font-size: 48px;
text-shadow: 0 0 24px #b21d3a66;
}
.game-over .game-over-title {
margin: 0;
color: #edcbd2;
font-family: "Courier New", monospace;
font-size: clamp(35px, 8vw, 64px);
font-weight: 900;
letter-spacing: .12em;
line-height: 1.15;
text-shadow: 0 0 12px #a82a4244, 0 3px 0 #45111d;
}
.game-over-divider {
width: 75%;
height: 1px;
margin: 22px auto;
background: linear-gradient(90deg, transparent, #9e334d, #e1a0ae55, #9e334d, transparent);
}
.game-over-subtitle {
color: #bd5269;
font-size: 11px;
letter-spacing: .28em;
}
.game-over .game-over-name {
margin: 24px 0 12px;
color: #f1dfe8;
font-size: 25px;
font-weight: bold;
}
.game-over .game-over-description {
max-width: 440px;
margin: 0 auto;
color: #bcaeba;
font-size: 13px;
line-height: 1.9;
}
.game-over-stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
margin: 32px 0;
}
.game-over-stat {
box-sizing: border-box;
padding: 18px 8px;
background: #170c13;
border: 1px solid #48202e;
}
.game-over-stat span {
display: block;
color: #ad8192;
font-size: 9px;
letter-spacing: .08em;
line-height: 1.6;
}
.game-over-stat strong {
display: block;
margin-top: 12px;
color: #e9b9c6;
font-size: 25px;
overflow-wrap: anywhere;
}
.game-over .game-over-message {
color: #9f8292;
font-size: 12px;
font-style: italic;
line-height: 1.9;
}
.game-over .game-over-retry {
margin: 30px auto 24px;
}
.game-over .game-over-retry tw-link {
display: inline-block;
padding: 14px 25px;
color: #f0c6d0 !important;
background: #2a101a;
border: 1px solid #a13a54;
text-decoration: none !important;
text-shadow: none !important;
letter-spacing: .12em;
transition: background .2s, box-shadow .2s;
}
.game-over .game-over-retry tw-link:hover {
background: #451625;
border-color: #d66a83;
box-shadow: 0 0 20px #a52e4533;
}
.game-over-footer {
margin-top: 28px;
font-size: 9px;
}
@media (max-width: 480px) {
.game-over { padding: 28px 14px 20px; }
.game-over-stats { grid-template-columns: 1fr; }
.game-over-stat { padding: 12px; }
.game-over-symbol { margin-top: 24px; }
}
</style>
<div class="cw-scene">
<div class="cw-submenu-title">YOUR NEXT MOVE</div>
<p>You are at <b>(print: $playerLocation)</b>.</p>
<p>Every action gives the murderer time to move.</p>
<div class="cw-menu-buttons">
(if: $playerLocation is "Central Chamber")[
<div class="cw-menu-button">(link: "GO TO WEST HALL")[
(go-to: "MurdererMoveWestHall")
]</div>
<div class="cw-menu-button">(link: "GO TO EAST HALL")[
(go-to: "MurdererMoveEastHall")
]</div>
<div class="cw-menu-button">(link: "GO TO STORAGE")[
(go-to: "MurdererMoveStorage")
]</div>
]
(else-if: $playerLocation is "West Hall")[
<div class="cw-menu-button">(link: "GO TO CENTRAL CHAMBER")[
(go-to: "MurdererMoveChamber")
]</div>
<div class="cw-menu-button">(link: "GO TO EAST HALL")[
(go-to: "MurdererMoveEastHall")
]</div>
]
(else-if: $playerLocation is "East Hall")[
<div class="cw-menu-button">(link: "GO TO CENTRAL CHAMBER")[
(go-to: "MurdererMoveChamber")
]</div>
<div class="cw-menu-button">(link: "GO TO WEST HALL")[
(go-to: "MurdererMoveWestHall")
]</div>
]
(else-if: $playerLocation is "Storage")[
<div class="cw-menu-button">(link: "GO TO CENTRAL CHAMBER")[
(go-to: "MurdererMoveChamber")
]</div>
<div class="cw-menu-button">(link: "ENTER HIDDEN NICHE")[
(go-to: "MurdererMoveNiche")
]</div>
]
(else-if: $playerLocation is "Hidden Niche")[
<div class="cw-menu-button">(link: "RETURN TO STORAGE")[
(go-to: "MurdererMoveStorage")
]</div>
]
<div class="cw-menu-button">(link: "WAIT AND STAY STILL")[
(set: $playerMovePurpose to "Wait")
(go-to: "MurdererActionResolve")
]</div>
<div class="cw-menu-button">(link: "LISTEN FOR FOOTSTEPS")[
(set: $playerMovePurpose to "Listen")
(go-to: "MurdererActionResolve")
]</div>
<div class="cw-menu-button">(link: "HIDE AND HOLD YOUR BREATH")[
(set: $playerMovePurpose to "Hide")
(go-to: "MurdererActionResolve")
]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $murdererTime to $murdererTime + 1)
(set: $playerHidden to false)
(set: $playerTrail to $playerTrail + 1)
<div class="cw-scene">
<div class="cw-submenu-title">DON'T MOVE</div>
<p>You hold your breath and remain perfectly still.</p>
<p>The footsteps pause nearby.</p>
(if: $murderer is "Elysa")[
<p>"Hello?" Elysa calls uncertainly. She sounds nervous.</p>
]
(else-if: $murderer is "Zul'kar")[
<p>Zul'kar stops. The silence feels deliberate.</p>
]
(else-if: $murderer is "Ubiwubi")[
<p>Something clatters nearby. Then everything goes quiet.</p>
]
(else-if: $murderer is "Max")[
<p>Max pauses to examine the corridor before continuing.</p>
]
(else-if: $murderer is "Okki")[
<p>Okki's hoofbeats stop abruptly. You cannot tell what caught his attention.</p>
]
(else-if: $murderer is "Jord")[
<p>Jord pauses and seems to study the corridor, as if piecing together a puzzle.</p>
]
<p>You still have a moment to act, but staying here is becoming risky.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Hide in the storage room->MurdererHideChoice]]</div>
<div class="cw-menu-button">[[Look for another prisoner->MurdererHideFriend]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $murdererTime to $murdererTime + 1)
(set: $murdererHelpedBy to $murdererHelpedBy)
<div class="cw-scene">
<div class="cw-submenu-title">AN UNEXPECTED ALLY</div>
(if: $murdererHelpedBy is "Elysa")[
<p>Elysa steps out from behind the pillar and gestures for you to follow.</p>
<p>"I don't want anyone getting hurt. We need to think before we move."</p>
<p>Her concern seems genuine, but she is clearly frightened.</p>
]
(else-if: $murdererHelpedBy is "Max")[
<p>Max pulls you into the doorway and quietly studies the corridor.</p>
<p>"We shouldn't run blindly. Tell me what you've noticed."</p>
<p>He seems to be piecing together a plan.</p>
]
(else-if: $murdererHelpedBy is "Ubiwubi")[
<p>Ubiwubi beckons you behind the cabinet.</p>
<p>"Good news: I found a hiding spot. Bad news: I may have knocked something over."</p>
<p>He looks toward the corridor, suddenly much less amused.</p>
]
<p>You have found someone willing to cooperate. You still need to decide what to do next.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Hide together in the storage room->MurdererHideChoice]]</div>
<div class="cw-menu-button">[[Ask your contact what they noticed->MurdererHideFriendClues]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $murdererTime to $murdererTime + 1)
<div class="cw-scene">
<div class="cw-submenu-title">WHAT DID YOU NOTICE?</div>
(if: $murdererHelpedBy is "Elysa")[
<p>Elysa thinks carefully before answering.</p>
<p>"I heard footsteps, but I couldn't tell exactly where they went. I was too scared to look."</p>
<p>She seems honest about what she knows — and what she doesn't.</p>
]
(else-if: $murdererHelpedBy is "Max")[
<p>Max quietly reconstructs what happened.</p>
<p>"I heard movement in the corridors. I haven't confirmed a location, so we shouldn't assume too much."</p>
<p>He separates what he knows from what he merely suspects.</p>
]
(else-if: $murdererHelpedBy is "Ubiwubi")[
<p>Ubiwubi scratches his head.</p>
<p>"There was a noise somewhere. Or maybe I made it. Actually, don't quote me on that."</p>
<p>His information might help, but it is difficult to judge how reliable it is.</p>
]
(else:)[
<p>You have nobody beside you who can share useful observations.</p>
]
<p>You still don't know where the murderer is. A guess is not proof.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Head for the storage room->MurdererHideChoice]]</div>
<div class="cw-menu-button">[[Return to the corridor and listen->MurdererHideListen]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $playerMoveAllowed to false)
(set: $playerConnections to (a:))
(if: $playerLocation is "Central Chamber")[
(set: $playerConnections to $chamberConnections)
]
(else-if: $playerLocation is "West Hall")[
(set: $playerConnections to $westHallConnections)
]
(else-if: $playerLocation is "East Hall")[
(set: $playerConnections to $eastHallConnections)
]
(else-if: $playerLocation is "Storage")[
(set: $playerConnections to $storageConnections)
]
(if: $playerConnections contains $playerMoveTarget)[
(set: $playerMoveAllowed to true)
]
(if: $playerMoveAllowed)[
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to $playerMoveTarget)
(set: $playerMovedThisTurn to true)
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(if: $playerLocation is "Central Chamber")[
(set: $suspicionChamber to $suspicionChamber + 1)
(set: $noiseChamber to $noiseChamber + $playerNoise)
]
(else-if: $playerLocation is "West Hall")[
(set: $suspicionWestHall to $suspicionWestHall + 1)
(set: $noiseWestHall to $noiseWestHall + $playerNoise)
]
(else-if: $playerLocation is "East Hall")[
(set: $suspicionEastHall to $suspicionEastHall + 1)
(set: $noiseEastHall to $noiseEastHall + $playerNoise)
]
(else-if: $playerLocation is "Storage")[
(set: $suspicionStorage to $suspicionStorage + 1)
(set: $noiseStorage to $noiseStorage + $playerNoise)
]
(go-to: "MurdererNPCMove")
]
(else:)[
(go-to: "MurdererMoveInvalid")
]
<div class="cw-scene">
<div class="cw-submenu-title">THE HUNT</div>
(if: $playerMovePurpose is "Move")[
<p>(either:
"You hurry from " + $playerPreviousLocation + " to " + $playerLocation + ". Your footsteps echo behind you.",
"You slip into " + $playerLocation + ", trying not to look back.",
"You move from " + $playerPreviousLocation + " to " + $playerLocation + ". Somewhere behind you, something shifts.",
"You reach " + $playerLocation + ". The corridor feels colder than before."
)</p>
]
(else-if: $playerMovePurpose is "Wait")[
<p>(either:
"You stay perfectly still. Every tiny sound seems unbearably loud.",
"You wait without moving. Somewhere nearby, footsteps pause.",
"You hold your position. The silence makes it difficult to tell how close the murderer is.",
"You remain still and listen to the building settle around you."
)</p>
]
(else-if: $playerMovePurpose is "Listen")[
<p>(either:
"You listen carefully. The footsteps seem to come from another part of the dungeon.",
"You hear a faint scrape against stone, followed by silence.",
"You hold your breath and listen. Something moves beyond the nearest doorway.",
"The sounds are difficult to place, but you are certain you are not alone."
)</p>
]
(else-if: $playerMovePurpose is "Hide")[
<p>(either:
"You tuck yourself out of sight and try to control your breathing.",
"You press into the shadows and hope the murderer passes by.",
"You settle into your hiding place. One careless movement could give you away.",
"You stay hidden, listening for any sign that the search is getting closer."
)</p>
]
(if: $murdererLocation is $playerLocation)[
<p><b>The murderer is in your room. You may have only seconds left.</b></p>
]
(else-if: $murdererLocation is $playerPreviousLocation)[
<p><b>The murderer has reached the room you just left.</b></p>
]
(else:)[
<p>(either:
"For now, the footsteps remain somewhere beyond your reach.",
"You cannot tell exactly where the murderer is.",
"The corridors carry distant sounds, but nothing gives away a clear position.",
"You have gained a little distance, but the hunt is far from over."
)</p>
]
<div class="cw-menu-buttons">
<div class="cw-menu-button">
[[Continue->MurdererMovePlayer]]
</div>
</div>
</div>
<div class="cw-scene">
<div class="cw-submenu-title">WHERE NEXT?</div>
<p>Current location: <b>$playerLocation</b></p>
(if: $playerLocation is "Central Chamber")[
[[Go to the West Hall->MurdererMoveChooseWest]]
<br>
[[Go to the East Hall->MurdererMoveChooseEast]]
<br>
[[Go to Storage->MurdererMoveChooseStorage]]
]
(else-if: $playerLocation is "West Hall")[
[[Go to the Central Chamber->MurdererMoveChooseChamber]]
<br>
[[Go to the East Hall->MurdererMoveChooseEast]]
]
(else-if: $playerLocation is "East Hall")[
[[Go to the Central Chamber->MurdererMoveChooseChamber]]
<br>
[[Go to the West Hall->MurdererMoveChooseWest]]
]
(else-if: $playerLocation is "Storage")[
[[Return to the Central Chamber->MurdererMoveChooseChamber]]
]
</div>(set: $playerMoveTarget to "West Hall")
(go-to: "MurdererMove")(set: $playerMoveTarget to "East Hall")
(go-to: "MurdererMove")(set: $playerMoveTarget to "Storage")
(go-to: "MurdererMove")(set: $playerMoveTarget to "Central Chamber")
(go-to: "MurdererMove")
<div class="cw-scene">
<div class="cw-submenu-title">BLOCKED PATH</div>
<p>There is no direct route from this room to your chosen destination.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button">[[Choose another route->MurdererMoveChoose]]</div>
</div>
</div>
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
<div class="cw-scene">
<div class="cw-submenu-title">THE STORAGE ROOM</div>
<p>You slip into the storage room and pull the door shut behind you.</p>
<p>Crates, broken furniture and discarded equipment fill the cramped space. There are plenty of places to conceal yourself, but only one entrance.</p>
<p><i>If the murderer finds you here, escaping may be difficult.</i></p>
<p>You settle into a hiding place and listen for movement outside.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">[[Wait and listen->MurdererHideListen]]</div>
</div>
</div>
<!-- MURDERER TRIAL: NPC LOCATIONS -->
(set: $elysaLocation to "West Hall")
(set: $zulkarLocation to "East Hall")
(set: $maxLocation to "Central Chamber")
(set: $jordLocation to "West Hall")
(set: $ubiLocation to "East Hall")
(set: $okkiLocation to "Central Chamber")
<!-- MURDERER LOCATION -->
(set: $murdererLocation to "Central Chamber")
(if: $murderer is "Elysa")[
(set: $murdererLocation to $elysaLocation)
]
(else-if: $murderer is "Zul'kar")[
(set: $murdererLocation to $zulkarLocation)
]
(else-if: $murderer is "Max")[
(set: $murdererLocation to $maxLocation)
]
(else-if: $murderer is "Jord")[
(set: $murdererLocation to $jordLocation)
]
(else-if: $murderer is "Ubiwubi")[
(set: $murdererLocation to $ubiLocation)
]
(else-if: $murderer is "Okki")[
(set: $murdererLocation to $okkiLocation)
]
(set: $murdererPreviousLocation to $murdererLocation)
(set: $playerPreviousLocation to $playerLocation)
(set: $playerMovedThisTurn to false)
(set: $murdererMovedThisTurn to false)
(set: $playerMovePurpose to "")
(go-to: "MurdererReveal")
<!-- MURDERER TRIAL: NPC MOVEMENT -->
(set: $npcMoveRoll to 0)
(set: $npcMoveChance to 0)
(set: $npcConnections to (a:))
(set: $murdererNextLocation to $murdererLocation)
<!-- PLAN THE MURDERER'S NEXT STEP -->
(if: $murdererLocation is not $playerLocation)[
(if: $murdererLocation is "Central Chamber")[
(if: $playerLocation is "Hidden Niche")[
(set: $murdererNextLocation to "Storage")
]
(else:)[
(set: $murdererNextLocation to $playerLocation)
]
]
(else-if: $murdererLocation is "West Hall")[
(if: $playerLocation is "East Hall")[
(set: $murdererNextLocation to "East Hall")
]
(else:)[
(set: $murdererNextLocation to "Central Chamber")
]
]
(else-if: $murdererLocation is "East Hall")[
(if: $playerLocation is "West Hall")[
(set: $murdererNextLocation to "West Hall")
]
(else:)[
(set: $murdererNextLocation to "Central Chamber")
]
]
(else-if: $murdererLocation is "Storage")[
(if: $playerLocation is "Hidden Niche")[
(set: $murdererNextLocation to "Storage")
]
(else:)[
(set: $murdererNextLocation to "Central Chamber")
]
]
]
<!-- ELYSA -->
(if: $elysaAlive)[
(if: $murderer is "Elysa")[
(set: $elysaLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $elysaLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $elysaLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $elysaLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $elysaLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($elysaSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $elysaLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- ZUL'KAR -->
(if: $zulkarAlive)[
(if: $murderer is "Zul'kar")[
(set: $zulkarLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $zulkarLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $zulkarLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $zulkarLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $zulkarLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($zulkarSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $zulkarLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- MAX -->
(if: $maxAlive)[
(if: $murderer is "Max")[
(set: $maxLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $maxLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $maxLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $maxLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $maxLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($maxSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $maxLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- JORD -->
(if: $jordAlive)[
(if: $murderer is "Jord")[
(set: $jordLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $jordLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $jordLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $jordLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $jordLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($jordSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $jordLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- UBIWUBI -->
(if: $ubiAlive)[
(if: $murderer is "Ubiwubi")[
(set: $ubiLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $ubiLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $ubiLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $ubiLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $ubiLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($ubiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $ubiLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- OKKI -->
(if: $okkiAlive)[
(if: $murderer is "Okki")[
(set: $okkiLocation to $murdererNextLocation)
]
(else:)[
(set: $npcConnections to (a:))
(if: $okkiLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $okkiLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $okkiLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $okkiLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(set: $npcMoveChance to 20 + ($okkiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcConnections's length > 0 and $npcMoveRoll <= $npcMoveChance)[
(set: $okkiLocation to $npcConnections's (random: 1, $npcConnections's length))
]
]
]
<!-- UPDATE MURDERER POSITION -->
(set: $murdererLocation to "Central Chamber")
(if: $murderer is "Elysa")[
(set: $murdererLocation to $elysaLocation)
]
(else-if: $murderer is "Zul'kar")[
(set: $murdererLocation to $zulkarLocation)
]
(else-if: $murderer is "Max")[
(set: $murdererLocation to $maxLocation)
]
(else-if: $murderer is "Jord")[
(set: $murdererLocation to $jordLocation)
]
(else-if: $murderer is "Ubiwubi")[
(set: $murdererLocation to $ubiLocation)
]
(else-if: $murderer is "Okki")[
(set: $murdererLocation to $okkiLocation)
]
<!-- CHECK WHETHER THE MURDERER REACHED THE PLAYER -->
(if: $murdererLocation is $playerLocation)[
(go-to: "MurdererNPCFindPlayer")
]
(else:)[
(go-to: "MurdererMoveResult")
]
<!-- MURDERER TRIAL: INDIVIDUAL NPC MEMORY -->
(set: $npcCurrentLocation to "")
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(set: $npcCurrentSearch to 0)
(set: $npcCurrentInsight to 0)
(set: $npcObservationChance to 0)
(set: $npcObservationRoll to 0)
(set: $npcObservationResult to "")
(set: $npcObservationKey to "")
<!-- ELYSA -->
(if: $elysaAlive)[
(set: $npcCurrentLocation to $elysaLocation)
(set: $npcCurrentSearch to $elysaSearch)
(set: $npcCurrentInsight to $elysaInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($elysaClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You noticed activity here. It might mean someone passed through.")
]
(else:)[
(set: $npcObservationResult to "You noticed something unusual here, but you are unsure what it means.")
]
(set: $elysaLastObservation to $npcObservationResult)
(set: $elysaClues to $elysaClues + (a: $npcObservationKey))
]
]
]
<!-- ZUL'KAR -->
(if: $zulkarAlive)[
(set: $npcCurrentLocation to $zulkarLocation)
(set: $npcCurrentSearch to $zulkarSearch)
(set: $npcCurrentInsight to $zulkarInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($zulkarClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You noticed activity here. Consider which route would make sense next.")
]
(else:)[
(set: $npcObservationResult to "You noticed activity here, but the evidence is incomplete.")
]
(set: $zulkarLastObservation to $npcObservationResult)
(set: $zulkarClues to $zulkarClues + (a: $npcObservationKey))
]
]
]
<!-- MAX -->
(if: $maxAlive)[
(set: $npcCurrentLocation to $maxLocation)
(set: $npcCurrentSearch to $maxSearch)
(set: $npcCurrentInsight to $maxInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($maxClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You noticed activity here. Compare it with what you already know.")
]
(else:)[
(set: $npcObservationResult to "You noticed activity here, but cannot confidently identify a pattern.")
]
(set: $maxLastObservation to $npcObservationResult)
(set: $maxClues to $maxClues + (a: $npcObservationKey))
]
]
]
<!-- JORD -->
(if: $jordAlive)[
(set: $npcCurrentLocation to $jordLocation)
(set: $npcCurrentSearch to $jordSearch)
(set: $npcCurrentInsight to $jordInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($jordClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You examined the signs of recent activity and recorded a possible explanation.")
]
(else:)[
(set: $npcObservationResult to "You noticed signs of recent activity, but cannot draw a reliable conclusion yet.")
]
(set: $jordLastObservation to $npcObservationResult)
(set: $jordClues to $jordClues + (a: $npcObservationKey))
]
]
]
<!-- UBIWUBI -->
(if: $ubiAlive)[
(set: $npcCurrentLocation to $ubiLocation)
(set: $npcCurrentSearch to $ubiSearch)
(set: $npcCurrentInsight to $ubiInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($ubiClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You noticed something unusual. Maybe there are several explanations.")
]
(else:)[
(set: $npcObservationResult to "You noticed something unusual, though you aren't sure what it means.")
]
(set: $ubiLastObservation to $npcObservationResult)
(set: $ubiClues to $ubiClues + (a: $npcObservationKey))
]
]
]
<!-- OKKI -->
(if: $okkiAlive)[
(set: $npcCurrentLocation to $okkiLocation)
(set: $npcCurrentSearch to $okkiSearch)
(set: $npcCurrentInsight to $okkiInsight)
(set: $npcCurrentTrail to 0)
(set: $npcCurrentNoise to 0)
(if: $npcCurrentLocation is "Central Chamber")[
(set: $npcCurrentTrail to $suspicionChamber)
(set: $npcCurrentNoise to $noiseChamber)
]
(else-if: $npcCurrentLocation is "West Hall")[
(set: $npcCurrentTrail to $suspicionWestHall)
(set: $npcCurrentNoise to $noiseWestHall)
]
(else-if: $npcCurrentLocation is "East Hall")[
(set: $npcCurrentTrail to $suspicionEastHall)
(set: $npcCurrentNoise to $noiseEastHall)
]
(else-if: $npcCurrentLocation is "Storage")[
(set: $npcCurrentTrail to $suspicionStorage)
(set: $npcCurrentNoise to $noiseStorage)
]
(set: $npcObservationChance to 25 + ($npcCurrentSearch * 15))
(if: $npcObservationChance > 90)[
(set: $npcObservationChance to 90)
]
(set: $npcObservationRoll to (random: 1, 100))
(if: ($npcCurrentTrail > 0 or $npcCurrentNoise > 0) and $npcObservationRoll <= $npcObservationChance)[
(set: $npcObservationKey to "Activity in " + $npcCurrentLocation)
(if: not ($okkiClues contains $npcObservationKey))[
(if: $npcCurrentInsight >= 2)[
(set: $npcObservationResult to "You noticed recent activity and tried to work out where it might lead.")
]
(else:)[
(set: $npcObservationResult to "You noticed recent activity, but it is difficult to make sense of it.")
]
(set: $okkiLastObservation to $npcObservationResult)
(set: $okkiClues to $okkiClues + (a: $npcObservationKey))
]
]
]
(go-to: "MurdererMoveResult")
<!-- MURDERER TRIAL: NPC DECISIONS -->
(set: $elysaDecision to "")
(set: $zulkarDecision to "")
(set: $maxDecision to "")
(set: $jordDecision to "")
(set: $ubiDecision to "")
(set: $okkiDecision to "")
(set: $elysaTarget to "")
(set: $zulkarTarget to "")
(set: $maxTarget to "")
(set: $jordTarget to "")
(set: $ubiTarget to "")
(set: $okkiTarget to "")
(set: $npcDecisionRoll to 0)
<!-- ELYSA: EMPATHETIC, BUT UNCERTAIN -->
(if: $elysaAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $elysaClues's length > 0 and $npcDecisionRoll <= 40)[
(set: $elysaDecision to "Review what she has noticed")
(set: $elysaTarget to $elysaLocation)
]
(else-if: $npcDecisionRoll <= 65)[
(set: $elysaDecision to "Move cautiously")
(if: $elysaLocation is "Central Chamber")[
(set: $elysaTarget to "West Hall")
]
(else:)[
(set: $elysaTarget to "Central Chamber")
]
]
(else:)[
(set: $elysaDecision to "Listen before moving")
(set: $elysaTarget to $elysaLocation)
]
]
<!-- ZUL'KAR: TACTICAL AND PATIENT -->
(if: $zulkarAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $zulkarClues's length > 0 and $npcDecisionRoll <= 50)[
(set: $zulkarDecision to "Investigate remembered evidence")
(set: $zulkarTarget to $zulkarLocation)
]
(else-if: $npcDecisionRoll <= 80)[
(set: $zulkarDecision to "Check a connected route")
(if: $zulkarLocation is "Central Chamber")[
(set: $zulkarTarget to "East Hall")
]
(else:)[
(set: $zulkarTarget to "Central Chamber")
]
]
(else:)[
(set: $zulkarDecision to "Wait and observe")
(set: $zulkarTarget to $zulkarLocation)
]
]
<!-- MAX: PATTERN RECOGNITION -->
(if: $maxAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $maxClues's length > 1 and $npcDecisionRoll <= 55)[
(set: $maxDecision to "Compare remembered clues")
(set: $maxTarget to $maxLocation)
]
(else-if: $npcDecisionRoll <= 80)[
(set: $maxDecision to "Check a likely route")
(if: $maxLocation is "Central Chamber")[
(set: $maxTarget to "West Hall")
]
(else:)[
(set: $maxTarget to "Central Chamber")
]
]
(else:)[
(set: $maxDecision to "Gather more information")
(set: $maxTarget to $maxLocation)
]
]
<!-- JORD: METHODICAL OBSERVATION -->
(if: $jordAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $jordClues's length > 0 and $npcDecisionRoll <= 55)[
(set: $jordDecision to "Inspect the current room systematically")
(set: $jordTarget to $jordLocation)
]
(else-if: $npcDecisionRoll <= 80)[
(set: $jordDecision to "Follow a possible trail")
(if: $jordLocation is "Central Chamber")[
(set: $jordTarget to "West Hall")
]
(else:)[
(set: $jordTarget to "Central Chamber")
]
]
(else:)[
(set: $jordDecision to "Observe before acting")
(set: $jordTarget to $jordLocation)
]
]
<!-- UBIWUBI: DISTRACTIBLE AND UNPREDICTABLE -->
(if: $ubiAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $ubiClues's length > 0 and $npcDecisionRoll <= 35)[
(set: $ubiDecision to "Investigate something suspicious")
(set: $ubiTarget to $ubiLocation)
]
(else-if: $npcDecisionRoll <= 70)[
(set: $ubiDecision to "Follow a possible lead")
(if: $ubiLocation is "Central Chamber")[
(set: $ubiTarget to "East Hall")
]
(else:)[
(set: $ubiTarget to "Central Chamber")
]
]
(else:)[
(set: $ubiDecision to "Get distracted and pause")
(set: $ubiTarget to $ubiLocation)
]
]
<!-- OKKI: FAST, REACTIVE, BUT IMPULSIVE -->
(if: $okkiAlive)[
(set: $npcDecisionRoll to (random: 1, 100))
(if: $okkiClues's length > 0 and $npcDecisionRoll <= 30)[
(set: $okkiDecision to "React to a suspicious sign")
(set: $okkiTarget to $okkiLocation)
]
(else-if: $npcDecisionRoll <= 80)[
(set: $okkiDecision to "Move quickly to another area")
(if: $okkiLocation is "Central Chamber")[
(set: $okkiTarget to "East Hall")
]
(else:)[
(set: $okkiTarget to "Central Chamber")
]
]
(else:)[
(set: $okkiDecision to "Hesitate and reassess")
(set: $okkiTarget to $okkiLocation)
]
]
(go-to: "MurdererNPCMoveToTarget")
<!-- MURDERER TRIAL: MOVE NPCS TOWARD THEIR TARGETS -->
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(set: $npcMoveRoll to 0)
(set: $npcMoveChance to 0)
<!-- ELYSA -->
(if: $elysaAlive and $elysaTarget is not "")[
(set: $npcConnections to (a:))
(if: $elysaLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $elysaLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $elysaLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $elysaLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $elysaTarget)[
(set: $npcMoveChance to 20 + ($elysaSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $elysaLocation to $elysaTarget)
]
]
(else:)[
(if: $elysaLocation is "Central Chamber")[
(if: $elysaTarget is "West Hall")[
(set: $elysaNextLocation to "West Hall")
]
(else-if: $elysaTarget is "East Hall")[
(set: $elysaNextLocation to "East Hall")
]
(else-if: $elysaTarget is "Storage")[
(set: $elysaNextLocation to "Storage")
]
]
(else:)[
(set: $elysaNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($elysaSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $elysaLocation to $npcNextLocation)
]
]
]
]
<!-- ZUL'KAR -->
(if: $zulkarAlive and $zulkarTarget is not "")[
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(if: $zulkarLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $zulkarLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $zulkarLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $zulkarLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $zulkarTarget)[
(set: $npcMoveChance to 20 + ($zulkarSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $zulkarLocation to $zulkarTarget)
]
]
(else:)[
(if: $zulkarLocation is "Central Chamber")[
(if: $zulkarTarget is "West Hall")[
(set: $npcNextLocation to "West Hall")
]
(else-if: $zulkarTarget is "East Hall")[
(set: $npcNextLocation to "East Hall")
]
(else-if: $zulkarTarget is "Storage")[
(set: $npcNextLocation to "Storage")
]
]
(else:)[
(set: $npcNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($zulkarSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $zulkarLocation to $npcNextLocation)
]
]
]
]
<!-- MAX -->
(if: $maxAlive and $maxTarget is not "")[
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(if: $maxLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $maxLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $maxLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $maxLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $maxTarget)[
(set: $npcMoveChance to 20 + ($maxSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $maxLocation to $maxTarget)
]
]
(else:)[
(if: $maxLocation is "Central Chamber")[
(if: $maxTarget is "West Hall")[
(set: $npcNextLocation to "West Hall")
]
(else-if: $maxTarget is "East Hall")[
(set: $npcNextLocation to "East Hall")
]
(else-if: $maxTarget is "Storage")[
(set: $npcNextLocation to "Storage")
]
]
(else:)[
(set: $npcNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($maxSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $maxLocation to $npcNextLocation)
]
]
]
]
<!-- JORD -->
(if: $jordAlive and $jordTarget is not "")[
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(if: $jordLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $jordLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $jordLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $jordLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $jordTarget)[
(set: $npcMoveChance to 20 + ($jordSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $jordLocation to $jordTarget)
]
]
(else:)[
(if: $jordLocation is "Central Chamber")[
(if: $jordTarget is "West Hall")[
(set: $npcNextLocation to "West Hall")
]
(else-if: $jordTarget is "East Hall")[
(set: $npcNextLocation to "East Hall")
]
(else-if: $jordTarget is "Storage")[
(set: $npcNextLocation to "Storage")
]
]
(else:)[
(set: $npcNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($jordSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $jordLocation to $npcNextLocation)
]
]
]
]
<!-- UBIWUBI -->
(if: $ubiAlive and $ubiTarget is not "")[
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(if: $ubiLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $ubiLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $ubiLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $ubiLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $ubiTarget)[
(set: $npcMoveChance to 20 + ($ubiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $ubiLocation to $ubiTarget)
]
]
(else:)[
(if: $ubiLocation is "Central Chamber")[
(if: $ubiTarget is "West Hall")[
(set: $npcNextLocation to "West Hall")
]
(else-if: $ubiTarget is "East Hall")[
(set: $npcNextLocation to "East Hall")
]
(else-if: $ubiTarget is "Storage")[
(set: $npcNextLocation to "Storage")
]
]
(else:)[
(set: $npcNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($ubiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $ubiLocation to $npcNextLocation)
]
]
]
]
<!-- OKKI -->
(if: $okkiAlive and $okkiTarget is not "")[
(set: $npcConnections to (a:))
(set: $npcNextLocation to "")
(if: $okkiLocation is "Central Chamber")[
(set: $npcConnections to $chamberConnections)
]
(else-if: $okkiLocation is "West Hall")[
(set: $npcConnections to $westHallConnections)
]
(else-if: $okkiLocation is "East Hall")[
(set: $npcConnections to $eastHallConnections)
]
(else-if: $okkiLocation is "Storage")[
(set: $npcConnections to $storageConnections)
]
(if: $npcConnections contains $okkiTarget)[
(set: $npcMoveChance to 20 + ($okkiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $okkiLocation to $okkiTarget)
]
]
(else:)[
(if: $okkiLocation is "Central Chamber")[
(if: $okkiTarget is "West Hall")[
(set: $npcNextLocation to "West Hall")
]
(else-if: $okkiTarget is "East Hall")[
(set: $npcNextLocation to "East Hall")
]
(else-if: $okkiTarget is "Storage")[
(set: $npcNextLocation to "Storage")
]
]
(else:)[
(set: $npcNextLocation to "Central Chamber")
]
(if: $npcNextLocation is not "")[
(set: $npcMoveChance to 20 + ($okkiSpeed * 20))
(set: $npcMoveRoll to (random: 1, 100))
(if: $npcMoveRoll <= $npcMoveChance)[
(set: $okkiLocation to $npcNextLocation)
]
]
]
]
<!-- UPDATE MURDERER LOCATION -->
(set: $murdererLocation to "Central Chamber")
(if: $murderer is "Elysa")[
(set: $murdererLocation to $elysaLocation)
]
(else-if: $murderer is "Zul'kar")[
(set: $murdererLocation to $zulkarLocation)
]
(else-if: $murderer is "Max")[
(set: $murdererLocation to $maxLocation)
]
(else-if: $murderer is "Jord")[
(set: $murdererLocation to $jordLocation)
]
(else-if: $murderer is "Ubiwubi")[
(set: $murdererLocation to $ubiLocation)
]
(else-if: $murderer is "Okki")[
(set: $murdererLocation to $okkiLocation)
]
(if: $playerMovePurpose is "Hide")[
(go-to: "MurdererStorageScene")
]
(else:)[
(go-to: "MurdererMoveResult")
]
<!-- MURDERER TRIAL: SEARCH CURRENT ROOM -->
(set: $npcSearchRoll to 0)
(set: $npcSearchChance to 0)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(set: $npcRoomTarget to "")
(set: $npcSearchFound to false)
<!-- ELYSA -->
(if: $elysaAlive)[
(set: $npcRoomTarget to $elysaLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $elysaLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $elysaLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $elysaLocation is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $elysaLocation is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($elysaSearch * 15) + ($elysaInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $elysaLastObservation to "Elysa found signs of recent activity in " + $elysaLocation + ".")
(set: $elysaClues to $elysaClues + (a: $elysaLastObservation))
]
]
]
<!-- ZUL'KAR -->
(if: $zulkarAlive)[
(set: $npcRoomTarget to $zulkarLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $zulkarLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $zulkarLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $zulkarLocation is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $zulkarLocation is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($zulkarSearch * 15) + ($zulkarInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $zulkarLastObservation to "Zul'kar found signs of recent activity in " + $zulkarLocation + ".")
(set: $zulkarClues to $zulkarClues + (a: $zulkarLastObservation))
]
]
]
<!-- MAX -->
(if: $maxAlive)[
(set: $npcRoomTarget to $maxLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $maxLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $maxLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $maxLocation is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $maxLocation is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($maxSearch * 15) + ($maxInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $maxLastObservation to "Max found signs of recent activity in " + $maxLocation + ".")
(set: $maxClues to $maxClues + (a: $maxLastObservation))
]
]
]
<!-- JORD -->
(if: $jordAlive)[
(set: $npcRoomTarget to $jordLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $jordLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $jordLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $jordLocation is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $jordLocation is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($jordSearch * 15) + ($jordInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $jordLastObservation to "Jord found signs of recent activity in " + $jordLocation + ".")
(set: $jordClues to $jordClues + (a: $jordLastObservation))
]
]
]
<!-- UBIWUBI -->
(if: $ubiAlive)[
(set: $npcRoomTarget to $ubiLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $ubiLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $ubiLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $ubiLocation is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $ubiLocation is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($ubiSearch * 15) + ($ubiInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $ubiLastObservation to "Ubiwubi found signs of recent activity in " + $ubiLocation + ".")
(set: $ubiClues to $ubiClues + (a: $ubiLastObservation))
]
]
]
<!-- OKKI -->
(if: $okkiAlive)[
(set: $npcRoomTarget to $okkiLocation)
(set: $npcRoomTrail to 0)
(set: $npcRoomNoise to 0)
(if: $okkiLocation is "Central Chamber")[
(set: $npcRoomTrail to $suspicionChamber)
(set: $npcRoomNoise to $noiseChamber)
]
(else-if: $okkiLocation is "West Hall")[
(set: $npcRoomTrail to $suspicionWestHall)
(set: $npcRoomNoise to $noiseWestHall)
]
(else-if: $npcRoomTarget is "East Hall")[
(set: $npcRoomTrail to $suspicionEastHall)
(set: $npcRoomNoise to $noiseEastHall)
]
(else-if: $npcRoomTarget is "Storage")[
(set: $npcRoomTrail to $suspicionStorage)
(set: $npcRoomNoise to $noiseStorage)
]
(if: $npcRoomTrail > 0 or $npcRoomNoise > 0)[
(set: $npcSearchChance to 20 + ($okkiSearch * 15) + ($okkiInsight * 5))
(set: $npcSearchRoll to (random: 1, 100))
(if: $npcSearchRoll <= $npcSearchChance)[
(set: $okkiLastObservation to "Okki found signs of recent activity in " + $okkiLocation + ".")
(set: $okkiClues to $okkiClues + (a: $okkiLastObservation))
]
]
]
(go-to: "MurdererMoveResult")
<!-- MURDERER TRIAL: SEARCH FOR PLAYER -->
(set: $murdererFindRoll to 0)
(set: $murdererFindChance to 0)
(set: $murdererFindSearch to 0)
(set: $murdererFindInsight to 0)
(set: $murdererFoundPlayer to false)
(set: $murdererAtPlayer to true)
(set: $murdererFindText to "")
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(if: $murderer is "Elysa")[
(set: $murdererFindSearch to $elysaSearch)
(set: $murdererFindInsight to $elysaInsight)
]
(else-if: $murderer is "Zul'kar")[
(set: $murdererFindSearch to $zulkarSearch)
(set: $murdererFindInsight to $zulkarInsight)
]
(else-if: $murderer is "Max")[
(set: $murdererFindSearch to $maxSearch)
(set: $murdererFindInsight to $maxInsight)
]
(else-if: $murderer is "Jord")[
(set: $murdererFindSearch to $jordSearch)
(set: $murdererFindInsight to $jordInsight)
]
(else-if: $murderer is "Ubiwubi")[
(set: $murdererFindSearch to $ubiSearch)
(set: $murdererFindInsight to $ubiInsight)
]
(else-if: $murderer is "Okki")[
(set: $murdererFindSearch to $okkiSearch)
(set: $murdererFindInsight to $okkiInsight)
]
(if: not $playerHidden)[
(set: $murdererFoundPlayer to true)
(set: $murdererFindText to (either:
"The murderer spots you immediately.",
"You turn—and find the murderer staring straight at you.",
"A shadow moves into view. There is nowhere left to pretend you are alone.",
"The footsteps stop right beside you. The murderer has found you."
))
(go-to: "MurdererCaught")
]
<!-- SEARCH FOR A HIDDEN PLAYER -->
(set: $murdererFindChance to 15 + ($murdererFindSearch * 10) + ($murdererFindInsight * 5))
(if: $playerLocation is "Storage")[
(set: $murdererFindChance to $murdererFindChance - 20)
]
(else-if: $playerLocation is "Hidden Niche")[
(set: $murdererFindChance to $murdererFindChance - 35)
]
(if: $playerLocation is "Central Chamber")[
(set: $murdererFindChance to $murdererFindChance + $noiseChamber)
]
(else-if: $playerLocation is "West Hall")[
(set: $murdererFindChance to $murdererFindChance + $noiseWestHall)
]
(else-if: $playerLocation is "East Hall")[
(set: $murdererFindChance to $murdererFindChance + $noiseEastHall)
]
(else-if: $playerLocation is "Storage")[
(set: $murdererFindChance to $murdererFindChance + $noiseStorage)
]
(if: $murdererFindChance < 5)[
(set: $murdererFindChance to 5)
]
(if: $murdererFindChance > 90)[
(set: $murdererFindChance to 90)
]
(set: $murdererFindRoll to (random: 1, 100))
(if: $murdererFindRoll <= $murdererFindChance)[
(set: $murdererFoundPlayer to true)
(set: $playerHidden to false)
(set: $murdererFindText to (either:
"The murderer notices the movement behind your hiding place.",
"A hand reaches into your hiding place. You have been discovered.",
"The footsteps stop. After a long silence, the murderer turns directly towards you.",
"You hear a quiet movement. Then the hiding place is exposed."
))
(go-to: "MurdererCaught")
]
(else:)[
(set: $murdererFindText to (either:
"The murderer searches nearby, but eventually moves on.",
"Footsteps circle your hiding place. After a tense pause, they fade away.",
"The murderer checks the wrong corner. You remain undiscovered—for now.",
"A shadow passes your hiding place. The murderer hasn't noticed you."
))
(go-to: "MurdererMoveResult")
]
<!-- MURDERER TRIAL: CHASE -->
(if: $murdererIsPlayer)[
(go-to: "MurdererPlayerHunts")
]
(set: $murdererChaseActive to true)
(set: $playerHidden to false)
(set: $chaseConnections to (a:))
(if: $playerLocation is "Central Chamber")[
(set: $chaseConnections to $chamberConnections)
]
(else-if: $playerLocation is "West Hall")[
(set: $chaseConnections to $westHallConnections)
]
(else-if: $playerLocation is "East Hall")[
(set: $chaseConnections to $eastHallConnections)
]
(else-if: $playerLocation is "Storage")[
(set: $chaseConnections to $storageConnections)
]
<div class="cw-scene">
<div class="cw-submenu-title">YOU HAVE BEEN FOUND</div>
<p>The murderer spots you. There is no time to hide again.</p>
(if: $murderer is "Elysa")[
<p>Elysa hesitates for a fraction of a second, visibly conflicted, before moving toward you.</p>
]
(else-if: $murderer is "Zul'kar")[
<p>Zul'kar advances deliberately, watching the exits and trying to cut off your easiest route.</p>
]
(else-if: $murderer is "Max")[
<p>Max studies your position and tries to predict which route you will take.</p>
]
(else-if: $murderer is "Jord")[
<p>Jord watches your feet and shoulders, looking for a clue about your next move.</p>
]
(else-if: $murderer is "Ubiwubi")[
<p>Ubiwubi looks startled, then hurries after you with surprising determination.</p>
]
(else-if: $murderer is "Okki")[
<p>Okki reacts instantly and charges toward you.</p>
]
<p>You are currently in <b>$playerLocation</b>. Choose one of the connected rooms.</p>
<div class="cw-menu-buttons">
(if: $chaseConnections contains "Central Chamber")[
<div class="cw-menu-button">
[[Sprint for the Central Chamber->MurdererChaseCentral]]
</div>
]
(if: $chaseConnections contains "West Hall")[
<div class="cw-menu-button">
[[Try to lose them in the West Hall->MurdererChaseWest]]
</div>
]
(if: $chaseConnections contains "East Hall")[
<div class="cw-menu-button">
[[Dart into the East Hall->MurdererChaseEast]]
</div>
]
(if: $chaseConnections contains "Storage")[
<div class="cw-menu-button">
[[Duck into Storage->MurdererChaseStorage]]
</div>
]
</div>
</div>
(set: $playerMoveTarget to "Central Chamber")
(set: $playerMovePurpose to "Chase")
(go-to: "MurdererChaseResolve")
(set: $playerMoveTarget to "West Hall")
(set: $playerMovePurpose to "Chase")
(go-to: "MurdererChaseResolve")
(set: $playerMoveTarget to "East Hall")
(set: $playerMovePurpose to "Chase")
(go-to: "MurdererChaseResolve")
(set: $playerMoveTarget to "Central Chamber")
(set: $playerMovePurpose to "Chase")
(go-to: "MurdererChaseResolve")
<!-- MURDERER TRIAL: CHASE RESOLUTION -->
(set: $playerMoveAllowed to false)
(set: $playerConnections to (a:))
(if: $playerLocation is "Central Chamber")[
(set: $playerConnections to $chamberConnections)
]
(else-if: $playerLocation is "West Hall")[
(set: $playerConnections to $westHallConnections)
]
(else-if: $playerLocation is "East Hall")[
(set: $playerConnections to $eastHallConnections)
]
(else-if: $playerLocation is "Storage")[
(set: $playerConnections to $storageConnections)
]
(if: $playerConnections contains $playerMoveTarget)[
(set: $playerMoveAllowed to true)
]
(if: not $playerMoveAllowed)[
<div class="cw-scene">
<div class="cw-submenu-title">BLOCKED ROUTE</div>
<p>You cannot reach that room directly from here. The murderer is still closing in.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[CHOOSE ANOTHER ROUTE->MurdererChase]]
</div>
</div>
</div>
]
(else:)[
<!-- PLAYER MOVEMENT -->
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to $playerMoveTarget)
(set: $playerMovedThisTurn to true)
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 2)
(set: $playerNoise to 3)
<!-- MURDERER STATS -->
(set: $murdererSpeed to 0)
(if: $murderer is "Elysa")[
(set: $murdererSpeed to $elysaSpeed)
]
(else-if: $murderer is "Zul'kar")[
(set: $murdererSpeed to $zulkarSpeed)
]
(else-if: $murderer is "Max")[
(set: $murdererSpeed to $maxSpeed)
]
(else-if: $murderer is "Jord")[
(set: $murdererSpeed to $jordSpeed)
]
(else-if: $murderer is "Ubiwubi")[
(set: $murdererSpeed to $ubiSpeed)
]
(else-if: $murderer is "Okki")[
(set: $murdererSpeed to $okkiSpeed)
]
<!-- INITIAL CHASE STATE -->
(set: $murdererCaughtPlayer to false)
(set: $murdererPreviousLocation to $murdererLocation)
(set: $murdererChaseRoll to (random: 1, 20))
(set: $murdererChaseDC to 12)
(set: $murdererChaseText to "The footsteps echo somewhere behind you.")
(if: $murdererLocation is $playerLocation)[
(set: $murdererCaughtPlayer to true)
]
(if: not $murdererCaughtPlayer)[
(if: $murdererChaseRoll + $murdererSpeed >= $murdererChaseDC)[
(set: $murdererConnections to (a:))
(if: $murdererLocation is "Central Chamber")[
(set: $murdererConnections to $chamberConnections)
]
(else-if: $murdererLocation is "West Hall")[
(set: $murdererConnections to $westHallConnections)
]
(else-if: $murdererLocation is "East Hall")[
(set: $murdererConnections to $eastHallConnections)
]
(else-if: $murdererLocation is "Storage")[
(set: $murdererConnections to $storageConnections)
]
(set: $murdererNextLocation to "")
<!-- Choose one adjacent step, never teleport -->
(if: $murdererConnections contains $playerLocation)[
(set: $murdererNextLocation to $playerLocation)
]
(else-if: $murdererLocation is "Storage")[
(set: $murdererNextLocation to "Central Chamber")
]
(else-if: $murdererLocation is "West Hall")[
(if: $playerLocation is "Storage")[
(set: $murdererNextLocation to "Central Chamber")
]
(else-if: $playerLocation is "Central Chamber")[
(set: $murdererNextLocation to "Central Chamber")
]
(else-if: $playerLocation is "East Hall")[
(set: $murdererNextLocation to "East Hall")
]
]
(else-if: $murdererLocation is "East Hall")[
(if: $playerLocation is "Storage")[
(set: $murdererNextLocation to "Central Chamber")
]
(else-if: $playerLocation is "Central Chamber")[
(set: $murdererNextLocation to "Central Chamber")
]
(else-if: $playerLocation is "West Hall")[
(set: $murdererNextLocation to "West Hall")
]
]
(else-if: $murdererLocation is "Central Chamber")[
(if: $playerLocation is "Storage")[
(set: $murdererNextLocation to "Storage")
]
(else-if: $playerLocation is "West Hall")[
(set: $murdererNextLocation to "West Hall")
]
(else-if: $playerLocation is "East Hall")[
(set: $murdererNextLocation to "East Hall")
]
]
(if: $murdererNextLocation is not "")[
(set: $murdererLocation to $murdererNextLocation)
(set: $murdererMovedThisTurn to true)
(set: $murdererChaseText to "The footsteps grow louder. The murderer has moved one room closer.")
]
(else:)[
(set: $murdererChaseText to "You hear movement behind you, but cannot tell where the murderer went.")
]
]
(else:)[
(set: $murdererMovedThisTurn to false)
(set: $murdererChaseText to "You gain a little distance. The footsteps fade for a moment.")
]
]
<!-- FINAL CATCH CHECK -->
(if: $murdererLocation is $playerLocation)[
(set: $murdererCaughtPlayer to true)
]
(if: $murdererCaughtPlayer)[
(set: $murdererChaseActive to true)
(set: $playerHidden to false)
<div class="cw-scene">
<div class="cw-submenu-title">CORNERED</div>
<p>The murderer reaches your room. You have no time to hide.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[FACE THE MURDERER->MurdererCaught]]
</div>
</div>
</div>
]
(else:)[
(set: $murdererChaseActive to true)
<div class="cw-scene">
<div class="cw-submenu-title">THE CHASE</div>
<p>You reach <b>$playerLocation</b>.</p>
<p>$murdererChaseText</p>
<p>The murderer is now in: <b>$murdererLocation</b>.</p>
<p>Chase roll: <b>$murdererChaseRoll</b> + speed <b>$murdererSpeed</b>.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[KEEP RUNNING->MurdererChase]]
</div>
</div>
</div>
]
]
<div class="cw-scene">
<div class="cw-submenu-title">CORNERED</div>
<p>The footsteps stop. The murderer is here.</p>
(if: $murderer is "Elysa")[
<p>Elysa blocks the nearest exit, but she looks uncertain. Her grip tightens as she tries to convince herself that she has control of the situation.</p>
]
(else-if: $murderer is "Zul'kar")[
<p>Zul'kar studies you with cold patience. He has positioned himself between you and the nearest exit. He is waiting to see what you do.</p>
]
(else-if: $murderer is "Max")[
<p>Max watches your hands, your feet and the space behind you. He seems to be calculating which move you are most likely to make.</p>
]
(else-if: $murderer is "Jord")[
<p>Jord stands between you and the exit. His eyes keep moving between the corridors, measuring distances and possible routes.</p>
]
(else-if: $murderer is "Ubiwubi")[
<p>Ubiwubi looks almost as surprised as you are. He glances at the exits, then back at you, apparently trying to improvise a plan.</p>
]
(else-if: $murderer is "Okki")[
<p>Okki looks tense and restless. He keeps shifting his weight, ready to react to your next movement.</p>
]
(else:)[
<p>The murderer watches you carefully. Every second you spend hesitating gives them another chance to act.</p>
]
<!-- REPUTATION + POSSESSION -->
(if: $murderer is "Elysa")[
(if: $reputation >= 5)[
<p>Elysa recognises you. Her expression briefly softens, and she fights to regain control.</p>
<p><b>Elysa:</b> "I know you... Listen to me! Get away before it makes me hurt you!"</p>
]
(else-if: $reputation <= -5)[
<p>Elysa recognises you, but your past actions make it harder for her to trust you. The possession twists that distrust into hostility.</p>
<p><b>Elysa:</b> "I remember you. I don't want to do this... so why does part of me want to?"</p>
]
(else:)[
<p>Elysa's hands tremble as she struggles against the possession.</p>
<p><b>Elysa:</b> "Run! I can't hold it back for much longer!"</p>
]
]
(else-if: $murderer is "Zul'kar")[
(if: $reputation >= 5)[
<p>Zul'kar recognises your reputation, but it barely reaches the person trapped inside him.</p>
<p><b>Zul'kar:</b> "So, they speak well of you. How irrelevant."</p>
]
(else-if: $reputation <= -5)[
<p>Zul'kar seems almost pleased by your reputation. The possession has little trouble turning his hostility into something worse.</p>
<p><b>Zul'kar:</b> "Your reputation precedes you. Let us see if you deserve it."</p>
]
(else:)[
<p>Zul'kar barely reacts to you. Whatever controls him has almost completely swallowed his will.</p>
<p><b>Zul'kar:</b> "Enough. The hunt ends here."</p>
]
]
(else-if: $murderer is "Max")[
(if: $reputation >= 5)[
<p>Max seems to remember your good reputation. For a moment, he tries to reason through what is happening to him.</p>
<p><b>Max:</b> "You have done good things. I know that. Then why am I still trying to stop you?"</p>
]
(else-if: $reputation <= -5)[
<p>Max's calculations turn your bad reputation against you, even as he struggles to understand his own behaviour.</p>
<p><b>Max:</b> "Maybe I should trust you. Maybe I shouldn't. I can't tell which thoughts are mine anymore."</p>
]
(else:)[
<p>Max keeps analysing you, but the possession interferes with his reasoning.</p>
<p><b>Max:</b> "This is wrong. I know it's wrong. So why can't I choose differently?"</p>
]
]
(else-if: $murderer is "Jord")[
(if: $reputation >= 5)[
<p>Jord recognises you and visibly hesitates. He is fighting to keep himself from attacking.</p>
<p><b>Jord:</b> "I know you're not my enemy. Please... don't make me come any closer."</p>
]
(else-if: $reputation <= -5)[
<p>Jord remembers your reputation, but even he seems disturbed by how much the possession is affecting him.</p>
<p><b>Jord:</b> "I have reasons not to trust you. But this... this isn't what I wanted."</p>
]
(else:)[
<p>Jord takes a step forward, then abruptly stops and grips his head.</p>
<p><b>Jord:</b> "Don't come closer. I'm trying to stop. I swear I'm trying."</p>
]
]
(else-if: $murderer is "Ubiwubi")[
(if: $reputation >= 5)[
<p>Ubiwubi remembers your good reputation and desperately tries to resist the possession.</p>
<p><b>Ubiwubi:</b> "You're a good person! I know that! Why can't I make myself stop?!"</p>
]
(else-if: $reputation <= -5)[
<p>Ubiwubi is frightened and confused. Your reputation makes him hesitate, but the possession twists that hesitation into suspicion.</p>
<p><b>Ubiwubi:</b> "I don't know what to believe anymore! Please, just get away from me!"</p>
]
(else:)[
<p>Ubiwubi looks genuinely frightened by his own actions.</p>
<p><b>Ubiwubi:</b> "This isn't me! I don't want to hurt you!"</p>
]
]
(else-if: $murderer is "Okki")[
(if: $reputation >= 5)[
<p>Okki seems to recognise you, but the possession keeps forcing him to advance.</p>
<p><b>Okki:</b> "I know what kind of person you are. I just... can't make my body listen."</p>
]
(else-if: $reputation <= -5)[
<p>Okki's distrust makes his resistance more confused and desperate.</p>
<p><b>Okki:</b> "I should hate you. Maybe I do. But something else is making this decision for me."</p>
]
(else:)[
<p>Okki suddenly stops moving. For a brief moment, he looks uncertain.</p>
<p><b>Okki:</b> "I can hear myself thinking... but something else keeps answering for me."</p>
]
]
<p>You have a moment to act. There is no guarantee that any option will work.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
(link: "RUN FOR AN EXIT")[
(set: $murdererCaughtAction to "run")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "TRICK THEM INTO MAKING A MISTAKE")[
(set: $murdererCaughtAction to "trick")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "TALK AND BUY YOURSELF TIME")[
(set: $murdererCaughtAction to "talk")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "REMIND THEM WHO THEY REALLY ARE")[
(set: $murdererCaughtAction to "remind")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "FIGHT AGAINST THE POSSESSION")[
(set: $murdererCaughtAction to "resist")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "DISTRACT THEM AND SLIP AWAY")[
(set: $murdererCaughtAction to "distract")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "OFFER TO HELP THEM")[
(set: $murdererCaughtAction to "help")
(go-to: "MurdererCaughtHelp")
]
</div>
</div>
<!-- MURDERER TRIAL: CONFRONTATION RESOLUTION -->
(set: $caughtRoll to (random: 1, 100))
(set: $caughtChance to 0)
(set: $caughtResultText to "")
<!-- CALCULATE THE CHANCE OF SUCCESS -->
(if: $murdererCaughtAction is "run")[
(set: $caughtChance to 45)
(if: $playerTrail <= 2)[
(set: $caughtChance to $caughtChance + 10)
]
(if: $playerTrail >= 6)[
(set: $caughtChance to $caughtChance - 15)
]
]
(else-if: $murdererCaughtAction is "trick")[
(set: $caughtChance to 45)
(if: $murderer is "Max")[
(set: $caughtChance to $caughtChance - 15)
]
(if: $murderer is "Ubiwubi")[
(set: $caughtChance to $caughtChance + 10)
]
(if: $murderer is "Elysa")[
(set: $caughtChance to $caughtChance + 10)
]
]
(else-if: $murdererCaughtAction is "talk")[
(set: $caughtChance to 40)
(if: $murderer is "Elysa")[
(set: $caughtChance to $caughtChance + 20)
]
(if: $murderer is "Zul'kar")[
(set: $caughtChance to $caughtChance - 20)
]
(if: $murderer is "Ubiwubi")[
(set: $caughtChance to $caughtChance + 10)
]
]
<!-- KEEP THE CHANCE WITHIN REASONABLE LIMITS -->
(if: $caughtChance < 10)[
(set: $caughtChance to 10)
]
(if: $caughtChance > 80)[
(set: $caughtChance to 80)
]
<!-- DETERMINE THE RESULT -->
(if: $caughtRoll <= $caughtChance)[
(set: $caughtResultText to "You manage to break away before the murderer can stop you.")
(set: $playerHidden to false)
(set: $playerMovePurpose to "Move")
(go-to: "MurdererCaughtEscape")
]
(else:)[
(go-to: "MurdererCaughtDeath")
]
<!-- NEW CONFRONTATION ACTIONS -->
(else-if: $murdererCaughtAction is "remind")[
(set: $caughtChance to 25)
(if: $reputation >= 5)[
(set: $caughtChance to $caughtChance + 25)
]
(else-if: $reputation <= -5)[
(set: $caughtChance to $caughtChance - 10)
]
(if: $murderer is "Elysa" or $murderer is "Ubiwubi")[
(set: $caughtChance to $caughtChance + 20)
]
(else-if: $murderer is "Zul'kar")[
(set: $caughtChance to $caughtChance - 20)
]
]
(else-if: $murdererCaughtAction is "resist")[
(set: $caughtChance to 30)
(if: $reputation >= 5)[
(set: $caughtChance to $caughtChance + 10)
]
(if: $murderer is "Elysa" or $murderer is "Jord" or $murderer is "Ubiwubi")[
(set: $caughtChance to $caughtChance + 15)
]
(else-if: $murderer is "Zul'kar")[
(set: $caughtChance to $caughtChance - 15)
]
]
(else-if: $murdererCaughtAction is "distract")[
(set: $caughtChance to 45)
(if: $murderer is "Max" or $murderer is "Ubiwubi")[
(set: $caughtChance to $caughtChance + 10)
]
(if: $reputation <= -5)[
(set: $caughtChance to $caughtChance + 5)
]
]
(else-if: $murdererCaughtAction is "help")[
(set: $caughtChance to 20)
(if: $reputation >= 5)[
(set: $caughtChance to $caughtChance + 30)
]
(else-if: $reputation <= -5)[
(set: $caughtChance to $caughtChance - 10)
]
(if: $murderer is "Elysa" or $murderer is "Ubiwubi" or $murderer is "Jord")[
(set: $caughtChance to $caughtChance + 20)
]
(else-if: $murderer is "Zul'kar")[
(set: $caughtChance to $caughtChance - 15)
]
]
(set: $playerMoveTarget to "Storage")
(set: $playerMovePurpose to "Chase")
(go-to: "MurdererChaseResolve")
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to "Hidden Niche")
(set: $playerMovedThisTurn to true)
(set: $playerHidden to true)
(set: $playerMovePurpose to "Hide")
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(set: $playerMovementResult to "")
(go-to: "MurdererNPCMove")
/* MurdererMoveWestHall */
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to "West Hall")
(set: $playerMovedThisTurn to true)
(set: $playerHidden to false)
(set: $playerMovePurpose to "Move")
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(set: $playerMovementResult to "")
(go-to: "MurdererNPCMove")
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to "East Hall")
(set: $playerMovedThisTurn to true)
(set: $playerHidden to false)
(set: $playerMovePurpose to "Move")
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(set: $playerMovementResult to "")
(go-to: "MurdererNPCMove")
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to "Central Chamber")
(set: $playerMovedThisTurn to true)
(set: $playerHidden to false)
(set: $playerMovePurpose to "Move")
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(set: $playerMovementResult to "")
(go-to: "MurdererNPCMove")
(set: $playerPreviousLocation to $playerLocation)
(set: $playerLocation to "Storage")
(set: $playerMovedThisTurn to true)
(set: $playerHidden to false)
(set: $playerMovePurpose to "Move")
(set: $murdererTime to $murdererTime + 1)
(set: $playerTrail to $playerTrail + 1)
(set: $playerMovementResult to "")
(go-to: "MurdererNPCMove")
(set: $murdererTime to $murdererTime + 1)
(set: $playerMovedThisTurn to false)
(set: $playerMovementResult to "")
(if: $playerMovePurpose is "Wait")[
(set: $playerMovementResult to "You remain completely still. Somewhere nearby, footsteps shift in the darkness.")
]
(else-if: $playerMovePurpose is "Listen")[
(set: $playerMovementResult to "You stop and listen carefully.")
]
(else-if: $playerMovePurpose is "Hide")[
(set: $playerHidden to true)
(set: $playerMovementResult to "You find cover and hold your breath.")
]
(go-to: "MurdererNPCMove")
<div class="cw-scene">
<div class="cw-submenu-title">A FLICKER OF WHO THEY WERE</div>
(if: $murderer is "Elysa")[
<p>Elysa recoils as you approach. For a moment, the hostile expression on her face disappears.</p>
<p><b>Elysa:</b> "You have to help me. I can feel it taking over everything. I don't know how much of me is left."</p>
]
(else-if: $murderer is "Zul'kar")[
<p>Zul'kar laughs coldly. The possession has almost completely consumed him.</p>
<p><b>Zul'kar:</b> "Help me? There is nothing left here that needs saving."</p>
]
(else-if: $murderer is "Max")[
<p>Max presses a hand against his head. His expression flickers between cold calculation and genuine fear.</p>
<p><b>Max:</b> "Something is rewriting my thoughts. Every time I fight it, I lose another piece of myself."</p>
]
(else-if: $murderer is "Jord")[
<p>Jord takes a step back, visibly struggling to keep his distance.</p>
<p><b>Jord:</b> "Don't come closer! I don't want to hurt you. Please, I can't keep fighting this thing alone."</p>
]
(else-if: $murderer is "Ubiwubi")[
<p>Ubiwubi looks terrified. He tries to reach towards you, but his arm suddenly jerks back.</p>
<p><b>Ubiwubi:</b> "I need help! I can still hear myself, but it won't let me control anything!"</p>
]
(else-if: $murderer is "Okki")[
<p>Okki struggles to speak, as though every word requires an effort.</p>
<p><b>Okki:</b> "I know what I'm doing is wrong. Something else keeps pushing me forward."</p>
]
(if: $reputation >= 5)[
<p>Your good reputation gives them something familiar to hold on to. For a brief moment, their movements become less aggressive.</p>
]
(else-if: $reputation <= -5)[
<p>Your reputation makes them hesitate for different reasons. The possession twists their uncertainty into suspicion.</p>
]
(else:)[
<p>They seem unsure whether they can trust you. The struggle inside them is becoming harder to ignore.</p>
]
<p>You may have reached the person still trapped inside them. But reaching them is not the same as freeing them.</p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
(link: "TRY TO REACH THEM")[
(set: $murdererCaughtAction to "help")
(go-to: "MurdererCaughtResolve")
]
</div>
<div class="cw-menu-button">
(link: "BACK AWAY AND RUN")[
(set: $murdererCaughtAction to "run")
(go-to: "MurdererCaughtResolve")
]
</div>
</div>
</div>
<div class="cw-scene">
<div class="cw-submenu-title">THE END OF THE HUNT</div>
<!-- THE PLAYER'S FAILED ACTION -->
(if: $murdererCaughtAction is "help")[
<p>You reach out, still hoping to reach the person trapped beneath the possession.</p>
<p>For one brief moment, the murderer hesitates. You see recognition in their eyes.</p>
<p><b>You:</b> "You can still fight it! Please, let me help you!"</p>
<p>Then the possession takes control over $murderer again.$murderer's eyes turn completely black. $murderer grabs you by the neck before you can escape.</p>
]
(else-if: $murdererCaughtAction is "remind")[
<p>You remind the murderer of who they used to be.</p>
<p>Their expression flickers with recognition, but the moment passes. They grab you by the neck before you can reach the exit.</p>
]
(else-if: $murdererCaughtAction is "resist")[
<p>You struggle to break free and push past the murderer.</p>
<p>They overpower your attempt and grab you by the neck, leaving you nowhere to run.</p>
]
(else-if: $murdererCaughtAction is "talk")[
<p>You keep talking, trying to hold their attention long enough to escape.</p>
<p>For a moment, they listen. Then they suddenly move and grab you by the neck.</p>
]
(else-if: $murdererCaughtAction is "trick")[
<p>You try to trick the murderer into looking the wrong way.</p>
<p>They realise what you are doing just in time to stop you. Before you can reach the exit, they grab you by the neck.</p>
]
(else-if: $murdererCaughtAction is "distract")[
<p>You create a distraction and dash towards the exit.</p>
<p>The murderer catches you before you reach the doorway and grabs you by the neck.</p>
]
(else:)[
<p>You make a desperate dash for the nearest exit.</p>
<p>The murderer catches you and grabs you by the neck, cutting off your escape.</p>
]
<!-- THE FINAL ATTACK -->
<p>The murderer raises a dagger. You struggle, but the possession gives them complete control.</p>
<p>They drive the dagger into your head. The room falls silent as your vision fades.</p>
<!-- THE MURDERER REALISES WHAT HAPPENED -->
(if: $murderer is "Elysa")[
<p>Elysa releases you and stumbles backwards. She stares at what she has done, horrified.</p>
<p><b>Elysa:</b> "No... NO! I didn't want this! I was trying to stop!"</p>
<p>She drops the dagger and desperately tries to reach you, but it is too late. The possession still twists inside her mind.</p>
]
(else-if: $murderer is "Zul'kar")[
<p>Zul'kar lets go without a hint of remorse. Whatever once made him hesitate has almost completely disappeared.</p>
<p><b>Zul'kar:</b> "The hunt is over."</p>
<p>He turns away, leaving the silence behind him.</p>
]
(else-if: $murderer is "Max")[
<p>Max stares at you, suddenly unable to move. His expression shifts from cold calculation to disbelief.</p>
<p><b>Max:</b> "That wasn't supposed to happen. I could have chosen differently... couldn't I?"</p>
<p>He presses his hands against his head, trying to understand which thoughts were his own.</p>
]
(else-if: $murderer is "Jord")[
<p>Jord drops to his knees beside you. The moment he realises what he has done, his face crumples.</p>
<p><b>Jord:</b> "No. I promised I would stop. I'm sorry... I'm so sorry."</p>
<p>He tries to fight the possession again, but his body no longer obeys him.</p>
]
(else-if: $murderer is "Ubiwubi")[
<p>Ubiwubi backs away in horror. He looks at his hands as though they belong to somebody else.</p>
<p><b>Ubiwubi:</b> "I didn't want to hurt you! Why couldn't I stop?!"</p>
<p>He tries to approach you, but the possession forces him away.</p>
]
(else-if: $murderer is "Okki")[
<p>Okki stands completely still. His expression changes as he understands what he has done.</p>
<p><b>Okki:</b> "I was still in here. I knew what was happening... and I couldn't stop it."</p>
<p>He closes his eyes for a moment. When he opens them again, the possession has returned to the surface.</p>
]
(else:)[
<p>The murderer stares at you for a moment before turning away. Whatever remains of their original self is buried beneath the possession.</p>
]
<!-- CONSEQUENCES OF TRYING TO HELP -->
(if: $murdererCaughtAction is "help")[
<p>You tried to save them, even when they were dangerous. For a brief moment, they understood that. Whether that memory will survive the possession remains unknown.</p>
]
(else-if: $murdererCaughtAction is "remind")[
<p>Your words reached something inside them. For a moment, they remembered who they used to be, but it was not enough to free them.</p>
]
<p><b>Your place in the dungeons is gone.</b></p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[Continue->MurdererTrialDeath]]
</div>
</div>
</div>
<div class="cw-scene">
<div class="cw-submenu-title">TRIAL FAILED</div>
<p>The dungeon falls silent.</p>
<p>Your trial has ended. The Obsidian Skull has witnessed your failure, and there will be no second chance.</p>
(if: $murdererCaughtAction is "help")[
<p>You tried to save someone who was being consumed by the possession. You failed to escape, but your final attempt may have left a mark on the person trapped inside.</p>
]
(else-if: $murdererCaughtAction is "remind")[
<p>You tried to reach the person they used to be. For one brief moment, something seemed to answer. You will never know whether it was enough.</p>
]
(else-if: $murdererCaughtAction is "resist")[
<p>You resisted until the end. The possession was stronger, but you never willingly surrendered to it.</p>
]
(else:)[
<p>The trial has claimed another prisoner. Somewhere in the dungeon, the next trial awaits its next participant.</p>
]
<p><i>Your story ends here.</i></p>
<div class="cw-menu-buttons">
<div class="cw-menu-button cw-primary">
[[Continue->GameOver]]
</div>
</div>
</div>