<<nobr>>
<div class="content-wrapper">
<div id="Dis">⚠️ IMPORTANT ⚠️
This game is intended for audiences 18 years and older. It contains explicit content, including depictions of sexual themes, violence, and other sensitive or potentially disturbing material. Viewer discretion is strongly advised. If you are under 18 or find such content inappropriate, we urge you to exit now. By clicking 'Accept,' you confirm that you are of legal age and choose to proceed at your own discretion.</div>
<div class="links">
[[Accept|StartGame]]
</div>
</div>
<style>
/* Ocultar la barra de UI y elementos no deseados */
#ui-bar, #character-menu, .stat-row, #name {
display: none;
}
/* Estilos para el contenedor principal */
.passage {
max-height: none;
padding: 1em;
}
#story {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.content-wrapper {
width: 90%;
max-width: 45em;
margin: 2vw auto;
}
/* Estilos para el texto de advertencia */
#Dis {
background: #19191999;
width: 100%;
max-width: 45em;
text-align: center;
padding: 1em;
border: 1px solid white;
border-radius: 16px;
color: #ffffff;
font-size: 1.2rem;
font-family: 'Arial', sans-serif;
box-sizing: border-box;
word-wrap: break-word;
overflow-wrap: break-word;
margin: 0 auto;
opacity: 0;
animation: fadeIn 2s forwards;
backdrop-filter: blur(8px);
box-shadow: 0 0 15px #0096ff80;
transition: all 0.3s ease-in-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Estilos para los enlaces */
.links {
margin-top: 1.5em;
}
.links a {
min-width: 120px;
min-height: 44px;
display: flex;
align-items: center;
justify-content: center;
background-color: #19191999;
border: 1px solid rgba(255, 255, 255, 0.6);
border-radius: 16px;
color: #ffffff;
font-size: 1rem;
font-family: 'Arial', sans-serif;
box-sizing: border-box;
padding: 0.5em 1em;
text-decoration: none;
margin: 0.5em;
opacity: 0;
animation: fadeIn 2s forwards;
backdrop-filter: blur(8px);
box-shadow: 0 0 15px rgba(0, 150, 255, 0.5);
transition: background-color 0.3s ease;
}
.links a:hover {
background-color: #0013189e;
}
/* Media Queries para responsividad */
/* Tablets */
@media screen and (max-width: 1024px) {
#Dis {
font-size: 1.1rem;
width: 85%;
padding: 1em;
}
.links a {
font-size: 0.9rem;
padding: 0.5em 1em;
}
}
/* Móviles grandes */
@media screen and (max-width: 768px) {
#story {
padding: 0.5em;
}
#Dis {
font-size: 1rem;
width: 90%;
padding: 0.8em;
}
.links a {
font-size: 0.9rem;
padding: 0.4em 0.8em;
}
}
/* Móviles pequeños */
@media screen and (max-width: 480px) {
#story {
padding: 0.5em;
}
#Dis {
font-size: 0.9rem;
width: 95%;
padding: 0.6em;
backdrop-filter: none; /* Mejorar rendimiento */
box-shadow: none; /* Mejorar rendimiento */
}
.links a {
font-size: 0.8rem;
padding: 0.4em 0.8em;
margin: 0.3em;
backdrop-filter: none; /* Mejorar rendimiento */
box-shadow: none; /* Mejorar rendimiento */
}
}
/* Modo paisaje en móviles */
@media screen and (max-height: 480px) and (orientation: landscape) {
#Dis {
font-size: 0.9rem;
width: 95%;
padding: 0.5em;
margin-bottom: 0.5em;
backdrop-filter: none;
box-shadow: none;
}
.links a {
font-size: 0.8rem;
padding: 0.3em 0.7em;
margin: 0.2em;
backdrop-filter: none;
box-shadow: none;
}
}
</style>
<</nobr>><<if $startgame is true>>
<<fullscreenButton>>
<<include "diary">>
<<include "AudioButton">>
<<else>>
<br>
<br>
<</if>>
<<include "StoryTitle">>
<<script>>
$(document).on(':passagerender', function() {
if (State.variables.bag === 1) {
window.showInventoryButton();
} else if (State.variables.bag === 0) {
window.hideInventoryButton();
}
});
<</script>>
<style>
#character-image-container {
width: 345px;
height: 515px;
border-radius: 10px;
overflow: hidden;
position: relative;
background: none;
top: 4em;
}
#character-menu {
top: 0;
left: 0;
height: 100%;
background: #000a0ec7;
border-right: 1px solid #2e4f69;
}
#character-inventory-toggle {
border: 1px solid #f5deb36e;
}
#character-weapon-quickslot {
position: relative;
width: 30px;
height: 30px;
top: 0px;
left: -278px;
border: 1px solid #f5deb36e;
}
#character-bullet-quickslot {
width: 32px;
height: 32px;
top: 52px;
left: -330px;
border: 1px solid #f5deb36e;
}
#character-health-quickslot {
left: 2px;
border: 1px solid #f5deb36e;
}
#character-sanity-quickslot {
left: 2px;
border: 1px solid #f5deb36e;
}
#character-battery-quickslot {
width: 40px;
height: 40px;
top: 25px;
left: 35px;
border: 1px solid #f5deb36e;
}
#character-health-bar {
border: 1px solid #003615;
}
#character-sanity-bar {
border: 1px solid #002a36;
}
.stat-row {
top: 0em;
left: 5em;
z-index: 20;
}
#lantern-ui {
position: relative;
top: 9em;
left: 18px;
}
.quickbar {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 15px;
padding-top: 44px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
margin-top: 5px;
}
</style><<include "Characters">>
<<include "diary">>
<<include "Countdown">>
<<set $imageList to ["img/backgrounds/intromenu.png", "img/backgrounds/parking.png", "img/backgrounds/lake.png", "img/backgrounds/intromenu2.png", "img/backgrounds/intromenu3.png", "img/backgrounds/intromenu4.png", "img/backgrounds/intromenu5.png"]>>
<<set $imageIndex to 0>>
<<set $InvestigatorRoad = 1>>
<<set $McMoney = 100>>
<<set $Coin = 0>>
<<set $lockpick = 0>>
<<set $DetectiveCorruption = 0>>
<<set $fightTutorial = false>><<nobr>>
<<include "Characters">>
<<if $intro is true>>
<<playSound "music" "media/music/none.mp3" volume:0.5>>
<</if>>
<</nobr>><<set $Mc = {
fullName: $playerName + " Casey",
baseName: $playerName,
img: "img/characters/casey/casey-avatar.png"
}>>
<<set $Casey = {
Name: "Casey",
img: "img/characters/casey/casey-avatar.png",
};>>
<<set $Gabrielayoung = {
Name: "Gabriela Rodriguez",
img: "img/characters/rodriguez/avatar.png",
class: "Npc",
};>>
<<set $Gabriela = {
Name: "Gabriela Rodriguez",
img: "img/characters/rodriguez/avatar2.png",
class: "Npc",
};>>
<<set $Luke = {
Name: "Luke Rainbow",
img: "img/characters/luke/avatar.png",
class: "Npc",
};>>
<<set $Violet = {
Name: "Violet Rainbow",
img: "img/characters/violet/avatar.png",
class: "Npc",
};>>
<<set $Captain = {
Name: "Captain Henry Havook",
img: "img/characters/henry/avatar.png",
class: "Npc",
};>>
<<set $Mayor = {
Name: "Mayor Quentin",
img: "img/characters/mayor/mayorquentin.png",
class: "Npc",
};>>
<<set $Janitor = {
Name: "???",
img: "img/characters/dicki-avatar.jpg",
class: "Npc",
};>>
<<set $Franklin = {
Name: "Franklin Hayes",
img: "img/characters/dicki-avatar.jpg",
class: "Npc",
};>>
<<set $Rust = {
Name: "Rust Cohle",
img: "img/characters/rust/dicki-avatar.jpg",
class: "Npc",
};>>
<<set $Dina = {
Name: "Dina Carter",
img: "img/characters/dina/dicki-avatar.jpg",
class: "Npc",
};>>
<<set $Doc = {
Name: "???",
img: "img/characters/dochome/dochome.jpg",
class: "Npc",
};>>
<<set $DocHome = {
Name: "Doc. Arklich Home",
img: "img/characters/dochome/dochome.jpg",
class: "Npc",
};>>
<<set $Fei = {
Name: "Fei",
img: "img/characters/fei-avatar.jpg",
class: "Npc",
};>>
<<set $Sam = {
Name: "Samantha",
img: "img/characters/sam-avatar.jpg",
class: "Npc",
};>>
<<set $LbPatient = {
Name: "Lobotomized Patient",
img: "img/monsters/patients/lbpatient.jpg",
class: "Npc",
};>>
<<set $MadPatient = {
Name: "Lobotomized Patient",
img: "img/monsters/patients/madpatient.jpg",
class: "Npc",
};>>
<<set $Bruno = {
Name: "Bruno",
img: "img/characters/bruno.jpg",
class: "Npc",
};>>
<<set $Nurse = {
Name: "Mad Nurse",
img: "img/monsters/patients/madpatient.jpg",
class: "Npc",
};>>
<<set $MadNurse = {
Name: "Mad Nurse",
img: "img/monsters/patients/madpatient.jpg",
class: "Npc",
};>>
<<set $Violator = {
Name: "Subject Alpha-IX",
img: "img/monsters/violator.jpg",
class: "Npc",
};>><div id="CBox">
<div id="Ntext">You feel a bit dizzy, with a slight headache that won’t go away. It's an uncomfortable sensation, like the fatigue from a long day finally catching up with you. You’ve barely gotten half an hour of rest in the car, and it doesn't seem to have been enough after two nights spent chasing Gulliver, that damn fast and elusive cat that keeps slipping away.</div>
<<say $Mc>>Damn Gulliver... my head’s spinning... I need a break. I’d better take one of my pills.<</say>>
<div class="links">
<th>[[Pick the pills|intropills]]</th>
</div>
</div>
<<set $wakeup = 1>>
<div id="CBox">
<div id="Ntext">The form is in front of you. At the top, the logo of the New Veris Police Department is clearly visible. It’s a pre-established resignation form, issued by the department.
The "Health-related reasons" box has already been marked for you.</div>
<div id="documentointro">
<div id="textobox"><<textbox "$playerName" "Alina">> Casey
</div>
</div>
<div class="links">
<th>[[Sign|introexit]]</th>
</div>
</div>
<<SanityMessage "New archive">>
<<set $Mc = {
Name: $playerName,
img: "img/characters/casey/casey-avatar.png"
}>>
<<set $avt = 1>>
<<SanityMessage "New archive">>
<<script>>
setup.phoneSystem.addFile("FBI file 01", "img/documents/fbifile_01.png");
<</script>>
<<playAudio "papper" "media/sounds/page.mp3" "sound" "volume:0.5">>
<style>
input, select, textarea {
color: #ffffff;
background-color: #091928;
border: 1px solid #444;
padding: .4em;
}
html[data-outlines] input:focus, html[data-outlines] select:focus, html[data-outlines] textarea:focus, input:hover, select:hover, textarea:hover {
background-color: #3e3423;
border-color: #eee;
}
.links {
left: 1em;
top: -9.8em;
}
.links a {
padding: 10px 15px;
color: white;
text-decoration: none;
border-radius: 5px;
display: inline-block;
font-size: 11px;
}
#textobox {
position: absolute;
top: 58.8em;
left: 18em;
color: #000000;
font-size: 15px;
font-weight: bold;
}
#documentointro {
background-image: url(img/documents/documentointro2.png);
background-size: cover;
position: relative;
top: 18%;
left: 50%;
transform: translate(-50%, -25%);
width: 48em;
height: 62em;
}
#Ntext {
top: -5em;
}
</style>
<div id="CBoxAnimation">
<div id="Ntext">After more than two hours of driving, the journey has become long and monotonous. The sun begins to set as you leave the city behind, venturing into a more desolate landscape. The air in the car feels heavy, and the lonely roads seem to stretch endlessly. Finally, you reach the old parking lot of the psychiatric hospital. The worn asphalt creaks beneath the tires as you move forward, and in the distance, you see several abandoned cars scattered across the area.
You park in one of the empty spaces near the entrance, right next to one of the abandoned cars.</div>
<div class="links">
<th>[[Get out of the car|parkingintro]]</th>
</div>
</div>
<<set $introcase = 3>>
<script>
$(document).ready(() => {
setTimeout(() => {
const box = document.getElementById('CBox');
if (box) {
box.classList.add('visible'); // Se agrega la clase para activar la transición
}
}, 2000); // Retraso de 2 segundos
});
</script>
<<playMusic "music" "media/music/none.mp3" volume:0.5>>
<<set $bag = 1>>
<<set $inside = true>><div id="CBox">
<div id="Ntext">You step out of the car, the sound of the door closing echoing in the empty parking lot. You remain still for a few moments, observing the psychiatric hospital, whose presence feels even more intimidating now that you’re outside the vehicle. The daylight slowly fades, giving way to the impending night. The parking lot is deserted, with several abandoned cars scattered around, covered in dust and rust. As the darkness advances, an uneasy feeling begins to weigh on you. Everything seems immersed in an eerie silence, and the stillness of the scene contrasts with the bad feeling creeping over you.</div>
<<say $Mc>>Great, another night of work... And this makes three in a row lost because of that damn cat. Once again, I have to spend the whole day sleeping.<</say>>
<div id="Ntext">The wind stirs some dry leaves on the ground, making a sound that causes you to glance again, hoping to see nothing more than shadows. The atmosphere feels oppressive, as though the very place is watching you.</div>
<div class="links">
<th>[[Let's go|Parking]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.addObjective(
"New case",
"Enter in the Charles Francis and find some clues.",
'main',
'introQuest' // ID
);
<</script>>
<<SanityMessage "Main objective updated: New case">>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.3>><div id="CBox">
<div id="Ntext">The painted lines have almost vanished beneath the dirt and cracks in the asphalt. A couple of broken streetlights stand like silent specters, their shattered glass reflecting the faint glow of the moon. </div>
<div class="linksTwo">
<th>[[Check your car|YourCarParking]]</th>
<<if $carquest gte 1 && $FBIcar isnot true>>
<th>[[Check abandoned car|Carparking]]</th>
<</if>>
</div>
<div class="links">
<th>[[Other side of the parking|Parking2]]</th>
<<if $maindoorclosed is true>>
<th>[[Go to entrance|noenter]]</th>
<<else>>
<th>[[Go to entrance|PsiquiatricEntrance]]</th>
<</if>>
<th>[[Road to lake|Camino-derecha]]</th>
</div>
</div>
<div id="LocationName">Parking (near the entrance)</div><div id="CBox">
<div id="Ntext">The lake stretches before you, its surface unsettlingly calm, like a dark mirror reflecting the darkness of the night. The fog covers the water, making it difficult to distinguish between the surface and the mist. The smell of stagnant water weighs heavily in the air, and the faint sound of water lapping against the shore is almost drowned out by the overwhelming silence.</div>
<div class="links">
<th>[[Road to parking|Camino-LagoParking]]</th>
<th>[[Lakeshore]]</th>
<th>[[Path to Forest|Camino-lagobosque]]</th>
</div>
</div>
<div id="LocationName">Lake</div>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The ground beneath your feet becomes softer, damp with the moisture rising from the lake. The fog thickens, curling around your ankles as you approach the shore. The faint whisper of the trees seems distant, swallowed by the dense air. The shore is almost within reach, but something about the stillness feels unnatural. The dark, cold water waits in silence, as if holding secrets just beneath its surface.</div>
<<default>>
<div id="Ntext">The fog thickens as you approach, partially covering the lake. The water appears more restless than usual, as if it were a sea or ocean instead of a lake. The air is dense, and the shore feels unnervingly silent.</div>
<</switch>>
<<if $CabinFind isnot 1>>
<div class="linksTwo">
<th>[[Explore the lake|CabinIntro]]</th>
</div>
<</if>>
<div class="links">
<<if $CabinFind gte 1>>
<th>[[Path to cabin|Camino-Cabin]]</th>
<</if>>
<th>[[Back to the lake|Lake]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The fog swirls around the trunks, hiding what lies ahead. Though the lake isn't visible yet, the air already carries its cold, stagnant scent. In addition to the main path leading to the lake, there is a narrow, winding trail that seems to disappear into the mist.</div>
<div class="links">
<th>[[Road to parking|Camino-derecha]]</th>
<th>[[Winding Path|widingpath]]</th>
<th>[[Lake|Lake]]</th>
</div>
</div><div id="CBox">
<<if $maindoorclosed is true>>
<div id="Ntext">The large entrance door remains closed, its heavy structure worn down by time.</div>
<<else>>
<div id="Ntext">The large entrance door is open, revealing a dark interior where the air seems to seep out carrying the scent of dust and decay.</div>
<</if>>
<div class="links">
<<if $intro is 1>>
<th>[[Enter in the psiquiatric|noenter]]</th>
<<else>>
<th>[[Enter in the psiquiatric|MainLobby]]</th>
<</if>>
<th>[[Go to parking|Parking]]</th>
</div>
</div>
<<if $DocHometalk is 1 && $mayorcall is 1 && $maindooropen isnot true>>
<<goto "noenter">>
<</if>>
<<if $DocHometalk is 1 && $mayorcall isnot 1 && $mayorcall isnot 2>>
<<goto "mayorcall">>
<</if>>
<div id="LocationName">Entrance</div>
<<if $maindoorclosed is true>>
<<goto "noenter">>
<</if>>
<<if $inside is true && $firstenter gte 1>>
<<playMusic "music2" "media/music/outsidetheme.mp3" volume:0.5>>
<<playMusic "music" "media/music/none.mp3">>
<<set $inside = false>>
<</if>>
<<setLighting 80>><div id="CBox">
<div id="Ntext">The car is clearly abandoned. The body, covered in dust, and the broken windows suggest it’s been here for a long time. No one has been near it for quite a while.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>There's nothing that can be done with this.<</say>>
<</switch>>
<div class="links">
<th>[[Back|Parking]]</th>
</div>
</div>
<<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext" class="two">You step onto the narrow path, surrounded by shadows and the crunch of earth and branches beneath your feet. As you move forward, the trail becomes more defined, and the air fills with a deep silence. At the end of the path, hidden among the vegetation, you discover a small shed, concealed and secluded, as if it had been waiting to be found.</div>
<div class="links">
<th>[[Path to lake|Camino-LagoParking]]</th>
<th>[[Old shed|shed]]</th>
</div>
<img id="event-image" src="img/events/shed.png">
</div>
<<default>>
<div id="CBox">
<div id="Ntext">You return to the path, the earth crunching beneath your feet. The trail remains clear, and the silence deep. At the end, the shed is still there, hidden among the vegetation, as if waiting to be found again.</div>
<div class="links">
<th>[[Path to lake|Camino-LagoParking]]</th>
<th>[[Old shed|shed]]</th>
</div>
</div>
<</switch>><<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You push open the shed door, which creaks as it opens, stepping into the dimness. Inside, the air is thick, heavy with the scent of old wood and dust. Around you, several stacked boxes and a lone barrel sit on the floor, covered in cobwebs and signs of neglect, as if the place hadn't been touched in years. Against the far wall, an old wooden desk stands unevenly, one leg slightly shorter than the others. Its surface is scratched and dented from age and use. Sitting atop the desk is a dusty, outdated computer tower and monitor, the screen dark and cracked in one corner, as if it had been punched or dropped.</div>
<div class="linksTwo">
<th>[[Check desk|shedDesk]]</th>
<th>[[Old Vending machine|Vendingmachine]]</th>
<<if $CovertizoBuscar isnot 1>>
<th>[[Search in the crates|shedCrates]]</th>
<<else>>
<th>[[Search in the crates|shedNocrates]]</th>
<</if>>
</div>
<div class="links">
<th>[[Exit|widingpath]]</th>
</div>
</div>
<<default>>
<div id="CBox">
<div id="Ntext">You return to the shed. The air is still heavy, and cobwebs cover the untouched boxes and barrel in their abandonment.</div>
<div class="linksTwo">
<th>[[Check desk|shedDesk]]</th>
<th>[[Old Vending machine|Vendingmachine]]</th>
<<if $CovertizoBuscar isnot 1>>
<th>[[Search in the crates|shedCrates]]</th>
<<else>>
<th>[[Search in the crates|shedNocrates]]</th>
<</if>>
</div>
<div class="links">
<th>[[Exit|widingpath]]</th>
</div>
</div>
<</switch>><<set $Randomsearch = random(2)>>
<div id="CBox">
<<if $Randomsearch is 0>>
<div id="Ntext">You find <span style="color: #22b22e;">3 cheap batteries</span>. </div>
<<script>>
window.addCheapBattery(3);
<</script>>
<<SanityMessage "+3 Cheap Batteries">>
<<elseif $Randomsearch is 1>>
<div id="Ntext">You find <span style="color: #22b22e;">12 rounds 9mm</span> and <span style="color: #22b22e;">+1 cheap battery</span>. </div>
<<SanityMessage "+12 rounds 9mm, +1 Cheap Batteries">>
<<script>>
window.addCheapBattery(1);
addAmmo('9mm', 12)
<</script>>
<<elseif $Randomsearch is 2>>
<div id="Ntext">You find <span style="color: #22b22e;">10 incendiary rounds 9mm</span> and <span style="color: #22b22e;">1 cheap battery</span>.</div>
<<script>>
<<SanityMessage "+10 incendiary rounds 9mm, +1 Cheap Batteries">>
window.addCheapBattery(1);
addAmmo('incendiary', 10)
<</script>>
<</if>>
<div class="links">
<th>[[Back|shed]]</th>
</div>
<img id="event-image" src="img/events/shedcrates.png">
</div>
<<set $CovertizoBuscar = 1>><div id="CBox">
<<say $Mc>>Private Detective $Mc.fullName, what can I do for you?<</say>>
<<say $Mayor>>Casey? $Mc.fullName? It’s me, the mayor, Quentin. You remember, right?<</say>>
<div id="Pensamiento">The damn mayor, what the hell does he want? I should hang up.</div>
<<say $Mc>>It’s you, Quentin? How long has it been...? Tell me, why shouldn’t I hang up right now?<</say>>
<<say $Mayor>>Please, Casey, listen to me, this is important. I’m asking for your help, not just me, the whole city is counting on you...<</say>>
<<say $Mc>>Are you kidding me? Hmf... Okey I hear you...<</say>>
<<say $Mayor>>Something strange is happening in the city. I don’t know if you’ve heard, but several girls have gone missing. The families are all over me, damn it, I’m drowning here... coughs... Damn it… I need the best to solve this case, and you’re the best Detective in the city, or at least you were before... well, the tragic incident... you know...<</say>>
<<say $Mc>>Before Henry and you forced me to resign, right? And now you’re calling because you’re desperate?<</say>>
<<say $Mayor>>Listen, you made a lot of mistakes, but... ugh… that’s not why I’m calling you. I know I put you through a rough time, and I get that this isn’t easy. But believe me, this isn’t just another case. There are families on the brink of despair—lives at stake. And besides... I need to fix this before it gets any worse. I don’t know who else to trust.<</say>>
<div id="Pensamiento">He's desperate.</div>
<<say $Mc>>And what are you offering me in return?<</say>>
<<say $Mayor>>I’m offering you a substantial amount, $Mc.baseName. For this is the taxpayer's money. It's a good money, much more than you’ve received before. All I want is for you to solve this damn case. $150,000, what do you say?<</say>>
<br>
<div class="links">
<th>[[Accept the money|introphone1]]</th>
<th>[[I don't want your money|introphone2]]</th>
</div>
</div>
<div id="npc-container">
<img src="img/characters/mayor/mayor.png">
</div>
<<playSound "sound" "media/sounds/none.mp3" loop volume:0.5>><div id="CBox">
<div id="Ntext">You hear the mayor hangs up before you, and you take hold of the phone, gripping it firmly. Adrenaline begins to course through your veins, awakening a feeling you thought you had forgotten. Perhaps, just perhaps, it’s time to become who you once were, even though the path ahead seems quite murky.
You sigh, straighten your shoulders, and focus your mind on what lies ahead.</div>
<div id="Pensamiento">This isn’t going to be easy. But when has it ever been? Two agents missing, a case no one wants to touch, and me... me, seeking redemption. This is straight out of a movie.</div>
<div id="Ntext">You walk around the room, trying to clear your thoughts, turning them into words.</div>
<<say $Mc>>Charles Francis. Psychiatric hospital. Young women kidnapped. It all points to a hell ahead, but I can’t ignore it. If there’s a chance to fix things, to become who I used to be... then there’s no choice. I have to do this.<</say>>
<<if $Naked is true>>
<div id="Ntext">You stop in front of the mirror, looking at your naked body, suppressing the urge to continue.</div>
<<say $Mc>>I'm afraid the good times are over for now... It's time to focus.<</say>>
<<else>>
<div id="Ntext">You stop in front of the mirror, staring at your own reflection with a mix of determination and doubt.</div>
<<say $Mc>>Are you ready for this? Because no one else seems to be.<</say>>
<</if>>
<div class="linksTwo">
<th>[[Check the desk|checkdesk]]</th>
</div>
<div class="links">
<th>[[Go to entrance|introflat2]]</th>
<th>[[Go to bathroom|introtoilet]]</th>
</div>
</div>
<<set $notes = 1>>
<<set $introcase = 2>>
<<script>>
setup.phoneSystem.addObjective(
"New case",
"Grab your gun from the desk drawer.",
'main',
'introQuest' // ID
);
<</script>>
<<SanityMessage "New main objective: Take your gun.">><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You are close to the forest, the tall, dark trees rising like silent sentinels. The air shifts, becoming cooler, filled with the scent of damp leaves and soil. As you move forward, the shadows seem to shift, as if the forest were alive, watching you.</div>
<<default>>
<div id="Ntext">The cool air and the whisper of leaves around you wrapping you in their presence. The shadows follow as you step between the trees.</div>
<</switch>>
<div class="links">
<th>[[Go through the forest|Forest]]</th>
<th>[[Path to parking|Camino-izquierda]]</th>
</div>
</div>
<div id="LocationName">Path between forest and parking</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The night cloaks the forest in an almost total darkness, interrupted only by the faint light of the moon filtering through the branches. The air is cold, and the deep, oppressive silence is suddenly broken by a distant howl. A shiver runs through you as the sound echoes among the trees, followed by other howls rising in response, creating a haunting symphony. The beasts are near, and the forest seems to breathe with them, wrapping you in a sense of imminent danger.</div>
<<say $Mc>>I have bad feelings...<</say>>
<<default>>
<div id="Ntext">The beasts are near, and the forest seems to breathe with them, wrapping you in a sense of imminent danger.</div>
<</switch>>
<div class="linksTwo">
<th>[[Explore the forest|ForestExplore]]</th>
</div>
<div class="links">
<th>[[Path to parking|Camino-bosque]]</th>
<<if $Cave is 1>>
<th>[[Go to the cave|Caveoutside]]</th>
<</if>>
<th>[[Road to lake|Camino-lagobosque]]</th>
</div>
</div>
<div id="LocationName">Forest</div>
<<setLighting 30>><div id="CBox">
<div id="Ntext">The path that connects the lake to the forest winds through the fog, narrowing as you venture deeper into the thicket. The ground is uneven, covered in damp leaves and fallen branches that crack under your steps. In the distance, you can hear the faint murmur of the water. The trees, tall and dark, seem to close in around you, their intertwined branches forming a canopy that barely lets through the light. The atmosphere is thick, as if the forest itself were watching every one of your movements.</div>
<div class="links">
<th>[[Forest|Forest]]</th>
<th>[[Lake|Lake]]</th>
</div>
</div>
<div id="LocationName">Path between the lake and the forest</div>
<<setLighting 70>><div id="CBox">
<div id="Ntext">You open one of the drawers and grab a bottle of pills. You look inside; you take the <span style="color: #22b22e;">4 Calming Pills</span> from inside. Then you look at the table searching for some water, but you only see an empty glass and a bottle of whiskey close to you. There's still a bit of the alcoholic substance left inside.</div>
<div class="links">
<th>[[Drink whisky|introwhisky]]</th>
<th>[[Drink water|intropills2]]</th>
</div>
</div>
<<script>>
addSanityItem('calmingPills',4)
<</script>>
<<SanityMessage "+4 Calming pills">><div id="CBox">
<div id="Ntext">The lobby is dark and dusty, with faint traces of burns on the walls. The wooden counter is covered with yellowed papers and debris. Light filtering through the broken skylights casts shadows on the cracked floor. The distant creak of the building is the only sound.</div>
<div class="linksTwo">
<<if $openleftdoor isnot true>>
<th>[[Check Left Door|DoorLeft]]</th>
<</if>>
<<if $maindoorclosed is true>>
<th>[[Check entrance door|maindoor]]</th>
<</if>>
<<if $DocHometalk is 1 && $mayorcall isnot 2>>
<th>[[Talk to doc. Home|doctalk]]</th>
<</if>>
</div>
<div class="links">
<<if $openleftdoor is true>>
<th>[[Hallway to small office|Left Corridor]]</th>
<</if>>
<th>[[Main hallway]]</th>
<<if $maindoorclosed isnot true>>
<th>[[Outside|PsiquiatricEntrance]]</th>
<</if>>
<th>[[Right hallway|closedcorridor]]</th>
</div>
</div>
<<if $corridorchek is 1 && $doorcorridorchek is 1 && $doorchek is 1 && $DocHometalk isnot 1 && $CabinCheck isnot true>>
<<goto "DocHomemeet">>
<</if>>
<<if $CabinCheck is true && $DocHometalk isnot 1>>
<<goto "DocHomemeet">>
<</if>>
<<if $firstenter isnot 1>>
<<goto "firstenter">>
<</if>>
<<if $openleftdoor is true && $mhr isnot true>>
<<goto "nodoc">>
<</if>>
<<if $MHenemy is true && $MHfight lt 2>>
<<set $MHenemy = false>>
<<set $MHfight = 0>>
<<removecountdown>>
<<playMusic "music3" "media/music/none.mp3" volume:0.5>>
<</if>>
<div id="LocationName">Entrance hall</div>
<<if $inside isnot true || $darksituation is true>>
<<playMusic "music2" "media/music/none.mp3">>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.3>>
<<set $darksituation = false>>
<<set $inside = true>>
<</if>>
<<setLighting 60>>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The Path to cabin is surrounded by overgrown weeds, and the air feels heavier here. The faint light in the window remains, an unexpected presence in this forgotten place, leaving you with the feeling that something doesn't quite fit in the stillness of the surroundings.</div>
<<default>>
<div id="Ntext">The Path to cabin is surrounded by overgrown weeds, and the air feels heavier here. The cabin is near.</div>
<</switch >>
<div class="links">
<th>[[Road to parking|Camino-LagoParking]]</th>
<th>[[Go to cabin|CabinDoor]]</th>
<th>[[Go to lake|Lake]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The cabin door is ajar, creaking softly as the wind pushes it. The faint light inside flickers, casting shadows in the dimness.</div>
<div class="links">
<th>[[Enter cabin|Cabin]]</th>
<th>[[Back to lake|Camino-Cabin]]</th>
</div>
</div>
<<if $CabinMeet is 1 && $carquest isnot 1>>
<<goto "carquest">>
<</if>>
<<if $CabinInside is true>>
<<playMusic "music2" "media/music/outsidetheme.mp3" volume:0.5>>
<<playMusic "music" "media/music/none.mp3">>
<</if>>
<<set $CabinInside = false>><div id="CBox">
<div id="Ntext">Franklin is in the cabin, standing by the table, carefully examining the scattered objects, unaware of your presence.</div>
<div class="linksTwo">
<th>[[Talk to Franklin|Conserje]]</th>
</div>\
<div class="links">
<th>[[Exit|CabinDoor]]</th>
</div>
</div>
<div id="LocationName">Lake cabin</div>
<<if $CabinMeet isnot 1 && $DocHometalk is 1>>
<<goto "CabinMeet">>
<</if>>
<<if $DocHometalk isnot 1>>
<<goto "cabin">>
<</if>>
<<set $CabinInside = true>><div id="CBox">
<<if $NoMoreGirl is true>>
<<say $Franklin>>Hey Casey! Do you want something more? <</say>>
<<else>>
<<say $Franklin>>Hey girl! Do you want something more? <</say>>
<</if>>
<div class="linksTwo">
<th>[[Check the shop|Shop]]</th>
</div>
<div class="links">
<th>[[Questions]]</th>
<th>[[Bye|Cabin]]</th>
</div>
</div>
<<include "Frank">>
<<if $introgun is true>>
<div id="CBox">
<div id="Ntext">You open the drawer again, but there’s nothing left of interest. The flashlight and gun are already in your hands. The drawer is now bare, the faint smell of dust lingering. Time to move on.</div>
<div class="links">
<th>[[Continue|introflat]]</th>
</div>
<img id="event-image" src="img/events/homedesk.png">
</div>
<<else>>
<div id="CBox">
<div id="Ntext">You approach the desk and open the drawer cautiously, letting your fingers explore its contents until you find what you’re looking for. You grip it with practiced familiarity, feeling the weight that has always been a part of you. You carefully draw it from its holster, making sure it’s ready. The sharp click of the safety switching off reminds you that the case has only just begun, and nothing here will be easy. Before moving on, you gather the <span style="color: #22b22e;">50 rounds 9mm</span> from inside. As you continue searching through the drawer, your fingers brush against something else: a flashlight.</div>
<<say $Mc>>This flashlight will surely come in handy.<</say>>
<div class="links">
<th>[[Take the flashlight|introlinterna]]</th>
</div>
<img id="event-image2" src="img/events/homedesk.png">
</div>
<<script>>
addWeapon('Pistol');
addAmmo('9mm', 50)
<</script>>
<</if>><div id="CBox">
<div id="Ntext">You grab the bottle of whiskey and take a swig, the liquid burning your throat as it goes down.</div>
<<say $Mc>> ¡Cof, cof!<</say>>
<<if $Naked is true>>
<div id="Pensamiento">I know this only takes me further from what I really want. It's better not to fall back into those old habits, or everything I've rebuilt will crumble.</div>
<div id="Ntext">As you think, your hand glides gently over your body, brushing across your chest before slowly descending.</div>
<div id="Pensamiento">Hmm... I didn’t realize how desperate I was for action. It’s probably best if I focus on the Gulliver rescue case, but I’m so excited... I don’t even remember the last time.</div>
<<else>>
<div id="Pensamiento">A momentary relief. But I know this only takes me further from what I really want. It's better not to fall back into those old habits, or everything I've rebuilt will crumble.
It’s probably better I get to work on the Gulliver rescue case. The client is getting quite restless. </div>
<</if>>
<div class="links">
<<if $Naked is true>>
<th>[[Descend the hand|intromasturbation]]</th>
<</if>>
<th>[[Check the missing poster|introcaseold]]</th>
</div>
</div>
<<script>>
window.decreaseHealth(10);
<</script>>
<<SanityMessage "-10 Health">>
<div id="CBox">
<<say $Mc>>I'm not interested, Quentin. I don't want your money or your case.<</say>>
<<say $Mayor>>I understand, but let me offer you something else. If you take this case, I can pull some strings to get your badge back. I assure you that getting you back in the game will be the least of your worries.<</say>>
<div id="Pensamiento">Getting my badge back... That really changes things.</div>
<<say $Mayor>>The latest evidence points to the Charles Francis psychiatric hospital on the outskirts of the city. This is serious... Two of my best agents, Dina Carter and Rust Cohle, disappeared while investigating the place. It's as if they vanished into thin air. <</say>>
<div id="Pensamiento">I know Cohle, he's one of the good ones, I can't believe he's gone. The last I heard of Rust was that he joined the FBI, and I didn't know he worked directly for the mayor. Dina should be her partner.</div>
<<say $Mc>>Charles Francis? That place has been abandoned for over a decade. I didn't think anyone would be interested in it...<</say>>
<<say $Mayor>>I thought the same. But now, I don't know what to believe. Dina and Rust weren’t rookies, they were experienced agents. If they disappeared like this, something's wrong. I don't want to conduct a raid, at least not yet. That would be all over the news.<</say>>
<div id="Pensamiento">What a complete jerk.</div>
<<say $Mc>>So, you think the place is involved? Or maybe someone’s playing games with us?<</say>>
<<say $Mayor>>I don't know. But with all these disappearances and no answers, time is running out. The elections are right around the corner. I need someone who can think outside the box. Someone who can get answers where others have failed.<</say>>
<div id="Pensamiento">It's clear he's looking for someone expendable... But the truth is, the case has really piqued my interest.</div>
<<say $Mc>>I'll take a look at Charles Francis. If Dina and Rust are alive, I'll find them.<</say>>
<<say $Mayor>> I knew I could count on you Casey. I’ll send you the files, everything we have on the case, including the raid reports and any other details we’ve gathered. And I won’t forget about the badge, you’ll have it by tomorrow!<</say>>
<<say $Mc>>I’ll get started. This won’t be another dead-end.<</say>>
<<say $Mayor>>This can’t wait. Do you hear me, Casey? We need you to get moving immediately. And remember, this case has to stay completely under wraps. No one else can know.<</say>>
<<say $Mc>>I understand...<</say>>
<<say $Mayor>>Don’t let us down. <</say>>
<div class="links">
<th>[[Hang up the phone|introcase]]</th>
</div>
</div>
<div id="npc-container">
<img src="img/characters/mayor/mayor.png">
</div>
<<set $introcase = 1>>
<<set $InvestigatorRoad += 1>><div id="CBox">
<div id="Ntext">You spot a flashlight tucked in the back of the drawer. It's small but sturdy, a good tool for dark places. You grab it, feeling the cool metal surface as you twist the cap to check the batteries. It’s good to go. With both <span style="color: #22b22e;">the gun</span> and <span style="color: #22b22e;">flashlight</span> in hand, you close the drawer, ready to face what lies ahead.</div>
<div class="links">
<th>[[Back|introflat]]</th>
</div>
<img id="event-image2" src="img/events/homedesk.png">
</div>
<<if $FlashlightTutorial isnot true>>
<<set $FlashlightTutorial = true>>
<div id="flashlightTutorialModal" class="modal">
<div class="modal-content">
<span class="close-button" onclick="document.getElementById('flashlightTutorialModal').style.display='none'">×</span>
<h2>Flashlight Tutorial</h2>
<p><strong>Goal:</strong> Use the flashlight to improve accuracy in dark areas and discover hidden objects.</p>
<div class="modal-section">
<div class="modal-column">
<strong>Controls:</strong>
<ul>
<li>Equip the flashlight to illuminate dark areas.</li>
<li>The flashlight has limited battery life. You will need batteries to recharge it.</li>
</ul>
</div>
<div class="modal-column">
<strong>Additional Tips:</strong>
<ul>
<li>There are three types of batteries: Cheap, Normal, and Duracell. Each battery type has a different duration, with higher-quality batteries lasting longer.</li>
<li>Using the flashlight will help you discover things in the dark. For example, if you enter a room without light, you won't be able to see or interact with anything unless the flashlight is on (You need to turn on the flashlight and re-enter the room).</li>
<li>Use the flashlight in dark areas to gain an accuracy bonus when shooting.</li>
<li>Be cautious: the flashlight's light attracts enemies, increasing the chance of encounters.</li>
<li>Manage your batteries carefully, as the flashlight is essential in rooms and hallways with low lighting.</li>
</ul>
</div>
</div>
<div style="text-align: center; margin-top: 20px;">
<button id="continueButtonFlashlight" class="continue-button">Continue</button>
</div>
</div>
</div>
<<script>>
$(document).on(':passagedisplay', function () {
// Show modals if they exist in the DOM
if ($("#combatTutorialModal").length) {
$("#combatTutorialModal").css("display", "block");
}
if ($("#flashlightTutorialModal").length) {
$("#flashlightTutorialModal").css("display", "block");
}
// Remove existing click handlers and add new ones
$(document).off("click", "#continueButtonCombat, #continueButtonFlashlight, .close-button").on("click", "#continueButtonCombat, #continueButtonFlashlight, .close-button", function () {
// Close the specific modal based on the button clicked
if ($(this).is("#continueButtonCombat") || $(this).closest("#combatTutorialModal").length) {
$("#combatTutorialModal").css("display", "none");
}
if ($(this).is("#continueButtonFlashlight") || $(this).closest("#flashlightTutorialModal").length) {
$("#flashlightTutorialModal").css("display", "none");
}
});
});
<</script>>
<</if>>
<style>
p {
text-align: center;
color: #e9e9e9;
}
b, strong {
font-weight: 700;
color: #d3bd7b;
}
.modal {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
justify-content: center;
align-items: center;
margin: 0;
padding: 0;
}
.modal-content {
background: rgba(20, 20, 20, 0.9);
border: 3px solid #634d23;
border-radius: 5px;
padding: 20px;
max-width: 660px;
max-height: 80vh;
overflow-y: auto;
color: #d9c27e;
font-family: 'Trajan Pro', 'Times New Roman', serif;
position: relative;
margin: auto;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.modal-content h2 {
text-align: center;
color: #ffcc00;
margin-bottom: 0px;
position: relative;
top: -1em;
}
.close-button {
color: #ffcc00;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
position: relative;
top: -1.7em;
}
.modal-section {
display: flex;
flex-wrap: wrap;
}
.modal-column {
flex: 1;
min-width: 250px;
padding: 38px;
margin-bottom: -5em;
margin-top: -3em;
color: #e9e9e9;
}
.modal-content ul {
list-style-type: disc;
padding-left: 20px;
line-height: 1.6;
}
.continue-button {
padding: 10px 20px;
background-color: #3e3423;
color: #d9c27e;
border: 1px solid #634d23;
border-radius: 3px;
cursor: pointer;
font-family: 'Trajan Pro', 'Times New Roman', serif;
font-size: 16px;
transition: all 0.2s;
text-shadow: 1px 1px 1px #000;
}
.continue-button:hover {
background-color: #3e3423;
}
</style>
<<script>>
UIAnimations.showLantern();
<</script>>
<<script>>
UIAnimations.showBatteryQuickslot();
<</script>>
<<set $introgun = true>>
<<script>>
setup.phoneSystem.addObjective(
"New case",
"Travel to the abandoned mental institution Charles Francis.",
'main',
'introQuest' // ID
);
<</script>>
<<SanityMessage "Added Lantern">>
<<timed 2s>>
<<SanityMessage "New main objective: Travel to the Charles Francis mental institution.">>
<</timed>>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">When you return to the door, you find it closed. You approach and push, but it doesn’t move. It’s blocked from the other side.</div>
<<say $Mc>>What the hell?, Hey! Doctor Home, open the door! Home!<</say>>
<div id="Ntext">You yell and pound on the door, but it’s useless. You get no response, and the door remains shut.</div>
<<say $Mc>>God, how could I be so stupid?<</say>>
<div id="Pensamiento">Well, at least now I have a main suspect.</div>
<<say $Mc>>I need to find a way in and locate Home.<</say>>
<<script>>
setup.phoneSystem.addObjective(
"A way to enter",
"Inspect the surroundings and find a way to re-enter the building.",
'main',
'enterQuest' // ID
);
<</script>>
<<SanityMessage "Main objective updated: A way to enter">>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<default>>
<div id="Ntext">The door is closed from the other side.</div>
<</switch>>
<div class="links">
<th>[[Go back|Parking]]</th>
</div>
</div>
<<set $maindoorclosed = true>>
<<set $mayorcall = 2>>
<div id="CBox">
<div id="Ntext">From here, you can only see two paths.
To your left, a trail leads into the forest. The trees form a natural canopy, and the ground is covered with fallen leaves. The path is dark and silent.
To your right, a simpler path leads back to the parking lot and goes around the building.</div>
<<if $mayorcall is 2>>
<div class="linksTwo">
<th>[[Inspect the building|buildinginspect]]</th>
</div>
<</if>>
<div class="links">
<th>[[Path to Forest|Camino-bosque]]</th>
<th>[[Parking|Parking2]]</th>
<th>[[Go around the building|Camino-izquierda2]]</th>
</div>
</div>
<<if $Windowcrash is true && $bwinfight2 isnot true && $patientcome is 1>>
<<removecountdown>>
<<set $patientcome = 0>>
<</if>>
<div id="LocationName">Left path</div>
<<if $inside is true && $firstenter gte 1>>
<<playMusic "music2" "media/music/outsidetheme.mp3" volume:0.5>>
<<playMusic "music" "media/music/none.mp3">>
<<set $inside = false>>
<</if>>\
<<playMusic "music3" "media/music/none.mp3">>
<<setLighting 80>><div id="CBox">
<div id="Ntext">He edges along the building to the right, its cracked pavement making the walk a little difficult. The walls, worn and covered in mold, have barred windows that seem to watch over the silent path. On one side, the bare trees rise like twisted shadows.</div>
<<if $mayorcall gte 1 && $Windowcrash isnot true>>
<div class="linksTwo">
<th>[[Inspect the building|buildinginspect2]]</th>
</div>
<</if>>
<div class="links">
<th>[[Parking|Parking]]</th>
<th>[[Go around the building|Camino-intermedio]]</th>
<th>[[Road to lake|Camino-LagoParking]]</th>
</div>
</div><div id="CBox">
<<if $escalerarota isnot true>>
<div id="Ntext">The walls are covered in cracks and moss. A rusty staircase clings to the wall, its structure corroded by time. Each step looks fragile, as if it could give way under a single footstep.</div>
<<else>>
<div id="Ntext">The walls are covered in cracks and moss. Where there was once a staircase, only twisted remnants of rusted metal remain. The steps have collapsed, leaving a dangerous gap that blocks access to the upper floors.</div>
<</if>>
<div class="linksTwo">
<<if $mayorcall gte 1 && $ironbaritem isnot true>>
<th>[[Inspect the building|buildinginspect3]]</th>
<</if>>
<<if $escalerarota is true && $ironbaritem isnot true>>
<th>[[Inspect the broken stair|ironbarStair]]</th>
<</if>>
</div>
<div class="links">
<th>[[Path to forest|Camino-izquierda2]]</th>
<th>[[Road to lake|Camino-derecha2]]</th>
</div>
</div>
<div id="LocationName">Back side</div><div id="CBox">
<div id="Ntext">As you explore the area near the lake, you move through the underbrush until your steps come to a halt. Through the branches and the water's reflection, you spot a small wooden cabin. At first glance, it seems as abandoned as the rest of the place, with a worn roof and walls covered in mold, but something makes you furrow your brow: a faint light is shining from one of the windows. You stand still, watching carefully.</div>
<div id="Pensamiento">Light? Here, in the middle of nowhere?</div>
<<say $Mc>>It could be Rust and Dina... or maybe someone else. I don’t know, something about this place doesn’t sit right with me.<</say>>
<div class="links">
<th>[[Go to cabin|Cabin]]</th>
</div>
<img id="event-image" src="img/events/cabin.jpg">
</div>
<<set $CabinFind = 1>><div id="CBox">
<div id="Ntext">You observe the building's facade. Its structure looks old and worn, with cracks in the walls and an air of abandonment. One of the windows catches your attention: the bars that should protect it are broken, leaving a space wide enough to pass through.</div>
<div class="links">
<th>[[Break the window|brokewindow]]</th>
<th>[[Back|Camino-izquierda]]</th>
</div>
<img id="event-image2" src="img/events/window.png">
</div>
<<if $Windowcrash is true>>
<<goto "buildinginspect1">>
<</if>>
<div id="CBox">
<div id="Ntext">You jolted awake, your breathing ragged, and a deep sadness weighed heavily on your chest. The room was silent, but the echo of the nightmare still lingered in your mind.</div>
<<say $Mc>>After all this time, the nightmares still haunt me. But this one… was different. How strange it felt—as if I were explaining my life to someone. It was unsettling, surreal. 'Hah.' Anyway... <</say>>
<div id="Ntext">You sit up slowly, the late afternoon air brushing against your bare skin as the sheets slip away, revealing the curves of your body. The soft light of the setting sun streams through the window, tracing every line and casting warm, golden shadows across your form. The quiet rustle of fabric falling to the floor is the only sound as you rise. You glance down at yourself and smirk, a wry chuckle escaping your lips. Stretching lazily, you make your way toward the closet.</div>
<div id="Pensamiento">Well, at least I don’t have to worry about wrinkled clothes.</div>
<div class="links">
<th>[[Get dressed|dressed]]</th>
<th>[[Stay naked|intro3]]</th>
</div>
</div>
<<widget "Chaptertitle">>
<<set _mensaje to $args[0]>>
<<run setTimeout(function() {
var div = document.createElement("div");
div.id = "titulo-capitulo";
div.innerHTML = _mensaje;
div.style.position = "fixed";
div.style.top = "40%";
div.style.left = "50%";
div.style.transform = "translate(-50%, -50%)";
div.style.backgroundColor = "#000000f0";
div.style.color = "#f5f5f5";
div.style.padding = "100px 40px";
div.style.borderRadius = "16px";
div.style.transition = "opacity 3s ease-out";
div.style.fontSize = "100px";
div.style.fontWeight = "normal";
div.style.textAlign = "center";
div.style.letterSpacing = "3px";
div.style.opacity = "1";
div.style.cursor = "default";
div.style.width = "100%";
div.style.border = "2px solid #cbcbcb";
div.style.boxShadow = "0 0 15px rgba(255, 255, 255, 0.5)";
div.style.fontFamily = "'Merriweather', serif";
div.style.animation = "none";
div.style.zIndex = "1000";
document.body.appendChild(div);
// Desvanecer el mensaje después de 4 segundos
setTimeout(function() {
div.style.opacity = "0";
}, 3000);
// Eliminar el mensaje después de 7 segundos
setTimeout(function() {
div.remove();
}, 6000);
}, 100)>>
<!-- Estilos globales -->
<<run var style = document.createElement('style');
style.innerHTML = `
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #1a1a1a;
}
/* Fuente Merriweather, más apropiada para un tono de misterio */
@import url('https://fonts.googleapis.com/css2?family=Merriweather&display=swap');
`;
document.head.appendChild(style);>>
<</widget>>
<div id="CBox">
<div id="Pensamiento">My name is $Mc.fullName, but everyone calls me Casey. I was born in New Veris 25 years ago. At 18, I joined the police force, convinced I could make a difference. My analytical mind and knack for solving cases earned me a promotion to detective by the time I was 20, even before I finished my criminology degree. Intelligence agencies reached out with offers, but I turned them down. I believed my place was here, on the streets of the city I was born in. I thought I was ready for anything.
I wasn’t. Everything changed the night my parents were murdered and my sister, Angelica, was kidnapped. That night, unaware of what was happening in my home, I was spending the evening with.</div>
<div class="linksTwo">
<th>[[Luke Rainbow|malepartner]]</th>
<th>[[Violet Rainbow|femalepartner]]</th>
</div>
<div class="links">
<th>[[Gabriela (disable previous relationship)|nopartner]]</th>
</div>
</div>
<<set $Naked = true>>
<<run changeImage("img/characters/casey/nude.png")>>
<<script>>
setup.phoneSystem.unlockMedia("Me", "image", "img/characters/casey/nude.png");
<</script>>
<<set $bag = 1>>
<<script>>
setup.phoneSystem.addContact("Cap. Henry Havook", "Henry completely lost trust in you. You haven't heard from him since he made you resign from the police force two years ago.", "img/characters/henry/avatar.png");
<</script>>
<<script>>
window.healSanity(30);
<</script>><div id="CBox">
<<say $Mc>>Alright, Quentin. You’ve got my attention. I’ll take the case. But you’d better make sure that money’s as good as you say it is, and I want to get my badge back too.<</say>>
<<say $Mayor>>You won't regret it. I'm counting on you Casey. If you solve the case, I'll also make sure they return your badge. I've sent you an advance right now to help with the investigation.<</say>>
<div id="Pensamiento">That's the way I like it.</div>
<<say $Mc>>Let’s get to it then. What exactly are we dealing with here?<</say>>
<<say $Mayor>>The latest evidence points to the Charles Francis psychiatric hospital on the outskirts of the city. This is serious... Two of my best agents, Dina Carter and Rust Cohle, disappeared while investigating the place.<</say>>
<div id="Pensamiento">I know Cohle, he's one of the good ones, I can't believe he's gone. The last I heard of Rust was that he joined the FBI, and I didn't know he worked directly for the mayor. Dina should be her partner..</div>
<<say $Mc>>Charles Francis? That place has been abandoned for over a decade. I didn’t think anyone was even interested in it...<</say>>
<<say $Mayor>>I thought the same. But now, I don’t know what to believe. Dina and Rust weren’t rookies—they were experienced agents. If they disappeared like this, something’s wrong. The raid turned up nothing, but I’ve got this gut feeling there’s something hidden there, something we’re not seeing.<</say>>
<div id="Pensamiento">What a complete jerk.</div>
<<say $Mc>>So you think the place is involved? Or maybe someone’s playing a game?<</say>>
<<say $Mayor>>I don’t know. But with all the disappearances and no answers, we’re running out of time. I need someone who can think outside the box. Someone who can get answers where everyone else has failed.<</say>>
<<say $Mc>>I’ll take a look. I’m not doing this for the money. If Dina and Rust are still alive, I’ll find them.<</say>>
<<say $Mayor>>I knew I could count on you. I’ll get the files to you—everything we have on the case, including the raid reports and any other details we’ve gathered.<</say>>
<<say $Mc>>Good. I’ll get started. This isn’t going to be another dead end.<</say>>
<<say $Mayor>>This can’t wait. Do you hear me? We need you to get moving immediately. And remember, this case has to stay completely under wraps. No one else can know.<</say>>
<<say $Mc>>I understand...<</say>>
<<say $Mayor>>Don’t let us down.<</say>>
<div class="links">
<th>[[Hang up the phone|introcase]]</th>
</div>
</div>
<div id="npc-container">
<img src="img/characters/mayor/mayor.png">
</div>
<<set $introcase = 1>>
<<set $MoneyElection = 1>>
<<set $InvestigatorRoad -= 1>>
<<set $McMoney += 1000>>
<<SanityMessage "+$1000">>
<<set $DetectiveCorruption += 10>><<if $intromedkit is true>>
<div id="CBox">
<div id="Ntext">There’s nothing else that could be of use.</div>
<div class="links">
<th>[[Back|introtoilet]]</th>
</div>
<img id="event-image" src="img/events/homecabinet.png">
</div>
<<else>>
<div id="CBox">
<div id="Ntext">You open the bathroom cabinet and find <span style="color: #22b22e;">3 packaged bandages</span>, along with a small, somewhat outdated <span style="color: #22b22e;">first aid kit</span>. The kit is slightly Rust, but it seems to still have the essentials: some band-aids, disinfectant, and a couple of other things. It's not much, but it could come in handy if something comes up.</div>
<<say $Mc>>Who knows, this could all be useful.<</say>>
<div class="links">
<th>[[Back|introtoilet]]</th>
</div>
<img id="event-image2" src="img/events/homecabinet.png">
</div>
<<script>>
addMedkit(1);
addBandages(3);
<</script>>
<<set $intromedkit = true>>
<</if>>
<<SanityMessage "+1 Medkit, +3 Bandages">>
<div id="CBox">
<<say $Casey>>Saving me? Really, Henry? If I lost control, it's because no one else had the balls to do what needed to be done. You, Rodríguez, the others—you all played it safe while I got my hands dirty. And now you have the nerve to tell me this is for my own good? To say you’re ‘taking care of me’? I don’t need you to take care of me, Henry!<</say>>
<<say $Captain>>Casey... this isn't easy for me to do. But your behavior... it just leaves me no other choice.<</say>>
<div id="Pensamiento">Is not easy? No choice? Fuck, Henry!</div>
<<say $Casey>>Don’t pretend this is hard for you. I’m sure it’s tearing you up inside, right? Just as much as it’s tearing me apart.<</say>>
<div id="Ntext">The captain's gaze hardens, and his tone grows more severe.</div>
<<say $Captain>>Enough! You’ve crossed too many lines. The arguments, the fights with other agents, showing up drunk at a crime scene… You’ve lost control. I could ask for the gun and the badge, but the gun is yours, so just hand over the badge.<</say>>
<<say $Casey>>Tsk...<</say>>
<div id="Ntext">You hesitate, your silence heavier than any words you could muster. Deep down, you know Henry is right. You stare at the badge in your hand, its weight suddenly unbearable. Finally, with a heavy heart, you place the badge on Henry's desk, the sound of it landing echoing in the quiet room.</div>
<<say $Captain>>I've spoken to mayor Quentin, and we've come to the conclusion that we can't give you any more chances. Please, we need you to sign the form.<</say>>
<div id="Ntext">Captain Henry slides a document toward you.</div>
<div class="links">
<th>[[Check the form|NameSelection]]</th>
</div>
</div>
<<include "Capitan">>
<<script>>
console.log("Captain passage loaded, current sanity:", State.variables.Sanity);
<</script>>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<div id="CBox">
<div id="Ntext">Finally, you have arrived at your destination. The captain's office door stands before you. Captain Henry Havook has summoned you, and it’s certainly not for something good.</div>
<<say $Casey>>Well, here I am. This is probably the last time... I could check my old office before...<</say>>
<div class="links">
<th>[[Enter in the office|io]]</th>
<th>[[Go to Station's entrance|introC]]</th>
</div>
</div>
<<set $Ic = true>>
<<SanityMessage "Main objective updated: Check your former office">>
<<script>>
setup.phoneSystem.addObjective(
"Old office",
"Enter and check your former office",
'main',
'old_office'
);
<</script>>
<div id="LocationName">Police station</div><div id="CBox">
<div id="Ntext">You step quickly into the office, and Captain Havook fixes his gaze on you with a serious expression. When his eyes meet yours, he lets out a weary sigh. Sensing the tension in the room, you decide to break the silence.</div>
<<say $Casey>>Captain...<</say>>
<<say $Captain>>Please, have a seat, Casey.<</say>>
<div id="Ntext">The captain gestures for you to sit, pointing to the empty chair in front of his desk.</div>
<div class="links">
<th>[[Sit in front of the captain|preintro1]]</th>
</div>
</div>
<<include "Capitan">>
<<if $Rodriguezintro isnot true>>
<<script>>
setup.phoneSystem.completeObjective('talk_gabi');
setup.phoneSystem.completeObjective('talk_havook');
<</script>>
<<else>>
<<script>>
setup.phoneSystem.completeObjective('talk_havook');
<</script>>
<</if>>
<<set $practique = 0>><<fullscreenButton>>
<<nobr>>
<div class="titles">
<div class="title"></div>
<div id="title1"></div>
</div>
<div class="links">
<div><a tabindex="0" role="button" id="save-button">Continue</a></div>
<div>[[New story|introA]]</div>
</div>
<<playMusic "music" "media/music/pianosonata.mp3" volume:0.5>>
<<script>>
$(document).ready(function() {
console.log("Document ready, binding save-button click event");
$('#save-button').on('click', function() {
console.log("Save button clicked");
try {
UI.saves();
console.log("UI.saves() called successfully");
} catch (error) {
console.error("Error in UI.saves():", error);
alert("Failed to open saves dialog: " + error.message);
}
});
});
<</script>>
<<include "ImageRotation">>
<<set $startgame = true>>
<style>
/* Load custom font (replace with actual font path) */
@font-face {
font-family: 'personal-services';
src: url('path/to/personal-services.woff2') format('woff2'),
url('path/to/personal-services.woff') format('woff');
font-weight: normal;
font-style: normal;
}
/* Hide UI elements */
#ui-bar, #character-menu, .stat-row, #name {
display: none;
}
/* Main container */
#story {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
min-height: 100vh;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box;
}
.passage {
max-height: none;
margin: 0 !important;
padding: 0 !important;
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
/* Title 1 (large, centered, flush against top) */
.titles {
position: relative;
top: -130px;
z-index: 1;
}
.title {
background-image: url('img/title.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
width: 80vw;
max-width: 40rem;
height: 35vh;
margin: 0 auto !important;
padding: 0 !important;
z-index: 1;
}
/* Title 2 (smaller, centered, touching Title 1) */
#title1 {
background-image: url('img/title1.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
width: 40vw;
max-width: 20rem;
height: 7vh;
margin: 0 auto !important;
padding: 0 !important;
animation: subwoofer-pump 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
transform-origin: center center;
z-index: 1;
position: relative;
top: -4vw;
}
/* Animation for Title 2 */
@keyframes subwoofer-pump {
0% { transform: scale(1); }
20% { transform: scale(1.05); }
40% { transform: scale(0.98); }
60% { transform: scale(1.03); }
80% { transform: scale(0.99); }
100% { transform: scale(1); }
}
/* Links container (as provided) */
.links {
display: flex;
margin: 2vh 0 2vh 0;
width: auto;
position: absolute;
left: 30px;
bottom: 30px;
flex-direction: column;
align-items: center;
}
/* Save button styling (matches original) */
#save-button {
display: inline-flex;
align-items: center;
font-family: 'personal-services', 'Arial', sans-serif;
background: none;
color: #d9c27e;
padding: 0.2rem 0.5rem;
border: none;
text-decoration: none;
font-size: 2.5rem;
cursor: pointer;
transition: color 0.3s ease;
margin: 0rem 0;
}
/* Links styling (matches original) */
.links a {
display: inline-flex;
align-items: center;
font-family: 'personal-services', 'Arial', sans-serif;
background: none;
color: #d9c27e;
padding: 0.2rem 0.5rem;
text-decoration: none;
font-size: 2.5rem;
transition: color 0.3s ease;
margin: 0.5rem 0;
border: none;
}
/* Hover effect for links and save button */
#save-button:hover, .links a:hover {
background: linear-gradient(to right, #ffabbe, #b6b6ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-decoration: underline;
}
/* Music button styling (matches links) */
#musicButton {
display: inline-flex;
align-items: center;
font-family: 'personal-services', 'Arial', sans-serif;
background: none;
color: #d9c27e;
padding: 0.2rem 0.5rem;
border: none;
text-decoration: none;
font-size: 1.5rem;
cursor: pointer;
transition: color 0.3s ease;
margin: 0.5rem 0;
}
#musicButton:hover {
background: linear-gradient(to right, #ffabbe, #b6b6ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-decoration: underline;
}
/* Media Queries for scaling titles */
@media screen and (max-width: 1024px) {
.title {
width: 75vw;
max-width: 30rem;
height: 50vh;
}
#title1 {
width: 35vw;
max-width: 15rem;
height: 6vh;
}
.links {
left: 20px;
bottom: 20px;
}
#save-button, .links a {
font-size: 2rem;
padding: 0.2rem 0.4rem;
}
#musicButton {
font-size: 1.2rem;
padding: 0.2rem 0.4rem;
}
}
@media screen and (max-width: 768px) {
.title {
width: 70vw;
max-width: 25rem;
height: 45vh;
}
#title1 {
width: 30vw;
max-width: 12rem;
height: 5vh;
}
.links {
left: 15px;
bottom: 15px;
}
#save-button, .links a {
font-size: 1.8rem;
padding: 0.15rem 0.3rem;
}
#musicButton {
font-size: 1rem;
padding: 0.15rem 0.3rem;
}
}
@media screen and (max-width: 480px) {
.title {
width: 65vw;
max-width: 20rem;
height: 40vh;
}
#title1 {
width: 25vw;
max-width: 10rem;
height: 4vh;
animation: none; /* Disable animation for performance */
}
.links {
left: 10px;
bottom: 10px;
}
#save-button, .links a {
font-size: 1.5rem;
padding: 0.1rem 0.2rem;
}
#musicButton {
font-size: 0.8rem;
padding: 0.1rem 0.2rem;
}
}
@media screen and (max-width: 320px) {
.title {
width: 60vw;
max-width: 15rem;
height: 35vh;
}
#title1 {
width: 20vw;
max-width: 8rem;
height: 3vh;
}
.links {
left: 5px;
bottom: 5px;
}
#save-button, .links a {
font-size: 1.2rem;
padding: 0.1rem 0.2rem;
}
#musicButton {
font-size: 0.7rem;
padding: 0.1rem 0.2rem;
}
}
@media screen and (max-height: 480px) and (orientation: landscape) {
.title {
width: 50vw;
max-width: 20rem;
height: 38vh;
}
#title1 {
width: 20vw;
max-width: 8rem;
height: 7vh;
animation: none;
}
.links {
left: 5px;
bottom: 5px;
}
#save-button, .links a {
font-size: 1.2rem;
padding: 0.1rem 0.2rem;
}
#musicButton {
font-size: 0.7rem;
padding: 0.1rem 0.2rem;
}
}
</style>
<</nobr>><div id="imageContainer">
<img src="img/backgrounds/intromenu.png" id="currentImage">
</div>
<<script>>
$(document).ready(function () {
var images = State.variables.imageList; // Lista de imágenes
var currentIndex = State.variables.imageIndex; // Índice actual
var $imageContainer = $('#imageContainer'); // Contenedor de imágenes
var $currentImage = $('#currentImage'); // Imagen actual
setInterval(function () {
// Actualizar el índice para la próxima imagen
currentIndex = (currentIndex + 1) % images.length;
State.variables.imageIndex = currentIndex;
// Crear una nueva imagen para la transición
var $nextImage = $('<img>')
.attr('src', images[currentIndex])
.addClass('fade-in') // Clase CSS para la animación
.css({
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
objectFit: 'cover',
});
// Agregar la nueva imagen al contenedor
$imageContainer.append($nextImage);
// Esperar a que la transición termine y eliminar la imagen anterior
setTimeout(function () {
$currentImage.remove(); // Eliminar la imagen anterior
$nextImage.removeClass('fade-in'); // Eliminar la clase para mantener la nueva imagen fija
$currentImage = $nextImage; // Actualizar la referencia
}, 2500); // Duración de la animación (2s)
}, 15000); // Cambiar cada 15 segundos
});
<</script>>
<style>
body {
--ui-bar-height: 0 !important;
}
#ui-bar {
background: transparent;
}
#story {
top: 0 !important;
}
#imageContainer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
#imageContainer img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 1;
transition: opacity 2s ease; /* Transición suave de opacidad */
}
#imageContainer img.fade-in {
opacity: 0;
animation: fadeIn 3s ease forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style><div id="CBox">
<div id="Ntext">You step in the police station, and the weight of your coworkers’ stares presses into your back. You don’t need to see them to know what they’re thinking—you’ve heard the whispers, the muffled laughter, the words no one dares to say to your face.
You walk down the hallway, the echo of your footsteps sounding louder than it should. Rodríguez, your former partner, she is sitting at what you assume is her provisional desk.
Once, she’d have greeted you with a smile or a sharp joke only the two of you would get. Now, her eyes are cold, the camaraderie you once shared is now broken, and the silence between you weighs heavier than any word of reproach.</div>
<div id="Pensamiento">The captain told me to go to his office as soon as I arrived.</div>
<div class="linksTwo">
<th>[[Talk to Rodriguez|rt]]</th>
</div>
<div class="links">
<th>[[Go through the corridor|ci]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.addObjective(
"Your partner Rodriguez",
"Talk to your colleague Gabriela Rodriguez (optional)",
'secondary',
'talk_gabi' // ID
);
<</script>>
<<SanityMessage "New secondary objective: Your partner Rodriguez">>
<div id="LocationName">Police station</div><div id="CBox">
<div id="Ntext">You step out of Captain Havook's office with your shoulders slumped, feeling the weight of the decision you've just made—or rather, the decision that was imposed on you—pressing on your soul. The door to the captain's office slams shut behind you with a metallic sound, and for a moment, you stand there, frozen in the threshold, as if the world itself had stopped you in your tracks. The precinct, once your home, now feels foreign to you. Everything you've done, everything you've lived through, seems to crumble around you.
You walk down the hallway. The fluorescent light above you flickers, casting shadows that follow you, as if the building itself is chasing you. There's no turning back. You've been fired, and in doing so, you've lost more than just a job. You've lost your purpose, your identity, everything you once thought defined you.</div>
<div class="links">
<th>[[Exit|introexit1]]</th>
</div>
</div>
<<set $Mc2 = $Mc>>
<div id="CBox">
<div id="Ntext">Two weeks. Fourteen full days since they told you, with that tense and professional smile, to "take a break." It wasn’t a suggestion, of course. It was an order. Everyone knew it, including you. A polite way to push you out of the way while they decided what to do with you. And now you're here, back, but not because things have improved. More like this is just the prelude to the inevitable.
The sky is darker than it should be at this time of day, as if even it knows that a chapter is about to close. You take a deep breath, as if that could ease the weight you carry.</div>
<div id="Pensamiento">It doesn’t matter how many nice words they use, it doesn’t matter how much they try to sugarcoat it, I know I’m done. And the worst part is, I can't even blame them. I'm alone.</div>
<div class="links">
<th>[[Enter in the police station|introB]]</th>
</div>
</div>
<<script>>
UIAnimations.showHealthBar();
UIAnimations.showHealthQuickslot();
UIAnimations.showSanityBar();
UIAnimations.showSanityQuickslot();
UIAnimations.showWeaponQuickslot();
UIAnimations.showBulletQuickslot();
UIAnimations.showCharacterImage()
<</script>>
<<script>>
setup.phoneSystem.addObjective(
"Back at the station",
"Go to captain's office and talk to him",
'main',
'talk_havook' // ID
);
<</script>>
<<script>>
setup.phoneSystem.addContact("Me", "Videos & photos of me.", "img/characters/casey/casey-avatar.png");
<</script>>
<<script>>
setup.phoneSystem.unlockMedia("Me", "image", "img/characters/casey/casey.png");
<</script>>
<<script>>
setup.phoneSystem.addContact("Gabi", "My partner and detective in New Veris.", "img/characters/rodriguez/avatar.png");
<</script>>
<<SanityMessage "New main objective: Back at the station">><div id="CBox">
<<if $Rodriguezintro isnot true>>
<div id="Pensamiento">I don't want to talk to her right now.</div>
<div id="Ntext">You pretend not to notice and keep moving, Rodríguez gives you one last sorrowful look as you walk away, her own eyes reflecting a shared pain, as though she, too, carries the burden of this inevitable goodbye.
The place feels colder, emptier, like you brought a storm with you and everyone is doing their best to stay out of its path. At the end of the hall, the Captain’s office looms, silent and unyielding. Every step toward it feels heavier than the last, but stopping isn’t an option.</div>
<<else>>
<div id="Ntext">The place feels colder, emptier, like you brought a storm with you and everyone is doing their best to stay out of its path. At the end of the hall, the Captain’s office looms, silent and unyielding. Every step toward it feels heavier than the last, but stopping isn’t an option.</div>
<</if>>
<div class="links">
<th>[[Continue through the hallway|ci1]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/casey.png")>><div id="CBox">
<div id="Ntext">The air smells of stale coffee and aged paper, a scent you’ve come to associate with long nights of work and endless cases.</div>
<div class="linksTwo">
<th>[[Check the wall|wi]]</th>
<<if $bag is 1>>
<th>[[Check the desk|di2]]</th>
<<else>>
<th>[[Check the desk|di]]</th>
<</if>>
<th>[[Check the computer|introsave]]</th>
</div>
<div class="links">
<th>[[Go to hallway|ci2]]</th>
</div>
</div>
<div id="LocationName">Old office</div><div id="CBox">
<div id="Ntext">The captain's office door stands before you.
</div>
<div class="links">
<<if $bag is 1>>
<th>[[Shooting range]]</th>
<th>[[Enter in the captain's office|preintro]]</th>
<</if>>
<th>[[Enter in the office|io]]</th>
<th>[[Go to Station's entrance|introC]]</th>
</div>
</div>
<div id="LocationName">Police station</div>
<<run changeImage("img/characters/casey/casey.png")>><div id="CBox">
<div id="Ntext">As you look at the desk, you notice a pile of scattered papers, incomplete reports, and faded sticky notes. Among them, you recognize some documents from the last case, still unfiled, as if no one had dared to touch them since. The ink of the key words still stands out: homicide, failed rescue, Rodríguez.
Then, your eyes land on something familiar: your bag.</div>
<<say $Casey>>My bag... With all the commotion from the last case, I left it here.<</say>>
<div class="links">
<th>[[Take your bag|di1]]</th>
</div>
</div>
<<SanityMessage "Main objective updated: Talk to Captain Havook">>
<<script>>
setup.phoneSystem.completeObjective('old_office');
<</script>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you look at the wall, your eyes settle on an old board with remnants of notes and photos connected by frayed threads. It’s the last case you solved with Gabriela. The victim’s picture is still there, next to a date marked in red. It didn’t end well. A young woman lost her life before you could stop the killer, Daniel R. Harrington, and Gabriela had to Shoot him to save others victims.</div>
<div id="Pensamiento">I tried to negotiate, but I messed up. I couldn’t keep my cool… or maybe… I didn’t want to.</div>
<<default>>
<div id="Ntext">The last case you solved with Gabriela Rodriguez stills in the wall. The victim’s picture is still there, next to a date marked in red. It didn’t end well. A young woman lost her life before you could stop the killer, and Gabriela had to Shoot him to save others</div>
<</switch>>
<div class="links">
<th>[[Back|io]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You approach Rodríguez; she tries not to look at you until your presence is too close to ignore. Then, she shoots you a look of disappointment that instantly shifts to indifference.</div>
<<if $introC is true>>
<<say $Gabrielayoung>>Casey, when I saw you enter, I thought you weren't going to talk to me...<</say>>
<<say $Casey>>Gabi, I...<</say>>
<<else>>
<<say $Gabrielayoung>>Casey...<</say>>
<<say $Casey>>Gabi, I...<</say>>
<</if>>
<<say $Gabrielayoung>>Don't say another word, Casey. I warned you. I told you what would happen if you kept going down this path, and you didn’t listen to me.<</say>>
<div id="Ntext">Your face shows the pain of the truth as you hear the words of your former partner.</div>
<<say $Casey>>I.. I'm sorry.<</say>>
<div id="Ntext">Rodríguez looks you straight in the eyes, then grimaces, revealing her sadness.</div>
<<say $Gabrielayoung>>I know, but unfortunately, that’s not going to change anything. I tried talking to Henry, but it wasn't enough...<</say>>
<div id="Pensamiento">I'm sure she talked to Henry...</div>
<<say $Casey>>I'm sure you did... Even so, though I know you're disappointed and angry with me, I couldn’t leave without saying goodbye.<</say>>
<div id="Ntext">Rodríguez looks at you once more. Her expression shifts once again, first to anger and then to sorrow again.</div>
<<say $Gabrielayoung>>Goodbye, Casey. I hope you can rebuild your life. I truly hope you can. Just go back to who you were before... Never give up.<</say>>
<div id="Pensamiento">I don't want to lose you, Gabi.</div>
<<say $Casey>>And I hope we can still be friends. I need you in my life. We've been through so much together. To me, you're my family, Gabi.<</say>>
<div id="Ntext">Rodríguez, still hurt, looks into your eyes one last time. Then, she gives a small nod but says nothing. Gabriela’s nod carries a faint glimmer of acknowledgment, as if to say, "Maybe someday"... It seems there’s nothing more to say. It’s time to move on to the captain’s office.</div>
<div class="links">
<<if $Ic isnot true>>
<th>[[Keep moving forward|ci]]</th>
<<else>>
<th>[[Keep moving forward|ci2]]</th>
<</if>>
</div>
</div>
<<set $Rodriguezintro = true>>
<<include "Gabi">>
<<run changeImage("img/characters/casey/sad.png")>>
<<script>>
setup.phoneSystem.completeObjective('talk_gabi');
<</script>>
<<script>>
setup.phoneSystem.addContact("Gabi", "My partner and detective in New Veris. I spoke with her, I think we can still be friends", "img/characters/rodriguez/avatar.png");
<</script>>
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "image", "img/characters/rodriguez/rodriguez.png");
<</script>>
<<SanityMessage "Objective complete: Talk to Rodriguez">><div id="CBox">
<div id="Ntext">You sit in front of Captain Henry, feeling the weight of the silence. His gaze cuts through you, full of disappointment, and the atmosphere fills with unbearable tension. He doesn’t say anything, but you don’t need to hear more to know what he’s thinking. Every second drags on, and the feeling of having let down someone who once trusted you becomes unbearable.
Finally, you can’t take it anymore. You break the silence, your voice sharp and filled with anger.</div>
<<say $Casey>>Two weeks for this, Henry? Really? You force me to stay at home, make me feel like a criminal, and now you call me here just to say goodbye? Is that it? That easy? You could’ve just fired me with a simple phone call.<</say>>
<<say $Captain>>You’re more than just another agent, Casey. I couldn’t say goodbye with a simple phone call. You’ve been through too much, and you’ve done so much for this city... you were a source of pride for our department. You deserve more than that, even if it’s hard for everyone, especially Rodríguez.<</say>>
<div id="Pensamiento">I do it to save lives.</div>
<<say $Casey>>You know that what I did was for the case, for the victims. Because no one else was going to get their hands dirty to do what was necessary! Not you, not Rodríguez, not any of the others! And now it turns out I'm the bad one? After everything I've given, everything I've lost, you're just throwing me away?<</say>>
<<say $Captain>>I couldn't let you keep going down this path. It's not just about your last case. It's your attitude that's changed. You've started crossing lines... You've adopted practices that, while perhaps not always visible to others, are still a violation of the very values we stand for as officers of the law. You're no longer the person you used to be. And that... I can't ignore that. I can't let you keep sinking further into this abyss. I'm trying to save you.<</say>>
<div id="Pensamiento">I don't need to be saved!</div>
<div class="links">
<th>[[Let the anger out|preintro2]]</th>
</div>
</div>
<<include "Capitan">>
<<SanityMessage "Objective complete: Talk to Captain Havook">><div id="CBox">
<div id="Ntext">You reach the exit, now you leave behind forever what you once considered your homeand. As you open the front door, the cold air from the street hits your face, as if the outside world is greeting you with indifference. There are no celebrations, no applause. Just the emptiness of a decision made for you, or at least that's what you'd like to believe, because deep down, you know it's all your fault. The sound of your footsteps fades into the darkness of the night. Then you close your eyes, and the tears finally come, silent but heavy, slipping down your face as you stand alone in the cold.</div>
<div id="Pensamiento">Did I really want to follow this path? To lose everything because of decisions I couldn't avoid? Henry is right, maybe it's time to change. To leave behind this life that consumes me, this endless vicious circle. My next stop will be my own office, no rules imposed by others, no judgment from anyone. But this time, it will be different. I have to do it the right way. No more lies. No more excuses. It's time to start over. Casey, I know you can do it, I know I can do it...</div>
<div class="links">
<th>[[Good bye forever|intromessage]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/sad.png")>>
<div id="CBox">
<<fadein 6s>>
<div id="Ntext">It’s been two years since your life changed completely. Two years since everything came crashing down.
You remember the person you used to be: sharp, analytical, always in control. The kind of Detective who could see the truth in the midst of lies. But after everything that happened, that part of you became hard to find. You drowned in darkness, in guilt, in self-destruction. You hit rock bottom and almost lost everything.
But you pulled yourself out. Slowly, you started to piece together what was left of you. With what little you had, you managed to open your own Detective agency—a way to rebuild your life, to make sense of what remained.
Now, your mind drifts. Memories and worries swirl like smoke, pulling you deeper.</div>
<div class="links">
<th>[[Continue dreaming|intro]]</th>
</div>
<</fadein>>
</div>
<<playMusic "music" "media/music/none.mp3" volume:0.2>>
<<timed 4s>>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.18>>
<</timed>>
<<Chaptertitle "2 Years Later">>
<style>
.title2, .ptr, #credits {
opacity: 0;
}
#CBox {
opacity: 0;
transition: opacity 5s ease-in;
animation-delay: 5s;
}
#CBox.visible {
opacity: 0.6;
}
</style>
<script>
$(document).ready(() => {
setTimeout(() => {
const box = document.getElementById('CBox');
if (box) {
box.classList.add('visible');
}
}, 5000);
});
</script>
<<script>>
State.variables.Sanity = State.variables.MaxSanity
<</script>>
<style>
#Ntext {
max-height: 25em;
}
</style>
<<if $Rodriguezintro is true>>
<<script>>
setup.phoneSystem.addContact("Gabi", "Former coworker and detective in New Veris. Over a year ago, you managed to reconcile with Gabriela, restoring your relationship. You now stay in occasional contact and meet up from time to time.", "img/characters/rodriguez/avatar.png");
<</script>>
<<else>>
<<script>>
setup.phoneSystem.addContact("Gabi", "Former coworker and detective in New Veris. It’s been two years since you last saw or spoke to Gabriela.", "img/characters/rodriguez/avatar.png");
<</script>>
<</if>>
<style>
#character-menu, .phone-button, #character-inventory-toggle.ui-visible {
visibility: visible;
display: none;
}
</style>
<<script>>
State.variables.inventory.quickbar = Array(5).fill(null);
<</script>>
<<script>>
State.variables.inventory.main = Array(10).fill(null);
<</script>>
<<script>>
$(document).off(':passagerender', function() {
UIAnimations.showInventoryToggle();
});
<</script>>
<<set $intro = true>>
<<set $bag = 0>>/*Character menu initialize*/
Lantern
<<script>>
UIAnimations.showLantern();
<</script>>
Battery
<<script>>
UIAnimations.showBatteryQuickslot();
<</script>>
Inventory
<<script>>
$(document).on(':passagerender', function() {
UIAnimations.showInventoryToggle();
});
<</script>>
Avatar
<<script>>
UIAnimations.showCharacterImage()
<</script>>
Diary
<<script>>
$(document).on(':passagerender', function() {
UIAnimations.showDiaryToggle();
});
<</script>>
Health bar
<<script>>
UIAnimations.showHealthBar();
<</script>>
Health slot
<<script>>
UIAnimations.showHealthQuickslot();
<</script>>
Sanity bar
<<script>>
UIAnimations.showSanityBar();
<</script>>
Health slot
<<script>>
UIAnimations.showSanityQuickslot();
<</script>>
Weapon slot
<<script>>
UIAnimations.showWeaponQuickslot();
<</script>>
Bullet slot:
<<script>>
UIAnimations.showBulletQuickslot();
<</script>>
<<script>>
startBattle('shadowCreature', 100);
<</script>>
<<script>>
startBattle(
['nurseNaked', 'madPatient', 'diabolicWolf'],
[80, 120, 200]
);
<</script>> health and sanity inc
<<script>>
SugarCube.State.variables.Sanity
SugarCube.State.variables.Health
<</script>>
recover
<<script>>
window.healSanity(20);
<</script>>
<<script>>
window.healHealth(20);
<</script>>
decrease
<<script>>
window.decreaseSanity(20);
<</script>>
<<script>>
window.decreaseHealth(20);
<</script>>
ITEMS:
añadir objeto para vender
<script>
window.addMissionItem('lockpick');
Object.values(SugarCube.State.variables.inventory).forEach(slots => {
slots.forEach(item => {
if (item && item.missionItemId === 'lockpick') {
item.isSellable = true;
}
});
});
</script>
<<script>>
window.addMissionItem("lockpick");
<</script>>
remove items
<<discardItem "mission_lockpick">>
<<if $inventory.hasItem("someItem") && $inventory.getItem("brass_key").isKey>>
This is a key item - you can use it to unlock something
<<elseif $inventory.hasItem("someItem") && $inventory.getItem("someItem").isDocument>>
This is a document - you can read it for more information
<</if>>
<<script>>
addMedkit(3);
addBandages(3);
addAntiBiotics(2);
addStim(2);
<</script>>
<<script>>
addSanityItem('calmingPills',2)
addSanityItem('AntiDepressants',2)
<</script>>
<<script>>
window.addCheapBattery(2);
window.addMediumBattery(3);
window.addDuracellBattery(4);
<</script>>
Add weapons and ammo
Gun:
<<script>>
window.addWeapon('Pistol');
<</script>>
Shotgun
<<script>>
window.addWeapon('Shotgun')
<</script>>
Rifle:
<<script>>
window.addWeapon('Rifle')
<</script>>
Ammunition:
Gun:
<<script>>
window.addAmmo('9mm', 30) // Standard pistol ammo
<</script>>
<<script>>
window.addAmmo('expansive', 10) // High damage pistol ammo
<</script>>
<<script>>
window.addAmmo('incendiary', 7)
<</script>>
Shotgun:
<<script>>
window.addAmmo('shells', 8)
<</script>>
<<script>>
window.addAmmo('slug', 6)
<</script>>
<<script>>
window.addAmmo('dragon', 4)
<</script>>
Rifle:
<<script>>
window.addAmmo('rifle_rounds', 30)
<</script>>
<<script>>
window.addAmmo('piercing', 25)
<</script>>
<<script>>
window.addAmmo('tracer', 20)
<</script>>
// Add weapon upgrades
// Laser sight for pistol
<<script>>
window.addWeaponUpgrade('pistolAccuracy')
<</script>>
// Recoil compensator for pistol
<<script>>
window.addWeaponUpgrade('pistolRecoil')
<</script
// Extended magazine for pistol>>
<<script>>
window.addWeaponUpgrade('pistolMagazine')
<</script>>
// Match grade barrel for pistol
<<script>>
window.addWeaponUpgrade('pistolBarrel')
<</script>>
window.addWeaponUpgrade('shotgunChoke') // Adjustable choke for shotgun
window.addWeaponUpgrade('shotgunMagazine') // Extended tube for shotgun
window.addWeaponUpgrade('shotgunPump') // Speed pump for shotgun
window.addWeaponUpgrade('shotgunBarrel') // Extended barrel for shotgun
window.addWeaponUpgrade('rifleBipod') // Tactical bipod for rifle
window.addWeaponUpgrade('rifleMagazine') // Drum magazine for rifle
window.addWeaponUpgrade('rifleScope') // Advanced scope for rifle
window.addWeaponUpgrade('rifleBarrel') // Heavy barrel for rifle<<goto "io">>
<<set $bag = 1>>
<<script>>
setup.phoneSystem.addObjective(
"Talk to Captain Havook",
"Go to captain's office and talk to him",
'main',
'talk_havook' // ID
);
<</script>>
<<script>>
window.addWeapon('Pistol');
<</script>>
<<script>>
window.addAmmo('9mm', 50)
<</script>><div id="CBox">
<div id="Ntext">You look at the desk again, but now it feels emptier, more distant. The papers are still there, scattered, but they no longer carry the same weight. Without your bag leaning against the leg, the place feels even more abandoned, as if the trace of your presence is slowly fading away. It’s strange how something so small can make everything feel so different.</div>
<div class="links">
<th>[[Back|io]]</th>
</div>
</div>
/*<<SanityMessage "-10 Sanity">>*/
<<widget "SanityMessage">>
<<set _mensaje to $args[0]>>
<<run setTimeout(function() {
var div = document.createElement("div");
div.classList.add("game-notification");
div.innerHTML = _mensaje;
// Agregar la clase de tipo (puedes personalizar este tipo si lo necesitas)
div.classList.add("info");
// Crear el contenedor de notificaciones si no existe
var container = document.getElementById("notification-container");
if (!container) {
container = document.createElement("div");
container.id = "notification-container";
document.body.appendChild(container);
}
// Añadir el mensaje al contenedor
container.appendChild(div);
// Agregar la animación de entrada
setTimeout(function() {
div.classList.add("fade-out");
}, 4000);
// Eliminar el mensaje después de que se desvanezca
setTimeout(function() {
div.remove();
}, 5000);
}, 200)>>
<</widget>>
<style>
/* Estilo para el mensaje */
.game-notification {
position: relative;
top: 20px;
right: 20px;
background: rgba(0, 0, 0, 0.9);
color: white;
padding: 12px 20px;
border-radius: 8px;
z-index: 9999;
animation: slideIn 0.5s ease-out;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
max-width: 300px;
backdrop-filter: blur(5px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
/* Añadir borde azul claro para notificaciones */
.game-notification.info {
border-left: 4px solid #3498db;
}
/* Animación de entrada */
@keyframes slideIn {
from {
transform: translateX(-20px);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
/* Animación de salida */
@keyframes fadeOut {
from {
transform: translateX(0);
opacity: 1;
}
to {
transform: translateX(100%);
opacity: 0;
}
}
/* Contenedor para las notificaciones */
#notification-container {
position: fixed;
top: 20px;
right: 20px;
display: flex;
flex-direction: column;
gap: 10px;
z-index: 9999;
pointer-events: none;
}
.game-notification {
pointer-events: auto;
margin-bottom: 10px;
}
</style>
<div id="CBox">
<div id="Ntext">You push the bottle of alcohol aside with determination, making it clear you don't need it. Instead, you reach out and take a glass of fresh water, feeling how the crystal-clear liquid offers a calm that alcohol could never provide.</div>
<<if $Naked is true>>
<div id="Pensamiento">It's better not to fall back into old habits. Every time you give in, you move further away from the person you're trying to be. Today, control is stronger than temptation.</div>
<div id="Ntext">As you think, your hand glides gently over your body, brushing across your chest before slowly descending.</div>
<div id="Pensamiento">Hmm... I didn’t realize how desperate I was for action. It’s probably best if I focus on the Gulliver rescue case, but I’m so excited... I don’t even remember the last time.</div>
<<else>>
<div id="Pensamiento">It's better not to fall back into old habits. Every time you give in, you move further away from the person you're trying to be. Today, control is stronger than temptation. It’s probably better I get to work on the Gulliver rescue case. The client is getting quite restless.</div>
<</if>>
<div class="links">
<<if $Naked is true>>
<th>[[Descend the hand|intromasturbation]]</th>
<</if>>
<th>[[Check the missing poster|introcaseold]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You look at the sheet in front of you. The image of a gray cat with yellow eyes occupies the center, accompanied by the words "Missing." The $3,000 reward is written in bold, far too high for a lost cat.</div>
<div id="Pensamiento">$3,000 for a damn cat. Something doesn’t add up. A lost cat isn’t worth that much, right? Maybe there’s more to this. Why such a generous offer? And why am I so intrigued by this seemingly insignificant case? Maybe it’s the reward. Or maybe... I’m just getting hooked on the idea that not everything is as it seems again... </div>
<<say $Mc>>If what I thought, it’s just a cat that escaped.<</say>>
<div id="Ntext">With a sigh, you leave the paper on the desk and glance at the phone, thinking about what to do next.</div>
<div id="Pensamiento">The details are sparse: the cat, the reward, and an address. Nothing I haven't seen before. But that money... that's what's keeping me uneasy.</div>
<div class="links">
<th>[[Continue reading|introcaseold2]]</th>
</div>
<img id="event-image" src="img/documents/guli.png">
</div>
<<set $gulidocument = true>>
<<script>>
setup.phoneSystem.addFile("Missing Poster", "img/documents/guli.png");
<</script>>
<<playAudio "papper" "media/sounds/page.mp3" "sound" "volume:0.7">>
<<SanityMessage "New archive">><<if $Rodriguezintro isnot true>>
<div id="CBox">
<div id="Ntext">As you leave the hallway and return to the precinct lobby, the door opens again, and the hustle of the place immediately surrounds you. Your gaze stops on Gabriela, who is still at her temporary desk, studying some photos and notes.
</div>
<div id="Pensamiento">Maybe I should talk to her; I don’t like leaving things like this.</div>
<div class="linksTwo">
<th>[[Talk to Rodriguez|rt]]</th>
</div>
<div class="links">
<th>[[Go through the corridor|ci2]]</th>
</div>
</div>
<<else>>
<div id="CBox">
<div id="Ntext">As you leave the hallway and return to the precinct lobby, the door opens again, and the hustle of the place immediately surrounds you. Your gaze stops on Gabriela, who is still at her temporary desk, studying some photos and notes.</div>
<div id="Pensamiento">I've already talked to Gabi, I don't think she wants to hear from me again.</div>
<div class="links">
<th>[[Go through the corridor|ci2]]</th>
</div>
</div>
<</if>>
<<set $introC = true>>
<div id="LocationName">Police station</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You decide to venture deeper into the forest, leaving behind any trace of safety. The tall, twisted trees form a natural canopy that blocks almost all light. The ground, covered in leaves and gnarled roots, crunches beneath your steps. A chilling wind blows through the branches, carrying distant whispers and the faint echo of howls. As you press on, the forest seems to close in around you, its stillness broken occasionally by the fleeting movement of something in the shadows.</div>
<<default>>
<div id="Ntext">Finds nothing of interest.</div>
<</switch>>
<div class="linksTwo">
<th>[[Continue exploring]]</th>
</div>
<div class="links">
<th>[[Back to the path|Forest]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">Finds nothing of interest.</div>
<div class="linksTwo">
<th>[[Continue exploring|Continue exploring2]]</th>
</div>
<div class="links">
<th>[[Back to the path|Forest]]</th>
</div>
</div>
<div id="LocationName">Forest</div><<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">Distant howls break the silence of the night, a wild cry that chills your bones. The sound grows closer, more intense, until you can hear the crunch of leaves beneath heavy, purposeful footsteps. Two shadows emerge from the trees, their eyes glowing with deadly intensity. They move toward you with lethal agility, as if they know you've noticed them. There's no doubt, they've come for you.
Before you can react, one of the wolves lets out a low growl, while the other steps forward, eyes fixed on you. Suddenly, both of them lunge at you, their razor-sharp teeth gleaming in the moonlight. The danger is imminent, and you have no choice but to prepare to defend yourself.</div>
<<say $Mc>>Ohh, shit!<</say>>
<div class="links">
<th>[[Fight|ForestBattle]]</th>
</div>
</div>
<<timed 9s>>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 9s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<<default>>
<div id="CBox">
<div id="Ntext">A fierce wolf approaches, baring its sharp teeth. It lets out a growl and lunges at you. The danger is imminent, and you must prepare to fight.</div>
<<set $Randomcoment = random(3)>>
<<if $Randomcoment gte 2>>
<<say $Mc>>Shit!<</say>>
<</if>>
<div class="links">
<th>[[Fight|ForestBattle]]</th>
</div>
</div>
<<timed 2s>>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 2s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>>
<</switch>>
<<set $Fwolf = 1>><div id="CBox"></div>
<<set $RandomWolf = random(10)>>
<<if $RandomWolf gte 0>>
<<playSound "wolf2" "media/sounds/wolves-howl.mp3" volume:0.5>>
<<script>>
startBattle('normalWolf', 18);
<</script>>
<<elseif $RandomWolf gt 5>>
<<playSound "wolf2" "media/sounds/wolves-howl.mp3" volume:0.5>>
<<script>>
startBattle('normalWolf', 20);
<</script>>
<<elseif $RandomWolf gt 8>>
<<playSound "wolf2" "media/sounds/wolves-howl.mp3" volume:0.5>>
<<script>>
startBattle('strongWolf', 20);
<</script>>
<</if>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<set $RandomReward = random(3)>>
<div id="CBox">
<<if $RandomReward is 0>>
<div id="Ntext">Searching through the forest, you find some boxes with:
<span style="color: #22b22e;">5 9mm bullets, 1 battery</span>.</div>
<<script>>
window.addCheapBattery(1);
addAmmo('9mm', 5)
<</script>>
<<elseif $RandomReward is 1>>
<div id="Ntext">Searching through the forest, you find some boxes with:
<span style="color: #22b22e;">2 batteries</span>.</div>
<<script>>
window.addCheapBattery(2);
<</script>>
<<elseif $RandomReward is 2>>
<div id="Ntext">Searching through the forest, you find some boxes with:
<span style="color: #22b22e;">2 bandages</span>.</div>
<<script>>
addBandages(2);
<</script>>
<<elseif $RandomReward is 3>>
<div id="Ntext">Searching through the forest, you find nothing.</div>
<</if>>
<div class="links">
<th>[[Continue exploring]]</th>
<th>[[Back to the path|Forest]]</th>
</div></div>
<<cacheaudio "wolf1" "media/enemies/wolf-howl.mp3">>
<<cacheaudio "wolf2" "media/enemies/wolves-howl.mp3">>
<<cacheaudio "wolf3" "media/enemies/monsterwolf-howl.mp3">>
<<cacheaudio "werewolf" "media/enemies/werewolf.mp3">>
<<cacheaudio "crazynurse" "media/enemies/woman-scream.mp3">> imposibleAberration: {
name: 'Imposible Aberration',
hp: 200,
maxHp: 200,
image: 'img/monsters/1.png',
damage: { min: 100, max: 140 },
description: 'Its mere existence defies the laws of nature, genetics, physics... in fact, it violates all laws.',
speed: 15,
range: 0
},
demonSoldier: {
name: 'Demoniac Soldier',
hp: 150,
maxHp: 150,
image: 'img/monsters/1.png',
damage: { min: 30, max: 46 },
description: 'A stronger demon. It specializes in powerful attacks.',
speed: 10,
range: 0
},
demonRunner: {
name: 'Demonian Runner',
hp: 100,
maxHp: 100,
image: 'img/monsters/1.png',
damage: { min: 12, max: 18 },
description: 'A fast and agile demon, moving at high speed and attacking quickly.',
speed: 25,
range: 0
},
practiceTarget: {
name: 'Practice target.',
hp: 100,
maxHp: 100,
image: 'img/monsters/target.png',
damage: { min: 0, max: 0 },
description: 'A standard practice target',
speed: 0,
range: 0
},
shadowCreature: {
name: 'Shadow Creature',
hp: 100,
maxHp: 100,
image: 'img/monsters/1.png',
damage: { min: 25, max: 50 },
description: 'A dark entity that lurks in the shadows',
speed: 3,
range: 0
},
nurseNaked: {
name: 'Mad nurse',
hp: 150,
maxHp: 150,
image: 'img/monsters/nurses/naked_nurse1.png',
damage: { min: 10, max: 20 },
description: 'A former nurse who lost her mind',
speed: 1,
range: 0
},
madNurse: {
name: 'Mad nurse',
hp: 150,
maxHp: 150,
image: 'img/monsters/nurses/naked_nurse2.png',
damage: { min: 15, max: 25 },
description: 'A former nurse who lost her mind',
speed: 1,
range: 0
},
crazyNurse: {
name: 'Mad nurse',
hp: 150,
maxHp: 150,
image: 'img/monsters/nurses/naked_nurse3.png',
damage: { min: 30, max: 40 },
description: 'A former nurse who lost her mind',
speed: 1,
range: 0
},
strongNurse: {
name: 'Mad nurse',
hp: 150,
maxHp: 150,
image: 'img/monsters/nurses/naked_nurse4.png',
damage: { min: 10, max: 15 },
description: 'A former nurse who lost her mind',
speed: 1,
range: 0,
},
prgwoman: {
name: 'A woman pregnant',
hp: 120,
maxHp: 120,
image: 'img/monsters/patients/prgwoman.png',
damage: { min: 12, max: 18 },
description: 'A lobotomized patient',
speed: 1,
range: 0
},
lobotomizedPatient: {
name: 'Lobotomized patient',
hp: 120,
maxHp: 120,
image: 'img/monsters/patients/lbpatient.png',
damage: { min: 12, max: 18 },
description: 'A lobotomized patient',
speed: 1,
range: 0
},
madPatient: {
name: 'Lobotomized Patient',
hp: 130,
maxHp: 130,
image: 'img/monsters/patients/madpatient.png',
damage: { min: 18, max: 24 },
description: 'A mad patient',
speed: 1,
range: 0
},
locoPatient: {
name: 'Lobotomized Patient',
hp: 130,
maxHp: 130,
image: 'img/monsters/patients/madpatient3.png',
damage: { min: 18, max: 24 },
description: 'A mad patient',
speed: 1,
range: 0
},
fappingPatient: {
name: 'Lobotomized Patient',
hp: 130,
maxHp: 130,
image: 'img/monsters/patients/patient1.png',
damage: { min: 18, max: 24 },
description: 'A mad patient',
speed: 1,
range: 0
},
fastPatient: {
name: 'Lobotomized Runner',
hp: 130,
maxHp: 130,
image: 'img/monsters/patients/fast_patient.png',
damage: { min: 18, max: 24 },
description: 'A mad runner patient',
speed: 4,
range: 0
},
whelsMan: {
name: 'Rafaelus',
hp: 150,
maxHp: 150,
image: 'img/monsters/patients/whels_man.png',
damage: { min: 100, max: 130 },
description: 'A body in a whelchair',
speed: 8,
range: 0
},
normalWolf: {
name: 'Wolf',
hp: 70,
maxHp: 70,
image: 'img/monsters/wolf.png',
damage: { min: 12, max: 18 },
description: 'A wild wolf',
speed: 10,
range: 0
},
strongWolf: {
name: 'Wolf',
hp: 90,
maxHp: 90,
image: 'img/monsters/wolf2.png',
damage: { min: 12, max: 18 },
description: 'A wild wolf, looks strong',
speed: 10,
range: 0
},
werewolf: {
name: 'Cave Werewolf',
hp: 200,
maxHp: 200,
image: 'img/monsters/werewolf.png',
damage: { min: 50, max: 58 },
description: 'Looks like a demoniac mutation from a wolf and a human',
speed: 5,
range: 0
},<<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">Suddenly, a sharp sound shatters the silence: a low, guttural growl that seems to echo through the entire forest. From the shadows ahead, a creature emerges, barely belonging to this world. The air around it pulses with malevolent energy. Its presence is overwhelming, and every fiber of your being knows this is no ordinary animal — it’s a predator born from the depths of an unknown hell.</div>
<<say $Mc>>Oh my god! what the fuck is this? A werewolf?<</say>>
<div id="Pensamiento">What the... is that real?</div>
<div class="links">
<th>[[Fight|ForestBattleDW]]</th>
</div>
</div>
<<timed 9s>>
<div id="npc-container">
<img src="img/monsters/werewolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 9s>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<</timed>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<<default>>
<div id="CBox">
<div id="Ntext">Suddenly, a sharp sound shatters the silence: a low, guttural growl that seems to echo through the entire forest. From the shadows ahead, a creature emerges, barely belonging to this world. The air around it pulses with malevolent energy. Its presence is overwhelming, and every fiber of your being knows this is no ordinary animal — it’s a predator born from the depths of an unknown hell.</div>
<<set $Randomcoment = random(5)>>
<<if $Randomcoment gt 3>>
<<say $Mc>>Shit! Again that monster.<</say>>
<</if>>
<div class="links">
<th>[[Fight|ForestBattleDW]]</th>
</div>
</div>
<<timed 2s>>
<div id="npc-container">
<img src="img/monsters/werewolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 2s>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<</timed>>
<</switch>>
<<set $Fdiabolicwolf = 1>><div id="CBox"></div>
<<script>>
startBattle('diabolicWolf', 20);
<</script>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<div id="CBox">
<div id="Pensamiento">Solitude has its advantages. I fell free...</div>
<div id="Ntext">Just as the thought settles, a sharp pain shoots through your head. It’s sudden and jarring, like a cruel reminder that the peace is fleeting. You press your fingers to your temples, trying to steady the thrum, but the ache lingers, gnawing at the edges of your focus.</div>
<<say $Mc>>Damn... my head’s spinning... I need a break. I’d better take one of my pills.<</say>>
<div class="links">
<th>[[Pick the pills|intropills]]</th>
</div>
</div>
<<set $wakeup = 1>><div id="CBox">
<div id="Ntext">You lie down on your bed, letting the softness of the sheets wrap around you. Your fingers begin to glide over your skin, first slowly, but gradually picking up speed in an attempt to relieve a pent-up tension. You close your eyes, allowing your mind to wander through fleeting sensations and thoughts.</div>
<div id="Pensamiento">Oh... yes, right there... lick right there...</div>
<div id="Ntext">Time seemed to stand still for a moment, as if the outside world didn’t exist. A gentle current of electricity ran through your body, making you arch your back slightly.</div>
<<say $Mc>>Oh..! Hmm...<</say>>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/casey/pussy.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Faster|introPhone]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Me", "video", "media/casey/pussy.mp4");
<</script>>
<<playMusic "music2" "media/music/none.mp3" volume:0.5>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The bathroom is small but functional. A water-stained mirror hangs above the sink, alongside some scattered toiletries. The shower, with a half-rotten plastic curtain hanging precariously, and the worn-out tiled floor, give the bathroom an almost unsettling feel. In one corner, a small medicine cabinet is closed, its contents likely forgotten, but always within reach when needed.</div>
<<default>>
<div id="Ntext">The bathroom is small but functional. A water-stained mirror hangs above the sink, alongside some scattered toiletries. </div>
<</switch>>
<div class="linksTwo">
<th>[[Check the mirror|intromirror]]</th>
<th>[[Check the cabinet|intromedkit]]</th>
</div>
<div class="links">
<th>[[Exit|introflat]]</th>
</div>
</div>
<div id="LocationName">Bathroom</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The space is small but functional. A desk with a computer and an old printer, some disorganized papers, occupies one corner, while the bed, with a blanket thrown on carelessly, rests near a wardrobe with slightly misaligned doors. The dim lighting from a desk lamp creates an atmosphere that is both practical and messy, the perfect reflection of the pace of life in this place.</div>
<<say $Mc>>Everything I need to work and sleep...<</say>>
<div id="Pensamiento">Combining productivity and comfort in one space...</div>
<<say $Mc>>Sure, haha... That's what the guy who rented me the apartment told me.<</say>>
<<default>>
<div id="Ntext">The space is small but functional: a desk with everything you need to work and, right next to it, the bed, combining productivity and comfort in one space—or at least that's what you like to think.</div>
<</switch>>
<div class="linksTwo">
<th>[[Check the desk|checkdesk]]</th>
</div>
<div class="links">
<th>[[Go to entrance|introflat2]]</th>
<th>[[Go to bathroom|introtoilet]]</th>
</div>
</div>
<div id="LocationName">Office</div>
<<if $introbatteries is true>>
<div id="CBox">
<div id="Ntext">You open the drawer again. There's nothing left inside, just emptiness.</div>
<div class="links">
<th>[[Back|introflat2]]</th>
</div>
<img id="event-image" src="img/events/homedrawers.png">
</div>
<<else>>
<div id="CBox">
<div id="Ntext">You open the drawers of the entrance table. The only thing inside is a pack of <span style="color: #22b22e;">5 cheap batteries</span>. Nothing else interesting. A faint smell of dust rises as you close the drawer.</div>
<<say $Mc>>Well, some batteries could come in handy, especially if you're heading to a dark, abandoned place.<</say>>
<div class="links">
<th>[[Back|introflat2]]</th>
</div>
<img id="event-image2" src="img/events/homedrawers.png">
</div>
<<script>>
window.addCheapBattery(5);
<</script>>
<<set $introbatteries = true>>
<<SanityMessage "+5 Cheap Batteries">>
<</if>>
<div id="CBox">
<<if $Naked is true>>
<<switch visited()>>
<<case 1>>
<div id="Ntext">The entrance to the apartment is narrow, but just enough to give a sense of direct access to your life. The slightly worn wooden floor stretches into the small hallway that leads to the office and bathroom. An entry table rests against the wall, cluttered with items like keys, letters, and an unlit lamp. The dim light from a ceiling fixture barely illuminates the space, making the entry feel somewhat gloomy, as if it hasn't been updated in years. The atmosphere is simple, but as always, a reminder of what your life is like now.</div>
<<default>>
<div id="Ntext">The entrance to the apartment is narrow, but just enough to give a sense of direct access to your life. </div>
<<say $Mc>>It’s probably best if I get dressed before heading out into the streets.<</say>>
<</switch>>
<<else>>
<<switch visited()>>
<<case 1>>
<div id="Ntext">The entrance to the apartment is narrow, but just enough to give a sense of direct access to your life. The slightly worn wooden floor stretches into the small hallway that leads to the office. An entry table rests against the wall, cluttered with items like keys, letters, and an unlit lamp. The dim light from a ceiling fixture barely illuminates the space, making the entry feel somewhat gloomy, as if it hasn't been updated in years. The atmosphere is simple, but as always, a reminder of what your life is like now.</div>
<<default>>
<div id="Ntext">The entrance to the apartment is narrow, but just enough to give a sense of direct access to your life. </div>
<</switch>>
<</if>>
<<if $Naked is true>>
<div class="linksTwo">
<th>[[Check the drawers|introbatteries]]</th>
<th>[[Put your clothes on|dressed]]</th>
</div>
<div class="links">
<th>[[Go to office|introflat]]</th>
</div>
<<else>>
<div class="linksTwo">
<th>[[Check the drawers|introbatteries]]</th>
</div>
<div class="links">
<th>[[Go to office|introflat]]</th>
<<if $introgun is true>>
<th>[[Leave the apartment|intropasillo]]</th>
<</if>>
</div>
<</if>>
</div>
<div id="LocationName">Home entrance</div><div id="CBox">
<<say $Mc>>Time to stop scandalizing the furniture and find something to wear.<</say>>
<div id="Ntext">With a sigh, you put on your underwear and then slip into a fitted black t-shirt that feels comfortable and versatile. You grab a pair of dark jeans—durable and practical—and lace up your boots firmly, preparing yourself for whatever lies ahead. You approach the wardrobe and open it, examining the clothing options in front of you. Your gaze settles on two items: a sleek, shiny new black leather jacket with a modern and bold look, and a light brown trench coat, worn by time but familiar, like an old friend that has always been there during the toughest moments.</div>
<div class="links">
<th>[[Black jacket|blackjacketIntro]]</th>
<th>[[Trench coat|trenchcoatIntro]]</th>
</div>
</div>
<<set $Naked = false>>
<<run changeImage("img/characters/casey/casey2.png")>>
<<set $Naked = false>>
<<script>>
setup.phoneSystem.unlockMedia("Me", "image", "img/characters/casey/casey2.png");
<</script>><div id="CBox">
<div id="Ntext">The desk shows its age, with a surface scratched and dented from years of wear. A modest computer sits on one side. Scattered papers, a coffee mug with a faint ring at the bottom, and a cracked pen holder clutter the space. The drawers are slightly crooked, hinting at frequent use.</div>
<div class="links">
<th>[[Open the drawer|introgun]]</th>
<th>[[Check the computer|introsave2]]</th>
<th>[[Leave the desk|introflat]]</th>
</div>
<img id="event-image2" src="img/events/homedesk.png">
</div><div id="CBox">
<div id="Ntext">The computer whirs softly as it powers on, the glow of the screen flickering weakly in the dim light. The interface is bare, a relic of simpler times.
The soft hum of the machine fills the silence, offering a moment of quiet focus.</div>
<div class="links">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<th>[[Go back|checkdesk]]</th>
</div>
<img id="event-image2" src="img/events/homedesk.png">
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<if $IntroComplete is true>>
<<playMusic "music" "media/music/none.mp3" volume:0.5>>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.2>>
<<playMusic "music3" "media/music/none.mp3" volume:0.5>>
<<set $IntroComplete = false>>
<</if>>
<<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You step out of the apartment, and the door closes with a soft click behind you. The hallway is dimly lit, with the scent of old wood and dust in the air. Your footsteps resonate softly on the floor as you make your way toward the stairs.
As you descend toward the street, you notice that one of your neighbor's doors is slightly ajar. As you pass by the door, you think you hear faint, distant screams—almost imperceptible—reaching your ears. They sound like a woman's.</div>
<<say $Mc>>Was that?<</say>>
<div id="Pensamiento">Sneaking in just like that would be intrusive, but what if someone needs help?</div>
<div class="linksTwo">
<th>[[Check neighbours|neighbourspy]]</th>
</div>
<div class="links">
<th>[[Go to street|introstreet]]</th>
<th>[[My apartment|introflat2]]</th>
</div>
</div>
<<case 2>>
<<if $neighbourspy is true>>
<div id="CBox">
<div id="Ntext">As you pass through the hallway again, your steps feel unsteady on the wooden floor. Your eyes settle on the neighbors' door, now firmly closed. You feel a slight shiver as a memory slips into your mind: the unexpected sight you encountered upon entering.</div>
<div id="Pensamiento">Why did I have to do it? I shouldn't have done it... but now it's in my head forever.</div>
<div id="Ntext">You pause for a moment in front of the door, the echo of your own thoughts pounding in your head. Did you really enter out of curiosity, or was it just an accident? The doubt torments you as you move toward the stairs, trying to push that image from your mind.</div>
<div class="links">
<th>[[Go to street|introstreet]]</th>
<th>[[My apartment|introflat2]]</th>
</div>
</div>
<<else>>
<div id="CBox">
<div id="Ntext">You cross the hallway again, your steps faintly echoing on the wooden floor. As you pass in front of the neighbor's door, you notice that it's now closed.</div>
<div id="Pensamiento">It was probably nothing.</div>
<div class="links">
<th>[[Go to street|introstreet]]</th>
<th>[[My apartment|introflat2]]</th>
</div>
</div>
<</if>>
<<default>>
<div id="CBox">
<div id="Ntext">You cross the hallway again, your steps faintly echoing on the wooden floor.</div>
<div class="links">
<th>[[Go to street|introstreet]]</th>
<th>[[Enter in your home|introflat2]]</th>
</div>
</div>
<</switch>>
<div id="LocationName">Apartment hallway</div><div id="CBox">
<div id="Ntext">As you get closer the room, the screams break the silence once again, but you notice a subtle change in their tone. Although they clearly express pain, they also carry a faint hint of pleasure, like distant echoes of something you had forgotten. Even if only for a moment, they remind you of a time that now feels very far away.</div>
<<say $Mc>>Oh wow... I think it's...<</say>>
<div id="Pensamiento">It doesn’t seem like anyone needs help. I should leave.</div>
<div id="Ntext">
You try to turn and leave, but the moans hit you like a punch straight to the chest. A mix of anger and uncontrollable desire begins to burn inside you, rooting you to the spot as if chains were holding you in place. The door is slightly ajar, and no matter how hard you fight the urge, you can’t stop yourself from peeking inside.</div>
<div class="links">
<th>[[Glance|peekintro]]</th>
</div>
</div><<if $Rodriguezintro is true>>
<div id="CBox">
<div id="Ntext">You descend the stairs of your building, the evening air thick with humidity, sticking to your skin like a heavy garment. It's hot, but not unbearable, just uncomfortable. The main door creaks as you push it open, and the slight coolness from outside hits you with a bit of relief. You don't take long to notice her.
She's leaning against a lamppost a few meters away, smiling slightly while fiddling with her phone. Your old friend Gabriella. It’s been a year since you reconciled, and though the fight that separated you is now a distant memory, the ease between the two of you is evident. The wind moves the strands of her high ponytail as the sun reflects off her dark hair, giving her a relaxed air, almost as if there had never been any distance between you.
Gabriela lifts her head and sees you, her eyes light up immediately, as if the simple act of seeing you there makes her feel that everything is right again, she laughs and waves at you while stepping away from the streetlight and walking toward you
</div>
<<say $Gabriela>>I was just about to send you a message!<</say>>
<div class="links">
<th>[[Hey Gabi!|introgabifriend]]</th>
</div>
</div>
<<else>>
<<goto "introstreet2">>
<</if>>
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "image", "img/characters/rodriguez/gabriela.png");
<</script>><div id="CBox">
<<say $Mc>>Hey, Gabi.<</say>>
<<say $Gabriela>>It’s been a while since we’ve had coffee, huh? I thought today would be a good day to catch up, maybe take a walk. How’s everything going with you?<</say>>
<<say $Mc>>But it’s only been three days since we last saw each other, did you already miss me that much?<</say>>
<<say $Gabriela>>Alright, alright! I may have exaggerated a bit, but honestly, coffee with you is never too much. Although, I’ll admit I’ve been thinking we should go out more often. Once a week isn’t enough.<</say>>
<div id="Ntext">You can’t help but smile at her energy, but something inside you tells you that this conversation won’t be as light as it seems.</div>
<<say $Mc>>I’m not going to lie, I could really use more time for us. Work doesn’t give me a break.<</say>>
<<say $Gabriela>>You can say that again! I just closed a complicated case, but now... I’ve found out that women are disappearing around the city. And you know, I’ve always been curious about those kinds of cases. I want them to assign me the investigation. It’s exactly the type of work I enjoy.<</say>>
<div id="Ntext">You tense up for a moment. You know that’s the case you’ve been assigned to, but you can’t tell her anything. Not yet. The verbal confidentiality agreement with Mayor Quentin prevents you from doing so. You try to stay calm as you listen to her.</div>
<div class="links">
<th>[[Respond vaguely|FriendGabiNoLie]]</th>
</div>
</div>
<<include "Gabi2">><div id="CBox">
<<say $Gabriela>>So you're here. I thought you had disappeared forever.<</say>>
<<say $Mc>>I don't have time to talk, Gabriela.<</say>>
<div id="Ntext">Gabriela furrows her brow, surprised by the coldness. Her concern is obvious, but you keep moving forward. Gabriela follows you with her gaze, more uneasy than she lets on. She can't help but notice that you're agitated, in a hurry.</div>
<<say $Gabriela>>Where are you going so fast? I haven't seen you in two years, and now, suddenly, I see you leaving like this... What's going on, Casey?<</say>>
<div id="Ntext">Her voice is softer, as if unsure how to approach the topic, but it's clear something is bothering her about the way you're acting.</div>
<div class="links">
<th>[[Keep your distance|introgabinofriend1]]</th>
<th>[[Reveal a little|introgabinofriend2]]</th>
</div>
</div>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/casey1.png")>>
<</if>>
<<include "Gabi1">><div id="CBox">
<<say $Mc>>Well, I’m sure someone competent will end up taking the case. The city can’t afford to leave something like this unresolved.<</say>>
<div id="Ntext">Gabriela frowns slightly, studying you, as if trying to read between the lines of what you just said.</div>
<<say $Gabriela>>Someone competent, huh? Who? You?<</say>>
<<say $Mc>>I’m just saying don’t worry so much. I’m sure everything will turn out fine.<</say>>
<<say $Gabriela>>Relax, its just a joke. You know what? How about we grab a coffee? You say there’s nothing going on, but your face says otherwise. Maybe talking for a while will help you relax.<</say>>
<<say $Mc>>I appreciate it, Gabi, but I can't. I'm in a hurry, got a pending case. You know how it is. I can't stay and chat right now. Besides, it's a bit late for coffee.<</say>>
<<say $Gabriela>>Really? If there's one thing I've learned from you, it's that it's never too late for coffee... even just for a little while? Not everything in life has to be work.<</say>>
<<say $Mc>>I know, but it’s not that simple. We’ll talk another day, I promise. Right now, I have to go.<</say>>
<<say $Gabriela>>Are you that busy? Aren’t you going to tell me anything about the case? Come on, Casey, you know I’m interested. What are you investigating this time? Who has you so caught up?<</say>>
<div class="links">
<th>[[We will be partners again|introgabifriendend2]]</th>
</div>
</div>
<<include "Gabi2">><div id="CBox">
<<say $Mc>>It's nothing important. I don't have time to talk.<</say>>
<div id="Ntext">Gabriela takes a step towards you, clearly worried, but you keep walking without stopping. She doesn't seem willing to let you go so easily. Her face shows concern, but she doesn't know how to make you stop and explain. The anguish is clear in her voice. </div>
<<say $Gabriela>>Casey, please! I was worried... And now I see you, running as if you're running from something.<</say>>
<div id="Ntext">She knows something is wrong, but has no idea what it is.</div>
<div class="links">
<th>[[Lie|LieToGabi]]</th>
<th>[[Be evasive|NoLieToGabi]]</th>
</div>
</div>
<<include "Gabi1">>
<div id="CBox">
<<say $Mc>>I have work, Gabriela. The case I'm talking about is complicated.<</say>>
<div id="Ntext">Gabriela looks at you intently, as if searching for more details, but doesn't get any further information. Her face shows concern, but she doesn't know how to make you stop and explain.</div>
<<say $Gabriela>>Casey, please, what's going on? I was worried... And now I see you, running as if you're running from something.<</say>>
<<say $Mc>>Worried? And why haven't I heard from you all this time?<</say>>
<<say $Gabriela>>Come on, Casey! I was mad at you, and you didn’t even say goodbye to me. That hurt, you know?<</say>>
<div id="Ntext">She knows something is wrong, but has no idea what it is.</div>
<div class="links">
<th>[[Lie|LieToGabi]]</th>
<th>[[Be evasive|NoLieToGabi]]</th>
</div>
</div>
<<include "Gabi1">><div id="CBox">
<div id="Ntext">With a quiet decision, you reach for the black leather jacket you recently purchased and slip it on. The smooth leather feels sleek and edgy as it settles over your shoulders. You leave the asymmetrical zipper unfastened, the jacket's distinctive collar and metal buttons giving it a bold character. Ready and steady, you adjust the lapels while looking at yourself in the mirror, preparing yourself for whatever comes next.</div>
<<say $Mc>>It's time to break in my new jacket.<</say>>
<div class="links">
<th>[[Put on the trench coat|trenchcoatIntro]]</th>
<th>[[Get moving|introflat2jacket]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<div id="CBox">
<div id="Ntext">With a quiet decision, you reach for the light brown trench coat and slip it on. The worn fabric feels familiar and comforting as it settles over your shoulders. You leave the buttons unfastened, the coat hanging loosely around you like an old, trusted friend. Ready and steady, you adjust the collar while looking at yourself in the mirror, preparing yourself for whatever comes next.</div>
<div class="links">
<th>[[Put on the jacket|blackjacketIntro]]</th>
<th>[[Get moving|introflatcoat]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/caseycoat.png")>><<if $introcase isnot 2>>
<<goto "intro2">>
<<else>>
<<goto "introflat">>
<</if>>
<<set $Mc = {
Name: $playerName,
img: "img/characters/casey/casey-avatar2.png"
}>>
<<set $CaseyJacket = true>>
<<script>>
setup.phoneSystem.unlockMedia("Me", "image", "img/characters/casey/caseyjacket.png");
<</script>><<if $introcase isnot 2>>
<<goto "intro2">>
<<else>>
<<goto "introflat">>
<</if>>
<<set $CaseyCoat = true>>
<<script>>
setup.phoneSystem.unlockMedia("Me", "image", "img/characters/casey/caseycoat.png");
<</script>><div id="CBox">
<div id="Ntext">You're about to walk away when, suddenly, the moans intensify. Your heart leaps, and you feel a shiver inside. You try to ignore the sound, but you can't; each moan makes you shiver and triggers an unexpected reaction within you. Your mind begins to imagine, but you force yourself to act immediately, determined to leave before anyone sees you.</div>
<<say $Mc>>Dammit! Why did I have to go in there?<</say>>
<div id="Pensamiento">I was just checking to see if someone was in danger. Nothing more than that. It was a mistake. I didn't mean to see this...</div>
<div id="Ntext">You step back from the apartment, covering your face with your hands in shame.
You shake your head, trying to clear the image from your mind as you take a few trembling breaths. You then exit the apartment and leave your neighbors behind, forgetting to close the ajar door.</div>
<div class="links">
<th>[[Exit|introstreet]]</th>
</div>
</div>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.2>><<set $McMoney = $McMoney || 0>>
<<set $FranklinMoney = $FranklinMoney || 500>>
<<set $soldItems = $soldItems || []>>
<<script>>
window.shopSystem = {
prices: {
// Ammo
'9mm 115-grain': { buy: 60, sell: 2, buyQty: 20, img: 'img/items/ammo/pistol/9mm.png' },
'9mm 147-grain': { buy: 70, sell: 4, buyQty: 10, img: 'img/items/ammo/pistol/expansive.png' },
'9mm Incendiary': { buy: 90, sell: 5, buyQty: 10, img: 'img/items/ammo/pistol/incendiary.png' },
'Shotgun Shell': { buy: 40, sell: 2, buyQty: 10, img: 'img/items/ammo/shotgun/shells.png' },
'Slug Shells': { buy: 40, sell: 2, buyQty: 10, img: 'img/items/ammo/shotgun/slug.png' },
'Dragon\'s Breath': { buy: 40, sell: 2, buyQty: 10, img: 'img/items/ammo/shotgun/dragon.png' },
'Rifle Rounds': { buy: 30, sell: 1, buyQty: 10, img: 'img/items/ammo/rifle/rounds.png' },
'Armor Piercing': { buy: 40, sell: 2, buyQty: 10, img: 'img/items/ammo/rifle/piercing.png' },
'Tracer Rounds': { buy: 60, sell: 3, buyQty: 10, img: 'img/items/ammo/rifle/tracer.png' },
// Healing
'Medkit': { buy: 80, sell: 30, img: 'img/items/heal/medkit.png' },
'Bandages': { buy: 30, sell: 15, img: 'img/items/heal/bandages.png' },
'Antibiotics': { buy: 50, sell: 25, img: 'img/items/heal/antibio.png' },
'Stims': { sell: 30, img: 'img/items/heal/stim.png' },
// Sanity
'Calming Pills': { buy: 35, sell: 15, img: 'img/items/sanity/pills.png' },
'Antidepressants': { buy: 60, sell: 30, img: 'img/items/sanity/antidep.png' },
// Batteries
'Cheap Battery': { buy: 10, sell: 5, img: 'img/items/lantern/cheap.png' },
'Medium Battery': { buy: 30, sell: 15, img: 'img/items/lantern/medium.png' },
'Duracell Battery': { sell: 25, img: 'img/items/lantern/elite.png' },
// Keys
'Lockpick': { sell: 30, img: 'img/items/keys/lockpick.png' },
'Chemicals': { sell: 20, img: 'img/items/keys/chemicals.png' },
'TeddyBear': { sell: 60, img: 'img/items/keys/chemicals.png' },
// Weapons
'Pistol': { sell: 100, img: 'img/items/weapons/gun.png' },
'Shotgun': { sell: 200, img: 'img/items/weapons/shotgun.png' },
'Rifle': { sell: 250, img: 'img/items/weapons/rifle.png' },
},
notify: function(message, isError = false) {
const notification = $(`
<div class="shop-notification" style="
position: fixed;
top: 20px;
right: 20px;
background: #1e1e1e;
color: #f5f5f5;
border: 2px solid ${isError ? '#8b0000' : '#b18d17'};
padding: 10px;
border-radius: 5px;
font-family: 'Cinzel', serif;
text-align: center;
z-index: 9999;
opacity: 0.9;
max-width: 300px;
">
${message}
</div>
`).appendTo('body');
setTimeout(() => {
notification.fadeOut(300, function() {
$(this).remove();
});
}, 2000);
},
buyItem: function(itemName, isBuyback = false) {
const itemConfig = this.prices[itemName];
if (!itemConfig) {
this.notify(`Error: Invalid item ${itemName}`, true);
return false;
}
// Calculate the price (regular buy price or buyback markup)
const price = isBuyback ? Math.round(itemConfig.sell * 1.5) : itemConfig.buy;
if (State.variables.McMoney < price) {
this.notify('Not enough money!', true);
return false;
}
let success = false;
const quantity = isBuyback ? 1 : (itemConfig.buyQty || 1);
// For buyback items, we need to remove them from the soldItems list
if (isBuyback) {
// Find the item in the soldItems array
const itemIndex = State.variables.soldItems.findIndex(item => item.name === itemName);
if (itemIndex !== -1) {
// Remove one instance of the item from soldItems
const soldItem = State.variables.soldItems[itemIndex];
soldItem.quantity--;
if (soldItem.quantity <= 0) {
State.variables.soldItems.splice(itemIndex, 1);
}
}
}
switch(itemName) {
// Pistol ammo
case '9mm 115-grain':
success = window.addAmmo('9mm', quantity);
break;
case '9mm 147-grain':
success = window.addAmmo('expansive', quantity);
break;
case '9mm Incendiary':
success = window.addAmmo('incendiary', quantity);
break;
// Shotgun ammo
case 'Shotgun Shell':
success = window.addAmmo('shells', quantity);
break;
case 'Slug Shells':
success = window.addAmmo('slug', quantity);
break;
case 'Dragon\'s Breath':
success = window.addAmmo('dragon', quantity);
break;
// Rifle ammo
case 'Rifle Rounds':
success = window.addAmmo('rounds', quantity);
break;
case 'Armor Piercing':
success = window.addAmmo('piercing', quantity);
break;
case 'Tracer Rounds':
success = window.addAmmo('tracer', quantity);
break;
// Healing items
case 'Medkit':
success = window.addMedkit(1);
break;
case 'Bandages':
success = window.addBandages(1);
break;
case 'Antibiotics':
success = window.addAntiBiotics(1);
break;
case 'Stims':
success = window.addStim(1);
break;
// Sanity items
case 'Calming Pills':
success = window.addSanityItem('calmingPills', 1);
break;
case 'Antidepressants':
success = window.addSanityItem('AntiDepressants', 1);
break;
// Batteries
case 'Cheap Battery':
success = window.addCheapBattery(1);
break;
case 'Medium Battery':
success = window.addMediumBattery(1);
break;
case 'Duracell Battery':
success = window.addEliteBattery(1);
break;
// Keys
case 'Lockpick':
success = window.addLockpick(1);
break;
case 'Chemicals':
success = window.addChemicals(1);
break;
}
if (success) {
// Update player and Franklin's money
State.variables.McMoney -= price;
State.variables.FranklinMoney += price;
// Update displays
$('#money-display').text(State.variables.McMoney + '$');
$('#franklin-money-display').text(State.variables.FranklinMoney + '$');
this.notify(`Bought ${itemName} for $${price}`);
this.updateDisplay();
return true;
}
return false;
},
sellItem: function(itemId) {
Object.entries(State.variables.inventory).forEach(([section, slots]) => {
slots.forEach((item, index) => {
if (item && item.id === itemId) {
const price = this.prices[item.name]?.sell;
if (!price) {
this.notify(`Cannot sell ${item.name}`, true);
return;
}
if (State.variables.FranklinMoney < price) {
this.notify("Not enough money to buy this", true);
return;
}
if (item.type === 'bullet_pack') {
const ammoToSell = Math.min(item.count, 10);
const totalPrice = price * ammoToSell;
if (State.variables.FranklinMoney < totalPrice) {
this.notify("Not enough money to buy all of this", true);
return;
}
item.count -= ammoToSell;
State.variables.McMoney += totalPrice;
State.variables.FranklinMoney -= totalPrice;
this.notify(`Sold ${ammoToSell} ${item.name} for $${totalPrice}`);
// Add to sold items list for buyback
this.addToSoldItems(item.name, ammoToSell);
} else {
item.count--;
State.variables.McMoney += price;
State.variables.FranklinMoney -= price;
this.notify(`Sold ${item.name} for $${price}`);
// Add to sold items list for buyback
this.addToSoldItems(item.name, 1);
}
if (item.count <= 0) {
State.variables.inventory[section][index] = null;
// Add this block to remove quickslot references
Object.entries(State.variables.inventory).forEach(([t, s]) => {
s.forEach((slotItem, i) => {
if (slotItem && slotItem.isQuickslotReference &&
slotItem.originalType === section &&
slotItem.originalSlot === index) {
State.variables.inventory[t][i] = null;
}
});
});
}
$('#money-display').text(State.variables.McMoney + '$');
$('#franklin-money-display').text(State.variables.FranklinMoney + '$');
this.updateDisplay();
window.updateCharacterMenu();
window.updateRelatedSystems();
}
});
});
},
addToSoldItems: function(itemName, quantity) {
// Initialize soldItems if it doesn't exist
if (!State.variables.soldItems) {
State.variables.soldItems = [];
}
// Check if this item is already in the sold items list
const existingItem = State.variables.soldItems.find(item => item.name === itemName);
if (existingItem) {
existingItem.quantity += quantity;
} else {
// Add the item to the sold items list
State.variables.soldItems.push({
name: itemName,
quantity: quantity,
img: this.prices[itemName]?.img || 'img/items/unknown.png'
});
}
},
isItemSellable: function(item) {
if (!item) return false;
// Special case for weapons - they don't need count check
if (item.type === 'weapon') {
return item.isSellable === true ||
(item.weaponData && item.weaponData.isSellable === true);
}
// For normal items, check count
if (item.count <= 0) return false;
// Check item types or isSellable flag
return ['bullet_pack', 'battery', 'healing', 'sanity'].includes(item.type) ||
item.isSellable === true;
},
updateDisplay: function() {
const sellList = $('#sell-list');
if (!sellList.length) {
return;
}
sellList.empty();
let totalValue = 0;
let hasSellableItems = false;
Object.values(State.variables.inventory).forEach(slots => {
slots.forEach(item => {
if (item && this.isItemSellable(item)) {
hasSellableItems = true;
const price = this.prices[item.name]?.sell;
const imgSrc = this.prices[item.name]?.img || 'img/items/unknown.png';
if (price) {
const ammoToSell = item.type === 'bullet_pack' ?
Math.min(item.count, 10) : 1;
const totalPrice = price * ammoToSell;
totalValue += totalPrice;
const displayText = item.type === 'bullet_pack' ?
`${item.name} (${item.count} rounds) - $${price}/round` :
`${item.name} (${item.count}) - $${price}`;
// Check if Franklin has enough money
const canAfford = State.variables.FranklinMoney >= totalPrice;
const buttonClass = canAfford ? 'sell-button' : 'sell-button disabled';
const buttonAttr = canAfford ?
`onclick="window.shopSystem.sellItem('${item.id}')"` :
'disabled';
sellList.append(`
<div class="item-card">
<div class="item-image">
<img src="${imgSrc}" alt="${item.name}" onerror="this.src='img/items/unknown.png'">
</div>
<div class="item-details">
<div class="item-name">${displayText}</div>
<button class="${buttonClass}" ${buttonAttr}>
Sell${item.type === 'bullet_pack' ? ` ${ammoToSell}` : ''}
</button>
</div>
</div>
`);
}
}
});
});
if (!hasSellableItems) {
sellList.append('<div class="no-items">No items to sell</div>');
}
$('#money-display').text(State.variables.McMoney + '$');
$('#franklin-money-display').text(State.variables.FranklinMoney + '$');
},
switchTab: function(tab) {
if (tab === 'buy') {
$('#buy-container').show();
$('#sell-container').hide();
$('#buy-tab').addClass('active');
$('#sell-tab').removeClass('active');
} else {
$('#buy-container').hide();
$('#sell-container').show();
$('#buy-tab').removeClass('active');
$('#sell-tab').addClass('active');
this.updateDisplay();
}
},
generateProductGrid: function() {
const categories = {
"Ammunition": [
'9mm 115-grain', '9mm 147-grain', '9mm Incendiary',
'Shotgun Shell', 'Slug Shells', 'Dragon\'s Breath',
'Rifle Rounds', 'Armor Piercing', 'Tracer Rounds'
],
"Healing": ['Medkit', 'Bandages', 'Antibiotics'],
"Sanity": ['Calming Pills', 'Antidepressants'],
"Batteries": ['Cheap Battery', 'Medium Battery']
};
const container = $('#buy-container');
container.empty();
// Generate regular shop items
Object.entries(categories).forEach(([category, items]) => {
const categoryHeader = $(`<h2 class="category-header">${category}</h2>`);
container.append(categoryHeader);
const grid = $('<div class="product-grid"></div>');
items.forEach(item => {
const itemData = this.prices[item];
if (!itemData || !itemData.buy) return; // Skip items that can't be bought
const qtyText = itemData.buyQty ? `(${itemData.buyQty} units)` : '';
const card = $(`
<div class="product-card">
<div class="product-title">${item}</div>
<div class="product-image">
<img src="${itemData.img || 'img/items/unknown.png'}" alt="${item}" onerror="this.src='img/items/unknown.png'">
</div>
<div class="product-price">$${itemData.buy} ${qtyText}</div>
<button class="buy-button" onclick="window.shopSystem.buyItem('${item}')">Buy</button>
</div>
`);
grid.append(card);
});
container.append(grid);
});
// Generate buyback section if there are sold items
if (State.variables.soldItems && State.variables.soldItems.length > 0) {
const buybackHeader = $(`<h2 class="category-header buyback-header">Items You Can Buy Back</h2>`);
container.append(buybackHeader);
const buybackGrid = $('<div class="product-grid buyback-grid"></div>');
State.variables.soldItems.forEach(soldItem => {
const itemData = this.prices[soldItem.name];
if (!itemData || !itemData.sell) return;
// Calculate buyback price (50% markup from sell price)
const buybackPrice = Math.round(itemData.sell * 1.5);
const card = $(`
<div class="product-card buyback-card">
<div class="product-title">${soldItem.name}</div>
<div class="product-image">
<img src="${soldItem.img}" alt="${soldItem.name}" onerror="this.src='img/items/unknown.png'">
</div>
<div class="product-price">$${buybackPrice} (${soldItem.quantity} available)</div>
<button class="buy-button buyback-button" onclick="window.shopSystem.buyItem('${soldItem.name}', true)">Buy Back</button>
</div>
`);
buybackGrid.append(card);
});
container.append(buybackGrid);
}
}
};
// Initialize shop when document is ready
$(document).ready(function() {
if ($('#shop-container').length) {
// Initialize soldItems array if it doesn't exist
if (!State.variables.soldItems) {
State.variables.soldItems = [];
}
window.shopSystem.generateProductGrid();
window.shopSystem.updateDisplay();
// Initialize money displays
$('#money-display').text(State.variables.McMoney + '$');
$('#franklin-money-display').text(State.variables.FranklinMoney + '$');
}
});
<</script>>
<div id="BoxShop">
<div id="shop-container">
<div class="shop-header">
<div id="money-display"></div>
<h1>Franklin's Supplies</h1>
<div id="franklin-money-display"></div>
</div>
<div class="shop-tabs">
<button id="buy-tab" class="tab-button active" onclick="window.shopSystem.switchTab('buy')">Buy</button>
<button id="sell-tab" class="tab-button" onclick="window.shopSystem.switchTab('sell')">Sell</button>
</div>
<div id="buy-container">
<!-- Generated dynamically by JS -->
</div>
<div id="sell-container" style="display: none;">
<div id="sell-list" class="sell-grid">
<!-- Generated dynamically by JS -->
</div>
</div>
</div>
<div class="links">
<a class="back-arrow" data-passage="`Cabin`">←</a>
</div>
</div>
<<include "Frank">>
<style>
.links {
top: 4.5em;
left: -25em;
z-index: 1000;
position: absolute;
}
.links a {
padding: 0px 5px;
}
.back-arrow {
padding: 10px 15px;
background-color: #3e3423;
border: 1px solid #634d23;
color: #d9c27e;
text-decoration: none;
border-radius: 5px;
display: inline-block;
font-family: Trajan Pro, Times New Roman, serif;
font-size: 15px;
text-shadow: 1px 1px 1px #000;
}
#BoxShop {
position: relative;
top: -15em;
left: -9em;
}
#shop-container {
max-width: 95%;
min-width: 320px;
max-height: 80vh;
min-height: 460px;
margin: 30px auto;
padding: 0px 20px;
background: #000000d1;
border-radius: 3px;
border: 1px solid #e5b600;
box-shadow: 0 0 20px #000000, inset 0 0 20px rgb(0 0 0);
overflow-y: auto;
backdrop-filter: blur(3px);
}
.shop-header {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #e5b600;
padding: 10px 0;
margin-bottom: -20px;
}
h1 {
text-align: center;
font-size: 28px;
margin: 0;
color: #e5b600;
font-family: 'Cinzel', serif;
text-shadow: 0 0 8px rgba(139, 0, 0, 0.6);
letter-spacing: 2px;
flex-grow: 1;
position: relative;
top: -22px;
}
#money-display {
font-size: 22px;
font-weight: bold;
color: #e5b600;
text-shadow: 0 0 8px rgb(255 0 0 / 60%);
font-family: 'Cinzel', serif;
text-align: right;
padding: 0 10px;
min-width: 80px;
letter-spacing: 1px;
position: relative;
top: 10px;
}
#franklin-money-display {
font-size: 22px;
font-weight: bold;
color: #e5b600;
text-shadow: 0 0 8px rgb(255 0 0 / 60%);
font-family: 'Cinzel', serif;
text-align: right;
padding: 0 10px;
min-width: 80px;
letter-spacing: 1px;
position: relative;
top: 10px;
}
button.disabled {
opacity: 0.5;
cursor: not-allowed;
background: #1a0000;
color: #c50000;
border: 1px solid #3a0000;
}
button.disabled:hover {
background: #1a0000;
border: 1px solid #3a0000;
box-shadow: 0 0 5px rgba(139, 0, 0, 0.3);
color: #c50000;
}
.shop-tabs {
display: flex;
justify-content: center;
gap: 15px;
margin-bottom: -70px;
z-index: 100;
}
.tab-button {
padding: 10px 20px;
background: #00151a;
border-radius: 2px;
border: 1px solid #634d23;
color: #d9c27e;
cursor: pointer;
transition: all 0.3s ease;
font-family: "Cinzel", serif;
letter-spacing: 1px;
width: 120px;
}
.tab-button:hover {
color: #e0b34d;
text-shadow: 0 0 10px #ffbf04b3, 0 0 20px rgba(0, 0, 0, 0.5);
background: #3e3423;
border: 1px solid #e5b600;
}
.tab-button.active {
color: #e0b34d;
background: #3e3423;
text-shadow: 0 0 10px rgba(255, 191, 4, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
border: 1px solid #e5b600;
}
#sell-container {
position: relative;
top: -5em;
}
.shop-notification {
position: fixed;
top: 20px;
right: 20px;
background: rgba(10, 10, 10, 0.95);
color: #e0e0e0;
border: 2px solid #3a0000;
padding: 12px 20px;
border-radius: 3px;
font-family: 'Cinzel', serif;
text-align: center;
z-index: 9999;
opacity: 0.95;
max-width: 300px;
animation: fadeInNotif 0.4s ease-out;
box-shadow: 0 0 15px rgba(139, 0, 0, 0.4);
text-shadow: 0 0 3px rgba(224, 224, 224, 0.3);
}
@keyframes textFlicker {
0%, 100% { opacity: 1; }
98% { opacity: 1; }
99% { opacity: 0.9; }
}
@keyframes fadeInNotif {
from {
transform: translateY(-10px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 0.95;
}
}
@keyframes glowPulse {
0% { box-shadow: 0 0 5px #00ffd04d; }
50% { box-shadow: 0 0 10px #1dbba5d4; }
100% { box-shadow: 0 0 5px #00ffd04d; }
}
#shop-container::-webkit-scrollbar {
width: 8px;
}
#shop-container::-webkit-scrollbar-track {
background: #0a0000;
}
#shop-container::-webkit-scrollbar-thumb {
background-color: #3a0000;
border-radius: 3px;
border: 2px solid #0a0000;
}
.category-header {
color: #e5b600;
font-family: 'Cinzel', serif;
font-size: 18px;
margin: 20px 0 10px 0;
text-shadow: 0 0 4px rgba(139, 0, 0, 0.4);
border-bottom: 1px solid #e5b600;
padding-bottom: 5px;
text-align: left;
}
.product-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 10px;
}
.product-card {
background: #2b2b2b9e;
border: 1px solid #e5b600;
border-radius: 3px;
padding: 10px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
transition: all 0.3s ease;
height: 180px;
justify-content: space-between;
backdrop-filter: blur(1px);
}
.product-card:hover {
transform: translateY(-2px);
box-shadow: 0 0 12px rgba(139, 0, 0, 0.4);
border: 1px solid #ffbf04b3;
background: #3e3423;
}
.buyback-card {
background: #2b1c1c9e;
border: 1px solid #d0a200;
}
.buyback-card:hover {
background: #3e2323;
border: 1px solid #ffab04;
}
.buyback-header {
color: #d0a200;
border-bottom: 1px dashed #d0a200;
}
.buyback-button {
background: #1a0a00;
color: #ffc107;
}
.buyback-button:hover {
background: #301500;
color: #ffdb58;
}
.product-title {
color: #e5b600;
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
text-align: center;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
}
.product-image {
width: 50px;
height: 50px;
margin: 5px 0;
display: flex;
align-items: center;
justify-content: center;
}
.product-image img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
filter: drop-shadow(0 0 3px rgba(139, 0, 0, 0.4));
}
.product-price {
color: #ffbf04b3;
font-size: 14px;
margin: 5px 0;
font-family: 'Courier New', monospace;
}
.buy-button, .sell-button {
width: 80%;
padding: 5px 0;
font-size: 14px;
animation: glowPulse 4s infinite;
margin-top: 5px;
background: #00151a;
color: #d7a900;
border: 1px solid #3a0000;
border-radius: 3px;
cursor: pointer;
font-family: "Cinzel", serif;
transition: all 0.3s ease;
box-shadow: 0 0 5px rgba(139, 0, 0, 0.3);
text-shadow: 0 0 3px rgba(197, 0, 0, 0.5);
}
.buy-button:hover, .sell-button:hover {
background: #003009;
border: 1px solid #856111;
box-shadow: 0 0 8px rgba(139, 0, 0, 0.5);
color: #00e51e;
}
.sell-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 10px;
}
.item-card {
background: #2b2b2b9e;
border: 1px solid #e5b600;
border-radius: 3px;
padding: 10px;
display: flex;
flex-direction: column;
transition: all 0.3s ease;
height: 160px;
justify-content: space-between;
}
.item-card:hover {
transform: translateY(-2px);
box-shadow: 0 0 12px rgba(139, 0, 0, 0.4);
border: 1px solid #ffbf04b3;
background: #3e3423;
}
.item-image {
width: 50px;
height: 50px;
margin-bottom: 10px;
align-self: center;
}
.item-image img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
.item-details {
display: flex;
flex-direction: column;
align-items: center;
flex-grow: 1;
justify-content: space-between;
}
.item-name {
color: #e5b600;
font-size: 14px;
font-weight: bold;
font-family: 'Courier New', monospace;
margin-bottom: 10px;
text-align: center;
}
.no-items {
grid-column: 1 / -1;
color: #c50000;
font-size: 16px;
text-align: center;
padding: 20px;
font-family: 'Cinzel', serif;
}
/* Responsive adjustments */
@media (max-width: 768px) {
#shop-container {
padding: 0 10px;
}
.product-grid {
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
}
.product-title {
font-size: 14px;
}
.product-card {
height: 160px;
}
h1 {
font-size: 24px;
}
}
@media (max-width: 480px) {
#BoxShop {
left: -5em;
}
.product-grid {
grid-template-columns: repeat(2, 1fr);
}
.sell-grid {
grid-template-columns: 1fr;
}
h1 {
font-size: 20px;
}
#franklin-money-display {
font-size: 18px;
}
.tab-button {
padding: 8px 15px;
width: 100px;
}
}
</style><<if $practique is 1>>
<<goto "practiquewin">>
<</if>>
<<if $cavefight is 1>>
<<goto "wincave">>
<</if>>
<<if $wolfcave is 1>>
<<goto "wincavebattle">>
<</if>>
<<if $diabolicwolfcave is 1>>
<<goto "wincavebattle2">>
<</if>>
<<if $Fwolf is 1>>
<<goto "WinForestWolf">>
<</if>>
<<if $Fdiabolicwolf is 1>>
<<goto "WinForestDwolf">>
<</if>>
<<if $bwfight is 1>>
<<goto "Winbwfight">>
<</if>>
<<if $bwfight2 is 1>>
<<goto "Winbwfight2">>
<</if>>
<<if $srcff is 1>>
<<goto "Winsrcff">>
<</if>>
<<if $srcsf is 1>>
<<goto "SRcorridor2">>
<<set $srcsf = 2>>
<</if>>
<<if $Sroom2 is 1>>
<<goto "Sroom2win">>
<</if>>
<<if $MHfight is 1>>
<<goto "winEnemydoor">>
<</if>>
<<if $aberrationfight1 is 1>>
<<goto "Event-Aberration01">>
<</if>>
<<if $Fnurse is 1>>
<<set $randombandage = random(3)>>
<<if $randombandage is 3>>
<<goto "CellCorridorA2Item">>
<<else>>
<<goto "CellCorridorA2">>
<</if>>
<<set $Fnurse = 0>>
<</if>>
<<if $bbfight is 1>>
<<set $bbfight = 2>>
<<set $bbenemy = true>>
<<goto "bbwin">>
<</if>>
<<if $DemonA2 is 1>>
<<set $DemonA2 = 0>>
<<goto "CellCorridorA2">>
<</if>>
<<if $C2PeleaBB is 1>>
<<set $C2PeleaBB = 0>>
<<goto "C2PeleaBBwin">>
<</if>>
<<if $BedroomBPeleaBB is 1>>
<<set $BedroomBPeleaBB = 0>>
<<set $randomitem = random(3)>>
<<if $randombandage is 3>>
<<goto "BedroomBitem">>
<<else>>
<<goto "BedroomB">>
<</if>>
<</if>>
<<if $BedroomBPelea is 1>>
<<set $BedroomBPelea = 0>>
<<set $randomitem = random(3)>>
<<if $randombandage is 3>>
<<goto "BedroomBitem2">>
<<else>>
<<goto "BedroomB">>
<</if>>
<</if>>
<<if $ME is 1>>
<<set $ME = 2>>
<<goto "MEWin">>
<</if>>
<<if $TNurses is 1>>
<<set $TNurses = 0>>
<<goto "TNWin">>
<</if>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>>
<<playSound "music" "media/music/none.mp3" volume:0.5>>
<<goto "Forest">>
<<set $Fwolf = 0>>
<<goto "Forest">>
<<set $Fdiabolicwolf = 0>><div id="CBox">
<div id="Ntext">You search the area carefully, your eyes scanning every corner and crevice, but find nothing of interest. The ground is bare, and the surrounding foliage offers no clues. A sense of unease settles over you as you realize there's nothing here that could help you. It's as if whatever you're looking for has been erased, hidden away, or simply never existed. The silence grows heavier, the absence of anything meaningful almost more unsettling than the unknown. You sigh, frustrated, and prepare to move on, but a lingering feeling of something missed nags at the back of your mind.</div>
<div class="linksTwo">
<th>[[Continue exploring]]</th>
</div>
<div class="links">
<th>[[Back to the road|Forest]]</th>
</div>
</div>
<<if $Cave isnot 1>>
<<goto "ExploreCave">>
<</if>><<if $practique is 1>>
<<goto "practiqueescape">>
<</if>>
<<if $cavefight is 1>>
<<goto "escapecavewolf">>
<</if>>
<<if $wolfcave is 1>>
<<goto "escapecavebattle">>
<</if>>
<<if $diabolicwolfcave is 1>>
<<goto "escapecavebattle2">>
<</if>>
<<if $Fwolf is 1>>
<<goto "EscapeForestWolf">>
<</if>>
<<if $Fdiabolicwolf is 1>>
<<goto "EscapeForestDwolf">>
<</if>>
<<if $bwfight is 1>>
<<goto "Escapebwfight">>
<</if>>
<<if $bwfight is 1>>
<<goto "Escapebwfight">>
<</if>>
<<if $bwfight2 is 1>>
<<goto "Escapebwfight2">>
<</if>>
<<if $srcff is 1>>
<<goto "srcffescape">>
<</if>>
<<if $Sroom2 is 1>>
<<goto "Sroom2escape">>
<</if>>
<<if $srcsf is 1>>
<<goto "srcsfescape">>
<</if>>
<<if $MHfight is 1>>
<<set $MHenemy = false>>
<<goto "Main Hallway2">>
<</if>>
<<if $aberrationfight1 is 1>>
<<goto "Main Hallway3">>
<<set $aberrationfight1 = 0>>
<</if>>
<<if $Fnurse is 1>>
<<set $Fnurse = 0>>
<<goto "CellCorridorA2">>
<</if>>
<<if $bbfight is 1>>
<<set $bbfight = 0>>
<<goto "BedroomA">>
<</if>>
<<if $DemonA2 is 1>>
<<set $DemonA2 = 0>>
<<goto "CellCorridorA2">>
<</if>>
<<if $BedroomBPeleaBB is 1>>
<<set $BedroomBPeleaBB = 0>>
<<goto "BedroomB">>
<</if>>
<<if $BedroomBPelea is 1>>
<<set $BedroomBPelea = 0>>
<<goto "BedroomB">>
<</if>>
<<if $ME is 1>>
<<set $ME = 0>>
<<goto "BedroomC">>
<</if>>
<<if $TNurses is 1>>
<<set $TNurses = 0>>
<<goto "BedroomC">>
<</if>>
<<if $C2PeleaBB is 1>>
<<set $C2PeleaBB = 0>>
<<goto "CellCorridorC2">>
<</if>>
<<playSound "music" "media/music/none.mp3" volume:0.5>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><<set $Fwolf = 0>>
<<goto "Forest">>
<<set $Fdiabolicwolf = 0>>
<<goto "Forest">>
<<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You step closer to the mirror, your fingers grazing over your hair as you adjust it with a slow, deliberate motion. A fleeting touch on your skin, making sure every detail is perfect. You catch your reflection—eyes lingering a moment longer than usual—before you nod to yourself, feeling the confidence settle in. You're ready, but the allure lingers.</div>
<<say $Mc>>There's no time for more...<</say>>
<div class="links">
<th>[[Bathroom|introtoilet]]</th>
</div>
</div>
<<case 2>>
<div id="CBox">
<div id="Ntext">You meet your own gaze in the mirror, your fingers lightly brushing through your hair, ensuring everything is just right before you move on.</div>
<div class="links">
<th>[[Bathroom|introtoilet]]</th>
</div>
</div>
<<default>>
<div id="CBox">
<div id="Ntext">You glance at your reflection, making sure everything is in place before moving on.</div>
<div class="links">
<th>[[Bathroom|introtoilet]]</th>
</div>
</div>
<</switch>>
<div id="CBox">
<div id="Ntext">The place has already been looted; there’s nothing left.</div>
<div class="links">
<th>[[Back|shed]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You push open the cabin door, which creaks as it opens, and step into the dimness, where the air smells of dampness and aged wood. The lamp on the table flickers, casting dancing shadows on the walls. In front of you, sitting in a worn wooden chair, is a man with a face weathered by years and the harshness of time. His gaze is deep, tired, but something in it reveals that he has lived more than anyone should. He wears simple clothes, and his presence is almost as fixed as the cabin itself.
As you enter, the man slowly raises his gaze. His eyes scan your figure, evaluating you with an unsettling calm. The silence between you stretches, but it’s not uncomfortable, as if there’s something familiar in the air.</div>
<<say $Mc>>Excuse me, sir, may I ask you some questions?<</say>>
<div id="Ntext">The man watches you for a moment longer, his expression stern but not hostile, as if he had already anticipated your arrival. Then, with a deep and raspy voice, he responds.</div>
<<say $Janitor>>I suppose so, but I'll tell you the same thing I told the other two FBI agents who came. I can't help you<</say>>
<div class="links">
<th>[[Why not?|ConserjeIntro]]</th>
<th>[[I'm not FBI|ConserjeIntro2]]</th>
</div>
</div>
<<include "Frank">>
<<set $FranklinMeet = true>>
<<set $CabinMeet = 1>><div id="CBox">
<div id="Pensamiento">It's not a bad thing if he thinks I'm with the FBI.</div>
<<say $Mc>>Why not? Maybe I can help you remember something you've been avoiding. I'm investigating Charles Francis Hospital, and I know something dark happened there. Would you mind telling me more?<</say>>
<<say $Janitor>>This... fucking place, ahem... is dead to everyone. No one wants to talk about it. What happened there... there's no coming back from that. People disappeared, yes. And if you keep digging, you might end up like them.<</say>>
<<say $Mc>>What happened in that hospital is connected to what's happening in the city now—missing women, FBI agents. It's all tied together. If you know anything, no matter how small, I need to hear it.<</say>>
<<say $Janitor>>You haven’t even told me your name, and you're already demanding answers. How do you expect me to help if you won’t even extend that courtesy? Everyone has their own mysteries, but some prefer to keep them until they know who they’re dealing with.<</say>>
<<say $Mc>>Hmm... Okay. You're right. I'm Casey, $Mc.fullName.<</say>>
<<say $Franklin>>Franklin Hayes. People call me Frank. And if you’re going to keep pressing me, you better be straight with me—I don’t have time for games.<</say>>
<div id="Ntext">Despite his words, time seems to be the only thing this man has.</div>
<<say $Franklin>>What happened there should never have been buried. But you don’t understand... you have no idea what lies beyond that lake. If you keep going down this path, you’ll be crossing a line you can’t come back from.<</say>>
<div class="links">
<th>[[I won’t go back|ConserjeIntro3]]</th>
</div>
</div>
<<include "Frank">>
<div id="CBox">
<<say $Mc>>I’m not FBI, I’m a private Detective, my name is $Mc.fullName.<</say>>
<<say $Franklin>>Oh... Well, I don’t think there’s much difference whether you work for the FBI or not. My name is Franklin Hayes, but everyone calls me Frank.<</say>>
<<say $Mc>>I’m investigating the Charles Francis hospital, and I know something dark happened there. Would you mind talking a little more?<</say>>
<div id="Ntext">The man watches you cautiously, as if evaluating your words, but doesn’t seem surprised by your knowledge.</div>
<<say $Franklin>> That hospital is dead to everyone. No one wants to talk about it. What happened there... there’s no turning back. People disappeared, yes. And if you keep looking, you might end up like them.<</say>>
<<say $Mc>>What happened in that hospital is connected to what’s going on in the city now. Missing women, FBI agents. It’s all connected. If you know anything, no matter how small, I need to know.<</say>>
<<say $Franklin>>What happened there is something that should never have been left forgotten. But you don’t understand... you don’t even know what lies beyond that lake. If you keep going down this path, you’ll be crossing a line you can’t come back from.<</say>>
<div class="links">
<th>[[I won’t go back|ConserjeIntro3]]</th>
</div>
</div>
<<include "Frank">>
<div id="CBox">
<<say $Mc>>I'm not backing down. I'm already too deep into this, and I can't afford to turn my back. If you know anything else, please, tell me.<</say>>
<div id="Ntext">Franklin sighs and crosshis arms.</div>
<<say $Franklin>>Look, girl, I don't have all the answers you're looking for. I worked at that hospital fifteen years ago, back when it was still running. Even then, strange things were happening, but what's going on now... it's on a whole different level.<</say>>
<<say $Mc>>What's happening now?<</say>>
<<say $Franklin>>In the past week, I've seen three girls arrive there. They're always brought in a car or a black van. They're taken out sedated or restrained, as if they were objects, not people.<</say>>
<div class="links">
<th>[[How does the vehicle look?]]</th>
</div>
</div>
<<include "Frank">>
<div id="CBox">
<div id="Ntext">You descend the stairs of your building, the evening air thick with humidity, sticking to your skin like a heavy garment. It's hot, but not unbearable, just uncomfortable. The main door creaks as you push it open, and the slight coolness from outside hits you with a bit of relief.
You don't take long to notice her. She's leaning against a lamppost a few meters away, arms crossed, her gaze fixed on the ground. Gabriela, your former colleague.
It’s been two years since you last spoke, and despite the fight, you know her energy is still the same, but now she seems surrounded by a kind of contained calm. The wind moves the strands of her high ponytail as the sun reflects off her dark hair.
She hasn't called or sent a message. Still, there she is, lingering like a restless ghost. Gabriela lifts her head and sees you. For a moment, time seems to freeze. There’s something vulnerable in her gaze, a crack in her usual armor, something you didn’t expect.
—Casey... —she begins, her voice a mix of nostalgia and something more undefinable.</div>
<div class="links">
<th>[[Gabi...|introgabinofirend]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "image", "img/characters/rodriguez/gabriela.png");
<</script>><div id="CBox">
<<say $Mc>>I just need to sort something out. Nothing serious.<</say>>
<div id="Pensamiento">She has a radar for my lies, as if she can see them before they even leave my mouth.</div>
<div id="Ntext">Gabriela stares at you intently, but something in her face shows that she still doesn’t believe what you’ve told her.</div>
<<say $Gabriela>>I know you, Casey. And I can tell when you're trying to hide something. I don’t like your silences. Why don’t you tell me what’s going on?<</say>>
<div id="Ntext">Her words are honest, full of concern. But you feel the weight of the mayor’s recent call. Gabriela doesn’t know anything about it, and you can’t tell her.</div>
<div id="Pensamiento">I need to be direct with her.</div>
<div class="links">
<th>[[Be direct|introgabinofriendend]]</th>
</div>
</div>
<<include "Gabi1">><div id="CBox">
<<say $Mc>>I can’t tell you more. It’s complicated.<</say>>
<div id="Ntext">Gabriela stares at you intensely, her eyes filled with determination. She crosses her arms, a look of frustration on her face. She’s not going to let this go so easily.</div>
<<say $Gabriela>>Complicated? Don't do this to me, Casey! It's been two years. Two years without knowing anything about you, and now that I finally find you, I can't even understand what you're doing. You're running from something, I know it. But if you keep pushing me away, I won’t be able to help you!<</say>>
<div id="Pensamiento">I need to be direct with her.</div>
<div class="links">
<th>[[Be direct|introgabinofriendend]]</th>
</div>
</div>
<<include "Gabi1">><div id="CBox">
<<say $Mc>>Look, I can't stay here. I have to go solve a case. It's all I can tell you. If I could, I would, but I can't.<</say>>
<div id="Ntext">Gabriela falls silent, her face filled with doubt. But she doesn’t let you walk away so easily.</div>
<<say $Gabriela>>I’m not going to sit here knowing you’re about to face something dangerous alone. Let me go with you. You know I’ve always been there when you need me, right?<</say>>
<<say $Mc>>I can't, Gabi. I can't take you with me. This case is... complicated. More than you think.<</say>>
<<say $Gabriela>>I’ve known you for years, you know I’m not just going to sit here and do nothing. If you don’t tell me, I’ll figure it out on my own.<</say>>
<div id="Ntext">You feel the weight of Gabriela’s insistence, but you know you can’t tell her anything. You look at your former partner, seeing a flash of nostalgia in her eyes, and then respond in a soft tone.</div>
<div class="links">
<th>[[We will be partners again|introgabinofriendend2]]</th>
</div>
</div>
<<include "Gabi1">>
<div id="CBox">
<<say $Mc>>If I solve this case... I’ll get my badge back. I’ll rejoin the Detective unit, and we’ll have time to talk, to discuss everything you want. I’ll listen to every word, every reproach, everything you need to say to me. But right now, I can’t stay. I have to go. The case can’t wait. Understand that if I want to solve it, I need to act fast.<</say>>
<<say $Gabriela>>Are you saying you can get your badge back if you solve this case? What are you doing, Casey? This sounds like something much bigger than just a simple case. Are you being used by someone? Are they pushing you into this?<</say>>
<div id="Ntext">Her tone is incredulous, almost indignant, but her expression hardens, the concern turning into distrust. As a Detective, she knows that when something smells wrong, you need to act fast, and she doesn’t like how all of this sounds.</div>
<<say $Gabriela>>I know you want to get your life back, but you can’t let them deceive you. I don’t want to see you in the middle of a disaster again, in something you can’t control. This doesn’t feel right, and I’m sure it doesn’t feel right to you either, does it?<</say>>
<<say $Mc>>It’s not what you think, Gabi. I have to do this, there’s no other option. If I don’t solve this case, I won’t get another chance. When it’s over, we can talk, but right now, I can’t waste any more time.<</say>>
<div id="Ntext">You continue walking towards your car, your steps resolute. Gabriela watches you in silence, the worry clear on her face, but she knows you’ve already made your decision. There’s no turning back.</div>
<div class="links">
<th>[[Get in the car|introcar]]</th>
</div>
</div>
<<include "Gabi1">>
<<script>>
setup.phoneSystem.addContact("Gabi", "I ran into Gabi; it seems she was hanging around my apartment. She still cares about me, even after two years. Gabi was worried after our last conversation.", "img/characters/rodriguez/avatar.png");
<</script>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBox">
<div id="Pensamiento">What the hell was Gabriela doing at my doorstep after two years? Does she really care about me now? I know her well, I know she does, but… why does it have to be now, just when I need to focus the most?</div>
<<say $Mc>>Phew...<</say>>
<div id="Pensamiento">I have to keep going.</div>
<div id="Ntext">You get in the car, the roar of the engine filling the silence as you turn the key. The weight of the situation presses down on you, but there’s no time to stop and think about it. No time for doubt.</div>
<div class="links">
<th>[[Let's get going|Intro-Start]]</th>
</div>
</div>
<<timed 2s>>
<<playMusic "music2" "media/sounds/none.mp3">>
<</timed>><div id="CBox">
<div id="Ntext">You want to tell her, but you feel the weight of the mayor’s recent call. Gabriela doesn’t know anything about it, and you can’t tell her.</div>
<<say $Mc>>I can't tell you much, Gabi. It's confidential. But... if everything goes well, I'll get my badge back. And when that happens, we’ll be working together again. I promise.<</say>>
<<say $Gabriela>>Are you sure you’re not on the case? Because, I don’t know, Casey… It’s not that I like to be suspicious, but all of this sounds really strange.<</say>>
<<say $Mc>>Gabi, I told you, I can’t tell you anything. It’s confidential.<</say>>
<<say $Gabriela>>‘Trust me,’ you say… How do you expect me to trust you if you won’t tell me anything? Casey, we’re talking about missing women. If you know something, tell me. We could solve this together.<</say>>
<<say $Mc>>I can’t, Gabi. The mayor has asked for total confidentiality. There’ll be time to talk, I promise you. But right now, I have to go.<</say>>
<div id="Ntext">Gabriela’s eyes widen in surprise, her brow furrowing instantly as she processes your words.</div>
<div id="Pensamiento">Shit, I let it slip!</div>
<<say $Gabriela>>The mayor? What the hell do you have to do with the mayor in all this? Casey!<</say>>
<<say $Mc>>Gabi, don’t start overthinking it. I can’t tell you anything else, alright? Just... trust me. When all of this is over, I’ll explain everything.<</say>>
<<say $Gabriela>>I don’t like this, Casey. If the mayor is involved, it means this is no ordinary case. And if he’s asked you... Just tell me one thing: are you taking care of yourself? Because I don’t want to find out that you’re getting into something you can’t handle.<</say>>
<<say $Mc>>I’m fine, Gabi. I can handle it. But now, seriously, I have to go.<</say>>
<div id="Ntext">Gabriela watches you for a few more seconds, clearly dissatisfied with your answers, but she nods with a mix of resignation and concern.</div>
<<say $Gabriela>>Alright, go. But listen to me, Casey: if you need help, don’t hesitate to ask. No matter what it is. Understood?<</say>>
<<say $Mc>>Okey, Gabi...<</say>>
<div id="Ntext">You turn halfway and you start walking towards your car, still feeling the weight of Gabriela’s gaze on you. You know she won’t rest. Not with that sharp instinct of hers for spotting trouble.</div>
<<say $Gabriela>>Be careful, Casey.<</say>>
<div id="Pensamiento">It feels so good to have a friend like you, someone I can count on. I wish I could tell you everything. But I can't. Not yet.</div>
<div class="links">
<th>[[Get in the car|introcar2]]</th>
</div>
</div>
<<include "Gabi2">><div id="CBox">
<div id="Ntext">You get into the car, start the engine, and the sound reminds you that there’s no turning back. The mayor is waiting, and with him, the case that could change your future.</div>
<div id="Pensamiento">It’s strange how things have changed. Before, I used to share everything with Gabriela: the cases, the worries, the little jokes that eased the tension of the heaviest days. It’ll be like it was before, once I get my badge back.</div>
<div class="links">
<th>[[Let's get going|Intro-Start]]</th>
</div>
</div>
<<timed 2s>>
<<playMusic "music2" "media/sounds/none.mp3">>
<</timed>><div id="CBox">
<div id="Ntext">This part of the parking lot stretches into a secluded corner, lying in silence under the night. A few old, rusted vehicles stand like motionless shadows, consumed by time. A narrow path extends from here, skirting the building to the left before vanishing into the depths of the forest. The wind howls in this area, dragging dry leaves across the cracked asphalt, breaking the unsettling silence</div>
<<if $carquest gte 1 && $FBIcar isnot true>>
<div class="linksTwo">
<<if $fbicarchek is true>>
<th>[[Check FBI's car|CarBlackCheck]]</th>
<<else>>
<th>[[Check abandoned black car|CarBlackCheck]]</th>
<</if>>
<th>[[Check abandoned car|CarGreyCheck]]</th>
<th>[[Check abandoned ambulance|AmbulanceCheck]]</th>
</div>
<</if>>
<div class="links">
<th>[[Path to forest|Camino-izquierda]]</th>
<th>[[Parking near the entrance|Parking]]</th>
</div>
</div>
<div id="LocationName">Parking</div><div id="CBox">
<div id="Ntext">Your car is parked, waiting for the moment to leave the place.</div>
<div class="links">
<th>[[Back|Parking]]</th>
</div>
<img id="event-image" src="img/events/caseycar.png">
</div>
<<if $EndAberrationEvent is true>>
<<goto "YourCar2Parking">>
<</if>><div id="CBox">
<<switch visited()>>
<<case 1>>
<<say $Mc>>Let’s see if this wreck has anything useful...<</say>>
<div id="Ntext">The hood is caked in rust, and the windows are nothing but jagged shards. As the door creaks open, a foul stench of mildew and stale gasoline wafts out, revealing nothing but a mess of debris inside.</div>
<<say $Mc>>Perfect, nothing like a moldy seat and a trunk jammed shut.<</say>>
<div id="Ntext">The car is completely useless.</div>
<<default>>
<div id="Ntext">The hood is caked in rust, and the windows are nothing but jagged shards. As the door creaks open, a foul stench of mildew and stale gasoline wafts out, revealing nothing but a mess of debris inside.</div>
<</switch>>
<div class="links">
<th>[[Back|Parking2]]</th>
</div>
<img id="event-image" src="img/events/car1.png">
</div><div id="CBox">
<div id="Ntext">When you look at the car again, everything remains the same. The layer of fallen leaves still partially covers it, and the armored windows keep the interior hidden. The door remains locked, with no signs that anyone has been near.</div>
<div id="Pensamiento">I need the car keys or something to pick the lock.</div>
<img id="event-image" src="img/events/fbicar.png">
<div class="linksTwo">
<<if $FBIcar isnot true>>
<th><<lockBreak "average" "openfbicar" "Parking2" true>></th>
<</if>>
<<if $ironbarStair is true && $FBIcar isnot true>>
<th>[[Break glass with iron bar|noblackcar]]</th>
<</if>>
<<if $hasCarKey && $FBIcar isnot true>>
<th>[[Open car|openfbicarKey]]</th>
<</if>>
<<if $FBIcar is true && $FBIsabotage isnot true>>
<th>[[Get in the car|FBIcar2]]</th>
<</if>>
</div>
<div class="links">
<th>[[Back|Parking2]]</th>
</div>
</div>
<<if $fbicarchek isnot true>>
<<goto "checkfbicar">>
<</if>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You approach the abandoned ambulance, its paint faded and the doors slightly ajar. As you peer inside, the dust and stale odor hit you immediately.
Amid the scattered mess, something catches your eye: a small metal vial lying on the floor. You pick it up carefully and read the worn-out label.</div>
<<say $Mc>><span style="color: #22b22e;">A stimulant</span>! From back when they weren't banned yet. Quite the relic.<</say>>
<<script>>
addStim(1);
<</script>>
<<default>>
<div id="Ntext">You approach the ambulance again. The scene hasn’t changed.</div>
<<say $Mc>>There’s nothing left here. Just a memory of better times… or worse.<</say>>
<</switch>>
<img id="event-image" src="img/events/ambulance.png">
<div class="links">
<th>[[Back|Parking2]]</th>
</div>
</div><div id="CBox">
<<say $Mc>>Who takes them?<</say>>
<<say $Franklin>>I don’t know exactly who they are. I’ve never seen their faces clearly. They’re always careful to stay in the shadows, but I know it’s not Doctor Home. He just waits at the entrance, like he’s receiving a package.<</say>>
<<say $Mc>>It sounds horrifying... Wait a minute, did you say Doctor Home?<</say>>
<div id="Pensamiento">The doctor is my main suspect, but now I have a witness.</div>
<<say $Franklin>>Yes, the Doctor... He just waits at the entrance of the hospital. He steps out to greet them, takes a quick look, and then disappears with them inside. It's like they're delivering a package.<</say>>
<<say $Mc>>A human package, you mean.<</say>>
<<say $Franklin>>Yes.<</say>>
<div class="links">
<<if $Ask2 isnot 1>>
<th>[[And the girls?]]</th>
<<else>>
<th>[[About the last girl]]</th>
<</if>>
</div>
</div>
<<include "Frank">>
<<script>>
setup.phoneSystem.addContact("Doc. Arklich Home", "A name barely mentioned in the records of the Charles Francis Psychiatric Institute. All evidence suggests he’s the mastermind behind the abductions, but the true extent of his involvement remains a mystery.", "img/characters/dochome/avatar.png");
<</script>>
<<set $Ask1 = 1>><div id="CBox">
<<say $Mc>>How does the vehicle look?<</say>>
<<say $Franklin>>It's a dark car or a black van, always with tinted windows. I've noticed that the engine never fully shuts off, as if they're ready to take off quickly if something goes wrong.<</say>>
<<say $Mc>>Undertand...<</say>>
<div id="Pensamiento">It's impossible to track this, for now.</div>
<div class="links">
<th>[[Didn’t you do anything?]]</th>
</div>
</div>
<<include "Frank">>
<div id="CBox">
<<say $Mc>>Didn’t you do anything?<</say>>
<<say $Franklin>>Of course I did something. I called the police several times. At first, they didn't take me seriously, but the last time two FBI agents came. They asked me questions, checked the place, but...<</say>>
<<say $Mc>>But what?<</say>>
<<say $Franklin>>They arrived two days ago. Since then, I haven’t seen them come out. Their car is still there, in the parking lot, gathering dust, like the hospital swallowed them whole.<</say>>
<div id="Pensamiento">Where could Rust and Dina have gone?</div>
<<say $Mc>>Did they say their names?<</say>>
<<say $Franklin>>Yes, the man introduced himself as Rust Cohle, and the woman as Dina Carter. They seemed sure of what they were doing, but now... I can’t help but think that place swallowed them up too.<</say>>
<div class="links">
<th>[[Who takes them?]]</th>
<th>[[And the girls?]]</th>
</div>
</div>
<<include "Frank">>
<<script>>
setup.phoneSystem.addObjective(
"Check the fbi car",
"Find the FBI agents' car in the parking lot.",
'secondary',
'fbicar' // ID
);
<</script>>
<<SanityMessage "New secondary objective: Check the fbi car">>
<<set $CarQuest = true>><div id="CBox">
<<say $Mc>>And the girls? What can you tell me about them?<</say>>
<<say $Franklin>>Two of them... I don’t remember them well. It was night, and the place was dark. I could barely make out their faces, but what I do know is that they were completely sedated. One of them... I remember she was a redhead.<</say>>
<<say $Mc>>What else do you remember about her?<</say>>
<<say $Franklin>>Not much. Just that she was asleep. The truth is, the only thing that stuck with me was the color of her hair, so bright, even in the dark.<</say>>
<<say $Mc>>And the others?<</say>>
<<say $Franklin>>I didn’t get a good look at the first one. But the last one... the last one I remember perfectly.<</say>>
<div class="links">
<<if $Ask1 isnot 1>>
<th>[[Who takes them?]]</th>
<<else>>
<th>[[About the last girl]]</th>
<</if>>
</div>
</div>
<<include "Frank">>
<<script>>
setup.phoneSystem.addObjective(
"Find the kidnapped girls",
"Infiltrate the depths of the abandoned hospital and explore it to find the kidnapped girls. (No more content for now)",
'secondary',
'Find_girls' // ID
);
<</script>>
<<SanityMessage "New secondary objective: Find the kidnapped girls">>
<<set $Ask2 = 1>><div id="CBox">
<<say $Mc>>Franklin, I need to know something else. What do you know about Doctor Home?<</say>>
<<say $Franklin>>Doctor Home... I don't like that name at all.<</say>>
<<say $Mc>>That doesn't answer my question. Who is he?<</say>>
<<say $Franklin>>He was the one in charge of this place. A brilliant guy, they say... but there was always something off about him. The other staff avoided being around him, and the patients... well, sometimes they came out of his office worse than they went in.<</say>>
<<say $Mc>>Worse, how?<</say>>
<<say $Franklin>>The ones who stayed... some of them changed. They became stranger, more aggressive. Others just disappeared. After Charles Francis was shut down, the place was quiet for a while. At first, just some curious folks sneaking in—vandals, teenagers looking for a scare... you know how it is. But over the years...
I’ve been living here for over 15 years, girl. Nothing ever happened, and then, about three months ago, I started seeing lights in the building, movement in the windows. It only happens at night.<</say>>
<<say $Mc>>And the doctor?<</say>>
<<say $Franklin>>Yeah... I've seen him. And he wasn’t alone. A few months ago, I saw him go in, you know? He had people with him. Patients, or at least that’s what they looked like... some could barely walk, others seemed normal, calm. But what stood out the most were the women in nurse uniforms.
They walked strangely, like they were... I don’t know, out of it, maybe drugged. One thing’s for sure—I’ve never seen anyone come out.<</say>>
<<say $Mc>> And you didn’t do anything? You didn’t even think about calling someone?<</say>>
<<say $Franklin>>Who, girl? The police? Believe me, no one takes an old janitor living next to an abandoned hospital seriously. They’d say I’m crazy or, worse, tell me to mind my own business.<</say>>
<div id="Pensamiento">Girl, again? ...</div>
<<say $Mc>>Yeah, but still, didn’t you try to find out more? To go in and see what was happening?<</say>>
<<say $Franklin>>Look, girl, I already told you: what happens in there isn’t my business. I stay out of trouble and pick up what I can.<</say>>
<div class="links">
<th>[[Call him out]]</th>
<th>[[Let it go]]</th>
</div>
</div>
<<include "Frank">>
<<set $askdoc = 1>><div id="CBox">
<<say $Mc>>You said you remember the last girl. What can you tell me about her?<</say>>
<<say $Franklin>>The last one... I remember her well. She was blonde, with long, loose hair. Like the others, she was sedated, like a sack of potatoes. It was three days ago, the night before the two FBI agents disappeared.<</say>>
<<say $Mc>>And what else? Did you notice anything different about her?<</say>>
<<say $Franklin>>No. Same as always, girl. They were all in the same state, sedated, without a shred of consciousness. They were all very pretty, of course, but in the end, they were just empty bodies that someone brought to leave there. I only saw the last one for a few seconds, there wasn’t much to see.<</say>>
<<say $Mc>>But something must have caught your attention!<</say>>
<div id="Ntext">The man pauses for a long time, thoughtful. Then, his eyes scan you more carefully, as if noticing something about you. His gaze briefly lingers on your face, then quickly moves down yor figure, admiring your body for a moment before speaking.</div>
<<say $Franklin>>Well... now that you mention it... I can't really say. She was blonde, like you... I don't know why, but you make me think of... Wait a minute.<</say>>
<div class="links">
<th>[[What's worng?]]</th>
</div>
</div>
<<include "Frank">>
<<set $asksister = 1>><div id="CBox">
<<say $Mc>>What's wrong?<</say>>
<<say $Franklin>>The girl... I don’t know. She was like the others, yeah, but now that I’m looking at you, your face made me think of her. She was younger, of course, but her face, her hair... She looked almost identical to you. Don’t you find that strange?<</say>>
<<say $Mc>>What do you mean, identical? What are you trying to say?<</say>>
<div id="Pensamiento">Identical to me? Is it possible that...? Angelica! Oh my God! It can’t be... I shouldn’t get my hopes up...</div>
<<say $Franklin>>I don’t know, girl. It’s not that I mistook you for her, but... when I looked at you, something about you reminded me of her. She wasn’t awake, of course, but even though she was younger, the resemblance is... striking. Almost like you were her. I can’t explain it, but it’s like everything just fits somehow. Maybe it’s a sign that you should leave this place, as soon as possible.<</say>>
<<say $Mc>>Are you sure about what you’re saying? It can’t be...<</say>>
<div id="Ntext">Your heart pounds fiercely, your mind racing with doubts.</div>
<div id="Pensamiento">Maybe... Yes! It’s Angelica! My poor little sister! Angi...</div>
<div id="Pensamiento">How did she end up here? Where has she been all this time?</div>
<div id="Pensamiento">I'm glad she's alive, but she's in danger. If she's here, I have to find her!</div>
<<say $Franklin>>Look, girl, I don’t know who she is or who you are. I’m just telling you what I saw and what I remember now. If you ask me, I’d say this is no coincidence. But whatever it is, staying here won’t do you any good.<</say>>
<div class="links">
<th>[[Never]]</th>
</div>
</div>
<<include "Frank">>
<<script>>
setup.phoneSystem.addObjective(
"Find your sister Angela",
"Investigate the psychiatric hospital and gather clues to locate Angela, your missing sister. (No more content for now)",
'secondary',
'Find_sister' // ID
);
<</script>>
<<SanityMessage "New secondary objective: Find your sister">><div id="CBox">
<<say $Mc>>I’m not going to give up, no matter what happens. I won’t stop searching, even if it’s the last thing I do.<</say>>
<<say $Franklin>>You're playing with fire, girl. You can’t face all of this alone. There are things here you don’t understand—things no one understands.<</say>>
<<say $Mc>>What I don’t understand is why no one has done anything until now. If I have to be the one to put an end to this, then so be it.<</say>>
<<say $Franklin>>You're determined, huh? Fine… If you're really going through with this, I might have something that could help you. I’ve picked up a few things around here. I’m no saint, but I’ve learned how to survive. They're not free, of course.<</say>>
<div class="links">
<th>[[What things?|shoptalk]]</th>
</div>
</div>
<<include "Frank">><div id="CBox">
<<say $Mc>>Things? What things?<</say>>
<<say $Franklin>>Some things that could be useful to you. I've picked up a few things here and there, in the forgotten corners. Drugs, ammo, first aid kits, and other items I've found in the hallways and around the area. It's not much, but it might help you keep going.<</say>>
<<say $Mc>>You do realize what you're doing isn't legal, right? Stealing and selling things you find in an abandoned hospital? I don't know what's worse, your business or the place you're doing it in... I could arrest you for that.<</say>>
<<say $Franklin>>Arrest me? Here, in the middle of all this? Hahaha, who would care, girl? If it weren’t for what I've “collected,” you’d be in much worse shape. You know how it goes. In this place, the laws are a joke.<</say>>
<<say $Mc>>I don't know what's worse—your business or the fact that you're doing it in a place like this. But... that's not why I'm here. I'll let it slide this time, but don’t get used to it. If you cause me any trouble, I won’t let you off so easily.<</say>>
<<say $Franklin>>Deal, girl. In here, everyone does what they need to survive. If you ever need anything, you know where to find me.<</say>>
<div id="Pensamiento">I’m getting tired of him calling me "girl."</div>
<<say $Mc>>I’m not a "girl." My name is $Mc.baseName, and I’d prefer you use it.<</say>>
<<say $Franklin>>Alright, $Mc.baseName. Whatever you say. If you need anything, you know where to find me.<</say>>
<div class="links">
<<if $askdoc isnot 1>>
<th>[[About Doctor Home]]</th>
<</if>>
<th>[[Bye|Cabin]]</th>
</div>
</div>
<<include "Frank">><div id="CBox">
<<if $askdoc gte 1 && $safaplacetalk isnot true>>
<<if $NoMoreGirl is true>>
<<say $Franklin>>Girl... I mean, Casey, I'd like to tell you something.<</say>>
<<else>>
<<say $Franklin>>I'd like to tell you something, girl.<</say>>
<</if>>
<<else>>
<<say $Mc>>Maybe I have a few more questions.<</say>>
<<say $Franklin>>Alright, shoot.<</say>>
<</if>>
<div class="links">
<<if $askdoc gte 1 && $safaplacetalk isnot true>>
<th>[[Hear him|safaplacetalk]]</th>
<</if>>
<<if $askdoc isnot 1>>
<th>[[About Doctor Home]]</th>
<</if>>
<th>[[No questions|Conserje]]</th>
</div>
</div>
<<include "Frank">><<widget "fullscreenButton">>
<button id="fullscreenButton" style="background: none;
background: none;
background: none;
border: none;
cursor: pointer;
position: absolute;
top: -10px;
left: 13px;
z-index: 1000;" tabindex="0"><br> <img src="img/fullscreen.png" alt="" style="width: 28px; height: 28px;"><br> </button>
<script>
$(document).on('click', '#fullscreenButton', function() {
if (!document.fullscreenElement) {
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) { // Firefox
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullscreen) { // Chrome, Safari y Opera
document.documentElement.webkitRequestFullscreen();
} else if (document.documentElement.msRequestFullscreen) { // Internet Explorer/Edge
document.documentElement.msRequestFullscreen();
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
});
</script>
<</widget>><div id="CBox">
<<if $escalerarota isnot true>>
<div id="Ntext">You observe the building's facade closely, searching for any signs of activity. The peeling paint and broken windows confirm that the place has been abandoned for years. As your gaze shifts to one side, you notice a metal staircase attached to the wall. It's rusty and looks fragile. It's the fire escape.</div>
<div id="Pensamiento">It might still hold my weight, but it's risky.</div>
<img id="event-image4" src="img/events/escalera.png">
<<else>>
<div id="Ntext">You return to the spot where the ladder gave way. The twisted metal remnants hang crookedly, swaying slightly in the wind, producing a constant, irritating creak that breaks the silence of the place.</div>
<</if>>
<div class="links">
<<if $escalerarota isnot true>>
<th>[[Climb up the staircase|brokenstairs]]</th>
<</if>>
<th>[[Back|Camino-intermedio]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You observe the building's facade, searching for an entrance. The brick wall is weathered, but you don’t find any openings or signs of a visible entry. Everything seems locked and abandoned.</div>
<div id="Pensamiento">All the windows are barred, blocking any attempt to get in... or out.</div>
<div class="links">
<th>[[Back|Camino-derecha]]</th>
</div>
</div><div id="CBox">
<<say $Mc>>Who are you?<</say>>
<<say $DocHome>>My name is Arklich Home. I worked here many years ago.<</say>>
<<say $Mc>>What are you doing here?<</say>>
<<say $DocHome>>I could ask you the same thing, Miss...<</say>>
<div id="Pensamiento">This guy... is not an idiot.</div>
<<say $Mc>>I'm a detective, my name is Casey, and I'm investigating a multiple abduction case.<</say>>
<<say $DocHome>>Hmm... Interesting... Glad to meet you, Detective Casey.<</say>>
<<say $Mc>>Now, could you answer my question, Doctor Home?<</say>>
<<say $DocHome>>I come by from time to time. This place... has something peculiar about it, don't you think?<</say>>
<div id="Pensamiento">He's lying or... maybe he's crazy.</div>
<<say $Mc>>And those documents? The folder was on the table, is it yours?<</say>>
<<say $DocHome>>Ah, those... They're my old cases. I kept them after the fire, though not everyone understands why. Some are too valuable to leave behind.<</say>>
<div id="Pensamiento">I don’t buy it. Something doesn’t add up with his answer.</div>
<<say $Mc>>Valuable? After all this time? And why are you carrying them? Did you come just to pick them up, 15 years later?<</say>>
<<say $DocHome>>There are things you don’t forget, Detective. Some documents are more durable than others, or simply better protected.<</say>>
<div id="Pensamiento">Better protected? Ah, after 15 years? I don't believe so.</div>
<<say $Mc>>But how can they still be relevant? After all this time... and the fire, why keep them?<</say>>
<<say $DocHome>>Some cases need to be revisited, even after time passes. The memory of what happened here... carries more weight than you might think. Only those who lived through it would understand why these documents are important.<</say>>
<div class="links">
<th>[[Ask about "incubation process"|TalkDocHome1]]</th>
</div>
</div>
<<include "DocHome">><div id="CBox">
<div id="Ntext">The hallway near the entrance is in complete disarray, with the floor covered in dust and shattered glass fragments. The walls, chipped and deteriorated, seem to struggle to maintain their original shape, resisting collapse and threatening to take the entire building down with them.</div>
<<if $maindooropen is true>>
<div class="linksTwo">
<<if $MHRD isnot true>>
<th>[[Right Door|MHrightdoor1]]</th>
<</if>>
</div>
<</if>>
<div class="links">
<<if $MCDopen isnot true>>
<th>[[Move through hallway|Main Hallway2]]</th>
<<else>>
<th>[[Go to Grand Hall|Main Hallway2]]</th>
<</if>>
<th>[[Entrance|MainLobby]]</th>
<<if $MHRD is true>>
<th>[[Little storage|MHrightroom1]]</th>
<</if>>
</div>
</div>
<div id="LocationName">Main hallway</div>
<<if $maindooropen is true && $EndAberrationEvent isnot true && $MHenemy isnot true>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music2" "media/music/darksituation.mp3" volume:0.5>>
<<set $darksituation = true>>
<</if>>
<<setLighting 70>><div id="CBox">
<div id="Ntext">The door leading to the right hallway is closed from the other side.</div>
<div class="links">
<th>[[Back|MainLobby]]</th>
</div>
</div>
<<set $corridorchek = 1>>
<div id="CBox">
<div id="Ntext">The door is locked.</div>
<div class="links">
<th>[[Back|MainLobby]]</th>
</div>
</div>
<<set $doorchek = 1>><div id="CBox">
<div id="Ntext">The main hallway stretches in the dim light, with flickering lights barely illuminating the cracked walls. Closed doors on either side seem to hide forgotten secrets, while a heavy, damp air fills the space. The silence is eerie.</div>
<<if $maindooropen is true>>
<div class="linksTwo">
<<if $MHleftdoor isnot true>>
<th>[[Left Door|MHleftdoor]]</th>
<<else>>
<th>[[Lockers room|MHleftroom]]</th>
<</if>>
<<if $MHrightdoor isnot true>>
<th>[[Right Door|MHrightdoor]]</th>
<<else>>
<th>[[Yellow elevators|MHrightroom]]</th>
<</if>>
</div>
<</if>>
<div class="links">
<<if $MCDopen isnot true>>
<th>[[Move through hallway|Main Hallway3]]</th>
<<else>>
<th>[[Go to Grand Hall|Main Hallway3]]</th>
<</if>>
<th>[[Go to entrance|Main hallway]]</th>
</div>
</div>
<div id="LocationName">Main hallway</div><div id="CBox">
<<if $openleftdoor isnot true>>
<div id="Ntext">The lights flicker erratically, their glow wavering as if on the verge of completely going out. Each flash casts shadows that slide and stretch along the passage, moving with an unsettling fluidity, as if they had a life of their own.</div>
<<else>>
<div id="Ntext">The lights are off, leaving the hallway in a faint gloom. The little light that filters in from the outside barely reveals the outlines of the walls and floor, casting vague shadows that stretch and shift subtly with each step.</div>
<</if>>
<div class="linksTwo">
<<if $MCDopen isnot true>>
<th>[[Check front door|corridorlobbyclosed]]</th>
<</if>>
</div>
<div class="links">
<<if $MCDopen is true>>
<th>[[Grand Hall]]</th>
<</if>>
<th>[[Go to entrance|Main Hallway2]]</th>
</div>
</div>
<div id="LocationName">Main hallway</div>
<<if $maindooropen is true && $MHenemy isnot true && $MHfight isnot 2>>
<<goto "runenemy">>
<</if>>
<div id="CBox">
<<if $MHenemy isnot true>>
<div id="Ntext">The door is locked.</div>
<<else>>
<div id="Ntext">Someone is banging on the door from the other side; it's about to open.</div>
<</if>>
<div class="links">
<th>[[Back|Main Hallway3]]</th>
</div>
</div>
<<set $doorcorridorchek = 1>>
<<if $MHfight gte 2>>
<<goto "MCDopen">>
<</if>>
<<if $MHenemy is true>>
<<timed 1s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<</timed>>
<</timed>>
<</timed>>
<</timed>>
<</if>><div id="CBox">
<div id="Ntext">You move cautiously, observing the surroundings. The room is shrouded in darkness, but the light from a broken lamp in the ceiling illuminates just enough for you to distinguish the details. Dust covers the floor, and the walls, a crumbling gray, seem to tell stories of abandonment. At what seems to be the reception desk, a broken chair is overturned, and where there was once nothing, now rests a folder, placed on the desk. The air is thick with the smell of mold, and an uneasy feeling washes over you, as if something is lurking in the shadows.</div>
<<if $corridorchek is 1 && $doorcorridorchek is 1 && $doorchek is 1>>\
<div id="Pensamiento">That’s strange, I’m sure this wasn’t here before.</div>
<<else>>\
<div id="Pensamiento">That’s strange, A carpet, in perfect condition.</div>
<</if>>\
<div id="Ntext">The folder is surprisingly new, with the corners intact and the paper still crisp, as if someone had left it there recently.</div>
<div class="links">
<th>[[Check the folder|checkfolder]]</th>
</div>
</div>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you step into the cabin, the air feels thick with humidity and dust, as if no one has been here in years. In the center of the room stands a table, the only notable piece of furniture, slightly dirty and with objects scattered around in apparent neglect. The light is on, but there’s no one around.</div>
<div id="Pensamiento">There’s no one here... but someone definitely lives here.</div>
<<say $Mc>>I should come back later.<</say>>
<<default>>
<div id="Ntext">There’s no one here.</div>
<<say $Mc>>I should come back later.<</say>>
<</switch>>
<div class="links">
<th>[[Exit|CabinDoor]]</th>
</div>
</div>
<div id="LocationName">Lake cabin</div>
<<set $CabinCheck = true>><div id="CBox">
<div id="Ntext">You push the main door cautiously, allowing the cold air inside to envelop you. You take your first steps and enter the Charles Francis with determination. Once you're in the middle of the room, you carefully observe your surroundings, noticing the dimness that fills the space. The faint light from a broken lamp in the ceiling doesn't help much, but it's enough to make out the details.
As you immerse yourself in the atmosphere, you begin to recall what was said about this place. The fire that destroyed the Charles Francis psychiatric hospital 15 years ago. The news spoke of a catastrophe, a fire that ravaged everything, leaving the place unrecognizable.</div>
<div id="Pensamiento">There are signs of fire, but not as severe as they described.</div>
<div id="Ntext">Some walls show smoke stains, and there are areas where the heat seems to have left its mark, but nothing like a "total destruction".</div>
<div id="Pensamiento">Typical sensationalism of the media. The fire wasn't as devastating as they said. The place is almost intact, well, after 15 years of abandonment... </div>
<<say $Mc>>It's not what I expected, but there's no turning back.<</say>>
<div class="links">
<th>[[Continue|MainLobby]]</th>
</div>
</div>
<<set $firstenter = 1>><div id="CBox">
<div id="Ntext">You open the folder carefully, feeling a mix of curiosity and distrust. On the first page, you find what seems to be a medical record, with a name incomplete and crossed out. You can only partially make out the title: "Subject Alpha-IX." The document talks about its characteristics, with confusing details and phrases that repeat over and over. It mentions "unstable conditions," "continuous observation," "colossal strength", and a "special procedure," but there's not enough clarity on what exactly it's referring to. The information is sparse.</div>
<div id="Pensamiento">What the hell, it seems like it's talking about some sort of treatment.</div>
<div class="links">
<th>[[Next page|checkfolder2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">On the next page, the section title immediately catches your attention: "Patient – Codename: Subject 38." The description is detailed, almost obsessive: "Blonde, fair skin, long hair, sky-blue eyes, pure..." But it's not just a superficial physical description. The report continues with medical details: "Ideal physical build, fast metabolism, excellent recovery capacity." It mentions that her skin is "unusually smooth," without signs of scars or marks, and specifies that her height and weight fall within normal parameters for her age. The blue eyes are described particularly, as a "striking feature that may influence the psychological reactions of the subjects." The way these observations are written seems like a clinical analysis that goes beyond mere appearance, as if they were evaluating something more than just the physical.
"Experimental process has not yet begun. She needs to be prepared and closely observed, her physical profile is ideal for the next phase of testing." Says the comment at the bottom.
The report doesn't stop there, as it continues with details of the other two patients. One of their descriptions catches your attention: "Red hair, fair skin, green eyes." The other is described as "dark hair, olive skin, brown eyes." Both subjects are in the preliminary stage, being observed and monitored to assess their suitability for the next step in the experiments. The language used is cold, technical, as if each of these details is just another characteristic on a clinical list. However, something stands out: a recurring mention of "enabled pregnancy," a cryptic term that appears several times in relation to both patients. You don’t fully understand what it refers to, but the term sounds disturbing, as if it’s related to some specific procedure, something that goes beyond simple medical care. The air grows heavier as you continue reading, a chill running down your spine.</div>
<div id="Pensamiento">I need to know more.</div>
<div class="links">
<th>[[Next page|checkfolder3]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The next page stops you immediately with a title that makes you hesitate for a moment: "Subject 4 - Advanced Stage." Unlike the other reports, this one has fewer descriptive details about the patient's physical appearance. Instead, the report quickly delves into the details of their medical condition, much more concerning and disturbing.
"The preparation phase is complete. The incubation process has begun," you read in the first line. The report then describes how the subject is undergoing "accelerated cellular modification," implying a drastic change in their biology.</div>
<div id="Pensamiento">Incubation process? What the fuck is this?</div>
<div class="links">
<th>[[Continue reading|checkfolder4]]</th>
</div>
</div>
<div id="CBox">
<<say $Mc>>But what does the "incubation process" have to do with all of this? That doesn't sound like something related to mental disorders.<</say>>
<<say $DocHome>>Ah, the "incubation process." It's a term sometimes used to describe certain aspects... of human physiology.<</say>>
<div id="Pensamiento">Another lie... He must think I'm stupid.</div>
<<say $Mc>>I see. But again, I don't understand how that connects to the patients' mental conditions.<</say>>
<<say $DocHome>>It's simply a matter of terminology, Detective. Not everything we deal with here is necessarily related to mental health. Physical or biological conditions can influence the mind. But, as I mentioned, these are... technical aspects that aren't always immediately understood.<</say>>
<div id="Pensamiento">He's clearly hiding something.</div>
<<say $Mc>>Hmm, "technical." I find it curious that something as specific as the "incubation process" appears in your documents.<</say>>
<<say $DocHome>>As I told you, Detective, these terms are used in contexts that not everyone comprehends. Some cases are so complex that their details become difficult to explain without losing focus. Sometimes, the darkest details provide the truest understanding of something as intricate as human behavior. But I doubt you would understand.<</say>>
<<say $Mc>>I don't appreciate being underestimated, Doctor. I'm here to uncover the truth, and vague explanations won't deter me.<</say>>
<<say $DocHome>>It's not my intention to underestimate you, Detective. Some things in life cannot be explained so simply, not even to those who believe every question has an immediate answer. But... I understand your curiosity.<</say>>
<div id="Ntext">At that moment, the doctor calmly extends his hand toward the folder, his movements unhurried, as if everything were proceeding exactly as planned.</div>
<<say $DocHome>>I believe you've seen enough, Detective. If you truly have more questions, it would be best to address them in a more formal setting... at another time and in a more... appropriate manner.<</say>>
<div class="links">
<th>[[I don't need your lessons|TalkDocHome2]]</th>
<th>[[Give the documents]]</th>
</div>
</div>
<<include "DocHome">><div id="CBox">
<div id="Ntext">The doctor watches you with skepticism as you approach, raising an eyebrow.</div>
<<say $DocHome>>Oh, don't you have an urgent call to take, detective? I hope the line interferences doesn't interrupt your important investigation.<</say>>
<div id="Ntext">As he finishes his sentence, the doctor flashes a carefree smile.</div>
<div id="Pensamiento">I don't like that passive-aggressive tone... it gets on my nerves... it's hard to hold myself back.</div>
<<say $Mc>>Maybe, but there's no signal here.<</say>>
<<say $DocHome>>The lines tend to have... interference. But if you step outside, you might have better luck.<</say>>
<div class="links">
<th>[[Back|MainLobby]]</th>
</div>
</div>
<<include "DocHome">><div id="CBox">
<div id="Ntext">Without hiding your resignation, you hand the documents over to the doctor.</div>
<<say $Mc>>Tsk... Okay, but don’t get excited, here you go.<</say>>
<<say $DocHome>>Thank you, Detective. I knew you would understand.<</say>>
<div id="Ntext">The tension in the air persists, but the doctor shows no signs of pressure. His calmness seems only to heighten the discomfort you feel. You realize that, although he has taken the documents from you, the answer you're searching for is still nowhere to be found.</div>
<div id="Pensamiento">Don't think we're done Doctor... This is just getting started.</div>
<div class="links">
<th>[[Ask about Subject Alpha-IX|nomorequestions]]</th>
</div>
</div>
<<include "DocHome">><div id="CBox">
<<say $Mc>>Doctor Home, I want to ask you a couple of questions about the subject...<</say>>
<div id="Ntext">Just at that moment, the sound of your phone abruptly interrupts the conversation. The ringtone echoes powerfully through the empty room as you look at the phone in disbelief. On the screen, the name of Mayor Quentin appears.</div>
<<say $DocHome>>From your expression, I'd say it looks like an important call...<</say>>
<div id="Pensamiento">Who does this guy think he is?</div>
<<say $Mc>>Maybe...<</say>>
<div class="links">
<th>[[Answer the call|answercalldoctor]]</th>
</div>
</div>
<<include "DocHome">>
<<script>>
setup.phoneSystem.addContact("Doc. Arklich Home", "Former employee and doctor at the Charles Francis Mental Institution. A peculiar man, highly suspicious.", "img/characters/dochome/avatar.png");
<</script>>
<<timed 2s>>
<<playSound "sound" "media/sounds/codec.mp3" loop volume:0.4>>
<</timed>>
<<timed 8s>>
<<playSound "sound" "media/sounds/none.mp3" volume:0.4>>
<</timed>><div id="CBox">
<div id="Ntext">You leave the building, leaving the doctor behind, waiting in the shadows. While you were inside, night has fully fallen. You make your way to the parking lot, searching for a secluded spot where you can have some privacy and where your words won’t echo throughout the area.</div>
<<say $Mc>>I don't think it’s a good idea to wait for him to call again.<</say>>
<div class="links">
<th>[[Go to parking|mayorcall2]]</th>
</div>
</div>
<<set $mayorcall = 1>>
<div id="CBox">
<div id="Ntext">You dial the mayor's number quickly, but the call cuts off as soon as it starts to ring. Frustrated, you try again. The signal remains unstable, interrupted by static. Finally, the call connects, but Quentin's voice sounds distant, as if coming from somewhere far away.</div>
<div class="links">
<th>[[Quentin?|mayorcall3]]</th>
</div>
</div>
<div id="CBox">
<<say $Mc>>Quentin?<</say>>
<<say $Mayor>>C@s3y... t3lls0m3th1ng...<</say>>
<<say $Mc>>Shit! I can't understand you, Quentin. You hear me?<</say>>
<div id="Ntext">His voice cuts out, and a series of incomprehensible noises invade the line. You focus, trying to catch whatever he might be saying, but all you manage to hear are fragments, like distorted echoes of a distant conversation.</div>
<<say $Mayor>>3x p@rt3r... R0dr1gu3z!<</say>>
<<say $Mc>>What’s going on?<</say>>
<div id="Ntext">You try adjusting the volume, but all you manage to hear is more static. The sound cuts off abruptly.</div>
<div class="links">
<th>[[Hang up the phone|mayorcall4]]</th>
</div>
</div>
<div id="npc-container">
<img src="img/characters/mayor/mayor.png">
</div>
<<playSound "sound" "media/sounds/staticphone.mp3" loop volume:0.4>>
<<timed 10s>>
<<playSound "sound" "media/sounds/staticphone.mp3" volume:0.4>>
<</timed>><div id="CBox">
<div id="Ntext">You hang up the phone, feeling a wave of discomfort.</div>
<div id="Pensamiento">The call was pointless. I think he said Rodríguez... although I'm not sure. Anyway... What does Gabriela have to do with the Mayor? It doesn't make sense, I couldn't hear anything.</div>
<<say $Mc>>I have no other choice. It's time to continue my investigation. I need to go back to the doctor.<</say>>
<div class="links">
<th>[[Continue|Parking]]</th>
</div>
</div>
<<playSound "sound" "media/sounds/none.mp3" volume:0.5>><div id="CBox">
<<say $Mc>>I should start by checking the abandoned cars. And find the car Rust and Dina arrived in.<</say>>
<div id="Pensamiento">There might be a clue.</div>
<div class="links">
<th>[[Get moving|CabinDoor]]</th>
</div>
</div>
<<set $carquest = 1>><button class="phone-button">📱</button>
<div class="phone-container">
<div class="phone-notch"></div>
<button class="phone-close">◉</button>
<div class="phone-screen">
<div class="top-bar">
<div class="files-button">📁</div>
<div class="wallet-info">
<span class="wallet-icon"></span>
<span class="wallet-amount">$<<print $McMoney>></span>
</div>
<div class="battery-icon">🔋</div>
</div>
<div class="nav-bar">
<div class="nav-item active" data-screen="contacts">📞</div>
<div class="nav-item" data-screen="objectives">📓</div>
</div>
<div class="content">
<div id="contacts" class="screen active"></div>
<div id="objectives" class="screen"></div>
<div id="files" class="screen"></div>
</div>
<div id="contact-detail-window" class="contact-detail-window">
<div class="contact-detail-content"></div>
</div>
</div>
<div id="file-viewer" class="file-viewer">
<div class="file-viewer-content"></div>
<button class="close-file-button">❌</button>
</div>
</div>
<<include "Diary">>
<style>
video {
width: 356px;
height: 100%;
position: relative;
right: 0;
top: 6em;
}
.files-counter {
position: absolute;
bottom: 0px;
right: 8px;
color: white;
font-size: 12px;
font-weight: bold;
}
/* Updated wallet counter - no background */
.wallet-counter {
position: absolute;
bottom: 0px;
right: 0px;
color: #00ff37;
font-size: 12px;
font-weight: bold;
cursor: default;
}
/* Hide the regular wallet amount when counter is present */
.wallet-counter-active .wallet-amount {
display: none;
}
.battery-icon {
font-size: 11px;
color: white;
margin-left: auto;
position: relative;
top: -73px;
left: 118px;
cursor: default;
}
.phone-container {
background-image: url(img/phone.png);
background-size: cover;
position: fixed;
top: 49%;
left: 50%;
transform: translate(-50%, -50%);
width: 600px;
height: 950px;
border-radius: 45px;
padding: 15px;
display: none;
z-index: 1000;
}
.phone-notch {
position: absolute;
top: 95px;
right: 205px;
width: 162px;
height: 1.8em;
background-image: url(img/notch.png);
background-color: transparent;
border: none;
background-size: cover;
z-index: 1;
}
.phone-close {
position: absolute;
padding-bottom: 10px;
bottom: 95px;
right: 272px;
background: none;
border: none;
border-radius: 50%;
color: white;
font-size: 23px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s ease;
z-index: 1;
}
.phone-close:hover {
background: none;
border: none;
}
.phone-screen {
background-image: url(img/phoneback.png);
background-position: center;
background-size: cover;
background-repeat: no-repeat;
width: 330px;
height: 750px;
border-radius: 52px;
padding: 20px;
color: white;
font-family: 'Arial', sans-serif;
overflow: hidden;
border: 1px solid rgb(140 172 255);
position: absolute;
top: 494px;
left: 339px;
transform: translate(-49%, -50%);
}
.phone-screen::before {
content: '';
position: absolute;
top: 0;
left: -50%;
width: 200%;
height: 100%;
background: linear-gradient(
to bottom,
transparent,
rgba(0, 150, 255, 0.05),
transparent
);
transform: rotate(-45deg);
}
@keyframes screenGlow {
0% { transform: translateX(-50%) rotate(-45deg); }
100% { transform: translateX(50%) rotate(-45deg); }
}
.top-bar {
position: absolute;
top: 60px;
left: 35px;
display: flex;
align-items: center;
gap: 15px;
padding: 5px;
z-index: 1;
}
.files-button {
font-size: 25px;
position: relative;
}
.file-detail-window {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
backdrop-filter: blur(2px);
background: rgba(91, 91, 91, 0.31);
z-index: 1000;
padding: 20px;
overflow-y: auto;
}
.media-viewer-content {
position: relative;
top: 3em;
max-width: 90%;
max-height: 90%;
}
.wallet-info {
display: flex;
align-items: center;
gap: 5px;
position: relative;
left: 10em;
}
.wallet-icon {
background-image: url(img/wallet.png);
background-size: cover;
width: 32px;
height: 32px;
display: block;
position: relative;
}
.wallet-amount {
color: #00ba2a;
font-family: Arial, sans-serif;
font-size: 14px;
font-weight: bold;
background: linear-gradient(90deg, #00ba64, #66d600);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
padding: 2px 6px;
border-radius: 4px;
position: relative;
top: 22px;
left: -50px;
cursor: default;
}
.files-button {
font-size: 24px;
cursor: pointer;
padding: 5px;
transition: transform 0.3s ease;
}
.files-button:hover {
transform: scale(1.1);
}
.nav-bar {
display: flex;
justify-content: space-around;
align-items: center;
padding: 15px;
background: rgb(0 4 12 / 29%);
border-radius: 20px;
margin: 30px 0 20px 0;
backdrop-filter: blur(10px);
height: 2em;
width: 365px;
position: relative;
top: 633px;
left: -30px;
gap: 55px;
}
.detail-navigation {
display: flex;
justify-content: space-around;
align-items: center;
padding: 15px;
background: rgb(29 44 89 / 61%);
border-radius: 5px;
margin: 30px 0 20px 0;
backdrop-filter: blur(10px);
height: 2em;
width: 343px;
position: relative;
top: 651px;
left: -23px;
color: black;
overflow: hidden;
}
.nav-item {
position: relative;
top: -1px;
padding: 15px;
cursor: pointer;
border-radius: 15px;
transition: all 0.3s ease;
font-size: 24px;
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 10px;
left: -6px;
}
.nav-button {
position: relative;
left: -100px;
top: 3px;
border: none;
background: none;
color: #d7d7d7;
font-size: 35px;
z-index: 100;
}
.nav-button:hover {
transform: scale(1.1);
border: none;
background: none;
}
button:disabled {
background-color: transparent;
border: none;
}
.nav-item:hover {
transform: scale(1.1);
}
.nav-item::after {
content: attr(data-label);
position: absolute;
bottom: -25px;
left: 50%;
transform: translateX(-50%);
font-size: 12px;
opacity: 0;
transition: all 0.3s ease;
white-space: nowrap;
color: rgba(0, 150, 255, 0.8);
}
.nav-item:hover::after {
opacity: 1;
bottom: -20px;
}
.nav-item.active {
background: #1a669b45;
box-shadow: 0 0 10px #0096ff33;
}
.content {
height: calc(100% - 65px);
overflow-y: hidden;
padding: 10px;
position: relative;
top: -11em;
}
.screen {
display: none;
opacity: 0;
transform: translateY(100px);
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
height: 100%;
overflow-y: scroll;
scrollbar-width: none;
-ms-overflow-style: none;
}
.screen.active {
display: block;
opacity: 1;
transform: translateY(0);
position: relative;
top: -2em;
height: 41em;
animation: slideUpFade 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
z-index: 1;
}
#files {
top: 22px;
}
@keyframes slideUpFade {
0% {
opacity: 0;
transform: translateY(100px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.screen::-webkit-scrollbar {
display: none;
}
.screen.active .contact-card {
opacity: 0;
animation: cardSlideUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
animation-delay: calc(var(--card-index) * 0.5s);
}
@keyframes cardSlideUp {
0% {
opacity: 0;
transform: translateY(50px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.screen.active .objective {
opacity: 0;
animation: objectiveSlideUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
animation-delay: calc(var(--objective-index) * 0.1s);
}
@keyframes objectiveSlideUp {
0% {
opacity: 0;
transform: translateY(50px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.screen.active .file-card {
opacity: 0;
animation: fileSlideUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
animation-delay: calc(var(--file-index) * 0.1s);
}
@keyframes fileSlideUp {
0% {
opacity: 0;
transform: translateY(50px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.contact-card {
background: #040404e0;
border-radius: 15px;
padding: 20px;
margin-bottom: 15px;
transition: all 0.3s ease;
border: 1px solid #667cb9;
box-shadow: 0px 0px 10px #000000;
backdrop-filter: blur(5px);
position: relative;
top: 0em;
height: fit-content;
backdrop-filter: blur(10px);
cursor: pointer;
}
.contact-card:hover {
transform: translateY(-5px) scale(1.02);
box-shadow: 0 0px 15px rgb(120 199 255 / 79%);
background: rgb(0 0 0 / 71%);
backdrop-filter: blur(5px);
}
.contact-header {
display: flex;
align-items: center;
gap: 15px;
}
.contact-image {
position: fixed;
top: 1px;
left: 1px;
width: 60px;
height: 60px;
border-radius: 15px;
overflow: hidden;
background: rgba(0, 0, 0, 0.2);
z-index: 1000;
}
.contact-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.contact-card:hover .contact-image img {
transform: scale(1.1);
}
.contact-info {
flex-grow: 1;
}
.contact-info h3 {
margin: 0 0 5px 0;
color: #ebb000;
font-size: 1.1em;
text-align: center;
}
.contact-info p {
margin-top: 15px;
font-size: 0.9em;
opacity: 0.8;
}
.objective {
padding: 20px;
margin-bottom: 15px;
border-radius: 15px;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
cursor: default;
}
.main-objective {
background: #040404e0;
border: 2px solid #b98f66;
}
.secondary-objective {
background: #040404e0;
border: 2px solid #667db9;
}
.objective h3 {
margin: 0;
color: white;
font-size: 1.1em;
}
.objective p {
margin: 0;
opacity: 0.8;
}
.file-card {
background: #040404e0;
border-radius: 15px;
padding: 20px;
margin-bottom: 15px;
transition: all 0.3s ease;
border: 1px solid #667cb9;
box-shadow: 0px 0px 10px #000000;
backdrop-filter: blur(5px);
cursor: pointer;
}
.file-card:hover {
transform: translateY(-5px) scale(1.02);
box-shadow: 0 0 15px rgba(120, 199, 255, 0.79);
background: rgba(0, 0, 0, 0.71);
}
.file-header {
display: flex;
align-items: center;
gap: 15px;
}
.file-card:hover .file-icon img {
transform: scale(1.1);
}
.file-info h3 {
margin: 0 0 5px 0;
color: #ebb000;
font-size: 1.1em;
text-align: center;
}
.no-files-message {
background-color: rgba(255, 255, 255, 0.92);
text-align: center;
color: #000000;
border-radius: 10px;
padding: 0px 6px;
font-size: 23px;
}
.phone-button {
position: fixed;
top: 236px;
left: 265px;
width: 51px;
height: 51px;
background: #0d0d0d;
border: 1px solid #f5deb36e;
border-radius: 18%;
font-size: 24px;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
}
.phone-button:hover {
background: #5f5f5f;
border: 1px solid #f5deb36e;
}
.content::-webkit-scrollbar {
width: 5px;
}
.content::-webkit-scrollbar-track {
background: rgba(0, 150, 255, 0.05);
border-radius: 10px;
}
.content::-webkit-scrollbar-thumb {
background: rgba(0, 150, 255, 0.2);
border-radius: 10px;
}
.content::-webkit-scrollbar-thumb:hover {
background: rgba(0, 150, 255, 0.3);
}
.contact-detail-window {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
backdrop-filter: blur(2px);
background: #5b5b5b4f;
z-index: 1000;
padding: 20px;
overflow-y: auto;
}
.gallery-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
padding: 10px;
position: relative;
top: -7em;
height: calc(100% - 100px);
overflow-y: auto;
}
.gallery-item {
position: relative;
aspect-ratio: 1;
cursor: pointer;
border-radius: 10px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.2);
transition: transform 0.2s ease;
display: flex;
justify-content: center;
align-items: center;
}
.gallery-item:hover {
transform: scale(1.05);
}
.gallery-thumbnail {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.video-indicator {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(0, 0, 0, 0.6);
color: white;
padding: 5px 10px;
border-radius: 50%;
font-size: 12px;
}
.media-viewer {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.9);
z-index: 2000;
justify-content: center;
align-items: center;
}
.media-viewer-content {
position: relative;
top: 3em;
max-width: 90vw;
max-height: 90vh;
}
.full-media {
max-width: 100%;
object-fit: contain;
}
.close-media-button {
position: absolute;
bottom: 38px;
left: 55px;
width: 1px;
height: 1px;
background: none;
border: none;
border-radius: 50%;
color: white;
font-size: 34px;
cursor: pointer;
}
.close-media-button:hover {
transform: scale(1.1);
border: none;
background: none;
bottom: 44px;
left: 53px;
}
.no-media-message {
background-color: rgb(255 255 255 / 92%);
text-align: center;
color: #000000;
border-radius: 10px;
padding: 0px 6px;
font-size: 23px;
grid-column: 1 / -1;
}
.folder-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
gap: 15px;
padding: 10px;
}
.file-icon {
display: flex;
justify-content: center;
cursor: pointer;
}
.icon-wrapper {
display: flex;
flex-direction: column;
align-items: center;
width: 80px;
}
.icon-wrapper img {
width: 60px;
height: 60px;
margin-bottom: 5px;
}
.icon-label {
background-color: rgba(0, 0, 0, 0.7);
color: white;
font-size: 12px;
text-align: center;
padding: 2px 5px;
border-radius: 3px;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.file-icon img {
width: 60px;
height: 60px;
}
.file-name {
margin-top: 5px;
text-align: center;
font-size: 12px;
color: white;
}
.file-viewer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 2000;
display: none;
}
.full-file {
width: 600px;
height: auto;
position: absolute;
top: 50%;
left: 55%;
transform: translate(-50%, -50%);
}
#file-viewer .close-file-button {
position: absolute;
top: 92px;
left: 325px;
font-size: 20px;
color: red !important;
background: none;
border: none;
cursor: pointer;
}
#file-viewer .close-file-button:hover {
color: red !important;
background-color: transparent;
}
</style>
<<script>>
// Format money display with K notation for values over 999
function formatMoney(amount) {
if (amount >= 1000) {
// Format with one decimal place if it's not a round number of thousands
if (amount % 1000 !== 0) {
return (amount / 1000).toFixed(1) + 'k';
} else {
return (amount / 1000) + 'k';
}
}
return amount;
}
$(document).on(':passagerender', function() {
// Setup card indices for animations
$('.contact-card').each(function(index) {
$(this).css('--card-index', index);
});
$('.objective').each(function(index) {
$(this).css('--objective-index', index);
});
$('.file-icon').each(function(index) {
$(this).css('--file-index', index);
});
// Setup navigation
$('.nav-item').off('click').on('click', function() {
const targetScreen = $(this).data('screen');
$('.screen, .nav-item').removeClass('active');
$(this).addClass('active');
$(`#${targetScreen}`).addClass('active');
});
// Format money display
const walletAmount = $('.wallet-amount');
if (walletAmount.length) {
// Check if the content is a raw number (from the print tag)
const currentText = walletAmount.text();
if (/^$d+$/.test(currentText)) {
const numericValue = parseInt(currentText.replace('$', ''), 10);
if (!isNaN(numericValue)) {
const formattedMoney = formatMoney(numericValue);
walletAmount.text('$' + formattedMoney);
}
}
}
});
$(document).ready(function() {
// Make sure setup object exists
if (typeof setup === 'undefined') {
window.setup = {};
}
if (typeof setup.phoneSystem === 'undefined') {
setup.phoneSystem = {};
}
if (typeof setup.phoneSystem.updateMoneyDisplay !== 'function') {
setup.phoneSystem.updateMoneyDisplay = function() {
try {
// Get current money value
const money = State.variables.McMoney || 0;
const formattedMoney = formatMoney(money);
if (!$('.wallet-counter').length && $('.wallet-icon').length) {
$('.wallet-icon').append('<span class="wallet-counter">$' + formattedMoney + '</span>');
$('.wallet-info').addClass('wallet-counter-active');
} else if ($('.wallet-counter').length) {
$('.wallet-counter').text('$' + formattedMoney);
}
} catch (e) {
console.log("Error in updateMoneyDisplay:", e);
}
};
}
if (typeof setup.phoneSystem.updateFileCounter !== 'function') {
setup.phoneSystem.updateFileCounter = function() {
try {
const fileCount = State.variables.files ? State.variables.files.length : 0;
if (!$('.files-counter').length && $('.files-button').length) {
$('.files-button').append('<span class="files-counter">' + fileCount + '</span>');
} else if ($('.files-counter').length) {
$('.files-counter').text(fileCount);
}
} catch (e) {
console.log("Error in updateFileCounter:", e);
}
};
}
const originalInit = setup.phoneSystem.init || function() {};
setup.phoneSystem.init = function() {
try {
// Call original init if it exists
originalInit.call(this);
// Update money display and file counter
if (typeof this.updateMoneyDisplay === 'function') {
this.updateMoneyDisplay();
}
if (typeof this.updateFileCounter === 'function') {
this.updateFileCounter();
}
} catch (e) {
console.log("Error in phoneSystem.init:", e);
}
};
const originalRefreshFiles = setup.phoneSystem.refreshFiles || function() {};
setup.phoneSystem.refreshFiles = function() {
try {
// Call original refreshFiles if it exists
originalRefreshFiles.call(this);
const filesContainer = $('#files');
if (filesContainer.length) {
filesContainer.empty();
const files = State.variables.files || [];
if (!files.length) {
filesContainer.html('<div class="no-files-message">No files collected yet</div>');
} else {
const folderGrid = $('<div class="folder-grid"></div>');
files.forEach((file, index) => {
const fileItem = $('<div>')
.addClass('file-icon')
.attr('data-index', index)
.html(`
<div class="icon-wrapper">
<img src="img/documents/generic_file_icon.png" alt="${file.name}" />
<span class="icon-label">${file.name}</span>
</div>
`)
.on('click', () => {
if (typeof this.showFileDetail === 'function') {
this.showFileDetail(file);
}
});
folderGrid.append(fileItem);
});
filesContainer.append(folderGrid);
}
}
if (typeof this.updateFileCounter === 'function') {
this.updateFileCounter();
}
} catch (e) {
console.log("Error in phoneSystem.refreshFiles:", e);
}
};
$('.phone-button').off('click').on('click', function() {
try {
if ($('.phone-container').is(':hidden')) {
if (setup.phoneSystem && typeof setup.phoneSystem.createOpenSound === 'function') {
setup.phoneSystem.createOpenSound();
}
$('.phone-container').fadeIn(200);
if (setup.phoneSystem) {
if (typeof setup.phoneSystem.updateMoneyDisplay === 'function') {
setup.phoneSystem.updateMoneyDisplay();
}
if (typeof setup.phoneSystem.updateFileCounter === 'function') {
setup.phoneSystem.updateFileCounter();
}
}
} else {
if (setup.phoneSystem && typeof setup.phoneSystem.createCloseSound === 'function') {
setup.phoneSystem.createCloseSound();
}
$('.phone-container').fadeOut(200);
}
} catch (e) {
console.log("Error in phone-button click handler:", e);
// Fallback behavior if there's an error
$('.phone-container').fadeToggle(200);
}
});
$('.phone-close').off('click').on('click', function() {
try {
if (setup.phoneSystem && typeof setup.phoneSystem.createCloseSound === 'function') {
setup.phoneSystem.createCloseSound();
}
$('.phone-container').fadeOut(200);
} catch (e) {
console.log("Error in phone-close click handler:", e);
$('.phone-container').fadeOut(200);
}
});
$('.files-button').off('click').on('click', function() {
try {
const filesScreen = $('#files');
if (filesScreen.hasClass('active')) {
$('.screen, .nav-item').removeClass('active');
} else {
$('.screen, .nav-item').removeClass('active');
filesScreen.addClass('active');
}
} catch (e) {
console.log("Error in files-button click handler:", e);
}
});
// Update money and files on state changes
$(document).on(':stateupdate', function() {
try {
if (setup.phoneSystem) {
if (typeof setup.phoneSystem.updateMoneyDisplay === 'function') {
setup.phoneSystem.updateMoneyDisplay();
}
if (typeof setup.phoneSystem.updateFileCounter === 'function') {
setup.phoneSystem.updateFileCounter();
}
}
} catch (e) {
console.log("Error in stateupdate handler:", e);
}
});
setTimeout(function() {
try {
if (setup.phoneSystem) {
if (typeof setup.phoneSystem.updateMoneyDisplay === 'function') {
setup.phoneSystem.updateMoneyDisplay();
}
if (typeof setup.phoneSystem.updateFileCounter === 'function') {
setup.phoneSystem.updateFileCounter();
}
}
} catch (e) {
console.log("Error in delayed initialization:", e);
}
}, 300);
});
<</script>>Diary and characters
New main objective
<<script>>
setup.phoneSystem.addObjective(
"Talk to Captain Havook",
"Go to captain's office and talk to him",
'main',
'talkHavook' // ID
);
<</script>>
New secondary objective
<<script>>
setup.phoneSystem.addObjective(
"Investigar el crimen",
"Buscar pistas en la escena del crimen",
'secondary'
);
<</script>>
When complete objective (all)
<<script>>
setup.phoneSystem.completeObjective('talkHavook');
<</script>>
añadir contacto
<<script>>
setup.phoneSystem.addContact("Gabi", "Mi compañera detective en New Veris", "img/characters/rodriguez/avatar.png");
<</script>>
<<script>>
setup.phoneSystem.addContact("Name", "Description", "img/characters/path/avatar.png");
<</script>>
add image
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "image", "img/characters/rodriguez/rodriguez.png");
<</script>>
add video
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "video", "videos/rodriguez/video1.mp4");
<</script>>
add file
<<script>>
setup.phoneSystem.addFile("Resign form", "img/documents/documentointro1.png");
<</script>><<script>>
setup.phoneSystem = {
initialized: false,
audioContext: null,
objectives: { main: null, secondary: [] },
files: [],
createOpenSound: function() {
if (!this.audioContext) {
this.audioContext = new (window.AudioContext || window.webkitAudioContext)();
}
const osc1 = this.audioContext.createOscillator();
const osc2 = this.audioContext.createOscillator();
const gainNode1 = this.audioContext.createGain();
const gainNode2 = this.audioContext.createGain();
osc1.type = 'sine';
osc1.frequency.setValueAtTime(600, this.audioContext.currentTime);
osc1.frequency.exponentialRampToValueAtTime(800, this.audioContext.currentTime + 0.15);
osc2.type = 'triangle';
osc2.frequency.setValueAtTime(1200, this.audioContext.currentTime);
osc2.frequency.exponentialRampToValueAtTime(1000, this.audioContext.currentTime + 0.1);
gainNode1.gain.setValueAtTime(0.15, this.audioContext.currentTime);
gainNode1.gain.exponentialRampToValueAtTime(0.01, this.audioContext.currentTime + 0.15);
gainNode2.gain.setValueAtTime(0.08, this.audioContext.currentTime);
gainNode2.gain.exponentialRampToValueAtTime(0.01, this.audioContext.currentTime + 0.1);
osc1.connect(gainNode1);
osc2.connect(gainNode2);
gainNode1.connect(this.audioContext.destination);
gainNode2.connect(this.audioContext.destination);
osc1.start(this.audioContext.currentTime);
osc2.start(this.audioContext.currentTime);
osc1.stop(this.audioContext.currentTime + 0.15);
osc2.stop(this.audioContext.currentTime + 0.1);
},
createCloseSound: function() {
if (!this.audioContext) {
this.audioContext = new (window.AudioContext || window.webkitAudioContext)();
}
const osc1 = this.audioContext.createOscillator();
const osc2 = this.audioContext.createOscillator();
const gainNode1 = this.audioContext.createGain();
const gainNode2 = this.audioContext.createGain();
osc1.type = 'sine';
osc1.frequency.setValueAtTime(800, this.audioContext.currentTime);
osc1.frequency.exponentialRampToValueAtTime(400, this.audioContext.currentTime + 0.15);
osc2.type = 'triangle';
osc2.frequency.setValueAtTime(1000, this.audioContext.currentTime);
osc2.frequency.exponentialRampToValueAtTime(600, this.audioContext.currentTime + 0.1);
gainNode1.gain.setValueAtTime(0.15, this.audioContext.currentTime);
gainNode1.gain.exponentialRampToValueAtTime(0.01, this.audioContext.currentTime + 0.15);
gainNode2.gain.setValueAtTime(0.08, this.audioContext.currentTime);
gainNode2.gain.exponentialRampToValueAtTime(0.01, this.audioContext.currentTime + 0.1);
osc1.connect(gainNode1);
osc2.connect(gainNode2);
gainNode1.connect(this.audioContext.destination);
gainNode2.connect(this.audioContext.destination);
osc1.start(this.audioContext.currentTime);
osc2.start(this.audioContext.currentTime);
osc1.stop(this.audioContext.currentTime + 0.15);
osc2.stop(this.audioContext.currentTime + 0.1);
},
init: function() {
if (!this.initialized) {
State.variables.contacts = State.variables.contacts || [];
State.variables.unlockedMedia = State.variables.unlockedMedia || {};
State.variables.lastViewedMedia = State.variables.lastViewedMedia || {};
State.variables.objectives = State.variables.objectives || { main: null, secondary: [] };
State.variables.files = State.variables.files || [];
this.setupEventListeners();
this.initialized = true;
$('.phone-container').hide();
$('.screen').removeClass('active');
$('.nav-item').removeClass('active');
if (!$('#contacts').length) {
$('<div id="contacts" class="screen active"></div>').appendTo('.content');
}
if (!$('#contact-detail-window').length) {
$('<div id="contact-detail-window" class="contact-detail-window"><div class="contact-detail-content"></div></div>').appendTo('.phone-screen');
}
if (!$('#objectives').length) {
$('<div id="objectives" class="screen"></div>').appendTo('.content');
}
if (!$('#files').length) {
$('<div id="files" class="screen"></div>').appendTo('.content');
}
if (!$('#file-viewer').length) {
$('<div id="file-viewer" class="file-viewer"><div class="file-viewer-content"></div><button class="close-file-button">✖</button></div>').appendTo('.phone-container');
}
this.objectives = {
main: State.variables.objectives.main,
secondary: [...State.variables.objectives.secondary]
};
this.files = [...State.variables.files];
this.updateObjectivesDisplay();
this.refreshContacts();
this.refreshFiles();
}
},
setupEventListeners: function() {
if ($('.phone-button').length) {
$('.phone-button').off('click').on('click', () => {
if ($('.phone-container').is(':hidden')) {
this.createOpenSound();
$('.phone-container').fadeIn(200);
} else {
this.createCloseSound();
$('.phone-container').fadeOut(200, () => {
$('.screen').removeClass('active');
$('.nav-item').removeClass('active');
});
}
});
}
if ($('.phone-close').length) {
$('.phone-close').off('click').on('click', () => {
this.createCloseSound();
$('.phone-container').fadeOut(200, () => {
$('.screen').removeClass('active');
$('.nav-item').removeClass('active');
});
});
}
if ($('.nav-item').length) {
$('.nav-item').off('click').on('click', function() {
const targetScreen = $(this).data('screen');
if ($(this).hasClass('active')) {
$('.nav-item').removeClass('active');
$('.screen').removeClass('active');
} else {
$('.nav-item').removeClass('active');
$(this).addClass('active');
$('.screen').removeClass('active');
$(`#${targetScreen}`).addClass('active');
}
});
}
if ($('.files-button').length) {
$('.files-button').off('click').on('click', () => {
if ($('#files').hasClass('active')) {
$('.screen').removeClass('active');
$('.nav-item').removeClass('active');
} else {
$('.screen').removeClass('active');
$('.nav-item').removeClass('active');
$('#files').addClass('active');
}
});
}
},
unlockMedia: function(contactName, mediaType, mediaPath) {
if (!State.variables.unlockedMedia[contactName]) {
State.variables.unlockedMedia[contactName] = { images: [], videos: [] };
}
const media = State.variables.unlockedMedia[contactName];
if (mediaType === 'image' && !media.images.includes(mediaPath)) {
media.images.push(mediaPath);
} else if (mediaType === 'video' && !media.videos.includes(mediaPath)) {
media.videos.push(mediaPath);
}
const detailWindow = $('#contact-detail-window');
if (detailWindow.is(':visible')) {
const contact = State.variables.contacts.find(c => c.name === contactName);
if (contact) this.showContactDetail(contact);
}
},
showContactDetail: function(contact) {
const detailWindow = $('#contact-detail-window');
const detailContent = detailWindow.find('.contact-detail-content');
const unlockedMedia = State.variables.unlockedMedia[contact.name] || { images: [], videos: [] };
const allMedia = [...unlockedMedia.images, ...unlockedMedia.videos];
let contentHtml = `
<div class="detail-navigation">
<button class="nav-button back-button">◀</button>
</div>
<div class="gallery-grid">`;
if (allMedia.length > 0) {
allMedia.forEach((media, index) => {
const isVideo = unlockedMedia.videos.includes(media);
contentHtml += isVideo
? `<div class="gallery-item" data-media="${media}" data-type="video">
<video src="${media}" class="gallery-thumbnail">Your browser does not support the video tag.</video>
<div class="video-indicator">▶</div>
</div>`
: `<div class="gallery-item" data-media="${media}" data-type="image">
<img src="${media}" class="gallery-thumbnail" alt="${contact.name}" />
</div>`;
});
} else {
contentHtml += `<div class="no-media-message">No images or videos unlocked</div>`;
}
contentHtml += `</div>
<div class="media-viewer">
<div class="media-viewer-content"></div>
<button class="close-media-button">◀</button>
</div>`;
detailContent.html(contentHtml);
$('.back-button').off('click').on('click', () => detailWindow.fadeOut(200));
$('.gallery-item').off('click').on('click', function() {
const mediaPath = $(this).data('media');
const mediaType = $(this).data('type');
const mediaViewer = $('.media-viewer');
const mediaContent = $('.media-viewer-content');
mediaContent.html(mediaType === 'video'
? `<video src="${mediaPath}" class="full-media" controls playsinline>Your browser does not support the video tag.</video>`
: `<img src="${mediaPath}" class="full-media" alt="${contact.name}" />`);
mediaViewer.fadeIn(200);
});
$('.close-media-button').off('click').on('click', () => $('.media-viewer').fadeOut(200));
detailWindow.fadeIn(200);
},
addContact: function(name, description, imageUrl = 'img/characters/default.png') {
const existingContactIndex = State.variables.contacts.findIndex(contact => contact.name === name);
if (existingContactIndex !== -1) {
State.variables.contacts[existingContactIndex] = { name, description, imageUrl };
} else {
State.variables.contacts.push({ name, description, imageUrl });
}
this.refreshContacts();
},
refreshContacts: function() {
const contactsContainer = $('#contacts');
contactsContainer.empty();
State.variables.contacts.forEach(contact => {
const contactCard = $('<div>')
.addClass('contact-card')
.html(`
<div class="contact-header">
<div class="contact-image">
<img src="${contact.imageUrl}" alt="${contact.name}" />
</div>
<div class="contact-info">
<h3>${contact.name}</h3>
<p>${contact.description}</p>
</div>
</div>
`)
.on('click', () => this.showContactDetail(contact));
contactsContainer.append(contactCard);
});
},
addObjective: function(title, description, type = 'main', id = null) {
const objectiveId = id || Math.random().toString(36).substr(2, 9);
const objective = { id: objectiveId, title, description, type, completed: false };
if (type === 'main') {
this.objectives.main = objective;
State.variables.objectives.main = objective;
} else {
const existingIndex = this.objectives.secondary.findIndex(obj => obj.id === objectiveId);
if (existingIndex !== -1) {
this.objectives.secondary[existingIndex] = objective;
State.variables.objectives.secondary[existingIndex] = objective;
} else {
this.objectives.secondary.push(objective);
State.variables.objectives.secondary.push(objective);
}
}
this.updateObjectivesDisplay();
},
completeObjective: function(id) {
let objectives = State.variables.objectives;
if (objectives.main && objectives.main.id === id) {
objectives.main = null;
}
objectives.secondary = objectives.secondary.filter(obj => obj.id !== id);
State.variables.objectives = objectives;
this.objectives = { main: objectives.main, secondary: [...objectives.secondary] };
this.updateObjectivesDisplay();
},
updateObjectivesDisplay: function() {
const $objectives = $('#objectives');
$objectives.empty();
if (this.objectives.main) {
$objectives.append(`
<div class="objective main-objective" data-id="${this.objectives.main.id}">
<h3>${this.objectives.main.title}</h3>
<p>${this.objectives.main.description}</p>
</div>
`);
}
if (this.objectives.secondary && this.objectives.secondary.length > 0) {
this.objectives.secondary.forEach(obj => {
$objectives.append(`
<div class="objective secondary-objective" data-id="${obj.id}">
<h3>${obj.title}</h3>
<p>${obj.description}</p>
</div>
`);
});
}
},
addFile: function(name, imagePath) {
const fileExists = State.variables.files.some(file => file.name === name);
if (!fileExists) {
const file = { name, imagePath };
State.variables.files.push(file);
this.files = [...State.variables.files];
this.refreshFiles();
}
},
refreshFiles: function() {
const filesContainer = $('#files');
filesContainer.empty();
if (this.files.length === 0) {
filesContainer.html('<div class="no-files-message">No files collected yet</div>');
} else {
const folderGrid = $('<div class="folder-grid"></div>');
this.files.forEach(file => {
const fileItem = $('<div>')
.addClass('file-icon')
.html(`
<div class="icon-wrapper">
<img src="img/documents/generic_file_icon.png" alt="${file.name}" />
<span class="icon-label">${file.name}</span>
</div>
`)
.on('click', () => this.showFileDetail(file));
folderGrid.append(fileItem);
});
filesContainer.append(folderGrid);
}
},
showFileDetail: function(file) {
const fileViewer = $('#file-viewer');
const fileContent = fileViewer.find('.file-viewer-content');
fileContent.html(`<img src="${file.imagePath}" class="full-file" alt="${file.name}" />`);
fileViewer.fadeIn(200);
$('.close-file-button').off('click').on('click', () => {
fileViewer.fadeOut(200, () => {
$('#files').addClass('active'); // Volver a la pantalla de archivos
});
});
}
};
$(document).on(':passagestart', function() {
setTimeout(() => {
setup.phoneSystem.init();
setup.phoneSystem.refreshContacts();
setup.phoneSystem.refreshFiles();
}, 100);
});
$(document).on(':passagerender', function() {
setup.phoneSystem.setupEventListeners();
});
<</script>>
<div class="links-container">
<div class="title3"></div>
<div id="title4"></div>
<div class="links">
<th>[[Start|introllegada1]]</th>
</div>
</div>
<<playMusic "music2" "media/sounds/none.mp3">>
<<playMusic "music" "media/music/caseydescent.mp3" loop volume:0.6>>
<<set $imageList to ["media/events/caseytrip/init.png", "media/events/caseytrip/uno.png", "media/events/caseytrip/dos.png", "media/events/caseytrip/tres.gif", "media/events/caseytrip/cuatro.png", "media/events/caseytrip/cinco.png", "media/events/caseytrip/seis.png", "media/events/caseytrip/siete.png","media/events/caseytrip/ocho.png", "media/events/caseytrip/nueve.gif", "media/events/caseytrip/diez.png", "media/events/caseytrip/once.png", "media/events/caseytrip/doce.png", "media/events/caseytrip/trece.png", "media/events/caseytrip/last.gif", "img/backgrounds/intro1.png"]>>
<<set $imageIndex to 0>>
<<script>>
window.changeImage = function (newImageSrc) {
const imgElement = document.getElementById('character-image');
if (!imgElement) {
console.error('No se encontró el elemento con id "character-image".');
return;
}
// Ocultar la imagen actual con opacidad y difuminado
imgElement.classList.add('hidden');
// Esperar a que la transición de opacidad termine
setTimeout(() => {
// Cambiar la fuente de la imagen
imgElement.src = newImageSrc;
// Asegurar que la imagen se muestre solo cuando esté completamente cargada
imgElement.onload = () => {
// Esperar un pequeño retraso antes de mostrar la nueva imagen
setTimeout(() => {
imgElement.classList.remove('hidden');
}, 50); // Retraso corto para asegurar la transición
};
}, 500); // Duración que coincide con la transición CSS
};
<</script>>
<<include "imgr2">>
<style>
.title2, .ptr, #credits {
opacity: 0;
}
#character-menu, .phone-button, #money {
visibility: visible;
display: none;
}
/* Estilos de los enlaces */
.links {
position: relative;
top: 38vw;
text-align: left;
z-index: 10;
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 3em;
font-size: 12px;
width: 100%;
}
/* Initial state - container starts hidden */
.links-container {
opacity: 0;
visibility: hidden;
position: fixed;
top: 38%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
z-index: 100;
-webkit-animation: showDelayed 0.5s ease-in forwards;
-moz-animation: showDelayed 0.5s ease-in forwards;
-o-animation: showDelayed 0.5s ease-in forwards;
animation: showDelayed 0.5s ease-in forwards;
-webkit-animation-delay: 15s;
-moz-animation-delay: 15s;
-o-animation-delay: 15s;
animation-delay: 15s;
height: 49em;
}
/* Keyframes for the fade-in effect */
@-webkit-keyframes showDelayed {
0% {
opacity: 0;
visibility: hidden;
}
100% {
opacity: 1;
visibility: visible;
}
}
@-moz-keyframes showDelayed {
0% {
opacity: 0;
visibility: hidden;
}
100% {
opacity: 1;
visibility: visible;
}
}
@-o-keyframes showDelayed {
0% {
opacity: 0;
visibility: hidden;
}
100% {
opacity: 1;
visibility: visible;
}
}
@keyframes showDelayed {
0% {
opacity: 0;
visibility: hidden;
}
100% {
opacity: 1;
visibility: visible;
}
}
@keyframes subwoofer-pump {
0% {
transform: scale(1) translateZ(0);
filter: blur(0px);
}
20% {
transform: scale(1.08) translateZ(0);
filter: blur(1px);
}
40% {
transform: scale(0.96) translateZ(0);
filter: blur(0.5px);
}
60% {
transform: scale(1.04) translateZ(0);
filter: blur(0.7px);
}
80% {
transform: scale(0.98) translateZ(0);
filter: blur(0.3px);
}
100% {
transform: scale(1) translateZ(0);
filter: blur(0px);
}
}
.title3 {
background-image: url(img/title.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center top;
position: fixed;
top: 4%;
left: 50%;
transform: translateX(-50%);
width: 500px;
height: 280px;
z-index: 1;
}
#title4 {
background-image: url(img/title1.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center top;
position: fixed;
top: 15em;
left: -6em;
transform: translateX(-50%);
width: 300px; /* Ancho fijo para desktop */
height: 60px; /* Altura fija para desktop */
animation: subwoofer-pump 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
transform-origin: center center;
will-change: transform;
backface-visibility: hidden;
perspective: 1000px;
z-index: 1;
}
/* Media queries ajustadas para dispositivos más pequeños */
@media screen and (max-width: 768px) {
.title3 {
width: 400px;
height: 120px;
}
#title4 {
width: 240px;
top: 125px;
height: 50px;
}
}
@media screen and (max-width: 480px) {
.title3 {
width: 300px;
height: 90px;
}
#title4 {
width: 180px;
top: 95px;
height: 40px;
}
}
@media screen and (max-width: 320px) {
.title3 {
width: 240px;
height: 70px;
}
#title4 {
width: 140px;
top: 75px;
height: 35px;
}
}
</style>
<style>
#container {
opacity: 0; /* Inicialmente invisible */
filter: blur(10px); /* Desenfoque inicial */
animation: fadeBlurIn 5s ease-in-out forwards; /* Animación combinada */
animation-delay: 3s; /* El inicio de la animación se retrasa 3 segundos */
}
/* Animación personalizada */
@keyframes fadeBlurIn {
0% {
opacity: 0;
filter: blur(10px);
}
50% {
opacity: 0.5;
filter: blur(5px);
}
100% {
opacity: 1;
filter: blur(0);
}
}
</style>
<<script>>
$(document).ready(function () {
setTimeout(function () {
$('#container').addClass('visible');
}, 5000); // 5 segundos
});
<</script>>
<<set $bag = 0>>
<<set $IntroComplete = true>><div id="imageContainer">
<img src="media/events/caseytrip/init.png" id="currentImage">
</div>
<<script>>
$(document).ready(function () {
var images = State.variables.imageList; // Lista de imágenes
var currentIndex = State.variables.imageIndex; // Índice actual
var $imageContainer = $('#imageContainer'); // Contenedor de imágenes
var $currentImage = $('#currentImage'); // Imagen actual
setInterval(function () {
// Actualizar el índice para la próxima imagen
currentIndex = (currentIndex + 1) % images.length;
State.variables.imageIndex = currentIndex;
// Crear una nueva imagen para la transición
var $nextImage = $('<img>')
.attr('src', images[currentIndex])
.addClass('fade-in') // Clase CSS para la animación
.css({
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
objectFit: 'cover',
});
// Agregar la nueva imagen al contenedor
$imageContainer.append($nextImage);
// Esperar a que la transición termine y eliminar la imagen anterior
setTimeout(function () {
$currentImage.remove(); // Eliminar la imagen anterior
$nextImage.removeClass('fade-in'); // Eliminar la clase para mantener la nueva imagen fija
$currentImage = $nextImage; // Actualizar la referencia
}, 2000); // Duración de la animación (2s)
}, 4000); // Cambiar cada 8 segundos
});
<</script>>
<style>
body {
--ui-bar-height: 0 !important;
}
#ui-bar {
background: transparent;
}
#story {
top: 0 !important;
}
#imageContainer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
#imageContainer img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 1;
transition: opacity 2s ease; /* Transición suave de opacidad */
}
#imageContainer img.fade-in {
opacity: 0;
animation: fadeIn 3s ease forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
<div id="CBox">
<div id="Ntext">You decide to trust the old staircase, stepping cautiously onto the first rungs. The metal groans under your weight but seems to hold. Just as you begin climbing with more confidence, a sharp and terrifying sound stops you.
CRACK!
The metal gives way suddenly, and you plummet to the ground.</div>
<<say $Mc>>Damn it!<</say>>
<div id="Ntext">The impact knocks the wind out of you, and a sharp pain shoots through your side.</div>
<<say $Mc>>Oh, crap!<</say>>
<div id="Ntext">You slowly sit up, feeling the tender area. Luckily, it seems there are no serious injuries.</div>
<<say $Mc>>Alright... I'm fine. But I'll have to find another way forward.<</say>>
<img id="event-image4" src="img/events/escalera.png">
<div class="links">
<th>[[Back|Camino-intermedio]]</th>
</div>
</div>
<<set $escalerarota = true>>
<<script>>
window.decreaseHealth(10);
<</script>><div id="CBox">
<div id="Ntext">You stop in front of the vehicle. The body, covered by a few fallen leaves, suggests it’s been here for a while. The armored windows prevent you from seeing inside.</div>
<div id="Pensamiento">It’s the FBI car, no doubt about it.</div>
<div id="Ntext">You try to open it, but as you pull on the handle, you realize it won’t budge.
</div>
<<say $Mc>>And of course, it’s locked.<</say>>
<div id="Pensamiento">There’s no sign that anyone has been in the car recently.</div>
<<say $Mc>>Anyway, I have to find a way to open it; maybe I’ll find something important.<</say>>
<img id="event-image" src="img/events/fbicar.png">
<div class="linksTwo">
<<if $FBIcar isnot true>>
<th><<lockBreak "average" "openfbicar" "Parking2" true>></th>
<</if>>
<<if $ironbarStair is true>>
<th>[[Break glass with iron bar|noblackcar]]</th>
<</if>>
<<if $hasCarKey>>
<th>[[Open car with key|openfbicarKey]]</th>
<</if>>
</div>
<div class="links">
<th>[[Back|Parking2]]</th>
</div>
</div>
<<set $fbicarchek = true>>
<<script>>
setup.phoneSystem.completeObjective('fbicar');
<</script>>
<<script>>
setup.phoneSystem.addObjective(
"Get in the fbi car",
"Find a way to get inside and search the FBI agents' car.",
'secondary',
'fbicar',
);
<</script>>
<<SanityMessage "Objective updated: FBI car">>
<div id="CBox">
<div id="Ntext">The scene before you is like a magnet for your senses. You try to look away, but your eyes remain locked, both fascinated and horrified. Each moan scrapes against your nerves like a match striking sandpaper, igniting a fire you shouldn't feel in a place like this. You swallow hard, trying to smother that uncomfortable heat, that misplaced desire that makes you hate yourself a little.
</div>
<div id="Pensamiento">This isn't right.</div>
<div id="Ntext">But you can't help but look again.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupVerticalVideo("videoPlaceholder", "media/mambo/54.mp4", 177);
<</script>>
<div class="links">
<th>[[Look again|peekintro1]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<<playMusic "music2" "media/sounds/none.mp3">><div id="CBox">
<div id="Ntext">The window is broken just as you left it.</div>
<img id="event-image2" src="img/events/brokenwindow.png">
<div class="links">
<th>[[Enter through the window|Enterwindow]]</th>
<th>[[Back|Camino-izquierda]]</th>
</div><div id="CBox">
<div id="Ntext">With a precise strike of the pistol’s butt, the glass shatters, exploding into a shower of sharp fragments. </div>
<div class="links">
<th>[[Enter through the window|Enterwindow]]</th>
</div>
<img id="event-image2" src="img/events/brokenwindow.png">
</div>
<<playAudio "sound" "media/sounds/windowcrash.mp3" "sound" "volume:0.3">>
<<set $Windowcrash = true>><div id="CBox">
<div id="Ntext">A dry crack echoes through the night as you slip into the abandoned psychiatric facility, landing on the cold, dust-covered floor. The first thing you notice is the sour stench of dampness and decay.</div>
<<say $Mc>>Ugh, what a stench...<</say>>
<div id="Ntext">A man emerges from the shadows, dressed in a torn and stained patient uniform. His head bears the crude scars of a botched lobotomy, leaving his gaze hollow and lost... until he sees you. In his hand, he clutches a strange, sharp object, its twisted form glinting in the dim light.</div>
<div id="Pensamiento">A patient! Maybe I can ask him a few questions.</div>
<div class="links">
<th>[[Talk to him|brokewindowtalk]]</th>
</div>
</div>
<<if $bwinfight gte 1>>
<<goto "Saveroom">>
<</if>>
<<timed 5s>>
<div id="npc-container">
<img src="img/monsters/patients/lbpatient.png" style="
background-repeat: no-repeat;
background-size: cover;
width: 25em;
position: relative;
top: -2em;
right: 2em;
">
</div>
<</timed>>
<div id="CBox"></div>
<<setLighting 50>>
<<script>>
startBattle('lobotomizedPatient', 10);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<if $FightTutorial isnot true>>
<<set $FightTutorial = true>>
<div id="combatTutorialModal" class="modal">
<div class="modal-content">
<span class="close-button" onclick="document.getElementById('combatTutorialModal').style.display='none'">×</span>
<h2>Combat Tutorial with Firearms and Melee Weapons</h2>
<p><strong>Goal:</strong> Defeat all enemies without dying.</p>
<div class="modal-section">
<div class="modal-column">
<strong>Controls:</strong>
<ul>
<li><strong>Firearms:</strong>
<ul>
<li>Equip a firearm (such as a pistol, shotgun, or rifle) and the corresponding ammunition to shoot.</li>
<li>Press the "Shoot" button. If facing multiple enemies at once, press the "Shoot" button and then select the enemy card you want to attack.</li>
</ul>
</li>
<li><strong>Melee Weapons: (Next Update)</strong>
<ul>
<li>Equip a melee weapon (such as a knife, bat, or machete) to perform close-range attacks when enemies are close enough.</li>
<li><strong>Note:</strong> Equipping a melee weapon will automatically unequip any equipped firearm, and vice versa.</li>
<li>Damage varies depending on the melee weapon used.</li>
</ul>
</li>
<li>Use the "Back Away" button to put some distance between you and the enemy to buy more time, or use the "Approach" button to get closer to the enemy and use melee weapons effectively. And use "Run Away" button to escape from the fight.</li>
</ul>
</div>
<div class="modal-column">
<strong>Additional Tips:</strong>
<ul>
<li>Different types of ammunition can deal extra damage with firearms.</li>
<li>You can find weapon modifications that increase damage or accuracy.</li>
<li>Different rooms and hallways have various types of lighting, which affect your accuracy. Use the flashlight in dark places to gain an accuracy bonus.</li>
</ul>
</div>
</div>
<div style="text-align: center; margin-top: 20px;">
<button id="continueButton" class="continue-button">Continue</button>
</div>
</div>
</div>
<<script>>
$(document).ready(function () {
$("#combatTutorialModal").css("display", "block");
$(document).off("click", "#continueButton, .close-button").on("click", "#continueButton, .close-button", function () {
$("#combatTutorialModal").css("display", "none");
});
});
<</script>>
<</if>>
<style>
p {
text-align: center;
}
h2 {
color: #e9e9e9;
}
b, strong {
font-weight: 700;
color: #d3bd7b;
}
.modal {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
justify-content: center;
align-items: center;
margin: 0;
padding: 0;
}
.modal-content {
background: rgba(20, 20, 20, 0.9);
border: 3px solid #634d23;
border-radius: 5px;
padding: 20px;
max-width: 660px;
max-height: 80vh;
overflow-y: auto;
color: #d9c27e;
font-family: 'Trajan Pro', 'Times New Roman', serif;
position: relative;
margin: auto;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.modal-content h2 {
text-align: center;
color: #ffcc00;
margin-bottom: 0px;
position: relative;
top: -1em;
}
.close-button {
color: #ffcc00;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
position: relative;
top: -1.7em;
}
.modal-section {
display: flex;
flex-wrap: wrap;
}
.modal-column {
flex: 1;
min-width: 250px;
padding: 38px;
margin-bottom: -5em;
margin-top: -3em;
color: #e9e9e9;
}
.modal-content ul {
list-style-type: disc;
padding-left: 20px;
line-height: 1.6;
}
.continue-button {
padding: 10px 20px;
background-color: #3e3423;
color: #d9c27e;
border: 1px solid #634d23;
border-radius: 3px;
cursor: pointer;
font-family: 'Trajan Pro', 'Times New Roman', serif;
font-size: 16px;
transition: all 0.2s;
text-shadow: 1px 1px 1px #000;
}
.continue-button:hover {
background-color: #3e3423;
}
</style><div id="CBox">
<div id="Ntext">The room is small and dark, though you can still see. The air is thick and dusty. In one corner, an old desk holds an ancient computer, its screen covered in dust. Against the wall, a metal locker stands tall.</div>
<div class="linksTwo">
<<if $SRdoor isnot true>>
<th>[[Check door|saveroomdoor]]</th>
<</if>>
<th>[[Check the computer|saveroom]]</th>
<th>[[Check the locker|SRlocker]]</th>
</div>
<div class="links">
<th>[[Exit through the window|Camino-izquierda]]</th>
<<if $SRdoor is true>>
<th>[[Exit to hallway|SRcorridor]]</th>
<</if>>
</div>
</div>
<<if $Windowcrash is true && $bwinfight2 isnot true && $patientcome isnot 1>>
<<goto "nosaveroom">>
<</if>>
<<if $bwinfight2 is true && $reflexionSR isnot true>>
<<goto "reflexionSR">>
<</if>>
<div id="LocationName">Little office</div>
<<if $bwfight2 gte 2 && $inside isnot true>>
<<playMusic "music2" "media/music/none.mp3">>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.3>>
<<set $inside = true>>
<</if>>
<<setLighting 60>><<set $bwfight = 2>>
<<set $bwinfight = true>>
<<goto "Saveroom">>
<<set $bwfight = 0>>
<<goto "Camino-izquierda">><div id="CBox">
<<say $Mc>>Hey, sorry, are you a patient of Dr. Home? <</say>>
<div id="Ntext">As soon as he hears your voice, something changes in his expression. His trembling lips curl into a grotesque smile, and his body starts to tremble with sickening excitement.</div>
<<say $LbPatient>>You... pretty... so... pretty...<</say>>
<div id="Pensamiento">What the hell is wrong with him?</div>
<<say $Mc>>Can I ask you a few questions?<</say>>
<<say $LbPatient>>Come here... come... touch... you... I like... a lot...<</say>>
<div id="Ntext">The stranger reaches out, trying to grab one of your breasts, but you quickly move away before he can touch you.</div>
<<say $Mc>>What the fuck are you trying to do?<</say>>
<<say $LbPatient>>No! give me... Give me!<</say>>
<div id="Ntext">The patient, visibly enraged by the rejection, growls with uncontrollable fury. His eyes fill with rage, and without warning, he lunges toward you, his hands outstretched, trying to grab you. His body, clumsy and disoriented, moves with an unexpected speed.</div>
<<say $LbPatient>>Argh!<</say>>
<<say $Mc>>Oh my god!<</say>>
<div class="links">
<th>[[Shoot him|brokewindowfight]]</th>
</div>
</div>
<<set $bwfight = 1>>
<div id="npc-container">
<img src="img/monsters/patients/lbpatient.png" style="
background-repeat: no-repeat;
background-size: cover;
width: 25em;
position: relative;
top: -2em;
right: 2em;
">
</div>
<<script>>
window.HealthEventSystem.addEvent('E1', {
min: 0,
max: 10,
passage: 'E1',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You find a computer covered in dust in a corner of the room. Against all odds, it appears to be working. The screen flickers faintly, indicating that it’s still receiving power.</div>
<<default>>
<div id="Ntext">The screen of the old computer flickers faintly, indicating that it’s still receiving power.</div>
<</switch>>
<div class="links">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<th>[[Go back|Saveroom]]</th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<set $inside = false>><<if $patientcome is 1>>
<div id="CBox">
<div id="Ntext">Someone is about to enter through this door.</div>
<div id=Pensamiento>I'll wait here, or I'll leave through the window.</div>
<div class="links">
<th>[[Back|Saveroom]]</th>
</div>
</div>
<<else>>
<div id="CBox">
<div id="Ntext">As you open the door, a dark and silent hallway greets you. The faint light filtering in from the room barely illuminates the first few meters before being swallowed by the shadows. The air is thick, carrying a slight scent of dampness and rust. In the distance, a mournful howl shatters the silence, echoing through the corridors like an omen of something lurking in the darkness, sending a chill through you.</div>
<<say $Mc>>Damn it, I can't see a thing...<</say>>
<div id=Pensamiento>Luckily, I brought my flashlight.</div>
<div class="links">
<th>[[Exit|SRcorridor]]</th>
<th>[[Back|Saveroom]]</th>
</div>
</div>
<<set $SRdoor = true>>
<</if>><<if setup.lantern.isOn>>
<<goto "SRcorridorLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The passage is completely dark. Although you can see the path ahead, everything else remains submerged in darkness. You can't distinguish anything else.</div>
<div class="links">
<th>[[Small office|Saveroom]]</th>
<th>[[Move through hallway|SRcorridor1]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">Left hallway</div><div id="CBox"></div>
<<set $randomEnemy =random(2)>>
<<if $randomEnemy is 0>>
<<script>>
startBattle('lobotomizedPatient', 8);
<</script>>
<<elseif $randomEnemy is 1>>
<<script>>
startBattle('madPatient', 12);
<</script>>
<<elseif $randomEnemy is 2>>
<<script>>
startBattle('locoPatient', 10);
<</script>>
<</if>>
<<set $enemyPresent = false>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><<set $srcff = 0>>
<<goto "SRcorridor">>
<<set $srcff = 2>>
<<goto "SRcorridor">>
<div id="CBoxlight">
<div id="Ntext">The light from your flashlight illuminates the area, revealing the deteriorated walls and some abandoned furniture. The atmosphere feels slightly less threatening.</div>
<div class="links">
<th>[[Small office|Saveroom]]</th>
<th>[[Go to next hallway|SRcorridor1]]</th>
</div>
</div>
<div id="LocationName">Left hallway</div>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "SRcorridorenemy">>
<</if>> <div id="CBox">
<div id="Ntext">You rummage through the box and find a plastic bottle, opaque and unlabeled. The cloudy liquid inside looks dangerous. The strong chemical smell makes you step back for a moment. In the box, there are more similar jars, all with broken or crushed caps, as if hastily abandoned. You found <span style="color: #22b22e;">chemicals</span>.</div>
<div class="links">
<th>[[Take it|crateschem]]</th>
<th>[[Leave it|SRoom2]]</th>
</div>
<img id="event-image3" src="img/events/hospitalcrates.png">
</div><<script>>
// Define el widget de cuenta regresiva
Macro.add('countdown', {
handler: function () {
const duration = this.args[0] || 60; // Duración en segundos
const targetPassage = this.args[1] || 'NuevoPasaje'; // Pasaje al que redirigir
const countdownId = 'countdown'; // ID único para el temporizador
// Verifica si ya existe un temporizador activo
if (State.variables.countdownActive === true) {
// Si ya hay un temporizador activo, no hagas nada
return;
}
// Marca el temporizador como activo
State.variables.countdownActive = true;
// Verifica si el elemento de cuenta regresiva ya existe
let countdownContainer = document.getElementById(countdownId + '-container');
if (!countdownContainer) {
// Crea un contenedor para el cronómetro digital
countdownContainer = document.createElement('div');
countdownContainer.id = countdownId + '-container';
countdownContainer.style.position = 'fixed';
countdownContainer.style.top = '2%';
countdownContainer.style.left = '26%';
countdownContainer.style.zIndex = '1000';
// Crea el cronómetro digital (ahora más pequeño)
const digitalTimer = document.createElement('div');
digitalTimer.style.width = '80px'; // Reducido de 120px a 80px
digitalTimer.style.height = '30px'; // Reducido de 40px a 30px
digitalTimer.style.background = 'black';
digitalTimer.style.borderRadius = '3px'; // Reducido un poco
digitalTimer.style.border = '2px solid #444';
digitalTimer.style.boxShadow = '0 0 4px rgba(0,0,0,0.5)';
digitalTimer.style.padding = '2px';
digitalTimer.style.position = 'relative';
// Añade una pequeña "pantalla" para el cronómetro
const timerScreen = document.createElement('div');
timerScreen.style.width = '100%';
timerScreen.style.height = '100%';
timerScreen.style.background = '#222';
timerScreen.style.borderRadius = '2px';
timerScreen.style.boxShadow = 'inset 0 0 4px rgba(0,0,0,0.8)';
timerScreen.style.display = 'flex';
timerScreen.style.justifyContent = 'center';
timerScreen.style.alignItems = 'center';
digitalTimer.appendChild(timerScreen);
// Crea el elemento para mostrar los segundos
const secondsElement = document.createElement('div');
secondsElement.id = countdownId;
secondsElement.style.color = '#f00'; // Color rojo para los números digitales
secondsElement.style.fontSize = '20px'; // Reducido de 28px a 20px
secondsElement.style.fontWeight = 'bold';
secondsElement.style.fontFamily = 'monospace';
secondsElement.style.textShadow = '0 0 4px rgba(255,0,0,0.7)';
timerScreen.appendChild(secondsElement);
// Crea un separador
const separator = document.createElement('div');
separator.style.color = '#f00';
separator.style.fontSize = '20px'; // Reducido de 28px a 20px
separator.style.fontWeight = 'bold';
separator.style.fontFamily = 'monospace';
separator.style.textShadow = '0 0 4px rgba(255,0,0,0.7)';
separator.style.margin = '0 1px'; // Reducido margen
separator.textContent = '.';
timerScreen.appendChild(separator);
// Crea el elemento para mostrar los milisegundos
const msElement = document.createElement('div');
msElement.id = countdownId + '-ms';
msElement.style.color = '#f00';
msElement.style.fontSize = '20px'; // Reducido de 28px a 20px
msElement.style.fontWeight = 'bold';
msElement.style.fontFamily = 'monospace';
msElement.style.textShadow = '0 0 4px rgba(255,0,0,0.7)';
timerScreen.appendChild(msElement);
// Añade el cronómetro digital al contenedor
countdownContainer.appendChild(digitalTimer);
// Añade el contenedor al documento
document.body.appendChild(countdownContainer);
}
// Inicia el temporizador solo si no se ha iniciado antes
const startTimeKey = `countdownStartTime_${countdownId}`;
let startTime = State.variables[startTimeKey];
if (!startTime) {
startTime = Date.now();
State.variables[startTimeKey] = startTime;
}
// Función para actualizar la cuenta regresiva
const updateCountdown = () => {
const nowTime = Date.now();
const elapsed = (nowTime - startTime) / 1000; // Tiempo transcurrido en segundos (con decimales)
let remainingTime = Math.max(0, duration - elapsed);
// Separar segundos y milisegundos
const seconds = Math.floor(remainingTime);
const milliseconds = Math.floor((remainingTime - seconds) * 100); // Solo mostramos 2 dígitos de milisegundos
// Mostrar segundos y milisegundos
document.getElementById(countdownId).textContent = seconds;
document.getElementById(countdownId + '-ms').textContent = String(milliseconds).padStart(2, '0');
if (remainingTime <= 0) {
clearInterval(intervalId);
document.body.removeChild(document.getElementById(countdownId + '-container'));
Engine.play(targetPassage);
delete State.variables.countdownIntervalId;
delete State.variables[startTimeKey];
delete State.variables.countdownActive;
}
};
// Guarda el ID del temporizador en el estado
// Actualizamos cada 10ms para tener una cuenta precisa de milisegundos
const intervalId = setInterval(updateCountdown, 10);
State.variables.countdownIntervalId = intervalId;
// Actualiza la cuenta regresiva inmediatamente
updateCountdown();
}
});
// Define el widget para eliminar la cuenta regresiva
Macro.add('removecountdown', {
handler: function () {
const countdownContainer = document.getElementById('countdown-container');
if (countdownContainer) {
document.body.removeChild(countdownContainer);
}
// Limpia el temporizador si existe
let existingIntervalId = State.variables.countdownIntervalId;
if (existingIntervalId) {
clearInterval(existingIntervalId);
delete State.variables.countdownIntervalId;
const startTimeKey = `countdownStartTime_countdown`;
delete State.variables[startTimeKey];
delete State.variables.countdownActive;
}
}
});
<</script>><div id="CBox"></div>
<<script>>
startBattle('madPatient', 10);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><div id="CBox">
<div id="Ntext">The footsteps grow closer, heavy and clumsy, until they stop at the doorway.
In the dim light, you see his silhouette—a tall, filthy man with tattered clothing and a vacant expression, as if his mind is trapped in some dark corner of his own madness. In his hand, he grips a crude butcher’s knife, the metal dulled and stained.
He stands there, motionless, breathing erratically as his eyes scan the scene.
He doesn’t step inside. He just watches. As if his mind is struggling to process what’s in front of him.</div>
<div class="links">
<th>[[Shoot him|brokewindowfight2]]</th>
<th>[[Try to talk|brokewindowtalk2-2]]</th>
</div>
</div>
<<set $bwfight2 = 1>>
<div id="npc-container">
<img src="img/monsters/patients/madpatient2.png" style="
background-repeat: no-repeat;
background-size: cover;
width: 25em;
position: relative;
top: -2em;
right: 2em;
">
</div>
<<playMusic "music2" "media/music/none.mp3" volume:0.5>>
<<playMusic "music3" "media/music/none.mp3" volume:0.5>>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.5>>
<<script>>
window.HealthEventSystem.addEvent('E2', {
min: 0,
max: 10,
passage: 'E2',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><<set $bwfight2 = 0>>
<<goto "Camino-izquierda">><<set $bwfight2 = 2>>
<<set $bwinfight2 = true>>
<<set $patientcome = 0>>
<<goto "Saveroom">><div id="CBox">
<div id="Ntext">
<<switch visited()>>
<<case 1>>
The sound of the last gunshot echoes through the hallways like thunder, its deafening roar fading into the vast emptiness of the asylum. The patient’s body collapses heavily to the floor, but there’s no time to react.
<</switch>>
A sound shatters the silence. Rushed footsteps pound in the distance, accompanied by a low growl. The screech of a rusted door swinging open...</div>
<<say $Mc>>Shit, someone’s coming...<</say>>
<div class="links">
<th>[[Continue|patientcome]]</th>
</div>
</div>
<<set $patientcome = 1>>
<<script>>
setup.phoneSystem.addObjective(
"Find the doctor",
"Go back to the main hall and find Doctor Home.",
'main',
'enterQuest' // ID
);
<</script>>
<<SanityMessage "Main objective updated: Find the doctor">>
<<playMusic "music" "media/music/none.mp3" volume:0.5>>
<<playMusic "music2" "media/music/none.mp3" volume:0.5>><<countdown 20 "brokewindowtalk2">>
<<playMusic "music3" "media/music/alert.mp3" volume:0.12>>
<<goto "Saveroom">>
<div id="CBox">
<div id="Ntext">You take a deep breath, adrenaline still coursing through your body from the previous shot. You know that any wrong move could trigger another fight, and you've already drawn enough attention.</div>
<<say $Mc>>Listen... I don’t want to kill you. You don’t have to do this.<</say>>
<div id="Ntext">The man, motionless in the doorway, tilts his head with a spasmodic jerk. His eyes scan the room, lingering on the corpse at your feet. His breathing is uneven, ragged, and the chipped blade of his butcher knife catches the dim light of the room.
A guttural click escapes his throat, followed by a low, sickly chuckle. His fingers, clenched around the weapon’s handle, tremble with a mix of anxiety and perverse excitement.</div>
<<say $MadPatient>>You’re... pretty...<</say>>
<div id="Ntext">You take a step back as a gag rises in your throat and your stomach churns, triggered by a visceral revulsion.</div>
<div id="Pensamiento">Oh... fuck is another lobotomized rapist...</div>
<<say $Mc>>Stay back!<</say>>
<div id="Ntext">But the plea only excites him further. His grin stretches into something grotesque, yellowed teeth peeking through cracked lips.
Suddenly, his body convulses, and with a guttural roar, he lunges forward, raising the knife. </div>
<<say $MadPatient>>Mmm... This smell... Give me!<</say>>
<<say $Mc>>No time for talking now!<</say>>
<div class="links">
<th>[[Shoot him|brokewindowfight2-2]]</th>
</div>
</div>
<<set $bwfight2 = 1>>
<div id="npc-container">
<img src="img/monsters/patients/madpatient.png" style="
background-repeat: no-repeat;
background-size: cover;
width: 30em;
position: relative;
top: -2em;
">
</div><div id="CBox">
<<say $Mc>>Shit, this isn’t starting well.<</say>>
<div id="Pensamiento">Doesn’t matter, what's done is done. But something’s becoming clear: this place isn’t abandoned.</div>
<<say $Mc>>Even though it looks like it.<</say>>
<div id=Pensamiento>There are still people here, even if they’re barely human anymore. They don’t seem capable of thinking beyond their instincts, but they’re still victims of something, or someone. Probably Doctor Home is involved. This place is still alive, in some twisted way.</div>
<<say $Mc>>And I... I’m stuck in its mess<</say>>
<div class="links">
<th>[[Continue|Saveroom]]</th>
</div>
</div>
<<set $reflexionSR = true>><div id="CBox">
<div id="Ntext">The computer is on.</div>
<div class="links">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<th>[[Go back|io]]</th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<if $intro is true>>
<<playMusic "music" "media/music/pianosonata.mp3" volume:0.5>>
<<playMusic "music2" "media/music/none.mp3" volume:0.2>>
<<playMusic "music3" "media/music/none.mp3" volume:0.5>>
<<set $intro = false>>
<</if>><<if setup.lantern.isOn>>
<<goto "SRcorridor1Light">>
<<else>>
<div id="CBox">
<div id="Ntext">You stop in the middle of the hallway. Ahead of you, two open doors lead into dark rooms on either side. One to the left, the other to the right, both shrouded in an unsettling darkness.</div>
<div class="linksTwo">
<<if $leftroom1 isnot true>>
<th>[[Left Door|SDoor1]]</th>
<<else>>
<th>[[Left Room|SRoom1]]</th>
<</if>>\
<<if $leftroom2 isnot true>>
<th>[[Right Door|SDoor2]]</th>
<<else>>
<th>[[Right Room|SRoom2]]</th>
<</if>>\
</div>
<div class="links">
<th>[[Go to small office|SRcorridor]]</th>
<th>[[Go to next hallway|SRcorridor2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<<set $srhallway = true>>
<div id="LocationName">Left hallway</div>
<div id="CBoxlight">
<div id="Ntext">You stop in the middle of the hallway. Ahead of you, two open doors lead into dark rooms on either side. One to the left, the other to the right, both shrouded in an unsettling darkness.</div>
<div class="linksTwo">
<<if $leftroom1 isnot true>>
<th>[[Left Door|SDoor1]]</th>
<<else>>
<th>[[Left Room|SRoom1]]</th>
<</if>>\
<<if $leftroom2 isnot true>>
<th>[[Right Door|SDoor2]]</th>
<<else>>
<th>[[Right Room|SRoom2]]</th>
<</if>>\
</div>
<div class="links">
<th>[[Go to small office|SRcorridor]]</th>
<th>[[Go to next hallway|SRcorridor2]]</th>
</div>
</div>
<<set $enemyPresent = false>>
<div id="LocationName">Left hallway</div><<if setup.lantern.isOn>>
<<goto "SRcorridor2Light">>
<<else>>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You move forward through the pitch-black hallway, each step cautious on the unseen floor. The darkness is absolute, swallowing everything—except for a faint outline ahead. A door stands at the end of the corridor, close enough to reach.</div>
<div id="Pensamiento">At least there's a way forward…</div>
<<default>>
<div id="Ntext">You move forward through the pitch-black hallway, each step cautious on the unseen floor. The darkness is absolute, swallowing everything—except for a faint outline ahead. </div>
<</switch>>
<div class="linksTwo">
<<if $srdoorcheck isnot true>>
<th>[[Check door|SRCdoor]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to small office|SRcorridor1]]</th>
<<if $srdoorcheck is true>>
<th>[[Next hallway|Left Corridor]]</th>
<</if>>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<<set $srhallway2 = true>>
<div id="LocationName">Left hallway</div> <div id="CBoxlight">
<div id="Ntext">You stop at the end of the hallway. You see a door at the far end.</div>
<div class="linksTwo">
<<if $srdoorcheck isnot true>>
<th>[[Check door|SRCdoor]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to small office|SRcorridor1]]</th>
<<if $srdoorcheck is true>>
<th>[[Next corridor|Left Corridor]]</th>
<</if>>
</div>
</div>
<div id="LocationName">Left hallway</div>
<<set $srhallway2 = true>>
<<set $enemyPresent = false>>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "SRcorridor2enemy">>
<</if>>
<div id="CBox"></div>
<<set $randomEnemy =random(2)>>
<<if $randomEnemy is 0>>
<<script>>
startBattle('lobotomizedPatient', 8);
<</script>>
<<elseif $randomEnemy is 1>>
<<script>>
startBattle('madPatient', 10);
<</script>>
<<elseif $randomEnemy is 2>>
<<script>>
startBattle('locoPatient', 12);
<</script>>
<</if>>
<<set $enemyPresent = false>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<div id="CBox">
<div id="Ntext">At the end of the hallway, a door stands before you. The handle turns slightly... it seems unlocked.</div>
<div class="linksTwo">
<th>[[Open door|Left Corridor]]</th>
</div>
<div class="links">
<th>[[Back|SRcorridor2]]</th>
</div>
</div>
<<set $srdoorcheck = true>><div id="CBox">
<<say $Mc>>Okey I hear you.<</say>>
<<say $Franklin>>I was thinking about something I want to tell you.<</say>>
<<say $Mc>>Yeah? Spit it out.<</say>>
<<say $Franklin>>If you manage to get someone out of this hellhole alive, you can bring them to my cabin. It’s safe, nobody from the hospital comes around here… they’ll be fine.<</say>>
<div id="Pensamiento">This old man is well aware that they only bring women here.</div>
<<say $Mc>>"Someone," huh? …Of course, you mean one of those kidnapped girls, right?<</say>>
<<say $Franklin>>I'm just saying, if you need a place, it's there. No strings attached.<</say>>
<<say $Mc>>Sure, sure… And I bet the "good Samaritan" isn’t expecting anything in return.<</say>>
<div id="Ntext">Franklin can’t help but smirk slightly.</div>
<<say $Franklin>>Hey, don’t get me wrong. I’m no hero, but I’m not a monster either. I’m just offering help… and if the company happens to be pleasant, what’s the harm?<</say>>
<<say $Mc>>Whatever you say, Franklin. But if I do bring someone there, you better behave.<</say>>
<<say $Franklin>>Oh, come on! I’m not that bad.<</say>>
<div id="Pensamiento">I’d never trust a guy like him, especially when he says, "I’m not that bad." But maybe… I don’t have a choice.</div>
<<say $Mc>>We’ll see… First, I have to find them.<</say>>
<<say $Franklin>>Yeah… good luck with that. You’re gonna need it.<</say>>
<div class="links">
<th>[[Bye|Cabin]]</th>
</div>
</div>
<<set $safaplacetalk = true>>
<<set $SafePlace = true>>
<<include "Frank">><<if setup.lantern.isOn>>
<<goto "SRoom2Light">>
<<else>>
<div id="CBox">
<<if $fapperisgone is true>>
<div id="Ntext">The darkness inside the room is absolute. You can't see.</div>
<<else>>
<<if $fapenemy is true>>
<div id="Ntext">The darkness is complete, and you continue hearing the gasps; the man keeps going.</div>
<<say $Mc>>Better get out of here.<</say>>
<<else>>
<div id="Ntext">As you take the first step into the room, a dense darkness engulfs you completely. There’s no trace of light—just an oppressive void that seems to swallow every last flicker of hope. Your eyes don’t adjust. There’s nothing to see.
Then, a sound breaks the silence: low, ragged breathing, irregular and skin-crawling. It comes from somewhere in the darkness, far too close for comfort. The breathing doesn’t sound normal. It’s coarse, laced with an unsettling tension you can’t quite identify.</div>
<div id="Pensamiento">I can’t move forward blindly.</div>
<<say $Mc>>I’m not taking another step without turning on the flashlight. Whatever that is… I don’t want to trip over it.<</say>>
<</if>>
<</if>>
<div class="links">
<th>[[Exit|SRcorridor1]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>>
<<set $leftroom2 = true>><<if setup.lantern.isOn>>
<<goto "SRoom1Light">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness inside the room is absolute. You reach out your hand in front of your face, hoping to see at least an outline, but there’s nothing. The blackness is so deep it feels heavy, as if the void itself surrounds you—oppressive, suffocating.</div>
<div class="links">
<th>[[Exit|SRcorridor1]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>>
<<set $leftroom1 = true>><div id="CBoxlight">
<div id="Ntext">As you step into the room, the beam of your flashlight cuts through the darkness, revealing worn walls and a floor coated in dust. In one corner, an old, half-open cabinet stands out, its wood splintered and covered in strange marks.</div>
<div class="linksTwo">
<th>[[Check cabinet|Srcabinet]]</th>
</div>
<div class="links">
<th>[[Exit|SRcorridor1]]</th>
</div>
</div>
<<if $fapperisgone isnot true>>
<<goto "SRfapenemy">>
<<else>>
<div id="CBoxlight">
<div id="Ntext">The floor is covered in dark stains, the result of the struggle. The room, once oppressive, is now wrapped in an unsettling silence, broken only by your breathing.</div>
<<switch visited()>>
<<case 1>>
<div id="Pensamiento">I don't know if this is a relief or a nightmare that keeps chasing me.</div>
<</switch>>
<<if $srcrates isnot true>>
<div class="linksTwo">
<th>[[Search in the crates|cratesearch]]</th>
</div>
<</if>>
<div class="links">
<th>[[Exit|SRcorridor1]]</th>
</div>
</div>
<</if>>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you rummage through the cabinet, your fingers stop at the touch of a small bottle. You find <span style="color: #22b22e;">2 antidepressant pills</span>. They’re small, white, and seem to have been there for a long time.</div>
<<say $Mc>>It’s not much, but it could help.<</say>>
<<script>>
addSanityItem('AntiDepressants',2)
<</script>>
<<default>>
<div id="Ntext">The shelves are empty, only a few crumpled papers and accumulated dust remain. Everything has been looted.</div>
<</switch>>
<div class="linksTwo">
<th>[[Get inside|SRLocker]]</th>
</div>
<div class="links">
<th>[[Back|SRoom1]]</th>
</div>
</div>
<div id="CBoxlight">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you enter the room, the beam of the flashlight reveals a disturbing scene. The man is there, in a corner on the other side of the room, masturbating without the slightest reaction to your presence. The flashlight's light seems to have no effect on him; he continues as if you weren’t there.</div>
<<say $Mc>>I can’t believe what I’m seeing… What’s wrong with these people?<</say>>
<div id="Pensamiento">They seem lobotomized, but for what purpose? Uncontrolled reproduction? </div>
<<say $Mc>>This is just absurd...<</say>>
<<default>>
<div id="Ntext">The man is there, masturbating without the slightest reaction to your presence. The flashlight's light seems to have no effect on him; he continues as if you weren’t there.</div>
<<say $Mc>>Why the hell did I come back here?<</say>>
<</switch>>
<div class="linksTwo">
<th>[[Interrupt him|SRfapenemy2]]</th>
</div>
<div class="links">
<th>[[Exit|SRcorridor1]]</th>
</div>
</div>
<<set $fapenemy = true>>
<div id="npc-container">
<img src="img/monsters/patients/patient1.png">
</div>
<div id="CBox">
<div id="Ntext">You approach the man cautiously, knowing it's unlikely he'll give you a coherent response. The light from the lantern illuminates his empty face, and his eyes barely seem to register your presence. The sound of his breathing and the patter of your steps are the only things you can hear in the room.</div>
<<say $Mc>>Who did this to you? Do you remember anything? Was it Doctor Home?<</say>>
<div id="Ntext">The man flinches at being interrupted, letting out a disoriented scream.</div>
<<say $LbPatient>>No! No... no! Aah!<</say>>
<div id="Ntext">Then, his eyes fixate on you. He watches you, as if finally noticing your presence. A strange gleam appears in his gaze.</div>
<<say $LbPatient>>You... real?<</say>>
<div id="Pensamiento">This guy can't think straight... He's completely lost. He's not going to know anything useful. But... what have they done to him? And why?</div>
<<say $Mc>>Yes, I'm real...<</say>>
<div id="Ntext">Before you can react, the man attacks, his movements erratic but filled with a sudden and violent energy.</div>
<<say $LbPatient>>Give me! Be mine!<</say>>
<<say $Mc>>Fuck!<</say>>
<div class="links">
<th>[[Shoot|SRFenemy]]</th>
</div>
</div>
<<set $Sroom2 = 1>>
<div id="npc-container">
<img src="img/monsters/patients/patient1.png">
</div>
<<script>>
window.HealthEventSystem.addEvent('E5', {
min: 0,
max: 10,
passage: 'E5',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><div id="CBox"></div>
<<script>>
startBattle('fappingPatient', 7);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<div id="CBox">
<div id="Ntext">The guy doesn't chase you and returns to his corner.</div>
<div class="links">
<th>[[Continue|SRcorridor1]]</th>
</div>
</div>
<<set $Sroom2 = 0>><<set $Sroom2 = 2>>
<<set $fapperisgone = true>>
<<goto "SRoom2">>
<<nobr>>
<<textbox "$cheatcodeb" "">>
<<button "Enter Code">>
<<script>>
var cheatcodeb = SugarCube.State.variables.cheatcodeb.trim().toLowerCase();
// Función helper para añadir múltiples mejoras de armas
function addMultipleUpgrades(upgrades) {
upgrades.forEach(upgrade => window.addWeaponUpgrade(upgrade));
}
// Función helper para añadir múltiples municiones
function addMultipleAmmo(ammoTypes) {
ammoTypes.forEach(ammo => window.addAmmo(ammo.type, ammo.amount));
}
if (cheatcodeb === "getmerich") {
SugarCube.State.variables.McMoney += 1000000;
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmeduracell") {
window.addDuracellBattery(20);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmepills") {
addSanityItem('AntiDepressants', 10);
addMedkit(5);
addAntiBiotics(5);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmeshotgun") {
SugarCube.Engine.play("chetshotgun");
}
else if (cheatcodeb === "getmerifle") {
window.addWeapon('Rifle');
}
else if (cheatcodeb === "getmeammopistol") {
// Añadir munición de pistola
addMultipleAmmo([
{type: '9mm', amount: 50},
{type: 'expansive', amount: 50},
{type: 'incendiary', amount: 30}
]);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmeammoshotgun") {
// Añadir munición de escopeta
addMultipleAmmo([
{type: 'shells', amount: 50},
{type: 'slug', amount: 30},
{type: 'dragon', amount: 30}
]);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmeammorifle") {
// Añadir munición de rifle
addMultipleAmmo([
{type: 'rifle_rounds', amount: 50},
{type: 'piercing', amount: 25},
{type: 'tracer', amount: 20}
]);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmepistolupgrades") {
// Mejoras de pistola
addMultipleUpgrades([
'pistolAccuracy',
'pistolRecoil',
'pistolMagazine',
'pistolBarrel'
]);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmeshotgunupgrades") {
// Mejoras de escopeta
addMultipleUpgrades([
'shotgunChoke',
'shotgunMagazine',
'shotgunPump',
'shotgunBarrel'
]);
SugarCube.Engine.play("Vendingmachine");
}
else if (cheatcodeb === "getmerifleupgrades") {
// Mejoras de rifle
addMultipleUpgrades([
'rifleBipod',
'rifleMagazine',
'rifleScope',
'rifleBarrel'
]);
SugarCube.Engine.play("Vendingmachine");
}
else {
// Código inválido
SugarCube.Engine.play("Error");
}
<</script>>
<</button>>
<</nobr>><div id="CBox">
<div id="Ntext">An old vending machine, the glass is so dirty that you can barely see anything, although it seems like there's still something inside</div>
<img id="event-image" src="img/vm.png">
<div id="sup">
<a href="https://www.patreon.com/Rustlergame" target="_blank" style="display: inline-block; background-color: #F96854; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; font-weight: bold;">Support me on Patreon</a>
</div>
<div class="linksTwo">
<<include "Passage">>
</div>\
<div class="links">
<th>[[Back|shed]]</th>
</div>
</div>
<style>
button {
cursor: pointer;
background-color: #3e3423;
border: 1px solid #634d23;
color: #d9c27e;
line-height: normal;
width: fit-content;
height: fit-content;
padding: 10px;
border-radius: 5px;
-webkit-transition-duration: .2s;
-o-transition-duration: .2s;
transition-duration: .2s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
button:hover {
text-decoration: none;
color: #e0b34d;
text-shadow: 0 0 10px rgba(255, 191, 4, 0.7), 0 0 20px rgba(0, 0, 0, 0.5);
background-color: #89163c;
border: 1px solid #634d23;
}
input, select, textarea {
position: absolute;
top: -6em;
color: #eee;
background-color: #0013276b;
border: 1px solid #ffd800;
padding: .4em;
width: 32em;
height: 2em;
}
html[data-outlines] input:focus, html[data-outlines] select:focus, html[data-outlines] textarea:focus, input:hover, select:hover, textarea:hover {
background-color: #00160b75;
border-color: #ffd800;
color: green;
}
</style><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you enter the shooting range, the few agents present glance at you. Without a word, they quickly gather their things and leave in silence, avoiding your gaze. The echo of their hurried footsteps fades, leaving only the faint hum of the flickering fluorescent lights. The scent of old gunpowder and cold metal lingers in the air, both familiar and distant at the same time.
You stand still for a moment, observing the empty booths and the targets riddled with dozens of bullet holes from the past.</div>
<div id="Pensamiento">I could shoot a little before finishing all of this.</div>
<<default>>
<div id="Ntext">No one is here.</div>
<</switch>>
<div class="linksTwo">
<th>[[Training shoot|TrainingShoot]]</th>
</div>
<div class="links">
<th>[[Exit|ci2]]</th>
</div>
</div>
<<set $practique = 1>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<div id="CBox"></div>
<<setLighting 100>>
<<script>>
startBattle('practiceTarget', 15);
<</script>>
<<if $FightTutorial isnot true>>
<<set $FightTutorial = true>>
<div id="combatTutorialModal" class="modal">
<div class="modal-content">
<span class="close-button" onclick="document.getElementById('combatTutorialModal').style.display='none'">×</span>
<h2>Combat Tutorial with Firearms and Melee Weapons</h2>
<p><strong>Goal:</strong> Defeat all enemies without dying.</p>
<div class="modal-section">
<div class="modal-column">
<strong>Controls:</strong>
<ul>
<li><strong>Firearms:</strong>
<ul>
<li>Equip a firearm (such as a pistol, shotgun, or rifle) and the corresponding ammunition to shoot.</li>
<li>Press the "Shoot" button. If facing multiple enemies at once, press the "Shoot" button and then select the enemy card you want to attack.</li>
</ul>
</li>
<li><strong>Melee Weapons: (Next Update)</strong>
<ul>
<li>Equip a melee weapon (such as a knife, bat, or machete) to perform close-range attacks when enemies are close enough.</li>
<li><strong>Note:</strong> Equipping a melee weapon will automatically unequip any equipped firearm, and vice versa.</li>
<li>Damage varies depending on the melee weapon used.</li>
</ul>
</li>
<li>Use the "Back Away" button to put some distance between you and the enemy to buy more time, or use the "Approach" button to get closer to the enemy and use melee weapons effectively. And use "Run Away" button to escape from the fight.</li>
</ul>
</div>
<div class="modal-column">
<strong>Additional Tips:</strong>
<ul>
<li>Different types of ammunition can deal extra damage with firearms.</li>
<li>You can find weapon modifications that increase damage or accuracy.</li>
<li>Different rooms and hallways have various types of lighting, which affect your accuracy. Use the flashlight (when you have the flashlight) in dark places to gain an accuracy bonus.</li>
</ul>
</div>
</div>
<div style="text-align: center; margin-top: 20px;">
<button id="continueButton" class="continue-button">Continue</button>
</div>
</div>
</div>
<<script>>
$(document).ready(function () {
$("#combatTutorialModal").css("display", "block");
$(document).off("click", "#continueButton, .close-button").on("click", "#continueButton, .close-button", function () {
$("#combatTutorialModal").css("display", "none");
});
});
<</script>>
<</if>>
<style>
p {
text-align: center;
color: #e9e9e9;
}
b, strong {
font-weight: 700;
color: #d3bd7b;
}
.modal {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
justify-content: center;
align-items: center;
margin: 0;
padding: 0;
}
.modal-content {
background: rgba(20, 20, 20, 0.9);
border: 3px solid #634d23;
border-radius: 5px;
padding: 20px;
max-width: 660px;
max-height: 80vh;
overflow-y: auto;
color: #d9c27e;
font-family: 'Trajan Pro', 'Times New Roman', serif;
position: relative;
margin: auto;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.modal-content h2 {
text-align: center;
color: #ffcc00;
margin-bottom: 0px;
position: relative;
top: -1em;
}
.close-button {
color: #ffcc00;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
position: relative;
top: -1.7em;
}
.modal-section {
display: flex;
flex-wrap: wrap;
}
.modal-column {
flex: 1;
min-width: 250px;
padding: 38px;
margin-bottom: -5em;
margin-top: -3em;
color: #e9e9e9;
}
.modal-content ul {
list-style-type: disc;
padding-left: 20px;
line-height: 1.6;
}
.continue-button {
padding: 10px 20px;
background-color: #3e3423;
color: #d9c27e;
border: 1px solid #634d23;
border-radius: 3px;
cursor: pointer;
font-family: 'Trajan Pro', 'Times New Roman', serif;
font-size: 16px;
transition: all 0.2s;
text-shadow: 1px 1px 1px #000;
}
.continue-button:hover {
background-color: #3e3423;
}
</style><<goto "Shooting range">>
<<set $practique = 2>><<goto "Shooting range">>
<<set $practique = 0>><div id="CBox">
<div id="Ntext">You approach the table in search of another target, but you only find scraps of torn-up targets and crumpled papers, too damaged to use. You sift through the mess, hoping to find something usable, but there's nothing. Only emptiness and the echo of your own breathing fill the room.</div>
<div id="Pensamiento">I guess it's time to move on...</div>
<div class="links">
<th>[[Back|Shooting range]]</th>
</div>
</div><<set $srcsf = 0>>
<<goto "SRcorridor2">><div id="CBox">
<div id="Ntext">You enter the code, but nothing happens.</div>
<div class="links">
<th>[[Back|shed]]</th>
</div>
</div><div id="CBox"></div>
<<script>>
startBattle('madPatient', 6);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<playMusic "music3" "media/music/none.mp3" volume:0.5>>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.5>> <div id="CBoxlight">
<div id="Ntext">The passage is completely dark. The light from your flashlight illuminates the path ahead, but everything else remains swallowed by shadows. You can't make out anything beyond it.
Suddenly, something moves in the darkness. Drawn to the glow of your flashlight, a man in a patient’s gown emerges from the shadows and lunges at you.</div>
<div class="links">
<th>[[Shoot|SRCfight]]</th>
</div>
<<set $srcff =1>>
<<script>>
window.HealthEventSystem.addEvent('E3', {
min: 0,
max: 10,
passage: 'E3',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>> <div id="CBoxlight">
<div id="Ntext">Something is moving in the darkness, a man in a patient’s gown stepping out from the shadows attracted by the light of your flashlight.</div>
<div class="links">
<th>[[Shoot|SRCfight2]]</th>
</div>
<<set $srcsf = 1>>
<<script>>
window.HealthEventSystem.addEvent('E4', {
min: 0,
max: 10,
passage: 'E4',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">The fresh air of the forest mixes with the crunching of dry leaves beneath your boots. You move cautiously between the trees, each step taking you deeper into the darkness of the place. The shadows of the bare branches stretch long, creating strange shapes that seem to move on their own. The stillness is unsettling, but the need to keep moving pushes you forward.
Suddenly, something on the ground catches your attention. You crouch down, carefully observing the tracks that carve through the damp mud. They're fresh, deep, with sharp edges. They don't seem to belong to any common animal you've seen before. There's something odd about their shape, as if they're larger than what a normal animal would leave behind. The tracks seem to lead towards a denser part of the forest, where light is absent, almost as if the darkness swallows it whole.
You stop for a moment, your mind beginning to make connections.</div>
<div id="Pensamiento">What kind of animal leaves such large and perfectly marked tracks? Maybe a wolf... but these tracks aren't normal size. Perhaps something else, something bigger...</div>
<<say $Mc>>What am I getting myself into here?<</say>>
<div id="Ntext">Thinking about it causes a slight pressure in your chest, but you keep your gaze on the trail, following the tracks.
The sound of the wind rustling the leaves is now a distant echo. Each step seems to bring you closer to something, but you can’t shake the question: Closer to what exactly?</div>
<<default>>
<div id="Ntext">The tracks are still there, fresh and deep, as if the wolf passed by just moments ago. Their sharp edges make it clear they are recent, and the trail seems to lead deeper into the darker part of the forest. The sense that something is still nearby lingers, and with every step you take, you’re reminded that you're not alone. The tracks, so large and menacing, only confirm that the threat continues to stalk in the shadows.</div>
<</switch>>
<div class="linksTwo">
<th>[[Follow tracks|ExploreCave2]]</th>
</div>
<div class="links">
<th>[[Back to the path|Forest]]</th>
</div>
</div><<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You barely take a step off the path when the crunch of branches makes you spin around. Out of the shadows, two wolves appear, growling with their fangs bared. Their eyes gleam with a wild hunger as they circle you, their bodies tense and ready to pounce.</div>
<<say $Mc>>Ohh, shit!<</say>>
<div class="links">
<th>[[Fight|ForestBattle2]]</th>
</div>
</div>
<<timed 9s>>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 9s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<<default>>
<div id="CBox">
<div id="Ntext">Two fierce wolf approaches, baring its sharp teeth. It lets out a growl and lunges at you. The danger is imminent, and you must prepare to fight.</div>
<<set $Randomcoment = random(3)>>
<<if $Randomcoment gte 2>>
<<say $Mc>>Shit!<</say>>
<</if>>
<div class="links">
<th>[[Fight|ForestBattle2]]</th>
</div>
</div>
<<timed 2s>>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<div id="npc-container">
<img src="img/monsters/wolf.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 2s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>>
<</switch>>
<<set $Fwolf = 1>><div id="CBox"></div>
<<set $RandomWolf = random(10)>>
<<if $RandomWolf gte 0>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<<script>>
startBattle('normalWolf', 18);
<</script>>
<<elseif $RandomWolf gt 5>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<<script>>
startBattle('normalWolf', 20);
<</script>>
<<elseif $RandomWolf gt 8>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<<script>>
startBattle('strongWolf', 20);
<</script>>
<</if>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><div id="CBox">
<div id="Ntext">After what feels like an eternity, you arrive at the entrance of a cave. The air here is cooler, the faint smell of damp earth and something darker lingering in the stillness. The trees part to reveal the opening, a jagged maw in the side of the hill. The ground near the entrance is marked with deep paw prints, larger and more twisted than any wolf's track you've seen before.
A low growl echoes from inside, a sound that doesn’t belong to any creature you’ve encountered. It resonates through the cave’s mouth, sending a chill down your spine. You hesitate, your breath catching in your throat. The hairs on the back of your neck stand up as the growl grows louder, more distinct.</div>
<div class="linksTwo">
<th>[[Enter in the cave|ForestCave]]</th>
</div>
<div class="links">
<th>[[Back to the path|Forest]]</th>
</div>
</div>
<<set $Cave = 1>>
<div id="LocationName">Cave in the forest (entrance)</div><div id="CBox">
<div id="Ntext">Just as you approach the entrance to the cave, a howl shatters the silence of the night, a wild cry that chills you to the core. The sound grows louder, clearer, until you can hear the crunch of dry leaves beneath heavy, purposeful footsteps. From the shadows, two figures emerge, their eyes gleaming with deadly intensity. They move with unsettling agility, as if they know you’ve seen them. There’s no doubt—they’ve come for you.
Before you can react, one of the wolves lets out a low growl, while the other steps forward, locking eyes with you. In the blink of an eye, both of them lunge toward you, their razor-sharp teeth gleaming under the moonlight. The danger is imminent, and you have no choice but to prepare for the attack.</div>
<<say $Mc>>Fuck!<</say>>
<div class="links">
<th>[[Shoot|caveShoot]]</th>
</div>
</div>
<<set $cavefight = 1>>
<<timed 2s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>><div id="CBox">
<<if $SafePlaceCave isnot true>>
<div id="Ntext">You stand at the entrance of the cave, a dark fissure in the rock exhaling cold, heavy air. The silence is almost absolute, broken only by the wind whistling through the stones. Something inside seems to be watching you, waiting.</div>
<<else>>
<div id="Ntext">You stand at the entrance of the cave, a dark fissure in the rock exhaling cold, heavy air. The silence is almost absolute, broken only by the wind whistling through the stones.</div>
<</if>>
<div class="linksTwo">
<<if $cavefight is 2>>
<<if setup.lantern.isOn>>
<th>[[Enter in the cave|Cavelight]]</th>
<<else>>
<th>[[Enter in the cave|CaveNoenter]]</th>
<</if>>
<<else>>
<th>[[Enter in the cave|ForestCave]]</th>
<</if>>
</div>
<div class="links">
<th>[[Back to path|Forest]]</th>
</div>
</div>
<div id="LocationName">Cave in the forest (entrance)</div>
<<if setup.lantern.isOn>>
<<goto "Cavelight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness inside the cave is suffocating, but in the distance, a faint glow marks the exit. Without your flashlight, you have no choice but to move blindly, guided only by the dim light. Each step echoes in the silence until you finally cross the threshold, leaving the cavern behind and stepping back into the open air.</div>
<div class="links">
<th>[[Exit cave|Caveoutside]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>>
<div id="LocationName">Cave in the forest</div><div id="CBox"></div>
<<setLighting 50>>
<<script>>
startBattle(
['normalWolf', 'strongWolf'],
[20, 30]
);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<playSound "wolf2" "media/sounds/wolves-howl.mp3" volume:0.5>>
<<if $FightTutorial isnot true>>
<<set $FightTutorial = true>>
<div id="combatTutorialModal" class="modal">
<div class="modal-content">
<span class="close-button" onclick="document.getElementById('combatTutorialModal').style.display='none'">×</span>
<h2>Combat Tutorial with Firearms and Melee Weapons</h2>
<p><strong>Goal:</strong> Defeat all enemies without dying.</p>
<div class="modal-section">
<div class="modal-column">
<strong>Controls:</strong>
<ul>
<li><strong>Firearms:</strong>
<ul>
<li>Equip a firearm (such as a pistol, shotgun, or rifle) and the corresponding ammunition to shoot.</li>
<li>Press the "Shoot" button. If facing multiple enemies at once, press the "Shoot" button and then select the enemy card you want to attack.</li>
</ul>
</li>
<li><strong>Melee Weapons: (Next Update)</strong>
<ul>
<li>Equip a melee weapon (such as a knife, bat, or machete) to perform close-range attacks when enemies are close enough.</li>
<li><strong>Note:</strong> Equipping a melee weapon will automatically unequip any equipped firearm, and vice versa.</li>
<li>Damage varies depending on the melee weapon used.</li>
</ul>
</li>
<li>Use the "Back Away" button to put some distance between you and the enemy to buy more time, or use the "Approach" button to get closer to the enemy and use melee weapons effectively. And use "Run Away" button to escape from the fight.</li>
</ul>
</div>
<div class="modal-column">
<strong>Additional Tips:</strong>
<ul>
<li>Different types of ammunition can deal extra damage with firearms.</li>
<li>You can find weapon modifications that increase damage or accuracy.</li>
<li>Different rooms and hallways have various types of lighting, which affect your accuracy. Use the flashlight in dark places to gain an accuracy bonus.</li>
</ul>
</div>
</div>
<div style="text-align: center; margin-top: 20px;">
<button id="continueButton" class="continue-button">Continue</button>
</div>
</div>
</div>
<<script>>
$(document).ready(function () {
$("#combatTutorialModal").css("display", "block");
$(document).off("click", "#continueButton, .close-button").on("click", "#continueButton, .close-button", function () {
$("#combatTutorialModal").css("display", "none");
});
});
<</script>>
<</if>>
<style>
p {
text-align: center;
color: #e9e9e9;
}
b, strong {
font-weight: 700;
color: #d3bd7b;
}
.modal {
position: fixed;
z-index: 9999;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
justify-content: center;
align-items: center;
margin: 0;
padding: 0;
}
.modal-content {
background: rgba(20, 20, 20, 0.9);
border: 3px solid #634d23;
border-radius: 5px;
padding: 20px;
max-width: 660px;
max-height: 80vh;
overflow-y: auto;
color: #d9c27e;
font-family: 'Trajan Pro', 'Times New Roman', serif;
position: relative;
margin: auto;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.modal-content h2 {
text-align: center;
color: #ffcc00;
margin-bottom: 0px;
position: relative;
top: -1em;
}
.close-button {
color: #ffcc00;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
position: relative;
top: -1.7em;
}
.modal-section {
display: flex;
flex-wrap: wrap;
}
.modal-column {
flex: 1;
min-width: 250px;
padding: 38px;
margin-bottom: -5em;
margin-top: -3em;
color: #e9e9e9;
}
.modal-content ul {
list-style-type: disc;
padding-left: 20px;
line-height: 1.6;
}
.continue-button {
padding: 10px 20px;
background-color: #3e3423;
color: #d9c27e;
border: 1px solid #634d23;
border-radius: 3px;
cursor: pointer;
font-family: 'Trajan Pro', 'Times New Roman', serif;
font-size: 16px;
transition: all 0.2s;
text-shadow: 1px 1px 1px #000;
}
.continue-button:hover {
background-color: #3e3423;
}
</style><<set $cavefight = 0>>
<<goto "Forest">><<set $cavefight = 2>>
<<goto "Caveoutside">><div id="CBoxlight">
<<if $safecave isnot true>>
<div id="Ntext">The beam of your flashlight slices through the darkness like a knife. Behind you, the exit flickers faintly, a distant promise. But to your right, a narrow path vanishes into the blackness, leading deeper into the cave.</div>
<<else>>
<div id="Ntext">The path continues into the darkness. The air feels thicker now, but everything remains still, with no sound or movement.</div>
<</if>>
<div class="links">
<th>[[Go through the cave|Cave2]]</th>
<th>[[Exit cave|Caveoutside]]</th>
</div>
</div>
<div id="LocationName">Cave in the forest</div><<if setup.lantern.isOn>>
<<goto "Cave2light">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness inside the cave is suffocating, but in the distance, a faint glow marks the exit. Without your flashlight, you have no choice but to move blindly, guided only by the dim light. Each step echoes in the silence until you finally cross the threshold, leaving the cavern behind and stepping back into the open air.</div>
<div class="links">
<th>[[Go to exit|Caveoutside]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>>
<div id="LocationName">Cave in the forest</div><div id="CBoxlight">
<<if $safecave isnot true>>
<div id="Ntext">The passage narrows, and moisture clings to every surface. The beam of your flashlight barely reveals blurred outlines in the dim light. You move forward silently, the distant howls of wolves echoing through the cave.</div>
<<else>>
<div id="Ntext">The passage narrows as you move forward. The weight of silence lingers, but there’s an odd stillness, as if the cave itself has settled into a quiet that wasn’t there before.</div>
<</if>>
<div class="links">
<th>[[Continue through the cave|Cave3]]</th>
<th>[[Go to exit|Caveoutside]]</th>
</div>
</div>
<<if $wolfcave isnot 2>>
<<goto "wolfcave">>
<</if>>
<div id="LocationName">Cave in the forest</div><<if setup.lantern.isOn>>
<<goto "Cave3light">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness inside the cave is suffocating, but in the distance, a faint glow marks the exit. Without your flashlight, you have no choice but to move blindly, guided only by the dim light. Each step echoes in the silence until you finally cross the threshold, leaving the cavern behind and stepping back into the open air.</div>
<div class="links">
<th>[[Go to exit|Caveoutside]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>>
<div id="LocationName">Cave in the forest</div><div id="CBox">
<div id="Ntext">The air inside the cave is dense and humid. The dim light of your flashlight barely cuts through the darkness, casting irregular shadows on the rocky walls. You take a step forward, then a low, menacing growl shatters the silence.</div>
<div id="Pensamiento">Why the hell did I come here?</div>
<div id="Ntext">Your muscles tense. You turn the flashlight, and the beam reveals two silhouettes in the darkness—wolves. Their eyes gleam with a hungry glint, their slightly open jaws exposing sharp, yellowed fangs. One of them moves forward slowly, its body tense, ready to strike. The other circles around, trying to flank you.</div>
<<say $Mc>>Damn it!<</say>>
<div id="Ntext">You don’t have time to think. The first one leaps with a fierce snarl.</div>
<div class="links">
<th>[[Shoot|cavebattle]]</th>
</div>
</div>
<<timed 7s>>
<div id="npc-container">
<img src="img/monsters/twowolves.png" style="
width: 100%;
height: 100%;
position: absolute;
top: 1px;
right: 1px;
border-radius: 10px;
">
</div>
<</timed>>
<<timed 2s>>
<<playSound "wolf1" "media/sounds/wolf-howl.mp3" volume:0.5>>
<</timed>>
<style>
#npc-container {
position: fixed;
top: 28em;
right: 25px;
width: 530px;
height: 480px;
border-radius: 10px;
overflow: hidden;
}
#CBox {
position: absolute;
top: 0%;
left: 50%;
transform: translateX(-50%);
padding: 2.5em 5.5em;
width: 98%;
max-width: 110em;
max-height: 93vh;
min-height: 93vh;
opacity: 0.6;
animation: fadeInBox 1.2s forwards;
animation-delay: 0.3s;
display: grid;
text-align: center;
overflow-y: auto;
background: radial-gradient(circle at center, rgb(255 230 186 / 12%) 0%, rgb(0 0 0 / 10%) 70%), #1717174a;
border-radius: 12px;
justify-content: center;
}
</style>
<<set $wolfcave = 1>><<script>>
startBattle(
['normalWolf', 'strongWolf'],
[20, 30]
);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<playSound "wolf2" "media/sounds/wolves-howl.mp3" volume:0.5>>
<div id="CBox">
<div id="Ntext">You barely manage to escape the wolves, adrenaline fueling your every step. They don’t pursue you—instead, they remain at the cave’s entrance, standing their ground, as if warning you to never return.</div>
<div class="links">
<th>[[Continue|Caveoutside]]</th>
</div>
</div>
<<set $wolfcave = 0>><<set $wolfcave = 2>>
<<goto "Cave2">><div id="CBoxlight">
<<if $safecave isnot true>>
<div id="Ntext">The path grows darker, the air thick with the smell of damp earth. In the distance, you hear the rustling of something large moving, but nothing comes into view.</div>
<<else>>
<div id="Ntext">The cave feels different now. The path ahead is clear, the ominous sounds have faded.</div>
<</if>>
<div class="links">
<th>[[Go through the cave|Cave4]]</th>
<th>[[Go to exit|Cave2]]</th>
</div>
</div>
<div id="LocationName">Cave in the forest</div><div id="CBox">
<div id="Ntext">The cave opens into a wider space, where the air feels cooler and the atmosphere calmer. A small pool of crystal-clear water reflects the shadows dancing on the rocky walls. The sound of your footsteps fades into the silence, while the water barely stirs, adding an unexpected sense of calm to the place.</div>
<div class="links">
<th>[[Go to exit|Caveoutside]]</th>
</div>
</div>
<<if $safecave isnot true>>
<<goto "diabolicwolfcave">>
<</if>>
<div id="LocationName">Cave in the forest</div><div id="CBox">
<div id="Ntext">The silence of the cave is shattered by a guttural sound, a low, deep growl that echoes off the rocky walls.
From the darkest shadow, a silhouette begins to emerge. First, two glowing red eyes pierce the gloom, locked onto you with an inhuman intensity. Then, the massive body advances, its blackened fur seeming to writhe with the very darkness that clings to it.
Its breath is heavy, each exhalation leaving a trail of mist in the cave’s freezing air. Its claws dig into the damp rock with every step, and an unnatural aura surrounds it, distorting the moonlight filtering through the crack above.</div>
<<say $Mc>>What… the hell is that? Oh my god! A... werewolf?<</say>>
<div id="Pensamiento">What the... is that real?</div>
<div id="Pensamiento">Your hand instinctively grips your weapon, all your senses tell you that the beast is real.</div>
<div id="Pensamiento">This isn’t a normal beast… </div>
<<say $Mc>>How can this thing even exist?<</say>>
<div id="Ntext">Your breathing quickens. Your muscles tense.
And the werewolf advances.</div>
<div class="links">
<th>[[Shoot|cavebattle2]]</th>
</div>
</div>
<<timed 12s>>
<div id="npc-container">
<img src="img/monsters/werewolf.png">
</div>
<</timed>>
<<set $diabolicwolfcave = 1>>
<<timed 12s>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<</timed>>
<<timed 2s>>
<<playSound "wolf3" "media/sounds/monsterwolf-howl.mp3" volume:0.5>>
<</timed>>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">>
<<script>>
startBattle('werewolf', 20);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<timed 5s>>
<<playSound "werewolf" "media/sounds/werewolf.mp3" loop volume:0.5>>
<</timed>>
<<timed 20s>>
<<playSound "werewolf" "media/sounds/werewolf.mp3" loop volume:0.5>>
<</timed>>
<<timed 60s>>
<<playSound "werewolf" "media/sounds/werewolf.mp3" loop volume:0.5>>
<</timed>><div id="CBox">
<div id="Ntext">You run without looking back, the echo of your footsteps resounding through the cave. You can feel its presence lurking, its gaze burning into your back, but it doesn’t chase you.
When you finally emerge from the tunnel, you stop, gasping for breath. You turn toward the darkness, and there it is—motionless at the entrance, its red eyes glowing like embers.
It doesn’t cross the threshold. It doesn’t follow you.</div>
<div class="links">
<th>[[Continue|Caveoutside]]</th>
</div>
</div>
<<set $diabolicwolfcave = 0>><div id="CBox">
<div id="Ntext">The wolf lies on the ground, its body motionless, the threat it posed now extinguished. With its fall, the echoes of growls and the stealthy movements of the other wolves vanish, leaving the cave in an eerie silence.
The darkness feels less oppressive, though still heavy with mystery. The cave, once dominated by the beasts, is now free of their presence.
For a moment, only the sound of your breath breaks the silence. You've accomplished something, but a sense of unease still lingers.</div>
<<say $Mc>>Well... looks like this place is finally free of threats.<</say>>
<div id="Pensamiento">Not that I can call it a perfect refuge. But at least, for now... it seems safe.</div>
<div class="links">
<th>[[Examine remains|Examinecave]]</th>
</div>
</div>
<<set $diabolicwolfcave = 2>>
<<set $SafePlaceCave = true>><div id="CBox">
<div id="Ntext">You crouch down, observing the wolf's remains. Its body lies motionless on the ground. Dark fur covers much of its form, and a light layer of dirt and blood has accumulated on it.
Something catches your attention in the remains—something shiny within its throat.</div>
<div class="links">
<th>[[Reach in|B2card]]</th>
</div>
</div>
<<set $safecave = true>><div id="CBox">
<div id="Pensamiento">This man... I guess there's no helping him. Whatever.</div>
<<say $Mc>>Don’t make me repeat myself, Franklin. If you went in, you saw something. Don’t play games with me.<</say>>
<<say $Franklin>> What good would it do to talk about it? Huh? It wouldn’t change anything. You’re here now, so just do what you have to do. Anyway, I haven’t seen much... I saw what anyone would see in a place like this: ruins, forgotten things... garbage. Nothing worth mentioning...<</say>>
<<say $Mc>> I’m not stupid, Franklin. If you don’t want to say it, fine, but let it be clear: if there’s anything else and I get into trouble because of your silence, I won’t forget it.<</say>>
<<say $Franklin>>Alright, alright... Don’t get like that, Detective. Just... be careful. Inside, there are people... Some are... out of their minds, violent. And trust me, you don’t want to run into them. I think if you stay alert.<</say>>
<div class="links">
<th>[[Bye|Cabin]]</th>
</div>
</div>
<<include "Frank">><div id="CBox">
<div id="Pensamiento">This man... really makes me angry.</div>
<<say $Mc>>Don’t make me repeat myself, Franklin. If you went in, you saw something. Don’t play games with me. And stop calling me "girl," damn it!<</say>>
<<say $Franklin>>Alright, sorry... uh, Casey. <</say>>
<div id="Pensamiento">That's how I like it.</div>
<<say $Franklin>>What good would it do to talk about it? Huh? It wouldn’t change anything. You’re here now, so just do what you have to do. Anyway, I haven’t seen much... I saw what anyone would see in a place like this: ruins, forgotten things... garbage. Nothing worth mentioning...<</say>>
<<say $Mc>> I’m not stupid, Franklin. If you don’t want to say it, fine, but let it be clear: if there’s anything else and I get into trouble because of your silence, I won’t forget it.<</say>>
<<say $Franklin>>Alright, alright... Don’t get like that, Detective. Just... be careful. Inside, there are people... Some are... out of their minds, violent. And trust me, you don’t want to run into them. I think if you stay alert, you’ll be fine. You seem strong, and like you know how to defend yourself.<</say>>
<<say $Mc>>I know how to take care of myself. But thanks... I’ll keep my eyes wide open.<</say>>
<div class="links">
<th>[[Bye|Cabin]]</th>
</div>
</div>
<<include "Frank">>
<<set $NoMoreGirl = true>><div id="CBox">
<div class="links">
<th>[[Parking near the entrance|Parking]]</th>
</div>
</div>
<<silently>>
<<run window.addMissionItem('car_key')>>
<<set $hasCarKey = true>>
<</silently>><div id="CBox">
<div id="Ntext">You push forward through the final stretch of the tunnel, feeling the humidity in the air grow heavier. The sound of dripping water blends with the echo of your footsteps until you finally emerge into a vast underground chamber.
In front of you, a small lake of dark waters stretches across the heart of the cave. From a crack high above, faint rays of moonlight pierce through the darkness, casting a shimmering glow on the rippling surface. For a moment, the scene feels calm, almost unreal.</div>
<div id="Ntext">With cautious steps, you move toward the edge of the small lake. The water is dark and impenetrable, reflecting distorted fragments of the moonlight filtering through the crack above. A deathly silence takes hold of the place, broken only by the steady dripping of water and the distant sound of your own breathing.
Then, you hear a noise. Your body tenses.</div>
<div id="Pensamiento">Something moves in the shadows.</div>
<div class="links">
<th>[[Await|diabolicwolfcave2]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "Left Corridorlight">>
<<else>>
<div id="CBox">
<div id="Ntext">A long, dark hallway stretches ahead of you, the shadows dancing along the walls as if something is watching. At the end of the hallway, you can make out a door.</div>
<<if $openleftdoor isnot true>>
<div class="linksTwo">
<th>[[Check door|leftdoor]]</th>
</div>
<</if>>
<div class="links">
<th>[[Go to small office|SRcorridor2]]</th>
<th>[[Move through hallway|Left Corridor1]]</th>
<<if $openleftdoor is true>>
<th>[[Entrance|MainLobby]]</th>
<</if>>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">Left hallway</div>
<<setLighting 20>><<if setup.lantern.isOn>>
<<goto "Left Corridor1light">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway is enveloped in near-total darkness. You can barely make out the shadows that rise, and the silence is unbearable, broken only by the creaking of your footsteps.</div>
<<if $openA1door isnot true>>
<div class="linksTwo">
<th>[[Check door|cardA1door]]</th>
</div>
<</if>>
<div class="links">
<th>[[Move through hallway|Left Corridor]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">Left hallway</div> <div id="CBox">
<div id="Ntext">You find yourself in front of a door with a magnetic lock. The slot clearly indicates that you need an A1 card to open it. The door seems sturdy, and there’s no way to force it open.</div>
<<if $cardA1 is true>>
<div class="linksTwo">
<th>[[Use card|cardA1dooropen]]</th>
</div>
<</if>>
<div class="links">
<th>[[Back|Left Corridor1]]</th>
</div>
<img id="event-image2" src="img/events/a1door.png">
</div><div id="CBox">
<div id="Ntext">The door doesn't budge. You try pushing it again, but it remains firmly in place.</div>
<div id="Pensamiento">The latch is set from this side, I can open.</div>
<div class="links">
<th>[[Open door|leftdooropen]]</th>
</div>
<div class="links">
<th>[[Back|Left Corridor]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You take a moment to examine the mechanism before sliding the latch with a dry click. You push again, and this time the door creaks open, revealing the room beyond.
Stepping forward, you immediately recognize the place: the main hall. The dim light from the flickering lamps casts shadows over the old seats and the dust-covered floor.</div>
<<say $Mc>>Looks like I’m back in the main hall.<</say>>
<div class="links">
<th>[[Continue|MainLobby]]</th>
</div>
</div>
<<set $openleftdoor = true>> <div id="CBox">
<div id="Ntext">You don't have the access card A1.</div>
<div class="links">
<th>[[Back|cardA1door]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You scan the main hall, your eyes sweeping across the room, but there's no sign of the doctor.</div>
<<say $Mc>>Damn it!<</say>>
<div id="Pensamiento">Not a single trace of that bastard Home. It was clear that he wasn’t going to be waiting for me to answer my questions.</div>
<<say $Mc>>But there’s no way he could’ve just vanished… He has to be somewhere.<</say>>
<div id="Ntext">You search every corner, every shadow, but nothing moves. No sound, no presence—just an unsettling emptiness.</div>
<div id="Pensamiento">If there’s one place he’d retreat to, it’s his office. He’s probably there.</div>
<<say $Mc>>I need to find that elusive rat.<</say>>
<div class="links">
<th>[[Continue|MainLobby]]</th>
</div>
</div>
<<set $mhr = true>>
<<script>>
setup.phoneSystem.addObjective(
"Find Doctor Home's office.",
"Doctor Home has vanished. Find his office to gather more clues about his whereabouts and uncover what’s really happening at the psychiatric facility (End of the content for now.)",
'main',
'enterQuest' // ID
);
<</script>>
<<SanityMessage "Main objective updated: Find Doctor Home's office">>music
<<playMusic "music" "media/music/newstart.mp3" volume:0.5>>
stop
<<playMusic "music" "media/music/none.mp3" volume:0.5>><div id="CBox">
<div id="Ntext">Just as the intensity was beginning to build, the shrill sound of the phone ringing pulls you out of your trance...</div>
<<say $Mc>>Shit! Dammed phone...<</say>>
<div id="Ntext">Seeing the unknown number, your instinct tells you it's something important. You answer, and before you can say anything, you hear, "Casey?" a deep, authoritative voice says.</div>
<div class="links">
<th>[[Detective Casey speaking|introPhone2b]]</th>
</div>
</div>
<<timed 2s>>
<<playSound "sound" "media/sounds/codec.mp3" loop volume:0.4>>
<</timed>>
<<timed 8s>>
<<playSound "sound" "media/sounds/none.mp3" volume:0.4>>
<</timed>><div id="CBox">
<div id="Ntext">Suddenly, the sound of the phone pulls you from your thoughts. Seeing the unknown number, your instinct tells you it's something important. You answer, and before you can say anything, you hear, "Casey?" a deep, authoritative voice says.</div>
<div class="links">
<th>[[Detective Casey speaking|introPhone2]]</th>
</div>
</div>
<<timed 2s>>
<<playSound "sound" "media/sounds/codec.mp3" loop volume:0.4>>
<</timed>>
<<timed 8s>>
<<playSound "sound" "media/sounds/none.mp3" volume:0.4>>
<</timed>><div id="CBox">
<div id="Ntext">You stop in front of the main door, the same one the doctor shut in your face when you tried to get in. There’s no lock, no key—just a makeshift blockade meant to keep you from forcing your way inside.</div>
<div class="links">
<th>[[Open|maindooropen]]</th>
<th>[[Back|MainLobby]]</th>
</div>
</div>
<<set $maindooropen = true>><div id="CBox">
<div id="Ntext">You slide your hand over the metal latch and pull it back with a sharp click. A chain dangles loosely from the handle, barely wrapped around it to slow you down. You push it aside with ease.</div>
<<say $Mc>>Alright, I’ll leave it open.<</say>>
<div id="Ntext">The door creaks slightly as you push it. Now, the main entrance is open again.</div>
<div class="links">
<th>[[Exit|PsiquiatricEntrance]]</th>
<th>[[Back|MainLobby]]</th>
</div>
</div>
<<set $maindoorclosed = false>>
<<set $maindooropen = true>><div class="title2"></div>
<div id="credits">Credits</div>
<<script>>
$(document).ready(function() {
$("#credits").click(function() {
Engine.play("credits");
});
});
<</script>><div class="ptr" id="rustlerButton"></div>
<div class="tooltip" id="rustlerTooltip">Support Rustlerman</div>
<style>
.ptr {
background-image: url(img/rustler2.png);
background-size: cover;
position: fixed;
top: 4em;
left: 17.9em;
width: 30px;
height: 30px;
z-index: 100;
cursor: pointer;
border: 1px solid white;
border-radius: 20px;
}
.tooltip {
position: fixed;
background-color: rgba(0, 0, 0, 0.8);
color: white;
padding: 5px 10px;
border-radius: 5px;
font-size: 14px;
opacity: 0;
transform: translateY(10px);
transition: all 0.3s ease;
pointer-events: none;
z-index: 101;
}
</style>
<script>
$(document).on('mouseover', '#rustlerButton', function() {
const buttonRect = this.getBoundingClientRect();
const tooltip = $('#rustlerTooltip');
// Posicionar el tooltip encima del botón
tooltip.css({
left: buttonRect.left + (buttonRect.width / 2) - (tooltip.width() / 2) + 'px',
top: buttonRect.top - tooltip.height() - 10 + 'px',
opacity: 1,
transform: 'translateY(0)'
});
});
$(document).on('mouseout', '#rustlerButton', function() {
$('#rustlerTooltip').css({
opacity: 0,
transform: 'translateY(10px)'
});
});
</script>
<script>
$(document).on("click", ".ptr", function() {
window.open("https://patreon.com/Rustlergame", "_blank");
});
</script>
<div id="CBox">
<div id="Ntext">You answer the call, but the sound is distorted, a tangle of static filling the space. You adjust the volume, but no matter how many times you try, all you can hear are erratic, incomprehensible noises. There is no voice, only interference. The screen still shows Quentin's name, but his words never reach you.</div>
<<say $Mc>>What the...?<</say>>
<div id="Ntext">You hang up, frustrated by the failed call, and look at the phone in your hands. The doctor, with a calmness that seems almost calculated, watches you before offering a piece of advice.</div>
<<say $DocHome>>I'm afraid the signal inside here is... unstable, likely due to the deterioration of the place. I suggest you step outside, perhaps you'll have better luck and manage to catch the call.<</say>>
<div id="Pensamiento">How convenient... I’m not sure I should go outside... but I don’t think the mayor would call if it wasn’t important.</div>
<<say $Mc>>I’ll step outside to take the call. Please stay here. I’d like to ask you a few more questions.<</say>>
<div id="Ntext">The doctor smiles widely with satisfaction, as if he had just completed a puzzle by placing the final piece.</div>
<<say $DocHome>>Of course, Detective. I'll be here, waiting for your return. I’m looking forward to hearing your pertinent questions.<</say>>
<div id="Pensamiento">Anyway you wouldn't be able to get very far with your injured leg.</div>
<div class="links">
<th>[[I'll come back|MainLobby]]</th>
</div>
</div>
<<include "DocHome">>
<<playSound "sound" "media/sounds/none.mp3" volume:0.4>><<if setup.lantern.isOn>>
<<goto "Cavelight">>
<<else>>
<div id="CBox">
<div id="Ntext">You step into the cave cautiously, but as soon as you take a few steps inside, the darkness becomes absolute. You can't see anything. You move forward a little more, feeling your way blindly, but the uncertainty fills you with unease.</div>
<<say $Mc>>It's impossible...<</say>>
<div id="Pensamiento">Without light, I can't go any further.</div>
<div id="Ntext">You grit your teeth and decide that the best choice is to turn back toward the exit.</div>
<div class="links">
<th>[[Exit cave|Caveoutside]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">>
<</if>><div id="CBox">
<div id="Ntext">Finally You shake your head and take a step back, snapping yourself out of the trance as if breaking a spell.</div>
<div id="Pensamiento">I need to leave.</div>
<div id="Ntext">With a mix of relief and shame, you turn and quietly head for the exit.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupVerticalVideo("videoPlaceholder", "media/mambo/55.mp4", 177);
<</script>>
<div class="links">
<th>[[Leave stealthily|peekintro2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(10);
<</script>>
<<SanityMessage "-10 Sanity">><div id="CBox">
<div id="Ntext"></div>
<div class="links">
<th><<back>></th>
</div>
</div><div id="CBox">
<<switch visited>>
<<case 1>>
<div id="Ntext">As you arrive, your chest tightens. The hood is slightly open, showing clear signs of tampering. You step closer, cautiously. As you examine the engine, your worst fears are confirmed: the system has been sabotaged.</div>
<<say $Mc>>Shit! I really didn’t see this one coming...<</say>>
<div id="Ntext">You glance nervously over your shoulder, but the forest remains eerily silent. A cold knot forms in your stomach.</div>
<<say $Mc>>Stay calm, Casey. Think.<</say>
<div id="Pensamiento">This wasn’t a random act; someone doesn’t want me to leave this place.</div>
<div id="Ntext">You step away from the car, every instinct screaming that you’re being watched. The feeling is so intense that it makes your skin crawl.</div>
<div class="links">
<th>[[Examine engine|CarEngine]]</th>
</div>
<<default>>
<div id="Ntext">The car, though in good condition, has been recently sabotaged; the main starter fuse is missing.</div>
<div id="Pensamiento">If I want to get out of here, I'll have to find that fuse.</div>
<div class="links">
<th>[[Back|Parking]]</th>
</div>
<</switch>>
<img id="event-image2" src="img/events/caseycar.png">
</div><div id="CBox">
<div id="Ntext">You stop in front of the cloed door. A dull thud echoes against the wood… then another. There’s a brief pause, just a whisper of silence, before it happens again.</div>
<div id="Pensamiento">Doesn't seem like a rhythmic pattern...</div>
<<say $Mc>>Someone is trying to force its way through.<</say>>
<<timed 5s>>
<div class="links">
<th>[[Who’s there?]]</th>
<th>[[Stay silent|Main Hallway3]]</th>
</div>
<</timed>>
</div>
<<set $MHenemy = true>>
<<set $MHfight = 1>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music2" "media/music/none.mp3">>
<<timed 2s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<</timed>>
<</timed>>
<</timed>>
<</timed>>
<<timed 5s>>
<<countdown 25 "Enemydoor">>
<<playMusic "music3" "media/music/alert.mp3" volume:0.12>>
<</timed>><div id="CBox">
<div id="Ntext">You open the locker, it's empty.</div>
<<switch visited>>
<<case 1>>
<div id="Ntext">Then, you think for a few seconds.</div>
<div id="Pensamiento">It's big enough for me.</div>
<<say $Mc>>I can get in here and hide.<</say>>
<</switch>>
<div class="links">
<th>[[Get inside|SRlockerinside]]</th>
<th>[[Back|Saveroom]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You slip into the locker and carefully close the door. Inside, the space is tight but enough to hide. Darkness surrounds you, and the only sound is your own breathing. You stay still for a few seconds, but nothing happens. Everything is quiet.</div>
<<switch visited()>>
<<case 1>>
<div id="Pensamiento">If danger is near, this could be a good hiding spot.
But I can't stay here forever.</div>
<</switch>>
<div class="links">
<th>[[Leave|Saveroom]]</th>
</div>
</div>
<<if $Windowcrash is true && $bwinfight2 isnot true && $patientcome is 1>>
<<goto "patientcome2">>
<</if>><div id="CBox">
<div id="Ntext">You slip into the locker just in time, carefully closing the door. You hold your breath.
The room's door creaks open. A patient enters, muttering incoherently, his bare feet slapping against the floor unevenly. He suddenly stops, sniffing the air as if he can sense your presence.
The sound of shuffling footsteps grows closer, his breathing heavy and ragged, like a wounded animal.</div>
<div id="Pensamiento">Come on… just keep moving.</div>
<div id="Ntext">For a few seconds, the patient lingers, glancing around, his head tilting unnaturally. Then, as if losing interest, he grunts and leaves, shutting the door behind him. You wait a few moments before finally exhaling.</div>
<<say $Mc>>God… that was close.<</say>>
<div id="Pensamiento">I can't stay here forever. I need to keep moving.</div>
<div class="links">
<th>[[Leave|Saveroom]]</th>
</div>
</div>
<<removecountdown>>
<<set $bwfight2 = 2>>
<<set $bwinfight2 = true>>
<<set $patientcome = 0>>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.4>><div id="CBox">
<div id="Ntext">You slip into the locker and gently shut the door. The space is cramped, but enough to conceal yourself. Darkness wraps around you, and the only sound is your own breathing. You remain still for a few moments, but nothing happens.</div>
<div class="links">
<th>[[Leave|SRoom1]]</th>
</div>
</div> <div id="CBoxlight">
<div id="Ntext">A long, dark hallway stretches ahead of you, with the light from your flashlight barely reaching the farthest corners. Shadows dance along the walls, as if something is watching. At the end of the hallway, you can make out a door.</div>
<<if $openleftdoor isnot true>>
<div class="linksTwo">
<th>[[Check door|leftdoor]]</th>
</div>
<</if>>
<div class="links">
<th>[[Go to small office|SRcorridor2]]</th>
<<if $openleftdoor is true>>
<th>[[Main hall|MainLobby]]</th>
<</if>>
<th>[[Move through hallway|Left Corridor1]]</th>
</div>
</div>
<div id="LocationName">Left hallway</div><div id="CBoxlight">
<div id="Ntext">The hallway stretches into the darkness, illuminated only by the faint light of your flashlight. As you move forward, the shadows seem to take shape, casting fleeting figures of phantoms that quickly flee from the light, vanishing in an instant.</div>
<<if $openA1door isnot true>>
<div class="linksTwo">
<th>[[Check door|cardA1door]]</th>
</div>
<</if>>
<div class="links">
<th>[[Move through hallway|Left Corridor]]</th>
</div>
</div>
<div id="LocationName">Left hallway</div><div id="CBox">
<div id="Ntext">A faint sound of footsteps breaks the silence in the room, and you quickly turn, alert. In the dim light, a tall figure emerges, with an elegant posture, wearing a black suit jacket and jeans that stand out against the decaying surroundings.
In one hand, he holds a cane with a decorated handle, but you notice that he isn't carrying it as a mere accessory. His posture and the way he leans on it reveal that he needs it. As he steps forward, his movement is stiff, as if each step causes him intense pain. The cane strikes the floor with a steady, almost heavy rhythm, echoing through the silent room. His expression remains calm, but there's a faint hint of discomfort on his face—a fleeting gesture that suggests the pain in his leg never truly leaves him.</div>
<<timed 9s>>
<<say $Doc>>Am I still surprising our new visitors after all this time? You weren't expecting company in this place, were you?<</say>>
<</timed>>
<div class="links">
<th>[[Who are you?|TalkDocHome]]</th>
</div>
</div>
<<timed 9s>>
<<include "DocHome">>
<</timed>>
<<set $DocHometalk = 1>><div id="CBox">
<<say $Mc>>I'm not here for you to give me lessons on how to do my job, Doctor. I'm investigating, and what I've found in these documents... has nothing to do with what you've told me.<</say>>
<div id="Ntext">The look the doctor gives you hardens for a moment, a slight glimmer of annoyance flashing across his face, as if the situation is starting to make him uncomfortable.</div>
<<say $DocHome>>This isn't about lessons, Detective. It's about what's legal and what's not. Looking at patient records without a warrant... that's a crime. I shudder to think what that could mean for your investigation. You shouldn't have touched those documents, Detective. It's not just a lack of respect toward me, but also toward the patients who placed their trust in this institution.<</say>>
<div id="Pensamiento">Shit, he’s right, he’s got me cornered.</div>
<div id="Ntext">The doctor's gaze softens again, and without retracting his hand, he continues.</div>
<<say $DocHome>>If you return it now, I'll forget about the matter and be happy to continue answering your questions...<</say>>
<div class="links">
<th>[[Give the documents|Give the documents2]]</th>
</div>
</div>
<<include "DocHome">>
<<set $UnKindGirl = 1>>
<div id="CBox">
<div id="Ntext">You can feel the weight of the moment bearing down on you, but with gritted teeth, you hand the documents over to Doctor Home.</div>
<<say $Mc>>Here. I’m done with this...<</say>>
<<say $DocHome>>I knew you’d come around, Detective. In the end, reason always wins.<</say>>
<div id="Ntext">The silence that follows is suffocating, almost unbearable. The air feels like it’s being sucked out of your lungs, yet the doctor remains calm, unaffected. His expression stays unreadable as you struggle internally, fighting the rising feeling of helplessness. You’ve given in, but something inside you refuses to break. The pieces of the game aren’t in place yet.</div>
<div id="Pensamiento">This isn’t over, Home. It’s just beginning.</div>
<div class="links">
<th>[[Ask about Subject Alpha-IX|nomorequestions]]</th>
</div>
</div>
<<include "DocHome">><<if $Health < 50 and not $variableNombre>>
<<checkHealthEvent>>
<<set $variableNombre to true>>
<<endif>>
<<if $Sanity = 0 and not $variableNombre>>
<<checkSanityEvent>>
<<set $variableNombre to true>>
<<endif>>
//Eventos
Sanity
<<script>>
window.SanityEventSystem.addEvent('EventoNombre', {
min: 0,
max: 0,
passage: 'EventoPasaje',
chance: 1,
explorationOnly: true
});
<</script>>
Health
<<script>>
window.HealthEventSystem.addEvent('EventoNombre', {
min: 20,
max: 40,
passage: 'EventoPasaje',
chance: 1,
explorationOnly: true
});
<</script>>
<<script>>
window.HealthEventSystem.addEvent('nearDeath', {
min: 0,
max: 15,
passage: 'NearDeathExperience',
chance: 0.4,
// Works in both combat and exploration
interruptBattle: true
});
window.HealthEventSystem.addEvent('combatCollapse', {
min: 10,
max: 25,
passage: 'CombatCollapseEvent',
chance: 0.35,
combatOnly: true,
interruptBattle: true
});
window.HealthEventSystem.addEvent('explorationStumble', {
min: 20,
max: 40,
passage: 'ExplorationStumbleEvent',
chance: 1,
explorationOnly: true
});
<</script>><div id="CBox">
<div id="Ntext">The door, though not broken, shows clear signs of the violence it endured. The hallway leading to the next room is now accessible, and the dim light reveals its vast interior. Through the opening, the sound of echoes from the psychiatric facility mingles with an unsettling silence, as if the space is waiting for something more.</div>
<div class="links">
<th>[[Grand Hall]]</th>
<th>[[Back|Main Hallway3]]</th>
</div>
</div>
<<set $MCDopen = true>><div id="CBox">
<<say $Mc>>Who's there?<</say>>
<div id="Ntext">You don't hear any response; the sound of the blows intensifies, and you can hear the door slowly giving way.</div>
<<say $Mc>>What do you want?<</say>>
<div id="Ntext">You still don’t hear any response; the door is giving way more and more, it’s about to open.</div>
<div id="Pensamiento">Shit, no answer. I have to brace myself for whatever comes next.</div>
<div class="links">
<th>[[Stay silent|Main Hallway3]]</th>
</div>
</div>
<<timed 1s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<<timed 4s>>
<<playAudio "sound" "media/sounds/door.mp3" "sound" "volume:0.4">>
<</timed>>
<</timed>>
<</timed>>
<</timed>><div id="CBox">
<div id="Ntext">The eastern end of the hall rises like a massive prison of concrete and metal. One of the high windows is shattered, allowing pale moonlight to spill across the cracked floor. Dust drifts through the air, caught in the glow, revealing old stains on the walls and scattered papers. From here, a hallway leads further east, while another curves back toward the building’s entrance.</div>
<div class="linksTwo">
<<if $SecurityRoom isnot true>>
<th>[[Check security door]]</th>
<<else>>
<th>[[Security Room|SecurityRoom]]</th>
<</if>>
<<if $StorageDoor isnot true>>
<th>[[Check door]]</th>
<<else>>
<th>[[Storage]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to bedrooms corridor|CellCorridorA]]</th>
<th>[[Entrace hallway|Main Hallway3]]</th>
<th>[[Grand Hall - West|Grand Hall2]]</th>
</div>
</div>
<<if $IntroVision isnot true>>
<<playMusic "music2" "media/music/none.mp3">>
<<playMusic "music" "media/music/none.mp3">>
<<else>>
<<if $insidesound isnot true>>
<<playMusic "music2" "media/music/none.mp3">>
<<playMusic "music" "media/music/lobbytheme.mp3" volume:0.3>>
<<set $insidesound = true>>
<</if>><</if>>
<div id="LocationName">Grand Hall</div>
<<setLighting 60>><div id="CBox">
<div id="Ntext">The door trembles with a creak as something pushes against it. The lock snaps with a sharp crack, and the door slowly swings open, revealing a staggering silhouette in the doorway.</div>
<div id="Pensamiento">It's a man, or what’s left of one.</div>
<<say $Mc>>Of course... what would a perfect night be without another damn walking corpse?<</say>>
<div id="Ntext">Without warning, the staggering figure lunges at you with a guttural growl, arms outstretched like claws. Its movements are clumsy yet relentless, driven by blind fury.</div>
<<say $MadPatient>>Graaagh!<</say>>
<div class="links">
<th>[[Shoot him|Enemydoorfight]]</th>
</div>
</div>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music" "media/music/darksituation.mp3" volume:0.4>>
<<timed 6s>>
<div id="npc-container">
<img src="img/monsters/patients/madpatient.png">
</div>
<</timed>>
<<script>>
window.HealthEventSystem.addEvent('E6', {
min: 0,
max: 10,
passage: 'E6',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><div id="CBox"></div>
<<script>>
startBattle('madPatient', 6);
<</script>>
<<set $enemyPresent = false>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<div id="CBox">
<div id="Ntext">The body twitches one last time before collapsing to the floor with a dull thud. A heavy silence fills the air, broken only by your ragged breath.</div>
<div id="Pensamiento">I can't stay here... </div>
<<say $Mc>>I have to keep going, even... God, this is getting worse.<</say>>
<div class="links">
<th>[[Continue|Main Hallway3]]</th>
</div>
</div>
<<set $MHenemy = true>>
<<set $MHfight = 2>><div id="CBox">
<div id="Ntext">You push the door, and it shifts, indicating it's unlocked.</div>
<div class="links">
<th>[[Enter|MHrightroom]]</th>
<th>[[Back|Main Hallway2]]</th>
</div>
</div>
<<set $MHrightdoor = true>><<if setup.lantern.isOn>>
<<goto "MHrightroomLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness is absolute. You can't see anything.</div>
<div class="links">
<th>[[Exit|Main Hallway2]]</th>
</div>
</div>
<</if>><div id="CBox">
<div id="Ntext">The door is open now.</div>
<div id="Pensamiento">Someone's been through here, opening doors...</div>
<div class="links">
<th>[[Enter|MHleftroom]]</th>
<th>[[Back|Main Hallway2]]</th>
</div>
</div>
<<set $MHleftdoor = true>><<if setup.lantern.isOn>>
<<goto "MHleftroomLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness is absolute. You can't see anything.</div>
<div class="links">
<th>[[Exit|Main Hallway2]]</th>
</div>
</div>
<</if>><<if setup.lantern.isOn>>
<<goto "MHrightroom1Light">>
<<else>>
<div id="CBox">
<div id="Ntext">A narrow and cluttered space, with shelves filled with cleaning supplies in worn-out bottles. Dirty rags, buckets, and a broken mop rest in a corner. The air carries a faint smell of old chemicals and stagnant moisture.</div>
<<say $Mc>>I can't see anything useful.<</say>>
<div class="links">
<th>[[Exit|Main hallway]]</th>
</div>
</div>
<</if>><div id="CBox">
<div id="Ntext">The door that was previously closed is now open.</div>
<div class="links">
<th>[[Enter|MHrightroom1]]</th>
<th>[[Back|Main hallway]]</th>
</div>
</div>
<<set $MHRD = true>><div id="CBoxlight">
<<if $MHSearch isnot true>>
<div id="Ntext">The storage room is a small, cluttered space with dust-covered shelves and boxes stacked in the corners. The light from your flashlight reveals old tools and remnants of forgotten materials.</div>
<<else>>
<div id="Ntext">You search every corner of the room, but everything is either empty or useless. You sigh in frustration. There’s nothing useful left here.</div>
<</if>>
<<if $MHSearch isnot true>>
<div class="linksTwo">
<th>[[Search something|MHSearch]]</th>
</div>
<</if>>
<div class="links">
<th>[[Exit|Main hallway]]</th>
</div>
</div>
<div id="CBoxlight">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You push the door open and step into a wide, silent room. To your left, you find yellow elevators with paint nearly worn away. To your right, several waiting chairs are lined up against the wall, covered in dust.
The windows, completely boarded up with old planks, block any trace of outside light, shrouding the room in an eerie gloom.</div>
<div id="Pensamiento">This place seems like paradise... </div>
<<say $Mc>>For those running from civilization.<</say>>
<<default>>
<div id="Ntext">You enter a silent room. To the left, the elevators stand still; to the right, dusty chairs are lined up against the wall. The boarded-up windows plunge the room into an eerie gloom.</div>
<</switch>>
<div class="linksTwo">
<th>[[Elevators|Yellowelevator]]</th>
</div>
<div class="links">
<th>[[Exit|Main Hallway2]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The small, cluttered room is filled with dust and old furniture. An aging table sits in the center, covered in crumpled papers, with a half-toppled chair beside it. Against the wall, rusted lockers and a worn-out filing cabinet with moisture-damaged documents complete the scene.</div>
<div class="linksTwo">
<th>[[Check first loocker|FLleftroom]]</th>
<th>[[Check second loocker|SLleftroom]]</th>
</div>
<div class="links">
<th>[[Exit|Main Hallway2]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">The locker door is jammed and cannot be opened.</div>
<<if $MHfight is 1>>
<<say $Mc>>Shit!<</say>>
<</if>>
<div class="links">
<th>[[Back|MHleftroom]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You open the locker, it's empty.</div>
<div class="links">
<th>[[Get inside|MHlockerinside1]]</th>
<th>[[Back|MHleftroom]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You slip into the locker and carefully close the door. Inside, the space is tight but enough to hide. Darkness surrounds you, and the only sound is your own breathing. You stay still for a few seconds, but nothing happens. Everything is quiet.</div>
<div id="Pensamiento">If danger is near, this could be a good hiding spot.
But you can't stay here forever.</div>
<div class="links">
<th>[[Leave|MHleftroom]]</th>
</div>
</div>
<<if $MHfight is 1>>
<<goto "MHpatientskip">>
<</if>><div id="CBox">
<div id="Ntext">The door swings open slowly on its hinges. Through the gap in the locker, you see a shadow move in the dim light—a patient advancing slowly. Their footsteps echo through the room, unhurried, searching the space.</div>
<div id="Pensamiento">So close...</div>
<<say $MadPatient>>Nothing...<</say>>
<div id="Ntext">The patient walks for a few more seconds before turning around and leaving the way they came. Silence fills the room once again.</div>
<div class="links">
<th>[[Exit|MHleftroom]]</th>
</div>
</div>
<<set $MHenemy = false>>
<<set $MHfight = 2>>
<<removecountdown>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music2" "media/music/darksituation.mp3" volume:0.5>>
<div id="CBox">
<div id="Ntext">The air grows heavy, and a strange sensation fills your chest. Darkness seems to creep into every corner, and something in the atmosphere makes you feel watched. A sharp pain pierces your head, and your thoughts blur. Suddenly, your vision distorts, as if the world around you has twisted.</div>
<<say $Mc>>Agh! My head...!<</say>>
<div id="Ntext">You clutch your temple, feeling the pain intensify. The pressure in your skull is unbearable, as if something is trying to force its way into your mind. And then, a cold sensation takes hold of you… you feel a presence. It’s watching you.</div>
<div class="links">
<th>[[Continue|Event1b]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(60);
<</script>>
<<SanityMessage "-60 Sanity">>
<<playSound "sound" "media/sounds/ab01.mp3" volume:0.5>>
<<timed 20s>>
<<playSound "sound" "media/sounds/none.mp3" volume:0.5>>
<</timed>>
<<playMusic "music" "media/music/darksituation2.mp3" volume:0.2>>
<<playMusic "music2" "media/music/none.mp3">>
<div id="CBoxlight">
<div id="Ntext">You search through the shelves, pushing aside worn-out bottles and you find <span style="color: #22b22e;">2 lockpick</span>.</div>
<div id="Pensamiento">The metal is rusted, and the handle is somewhat worn, but it might still be useful.</div>
<div class="links">
<th>[[Search more|MHSearch1]]</th>
<th>[[Back|MHrightroom1]]</th>
</div>
</div>
<<giveLockpicks 2>>
<<set $MHSearch = true>><div id="CBoxlight">
<div id="Ntext">As you continue exploring the dark halls of the asylum, something faintly glimmers on a dusty table. Approaching, you find a small bottle of chemicals, its label barely legible and the liquid inside murky. The pungent smell makes you wrinkle your nose; something about its appearance tells you it shouldn't be there.
You find <span style="color: #22b22e;">chemicals</span>.</div>
<div id="Pensamiento">They're not in the best condition...</div>
<<if $FranklinMeet isnot true>>
<<say $Mc>>I don't know why the hell I want this... anyway.<</say>>
<<else>>
<<say $Mc>>Maybe Franklin will be interested.<</say>>
<</if>>
<div class="links">
<th>[[Take it|MHSearch2]]</th>
<th>[[Leave it|MHrightroom1]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You spot the remains of the collapsed staircase—broken wooden planks and twisted metal scattered across the floor. The failed attempt still lingers in your mind, a reminder of how unstable this place truly is.</div>
<div id="Pensamiento">I could have really gotten hurt.</div>
<<say $Mc>> This place is falling apart.<</say>>
<div id="Ntext">You observe the remains of the collapsed staircase, with splintered planks and twisted metal scattered across the floor. Among the debris, something catches your eye—a metal bar still intact, sturdy enough to be useful.</div>
<div class="links">
<th>[[Take iron bar|ironbarStair1]]</th>
<th>[[Back|Camino-intermedio]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You grab the <span style="color: #22b22e;">metal bar</span> in your hands. It’s cold and solid, and although slightly rusted, it seems sturdy enough to be useful.</div>
<<say $Mc>>Maybe it’ll come in handy.<</say>>
<div class="links">
<th>[[Back|Camino-intermedio]]</th>
</div>
</div>
<<run window.addMissionItem('iron_barStairs')>>
<<set $ironbarStair = true>>
<<set $ironbaritem = true>><<script>>
State.variables.MissionItems = State.variables.MissionItems || {
b2card: {
name: "Magnetic card (B2)",
description: "It’s an access card. It’s a little worn, but it seems to work.",
icon: '<img src="img/items/keys/b2card.png" alt="Magnetic Card">',
canDrop: false, // Cannot be dropped or sold
isKey: true
},
car_key: {
name: "Car Key",
description: "A small car key with the initials RC engraved on the metal part. The key has a simple plastic casing, designed for easy handling.",
icon: '<img src="img/items/keys/carkey.png" alt="Car Key">',
canDrop: false,
isKey: true
},
lockpick: {
name: "Lockpick",
description: "A thin piece of metal, slightly curved at the tip, designed to manipulate a lock's pins with precision and stealth.",
icon: '<img src="img/items/keys/lockpick.png" alt="Lockpick">',
canDrop: false,
isKey: true,
isSellable: true
},
chemicals: {
name: "Chemicals",
description: "A bottle of some chemical product, the label long corroded.",
icon: '<img src="img/items/keys/chemicals.png" alt="Chemicals">',
canDrop: true,
isKey: true,
isSellable: true
},
iron_barStairs: {
name: "Iron Bar",
description: "A twisted and rusted piece of metal, torn from the remains of the broken fire escape.",
icon: '<img src="img/items/keys/ironbarstair.png" alt="Iron Bar">',
canDrop: false,
isKey: true
},
crowbar: {
name: "Crowbar",
description: "A sturdy metal tool designed for prying open locks or structures.",
icon: '<img src="img/items/keys/crowbar01.png" alt="Crowbar">',
canDrop: false,
isKey: true
},
fbi_archive: {
name: "FBI File 02",
description: "Medical records detailing disturbing experiments.",
icon: '<img src="img/items/documents/patient_file.png" alt="Patient File">',
canDrop: true,
isDocument: true
},
patient_fileN1: {
name: "Patient File 01",
description: "Medical records detailing disturbing experiments.",
icon: '<img src="img/items/documents/patient_file.png" alt="Patient File">',
canDrop: true,
isDocument: true
},
patient_fileN2: {
name: "Patient File 02",
description: "Medical records detailing disturbing experiments.",
icon: '<img src="img/items/documents/patient_file.png" alt="Patient File">',
canDrop: true,
isDocument: true
},
};
// Enhanced addMissionItem function
window.addMissionItem = function(itemId) {
// Check if item exists
if (!State.variables.MissionItems[itemId]) {
console.error(`Mission item "${itemId}" not found`);
return false;
}
const missionItem = {
id: `mission_${itemId}`,
name: State.variables.MissionItems[itemId].name,
description: State.variables.MissionItems[itemId].description,
icon: State.variables.MissionItems[itemId].icon,
type: 'mission_item',
missionItemId: itemId,
count: 1,
canDrop: State.variables.MissionItems[itemId].canDrop || false,
isKey: State.variables.MissionItems[itemId].isKey,
isDocument: State.variables.MissionItems[itemId].isDocument
};
// Find an empty slot in the main inventory
const emptySlot = window.findEmptySlot(missionItem);
if (emptySlot) {
State.variables.inventory[emptySlot.type][emptySlot.index] = missionItem;
// Add visual feedback
NotificationSystem.show(`Obtained: ${missionItem.name}`, 'info');
// Update inventory display
window.updateInventoryDisplay();
return true;
} else {
NotificationSystem.show('No space in inventory for mission item', 'warning');
return false;
}
};
// Add check for mission items function
window.hasMissionItem = function(itemId) {
if (!State.variables.inventory.mission) return false;
return State.variables.inventory.mission.some(item =>
item && item.missionItemId === itemId
);
};
// Enhanced initialization to ensure mission array exists
window.initializeInventory = function() {
if (!State.variables.inventory) {
State.variables.inventory = {
main: Array(8).fill(null),
quickbar: Array(5).fill(null),
weapons: Array(4).fill(null),
mission: []
};
}
// Always ensure mission array exists
if (!Array.isArray(State.variables.inventory.mission)) {
State.variables.inventory.mission = [];
}
};
<</script>><div id="CBox">
<div id="Ntext">With precise movements, you manipulate the internal pins until you feel a subtle click. The door unlocks with a faint snap, and the alarm remains silent.</div>
<<say $Mc>>Alright... Let's see what's inside.<</say>>
<div class="links">
<th>[[Inspect the car|FBIcar]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You grit your teeth and swing the iron bar with all your strength against the car window. The impact echoes through the night with a dull thud, but the glass barely reacts, leaving only a faint mark on the surface.</div>
<<say $Mc>>Tsk…<</say>>
<div id="Ntext">Frowning, you try again, this time with more force. The shock vibrates through your hands, but the glass remains unscathed.</div>
<div id="Pensamiento">Maybe one more time.</div>
<div id="Ntext">You take a deep breath, tighten your grip, and deliver one final strike, pouring all your pent-up rage into it. A sharp crack fills the air—but it's not the glass that gives way. The bar snaps in two.</div>
<<say $Mc>>I should’ve known bulletproof glass wouldn’t break so easily. Maybe if I were a 2-meter-tall NBA player…<</say>>
<div class="links">
<th>[[Back|Parking2]]</th>
</div>
</div>
<<set $ironbarStair = false>>
<<discardItem "mission_iron_barStairs">><div id="CBox">
<div id="Ntext">You insert the key into the lock and turn it carefully. The door unlocks with a soft click, and the alarm remains silent.</div>
<<say $Mc>>Alright... Let's see what's inside.<</say>>
<div class="links">
<th>[[Inspect the car|FBIcar]]</th>
</div>
</div>
<<discardItem "mission_keycar">><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You approach the elevators. The button panel is somewhat worn, but still visible.</div>
<<default>>
<div id="Ntext">The yellow elevators stand right in front of you.</div>
<</switch>>
<div class="linksTwo">
<th>[[Call elevator|EYcall]]</th>
<<if $YellowElevatorInspect isnot true>>
<th>[[Inspect elevator|EYinspect]]</th>
<</if>>
</div>
<div class="links">
<th>[[Back|MHrightroom]]</th>
</div>
</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You press the button of one of the elevators, but nothing happens. No sound, no sign of it working. You repeat the motion on the other elevator. The same.</div>
<div id="Pensamiento">I should've figured as much...</div>
<<case 2>>
<div id="Ntext">You press the button of one of the elevators, but nothing happens. No sound, no sign of it working. You repeat the motion on the other elevator. The same.</div>
<div id="Pensamiento">I should've figured as much...</div>
<<say $Mc>>Maybe there's a way to restore the power.<</say>>
<<default>>
<div id="Ntext">You press the button of one of the elevators, but nothing happens.</div>
<</switch>>
<div class="links">
<th>[[Back|Yellowelevator]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You approach the elevator, noticing something strange. On the frame, near the doors, you find recent marks, as if someone had tampered with the controls or the panel. A faint trail of disturbed dust...</div>
<div id="Pensamiento">Doctor Home... No doubt about it. The marks are too fresh. He was here, there's no question. If he used these elevators... That means they were working. It's possible they were operational just recently. But now, who cut the power? And why?</div>
<<say $Mc>>He probably ordered someone to do it...<</say>>
<div id="Pensamiento">He must've set this up to trap me here...</div>
<div class="links">
<th>[[Back|Yellowelevator]]</th>
</div>
</div>
<<set $YellowElevatorInspect = true>><div id="CBox">
<div id="Ntext">Everything turns blurry. Liquid shadows slither across the walls, and reality flickers like a flame on the verge of dying out. And then, you see it.
A figure emerges from the darkness. It doesn’t walk, doesn’t move like anything of this world. Its form is wrong—an impossible amalgamation of existence and denial. Something that shouldn’t be here. Something that was never meant to be. An aberration.</div>
<<say $Mc>>No! Damn it! Not now!<</say>>
<div id="Ntext">As the creature approaches, the pain in your head vanishes quickly. But the absence is not relief… it’s worse. It’s as if something far greater has taken its place, something that devours every sensation, every thought.</div>
<<say $Mc>>This isn’t real… it can’t be real.<</say>>
<div id="Ntext">Your body feels light, distant, as if it no longer belongs to you, while the aberration keeps closing in. Its very existence warps reality around it, as if the world itself is trying to reject it. Its mere presence is nauseating—an error in creation, something that should have never been.</div>
<<say $Mc>>God… that’s disgusting.<</say>>
<div id="Pensamiento">I need to get out of here!</div>
<div id="Ntext">But you can’t move. Your instincts scream, and in a reflex, you draw your weapon.</div>
<div class="links">
<th>[[Shoot|monsterEvent1]]</th>
</div>
</div>
<<set $aberrationfight1 = 1>>
<<script>>
window.HealthEventSystem.addEvent('Aberration01', {
min: 0,
max: 20,
passage: 'Event-Aberration01',
chance: 100,
// Works in both combat and exploration
interruptBattle: true
});
<</script>>
<<if $Health < 20>>
<<checkHealthEvent>>
<<endif>><div id="CBox"></div>
<<script>>
startBattle('imposibleAberration', 20);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<playSound "sound" "media/sounds/werewolf.mp3" volume:0.5>><div id="CBox">
<<fadein 5s>>
<div id="Ntext">You fire, but the aberration doesn't even flinch. Its blackened flesh writhes like a mass of liquid shadows, deforming and reconstructing with each step it takes toward you.
You grit your teeth, pull the trigger again. And again.</div>
<</fadein>>
<<fadein 15s>>
<div id="Pensamiento">Nothing... </div>
<<say $Mc>>What the hell?<</say>>
<div id="Ntext">The creature advances, your flashlight flickers in your hand, as if the very light is afraid to illuminate what crawls before you. It has no face, just a pulsing void where a head should be. Its torso expands and contracts unnaturally, as if breathing in every direction at once.
You take a step back. Another. Your back hits the wall.</div>
<<say $Mc>>Shit!<</say>>
<div id="Ntext">The monster lunges at you. You try to move, but it's too fast. Its dark tentacle pierces your chest like a spear.</div>
<<say $Mc>>Ah!<</say>>
<div id="Ntext">The pain is unbearable. It's as if an icy pressure takes hold of you from within, tearing you apart from the core of your being. The air escapes your lungs. You try to scream, but only manage a choked sound. </div>
<<say $Mc>>No... no... no...<</say>>
<div id="Ntext">Your hands grasp at the air, searching for something to hold onto, but everything seems to collapse. You feel something crawl across your chest, but when you look, there's no hole. No blood. You stagger, incredulous, looking down, terrified. But your chest is intact. There's no wound. Only the pain.</div>
<<say $Mc>>What... what is happening?<</say>>
<div id="Ntext">Barely audible, your voice is broken. </div>
<div id="Pensamiento">I can't... hold on anymore!</div>
<div id="Ntext">You gasp, trying to keep control, but you can't. Your mind begins to give in.
Your knees buckle, and you fall to the floor. The monster is no longer in front of you, it has disappeared completely, leaving no trace.
Finally, your mind shuts down. The cold invades you completely, and you fall, into the darkness.</div>
<div class="links">
<<if $Fpartner is true>>
<th>[[Continue|Event-Flashback1-Female]]</th>
<<elseif $Mpartner is true>>
<th>[[Continue|Event-Flashback1-Male]]</th>
<<else>>
<th>[[Continue|Event-Flashback1-Solo]]</th>
<</if>>
</div>
<</fadein>>
</div>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<timed 5s>>
<<playSound"sound" "media/sounds/ab01.mp3" volume:0.5>>
<</timed>>
<<timed 15s>>
<<playSound "sound" "media/sounds/ab01.mp3" volume:0.5>>
<</timed>>
<style>
#character-menu, .phone-button, #character-inventory-toggle.ui-visible {
visibility: visible;
display: none;
}
.title2, .ptr, #credits {
opacity: 0;
</style>
<script>
hideInventoryButton();
</script>
<<set $EndAberrationEvent = true>>
<<set $aberrationfight1 = 2>><div id="CBox">
<div id="Ntext">You slide into the driver's seat and glance around. You're not sure what you're looking for—just something useful, a clue. The car's interior is in good condition. You search the dashboard and seats until you find a document on the passenger seat. The FBI seal on the cover catches your attention. Flipping through it briefly, you spot a familiar name. </div>
<<say $Mc>>Arklich Home.<</say>>
<div id="Pensamiento">Okey, let's see what we have here.</div>
<div class="links">
<th>[[Take files|FBIcar1]]</th>
</div>
</div>
<<set $FBIcar = true>><div id="CBox">
<div id="Ntext">You grab the document and begin to read it.</div>
<div id="documentofbi"></div>
<div class="links">
<th>[[Continue|fbicarThink]]</th>
</div>
</div>
<<SanityMessage "New archive">>
<<script>>
setup.phoneSystem.addFile("FBI file 01", "img/documents/fbifile_01.png");
<</script>>
<<playAudio "papper" "media/sounds/page.mp3" "sound" "volume:0.5">>
<style>
#documentofbi {
background-image: url(img/documents/fbifile_01.png);
background-size: cover;
position: relative;
top: 18%;
left: 50%;
transform: translate(-50%, -25%);
width: 48em;
height: 62em;
}
#Ntext {
top: -6em;
}
.links {
}
</style><div id="CBox">
<<say $Mc>>I’ll borrow this...<</say>>
<div id="Pensamiento">There's no turning back now. The doctor is kidnapping people, and I have to stop him.</div>
<<say $Mc>>Let's get moving.<</say>>
<<if $hasCarKey is true>>
<div class="links">
<th>[[Start the car|sabotageFBI]]</th>
</div>
<</if>>
<div class="links">
<th>[[Exit|Parking2]]</th>
</div>
</div>
<<script>>
addAmmo('9mm', 38)
<</script>>
<<SanityMessage "Main objective updated: Find Doctor Home's office">>
<<script>>
setup.phoneSystem.addObjective(
"Find Doctor Home's office.",
"Go to the Doctor's office on the first floor, hallway B, room 202. (End of the content for now.)",
'main',
'enterQuest' // ID
);
<</script>><div id="CBox">
<div id="Ntext">Taking the path around the building to avoid the forest, you reach the back. Roots cling to the cracked walls, and a dusty path leads to an old entrance. Some windows are boarded up, others broken, reflecting the moon. The silence is broken only by the creak of wood and the wind.</div>
<div class="links">
<th>[[Forest path|Camino-izquierda]]</th>
<th>[[Back of the building|Camino-intermedio]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">As you circle the building, you reach the back, where the windows are sealed and the walls are worn. Overgrown weeds cover old emergency exits, and the air smells of mildew. An abandoned courtyard stretches out in front of you, with sealed doors that seem forgotten.</div>
<div class="links">
<th>[[Back of the building|Camino-intermedio]]</th>
<th>[[Road to lake|Camino-derecha]]</th>
</div>
</div> <<SanityMessage "+1 Chemicals">>
<<silently>>
<<run window.addMissionItem('chemicals')>>
<</silently>>
<<goto "MHrightroom1">>
<<set $chemicals += 1>> <<set $srcrates = true>>
<<SanityMessage "+1 Chemicals">>
<<silently>>
<<run window.addMissionItem('chemicals')>>
<<set $chemicals += 1>>
<</silently>>
<<goto "SRoom2">><div id="CBox">
<div id="Ntext">You press the button, and the code activates. A shotgun drops out of the vending machine, and you pick it up, somewhat surprised.</div>
<<say $Mc>>Well... I guess it's time to get serious.<</say>>
<div class="links">
<th>[[Shed|shed]]</th>
</div>
</div>
<<script>>
window.addWeapon('Shotgun');
<</script>><div id="CBox">
<div id="Ntext">You slowly close the file, letting the information settle in your mind.</div>
<div id="Pensamiento">First floor, Hallway B, room 202. That's where Dr. Home's office is. Most likely, he's there.</div>
<div id="Ntext">You tuck the document into your pocket and look around. Next to your papers, you find a box of ammunition: <span style="color: #22b22e;">38 rounds 9mm</span>. The car is off, parked in the desolate place. Everything seems calm. As you sit behind the wheel, you take one last look at the hospital in front of you, the place where the pieces of the puzzle will finally come together.</div>
<div class="links">
<th>[[Take ammo|FBIcarAmmo]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.completeObjective('fbicar');
<</script>>
<<SanityMessage "Objective completed: FBI car">>
<div id="CBox">
<div id="Ntext">You reach into the wolf's throat, your fingers brushing against something hard and foreign. After a brief struggle to free it, you pull out a worn, grimy object. It's a card, caked in mud and streaked with blood. You hold it in your hands, wiping it clean with the edge of your jacket.
It's an access card. The magnetic strip is scratched and worn from use, but the printed text is still visible, albeit slightly faded: Access Level B2 – No entry without authorization.</div>
<<say $Mc>> Level B2. What does that mean?<</say>>
<div id="Ntext">With a soft exhale, you tuck the card into your jacket pocket. You don't know what door it opens, but something tells you this is no ordinary find.</div>
<div id="Pensamiento">It might be useful later.</div>
<div class="links">
<th>[[Continue|Cave4]]</th>
</div>
</div>
<<silently>>
<<run window.addMissionItem('b2card')>>
<<set $b2card = true>>
<</silently>>
<<SanityMessage "Added B2 Magnetic card to inventory">><div id="npc-container">
<img src="img/characters/dochome/dochome.png">
</div><div id="npc-container">
<img src="img/characters/henry/captain.png">
</div><div id="npc-container">
<img src="img/characters/rodriguez/rodriguez.png">
</div><div id="npc-container">
<img src="img/characters/frank/frank.png">
</div>
<div id="npc-container">
<img src="img/characters/dina/dina.png">
</div><div id="npc-container">
<img src="img/characters/rust/rust.png">
</div><div id="npc-container">
<img src="img/characters/rodriguez/gabriela2.png">
</div><div id="npc-container">
<img src="img/characters/rodriguez/gabriela1.png">
</div>
<div id="CBox">
<div id="Ntext">You insert the keys into the ignition and turn, but the engine doesn't respond. You try again, with more force, but all you hear is a faint buzz followed by a deathly silence.</div>
<div id="Pensamiento">The car won't start. Maybe someone sabotaged it.</div>
<div id="Ntext">You get out of the car and open the hood. A quick glance confirms your suspicions: a disconnected fuel line, cut wires, the entire electrical system tampered with.</div>
<div id="Pensamiento">The sabotage is obvious, though not very professional.</div>
<<say $Mc>>Someone didn’t want Rust and Dina to leave here.</say>
<div id="Ntext">You slam the hood shut in frustration, the loud bang echoing through the abandoned parking lot as you realize you also arrived by car.</div>
<<say $Mc>>Shit! I should check my car.</say>
<div class="links">
<th>[[Parking|Parking2]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You open the car door and settle into the driver's seat, the air filled with the familiar scent of leather and metal.</div>
<<if $hasCarKey isnot true>>
<<switch visited()>>
<<case 3>>
<<say $Mc>> Why the hell am I here again? Maybe I should find the keys first.<</say>>
<</switch>>
<</if>>
<<if $hasCarKey is true>>
<div class="links">
<th>[[Start the car|sabotageFBI]]</th>
</div>
<</if>>
<div class="links">
<th>[[Exit|Parking2]]</th>
</div>
</div><<discardItem "mission_lockpick">><<if $CaseyJacket isnot true && $CaseyCoat isnot true>>
<<run changeImage("img/characters/casey/nude.png")>>
<</if>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBox">
<div id="Ntext"></div>
<div class="links">
<th>[[Continue|PastEvent-a2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext"></div>
<div class="links">
<th>[[Continue|Main Hallway3]]</th>
</div>
</div><<giveLockpicks 5>>
<<lockBreak "average" "LockPickUsual" "Failure" true>><<lockBreak "average" "LockPickUsual" "FailedToOpenChestPassage">>
easy, average,hard, veryhard<<lockBreak "average" "openfbicar" "Parking2" true>><div id="CBox">
<div id="Pensamiento">That night, unaware of what was happening at home, I was with Luke, enjoying an evening together. I could never have imagined that, at that same moment, someone would break into my house. I never believed it was a random robbery; something inside me told me it had been planned, that there was more behind it all.
My parents were found dead and Angelica… Angelica was gone.
For months... no, for two years, I searched relentlessly, clinging to the hope of finding her alive. But it was all in vain. The police closed the case due to lack of evidence, leaving me alone with my grief.
From that moment on, my life unraveled. I sank into guilt and alcohol, trying to forget the emptiness inside me. I became reckless, crossing lines I swore I would never cross. My mistakes hurt those close to me, and in the end, I was thrown out of the police force.
Luke tried to help me at first, but I wasn’t the same person anymore. I pushed him away, locked myself in my own suffering, until he finally gave up. I don’t blame him. No one can carry the weight of someone who is destroying themselves.
But even at my worst, I’ve always been a rational person. When I hit rock bottom, I knew I couldn’t stay there. I opened a private detective agency to rebuild what little was left of my life, to keep searching for justice in a world that had taken everything from me.
Maybe it’s redemption. Maybe it’s revenge. Or maybe I’m just a broken woman chasing something I’ll never find.</div>
<div class="links">
<th>[[Wake up|intro1]]</th>
</div>
</div>
<<set $Mpartner = true>>
<<set $Fpartner = false>><div id="CBox">
<div id="Pensamiento">That night, unaware of what was happening at home, I was with Violet, enjoying an evening together. I could never have imagined that, at that same moment, someone would break into my house. I never believed it was a random robbery; something inside me told me it had been planned, that there was more behind it all.
My parents were found dead and Angelica… Angelica was gone.
For months... no, for two years, I searched relentlessly, clinging to the hope of finding her alive. But it was all in vain. The police closed the case due to lack of evidence, leaving me alone with my grief.
From that moment on, my life unraveled. I sank into guilt and alcohol, trying to forget the emptiness inside me. I became reckless, crossing lines I swore I would never cross. My mistakes hurt those close to me, and in the end, I was thrown out of the police force.
Violet did everything she could to help me, but I wasn't the same. I pushed her away, locked myself in my own suffering, until she finally gave up. I don't blame her. No one can carry the weight of someone who is destroying themselves.
But even at my worst, I’ve always been a rational person. When I hit rock bottom, I knew I couldn’t stay there. I opened a private detective agency to rebuild what little was left of my life, to keep searching for justice in a world that had taken everything from me.
Maybe it’s redemption. Maybe it’s revenge. Or maybe I’m just a broken woman chasing something I’ll never find.</div>
<div class="links">
<th>[[Wake up|intro1]]</th>
</div>
</div>
<<set $Mpartner = false>>
<<set $Fpartner = true>><div id="CBox">
<div id="Pensamiento">That night, I was working on a simple case with Gabriela Rodríguez. The investigation wasn't complicated, but the lack of a real challenge only made the fatigue more apparent. We had been reviewing reports, discussing potential suspects, and going through some notes, all in a relatively calm environment.
I never imagined that, while we were so focused on what seemed like a routine task, something much darker was happening at my home.
My parents were found dead, and Angelica... Angelica had disappeared.
For months... no, for two years, I searched for her relentlessly, holding on to the hope that I would find her alive. But it was in vain. The police closed the case due to a lack of evidence, leaving me alone with my grief.
From that moment, my life fell apart. I drowned in guilt and alcohol, trying to forget the emptiness I felt inside. I became reckless, crossed lines I swore I never would. My mistakes hurt those close to me, and eventually, I was thrown out of the police force.
But even at my lowest, I've always been a rational person. When I hit rock bottom, I knew I couldn't stay there. I opened a private detective agency to rebuild what little was left of my life, to keep searching for justice in a world that had taken everything from me.
Maybe it's redemption. Maybe it's revenge. Or maybe I'm just a broken woman chasing something I'll never find.</div>
<div class="links">
<th>[[Wake up|intro1]]</th>
</div>
</div>
<<set $Vpartner = false>>
<<set $Mpartner = false>>
<<set $Fpartner = false>>
<<set $Solo = true>><div id="npc-container">
<img src="img/characters/luke/luke.png">
</div><div id="npc-container">
<img src="img/characters/violet/violet.png">
</div><div id="CBox">
<div id="Ntext">A warm sensation spreads through your body, slowly pulling you out of the darkness. The cold fades, replaced by the softness of sheets wrapping around you.
The faint scent of cologne and morning air lingers in the room. A golden, diffused light filters through the curtains, casting soft shadows on the walls.
Your body feels heavy, but there is no pain. Your breathing is slow and steady. For a moment, everything is peaceful.
You shift slightly, feeling the weight of an arm resting on your waist. The warmth of another body against your back sends a familiar sensation.</div>
<<say $Mc>>Mmm…<</say>>
<div id="Ntext">The mattress dips slightly as the person beside you moves and whispers into your ear.</div>
<<say $Violet>>Good morning. I'm going to take a shower.<</say>>
<div id="Ntext">Their tone is low, heavy with sleep. Before getting up, they press a slow kiss against your shoulder. Then, the warmth of their body fades, though their fingers still trace lightly along your arm before pulling away completely.</div>
<div class="links">
<th>[[Tell her to stay|Event-Flashback2-Female]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/nude.png")>>
<<set $abominationEvent = "complete">>
<<set $IntroVision = true>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.2>>
<<playSound "sound" "media/sounds/none.mp3">>
<<timed 10s>>
<<include "Violet">>
<</timed>>
<<set $Health = 100>>
<<set $Sanity = 60>>
<<script>>
setup.phoneSystem.addContact("Violet", "My old lover, I haven't heard from her in a long time.", "img/characters/violet/avatar.png");
<</script>><div id="CBox">
<div id="Ntext">A warm sensation spreads through your body, slowly pulling you out of the darkness. The cold fades, replaced by the softness of sheets wrapping around you.
The faint scent of cologne and morning air lingers in the room. A golden, diffused light filters through the curtains, casting soft shadows on the walls.
Your body feels heavy, but there is no pain. Your breathing is slow and steady. For a moment, everything is peaceful.
You shift slightly, feeling the weight of an arm resting on your waist. The warmth of another body against your back sends a familiar sensation.</div>
<<say $Mc>>Mmm…<</say>>
<div id="Ntext">The mattress dips slightly as the person beside you moves and whispers into your ear.</div>
<<say $Luke>>Good morning. I'm going to take a shower.<</say>>
<div id="Ntext">Their tone is low, heavy with sleep. Before getting up, they press a slow kiss against your shoulder. Then, the warmth of their body fades, though their fingers still trace lightly along your arm before pulling away completely.</div>
<div class="links">
<th>[[Tell him to stay|Event-Flashback2-Male]]</th>
</div>
</div>
<<run changeImage("img/characters/casey/nude.png")>>
<<set $abominationEvent = "complete">>
<<set $IntroVision = true>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.2>>
<<playSound "sound" "media/sounds/none.mp3">>
<<timed 10s>>
<<include "Luke">>
<</timed>>
<<set $Health = 100>>
<<set $Sanity = 60>>
<<script>>
setup.phoneSystem.addContact("Luke", "My old lover, I haven't heard from her in a long time.", "img/characters/luke/avatar.png");
<</script>><div id="CBox">
<div id="Ntext">After the last blink.
Your reflection stares back at you from the police station bathroom mirror. For a second, your eyes seem unfamiliar, as if you're looking at yourself through someone else's gaze. The cold water you splash on your face does little to shake the feeling.</div>
<<say $Mc>>Must be the exhaustion... Ah...<</say>>
<div id="Pensamiento">I must to finish this soon...</div>
<div class="links">
<th>[[Back to the office|Event-Flashback2-Solo]]</th>
</div>
</div>
<<set $abominationEvent = "complete">>
<<set $IntroVision = true>>
<<set $Health = 100>>
<<set $Sanity = 60>>
<<run changeImage("img/characters/casey/casey.png")>>
<<playMusic "music" "media/music/none.mp3">>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music2" "media/music/newstart.mp3" volume:0.2>>
<<playSound "sound" "media/sounds/none.mp3">><div id="CBox">
<div id="Ntext">You turn over in bed, reaching out with a lazy hand, brushing your fingers against their skin.</div>
<<say $Mc>>Stay a little longer…<</say>>
<div id="Ntext">You hear their soft laugh before their fingers gently caress your cheek.</div>
<<say $Violet>>It’s already late, I have to leave soon...<</say>>
<div id="Ntext">You let out a sigh, clinging a little longer to their warmth, but they’re already pulling away. The mattress dips slightly as they sit at the edge of the bed.
She stretches, running a hand through her hair before standing up. Her steps are slow, unhurried, as she makes her way toward the bathroom.</div>
<div class="links">
<th>[[Stop her|Event-sofa-Female]]</th>
</div>
</div>
<<include "Violet">><div id="CBox">
<div id="Ntext">You turn over in bed, reaching out with a lazy hand, brushing your fingers against their skin.</div>
<<say $Mc>>Stay a little longer…<</say>>
<div id="Ntext">You hear their soft laugh before their fingers gently caress your cheek.</div>
<<say $Luke>>It’s already late, I have to leave soon...<</say>>
<div id="Ntext">You let out a sigh, clinging a little longer to their warmth, but they’re already pulling away. The mattress dips slightly as they sit at the edge of the bed.</div>
<<say $Luke>>But if you want… you can join me in the shower.<</say>>
<div class="links">
<th>[[Close your eyes for a few more minutes|Event-Flashback2b-Male]]</th>
<th>[[Go to the shower|Event-shower-Male]]</th>
</div>
</div>
<<include "Luke">><div id="CBox">
<div id="Ntext">You sigh and step out of the bathroom. The office looks the same as always—piles of documents, cold coffee on the desks, dim lights flickering over the worn-out carpet. Rodríguez is there, slumped in her chair, one hand covering her face. Exhausted.</div>
<div class="links">
<th>[[I'm back|Event-Flashback3-Solo]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You close your eyes and surrender completely to the warmth of the bed. The soft fragrance of the sheets and the distant echo of water falling in the shower surround you. </div>
<div id="Pensamiento">Just a few more minutes…</div>
<div id="Ntext">Your body relaxes again. Slow breathing and the steady rhythm of your heartbeat pull you back into that in-between state of sleep and wakefulness, where time feels hazy, floating in a comforting peace.
But eventually, reality calls you back. A shiver runs across your skin as the warmth trapped in the sheets begins to fade. You shift lazily, rolling onto your side before slowly opening your eyes.
The golden light filtering through the curtains bathes the room in a soft glow. Everything remains calm.
You stretch slowly, letting out a quiet sigh as your mind fully awakens. The sound of running water still echoes from the shower.</div>
<div id="Pensamiento">He’s still there.</div>
<div id="Ntext">For a moment, you simply stay in bed, listening to the murmur of the water and the tranquility of the space, savoring these last few seconds of stillness before getting up.</div>
<div class="links">
<th>[[Go to the shower|Event-showerb-Male]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The sound of water falling on the tiles guides you to him. Without thinking twice, you slide the shower door open and step inside, letting the warmth of the steam wrap around your skin. Luck turns, surprised to see you there. A smirk crosses his face before his hands slowly slide down to your waist, pulling you closer.
You step in, pressing your chest against his wet torso, feeling the steady beat of his heart against yours. He lets out a soft chuckle and runs his fingers down your back, tracing over your damp skin.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/luke/kiss.mp4", 90, "cover");
<</script>>
<<say $Luke>>I thought you weren’t coming...<</say>>
<div class="links">
<th>[[Let him penetrate you|Event-shower-Male2]]</th>
</div>
</div>
<<include "Luke">>
<<script>>
setup.phoneSystem.unlockMedia("Luke", "video", "media/luke/kiss.mp4");
<</script>><div id="CBox">
<div id="Ntext">You approach Luke before he can walk away and gently grab his wrist. He smiles, understanding your intent, and lets you lead him toward the bathroom.</div>
<<say $Luke>>Oh? Didn’t you want five more minutes of sleep?<</say>>
<<say $Casey>>I changed my mind.<</say>>
<div id="Ntext">Your lips meet in a deep, hungry kiss. His hands roam your skin, pulling you against him as desire takes over. With nothing to stop you, the heat between you ignites, consuming you both completely.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/luke/kiss.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Let him penetrate you|Event-shower-Male2]]</th>
</div>
</div>
<<include "Luke">>
<<script>>
setup.phoneSystem.unlockMedia("Luke", "video", "media/luke/kiss.mp4");
<</script>><div id="CBox">
<div id="Ntext">Before she can continue to the bathroom, you stand up and gently grasp her wrist. Violet turns, surprised, but there’s a mischievous spark in her eyes.</div>
<<say $Violet>>Casey... I'm in a hurry. I must to...<</say>>
<div id="Ntext">You pull her closer without a word. She lets out a soft laugh, but it fades the moment your lips meet hers. The kiss starts slow, unhurried, but as your hands trace over her bare skin, the air between you shifts.
Violet sighs against your mouth, her fingers tightening around your waist as she guides you toward the couch. You fall together onto the cushions, skin against skin, breathless. Her body moves against yours, each touch stoking the heat between you.</div>
<div class="links">
<th>[[Continue|Event-sofa-Female1]]</th>
</div>
</div>
<<include "Violet">><div id="CBox">
<<say $Mc>>I'm back.<</say>>
<<say $Gabrielayoung>>We should go get some rest.<</say>>
<div id="Pensamiento">She doesn't believe in her own words.</div>
<<say $Mc>>I'm not leaving until we finish this.<</say>>
<div id="Ntext">Rodríguez lets out a tired chuckle and stretches in her chair, making her stiff joints crack as she remains seated.</div>
<<say $Gabrielayoung>>Of course not.<</say>>
<div class="links">
<th>[[Work|Event-Flashback4-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<div id="Ntext">The sound of keystrokes filled the office as you and Rodríguez scoured the FBI files. The screen casts a blue glow over your tired faces. Hours of searching, cold coffee, and eyes burning from fatigue, but finally…</div>
<<say $Gabrielayoung>>Here it is… here it is!<</say>>
<div id="Ntext">Her voice is full of triumph. You move closer, somewhat incredulous, as she scrolls through the document on the screen.</div>
<<say $Gabrielayoung>>I think we've got it, Casey. Look: Jackeline Harrington, the aunt of Daniel R. Harrington. She lives with her daughter, Marianne L. Harrington. According to the file, they are located at Luminara Avenue, Apartment 24, Central District of the city, on the second floor, left side of the Monteverde Building. It also says here that Daniel became an orphan at a very young age, though it doesn't specify what happened.<</say>>
<div id="Ntext">Rodríguez slides the cursor to highlight the information.</div>
<<say $Mc>>Second floor, left side... apartment 4... How did this get into the files?<</say>>
<<say $Gabrielayoung>>Check this out, in Daniel's history, it says that when he was 13, he was involved in a pretty messed-up incident—he burned the neighbor's kitten. It’s all recorded in the system. He already showed signs of psychopathy at a young age.<</say>>
<div class="links">
<th>[[You beat me to it!|Event-Flashback5-Solo]]</th>
<th>[[You're incredible!|Event-Flashback5b-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<<say $Mc>>You beat me to it!<</say>>
<div id="Ntext">Rodríguez, holding back a small smile, nods and continues without slowing down.</div>
<<say $Gabrielayoung>>That's what I love about working with you, you never give up.<</say>>
<<say $Mc>>Well, now we know where Daniel's aunt is. He might be there, or maybe she knows something.<</say>>
<<say $Gabrielayoung>>Exactly. Daniel's house is abandoned, so he’s probably moved in with her, or at least she might know where he is.<</say>>
<div id="Pensamiento">Hmm... Why the hell couldn’t we find this information sooner?</div>
<<say $Gabrielayoung>>What are you thinking, Casey?<</say>>
<<say $Mc>>I wonder why it’s been so hard to find this information... Information about his aunt should have been available, damn it! I just found out this bastard has a aunt...<</say>>
<<say $Gabrielayoung>>I don’t know... Sometimes, the pieces take time to fall into place.<</say>>
<<say $Mc>>I don’t buy it... Something’s off. This should have been resolved days ago. Why is everything so hidden?<</say>>
<<say $Gabrielayoung>>Sometimes, the information is where you least expect it. Not everything is as it seems on the surface.<</say>>
<<say $Mc>>No, Rodríguez. I’m telling you, something’s wrong. There’s something that doesn’t add up. It’s not just the case, it’s everything. I have this feeling that someone inside the police... is tampering with evidence... Not just in this case, but in others too.<</say>>
<<say $Gabrielayoung>>Shh! Don’t raise your voice, alright? This is why everyone here hates you...<</say>>
<div class="links">
<th>[[I’m not yelling|Event-Flashback6-Solo]]</th>
</div>
<<include "Gabi">><div id="CBox">
<<say $Mc>>You're incredible!<</say>>
<<say $Gabrielayoung>>I knew we'd pull it off, Casey!<</say>>
<div id="Ntext">Rodríguez slowly moves closer, and in a tender gesture, brushes his lips with yours. The surprise is reflected in your eyes, creating an awkward moment.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/gabi/kiss.mp4", 90, "cover");
<</script>>
<div id="Pensamiento">Wow... She got too excited.</div>
<<say $Gabrielayoung>>I'm sorry... I... got carried away...<</say>>
<<say $Mc>>Well, I understand but... we still have to catch him...<</say>>
<<say $Gabrielayoung>>Yes... you're right...<</say>>
<div class="links">
<th>[[Continue with the case|Event-Flashback5c-Solo]]</th>
</div>
</div>
<<set $GabiTryToKiss = true>>
<<include "Gabi">>
<<script>>
setup.phoneSystem.unlockMedia("Gabi", "video", "media/gabi/kiss.mp4");
<</script>>
<style>
#gif {
width: 400px;
height: 100%;
position: relative;
left: 15em;
}
</style><div id="CBox">
<<say $Mc>> I’m not yelling, I’m just thinking out loud. And if that makes them hate me, let them hate me.<</say>>
<<say $Gabrielayoung>>Casey, it’s not that simple. If what you're saying is true, it’s dangerous to talk here... If there really is someone inside the police tampering with evidence, this is much bigger than it seems.<</say>>
<<say $Mc>>It's terrifying... But we can't keep ignoring it, Rodríguez. We’ve already seen how they’ve blocked us multiple times. What if they’re covering up someone bigger, or something?<</say>>
<<say $Gabrielayoung>>I'm not saying I don't believe you, but we have to be smart. We can't go around swinging blindly. If we make such an accusation without evidence, they’ll crush us.<</say>>
<<say $Mc>>I know. But if we don’t start moving, we’ll never discover anything.<</say>>
<<say $Gabrielayoung>>And what do you suggest?<</say>>
<div id="Ntext">The silence fills the room for a long moment. Rodríguez finally shrugs and gestures with her hands in a subtle, soft motion.</div>
<<say $Mc>>We keep working on the case, of course. But after that, we need to do something, maybe talk to Captain Havook.<</say>>
<<say $Gabrielayoung>>Yeah, after this case. But for now, let’s focus on finding Daniel’s aunt. We can’t let him slip away.<</say>>
<<say $Mc>>Exactly. First, we need to finish this. Let’s pay a visit to that address, Luminara Avenuea #23. Maybe we’ll find something else there, and if we're lucky, we’ll finally know where Daniel is.<</say>>
<<say $Gabrielayoung>>Let’s go then. We can’t waste any more time. If he’s with his aunt, we need to find him before he disappears again.<</say>>
<div id="Ntext">Both of you stand up, gathering your things with determination. As you head towards the door, the suspicion about corruption within the police continues to linger in your mind, while the fatigue begins to take its toll.</div>
<div id="Pensamiento">Damn it, I’m sure! I’m sure there’s someone here! Someone who’s been playing me. Since they killed my family and kidnapped my sister, someone has been playing with me... I swear on everything I have left, I’ll find them. I’ll find my sister. I’ll kill them all if necessary.</div>
<div class="links">
<th>[[Go to the car|Event-Flashback7-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<<say $Mc>>Now we know where Daniel's aunt is. He might be there, or maybe she knows something.<</say>>
<<say $Gabrielayoung>>Exactly. Daniel's house is abandoned, so he’s probably moved in with her, or at least she might know where he is.<</say>>
<div id="Pensamiento">Hmm... Why the hell couldn’t we find this information sooner?</div>
<<say $Gabrielayoung>>What are you thinking, Casey?<</say>>
<<say $Mc>>I wonder why it’s been so hard to find this information... Information about his aunt should have been available, damn it! I just found out this bastard has a aunt...<</say>>
<<say $Gabrielayoung>>I don’t know... Sometimes, the pieces take time to fall into place.<</say>>
<<say $Mc>>I don’t buy it... Something’s off. This should have been resolved days ago. Why is everything so hidden?<</say>>
<<say $Gabrielayoung>>Sometimes, the information is where you least expect it. Not everything is as it seems on the surface.<</say>>
<<say $Mc>>No, Rodríguez. I’m telling you, something’s wrong. There’s something that doesn’t add up. It’s not just the case, it’s everything. I have this feeling that someone inside the police... is tampering with evidence... Not just in this case, but in others too.<</say>>
<<say $Gabrielayoung>>Shh! Don’t raise your voice, alright? This is why everyone here hates you...<</say>>
<div class="links">
<th>[[I’m not yelling|Event-Flashback6-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<div id="Ntext">Both of you arrive quickly at the parking lot. The night is young, and the lights from the signs in front of the police station flicker slightly. You walk straight toward the driver’s seat, but Gabriela stops you with a hand on your arm.</div>
<<say $Gabrielayoung>>Casey, give me the keys.<</say>>
<<say $Mc>>What? No, I’m fine.<</say>>
<<say $Gabrielayoung>>No, you're not. Your eyes are closing. Come on, it's just a short drive.<</say>>
<<say $Mc>>That's exactly why. It's short. I'm not going to fall asleep in ten minutes.<</say>>
<<say $Gabrielayoung>>Oh, right, because you're one of those new robots—never gets tired.<</say>>
<<say $Mc>>You got it.<</say>>
<<say $Gabrielayoung>>Casey... how long has it been since you actually slept well?<</say>>
<div id="Pensamiento">I... don't know. Two days, maybe three...</div>
<<say $Mc>>I got some sleep last night.<</say>>
<<say $Gabrielayoung>>And how much is "some" for you?<</say>>
<div id="Ntext">Your response is so quiet that Rodríguez barely hears it.</div>
<<say $Mc>>About 3 hours, more or less...<</say>>
<<say $Gabrielayoung>>What? You can't keep going like this! At least close your eyes for a bit—Jesus, Casey...!<</say>>
<div id="Ntext">You run a hand over your face, feeling the burning in your eyelids. Until now, you had ignored the exhaustion, but Rodríguez's words seem to pull it out from where you had buried it, reminding you just how heavy it is.
Gabriela lets out a sharp sigh, clenching her fists tightly. Her patience has completely evaporated, and concern turns into frustration.</div>
<<say $Gabrielayoung>>You know what? No. I’m not going to argue about this. You’re not in condition, Casey. No way.<</say>>
<<say $Mc>>Don’t exaggerate Gabi...<</say>>
<div id="Ntext">Gabriela immediately extends her hand, palm open, demanding the keys.</div>
<<say $Gabrielayoung>>Give them to me. Now.<</say>>
<div class="links">
<th>[[Give her the keys|Event-Flashback8-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<div id="Ntext">You bite your lips until they almost bleed, feeling your pride twist in your chest. But knowing that Rodríguez is right, you relent. With a heavy sigh, you take the keys out and hand them to her.</div>
<<say $Mc>>Just ten minutes.<</say>>
<<say $Gabrielayoung>>Whatever the drive takes.<</say>>
<div id="Ntext">She pauses, looking at you straight in the face, her expression rigid.</div>
<div id="Pensamiento">She is clearly angry,...</div>
<<say $Gabrielayoung>>This has to be the last time. Do you hear me? The last time we finish a case like this! I’m done! You always end up a wreck, always! How am I supposed to trust you to cover my back in that state? No way!<</say>>
<div id="Ntext">Her words hit you like a hammer. Your eyes widen for a few seconds as you listen to your partner’s words. The pain of the truth cuts deep, and you know she couldn’t be more right.</div>
<<say $Gabrielayoung>>I can’t keep working like this with you, Casey. You’re a great detective and... my best friend... but if you keep going like this, you’re dragging down, and me with you.<</say>>
<div id="Ntext">The anger mixes with discomfort, but you can't deny it. Gabriela's words cut through you, but you have no response.</div>
<div id="Pensamiento">God, Gabi, I...</div>
<<say $Mc>>I'm sorry...<</say>>
<<say $Gabrielayoung>>Just make sure you really rest next time, okay?<</say>>
<div class="links">
<th>[[Everything will be fine|Event-Flashback9-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<div id="Ntext">Gabriela starts the car with a heavy sigh, her hands firmly gripping the steering wheel. The engine hums softly, and the sound of city traffic mixes with the dense silence between you both. Gabriela keeps her eyes on the road, her expression still tense, though a little calmer after what had just happened.
You lean back in the seat, feeling exhaustion overtake you completely. Though you know you shouldn’t fall asleep, your eyelids no longer respond. The hum of the engine, the soft vibration of the wheels on the asphalt, is almost hypnotic.
Gabriela glances at you quickly, noticing how your eyes seem to close completely, the weight of fatigue finally taking control of your body.</div>
<<say $Gabrielayoung>>Just ten minutes, huh?<</say>>
<div class="links">
<th>[[Sleep|Event-FlashbackEnd-Solo]]</th>
</div>
</div>
<<include "Gabi">><div id="CBox">
<div id="Ntext">Finally, you can’t keep your eyes open any longer. The exhaustion weighs on you so heavily that, despite the persistent feeling that you should stay alert, your body betrays you. You lean back in the seat, surrendering to the comfort you feel. For a moment, it feels like peace, a brief respite from the storm of thoughts and the tension that overwhelms you.</div>
<div class="links">
<th>[[Wake up|Event-FlashbackEnd2-Solo]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">A sharp sensation pulls you out of sleep. It’s not a gentle awakening, but a jolt, a harsh return to reality. You open your eyes, but nothing feels familiar. The air is cold, damp, stale.
The smell of mold and decay fills your nostrils. You slowly rise, feeling how your body is stiff, as if you've been here much longer than you remember. Looking around, everything is dark, except for the faint light of the moon filtering through broken windows. The silence is complete, heavy.
The sense of disorientation consumes you as you stand, the cold, dusty floor beneath your feet. There’s no sign of the aberration that attacked you before.</div>
<div class="links">
<th>[[Get up|Event-FlashbackEnd3-Solo]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The cold of the floor is the first thing you perceive upon waking. The rough, dusty stone presses against your skin as you clumsily push yourself up. The dense, humid air barely stirs, and a rancid stench clings to the atmosphere, invading your senses.
Shadows stretch around you, cast by the pale moonlight filtering through the broken windows. The room is completely silent, an unsettling void that offers no clues about what happened before.</div>
<div id="Pensamiento">Where…?</div>
<<say $Mc>>Shit. How long was I out?<</say>>
<div id="Ntext">Your fingers slowly trail to your chest, searching for the damage caused by the tentacle. No wounds. No blood.</div>
<div id="Pensamiento"> This isn’t possible. And the dream...</div>
<<say $Mc>>Shit… this dream...<</say>>
<div id="Ntext">You exhale sharply, pressing your hand to your temple. The past pulls at you like an unstoppable current, each memory unraveling the present.</div>
<div id="Pensamiento">It was my last case with Gabi. She was right… it didn’t end well.</div>
<div id="Ntext">The darkness around you surrounds you, the humidity seeps into your bones, and the echo of the past continues to resonate in your mind. You feel as if you are trapped, lost between two worlds. But the present is what matters most.</div>
<div id="Pensamiento">That thing… whatever it was… attacked me, and then… maybe it was a hallucination or… Shit, I need to focus.</div>
<div id="Ntext">You close your eyes for a moment, trying to gather strength, trying not to think about the creature.</div>
<<say $Mc>>This can't stop me. I have to keep going.<</say>>
<div id="Ntext">You pull away from the wall, and although your body still feels heavy, you force yourself to stand firm. Each movement is a reminder that you're still alive.</div>
<div class="links">
<th>[[Continue|Grand Hall]]</th>
</div>
</div>
<<playMusic "music2" "media/music/none.mp3" volume:0.2>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBox">
<div id="Ntext">You lean between her legs, feeling her breath quicken as your tongue glides over her skin. Every movement of yours makes her tremble, surrendering to pleasure. Without hesitation, you bury your face between her thighs, devouring her with hunger, as if she were the most delicious feast you've ever tasted.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/eatpussy.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Let her lick you more|Event-sofa-Female3]]</th>
<th>[[Eat more pussy|Event-sofa-Female4]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/eatpussy.mp4");
<</script>><div id="CBox">
<div id="Ntext">You shudder, biting your lip as Violet continues licking with dedication. Your fingers grip her hair, guiding her gently.</div>
<<say $Mc>>Don’t stop...<</say>>
<div id="Ntext">She smiles against your skin before deepening her rhythm, savoring every sound she draws from you.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/lickpussy.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Lick her pussy|Event-sofa-Female2]]</th>
<th>[[Scissors|Event-sofa-Female5]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/lickpussy.mp4");
<</script>><div id="CBox">
<div id="Ntext">Violet settles on top of you, starting slowly, but soon her hips move with a desperate rhythm, seeking more friction between you both. </div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/scissors.mp4", 90, "cover");
<</script>>
<div id="Ntext">The warmth of her skin blends with yours, the electric friction making each moan grow louder.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/scissors2.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[End|Event-sofa-Female6]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/scissors.mp4");
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/scissors2.mp4");
<</script>>
<div id="CBox">
<div id="Ntext">Exhausted, both of you collapse onto the sofa. Violet sits up with a carefree air, her breath still rapid and a rebellious spark in her eyes. </div>
<<say $Violet>>I'm going to be late to see my parole officer because of you...<</say>>
<div id="Ntext">Her tone is mocking, as if she really doesn’t care.</div>
<<say $Mc>>Don’t worry, if he gives you trouble, I’ll pay him a visit to knock him down a peg.<</say>>
<div id="Ntext">Violet lets out a defiant laugh, a mix of teasing and fun, as she gets dressed in a slightly messy but effortlessly stylish way.</div>
<<say $Violet>>Don’t worry about me, detective; your chaos always shakes up my routine. <</say>>
<div id="Ntext">With those words, she rushes out. You’re left alone on the sofa, savoring the calm that contrasts with her energetic presence, as you slowly make your way to the bed, ready to enjoy your day off without any rush.</div>
<div class="links">
<th>[[Go to the bed|Event-sofa-FemaleEnd]]</th>
</div>
</div>
<<include "Violet">><div id="CBox">
<div id="Ntext">Violet is on all fours on the couch, her back arched and her skin tingling under your hands. You grip her thighs and bury your head between her legs, devouring her with more intensity, making her moan in pleasure.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/eatpussy2.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Scissors|Event-sofa-Female5]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/eatpussy2.mp4");
<</script>>
<div id="CBox">
<div id="Ntext">Violet stands kneels, starting to touch you.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/startplay.mp4", 90, "cover");
<</script>>
<div id="Ntext">She wraps her mouth around your pussy. Her warmth and softness make you shudder as she continues exploring you eagerly, savoring every reaction of yours.</div>
<<nobr>>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/violet/startplay2.mp4", 90, "cover");
<</script>>
<</nobr>>
<div class="links">
<th>[[Eat her pussy|Event-sofa-Female2]]</th>
<th>[[Let her lick you more|Event-sofa-Female3]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/startplay.mp4");
<</script>>
<<script>>
setup.phoneSystem.unlockMedia("Violet", "video", "media/violet/startplay2.mp4");
<</script>>
<div id="CBox">
<div id="Ntext">The sun filters through the curtains, gently illuminating the room. It’s your day off—no rush, no cases to solve… at least for now. You curl up in the sheets, enjoying the lingering warmth on your skin and the peaceful morning.</div>
<<say $Mc>>Mmm… well, that was fun<</say>>
<div id="Ntext">Just as sleep begins to pull you back under, the insistent buzzing of your phone breaks the silence. You frown and reach for it: Captain Havook.</div>
<<say $Mc>>Not now… <</say>>
<div id="Ntext">You bury yourself a little deeper into the pillow. Closing your eyes again</div>
<<say $Mc>>Definitely better than any coffee…<</say>>
<div id="Pensamiento">He’d call again later...</div>
<div id="Ntext">You stretch lazily, feeling the pleasant heaviness in your body, a satisfied smile playing on your lips.</div>
<div class="links">
<th>[[Sleep|Event-End]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The cold of the floor is the first thing you feel upon waking. The contact with the cold tiles makes you shiver as you try to push yourself up, the pain in your body is immediate, though it's nothing serious. The air is dense, humid, and somewhat stale, as if the place is holding onto unpleasant memories.
Long shadows stretch around you, shaped by the dim moonlight filtering through the broken windows. The room is completely silent, an unsettling stillness that leaves no clues about what happened before.</div>
<<say $Mc>>What... what happened here?<</say>>
<div id="Ntext">You try to stand, but your legs wobble, forcing you to lean against the nearest wall. Your fingers touch your skin, trailing over your chest, searching for any marks or wounds, but there’s nothing. No trace.</div>
<div id="Pensamiento">Shit... that dream... it felt so real.</div>
<div id="Ntext">You sigh deeply, your hand instinctively resting on your crotch as the memories of that night begin to flood your thoughts.</div>
<<if $Fpartner is true>>
<div id="Pensamiento">It was the last time with her... when we were still together, it ended badly. It was the day the captain called me, to inform me of what happened to... to my family.</div>
<<else>>
<div id="Pensamiento">It was the last time with him... when we were still together, it ended badly. It was the day the captain called me, to inform me of what happened to... to my family.</div>
<</if>>
<div id="Ntext">You stand there, your mind overwhelmed with questions.</div>
<<say $Mc>>What was that thing that attacked me? Was it even real?<</say>>
<div id="Ntext">You shake your head, pushing the confusing thoughts aside.</div>
<<say $Mc>>Shit, I'm losing my grip!<</say>>
<div id="Pensamiento">I have to keep going and find that damn doctor.</div>
<div class="links">
<th>[[Contiue|Grand Hall]]</th>
</div>
</div>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>>
<<playMusic "music2" "media/music/none.mp3" volume:0.2>><div id="CBox">
<div id="Ntext">Luke holds you firmly as he guides you with ease, sinking into you in one slow, deliberate motion. A soft sigh escapes your lips as the heat of his body merges with yours. He moves gently at first, his hands exploring your skin, savoring every reaction you give him.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/luke/penetration.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[More|Event-shower-Male3]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Luke", "video", "media/luke/penetration.mp4");
<</script>><div id="CBox">
<div id="Ntext">The rhythm grows more intense. His hands grip your waist, setting a relentless pace. The sound of his ragged breaths mixes with yours as pleasure builds uncontrollably, igniting every nerve with each deep, fast thrust.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/luke/penetration2.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[Make him cum|Event-shower-Male4]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Luke", "video", "media/luke/penetration2.mp4");
<</script>><div id="CBox">
<div id="Ntext">Straddling him, you feel his body tense beneath you as you cling to his shoulders, surrendering to the intensity of the moment. Luke grits his teeth, his grip tightening. A deep groan escapes him before he finally gives in, both of you tumbling into a wave of pure ecstasy.</div>
<div id="videoPlaceholder"></div>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/luke/ride.mp4", 90, "cover");
<</script>>
<div class="links">
<th>[[End|Event-shower-Male5]]</th>
</div>
</div>
<<script>>
setup.phoneSystem.unlockMedia("Luke", "video", "media/luke/ride.mp4");
<</script>><div id="CBox">
<div id="Ntext">As Luke cleans himself and steps out of the shower to get dressed, you remain under the hot water, feeling the stream flow over your skin, also washing away the remnants of his presence from within you. From the bathroom, you watch his clothes slide over his body.</div>
<<say $Luke>>I'm going to be late because of you...<</say>>
<<say $Mc>>It's not that big of a deal. It's just a few minutes. Besides, you're not going to complain after the sex, are you?<</say>>
<div id="Ntext">Luke lets out a frustrated sigh, runs a hand through his hair, and stands up quickly, moving swiftly to finish getting dressed. His movements are hurried, but he pauses for a moment to look at you with a mischievous smile. He puts on his jacket before approaching the door. He stops for a moment and gives you one last quick glance.</div>
<<say $Luke>>You can stay as long as you want, $McName.<</say>>
<<say $Mc>>Don't worry, Luke. I'm in no rush. I'll see you later.<</say>>
<<say $Luke>>I'd like that. I'll see you later...<</say>>
<div id="Ntext">Luke leaves the room. The door clicks softly as it closes behind him. You sigh, letting the silence settle for a moment. You turn off the shower, step out, and wrap yourself in a towel, slowly making your way back to the bed. </div>
<div class="links">
<th>[[Go to bed|Event-shower-Male6]]</th>
</div>
</div>
<<include "Luke">><div id="CBox">
<div id="Ntext">The air is still heavy with his presence, and the bed feels emptier without him. You slide back into the sheets, savoring the residual warmth from the shower, as sleep begins to envelop you once again.</div>
<<say $Mc>>Mmm… well, that was fun.<</say>>
<div id="Ntext">Just as sleep begins to pull you back under, the insistent buzzing of your phone breaks the silence. You frown and reach for it: Captain Havook.</div>
<<say $Mc>>Not now… <</say>>
<div id="Ntext">You bury yourself a little deeper into the pillow. Closing your eyes again</div>
<<say $Mc>>Definitely better than any coffee…<</say>>
<div id="Pensamiento">He’d call again later...</div>
<div id="Ntext">You stretch lazily, feeling the pleasant heaviness in your body, a satisfied smile playing on your lips.</div>
<div class="links">
<th>[[Sleep|Event-End]]</th>
</div>
</div><<widget "verticalVideo">>
<div id="vertical-video-container" style="width: 100%; max-width: 540px; margin: 0 auto;">
<<= '<video id="vertical-video" style="width: 100%; height: auto;" controls><source src="' + $args[0] + '" type="video/mp4">Your browser does not support the video tag.</video>'>>
</div>
<<endwidget>><<widget "horizontalVideo">>
<div id="horizontal-video-container" style="width: 100%; max-width: 960px; margin: 0 auto;">
<video id="horizontal-video" style="width: 100%; height: auto;" controls>
<source src="$args[0]" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<<endwidget>><<script>>
setup.phoneSystem.addContact("Cap. Henry Havook", "Henry Havook, the police captain, is a seasoned and strict leader, known for his commitment to justice and his protective attitude toward his team.", "img/characters/henry/avatar.png");
<</script>>
<<script>>
setup.phoneSystem.addContact("Mayor Quentin", "The mayor has hired you to investigate a case of multiple kidnappings at the old Charles Francis mental institution, abandoned 15 years ago.", "img/characters/mayor/avatar.png");
<</script>>
<div id="CBox">
<<say $Mc>>Everything will be fine. But next time... next time I'll rest.<</say>>
<div id="Ntext">Gabriela doesn't respond immediately. Her expression softens, but her eyes are still full of concern. She takes a step back, giving you a moment to process everything she just said.
The air between you two feels thick, as if you both can sense the weight of the truth hanging in the space. Those moments of silence, though uncomfortable, seem inevitable.</div>
<<say $Gabrielayoung>>You never talk about it, you know?<</say>>
<<say $Mc>>What?<</say>>
<<say $Gabrielayoung>>Your family... your parents. Your sister.<</say>>
<div id="Ntext">Her voice is soft, but the question falls heavy between the two of you. As if, by mentioning it, a space you’ve kept closed briefly opens.</div>
<<say $Mc>>You know what happened...<</say>>
<<say $Gabrielayoung>>Casey, I mean...<</say>>
<div id="Ntext">She looks at you with a mixture of concern and understanding. It’s as if she wants to say more, but doesn’t know how, as if the anguish in your words isn’t only yours, but hers too.</div>
<<say $Mc>>I know, Gabi. I know.<</say>>
<div id="Ntext">Her eyes don’t leave you. Those uncomfortable silences fill the air again. Gabriela seems to be waiting for you to speak, for you to take the next step.</div>
<<say $Gabrielayoung>>If you ever need to talk about them... you know I’m here, right?<</say>>
<<say $Mc>>I know... I’m just not ready yet.<</say>>
<<say $Gabrielayoung>>It’s okay. Let’s get moving.<</say>>
<div class="links">
<th>[[Get in the car|Event-Flashback10-Solo]]</th>
</div>
</div>
<<include "Gabi">>Light switch test:
<<setLighting "office">>
<<setLighting 50>>
<<script>>
startBattle('normalWolf', 18);
<</script>><<showStaticAudioButton>><div id="CBoxlight">
<div id="Ntext">You barely roll across the floor when shards of glass pierce through your coat and into your skin. You look up… and he’s already on top of you.
The deranged patient, eyes hollow and vacant, lunges without hesitation. His blackened nails sink into your neck. He doesn’t scream—but his eyes do.
As you lose consciousness, you feel her cock entering in your mouth.</div>
<div class="links">
<th>[[Suck the dick|E2b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $bwfight2 = 2>>
<<set $bwinfight2 = true>>
<<set $patientcome = 0>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBoxlight">
<div id="Ntext">You barely roll across the floor when shards of glass pierce through your coat and into your skin. You look up… and he’s already on top of you.
The deranged patient, eyes hollow and vacant, lunges without hesitation. His blackened nails sink into your neck. He doesn’t scream—but his eyes do.
As you lose consciousness, you feel something entering your body. It’s not just the pain. It’s… something else.</div>
<div class="links">
<th>[[Let him penetrate you|E1b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $bwfight = 2>>
<<set $bwinfight = true>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBoxlight">
<div id="Ntext">You’re kneeling before the enemy. Your ribs ache, your lip bleeds. The floor is cold. Your body barely responds as He smiles. He shuffles closer. A broken leg. A bloodied face. But he still has the strength to overpower you.</div>
<<say $MadPatient>>It’s over… you’re mine…<</say>>
<div id="Ntext">He pulls down his pants.</div>
<div class="links">
<th>[[Suck the dick|E4b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $srcff = 2>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><<set $RandomViolate = random(1)>>
<<if $RandomViolate is 0>>
<<goto "E3a">>
<<else>>
<div id="CBoxlight">
<div id="Ntext">You’re lying down. Your vision blurs. From above, he falls on you like a beast. You writhe, but you have no strength. Your arms tremble. He sniffs you. He licks you. He grins with an inhuman grimace. </div>
<<say $MadPatient>>Mine… only mine… my treasure.<</say>>
<div id="Ntext">His fingers slide inside you without resistance, slightly parting your lower lips. And you can do nothing.</div>
<div class="links">
<th>[[Let him penetrate you|E3b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $srcsf = 2>>
<</if>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBoxlight">
<div id="Ntext"> The lobotomized patient crawls toward you, panting. His pants are down. His body is a mass of scars and sick lust. He no longer masturbates. Now he’s looking at you.
He doesn’t speak. He just lunges. You try to raise your arm, but you can’t. Your muscles don’t respond. He pins you to the ground. His nails tear into your exposed flesh.
He doesn’t scream. He just breathes… heavily, animalistic, like an aroused predator.
And then you feel it. The… penetration. An invasion. Your body doesn’t react, but your soul writhes. </div>
<div class="links">
<th>[[Let it continue|E5b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $Sroom2 = 2>>
<<set $fapperisgone = true>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><<set $RandomViolate = random(1)>>
<<if $RandomViolate is 0>>
<<goto "E6a">>
<<else>>
<div id="CBoxlight">
<div id="Ntext">You’re lying down. Your vision blurs. From above, he falls on you like a beast. You writhe, but you have no strength. Your arms tremble. He sniffs you. He licks you. He grins with an inhuman grimace. </div>
<<say $MadPatient>>Mine… only mine… my treasure.<</say>>
<div id="Ntext">His fingers slide inside you without resistance, slightly parting your lower lips. And you can do nothing.</div>
<div class="links">
<th>[[Let him penetrate you|E6b]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $MHenemy = true>>
<<set $MHfight = 2>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacket.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoat.png")>>
<</if>><div id="CBox">
<div id="Ntext">You examine the engine closely, taking note of every detail. The cables, the battery, the electrical components all seem intact, but something doesn’t add up. As you inspect more closely, you discover what you feared: the system has been sabotaged.</div>
<div id="Pensamiento">Someone took the main fuse from the engine. Without it, the car won’t start.</div>
<<say $Mc>>Well, I wasn’t planning on leaving just yet.<<</say>>
<div class="links">
<th>[[Back|Parking]]</th>
</div>
</div>
<<set $CarSabotage = true>><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|Saveroom]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|Saveroom]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|SRcorridor]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|SRoom2]]</th>
</div>
</div><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|SRcorridor2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
Porn
<div id="Ntext"></div>
Porn
<div class="links">
<th>[[Continue|Main Hallway2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><<if setup.lantern.isOn>>
<<goto "GHroom2Light">>
<<else>>
<div id="CBox">
<div id="Ntext">It’s dark. You can barely make out the cracked walls, and the floor creaks beneath your feet. In the center, two rusted staircases come into view: one ascends but is blocked by debris; the other descends, possibly sealed with boards and chains. Above, a broken light flickers, casting fleeting shadows before plunging you back into darkness.</div>
<div class="links">
<th>[[Exit|Grand Hall2]]</th>
</div>
</div>
<</if>>
<<set $ghroom2 = true>><div id="CBox">
<div id="Ntext">The western side is quieter, but just as oppressive. Moonlight filters through grimy overhead panels, casting long shadows across broken furniture and steel beams. Most of the ceiling lights are dead, save for one flickering bulb. To the north, a dark corridor stretches into the facility. Another hallway, heading west, bears a crooked sign barely clinging to the wall: “Laboratory.”</div>
<div class="linksTwo">
<<if $ghroom2 isnot true>>
<th>[[Check Door|GHdoor2]]</th>
<<else>>
<th>[[Stairwell corridor|GHroom2]]</th>
<</if>>
<<if $ghroom3 isnot true>>
<th>[[Check Door|GHdoor3]]</th>
<<else>>
<th>[[Janitor's closet|GHroom3]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to laboratory|LabCorridorA]]</th>
<th>[[Grand Hall - East|Grand Hall]]</th>
</div>
</div>
<div id="LocationName">Grand Hall</div>
<<setLighting 60>><<if setup.lantern.isOn>>
<<goto "StorageLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The room is completely dark. There’s no visible source of light, and your eyes fail to adjust.</div>
<div class="links">
<th>[[Exit|Grand Hall]]</th>
</div>
</div>
<</if>>
<<set $StorageDoor = true>>
<<if setup.lantern.isOn>>
<<goto "LabCorridorALight">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway is narrow and damp, lined with metal doors on both sides. The walls are cold to the touch, and the air feels heavier the farther you go.</div>
<div class="links">
<th>[[Go to laboratory|LabCorridorA2]]</th>
<th>[[Grand Hall|Grand Hall2]]</th>
</div>
</div>
<</if>>
<div id="LocationName">East wing</div>
<<setLighting 20>><<if setup.lantern.isOn>>
<<goto "CellCorridorALight">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway fades into darkness, leading to a maze of corridors where the patients' rooms await.</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorA2]]</th>
<th>[[Grand Hall|Grand Hall]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<setLighting 20>>
<</if>>
<div id="LocationName">West wing</div><div id="CBox">
<div id="Ntext">The security door is locked. There doesn't seem to be any way to open it without the A2 access key.</div>
<<if $cardA2 is true>>
<div class="links">
<th>[[Use card|SecurityRoomOpen]]</th>
</div>
<</if>>
<div class="links">
<th>[[Exit|Grand Hall]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">The door is locked, you need a level A2 access card.</div>
<<switch visited()>>
<<case 1>>
<div id="Pensamiento">It wasn't going to be that easy...</div>
<</switch>>
<<if $SecurityKey is true>>\
<div class="links">
<th>[[Open door|SecurityRoomOpen]]</th>
</div>
<</if>>
<div class="links">
<th>[[Back|Grand Hall]]</th>
</div>
</div>
<<goto "SecurityRoom">>
<<set $SecurityRoom = true>><<if setup.lantern.isOn>>
<<goto "CellCorridorA2Light">>
<<else>>
<div id="CBox">
<div id="Ntext">The rusty doors on both sides have scratches and stains around the barred windows.</div>
<div class="linksTwo">
<<if $lfd isnot true>>
<th>[[Left Door|lfd]]</th>
<<else>>
<th>[[Examination room|ConsA]]</th>
<</if>>
</div>
<div class="links">
<th>[[Bedooms (A) coridor|BedroomA]]</th>
<th>[[Back to Grand Hall|CellCorridorA]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<if $ActiveBB is true>>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "DemonsA2">>
<</if>>
<</if>>
<</if>>
<div id="LocationName">West wing</div>
<<if setup.lantern.isOn>>
<<goto "LabCorridorA2Light">>
<<else>>
<div id="CBox">
<div id="Ntext">You walk down a long corridor, its walls stained with time and neglect. Every step forward is met with the faint creak of the floor beneath your feet.</div>
<div class="links">
<th>[[Laboratory|LabA]]</th>
<th>[[Back to Grand Hall|LabCorridorA]]</th>
</div>
</div>
<</if>>
<div id="LocationName">East wing</div>
<div id="CBoxlight">
<div id="Ntext">You barely roll across the floor when shards of glass pierce through your coat and into your skin. You look up… and he’s already on top of you.
The deranged patient, eyes hollow and vacant, lunges without hesitation. His blackened nails sink into your neck. He doesn’t scream—but his eyes do.
As you lose consciousness, you feel her cock entering in your mouth.</div>
<div class="links">
<th>[[Suck the dick|E3c]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 50>>
<<set $srcsf = 2>><div id="CBoxlight">
mamada
<div id="Ntext"></div>
mamada
<div class="links">
<th>[[Continue|SRcorridor]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
<div id="Ntext">You barely roll across the floor when shards of glass pierce through your coat and into your skin. You look up… and he’s already on top of you.
The deranged patient, eyes hollow and vacant, lunges without hesitation. His blackened nails sink into your neck. He doesn’t scream—but his eyes do.
As you lose consciousness, you feel her cock entering in your mouth.</div>
<div class="links">
<th>[[Suck the dick|E6c]]</th>
<th><a tabindex="0" role="button" id="save-button">Never</a></th>
</div>
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<SanityMessage "-30 Sanity">><div id="CBoxlight">
mamada
<div id="Ntext"></div>
mamada
<div class="links">
<th>[[Continue|Main Hallway2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(30);
<</script>>
<<SanityMessage "-30 Sanity">><<if setup.lantern.isOn>>
<<goto "GHroom3Light">>
<<else>>
<div id="CBox">
<div id="Ntext">The room is small and suffocating, the dim light barely illuminating the cluttered space. The air is thick with dust, and you can only make out vague shapes in the gloom. A single bulb hangs from the ceiling, flickering weakly as it casts unsettling shadows on the rust-stained walls.</div>
<div class="links">
<th>[[Exit|Grand Hall2]]</th>
</div>
</div>
<</if>>
<<set $ghroom3 = true>><div id="CBox">
<div id="Ntext"></div>
<div class="links">
<th>[[Corridor to Grand Hall|LabCorridorA2]]</th>
<th>[[Corridor to incubation room|Incorridor]]</th>
</div>
</div>
<<goto "noenter1">>
<<setLighting 20>><div id="CBox">
<div id="Ntext">An empty corridor stretches like an endless throat. Exposed cables hang from the ceiling like throbbing veins. Moonlight illuminates the area through a broken window.</div>
<div class="links">
<th>[[laboratory|LabA]]</th>
<th>[[Incubation room]]</th>
</div>
</div>
<<setLighting 80>><div id="CBox">
<div id="Ntext"></div>
<div class="links">
<th>[[Corridor to Lab|Incorridor]]</th>
</div>
</div>
<<setLighting 20>><<if setup.lantern.isOn>>
<<goto "BedroomALight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness is penetrating in what seems like an endless long corridor. A smell of ancient dust and deteriorated paper floats in the stagnant air. Your fingers occasionally brush against rough surfaces you cannot identify. The claustrophobic sensation increases with each uncertain step. The silence is only interrupted by distant creaks and the occasional metallic sound you cannot locate.</div>
<div class="linksTwo">
<<if $doorA isnot true>>
<th>[[Left Door|doorA]]</th>
<<else>>
<th>[[Room 111|roomA]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to Grand Hall|CellCorridorA2]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorC]]</th>
<th>[[Go to livingroom|CellCorridorD]]</th>
<th>[[Corridor - Bedrooms B|CellCorridorB]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">West wing</div>
<<if setup.lantern.isOn>>
<<goto "CellCorridorDLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway is narrow, wrapped in thick darkness. Only your flashlight cuts through the shadows, revealing fragments of peeling walls that seem ready to collapse. The cracked linoleum crunches beneath your feet. On either side, rusted metal doors line the corridor at uneven intervals, like forgotten sentinels.</div>
<div class="linksTwo">
<<if $RedE isnot true>>
<th>[[Left Door|RedEdoor]]</th>
<<else>>
<th>[[Red elevators|RedE]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Livingroom]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<setLighting 20>>
<</if>>
<<if setup.lantern.isOn>>
<<goto "CellCorridorCLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The flickering fluorescent lights cast a faint, sickly green glow over the hallway, their soft hum the only sound. Dark stains and marks mar the walls, some scrawled into frantic words you can’t quite decipher. The wet floor reflects the eerie light, and a faint chill clings to the space.</div>
<div class="linksTwo">
<<if $ConsC isnot true>>
<th>[[Right Door|ConsdoorC]]</th>
<<else>>
<th>[[Examination room|ConsC]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Corridor - Bedrooms D|BedroomD]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<if $bbenemy isnot true>>
<<goto "bbenemy">>
<</if>>
<</if>>
<div id="LocationName">West wing</div>
<div id="CBox">
<div id="Ntext">The patient lounge is still, frozen in time. Pale moonlight filters through a cracked window, casting long shadows across worn-out armchairs and faded wallpaper. Dust floats lazily in the air, stirred only by your presence. An old television set sits in the corner, its curved screen reflecting the moonlight in a dull, ghostly shimmer. The furniture is arranged in a loose circle, as if the room once hosted quiet conversations or forgotten group sessions. Now, only silence remains, heavy and undisturbed.</div>
<<if $StorageDoor isnot true>>
<div class="linksTwo">
<th>[[Check storage door|storagedoor2]]</th>
</div>
<</if>>
<div class="links">
<<if $StorageDoor2 is true>>
<th>[[Storage room|Storage2]]</th>
<</if>>
<th>[[Corridor - Bedrooms A|CellCorridorD]]</th>
<th>[[Go to playroom|LRcorridor]]</th>
</div>
</div>
<<setLighting 80>><<if setup.lantern.isOn>>
<<goto "BedroomBLight">>
<<else>>
<div id="CBox">
<div id="Ntext">A narrow hallway shrouded in darkness. Peeling walls barely visible in the gloom. Remnants of cracked linoleum on the floor. Rusted metal doors aligned at irregular intervals.</div>
<div class="linksTwo">
<th>[[Common Showers|showerB]]</th>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorB]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorB2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<if $ActiveBB is true>>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "BedBenemyBB">>
<</if>>
<</if>>
<</if>><<if setup.lantern.isOn>>
<<goto "CellCorridorBLight">>
<<else>>
<div id="CBox">
<div id="Ntext">Darkness swallows the narrow hallway. You can’t see the floor beneath you, only feel its uneven surface under your steps. The air is heavy, damp, and still. A faint metallic scent lingers. Shapes loom in the blackness—doors, maybe—but nothing is certain. Every sound echoes too loudly, and the silence in between feels alive.</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Corridor - Bedrooms B|BedroomB]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<<if setup.lantern.isOn>>
<<goto "BedroomDLight">>
<<else>>
<div id="CBox">
<div id="Ntext">A suffocating stillness envelops you in absolute darkness. The air feels unnaturally cold against your skin, carrying a faint scent of antiseptic and something else—metallic and unsettling. Occasionally, you feel currents of air brushing past your face, suggesting openings or spaces to your sides.</div>
<div class="linksTwo">
<<if $doorD isnot true>>
<th>[[Left Door|doorD]]</th>
<<else>>
<th>[[Room 121|roomD]]</th>
<</if>>
<<if $doorD3 isnot true>>
<th>[[Right Door|doorD3]]</th>
<<else>>
<th>[[Room 122|roomD3]]</th>
<</if>>
<<if $doorD2 isnot true>>
<th>[[Left Door|doorD2]]</th>
<<else>>
<th>[[Room 123|roomD2]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorC]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorC2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">West wing</div><<if setup.lantern.isOn>>
<<goto "CellCorridorB2Light">>
<<else>>
<div id="CBox">
<div id="Ntext">Darkness surrounds you. The air feels stale with humidity. Occasional drops of water punctuate the floor beneath your feet alternates between worn stone and patches of slippery, unidentifiable substances. A faint, distant rumor trembles through the floor at irregular intervals, like the breath of something massive stirring far below.</div>
<div class="links">
<th>[[Corridor - Bedrooms B|BedroomB]]</th>
<th>[[Corridor - Bedrooms C|BedroomC]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">West wing</div>
<<if setup.lantern.isOn>>
<<goto "CellCorridorC2Light">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway is shrouded in darkness, and the heavy air seems to crush you. The nauseating smell of rot and dampness fills your nostrils. You can barely make out the shadows of the walls, but you can feel the presence of closed doors around you, some creaking from age. The floor, sticky and slippery, seems to absorb every step you take, while an oppressive silence fills the space.</div>
<div class="links">
<th>[[Corridor - Bedrooms D|BedroomD]]</th>
<th>[[Corridor - Bedrooms C|BedroomC]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<<if $ActiveBB is true>>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "BBenemyC">>
<</if>>
<</if>><<if setup.lantern.isOn>>
<<goto "BedroomCLight">>
<<else>>
<div id="CBox">
<div id="Ntext">A narrow hallway swallowed by shadows. The peeling walls are barely visible. The air is thick and damp. A few doors line the corridor, slightly ajar, as if waiting for someone to step through. Silence hangs heavy, but it doesn’t feel empty.</div>
<div class="linksTwo">
<th>[[Common showers|showerC]]</th>
<<if $Pasaduci isnot true>>
<th>[[Left Door|PasaduciDoor]]</th>
<<else>>
<th>[[Room 140|Pasaduci]]</th>
<</if>>
<<if $BCoffice isnot true>>
<th>[[Right Door|ConsdoorC2]]</th>
<<else>>
<th>[[Office|BCoffice]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms B|CellCorridorB2]]</th>
<th>[[Corridor - Bedrooms D|CellCorridorC2]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>>
<div id="LocationName">West wing</div>
<div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Open|Storage2]]</th>
<th>[[Back|Livingroom]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The storage room is narrow and cluttered. The shelves, old and bent under the weight, leave little room to move. Stacked cardboard boxes block part of the way, and some have collapsed, spilling their contents onto the floor. Cobwebs and dust have gathered in the corners. Against one of the walls, there is a small locker with a rusty padlock, its surface scratched and worn from years of neglect.</div>
<div class="linksTwo">
<th>[[Check the small locker|smalllocker]]</th>
<th>[[Check the boxes|boxes2]]</th>
</div>
<div class="links">
<th>[[Exit|Livingroom]]</th>
</div>
</div>
<<set $StorageDoor2 = true>>
<<if setup.lantern.isOn>>
<<goto "RedELight">>
<<else>>
<div id="CBox">
<div id="Ntext">You step into a vast room consumed by a suffocating darkness. The air feels heavier here, as if the shadows themselves are pressing in. Without your flashlight, the world vanishes — nothing exists beyond the void in front of you.</div>
<div class="links">
<th>[[Exit|CellCorridorD]]</th>
</div>
</div>
<</if>>
<<set $RedE = true>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Open|RedE]]</th>
<th>[[Back|CellCorridorD]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "showerBLight">>
<<else>>
<div id="CBox">
<div id="Ntext">Impenetrable darkness between damp walls. The echo of constant dripping resonates in the invisible space. A penetrating smell of mold and rust fills the dense air. Broken tiles crunch under your feet as you move blindly forward. The humidity clings to your skin in this black void.</div>
<div class="links">
<th>[[Exit|BedroomB]]</th>
</div>
</div>
<</if>><<if setup.lantern.isOn>>
<<goto "showerCLight">>
<<else>>
<div id="CBox">
<div id="Ntext">You enter the communal shower room, but you can't see absolutely anything. The darkness is total, impenetrable.</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div>
<</if>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|ConsC]]</th>
<th>[[Back|CellCorridorC]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "ConsCLight">>
<<else>>
<div id="CBox">
<div id="Ntext">Complete darkness engulfs you. You sense enclosed space around you, the air still and antiseptic. Something solid bumps against your leg as you move cautiously forward. The floor feels cold and smooth beneath your feet.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>Damn it! I can't see anything.<</say>>
<</switch>>
<div class="links">
<th>[[Exit|CellCorridorC]]</th>
</div>
</div>
<</if>>
<<set $ConsC = true>><<playMusic "music2" "media/music/newstart.mp3" volume:0.2>>
<<goto "introPhone2">><<if setup.lantern.isOn>>
<<goto "LRcorridorLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The hallway leading from the lounge to the recreational room is swallowed in complete darkness. The air is thick, carrying the stale scent of mold, dust, and old disinfectant.</div>
<<if $St3 isnot true>>
<div class="linksTwo">
<th>[[Left Door|storagedoor3]]</th>
</div>
<<else>>
<th>[[Storage|Storage3]]</th>
<</if>>
<div class="links">
<th>[[Livingroom]]</th>
<th>[[Playroom]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<<setLighting 20>>
<</if>>
<div id="CBox">
<div id="Ntext">The door is locked.</div>
<div class="links">
<th><<lockBreak "average" "openstorage3" "LRcorridor" true>></th>
<th>[[Back|LRcorridor]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "PlayroomLight">>
<<else>>
<div id="CBox">
<div id="Ntext">It is impossible to distinguish anything. Everything is shrouded in absolute darkness, as if the eyes had been permanently closed and the sense of sight had ceased to exist. Every attempt to focus on something, to find any hint of shape, color, or movement, fades into nothingness.</div>
<div class="links">
<th>[[Go to livingroom|LRcorridor]]</th>
<th>[[Go to Grand Hall|LRcorridor]]</th>
</div>
</div>
<<script>>
window.decreaseSanity(5);
<</script>>
<<SanityMessage "-5 Sanity">>
<</if>><div id="CBox">
<div id="Ntext">This will be open in the future updates. If you like the game, you can support me and help me. Thank you for playing. </div>
<div id="sup">
<a href="https://www.patreon.com/Rustlergame" target="_blank" style="display: inline-block; background-color: #F96854; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; font-weight: bold;">Support me on Patreon</a>
</div>
<div class="links">
<th>[[Back|LabCorridorA2]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">Your flashlight's beam lights up a hallway leading to a maze of corridors. The walls are covered in grime and fingerprints, and the doors to the patients' rooms are visible in the distance.</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorA2]]</th>
<th>[[Grand Hall|Grand Hall]]</th>
</div>
</div>
<div id="LocationName">West wing</div><div id="CBoxlight">
<div id="Ntext">The light up the curving corridor. The rusty doors on both sides have scratches and stains around the barred windows.</div>
<div class="linksTwo">
<<if $lfd isnot true>>
<th>[[Left Door|lfd]]</th>
<<else>>
<th>[[Examination room|ConsA]]</th>
<</if>>
</div>
<div class="links">
<th>[[Bedooms (A) coridor|BedroomA]]</th>
<th>[[Back to Grand Hall|CellCorridorA]]</th>
</div>
</div>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 1>>
<<goto "CorridorA2enemy">>
<</if>>
<div id="LocationName">West wing</div><div id="CBoxlight">
<div id="Ntext">The light reveals a long hallway with numbered doors on both sides. The once-elegant wallpaper now hangs in yellowish tatters from moisture-stained walls. Several doors stand ajar, others remain firmly closed with rusted locks. The rotting wooden floor sinks slightly beneath your feet. Old photographs in dusty frames adorn the walls between the rooms, their faces barely recognizable under layers of dirt and time.</div>
<div class="linksTwo">
<<if $doorA isnot true>>
<th>[[Left Door|doorA]]</th>
<<else>>
<th>[[Left Room|roomA]]</th>
<</if>>
</div>
<div class="links">
<th>[[Go to Grand Hall|CellCorridorA2]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorC]]</th>
<th>[[Go to livingroom|CellCorridorD]]</th>
<th>[[Corridor - Bedrooms B|CellCorridorB]]</th>
</div>
</div>
<div id="LocationName">West wing</div><div id="CBoxlight">
<div id="Ntext">The flashlight casts a weak, flickering beam down the narrow hallway. Faded stains and cracks mar the floor beneath your feet. The walls, flaking and damp, seem to close in around you. Rusted metal doors line the corridor, each one slightly ajar, as if waiting. The silence is thick, broken only by the soft hum of your flashlight.</div>
<div class="linksTwo">
<<if $leftroomB isnot true>>
<th>[[Left Door|LeftdoorB]]</th>
<<else>>
<th>[[Left Room|LeftroomB]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Corridor - Bedrooms B|BedroomB]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The flashlight casts a faint light down the dark hallway. The worn walls and deteriorated floor fade into the shadows, while the metal doors line the path, silent figures in the dim light.</div>
<div class="linksTwo">
<th>[[Common Showers|showerB]]</th>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorB]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorB2]]</th>
</div>
</div>
<<set $enemyChance = random(5)>>
<<if $enemyChance is 5>>
<<goto "BedBenemyBB">>
<</if>>
<div id="CBoxlight">
<div id="Ntext">The light reveals a long institutional corridor with peeling walls. Deteriorated bulletin boards hang askew, with yellowed papers and illegible medical notices. Exposed pipes run along the ceiling, occasionally dripping. On the walls, traces of scratches and frantic writing suggest the desperate communication attempts of former patients.</div>
<div class="links">
<th>[[Corridor - Bedrooms B|BedroomB]]</th>
<th>[[Corridor - Bedrooms C|BedroomC]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The beam of your flashlight cuts through the darkness, revealing a narrow hallway frozen in decay. Cracked linoleum lines the floor, and rusted doors sit unevenly along the walls. Dust floats in the air, disturbed by your steps. Everything feels still… but watched.</div>
<div class="linksTwo">
<th>[[Common showers|showerC]]</th>
<<if $Pasaduci isnot true>>
<th>[[Left Door|PasaduciDoor]]</th>
<<else>>
<th>[[Left Room|Pasaduci]]</th>
<</if>>
<<if $BCoffice isnot true>>
<th>[[Right Door|ConsdoorC2]]</th>
<<else>>
<th>[[Office|BCoffice]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms B|CellCorridorB2]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorC2]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The hallway is dark and foul-smelling, the air thick and suffocating, burning your throat. The beam of your flashlight illuminates the dirty walls, where stains of moisture and mold stretch out like scars. The doors to the rooms are shut, some with rusted hinges that creak with the slightest movement. The floor is covered in stagnant puddles that reflect the light from your flashlight, and the stench of decay and filth is unbearable.</div>
<div class="links">
<th>[[Corridor - Bedrooms C|BedroomC]]</th>
<th>[[Corridor - Bedrooms D|BedroomD]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The narrow beam cuts through darkness to reveal a sterile hospital corridor with pale blue walls. Numbered patient rooms line both sides, their metal doors half-open or completely sealed. Dried bloodstains create dark patterns across the white tile floor, leading in and out of different doorways.</div>
<div class="linksTwo">
<<if $doorD isnot true>>
<th>[[Left Door|doorD]]</th>
<<else>>
<th>[[Room 121|roomD]]</th>
<</if>>
<<if $doorD3 isnot true>>
<th>[[Right Door|doorD3]]</th>
<<else>>
<th>[[Room 122|roomD3]]</th>
<</if>>
<<if $doorD2 isnot true>>
<th>[[Left Door|doorD2]]</th>
<<else>>
<th>[[Room 123|roomD2]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|CellCorridorC]]</th>
<th>[[Corridor - Bedrooms C|CellCorridorC2]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">A beam of light cuts through the darkness as you move forward, illuminating the hallway with a shaky glow. The light reveals dark stains and marks on the walls, some scrawled into frantic words you can’t quite make out. The wet floor reflects the eerie glow, and a faint chill clings to the space.</div>
<div class="linksTwo">
<<if $ConsC isnot true>>
<th>[[Right Door|ConsdoorC]]</th>
<<else>>
<th>[[Examination room|ConsC]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Corridor - Bedrooms D|BedroomD]]</th>
</div>
</div>
<<if $bbenemy isnot true>>
<<goto "bbenemy">>
<</if>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|Storage]]</th>
<th>[[Back|Grand Hall]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "Storage3Light">>
<<else>>
<div id="CBox">
<div id="Ntext">The room is enveloped in total darkness. The space feels vast, but the lack of light causes everything to vanish into the shadows. There's no way to make out the outlines of objects, only a sense of emptiness, as if everything is waiting.</div>
<div class="links">
<th>[[Back|LRcorridor]]</th>
</div>
</div>
<</if>><div id="CBoxlight">
<div id="Ntext">The hallway leading from the lounge to the recreational room is swallowed in complete darkness. Only the beam of your flashlight reveals cracked walls and faded posters with unnaturally cheerful cartoons. Beneath your boots, the linoleum creaks—sticky in places, as if it had soaked up more stories than anyone would care to hear. The doors lining the corridor are shut tight, some missing handles, and a row of rusted benches runs along one wall, waiting for patients who never returned. The air is thick, carrying the stale scent of mold, dust, and old disinfectant.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>If this is the road to joy... I'd rather turn back.<</say>>
<</switch>>
<<if $RedE isnot true>>
<div class="linksTwo">
<th>[[Left Door|storagedoor3]]</th>
</div>
<</if>>
<div class="links">
<<if $RedE is true>>
<th>[[Storage|Storage3]]</th>
<</if>>
<th>[[Livingroom]]</th>
<th>[[Playroom]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The flashlight reveals shelves piled with boxes in disarray, some open, others about to fall. Dust floats in the air, visible in the beam of light, while old sacks are piled in a corner. The walls, covered in stains and moisture, seem ready to crumble. A rusty cart lies forgotten in the center, while some shelves sag under the weight of their contents. Darkness still lingers in the farthest corners.</div>
<div class="linksTwo">
<th>[[Check crates|crates3L]]</th>
<th>[[Check cart|cart3L]]</th>
</div>
<div class="links">
<th>[[Back|LRcorridor]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The hallway is narrow, swallowed by thick darkness. Only the beam of your flashlight cuts through the shadows, revealing fragments of peeling walls that look ready to collapse. The cracked linoleum crunches beneath your boots. On either side, rusted metal doors stand at uneven intervals, like forgotten sentinels.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>Perfect spot to vanish without a trace... just great.<</say>>
<</switch>>
<div class="linksTwo">
<<if $RedE isnot true>>
<th>[[Left Door|RedEdoor]]</th>
<<else>>
<th>[[Red elevators|RedE]]</th>
<</if>>
</div>
<div class="links">
<th>[[Corridor - Bedrooms A|BedroomA]]</th>
<th>[[Livingroom]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">You step into a vast room swallowed by darkness. Your flashlight cuts through the shadows, revealing cracked walls and broken tiles scattered across the floor. At the far end, the beam lands on a pair of red elevator doors. Despite the decayed surroundings, the doors look almost pristine — no dents, no rust, almost new. But there's no power. No lights. Everything is still, as if waiting.</div>
<div class="linksTwo">
<th>[[Check elevators|rede]]</th>
</div>
<div class="links">
<th>[[Exit|CellCorridorD]]</th>
</div>
</div><div id="CBoxlight">
<<if $PageC isnot true>>
<div id="Ntext">The light reveals a small examination room. A rusted medical examination table dominates the center, its leather straps hanging loosely from the sides. Against one wall stands a metal cabinet with several drawers partially open, medical instruments gleaming inside. A yellowed patient chart lies abandoned on a small desk in the corner, its pages covered with hastily scribbled notes.</div>
<<else>>
<div id="Ntext">"The light reveals a small examination room. In the center stands a rusted medical table, its leather straps hanging loosely from the sides. Against one of the walls rises a metal cabinet with several drawers left ajar, and a desk in the corner.</div>
<</if>>
<div class="linksTwo">
<<if $knifeC isnot true>>
<th>[[Check metal cabinet|metalcabinetC]]</th>
<<else>>
<th>[[Check metal cabinet|metalcabinetC2]]</th>
<</if>>
<th>[[Check desk|checkdeskC]]</th>
</div>
<div class="links">
<th>[[Exit|CellCorridorC]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The light reveals rows of rusted showerheads hanging from walls covered in greenish mold. Stagnant puddles reflect the light beam on the floor of broken tiles. As you move the light to one side, metal lockers appear lined against the wall, their dented doors ajar, some with padlocks still hanging, others showing their empty, rusted interiors.</div>
<div class="linksTwo">
<th>[[Check first loocker|showerlockerB]]</th>
<th>[[Check second loocker|showerlockerB2]]</th>
<th>[[Check third loocker|showerlockerB3]]</th>
</div>
<div class="links">
<th>[[Exit|BedroomB]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The wall tiles, once white, are now stained and cracked, with mold spreading through the grout lines. The broken remains of a mirror above a grimy sink reflect the room in warped, unsettling fragments. At the back, several shower stalls stand in a row, their curtains torn or missing, revealing rusted drains and floors covered in mildew. Crushed plastic cups and broken pieces of soap dispensers are scattered across the damp, slippery floor.</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The playroom is spacious. The walls, once in pastel tones, have now lost their original color, turning into a sickly hue that distorts the vision. On them hang some drawings that survived the passage of time, looking childish, yet their lines are irregular, trembling, and the smiles drawn are grotesque. The floor is covered with broken and scattered toys: dolls without eyes, puzzle pieces that no longer fit, letter dice stained from use. In the center of the room, a small table, accompanied by disproportionate chairs, seems to have been abandoned in the middle of an interrupted activity, as if the room had been trapped in time.</div>
<div class="links">
<th>[[Go to livingroom|LRcorridor]]</th>
<th>[[Go to Grand Hall|LRcorridor]]</th>
</div>
</div> <div id="CBoxlight">
<<set $randomText = random(1)>>
<<if $randomText is 0>>
<div id="Ntext">Something is moving in the darkness, stepping out from the shadows attracted by the light of your flashlight.</div>
<<else>>
<div id="Ntext">The light from your flashlight reveals a silhouette at the end of the hallway. It's a nurse with a torn and blood-stained uniform, her face contorted in an inhuman grimace. Suddenly, she turns her head towards you.</div>
<<say $MadNurse>>Patient... escaping...<</say>>
<div id="Ntext">Her hands hold a rusty, abnormally large object. She lunges at you with impossible speed.</div>
<</if>>
<div class="links">
<th>[[Shoot|CorridorA2fight]]</th>
</div>
</div>
<<set $Fnurse = 1>>
<<if $Sanity < 20>>
<<goto "demonA2">>
<<endif>>
<<script>>
window.HealthEventSystem.addEvent('EventCA', {
min: 0,
max: 10,
passage: 'EventCA',
chance: 100,
interruptBattle: true
});
<</script>>
<<if $Health < 10>>
<<checkHealthEvent>>
<<endif>><div id="CBox"></div>
<<setLighting 50>>
<<script>>
startBattle('strongNurse', 10);
<</script>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>>
<<playSound "sound" "media/sounds/evilwoman.mp3" volume:0.4>><div id="CBox">
<div id="Ntext">After the final blow, you collapse, consciousness slipping away. You awaken on a stretcher, the sharp scent of antiseptic flooding your senses. A nurse leans over you, her face bathed in the cold glow of the operating room’s light. Her eyes gleam with a disturbing intensity.
Before you can react, she pins you to the stretcher with unexpected strength. Her soft laughter echoes as she draws closer, and a chill runs through you as something cold and metallic brushes your skin.</div>
<<say $MadNurse>>This is part of the treatment… hahaha!<</say>>
<div id="Ntext"> From the shadows, she produces a large black strapon, its presence ominous under the sterile light, amplifying the dread that grips you.</div>.
<div class="links">
<th>[[Recive torture|EventCA2]]</th>
</div>
</div>
<<script>>
window.BattleSystem.endBattle();
<</script>>
<<set $Health = 1>>
<div id="CBox">
<div id="Ntext">The enemy has dropped <span style="color: #22b22e;">2 bandages</span>.</div>
<div class="links">
<th>[[Take bandages|CellCorridorA2Item2]]</th>
<th>[[Let bandages|CellCorridorA2]]</th>
</div>
</div><div id="CBox">
<<say $MadNurse>>It's time... Here its your medicine.<</say>>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/mambo/blackdildo.mp4", 90, "cover");
<</script>>
<<say $Mc>>What the f...Ahh! Fuck! Stop!<</say>>
<<say $MadNurse>>Relax! This is only a drill, haha!<</say>>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/mambo/blackdildo2.mp4", 90, "cover");
<</script>>
<<say $Mc>>Ahh! Nooo!<</say>>
<<script>>
window.setupHorizontalVideo("videoPlaceholder", "media/mambo/blackdildo3.mp4", 90, "cover");
<</script>>
<div id="Ntext"></div>
<div class="links">
<th>[[Continue|ECA2-Escape]]</th>
</div>
</div>
<<script>>
addBandages(2);
<</script>>
<<timed 0.5s>>
<<goto "CellCorridorA2">>
<</timed>>
<<SanityMessage "+2 Bandages">><div id="CBoxlight">
<div id="Ntext">The hallway is narrow and damp, lined with metal doors on both sides. You light the way with your flashlight, its beam flickering across the cold walls. The air grows denser and heavier.</div>
<div class="links">
<th>[[Go to laboratory|LabCorridorA2]]</th>
<th>[[Grand Hall|Grand Hall2]]</th>
</div>
</div>
<div id="LocationName">East wing</div><div id="CBoxlight">
<div id="Ntext">You walk down a long corridor, your flashlight casting shaky light along the floor. The walls, stained by time and neglect, flicker in and out of view as the beam moves. Each step forward is met with the soft creak of the floor beneath your feet, while shadows dance around you.</div>
<div class="links">
<th>[[Laboratory|LabA]]</th>
<th>[[Back to Grand Hall|LabCorridorA]]</th>
</div>
</div>
<div id="LocationName">East wing</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|ConsA]]</th>
<th>[[Back|CellCorridorA2]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "ConsAlight">>
<<else>>
<div id="CBox">
<div id="Ntext">A dim light filtering through the window illuminates the center of the room, where a dark figure—the stretcher—casts a long, ominous shadow. The rest is a mass of darkness, with barely distinguishable silhouettes of furniture. The air smells of stale disinfectant and something more metallic. Every sound is amplified, as if the walls are breathing with you.</div>
<div class="links">
<th>[[Exit|CellCorridorA2]]</th>
</div>
</div>
<</if>>
<<set $lfd = true>><div id="CBoxlight">
<div id="Ntext">The medical furniture is covered in dust and cobwebs, with remnants of old bandages scattered across the countertop. In the center, the blood-stained stretcher looks more like a torture altar than a medical instrument. The walls are decorated with faded wallpaper and half-fallen medical warnings. The window at the back barely allows a glimpse of rain hitting the glass.</div>
<div class="links">
<th>[[Exit|CellCorridorA2]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "PasaduciCLight">>
<<else>>
<div id="CBox">
<div id="Ntext">You can barely make out anything around you, just blurred shadows. However, you can see the hole in the floor, its irregular shape cutting through the dim light..</div>
<div class="linksTwo">
<<if $bujero is true>>
<th>[[Inspect Hole|Bujero3]]</th>
<</if>>
</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div>
<<set $Pasaduci = true>>
<<if $bujero isnot true && $PasaduciEnemy is true>>
<<goto "Bujero">>
<</if>>
<div id="CBox">
<div id="Ntext">You successfully pick the lock, and the door opens.</div>
<div class="links">
<th>[[Enter|Storage3]]</th>
<th>[[Back|LRcorridor]]</th>
</div>
</div>
<<set $St3 = true>><div id="CBox">
<div id="Ntext">A strange noise puts you on edge, a sound you’ve never heard before, like a distorted whimper. Something moves in the shadows.</div>
<<say $Mc>>Shit! Who’s there?<</say>>
<div id="Pensamiento">That doesn’t sound human… What the hell is going on here?</div>
<div id="Ntext">Suddenly, a creature emerges, chilling you to the bone: a demonic baby, with wrinkled pink skin, small sunken eyes oozing malice, and a massive mouth filled with sharp teeth.</div>
<<say $Mc>>What the fuck is that?! It’s… disgusting!<</say>>
<div id="Ntext">Its mere presence fills you with unease. The hallway seems to warp around it, and a shrill giggle pierces your ears.</div>
<div id="Pensamiento">This can’t be real… This is a nightmare, I must be dreaming.</div>
<div class="links">
<th>[[Shoot|bbfight]]</th>
</div>
</div>
<<set $bbfight = 1>>
<<set $bbenemy = true>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>><div id="CBox"></div>
<<script>>
startBattle('mawling', 10);
<</script>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><div id="CBox">
<div id="Ntext">The final shot rings out, and the demonic infant collapses, its crimson glow fading into ash. The nursery falls silent, the oppressive weight lifting from your chest. Reality snaps back into place—colors seem sharper, the air lighter. You stare at the scorched remains, a faint unease lingering. It’s gone, but the memory of its twisted giggle claws at your mind. Whatever it was, it’s no longer a threat. You holster your weapon and walk away, the nursery’s shadows retreating behind you.</div>
<div class="links">
<th>[[Take calming pills|Tpc]]</th>
</div>
</div>
<<set $ActiveBB = true>><<script>>
addSanityItem('calmingPills',2)
<</script>>
<<SanityMessage "+2 Calming pills">>
<<timed 0.2s>>
<<goto "CellCorridorC">>
<</timed>>
<<if setup.lantern.isOn>>
<<goto "BCofficeLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness engulfs you completely as you step into what seems to be an office, a black void that feels like it’s swallowing everything around you. You can’t make out any shapes or outlines, only sensing the empty space and a faint smell of dust that permeates the place.</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div>
<</if>>
<<set $BCoffice = true>><div id="CBoxlight">
<div id="Ntext">You illuminate the office. The light reveals an old desk in the center, covered in dust, with an ancient computer on it. The monitor is off, its black screen faintly reflecting the light, and the keyboard is draped in cobwebs.</div>
<div class="linksTwo">
<th>[[Check the desk|BCdesk]]</th>
</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div><div id="CBoxlight">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you approach the desk, the light reveals the ancient computer: a scratched beige tower, dusty cables, and a dark monitor with a scratched screen. The keyboard, draped in cobwebs, has worn keys. To the right, a drawer with a rusted handle sits slightly ajar.</div>
<<default>>
<div id="Ntext">The computer remains powered on at the desk.</div>
<</switch>>
<div class="linksTwo">
<th>[[Open the drawer|bcdrawer]]</th>
<<if $Pc isnot true>>
<th>[[On pc|onpc]]</th>
<<else>>
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<</if>>
</div>
<div class="links">
<th>[[Back|BCoffice]]</th>
</div>
<img id="event-image2" src="img/events/deskc2.png">
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>><<swtich visited()>>
<<case 1>>
<div id="CBoxlight">
<div id="Ntext">You carefully pull on the rusty drawer, causing its metal rails to squeak in protest. Inside, beneath scattered paper clips and forgotten pens, are <span style="color: #22b22e;">x2 Medium batteries</span> resting against the back of the drawer.</div>
<div id="Pensamiento">These could be useful.</div>
<div class="links">
<th>[[Back|BCoffice]]</th>
</div>
<img id="event-image2" src="img/events/deskc2.png">
</div>
<<script>>
window.addMediumBattery(2);
<</script>>
<<SanityMessage "+2 Medium batteries">>
<<default>>
<div id="CBoxlight">
<div id="Ntext">Only remnants of what was once a pen remain.</div>
<div class="links">
<th>[[Back|BCoffice]]</th>
</div>
<img id="event-image2" src="img/events/deskc2.png">
</div>
<</switch>><div id="CBoxlight">
<div id="Ntext">You reach your hand toward the power button on the beige tower and press it cautiously. A faint hum breaks the silence as the computer comes to life. The screen flickers, projecting a pale blue glow that illuminates the dusty desk. </div>
<<say $Mc>>I can't believe this thing still works...<</say>>
<div class="linksTwo">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
</div>
<div class="links">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<th>[[Back|BCoffice]]</th>
</div>
<img id="event-image2" src="img/events/deskc.png">
</div>
<<set $Pc = true>>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>><div id="CBoxlight">
<div id="Ntext">You walk through the ruined hallway of the abandoned psychiatric hospital, your flashlight flickering against the rotting walls. A few meters away, in the dimness, you see a patient, his skull etched with crude lobotomy scars, his eyes empty yet burning. With a guttural moan, he begins to advance toward you down the corridor.</div>
<div class="links">
<th>[[Shoot|bbfight2]]</th>
</div>
</div>
<<set $BedroomBPelea = 1>><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You walk down the hallway, the darkness almost swallowing the decaying walls. A sound makes you stop—a wet gurgle, like a baby’s babble twisted by something evil.</div>
<<say $Mc>>What the hell?! That thing again!<</say>>
<div id="Pensamiento">That’s not human... This isn’t right, you think, heart pounding as the blackness seems to pulse around you.</div>
<div id="Ntext">Then, from a dark corner, you see it: a demonic baby. Its wrinkled, ashen skin gives off a faint, sickly glow. Sunken eyes shine with pure hatred, and its grotesque mouth reveals needle-like teeth. It crawls slowly toward you, hissing—a sound that turns your stomach.</div>
<<say $Mc>>Don’t come any closer, you damned thing!<</say>>
<div id="Ntext">A high-pitched scream pierces the air, as if the creature were mocking you, and the hallway seems to vibrate with its evil presence.</div>
<<default>>
<div id="Ntext">You walk down the hallway. The darkness is so dense you can barely make out the decaying walls. Suddenly, you hear a sound that chills your blood: a wet, distorted babble. You stop, your breath quickening.
From a dark corner, the creature appears—a deformed being with a grotesque appearance. It slowly crawls toward you. The creature is coming for you.</div>
<</switch>>
<div class="links">
<th>[[Shoot|bbfight2]]</th>
</div>
</div>
<<set $BedroomBPeleaBB = 1>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<div id="CBoxlight">
<div id="Ntext">The enemy has dropped <span style="color: #22b22e;">2 bandages</span>.</div>
<div class="links">
<th>[[Take bandages|BedroomBItem2]]</th>
<th>[[Let bandages|BedroomB]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The enemy has dropped <span style="color: #22b22e;">2 calming pills</span>.</div>
<div class="links">
<th>[[Take pills|BedroomBItem1]]</th>
<th>[[Let bandages|BedroomB]]</th>
</div>
</div>
<<script>>
addBandages(2);
<</script>>
<<goto "BedroomB">>
<<SanityMessage "+2 Bandages">><div id="CBox">
<div id="Ntext">The locker door is jammed and cannot be opened.</div>
<div class="links">
<th>[[Back|showerB]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You open the locker's door, its empty.</div>
<div class="linksTwo">
<th>[[Get inside|LockerB]]</th>
</div>
<div class="links">
<th>[[Back|showerB]]</th>
</div>
</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">As you rummage through the cabinet, you find <span style="color: #22b22e;">20 rounds 9mm</span>.</div>
<<say $Mc>>This is good...<</say>>
<<script>>
addAmmo('9mm', 20)
<</script>>
<<default>>
<div id="Ntext">Nothing remains.</div>
<</switch>>
<div class="linksTwo">
<th>[[Get inside|LockerB]]</th>
</div>
<div class="links">
<th>[[Back|showerB]]</th>
</div>
</div><div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">You hide in the locker, the cold metal pressing against your back. Nothing’s chasing you, but the abandoned psychiatric hospital, with its echoes of kidnappings and lurking monsters, keeps you on edge. A distant creak tightens your nerves.</div>
<<say $Mc>>Phew... this is claustrophobic. I hope I don't have to do this many times...<</say>>
<<default>>
<div id="Ntext">You hide in the locker, the cold metal pressing against your back. Nothing’s chasing you, but the abandoned psychiatric hospital, with its echoes of kidnappings and lurking monsters, keeps you on edge.</div>
<<set $randomComent = random(5)>>
<<if $randomComent is 5>>
<<say $Mc>>Phew... this is claustrophobic. I hope I don't have to do this many times...<</say>>
<</if>>
<</switch>>
<div class="links">
<th>[[Leave|showerB]]</th>
</div>
</div>
<<if $DemonHunt is true>>
<<goto "DemonHuntSkip">>
<</if>><div id="CBox">
<div id="Ntext">You slip into the locker, the icy metal digging into your back, your pulse pounding in your ears. A twisted shadow with claws that scrape the floor of the abandoned psychiatric hospital moves, prowling, its heavy steps grinding closer down the corridor.</div>
<div id="Pensamiento">Keep moving, damn monster. Just have to wait, you think, keeping your nerves in check, eyes locked on the slivers of light through the locker’s vents flickering with the creature’s every move.</div>
<div id="Ntext">The air grows thicker with each step of the demon, its claws grazing the walls, searching. You hold your breath as it stops right outside, so close you can hear the drag of its skin against the floor. A low growl rumbles in the silence, and for a moment, you think the locker door will give way. But then, the steps resume, slower, fading. The scrape of its claws dwindles down the hallway until only heavy, fragile silence remains.</div>
<<say $Mc>>Finally…<</say>>
<div class="links">
<th>[[Leave|BedroomB]]</th>
</div>
</div>
<<set $DemonHunt = false>>
<<ser $DemonPelea = 0>>
<<removecountdown>>
<<playMusic "music2" "media/music/none.mp3">>
<<playMusic "music3" "media/music/none.mp3">>
<<playMusic "music" "media/music/lobytheme.mp3" volume:0.5>>
<<script>>
addSanityItem('calmingPills',2)
<</script>>
<<goto "BedroomB">>
<<SanityMessage "+2 Calming pills">><div id="CBox">
<<if $PageC isnot true>>
<div id="Ntext">You approach the desk, covered in dust and dry white stains. Among crumpled papers, a yellowed sheet stands out on the surface. It's covered in shaky scribbles, as if someone had written it during a crisis or in a moment of desperation.</div>
<<else>>
<div id="Ntext">The desk is made of old metal, with chipped varnish and burn marks in one corner. It's covered with a thick layer of dust, and dry white stains are scattered across the surface. The drawers are closed, though one seems stuck, as if someone had tried to force it open.</div>
<</if>>
<div class="linksTwo">
<th>[[Open the drawer|cajonC]]</th>
<<if $PageC isnot true>>
<th>[[Take the papers|PageC]]</th>
<</if>>
</div>
<div class="links">
<th>[[Leave the desk|ConsC]]</th>
</div>
<img id="event-image2" src="img/events/deskc.png">
</div>
<div id="CBox">
<div id="Ntext">You approach the metal cabinet. As you open one of the drawers, the screech of rusted metal echoes through the room. Inside, scattered among the decaying contents, lie several rusted surgical tools. Amid the corroded instruments, you spot a knife that appears to be in relatively good condition, its blade still sharp and mostly untouched by time.</div>
<div class="linksTwo">
<th>[[Take knife|knifeC]]</th>
</div>
<div class="links">
<th>[[Back|ConsC]]</th>
</div>
<img id="event-image2" src="img/events/cabinetc.png">
</div><<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You rummage through the drawer, moving aside dust and ash. All you find are broken objects in poor condition. However, at the back, in a sealed package, you find <span style="color: #22b22e;">two cheap batteries</span> in perfect condition. They seem brand new, ready to be used.</div>
<div class="links">
<th>[[Back|ConsC]]</th>
</div>
</div>
<<script>>
window.addCheapBattery(2);
<</script>>
<<SanityMessage "+2 Cheap Batteries">>
<<default>>
<div id="CBox">
<div id="Ntext">You rummage through the drawer, shifting the dust and ash. All you find are broken objects in poor condition. Nothing seems useful.</div>
<div class="links">
<th>[[Back|ConsC]]</th>
</div>
</div>
<</switch>><div id="CBox">
<div id="Ntext">You grab the page and begin to read.</div>
<img id="event-image" class="note" src="img/documents/note1.png">
<div class="links">
<th>[[Continue|ConsC]]</th>
</div>
</div>
<<SanityMessage "New archive">>
<<script>>
setup.phoneSystem.addFile("Dr Karlsen file. ", "img/documents/note1.png");
<</script>>
<<playAudio "sound" "media/sounds/page.mp3" "sound" "volume:0.5">>
<<set $PageC = true>><div id="CBox">
<div id="Ntext">You approach the metal cabinet. As you pull open one of the drawers, the screech of rusted metal echoes through the room. Inside, you find scattered surgical tools, all corroded and broken. Nothing here seems useful.</div>
<div class="links">
<th>[[Back|ConsC]]</th>
</div>
<img id="event-image2" src="img/events/cabinetc.png">
</div><div id="CBox">
<div id="Ntext">You grab the <span style="color: #22b22e;">knife</span> and you put it in your backpack.</div>
<<say $Mc>>Well... Better than nothing.<</say>>
<div class="links">
<th>[[Continue|ConsC]]</th>
</div>
</div>
<<run window.addMissionItem('knife')>>
<<set $knifeC = true>>
<<SanityMessage "Knife added to inventory">><div id="CBox">
<div id="Ntext">You stop in front of the red elevators, their metal doors gleaming under your flashlight, pristine despite the 15 years of abandonment in the psychiatric hospital. The vivid red stands out in the gloom. You run your fingers over the metal, smooth, no trace of rust. The panel buttons are dark, lifeless.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>As expected...<</say>>
<div id="Ntex">You scan the frame, looking for anything out of place: a wire, a mark. Nothing.</div>
<div id="Pensamiento">This doesn’t add up. Fifteen years, and they look brand new. Someone’s been here, but without power, what’s the point?</div>
<<say $Mc>>Come on, Casey, think. No electricity, these things aren’t moving. But I’m not buying they’re just for show. There’s gotta be a maintenance room with a generator somewhere in this building.<</say>>
<</switch>>
<div id="Pensamiento"></div>
<div class="linksTwo">
<<if $RedeInspect isnot true>>
<th>[[Inspect elevators|redecheck]]</th>
<</if>>
<th>[[Call elevators|redecall]]</th>
</div>
<div class="links">
<th>[[Back|RedE]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You crouch, shining your light on the floor. The linoleum is cracked, but the dust in front of the doors is thinner, as if someone’s been through recently. You stand and press the open button. The buttons are cold, unworn. Frowning, you inspect the panel closer, noticing a small slot with a fresh scratch, like something was inserted.</div>
<div id="Pensamiento">Someone used this, and not long ago. If I want this elevator to work its magic, I need to restore power. The maintenance room’s gotta be close, probably in the basement or some forgotten wing.</div>
<<say $Mc>>Alright, Red, you’re not talking yet. But if I find the main switch, you’ll sing. Nobody keeps this so perfect for no reason.<</say>>
<div id="Ntext">You sweep the lobby with your flashlight, searching for signs of a hallway or door leading to the maintenance room, or any clue to guide you there. Nothing stands out—the remaining signs and wall markers are too worn to read.</div>
<div id="Pensamiento">The maintenance room is my next move. There’s gotta be a building map or a sign somewhere.</div>
<<say $Mc>>Time to find the heart of this place. If there’s a generator, I’ll track it down. And then, Home, you and I are gonna have a serious talk.<</say>>
<div class="links">
<th>[[Back|RedE]]</th>
</div>
</div>
<<set $RedeInspect = true>>
<<script>>
setup.phoneSystem.addObjective(
"Restore the power",
"Find the maintenance room and restore the power. (No more content for now)",
'secondary',
'Restore_Power' // ID
);
<</script>>
<<SanityMessage "New secondary objective: Restore the power">><div id="CBox">
<div id="Ntext">You stand before the red elevators, their glossy doors catching the faint glow of your flashlight. With a steady hand, you reach for the call button, its surface cold and smooth under your thumb. You press it, half-expecting nothing, but a faint click echoes in the silent lobby. No lights flicker, no hum of machinery follows—just an oppressive quiel.</div>
<div id="Pensamiento">No power, no surprise. But that click felt too clean, too deliberate. Someone’s kept this thing ready, even if it’s not moving now.</div>
<<say $Mc>>Come on, Red, give me something. You’re hiding more than you let on, aren’t you?<</say>>
<div class="links">
<th>[[Back|RedE]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext"> Upon closer inspection, you find some open, while others remain closed, their contents unknown. In one box filled with old rags and papers, you discover a <span style="color: #22b22e;">package of bandages</span>. </div>
<div class="links">
<th>[[Take bandages|vendas3L]]</th>
<th>[[Back|LRcorridor]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">Inside the cart, among pieces of metal and dust, you find a small <span style="color: #22b22e;">package of pills</span>. Next to it, there's a glass jar with a <span style="color: #22b22e;">cloudy liquid</span>, which could be some sort of solution or remedy. At the bottom, hidden beneath a torn cloth, you find an old notebook. One <span style="color: #22b22e;">page</span> is torn but still legible, while the rest is too faded and damaged to read. </div>
<<switch visited()>>
<<case 1>>
<div id="Ntext">The cart is rusty and covered in dust. Its wheels are stuck, and inside are metal scraps, torn fabric, and forgotten objects. The worn paint is barely visible under the accumulated dirt.</div>
<</switch>>
<div class="linksTwo">
<<if $pills3L isnot true>>
<th>[[Take pills|pills3L]]</th>
<</if>>
<<if $liquid isnot true>>
<th>[[Take cloudy liquid|liquid3L]]</th>
<</if>>
<<if $libro isnot true>>
<th>[[Take page|libro3L]]</th>
<</if>>
</div>
<div class="links">
<th>[[Back|LRcorridor]]</th>
</div>
</div><<script>>
addBandages(2);
<</script>>
<<SanityMessage "+2 Bandages">>
<<goto "Storage3">><<run window.addMissionItem('cumBottle')>>
<<SanityMessage "Cloudy Liquid added to inventory">>
<<set $liquid = true>>
<<goto "cart3L">><div id="CBox">
<div id="Ntext">You grab the page and begin to read.</div>
<div id="note"></div>
<div class="links">
<th>[[Continue|cart3L]]</th>
</div>
</div>
<<SanityMessage "New archive">>
<<script>>
setup.phoneSystem.addFile("Resign form", "img/documents/note2.png");
<</script>>
<<playAudio "sound" "media/sounds/page.mp3" "sound" "volume:0.5">>
<<set $libro = true>>
<style>
.links {
left: 1em;
top: -9.8em;
}
.links a {
padding: 10px 15px;
color: white;
text-decoration: none;
border-radius: 5px;
display: inline-block;
font-size: 11px;
}
#textobox {
position: absolute;
top: 58.8em;
left: 18em;
color: #000000;
font-size: 15px;
font-weight: bold;
}
#documentointro {
background-image: url(img/documents/note2.png);
background-size: cover;
position: relative;
top: 18%;
left: 50%;
transform: translate(-50%, -25%);
width: 48em;
height: 62em;
}
#Ntext {
top: -5em;
}
</style>
<<script>>
addSanityItem('calmingPills',5)
<</script>>
<<SanityMessage "+5 Calming pills">>
<<goto "cart3L">>
<<set $pills3L = true>><<if $pilas2 isnot true>>
<div id="CBox">
<div id="Ntext">You search through the boxes and find two batteries. They're a bit dusty, but still sealed in their packaging. They could come in handy later.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>Well... it's not much, but at least I won't be left in the dark for too long.<</say>>
<</switch>>
<div class="links">
<th>[[Take batteries|pilas2]]</th>
<th>[[Back|Storage2]]</th>
</div>
</div>
<<else>>
<<goto "nopilas2">>
<</if>><<script>>
window.addMediumBattery(2);
<</script>>
<<SanityMessage "+2 Medium Batteries">>
<<goto "Storage2">>
<<set $pilas2 = true>><div id="CBox">
<div id="Ntext">You search through the boxes, but there’s nothing left. The shelves are empty, and the floor is bare. It seems everything has already been taken or vanished.</div>
<<switch visited()>>
<<case 1>>
<<say $Mc>>Looks like not everything grows back or reappears. Weird, huh?<</say>>
<</switch>>
<div class="links">
<th>[[Back|Storage2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door stills open.</div>
<div class="links">
<th>[[Enter|roomD]]</th>
<th>[[Back|BedroomD]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">You can open the door.</div>
<div class="links">
<th>[[Enter|roomD2]]</th>
<th>[[Back|BedroomD]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|roomD3]]</th>
<th>[[Back|BedroomD]]</th>
</div>
</div>
<<if setup.lantern.isOn>>
<<goto "roomDLight">>
<<else>>
<div id="CBox">
<div id="Ntext">You step inside, but everything is swallowed by complete darkness. The room feels still, almost frozen. You can't make out a single shape—only the sense that you're not alone in here.</div>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div>
<</if>>
<<set $doorD = true>><<if setup.lantern.isOn>>
<<goto "roomDLight3">>
<<else>>
<div id="CBox">
<div id="Ntext">The door creaks open, revealing… nothing. It's like stepping into a void. The air feels thick, and without a source of light, the space around you might as well not exist.</div>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div>
<</if>>
<<set $doorD3 = true>><<if setup.lantern.isOn>>
<<goto "roomDLight2">>
<<else>>
<div id="CBox">
<div id="Ntext">The moment you enter, your vision disappears into pitch black. No light, no detail—just silence and a vague impression of walls closing in. Whatever’s inside remains hidden.</div>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div>
<</if>>
<<set $doorD2 = true>><div id="CBoxlight">
<div id="Ntext">A metal bed is pushed up against the wall, rusted at the corners, with its mattress torn open and some of the stuffing exposed, as if someone had ripped it out. On the floor, there are fragments of ceramic—possibly from a broken cup or a medication bowl. A small piece of furniture lies crooked, one of its drawers missing and the others pried open, as if forced in desperation. Near the head of the bed, several shallow scratch marks run across the chipped paint in an irregular pattern that feels deeply unsettling.</div>
<<say $Mc>>There's nothing here...<</say>>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The wallpaper, once likely colorful, now hangs in peeling strips due to moisture. Scattered across the floor are plastic medication cups—some crushed, others covered in dust. A wheelchair stands motionless in one corner, its backrest torn.</div>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">You step into a silent, shadowy room. The disheveled bed holds echoes of a troubled past, surrounded by dusty furniture and broken dolls lying still. The walls, covered in frantic scribbles, whisper secrets. An ajar door tempts you toward the unknown.</div>
<div class="links">
<th>[[Exit|BedroomD]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|roomA]]</th>
<th>[[Back|BedroomA]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "roomALight">>
<<else>>
<div id="CBox">
<div id="Ntext">You slowly peek your head in... but see nothing. The darkness in this room is total, suffocating—like a black veil that smothers your senses. There are no windows, no lights, not even the faintest glimmer of reflection.</div>
<div class="links">
<th>[[Exit|BedroomA]]</th>
</div>
</div>
<</if>>
<<set $doorA = true>><div id="CBoxlight">
<div id="Ntext">The light cuts through the darkness, revealing a room frozen in time. Dust floats in the air, caught in the cone of light, and the beam flickers slightly as it passes over peeling walls and rusted metal. To one side, there's a metal bed covered with a stained, crumpled sheet. Beside it, a rusted nightstand holds what looks like an empty pill bottle and a shattered framed photo. In the opposite corner, a rotting wooden chair lies toppled over, as if someone had pushed it violently.</div>
<div class="links">
<th>[[Exit|BedroomA]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|LeftroomB]]</th>
<th>[[Back|CellCorridorB]]</th>
</div>
</div><<if setup.lantern.isOn>>
<<goto "LeftroomBLight">>
<<else>>
<div id="CBox">
<div id="Ntext">The darkness envelops you completely. You can't see anything, only sense the presence of the room around you through the thick, heavy air.</div>
<div class="links">
<th>[[Exit|CellCorridorB]]</th>
</div>
</div>
<</if>>
<<set $leftroomB = true>><div id="CBoxlight">
<div id="Ntext">The light weakly illuminates the room, revealing an old metal bed. The sheets are messy, torn, and dirty. In the corner, a wooden wardrobe, slightly crooked, with the door ajar, and stacked boxes nearby, covered in dust.</div>
<div class="linksTwo">
<th>[[Check boxes|boxesB]]</th>
<th>[[Check wardrobe|wardrobeB]]</th>
</div>
<div class="links">
<th>[[Exit|CellCorridorB]]</th>
</div><<if $itemhere isnot true>>
<<set $Randomsearch = random(2)>>
<div id="CBox">
<<if $Randomsearch is 0>>
<div id="Ntext">You find <span style="color: #22b22e;">4 cheap batteries</span>. </div>
<<script>>
window.addCheapBattery(4);
<</script>>
<<SanityMessage "+4 Cheap Batteries">>
<<elseif $Randomsearch is 1>>
<div id="Ntext">You find <span style="color: #22b22e;">18 rounds 9mm</span> and <span style="color: #22b22e;">+2 cheap battery</span>. </div>
<<SanityMessage "+18 rounds 9mm, +2 Cheap Batteries">>
<<script>>
window.addCheapBattery(2);
addAmmo('9mm', 18)
<</script>>
<<elseif $Randomsearch is 2>>
<div id="Ntext">You find <span style="color: #22b22e;">15 incendiary rounds 9mm</span> and <span style="color: #22b22e;">2 cheap battery</span>.</div>
<<SanityMessage "+15 incendiary rounds 9mm, +2 Cheap Batteries">>
<<script>>
window.addCheapBattery(2);
addAmmo('incendiary', 15)
<</script>>
<</if>>
<div class="links">
<th>[[Back|LeftroomB]]</th>
</div>
<img id="event-image" src="img/events/boxes.png">
</div>
<<set $itemhere = true>>
<<else>>
<div id="CBox">
<div id="Ntext">You open the boxes, but they're empty, just filled with dust. There's nothing left. Everything has been taken.</div>
<div class="links">
<th>[[Back|LeftroomB]]</th>
</div>
<img id="event-image" src="img/events/boxes.png">
</div>
<</if>><<if $osito isnot true>>
<div id="CBox">
<div id="Ntext">Lying in the corner of the wardrobe, half-buried under crumpled clothes, is a small dusty teddy bear. One of its button eyes is missing, leaving behind a dark, empty socket. Its fur is matted, and its seams are barely holding together. Someone once held it close... a long time ago.</div>
<div class="links">
<th>[[Take teddy bear|teddy]]</th>
<th>[[Back|LeftroomB]]</th>
</div>
<img id="event-image" src="img/events/wardrobe.png">
</div>
<<else>>
<div id="CBox">
<div id="Ntext">You open the wardrobe slowly, the door creaking loudly in the silence. Inside, there's only a tangle of dust-covered clothes, moth-eaten and brittle to the touch. Whatever was once here is long gone. Nothing useful remains.</div>
<div class="links">
<th>[[Back|LeftroomB]]</th>
</div>
<img id="event-image" src="img/events/wardrobe.png">
</div>
<</if>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|SRoom1]]</th>
<th>[[Back|SRcorridor1]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|SRoom2]]</th>
<th>[[Back|SRcorridor1]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The room is dimly lit, with cracked walls. The ceiling shows signs of decay, with loose panels and hanging cables. In the center of the floor, the hole leading to the basement remains.</div>
<div class="linksTwo">
<<if $bujero is true>>
<th>[[Inspect Hole|Bujero3]]</th>
<</if>>
</div>
<div class="links">
<th>[[Exit|BedroomC]]</th>
</div>
</div>
<<set $Pasaduci = true>>
<<if $bujero isnot true>>
<<goto "Bujero">>
<</if>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|GHroom2]]</th>
<th>[[Back|Grand Hall2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|GHroom3]]</th>
<th>[[Back|Grand Hall2]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">The floor is covered with expired cleaning supplies, some leaking into dark, sticky puddles. A metal locker stands against the wall, its door slightly ajar, casting shadows inside. A cracked mirror above the sink reflects the desolation of the room. The flashlight casts sharp beams of light, but the place still feels suffocating, the air thick with the scent of mold, bleach, and something faintly metallic.</div>
<div class="linksTwo">
<<if $ghr isnot true>>
<th>[[Check room|Check]]</th>
<</if>>
<<if $ActiveBB is true>>
<th>[[Check mirror|CheckMirror]]</th>
<</if>>
</div>
<div class="links">
<th>[[Exit|Grand Hall2]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">You stand in a cold room of the abandoned psychiatric hospital. Cracked walls are covered in mold. The floor, littered with dust and broken glass, creaks underfoot. At the center, two rusted staircases: one spirals upward, blocked by debris; the other descends, sealed with boards and chains. A damp odor fills the air, and a broken lamp flickers faintly.</div>
<div class="links">
<th>[[Exit|Grand Hall2]]</th>
</div>
</div><div id="CBoxlight">
<div id="Ntext">You crouch down, inspecting the dusty floor of the room. Amid the shadows and clutter, something catches your attention—a small metal box, half-covered by torn papers and scattered debris. You open it carefully, the sound of the lid sliding against the metal startling in the silence. Inside, you find a faded, discolored photograph—its face familiar, yet forgotten. The edges are worn, and the image has lost nearly all of its color, but there’s something in those eyes that feels disturbingly close.</div>
<div class="links">
<th>[[Take it|Check2]]</th>
</div>
</div>
<div id="CBoxlight">
<div id="Ntext">The storage room is spacious. Empty, disorganized metal shelves line the walls. On one side, four metal lockers stand closed, each secured with a rusty padlock. The floor is covered in dirt, scattered paper fragments, and stacks of empty boxes arranged without order.</div>
<div class="links">
<th>[[Exit|Grand Hall]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You slide the flashlight across the room, taking slow steps and keeping a careful eye. The walls are covered in cracks and dampness; the wallpaper hangs like old skin. An old, rusted gurney lies in the center of the room, its legs twisted and its padding torn. To one side, a medical monitor, covered in dust, briefly reflects the beam of light before returning your own distorted reflection.
The beam slides toward the floor. Broken tiles, dry stains, loose cables. And then you see it. In the farthest corner, the linoleum sinks inward. A crack... no, a hole. Wide, uneven, and deep. As if something had torn through the floor from below.</div>
<div id="Pensamiento">What the hell did this?</div>
<<say $Mc>>Great... nothing suspicious about a hole leading straight to hell.<</say>>
<div id="Ntext">You approach cautiously, crouching by the edge as you direct the flashlight into the abyss. The light moves slowly, barely revealing twisted, rusted pipes and fragments of fallen concrete lost in the darkness. From below rises a cold, dense draft, carrying the penetrating smell of mold and earth, and something else you can’t quite identify.</div>
<div class="links">
<th>[[Inspect Hole|Bujero2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You crouch closer to the edge. The floor creaks, as if everything is about to give way under your weight. Looking more closely, you can see that the edge of the hole is worn, likely from the passage of time. The flashlight's beam illuminates the emptiness below, revealing the basement floor. Through the darkness, you can make out some cracked concrete slabs, as if something or someone caused the damage. The fall doesn’t seem too deep, but the dense, cold air rising from below makes you think this is not a place you want to explore without a good reason.</div>
<<say $Mc>>How... what did this?<</say>>
<div id="Ntext">It doesn’t make sense... probably the moisture and the passage of time... I don’t know if I’ll find an exit, or if I’m walking straight into something much worse, but I don’t have many options.</div>
<<say $Mc>>Well, it’s not like I have a map of this place... If this leads to the basement, it might be the only way forward.<</say>>
<div class="links">
<th>[[Descend|Descend]]</th>
<th>[[Back|Pasaduci]]</th>
</div>
</div>
<<set $bujero = true>><div id="CBox">
<div id="Ntext">This will be open in the future updates. If you like the game, you can support me and help me. Thank you for playing. </div>
<div id="sup">
<a href="https://www.patreon.com/Rustlergame" target="_blank" style="display: inline-block; background-color: #F96854; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; font-weight: bold;">Support me on Patreon</a>
</div>
<div class="links">
<th>[[Back|Pasaduci]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|Pasaduci]]</th>
<th>[[Back|BedroomC]]</th>
</div>
</div>
<< if $PasaduciEnemy isnot true>>
<<if $Sanity > 20>>
<<goto "MonsterEvent">>
<<else>>
<<goto "TwonursesEvent">>
<<endif>>
<<endif>><div id="CBox">
<div id="Ntext">The door is open.</div>
<div class="links">
<th>[[Enter|BCoffice]]</th>
<th>[[Back|BedroomC]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You approach the edge of the hole, noticing that its size is just right for you to descend with ease. The cold air rises from below, damp and foul-smelling.
</div>
<div class="links">
<th>[[Descend|Descend]]</th>
<th>[[Back|Pasaduci]]</th>
</div>
</div><div id="CBox">
<div id="Ntext"></div>
<div class="links">
[[Shoot|demonA2pelea]]
</div>
</div>
<<set $Fnurse = 0>>
<<set $DemonA2 = 1>>
<div id="CBox">
<div id="Ntext">Just as you're about to open the door, it swings open suddenly outward. A massive figure fills the doorway. A stocky, bald man wearing a light green shirt, stained with sweat and something else you’d rather not identify. He has a rusty tool hanging from his belt and a flashlight taped to it. His smell hits you before his voice does.</div>
<<say $Bruno>>Eh? Who’s there? This door isn’t for just anyone, you know? Only the doctor... and me. You can’t be here. It’s a private, dangerous area. There’s... pipes. And broken stuff. Lots of cables. Dangerous!<</say>>
<<say $Mc>>I’m Detective Alina Casey. Who are you? What are you doing in this abandoned place?<</say>>
<<say $Bruno>>I’m... the maintenance guy.<</say>>
<div id="Pensamiento">The maintenance guy?</div>
<div class="links">
<th>[[reirte de el]]</th>
<th>[[Que hombre tan fuerte]]</th>
</div>
</div>
<<include "Bruno">><div id="CBox">
<div id="Ntext">As you open the door, you step into a small, oppressive room, its walls seeming to close in around you. Light is nearly absent; only a few dusty rays seep through the cracks of a boarded-up window, faintly illuminating the specks of dust dancing in the gloom.</div>
<div id="Pensamiento">Seriously? Another hellhole? I can’t take this anymore…</div>
<<say $Mc>>What else could go wrong?<</say>>
<div id="Pensamiento">I’ve lost count of how many times I’ve said it couldn’t get worse… and it always does.</div>
<div id="Ntext">A sharp crack echoes from the darkest corner of the room. You spin around, every muscle tense. From the shadows emerges a grotesque creature, roughly the size of an average man. Its muscular body is covered in a viscous, rough skin, a sickly brown that glistens wetly in the faint light.</div>
<<say $Mc>>Damn it! What… what is that?<</say>>
<div id="Pensamiento">Is this real? Or have I finally lost my mind for good?</div>
<<say $Mc>>Get back, you filthy abomination! Die!<</say>>
<div class="links">
<th>[[Shoot|Monster1]]</th>
</div>
</div>
<<set $ME = 1>><div id="CBox">
<div id="Ntext">As you open the door, you step into a small, oppressive room. The walls seem to close in around you. There's barely any light—just a few beams slipping through the cracks of a dust-covered window, illuminating the floating dust in the air.</div>
<div id="Pensamiento">Another room...</div>
<<say $Mc>>Pff... And what’s that stench...?<</say>>
<div id="Ntext">A sharp sound breaks the silence—something metallic falls to the floor. You turn instinctively. From the darkest corner, two figures emerge. Their uniforms, filthy and worn, still bear the emblem of the psychiatric hospital.</div>
<div id="Pensamiento">Patients? No... Nurses...</div>
<div id="Ntext">One of them giggles softly, a sound tense and unnatural. The other stares at you, head tilted, calmly holding a rusted scalpel.</div>
<<say $Nurse>>You shouldn't be here... visiting hours ended years ago.<</say>>
<<say $MadNurse>>We take care of the ones who stay. Want us to take care of you, sweetheart?<</say>>
<<say $Mc>>I'm not here to fight. I'm just looking for some answers...<</say>>
<<say $Nurse>>Hehe... The answers are inside... but first, we have to open you up.<</say>>
<<say $MadNurse>><</say>>
<<say $Nurse>>Yesss... and then fill her...<</say>>
<div id="Ntext">They begin moving toward you, each step quicker than the last. Their eyes gleam with a mix of euphoria and madness.</div>
<<say $Mc>>Alright then. If this is happening, let’s get it over with.<</say>>
<div class="links">
<th>[[Shoot|Nurses1]]</th>
</div>
</div>
<<set $TNurses = 1>><div id="CBox"></div>
<<script>>
startBattle('demonHunter', 13);
<</script>>
<div id="CBox">
<div id="Ntext">The room falls silent again. The monster lies motionless on the floor, its body shattered from the fight, with limbs twisted and disordered. The feeling of its presence slowly fades away, but the adrenaline still pumps through your veins, making the air feel thicker.</div>
<div id="Pensamiento">I don't know how much longer I can keep doing this...</div>
<<say $Mc>>This is insane...<</say>>
<div id="Ntext">As you approach the fallen body, something metallic glimmers in the dim light of the room. Cautiously crouching down, you find a <span style="color: #22b22e;">rusted key</span>, rusted but still functional. It has a worn-out tag barely legible: “Storage – East Wing.”</div>
<div class="links">
<th>[[Take the key|keyL]]</th>
</div>
</div>
<<set $PasaduciEnemy = true>>
<div id="CBox"></div>
<<script>>
startBattle(
['crazyNurse', 'madNurse'],
[10, 13]
);
<</script>>
<div id="CBox">
<div id="Ntext">The room falls silent once more. The two nurses lie motionless on the floor, their bodies twisted in unnatural ways. Their laughter still lingers faintly in your mind, like a disturbing echo that refuses to fade.</div>
<div id="Pensamiento">I didn’t have a choice...</div>
<div id="Ntext">As you approach the bodies, something metallic catches your eye beneath the torn apron of one of them. You crouch down cautiously and pick it up — a small, <span style="color: #22b22e;">rusted key</span>, still intact. A worn-out tag dangles from it, barely legible: “Storage – Livingroom.”</div>
<div class="links">
<th>[[Take the key|keyL]]</th>
</div>
</div>
<<set $PasaduciEnemy = true>>
<div id="npc-container">
<img src="img/characters/bruno/bruno.png">
</div><div id="CBox">
<div id="Ntext">You take the key and tuck it into your backpack.</div>
<<say $Mc>>Looks like I just earned myself an invitation…<</say>>
<div id="Ntext">Next to the key, you find a small bottle of <span style="color: #22b22e;">antibiotics</span>, the cap half unscrewed. There are still 2 capsules inside.</div>
<div id="Pensamiento">Hopefully, I won't need them...</div>
<div class="links">
<th>[[Take antibiotics|antibioticsL]]</th>
</div>
</div>
<<silently>>
<<run window.addMissionItem('storageKey')>>
<<set $storageKey = true>>
<</silently>>
<<SanityMessage "Added Rusted Key to inventory">><<script>>
addAntibiotics(2);
<</script>>
<<SanityMessage "+2 Antibiotics">>
<<timed 0.5s>>
<<goto "BedroomC">>
<</timed>><div id="CBox">
<div id="Ntext">As you approach the small locker, you notice its surface is covered with scratches and rust stains. The lock securing it is in good condition, though it looks quite old. The metal shines slightly despite its age, and the lock appears firm and sturdy, with no signs of wear.</div>
<div class="linksTwo">
<th><<lockBreak "average" "smalllocker2" "Storage2" true>></th>
</div>
<div class="links">
<th>[[Back|Storage2]]</th>
</div>
</div>
<div id="CBox">
<div id="Ntext">This will be open in the future updates. If you like the game, you can support me and help me. Thank you for playing. </div>
<div id="sup">
<a href="https://www.patreon.com/Rustlergame" target="_blank" style="display: inline-block; background-color: #F96854; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; font-weight: bold;">Support me on Patreon</a>
</div>
<div class="links">
<th>[[Back|Storage2]]</th>
</div>
</div><div id="CBox">
<div id="Ntext">You walk down the hallway. The darkness is so dense you can barely make out the decaying walls. Suddenly, you hear a sound that chills your blood: a wet, distorted babble—followed immediately by another, eerily similar. You stop, your breath quickening.
From a dark corner, two creatures emerge at once—grotesque, deformed figures covered in wounds, their limbs twisted and unnatural. They crawl side by side, as if driven by the same sick instinct. The creatures are coming for you.</div>
<div class="links">
<th>[[Shoot|bbfightc2]]</th>
</div>
</div>
<<set $C2PeleaBB = 1>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>><div id="CBox"></div>
<<script>>
startBattle(
['mawling', 'mawlingStrong'],
[13, 15]
);
<</script>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 20s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><<set $randomItem = random(3)>>
<<if $randomItem is 0>>
<<goto "CellCorridorC2">>
<<elseif $randomItem is 1>>
<div id="CBox">
<div id="Ntext">After eliminating the monsters, you find a box of <span style="color: #22b22e;">15 rounds 9mm</span> on the ground, left behind by them.</div>
<div class="links">
<th>[[Take item|balas]]</th>
</div>
</div>
<<else>>
<div id="CBox">
<div id="Ntext">After eliminating the monsters, you find a rusty <span style="color: #22b22e;">lockpick</span>, lying among the rubble.</div>
<div class="links">
<th>[[Take item|ganzua]]</th>
</div>
</div>
<</if>>
<<script>>
addAmmo('9mm', 15)
<</script>>
<<goto "CellCorridorC2">><<giveLockpicks 1>>
<<goto "CellCorridorC2">><div id="CBox">
<div id="Ntext">Your legs tremble. Your whole body aches.
The nurse leans in one last time, so close you can smell the acidic sweat beneath her cheap perfume. Her breath brushes your ear—thick and warm.</div>
<<say $MadNurse>>I hope you’ve learned the lesson… It’s time to return to the concubine zone. Wait here. Don’t move…<</say>>
<div id="Ntext">You hear her putting away her instruments. Then, slowly, she adjusts her uniform, as if she has all the time in the world.
She begins walking toward the room’s exit. Her footsteps fade with an inhuman calm… until she’s gone.</div>
<div id="Pensamiento">Shit! I need to get out of here!</div>
<div class="links">
<th>[[Escape|ConsA]]</th>
</div>
</div><div id="CBox"></div>
<<set $RandomDistance = random(10)>>
<<if $RandomDistance gte 0>>
<<script>>
startBattle('mawling', 8);
<</script>>
<<elseif $RandomDistance gte 4>>
<<script>>
startBattle('mawling', 5);
<</script>>
<<elseif $RandomDistance gte 8>>
<<script>>
startBattle('mawling', 12);
<</script>>
<</if>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>> <<SanityMessage "Dusty Teddy Bear added to inventory">>
<<silently>>
<<run window.addMissionItem('teddybear')>>
<</silently>>
<<set $osito = true>>
<<goto "wardrobeB">><<switch visited()>>
<<case 1>>
<div id="CBox">
<div id="Ntext">You approach the cracked mirror above the sink, its surface broken in several places. The reflection is distorted, and for a moment, you lose yourself in your own reflection. The face staring back at you seems strange, like that of a stranger. The lines around your eyes, the wear of sleepless nights, the ghost of something darker beneath the surface.</div>
<div id="Pensamiento">Am I losing myself? This place... it’s making me question everything. What’s real? What’s not?</div>
<div id="Ntext">You shake your head, trying to clear the fog.</div>
<<say $Mc>>There’s no time to lose.<</say>>
<div class="links">
<th>[[Back|GHroom3]]</th>
</div>
<<default>>
<div id="CBox">
<div id="Ntext">You glance at your reflection once more. The cracked mirror shows only fragments of your face, distorted and fragmented, a reminder of the broken reality surrounding you.</div>
<div class="links">
<th>[[Back|GHroom3]]</th>
</div>
<</switch>>
<<SanityMessage "+1 Chemicals">>
<<silently>>
<<run window.addMissionItem('chemicals')>>
<</silently>>
<<goto "GHroom3">>
<<set $chemicals += 1>><div id="CBox">
<div id="Ntext">The photograph shows a pregnant woman sitting on a bench in the psychiatric hospital's garden. Despite the somber setting, there’s a tenderness in her expression—a quiet mix of exhaustion and affection. Next to her, a girl of about six leans gently against her belly, arms wrapped around it in a small, careful embrace. The child has dark hair and wide, serious eyes, as if she understands more than she should at her age. The woman wears a white gown, most likely that of a patient.
You turn the photograph over and discover a faint handwritten note in ink, nearly lost to time:</div>
<img id="event-image2" src="img/documents/photo.png" alt="Photo" class="photo-effect">
<div id="Ntext">A pregnant woman, a child... what does all this have to do with the case? I’m not sure what surprises me more, the fact that the doctor was so close to these people or that no one ever asked about them before.
I don’t have time to dwell too much on this photo, but... I can’t help wondering:</div>
<<say $Mc>>What happened to them?<</say>>
<div id="Ntext">Next to the photo rests a small vial of <span style="color: #22b22e;">chemicals</span>. The label is faded with time, barely legible, though the warning symbol still stands out. The liquid inside looks stable, though you can’t help but wonder what it was used for… and by whom.</div>
<div class="links">
<th>[[Take chemicals|chemgh3]]</th>
<th>[[Let it|GHroom3]]</th>
</div>
</div>
<<set $ghr = true>>
<<SanityMessage "New archive">>
<<script>>
setup.phoneSystem.addFile("Old Photo", "img/documents/photo.png");
setup.phoneSystem.addFile("Old Photo Back", "img/documents/photo2.png");
<</script>>
<<playAudio "papper" "media/sounds/page.mp3" "sound" "volume:0.5">>
<style>
.photo-effect {
transition: transform 0.5s ease;
}
.photo-effect:hover {
transform: rotate(360deg);
}
</style>
<<script>>
$(document).ready(function() {
$('#event-image2').hover(
function() {
// Cuando el ratón entra en la imagen
$(this).attr('src', 'img/documents/photo2.png');
$(this).css('transform', 'rotate(360deg)');
},
function() {
// Cuando el ratón sale de la imagen
$(this).attr('src', 'img/documents/photo.png');
$(this).css('transform', 'rotate(0deg)');
}
);
});
<</script>><div id="CBox"></div>
<<set $RandomDistance = random(10)>>
<<if $RandomDistance gte 0>>
<<script>>
startBattle('mawling', 8);
<</script>>
<<elseif $RandomDistance gt 4>>
<<script>>
startBattle('mawling', 5);
<</script>>
<<elseif $RandomDistance gt 8>>
<<script>>
startBattle('mawling', 12);
<</script>>
<</if>>
<<timed 1s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<timed 10s>>
<<playSound "mawling" "media/sounds/evilbb.mp3" volume:0.5>>
<</timed>>
<<if $CaseyJacket is true>>
<<run changeImage("img/characters/casey/caseyjacketpistol.png")>>
<</if>>
<<if $CaseyCoat is true>>
<<run changeImage("img/characters/casey/caseycoatpistol.png")>>
<</if>><div id="CBox">
<div id="Ntext">The wooden desk is old and worn, its surface covered in scratches and dark stains. One of the legs wobbles slightly, and dust clings to every corner.</div>
<div class="links">
<th>[[Check the computer|save1]]</th>
<th>[[Back|shed]]</th>
</div>
<img id="event-image2" src="img/events/deskshed.png">
</div>
<div id="CBox">
<<switch visited()>>
<<case 1>>
<div id="Ntext">Surprisingly, the computer still works. The screen flickers to life, displaying an old but functional operating system.</div>
<<default>>
<div id="Ntext">The computer still works. The screen flickers to life, displaying an old but functional operating system.</div>
<</switch>>
<div class="links">
<th><a tabindex="0" role="button" id="save-button">Save/Load</a></th>
<th>[[Go back|shedDesk]]</th>
</div>
<img id="event-image2" src="img/events/deskshed.png">
</div>
<<script>>
// Ensure SugarCube save functionality
$(document).ready(function() {
// Direct save method for SugarCube
$('#save-button').on('click', function() {
// Explicitly use SugarCube's save method
try {
// Open saves dialog
UI.saves();
} catch (error) {
// Fallback error handling
console.error("Save functionality error:", error);
alert("Save function could not be executed.");
}
});
});
<</script>>