<img src="img/misc/banner.png" style="width: 100%;">
!!!<span style="color:white">Welcome to Fractured Fantasies!</span>
This is my second game, with the first being New Life Project. This is nothing like it. I hope you enjoy!
<<audio "ambience" loop play>>
Help out production by supporting me on Patreon! It would mean the world to me, and you too will get access to sweet benefits!
<a href="https://www.patreon.com/NotaBao"><img src="img/patreon.png" width="30" height="30"></a> [[Support me on Patreon!|https://www.patreon.com/NotaBao]]
You can also [[support me on Ko-Fi|https://ko-fi.com/notabao]] if that's more your style!
If you already support me, thank you so much! I appreciate you! And as proof, go to your selected support site and download the Patron or Subscriber version from there!
Enjoy.
<i>Created by Nota Bao</i>
@@.neg;18+@@
[[Play!|girlStart]]
<<linkreplace "Disclaimer">>Nota Bao does not condone any and all illegal or harming acts displayed throughout this game. No events in this game is real, and any similarities are purely coincidental. There is no real blood relation between any of the characters, and all non-consensual scenes are one hundred percent consensual and acted out between actors.
[[Disclaimer and 2257 Compliance]]
[[Sound attribution|Attribution]]<</linkreplace>>
\<<silent>>
<<dynamicCouchTimes>>
<<dynamicKitchenTimes>>
<<set $allBooks to ["bookAshes", "bookBlood", "bookBone", "bookBridge", "bookBroken", "bookChronicles", "bookCity", "bookEchoes", "bookForgotten", "bookGhost", "bookGods", "bookHeavens", "bookIron", "bookRoads", "bookRust", "bookSecret", "bookShattered", "bookTwilight", "bookWasteland", "bookWhispers", "bookWolves"]>>
<<run $allBooks.shuffle()>>
<<set $booksFound = []>>
<<for _i = 0; _i < 8; _i++>>
<<set _book = $allBooks[_i]>>
<<set $booksFound.pushUnique(_book)>>
<<run $allBooks.deleteAll(_book)>>
<</for>>
<<run $allBooks.shuffle()>>
<</silent>>!!!Disclaimer
Nota Bao does not condone any and all illegal or harming acts displayed throughout this game. No events in this game is real, and any similarities are purely coincidental. There is no real blood relation between any of the characters, and all non-consensual scenes are one hundred percent consensual and acted out between actors.
!!!2257 Compliance
Nota Bao is not a producer (primary or secondary) of any or all of the content found within the game. With respect to the records as per 18 USC 2257 for any and all content found on this site, please kindly direct your request to the site for which the content was produced.
Nota Bao uses imaging from the site Sex.com.
Sex.com is a picture & video sharing site that allows for the pinning, uploading, sharing and general viewing of various types of adult content, and while Sex.com does the best it can with verifying compliance, it may not be 100% accurate.
Sex.com abides by the following procedures to ensure compliance:
Requiring all users to be 18 years of age to upload videos.
When uploading, user must verify the content; assure he/she is 18 years of age; certify that he/she keeps records of the models in the content and that they are over 18 years of age.
For further assistance and/or information in finding the content's originating site, please contact Nota Bao at:
notabaowastaken@gmail.com
Nota Bao allows content to be reported as inappropriate. Should any content be reported as illegal, unlawful, harassing, harmful, offensive or various other reasons, Nota Bao shall remove it from the game without delay.
!!!Copyright Infringement
Nota Bao does not own any rights to any of the imaging used throughout the game. Nota Bao does not monetize any images used throughout the game, but solely the story. The game works as intended without the imaging, and any and all images are sourced from fair use sites. If your photo is featured within the game, Nota Bao shall immediately remove it at its own discretion. Please contact notabaowastaken@gmail.com for any inquiries.
[[Go back|Start]][img[img/misc/outside.webp]]
In the desolate aftermath of a world plunged into chaos, where civilization has crumbled and humanity teeters on the brink of extinction, you find yourself navigating a harsh and unforgiving landscape. The air is thick with the acrid scent of decay, and the once vibrant cities now lie in ruins, haunted by the @@.blurrier;ghosts@@ of a bygone era.
You find yourself as a lone survivor. Airborne <span style="color:DarkOliveGreen">toxins</span> are everywhere outside, and you're only able to perform limited actions before needing to go back. For some reason, the <span style="color:DarkOliveGreen">toxins</span> can't reach the inside of buildings or structures. It's like they need <i>something</i> from the outside to stay active.
Good for you. This means your house is safe. However, your house is the only safe house in a good distance. There's no one around you. How will you survive?
You're a somewhat handy girl. You'll figure out a way to adapt.
What's your name? <<textbox "$player.name" "Josephine">>
<strong><i>How dangerous are the ruins?</i></strong>
<label><<radiobutton "$difficulty" 50 checked>> Quiet Streets</label>
<label><<radiobutton "$difficulty" 30>> Roving Gangs</label>
<label><<radiobutton "$difficulty" 15>> Scavenger Swarms</label>
[[Begin|preIntro]]
[[Skip intro|introSkip]]> <em>[Faint static... screen flickers]</em>
Elena Marrow <b>(Anchorwoman)</b>:
" - breaking news just coming in from the Global Pathogen Response Agency. What was previously thought to be a contained viral incident has now... been compromised."
A pause. Papers shuffle. A tremble in her voice.
"Authorities confirm that the quarantine perimeter surrounding Research Sector Nine has collapsed after an unexplained breach. The pathogen - identified only as X-17 - is airborne, highly adaptive, and resistant to all known countermeasures."
Another static flick. Her voice returns sharper, more strained.
"Citizens are urged to remain indoors, seal all ventilation systems, and avoid exposure to outside air at all costs. Early symptoms include disorientation, respiratory shock, and - according to unverified reports - neurological degradation."
She glances off-camera.
"...I'm being told now that evacuation routes have... been shut down. All emergency shelters are at maximum capacity. Officials insist the situation is ‘manageable,' but independent analysts warn that the contagion is spreading far faster than projections."
The studio lights flicker. A distant alarm sounds.
"Again: this is Elena Marrow. If you can hear this - stay calm, stay inside, and do not attempt to travel. We- "
A loud metallic crash is heard offscreen.
"...What was that? Do we have security on..- "
STATIC.
Screech of the emergency broadcast system.
A monotone automated voice replaces her:
@@.red;"THIS IS A GLOBAL EMERGENCY. ALL CONTAINMENT EFFORTS HAVE FAILED. SEEK SHELTER. FURTHER INSTRUCTIONS - UNAVAILABLE."@@
> <em>[Transmission cuts.]</em>
The screen goes black.
And the world ends quietly.
[[Wake up|splashScreen]]<br><br><br>
<center><h1>@@.fade-in-out;3 years later...@@</h1></center>
<<timed 5s>><<goto "cont">><</timed>>[img[img/misc/outside.webp]]
<<setEnemyObjects>>
You should probably begin doing something. You're almost out of food. It's been a long time since you've left your house. A long time since... you've seen people. You have been alone for what feels like an eternity. At least during the apocalypse you had someone to rely on. Unfortunately the aftermath toxins managed to take them away.
<<linkreplace "Scavenge (1:00)">><<addmins 60>>You exit your house to scavenge for resources. The air is humid, and you can already feel the toxins rushing into your nostrils. Haunting. Nonetheless, scavenging is a vital part of your survival and advancement.
<<equipGear head gasmask>><<radCalc>>
You come across a dead soldier. Weird, he's new. His body is still warm to the touch.
@@.pos;He's got some really nice boots, and a knife.@@
[img[img/misc/deadSoldier.webp]]
<<linkreplace "Steal (0:05)">>You pick up the boots and the knife.<<addmins 5>><<equipGear foot combatboots>><<equipGear secondary combatknife>><<radCalc>>
<<replace "#steal">><</replace>>
<<link [[Hurry back (0:01)|initHouse]]>><<addmins 1>><</link>><</linkreplace>>
<span id="steal"><<link [[Respect him and leave (0:01)|initHouse]]>><<addmins 1>><</link>></span><</linkreplace>>[img[img/misc/introSkip.webp]]
A faint memory of tomorrow strikes you... It is like you have lived through this life before. Choices were made, good and bad, no one is to judge but the Universe itself. You must decide for yourself what kind of person you are, below.
Did you steal the poor guys gear?
<label><<radiobutton "$introGear" "yes">> Yes.</label> | <label><<radiobutton "$introGear" "no" checked>> No.</label>
Did you save Carl?
<label><<radiobutton "$introCarl" "yes" checked>> Yes.</label> | <label><<radiobutton "$introCarl" "no">> No.</label>
[[Wake up|introSkipEval]]<<set $equipped.head to "gasmask">>
<<set $inventory.head.pushUnique("gasmask")>>
<<addmins 61>>
GEAR?
<<if $introGear is "yes">>
<<set $equipped.foot to "combatboots">>
<<set $equipped.secondary to "combatknife">>
<<set $inventory.foot.pushUnique("combatboots")>>
<<set $inventory.secondary.pushUnique("combatknife")>>
<<setKarma -5>>
<<storeGear>><<storeWeap>>
<<addmins 5>>
<<else>>
<<setKarma 5>>
<<storeGear>>
<<storeWeap>>
<<addmins 1>>
<</if>>
<<unset $introGear>>
CARL?
<<if $introCarl is "yes">>
<<set $carl.isRes to true>>
<<setKarma +1>>
<<run $residents.pushUnique("Carl")>>
<<addmins 30>>
<<else>>
<<set $carl.isDead to true>>
<<setFood +2>><<setKarma -5>>
<<addmins 14>>
<<moirai>>
<</if>>
<<unset $introCarl>>
<<setEnemyObjects>>
<<goto "mainHouse">>[img[img/main/mainHouse.webp]]
This is your place. It's rundown on the outside, but well kept on the inside. It's secured from the toxins.
<<if $inventory.secondary.length eq 1>>You store your gear. You're better off with this, and the dead guy obviously didn't need it anymore.<<nobr>><<setKarma -5>><<storeGear>><<storeWeap>><</nobr>><<else>>You didn't take the dead soldiers gear... Some morals never die, even if the world has. You're worse off.<<setKarma 5>><<storeGear>><<storeWeap>><</if>>Lounging in your apartment you notice something outside... Footsteps. You feel your heart rise to your throat. You can't speak. You can't defend yourself. You're armed with a knife and tits, and the tits is definitely not going to help you.
You suddenly hear a @@.neg;thud@@. It sounds deep. You peek outside the window to see a man lying on the ground.
<<link [[Rescue him (0:30)|rescueCarl]]>><<addmins 30>><</link>>
<<link [[Let him die off before searching his body (0:14)|carlDead]]>><<addmins 14>><</link>>powerup.wav by Hunski -- https://freesound.org/s/216619/ -- License: Attribution 3.0
Door opening and closing 2 by JakLocke -- https://freesound.org/s/261090/ -- License: Attribution 4.0
[[Go back|Start]][img[img/main/anna/annaBed.webp]]
<<if $kitchenInteract.includes("Anna") || $couchRelax.includes("Anna") || $showerUser is "Anna">>
You enter Anna's room. She's no where to be seen.
Where is she?<<else>><br>You stand in Anna's room. <<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 22>>
<<switch random(1,3)>><<case 1>>She's lying on her bed, feet in the air.
<span style="color:violet">Anna: Hey, $player.name! Thank you for letting me stay here...</span><<case 2>>She's flipping through a notebook.
<span style="color:violet">Anna: Hi, $player.name. Anything I can help you with..?</span><<case 3>>She's sleeping. She must be tired.
<span style="color:violet">Anna: No... No, don't take him... Dad..!</span><</switch>>
<<link [[Hang out (0:30)|annaHang]]>><<addmins 30>><</link>><<if $anna.rp gte 30>><br><<link [[Cuddle for comfort (0:25)|annaCuddle]]>><<addmins 25>><</link>><</if>><<if $anna.rp gte 65>><br><<annaSex annaSex>><</if>>
<<do>><<if $companion.name is "">><<link "Ask to accompany you">><<set $anna.isCompanion to true>><<set $companion.name to "Anna">><<redo>><<updatebar>><</link>><<elseif $companion.name is "Anna">>Anna is accompanying you.
<<link "Ask her to stay here">><<set $anna.isCompanion to false>><<set $companion.name to "">><<redo>><<updatebar>><</link>><<elseif $companion.name isnot "Anna" && $companion.name isnot "">>Someone else is accompanying you: <span style="color:yellow">$companion.name</span><</if>><</do>><<else>>
<br>She's fast asleep. It's too late to do anything else with Anna. You should get some rest, too.<</if>><</if>>
[[Leave her room|hallway]][img[img/main/anna/annaBed.webp]]
You hang out with Anna. She's beaming from ear to ear.
<<switch random(1, 10)>>
<<case 1>>You talk about loneliness, and the time you have spent in this apartment, fixing it up and keeping it looking fresh during the apocalypse, even though there was no one to help you in the end.
Anna talks about her parents, and their story. She speaks of them so very fond. She misses them a lot. You give her a hug.
<<case 2>>You talk about the old world, the streets filled with people, the sound of laughter spilling from cafés, and the way the city lights used to glow at night.
Anna remembers her favorite bookstore, the smell of paper and ink, and how she would spend hours there with her parents. She smiles faintly, then grows quiet. You place your hand gently on hers.
<<case 3>>You talk about survival, the long nights spent listening to the wind howl through broken windows, and the small victories of finding food or repairing something that kept you alive.
Anna shares stories of her childhood adventures, climbing trees and running through fields, her voice carrying a warmth that cuts through the cold silence. You both laugh softly, and for a moment, the world feels lighter.
<<case 4>>You talk about music, the songs that once played on the radio, and how you sometimes hum them to yourself just to remember what joy sounded like.
Anna recalls her father's guitar, how he would sing to her mother in the evenings, and how those melodies still echo in her memory. She closes her eyes, and you sit beside her, letting the silence honor the tune.
<<case 5>>You talk about hope, the fragile thread that keeps you moving forward, even when the days blur together.
Anna speaks of dreams she still carries - of gardens, of laughter, of rebuilding something worth living for. Her eyes shine with determination, and you tell her that maybe, just maybe, you can build that future together. She leans against you, and the room feels less empty.
<<case 6>>You talk about fear - not the kind that makes you freeze, but the quiet kind that sits in the back of your mind. The kind that whispers you might end up alone again.
Anna listens closely.
She admits she still wakes up some nights expecting to hear her parents' voices, only to be met with silence. You both share a moment of vulnerability, and she squeezes your hand as if to remind you she's really here.
<<case 7>>You talk about the sky - how it used to be blue, not the hazy grey it is now. You tell her how you'd lie on rooftops, counting stars that no longer shine.
Anna tells you she used to name the constellations, even making up her own stories for them. She laughs softly, embarrassed, and you tell her it's beautiful.
For a moment, you both stare at the ceiling, imagining a sky worth wishing on.
<<case 8>>You talk about food - real food. Fresh bread, warm soups, sweet fruit. Things the apocalypse stole without warning.
Anna's eyes light up as she describes her mother's cooking, her favorite meals, and how the kitchen would smell on cold mornings. Her voice cracks halfway through a memory.
You offer her a gentle smile, promising that someday you'll cook something together... even if it's just canned beans dressed up with spices.
<<case 9>>You talk about mistakes - choices you made, people you lost, the things you wish you could redo. The things you regret.
Anna surprises you.
She admits she sometimes blames herself for surviving, wondering why she lived when so many others didn't. You place a hand on her shoulder, reminding her that survival isn't a crime.
The look she gives you, soft, grateful. It lingers longer than expected.
<<case 10>>You talk about dreams. Nightmares that cling to your ribs, and strange visions that follow you into the day.
Anna reveals she often dreams of walking through an untouched forest, one full of birds and sunlight. She says she hopes it exists somewhere, untouched by toxins or chaos. You promise her that if it's real, you'll find it together.
She blushes quietly, and your heart feels a little warmer.
<</switch>>
She likes you more!
<<setAnna 1>>
[[Finish talking|annaRoom]]You lay down next to Anna, scooting over and assuming the little spoon position. Anna grabs hold of you with her arms, wrapping them around you and holds you tight in a comforting hold. It helps. It gives you whatever it is you need. You feel content.
[img[img/main/anna/annaCuddle.webp]]
<<if $anna.rp gte 50>><<linkreplace "Initiate some fun">>You begin running your hands inside of her jumper, slowly caressing her stomach. You can hear her breath get heavier. Slowly, you move your hand up towards her tits, and begin caressing her nipples. She gasps, and lets out a small, <span style="color:pink">cute</span> moan.<<if $anna.rp gte 80>>Without hesitation, you pull your pants down, and your panties down with them.<<else>>You hesitate, but start pulling your pants and panties down. This is still new to you.<</if>>
Anna hesitates, pulling her jumper up, and her pants down. She helps you get out of your shirt. It doesn't take long for the both of you to be butt naked in Anna's bed. You pussy is wet. You can feel it. You move your hand down to Anna's pussy, and feel her wetness too. You gently insert your fingers.
<<switch random(1,2)>><<case 1>>[img[img/main/anna/annaCuddleFuck1.webp]]<<default>>[img[img/main/anna/annaCuddleFuck2.webp]]<</switch>>
Anna starts rubbing your pussy, plunging two of her fingers into your, now extremely wet pussy.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
She likes you more.
<<replace "#anna">><</replace>>
[[Clean up|annaRoom]]
<<setAnna 2>>
<</linkreplace>><<else>>\You need to improve your relationship before doing this.<</if>>
<span id="anna">[[Leave|annaRoom]]</span>
<<setAnna 2>>She stares at you for a short moment, then motions for you to come closer to her. It doesn't take long before you're on her bed making out. The whole situation is incredibly arousing.
<<setArousal 15>>
You begin running your hands inside of her jumper, slowly caressing her stomach. You can hear her breath get heavier. Slowly, you move your hand up towards her tits, and begin caressing her nipples. She gasps, and lets out a small, cute moan. Without hesitation, you pull your pants down, and your panties down with them.
Anna hesitates, pulling her jumper up, and her pants down. She helps you get out of your shirt. It doesn't take long for the both of you to be butt naked in Anna's bed. You pussy is wet. You can feel it. You move your hand down to Anna's anus, and feel the wetness of her pussy too. You gently place your tongue over her ass.
<<switch random(1,2)>><<case 1>>[img[img/main/anna/annaSex1.webp]]<<default>>[img[img/main/anna/annaSex2.webp]]<</switch>>
Anna starts rubbing your pussy, plunging two of her fingers into your, now extremely wet pussy.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
She likes you more.
[[Clean up|annaRoom]]
<<setAnna 2>>You open the bathroom door slightly ajar. It was possible to lock this door, once, but that is many moons ago. It's run down, after all. You peek inside.
<<setArousal 40>>
<<switch random(1,3)>><<case 1>>[img[img/main/anna/annaPeek1.webp]]<<case 2>>[img[img/main/anna/annaPeek2.webp]]<<case 3>>[img[img/main/anna/annaPeek3.webp]]<</switch>>
<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>She doesn't notice you.
<<masturbate 40 249 149 0 annaPeekJerk>>
[[Close the door|mainHouse]]<<case 8 9 10>>She saw you! Shit!
@@.anna;Anna: Uhm... $player.name? What the are you doing? Please don't look at me...@@
[[Run away|mainHouse]]
<<if ($anna.rp gte 80 && $corruption gte 70) || $lust gte 50>><<link [[Enter the bathroom (0:30)|annaPeekFuck]]>><<addmins 30>><</link>><<else>>You're not ready for this, yet.<</if>><</switch>>This girl... So self conscious, so pretty. You'd give everything you could, for her to see herself through your eyes. The thought of her body, naked, sends you over your limit.
<<setInhib -1>>
Your pussy is @@.you.rumble;trembling@@!
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
It doesn't take long for your body to become electric, sending pulses all the way through. Your eyes roll back inside your skull, and your breath stops for a short while.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<setCorrupt 1>> | <<setLust 2>> | <<setArousal -100>>
<<setMasturbated 1>>
[[Clean up and get dressed|bedroom]][img[img/main/mainBath.webp]]
@@.anna;Anna: Uhm... $player.name? What the are you doing? Please don't look at me...@@
@@.you;$player.name: I wasn't looking, I promise!@@
@@.anna;Anna: I saw you look at me...@@
She looks away.
@@.you;$player.name: Fine, you got me. But I like looking at you! You're pretty...@@
She blushes, not exactly knowing where to put herself. She's still naked infront of you, and it looks like she's forgetting to cover herself. Or maybe she's aware of that part.
@@.anna;Anna: Would you maybe want to join me for a bath?@@
You nod, strip naked and approach Anna. She turns her back towards you, still a little shy.
You take the initiative.
It doesn't take long before showering together becomes much more than just a shower.
<<switch random(1,2)>><<case 1>>[img[img/main/anna/annaPeekSex1.webp]]<<case 2>>[img[img/main/anna/annaPeekSex2.webp]]<</switch>>
@@.anna;Anna: Oh... Oh my...@@
She @@.you;moans@@ and @@.you;blushes@@. So do you.
[[Finish showering|mainHouse]]As you ascend the stairs, you hear the girl behind you cry out.
<<setSanity -5>><<setKarma -5>>
Is this the right choice? There's simply no time to change your mind. Besides, it shows lack of confidence. That's dangerous these days. You're not going back down after her.
<<moirai>>
[[Enter the casino|casinoInside]][img[img/misc/outside.webp]]
You let the man die off, then run out to search him.
He has a bit of food on him.
What kind of a monster are you to let an innocent man die? But then again. It's a tough world, and surviving is a task done alone.
Although, you can't shake the feeling that this is going to come back and bite you in some way or the other.
<<moirai>>
<<link [[Go back inside (0:01)|mainHouse]]>><<addmins 1>><</link>>
<<set $carl.isDead to true>><<setFood +2>><<setKarma -10>>
/* IF NOT DEAD */[img[img/main/mainHouse.webp]]
You run out and grab the man. He groans. You drag him inside and position him on a table. He doesn't have any visible wounds, and looks to be relatively okay. Just needs clean air without toxins and some rest. He must have walked for a long time.
You arrange for him to have a shower, and slowly as time passes he regains his senses.
<span style="color:tomato">Wounded stranger: @@.slowrumble;Ugh...@@ Thank you...</span>
He has a hard time talking, and it's as if the words are just barely able to leave his mouth.
He rests again.
Soon after he seems to be alright, and fit for fight again.
<span style="color:tomato">Wounded stranger: Thank you for saving me, uhm..?</span>
<span style="color:pink">$player.name: $player.name.</span>
<span style="color:tomato">Wounded stranger: Thank you, $player.name. Can I stay with you for a while? I have no other place to go, and honestly I've been walking for too long to remember where I came from. My name is <span style="color:lightblue">Carl</span>, if it matters to you... I'll be good. I @@.slowrumble;<span style="color:red">promise</span>@@.</span>
"I promise." Those words. They mean nothing out here. But you did a good thing, and you have a feeling that it's going to be repaid. In one way or another.
You show him to the extra room, and have him stationed there for the time being.
@@.em;Maybe he can be of use to you somehow.@@
[[Continue|mainHouse]]
<<setResident "Carl">>[img[img/main/carl/carlBed.webp]]
<<if $kitchenInteract.includes("Carl") || $couchRelax.includes("Carl") || $showerUser is "Carl">>
You enter Carl's room. He's no where to be seen.
Where is he?<<else>>
You stand in Carl's room. <<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>
<<switch random(1,3)>><<case 1>>He's sitting on his bed, polishing a knife.
<span style="color:lightblue">Carl: Hey, $player.name! Thank you, again, for saving me. I can never thank you enough.</span><<case 2>>He's laying on his bed, resting.
<span style="color:lightblue">Carl: Hello, $player.name. Anything I can help you with?</span><<case 3>>He's laying on his bed, looking through an old magazine. It looks like there's a bunny on the front page cover.
<span style="color:lightblue">Carl: Oh, hello, $player.name! Didn't hear you coming in...</span><</switch>>
<<link [[Hang out(0:30)|carlHang]]>><<addmins 30>><</link>><<if $carl.rp gte 30>><br><<link [[Cuddle for comfort (0:20)|carlCuddle]]>><<addmins 20>><</link>><</if>><<if $carl.rp gte 65>><br><<carlSex carlSex>><</if>>
<<do>><<if $companion.name is "">><<link "Ask to accompany you">><<set $carl.isCompanion to true>><<set $companion.name to "Carl">><<redo>><<updatebar>><</link>><<elseif $companion.name is "Carl">><<link "Ask him to stay here">><<set $carl.isCompanion to false>><<set $companion.name to "">><<redo>><<updatebar>><</link>> <em>(Carl is accompanying you.)</em><<elseif $companion.name isnot "Carl" && $companion.name isnot "">>Someone else is accompanying you: <span style="color:yellow">$companion.name</span><</if>><</do>><<else>>
<br>He's fast asleep. It's too late to do anything else with Carl. You should get some rest, too.<</if>><</if>>
[[Leave his room|hallway]][img[img/main/carl/carlBed.webp]]
<<switch random(1, 10)>>
<<case 1>>You decide to hang out with Carl. There's not much to do, but you talk.
You talk about past experiences, and Carl talks about his adventures. It's fun and exciting to learn more about Carl. According to him, he used to be some what of a rabble-rouser.
You tell him about the tough times you had to endure all alone in the wilderness.
<<case 2>>You ask Carl how he survived on his own before you met him. He chuckles, rubbing the back of his neck.
@@.carl;Carl: Badly... Lots of running. Lots of dumb luck.@@
But the way he talks about it - the near-misses, the scrapes, the stupid risks - you can tell he's tougher than he lets on.
<<case 3>>You talk about the early days of the collapse. The sirens, the panic, the way the world seemed to rot overnight.
Carl listens quietly, his expression softening.
He shares how he lost people too, even though he rarely admits it.
The moment hangs heavy, but somehow comforting - shared grief has a way of making you feel less alone.
<<case 4>>You tell Carl you're impressed by how resourceful he is. He laughs, shaking his head.
@@.carl;Carl: Rescourceful? I'm just stubborn.@@
Still, the way he smiles tells you he appreciates the compliment.
He looks good when he smiles - warm in a world that rarely is.
<<case 5>>Carl talks about a group he once travelled with - rough, loud, chaotic. He says he left because he didn't agree with how they solved problems.
@@.carl;Carl: Sometimes walking away is harder than fighting@@
You nod. You know he's right.
<<case 6>>You talk about hobbies - strange word nowadays, but it feels good to remember. Carl says he used to carve little wooden figures when he was younger.
He blushes, saying it's embarrassing. You tell him it isn't. You'd actually love to see one someday.
<<case 7>>You tell Carl you sometimes miss the normal things - grocery stores, lazy mornings, the hum of distant traffic. Carl admits he misses the feeling of having a purpose.
@@.carl;Carl: But maybe this can be a purpose now.@@
He's motioning around your safehouse. The room feels warmer for a moment.
<<case 8>>Carl asks you what kept you going all this time. You tell him the truth: you're not sure.
He thinks about it, then tells you that you're the one who keeps him going.
Your chest tightens a little. He looks away quickly, pretending he didn't say it.
<<case 9>>Carl tells you a story about how he once outran a pack of scavengers - barefoot, soaked, and swearing the entire time.
You laugh so hard you nearly fall over. He joins in, laughing with that rough, deep sound of his.
It feels good. Really good.
<<case 10>>You notice Carl staring at the boarded windows, lost in thought. When you ask what's on his mind, he says he wonders what the world would have looked like if things hadn't gone wrong.
@@.carl;Carl: A life without running... without fighting.@@
You tell him maybe that life isn't gone - just hidden. He meets your eyes with a look that lingers too long to ignore.
<</switch>>
He looks very handsome when he's so rugged.
<<setArousal 10>>
@@.pos;He likes you more!@@
<<setCarl 1>>
[[Finish talking|carlRoom]]You lay down next to Carl, and he positions himself behind you.
You wiggle your ass closer to him, and snuggle up close. He holds you tight. It feels warm and safe, something you could get used to.
[img[img/main/carl/carlCuddle.webp]]
<<if $carl.rp gte 50>><<linkreplace "Initiate some fun (0:20)">>You grind your ass on his crotch, clearly feeling it becoming stiffer by the second. You can hear his breath become louder. <<if $carl.rp gte 80>>Without hesitation, you pull your pants down, and your panties down with them.<<else>>You hesitate, but start pulling your pants and panties down. This is still new to you.<</if>>
<<addmins 20>><<setFatigue 400>>
Carl doesn't hesitate, and flings his cock against you. With a slow move, he inserts himself into your wet, tight pussy. You position yourself ontop of him.
<<switch random(1,2)>><<case 1>>[img[img/main/carl/carlCuddleFuck1.webp]]<<default>>[img[img/main/carl/carlCuddleFuck2.webp]]<</switch>>
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
He cums inside of you.
[img[img/main/carl/carlCuddleCum.webp]]
He likes you more.
<<replace "#carl">><</replace>>
[[Clean up|carlRoom]]
<<setCarl 2>>
<</linkreplace>><<else>>\You need to improve your relationship before doing this.<</if>>
<span id="carl">[[Leave|carlRoom]]</span>
<<setCarl 2>>He looks at you wide-eyed. You lock eyes, and you smile at him. It's like he doesn't quite know what to do<<if visited() gte 2>> even though he's done it before.<<else>>.<</if>>
You approach him.
<span style="color:pink">$player.name: Cat's got your tongue?</span>
You smile at him seductively, and climb up onto his lap, legs spread on both sides of him. He grabs your by your waist and slowly moves his hands slightly down until he grabs a handful of your asscheeks. You smirk at him.
You grind on his crotch, clearly feeling it becoming stiffer by the second. You can hear his breath become louder. Without hesitation, you pull your pants down, and your panties down with them.
Carl doesn't hesitate, and flings his cock against you. With a slow move, he inserts himself into your wet, tight pussy. You position yourself ontop of him.
<<switch random(1,2)>><<case 1>>[img[img/main/carl/carlSex1.webp]]<<default>>[img[img/main/carl/carlSex2.webp]]<</switch>>
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
He cums inside of you.
[img[img/main/carl/carlSexCum.webp]]
He likes you more.
[[Clean up|carlRoom]]
<<setCarl 2>>You open the bathroom door slightly ajar. It was possible to lock this door, once, but that is many moons ago. It's run down, after all. You peek inside.
<<setArousal 40>>
<<switch random(1,3)>><<case 1>>[img[img/main/carl/carlPeek1.webp]]<<case 2>>[img[img/main/carl/carlPeek2.webp]]<<case 3>>[img[img/main/carl/carlPeek3.webp]]<</switch>>
<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>He doesn't notice you.
<<masturbate 40 249 149 0 carlPeekJerk>>
[[Close the door|mainHouse]]<<case 8 9 10>>He saw you! Shit!
@@.carl;Carl: $player.name? What the hell are you doing? Give me some privacy, fuck!@@
[[Run away|mainHouse]]
<<if ($carl.rp gte 60 && $corruption gte 80) || $lust gte 60>><<link [[Enter the bathroom (0:30)|carlPeekFuck]]>><<addmins 30>><</link>><<else>>You're not ready for this, yet.<</if>><</switch>>Imagine what would have gone to waste if you didn't save him. Let's hope he didn't see you peeking on him, otherwise you may be in trouble. Hot trouble.
<<setInhib -1>>
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
It doesn't take long for your body to become electric, sending pulses all the way through. Your eyes roll back inside your skull, and your breath stops for a short while.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<setCorrupt 1>> | <<setLust 2>> | <<setArousal -100>>
<<setMasturbated 1>>
[[Clean up and get dressed|bedroom]][img[img/main/mainBath.webp]]
@@.carl;Carl: Oh, yeah, just come in like it I'm not naked and in the shower.@@
@@.you;$player.name: I'm sorry! Sorry! It's just... I couldn't help it... I heard the shower on and I just wanted to see who it was...
@@.carl;Carl: Why are you here, $player.name?@@
@@.you;$player.name: I just wanted to ask if I could... maybe join you?@@
He chokes on a cough. Loudly.
@@.carl;Carl: I mean... I guess the water was running a little cold after all.@@
You take that as clear invitation, and strip down.
You enter the shower.
It doesn't take long for it to become something more than just a shower.
<<switch random(1,2)>><<case 1>>[img[img/main/carl/carlPeekSex1.webp]]<<case 2>>[img[img/main/carl/carlPeekSex2.webp]]<</switch>>
He groans, filling your insides with ropes of hot cum.
@@.you;You moan.@@
You feel his cock twitch.
[[Finish showering|mainHouse]][img[img/main/jenifferBed.webp]]
<<if $kitchenInteract.includes("Jeniffer") || $couchRelax.includes("Jeniffer") || $showerUser is "Jeniffer">>
You enter Jeniffer's room. She's no where to be seen.
Where is she?<<else>>You stand in Jeniffer's room. <<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>
[[Hang out|jenifferHang]]<<if $jeniffer.rp gte 30>><br>[[Cuddle for comfort|jenifferCuddle]]<</if>>
<<do>><<if $companion.name is "">><<link "Ask to accompany you">><<set $jeniffer.isCompanion to true>><<set $companion.name to "Jeniffer">><<redo>><<updatebar>><</link>><<elseif $companion.name is "Jeniffer">>Jeniffer is accompanying you.
<<link "Ask her to stay here">><<set $jeniffer.isCompanion to false>><<set $companion.name to "">><<redo>><<updatebar>><</link>><<elseif $companion.name isnot "Jeniffer" && $companion.name isnot "">>Someone else is accompanying you: <span style="color:yellow">$companion.name</span><</if>><</do>><<else>>
She's fast asleep. It's too late to do anything else with Jeniffer. You should get some rest, too.<</if>><</if>>
[[Leave her room|hallway]][[Finish talking|jenifferRoom]][[Get up|jenifferRoom]]You open the bathroom door slightly ajar. It was possible to lock this door, once, but that is many moons ago. It's run down, after all. You peek inside.
<<setArousal 40>>
<<switch random(1,3)>><<case 1>>[img[img/main/jenifferPeek1.webp]]<<case 2>>[img[img/main/jenifferPeek2.webp]]<<case 3>>[img[img/main/jenifferPeek3.webp]]<</switch>>
<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>She doesn't notice you.
<<masturbate 40 249 149 0 jenifferPeekJerk>>
[[Close the door|mainHouse]]<<case 8 9 10>>She saw you! Shit!
@@.jeniffer;Jeniffer: Liking what you see, $player.name? Why spy?@@
[[Run away|mainHouse]]
<<if ($jeniffer.rp gte 80 && $corruption gte 70) || $lust gte 50>>[[Enter the bathroom|jenifferPeekFuck]]<<else>>You're not ready for this, yet.<</if>><</switch>>So confident in what she's got. How can anyone not be envious?
You approach her with ease, she doesn't bite, and you know that. The sheer grit she displays rubs off on you, and you feel like you could take on the world.
<<setLust 5>>
Your pussy is @@.you.rumble;trembling@@!
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
Your pussy throbs and convulses in orgasmic rythm to what feels like your body going through ascension. It's like a beam of light, shooting through every vein.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<setCorrupt 1>> | <<setLust 2>> | <<setArousal -100>>
<<setMasturbated 1>>
[[Clean up and get dressed|bedroom]][img[img/main/mainBath.webp]]
@@.jeniffer;Jeniffer: Didn't think you'd enter. Why don't you join me now that you're already busy violating my privacy?@@
She places her hands on her hips and grins. She's facing you full front, giving you a clear view of her entire naked body.
You walk towards her and begin stripping down, noticing her grin becoming even wider than before. She likes this. She's in control.
<i>What kind of sadist is she?</i>
@@.jeniffer;Jeniffer: Kneel for me, or I'll be very sad.@@
You do as she says, and she places her pussy onto your mouth without hesitation.
[img[img/main/jeniffer/jenifferPeekSex1.webp]]
It doesn't take long before she @@.neg;cums@@ in your mouth.
[[Finish showering|mainHouse]][img[img/main/joey/joeyBed.webp]]
<<if $kitchenInteract.includes("Joey") || $couchRelax.includes("Joey") || $showerUser is "Joey">>
You enter Joey's room. He's no where to be seen.
Where is he?<<else>>
You stand in Joey's room. Your big brother.<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>
<<switch random(1,3)>><<case 1>>@@.bro;Joey: Hey lil sis. I don't know how to thank you...@@<<case 2>>He's sitting at his desk, scribling in his notebook.
@@.bro;Joey: How... It's not... Possible.@@<<case 3>>@@.bro;Joey: Come to talk?@@<</switch>>
<<link [[Hang out (0:20)|joeyHang]]>><<addmins 20>><</link>><<if $joey.rp gte 20>><br><<link [[Cuddle for comfort (0:30)|joeyCuddle]]>><<addmins 30>><</link>><</if>><<if $joey.rp gte 65>><br><<joeySex joeySex>><</if>>
<<do>><<if $companion.name is "">><<link "Ask to accompany you">><<set $joey.isCompanion to true>><<set $companion.name to "Joey">><<redo>><<updatebar>><</link>><<elseif $companion.name is "Joey">>Joey is accompanying you.
<<link "Ask him to stay here">><<set $joey.isCompanion to false>><<set $companion.name to "">><<redo>><<updatebar>><</link>><<elseif $companion.name isnot "Joey" && $companion.name isnot "">>Someone else is accompanying you: <span style="color:yellow">$companion.name</span><</if>><</do>><<else>>
He's fast asleep. It's too late to do anything else with Joey. You should get some rest, too.<</if>><</if>>
[[Leave his room|hallway]][img[img/main/joey/joeyBed.webp]]
<<switch random(1, 10)>>
<<case 1>>You decide to chat up your brother. He gives you a big smile before patting his bed as to signal you to come over to him.
You sit down beside him and the two of you fall into deep conversation about the past. The good days. The time before a broken world. He tells you a bit about what time was like without you and your father.
He's not yet ready to tell you about where he went.
<<case 2>>Joey leans back on his bed, eyes half-closed as he listens to your stories.
A faint smile forms, the kind he only wears when remembering better times.
His hand rests near yours, close enough to remind you that family still exists in this broken world.
<<case 3>>You watch Joey trace shapes into the dusty floor with his finger, lost in thought.
For a moment he looks younger, softer - like the brother you remember from before everything changed.
The room feels heavier when he finally exhales.
<<case 4>>Joey pulls out an old photograph from his pocket, its edges worn and faded. He studies it in silence, jaw tightening just slightly.
He doesn't offer it to you, but he doesn't hide it either. His eyes say enough.
<<case 5>>He pats the spot beside him again, this time with a lingering warmth, as if he's grateful you came.
As you sit, he leans his shoulder lightly against yours.
The quiet between you stretches comfortably, like a blanket you both forgot you needed.
<<case 6>>Joey absently rubs the scar on his forearm, the one he never explains.
He stares at the wall with a distant expression, memories flickering behind his eyes.
You sense pain there - and strength he doesn't claim for himself.
<<case 7>>He drags a worn blanket over both of your legs, an old habit from childhood.
It's almost instinctual, the way he looks after you without thinking. The small gesture warms the cold room more than the actual fabric.
<<case 8>>Joey rummages through a small box beside his bed and pulls out a trinket - a broken keychain, a scrap of fabric, something insignificant yet clearly meaningful.
He turns it over in his hands slowly, carefully. You stay still, letting him have the moment.
<<case 9>>He lies back and closes his eyes, breathing deeply as if the world outside the room doesn't exist.
The tension in his face fades little by little.
You sit close, listening to his breathing steady until he seems almost peaceful.
<<case 10>>Joey rests his head briefly against your shoulder, just long enough for you to feel the tremble he tries to hide.
When he pulls back, he straightens himself, wiping his face with the back of his hand.
You pretend not to notice, offering him the quiet he needs.
<</switch>>
He likes you more!
<<setJoey 1>>
[[Finish talking|joeyRoom]][img[img/main/mainBed.webp]]
You hang out with your brother in your room. <<if $brotherRel eq 6>>You saved him today.<<else>>It's been <<= 6 - $brotherRel>> days since you've saved him.<</if>> He's still a bit chocked, out of himself. Sometimes speaking in circles. With time, he will get better. Nothing to worry about, yet...
He looks you in the eyes, smiles and puts his arms around you in a warm, embracing hug. It feels nice. Maybe too nice...
<<setArousal 25>>
<<switch random(1,3)>><<case 1>>@@.bro;Joey: I don't know how to thank you, sis... I don't know how long I've been trapped down there...@@
@@.you;$player.name: It's okay, Joey... Don't mention it, just rest up and get better. I love you.@@
He smiles at you.
<span style="color:lightblue">Joey: I @@.slowrumble;<span style="color:pink">love</span>@@ you, too, sis.</span>
<<setArousal 25>>
Something's flowing...<<case 2>>@@.bro;Joey: Just give me a few days... I'll get better...@@
@@.you;$player.name: No hurry. I just want to see you happy.@@
He smiles and gives you another hug.<<case 3>>@@.you;$player.name: What were you doing down there anyway?@@
@@.bro;Joey: I... I don't remember, really. I don't even remember scratching the symbols. I hope my memory comes back...@@<</switch>>
<<setJoey 1>>
[[Leave him alone|bedroom]][img[img/main/joey/joeyCuddle.webp]]
You lay down next to your brother, scooting your butt towards his crotch. He embraces you in a warm hug, pulling you close. It is nice. It feels safe in your brothers arms.
You feel all the tension leaving your body. You also feels something else...
<<setArousal 25>>
<<if $joey.rp gte 60>><<linkreplace "Initiate some fun (0:20)">>You grind your ass on his crotch, clearly feeling it becoming stiffer by the second. You can hear his breath become louder. <<if $joey.rp gte 80>>Without hesitation, you pull your pants down, and your panties down with them.<<else>>You hesitate, but start pulling your pants and panties down. This is still new to you.<</if>>
<<addmins 20>><<setFatigue 400>>
Joey hesitates. You are his sister. With a slow move, he inserts himself into your tight little asshole.
<<switch random(1,2)>><<case 1>>[img[img/main/joey/joeyCuddleFuck1.webp]]<<default>>[img[img/main/joey/joeyCuddleFuck2.webp]]<</switch>>
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
He cums inside of you.
[img[img/main/joey/joeyCuddleCum.webp]]
He likes you more.
<<replace "#joey">><</replace>>
[[Clean up|joeyRoom]]
<<setJoey 2>>
<</linkreplace>><<else>>
You need to improve your relationship before doing this.<</if>>
<span id="joey">[[Get up|joeyRoom]]</span>
<<setJoey 2>>You rouse Joey. He seems confused at first, but quickly gets what you're trying to do. It's naughty. Raunchy. Forbidden. You are brother and sister, after all. You can see it all over his face. He doesn't quite know what to do of himself.
@@.joey;Joey: Are you sure about this?@@
You don't answer. A quick, cheerful nod is all he needs. He strips down, cock already rock solid and ready to please you however you want.
You strip down and straddle him, gliding his fat cock into your tight, wet pussy. Nectar dripping down clinging to your leg before his cock enters your temple.
<<switch random(1, 2)>><<case 1>>[img[img/main/joey/joeyFuck1.webp]]<<case 2>>[img[img/main/joey/joeyFuck2.webp]]<</switch>>
[[joeyRoom]]You open the bathroom door slightly ajar. It was possible to lock this door, once, but that is many moons ago. It's run down, after all. You peek inside.
<<setArousal 40>>
<<switch random(1,4)>><<case 1>>[img[img/main/joey/joeyPeek1.webp]]<<case 2>>[img[img/main/joey/joeyPeek2.webp]]<<case 3>>[img[img/main/joey/joeyPeek3.webp]]<<case 4>>[img[img/main/joey/joeyPeek4.webp]]<</switch>>
<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>He doesn't notice you.
<<masturbate 40 249 149 0 joeyPeekJerk>>
[[Close the door|mainHouse]]<<case 8 9 10>>He saw you! Shit!
@@.bro;Joey: Sis? Can I help you? Why are you spying on me like that?@@
[[Run away|mainHouse]]
<<if ($joey.rp gte 80 && $corruption gte 110) || $lust gte 90>><<link [[Enter the bathroom (0:30)|joeyPeekFuck]]>><<addmins 30>><</link>><<else>>You're not ready for this, yet.<</if>><</switch>>Oh Lord of whatever is left holy in this world. Spying on your own brother, then getting a massive lady boner. You're a right slut, are you not? I wonder if he saw you, just a little bit. Imagine him, entering your room while you're two fingers deep in your pussy because of him. The thought drives you insane.
<<setCorrupt 1>>
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
It doesn't take long for your body to become electric, sending pulses all the way through. Your eyes roll back inside your skull, and your breath stops for a short while.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<setCorrupt 1>> | <<setLust 2>> | <<setArousal -100>>
<<setMasturbated 1>>
[[Clean up and get dressed|bedroom]][img[img/main/mainBath.webp]]
You enter the bathroom.
@@.you;$player.name: I, uh... I came to look for my toothbrush. I wasn't spying...@@
He looks at you like you're stupid.
@@.bro;Joey: That couldn't wait till I was done?@@
@@.you;$player.name: Sorry...@@
He groans and scoffs.
@@.bro;Joey: Don't mention it. It happens. Look, waters getting cold, why don't you jump in with me and we save a bit of hot water?@@
Just what you wanted to hear. You smile and strip naked, your perky tits jumping at your brother. You approach him without hesitation and turn your back to him, pressing your naked butt up against his cock.
He wraps his arms around you in a loving embrace, further squeezing his cock into your bum. You reach around and grab hold of it with your hands, slowly caressing it.
@@.bro;Joey: $player.name...@@
Lust takes over for both of you.
<<switch random(1,2)>><<case 1>>[img[img/main/joey/joeyPeekSex1.webp]]<<case 2>>[img[img/main/joey/joeyPeekSex2.webp]]<</switch>>
He rams his cock into you, rythmically back and forth, stimulating every part of your tight, wet pussy. Fucking in the shower, and with your own brother? What type of slut are you?
It doesn't take long before he groans and sends copious amounts of hot cum up into your womb.
[[Finish showering|mainHouse]][img[img/main/matthew/matthewBed.webp]]
<<if $kitchenInteract.includes("Matthew") || $couchRelax.includes("Matthew")>>
You enter Matthew's room. He's no where to be seen.
Where is he?<<else>>
You stand in Matthew's room. <<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 22>>
<<switch random(1,3)>><<case 1>>He's sitting at his desk, fidgeting with an electrical gadget.
@@.matthew;Matthew: $player.name! Can I help you, or are you just here to chat?@@<<case 2>>He's laying on his bed, resting.
@@.matthew;Matthew: Hello, $player.name. Come lay with me.@@<<case 3>>He's sitting at his desk. It looks like he's in the middle of constructing a new gadget.
@@.matthew;Matthew: Oh, hello, $player.name! Didn't hear you coming in... Again, sorry for scaring you back there.@@<</switch>>
<<link [[Hang out (0:30)|matthewHang]]>><<addmins 30>><</link>>
<<link [[Cuddle for comfort (0:20)|matthewCuddle]]>><<addmins 20>><</link>> | <<matthewSex matthewSex>>
<<do>><<if $companion.name is "">><<link "Ask to accompany you">><<set $joey.isCompanion to true>><<set $companion.name to "Matthew">><<redo>><<updatebar>><</link>><<elseif $companion.name is "Matthew">>Matthew is accompanying you.
<<link "Ask him to stay here">><<set $matthew.isCompanion to false>><<set $companion.name to "">><<redo>><<updatebar>><</link>><<elseif $companion.name isnot "Matthew" && $companion.name isnot "">>Someone else is accompanying you: <span style="color:yellow">$companion.name</span><</if>><</do>><<else>>
He's fast asleep. It's too late to do anything else with Matthew. You should get some rest, too.
[[Climb in bed with him|matthewSleep]]<</if>><</if>>
[[Leave his room|hallway]][img[img/main/matthew/matthewBed.webp]]
<<switch random(1, 10)>>
<<case 1>>
You decide to hang out with Matthew for a while. You talk about what the times had come to.
@@.matthew;Matthew: I can't thank you enough for allowing me in here... I don't know what I would have done if you hadn't.@@
@@.you;$player.name: Don't worry about it, Matthew... I'm always happy to have some extra help.@@
He tells you some stories of his boring life before the apocalypse.
<<case 2>>Matthew sits with his back against the wall, his hands clasped loosely in his lap.
He seems relieved just to rest somewhere safe, his shoulders dropping as the tension slowly leaves him.
The soft light makes him look almost peaceful.
<<case 3>>He glances around your shelter, tracing every repaired corner and improvised patch with quiet appreciation.
You can tell he admires the work you've done, even if he doesn't say a word.
His smile is tired, but sincere.
<<case 4>>Matthew runs a hand through his hair, staring at nothing in particular as memories drift through his mind.
There's a loneliness in his expression, but also comfort in knowing he isn't alone right now.
He sits a little closer, seeking the warmth of company.
<<case 5>>He pulls out a small notebook from his pocket, flipping through pages filled with messy handwriting and half-finished thoughts.
For a moment he hesitates, then closes it gently, keeping the contents to himself.
You sense it's something important to him.
<<case 6>>Matthew rubs his palms together, a subtle nervous habit he can't quite shake.
But when you settle beside him, he straightens a bit, as if your presence steadies him.
His breathing evens out, slow and controlled.
<<case 7>>He gazes out the boarded-up window, watching the dim world outside with a distant, thoughtful expression.
His eyes soften at the muted glow of the sky, as though remembering what it used to be.
A faint sigh escapes him.
<<case 8>>Matthew adjusts the sleeves of his worn jacket, trying to make himself look presentable despite the dirt and wear.
It's a small, almost pointless gesture, but it shows the part of him that still cares about dignity.
He offers you a shy, grateful look afterward.
<<case 9>>He sits cross-legged on the floor, quietly sorting through a small pile of old belongings he's managed to keep.
A broken watch, a torn photograph, a bit of metal shaped into something sentimental.
He handles each item with delicate respect before setting them aside.
<<case 10>>Matthew leans slightly toward you, resting his weight near your side without actually touching.
The silent closeness says more than words could - trust, gratitude, a quiet hope for something better than the world outside.
He seems calmer than before, as if simply being here brings him peace.
<</switch>>
He likes you more!
<<setMatt 1>>
[[Finish talking|matthewRoom]]You lay down next to Matthew, and wiggle your ass closer to his groin. He wraps his arms around you, and pulls you closer in a warm embrace. You feel content. You feel... safe. Matthew is guarding you from whatever demons you're fighting. For now.
[img[img/locations/datacentre/matthewCuddle.webp]]
As you're laying there, you feel yourself drifting slowly off to sleep. So tired, after everything you've been through. It doesn't matter what time of day you lie here, it feels like you could drift off no matter what.
<<if $matthew.special is false && $player.ap lt 5>><span style="color:yellow">+ Action Points</span><br><<setAP 1>><<set $matthew.special to true>><</if>>
You should get up, though. Can't lie here forever, now can we?
[[Get up|matthewRoom]]
<<setMatt 2>>You look at Matthew with hungry eyes. Being in a desolate hellscape really does something to ones mind. The depravity of human touch usually does that. It fuels you with hunger for contact. Skin on skin.
He has those eyes. Primal. Animalistic. Threatening. You can feel your heart beat faster and faster. You feel your pussy moisten with anticipation. If you weren't wearing pants, your panties would drop to the floor from the sheer amount of grool coming out from below. There's no need for a heater, your pussy does the job just fine.
You slowly start disrobing, starting with you pants... Then your panties...
He can't take it anymore. He pounces on you!
<<switch random(1,5)>><<case 1>>[img[img/locations/datacentre/matthewFuck1.webp]]<<case 2>>[img[img/locations/datacentre/matthewFuck2.webp]]<<case 3>>[img[img/main/matthew/matthewFuck3.webp]]<<case 4>>[img[img/main/matthew/matthewFuck4.webp]]<<case 5>>[img[img/main/matthew/matthewFuck5.webp]]<</switch>>
He fucks you relentlessly, and without mercy. He doesn't stop to pull out, and instead fulls your womb with his hot cum. Not even this stops him, and he keeps fucking you senseless. You've lost track of the amount of times you've cum, all you know is that this feeling can't go away. Don't let it go away, please.
He finally finishes, after what feels like hours. So much cum runs out of your pussy.
<<setLust 1>>
<<set $matthew.rp += 7>>
<<switch random(1,2)>><<case 1>>[img[img/locations/datacentre/matthewCum1.webp]]<<case 2>>[img[img/locations/datacentre/matthewCum2.webp]]<</switch>>
[[Clean up|matthewRoom]]<span id="sleep">You strip down to nothing and lay in his bed. Your nude skin against the soft covers are an experience you'll hardly let go of. You feel your body settling in, and you mind go to ease.
<<countSleep>>
<<link "Just sleep (??:??)">><<sleepUntilRested>><<include "matthewSleepInclude">><</link>>
<<link "Sleep 8 hours (8:00)[_wakeUp1]">><<sleepHours 8>><<include "matthewSleepInclude">><</link>>
<<link "Sleep 4 hours (4:00)[_wakeUp2]">><<sleepHours 4>><<include "matthewSleepInclude">><</link>>
<<link "Sleep 2 hours (2:00)[_wakeUp3]">><<sleepHours 2>><<include "matthewSleepInclude">><</link>>
[[Change your mind|matthewRoom]]</span><<replace "#sleep">>You lay down next to Matthew, ready to sleep. Closing your eyes, you can feel yourself drifting off. The faces of the people you've lost appear before your eyes, judging you. Not fun.<<set _dream = random(1,3)>>
<<switch random(1,2)>><<case 1>>[img[img/locations/datacentre/datacentreSleep1.webp]]<<case 2>>[img[img/locations/datacentre/datacentreSleep2.webp]]<</switch>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
@@.em;You feel the warm hug of@@ @@.matthew;Matthew@@@@.em;. You thoughts are silenced.@@
[[Wake up|matthewRoom]]
<<nobr>>
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>><</nobr>><</replace>>You open the bathroom door slightly ajar. It was possible to lock this door, once, but that is many moons ago. It's run down, after all. You peek inside.
<<setArousal 40>>
[img[img/main/matthew/matthewPeek1.webp]]
<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>He doesn't notice you.
<<masturbate 40 249 149 0 matthewPeekJerk>>
[[Close the door|mainHouse]]<<case 8 9 10>>He saw you! Shit!
@@.matthew;Matthew: I know I am attractive, but you don't have to stare at me.@@
[[Run away|mainHouse]]
<<if ($matthew.rp gte 80 && $corruption gte 70) || $lust gte 50>><<link [[Enter the bathroom (0:30)|matthewPeekFuck]]>><<addmins 30>><</link>><<else>>You're not ready for this, yet.<</if>><</switch>>Oh sweet chocolate man. So tall, dark and handsome. Why must we live in a world where clothes are mandatory?
<<setArousal 20>> | <<setInhib -1>>
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
It doesn't take long for your body to become electric, sending pulses all the way through. Your eyes roll back inside your skull, and your breath stops for a short while.
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<setCorrupt 1>> | <<setLust 2>> | <<setArousal -100>>
<<setMasturbated 1>>
[[Clean up and get dressed|bedroom]][img[img/main/mainBath.webp]]
@@.matthew;Matthew: Help yourself, I guess. Can I ask, why are you in here? Don't you know I am busy?@@
@@.you;$player.name: Well... I was watching from outside, and I thought maybe we could save some water?@@
A smirk forms on his face, which quickly turns into a wide grin.
@@.matthew;Matthew: Don't mind if you do. Jump in.@@
You quickly strip down into your birthday suit and jump into the showers with @@.matthew;Matthew@@. You turn your back to him, and press your bum into his cock. It doesn't take long for both of you to lose control.
<<switch random(1,4)>><<case 1>>[img[img/main/matthew/matthewPeekSex1.webp]]<<case 2>>[img[img/main/matthew/matthewPeekSex2.webp]]<<case 3>>[img[img/main/matthew/matthewPeekSex3.webp]]<<case 4>>[img[img/main/matthew/matthewPeekSex4.webp]]<</switch>>
He pumps his cock back and forth in an animalistic rythm. Something is seriously wrong with this man, but for now, your pussy seem to enjoy the beating it is recceiving.
@@.you;You moan.@@
With a groan and a tight squeeze, you can feel his cock pulse and release cum into your wet pussy.
[[Finish showering|mainHouse]]ALL BOOKS BELOW1. Ashes of the Forgotten Land - $bookAshes
2. The Wasteland Chronicles: First Point - $bookChronicles
3. Echoes of the Silent Sky - $bookEchoes
4. The Iron Roots of the Ruins - $bookIron
5. Under the Shattered Sun - $bookShattered
6. In the Shadow of the Last City - $bookCity
7. The Broken Roads and the Dying Breath - $bookBroken
8. Whispers Through the Smoke - $bookWhispers
9. The Ghosts Beneath the Soil - $bookGhost
10. Steel and Bone: A Wasteland Tale - $bookBone
11. The Twilight of Old Worlds - $bookTwilight
12. Fires of the Forgotten - $bookForgotten
13. The Last Bridge to Tomorrow - $bookBridge
14. Echo-1: The Secret in the Ashes - $bookSecret
15. Rust and Reverence - $bookRust
16. The Wolves Who Walked Among Us - $bookWolves
17. The Silent Hand of the Wasteland - $bookWasteland
18. Through the Ghost Roads - $bookRoads
19. Cold Iron, Warm Blood - $bookBlood
20. The Crumbling Heavens - $bookHeavens
21. In the Footsteps of Forgotten Gods - $bookGodsThe wind came low across the flats, dragging dust and ash like breath from a sleeping corpse. Gray hills rolled out to the horizon, all bones and rust, where once there had been cities. The sky above was the color of old bruises - swollen, veined, forever on the edge of breaking.
Kira crouched beneath the jagged frame of a billboard, the metal groaning quietly in the wind. The paint had long since peeled, but the Cyrillic letters were still faintly visible beneath the grime. A warning, or a promise - she couldn't read it, not fully. Few could anymore.
Her fingers tightened around the grip of her rifle. Not because she'd heard something, but because she hadn't. No birds, no insects, no wind except for the dead one. Silence like that meant something was near.
She watched the road below: cracked concrete swallowed by creeping moss and tireless weeds. A single figure moved down it, dragging a cart. No mask. No weapon. Just a limp gait and a hood pulled low.
Not a threat. Not yet.
Behind her, the safehouse loomed - an old broadcast station swallowed by vines and grief. Its signal tower still reached upward, defiantly rusting. A place like that shouldn't have survived the fire. But then again, neither should she.
She touched the charm around her neck, a jagged scrap of metal carved with three old letters:
Б.О.Г.
God. Or something like it.
She stood, slinging her pack over her shoulder.
There was no safety. Not really. Only places the danger hadn't found yet.
And this place had been quiet for too long.They say the first sound to return after the Fall was the wind - screaming through hollowed buildings and broken trees, howling over the skeletons of old empires. No engines. No voices. Just wind, and fire, and the slow grind of time devouring the world.
Now, the wind carried news. Dust from far-off roads. Ash from distant cities. Blood, sometimes. Always blood.
Luka kept his head down as he walked, boots crunching over shattered asphalt. The map in his coat pocket was stitched from old leather and memory, marked in charcoal and spit. It didn't show roads - they changed too often. It showed people. Outposts. Traders. Killers. Places to avoid. Places where you might sleep without losing a kidney.
The sky was red behind the clouds. Not sunset - just the way it was now. Like the world had been scorched and the sky hadn't forgiven it.
He passed a wrecked bus, half-buried in the earth. Its windows had been blown out, its frame rusted to ribbons. A word was scrawled across the side in white chalk, "ЖИВИ" - live.
He didn't stop.
There was a safezone ahead, if the old man had been telling the truth.
A place called First Point.
He wasn't sure what he'd find there. A bed, maybe. A bullet.
Didn't matter. The road only went forward. And so did he.The sky hadn't spoken in years.
No thunder. No engines. No hum of distant aircraft like in the old stories. Just silence - a vast, smothering silence that stretched from horizon to horizon like a wound that never healed.
Anya sat atop the ruined dome of an observatory, legs dangling over rusted ribs of iron. Below her, the forest crept - ashen pines, glassy soil, the warped remains of something once sacred to science. The stars were long dead to this world. The machines below no longer searched for them.
She adjusted the dial on her radio. Static. A sharp click. Then silence again. Always silence.
But this time, just before she gave up, there it was:
"...koordinaty... 4-1-9... repeat... survive..."
A whisper. Garbled. Barely human.
Her fingers trembled as she tuned again. Nothing.
But it had happened. She heard it.
Anya stood, wind pulling at her coat. The valley below stretched wide and empty, scattered with the bones of towers and machines. Somewhere in all that decay, someone was speaking.
And in a world that hadn't spoken in years, that was everything.The earth remembered what people tried to forget.
You could see it in the way steel rebar pushed up through cracked concrete, like roots from a machine god buried deep below. Cities had collapsed, but their bones grew restless. Twisted pylons, rust-choked pipelines, the exposed guts of a world that once thrived on oil and fire.
In the heart of it all, Nik trudged through the remains of a metro station, flashlight beam slicing through the damp haze. Moss clung to the ceiling like mildew on a forgotten wound. Water dripped with slow certainty. The rails beneath his feet groaned with age.
The walls were covered in carvings - not graffiti, not anymore. These were prayers, warnings, names of the dead. Cyrillic letters etched in soot and desperation.
ПРОСТИ НАС
Forgive us.
Nik stopped. Let the silence settle. Then lit a flare.
The red light bloomed, casting long shadows across shattered vending machines and a derailed train that looked like it had tried to climb the stairs before dying.
He was close now. The map said this was the edge of the old sector - the last place where the signal was heard. The signal that hadn't broadcast in twenty years.
But signals didn't just start up again. Not here.
Not unless something had survived.
And survival, out here, was rarely a good thing.The sun cracked, once. Not like glass or stone - more like a scream. A silent, blinding rupture that tore across the sky and left the world half-shadow, half-fire.
That was fifty years ago, give or take. Time didn't tick out here like it used to. Watches died, and calendars lost meaning. Out here, you measured time in the fading of scars and the growing of rust.
Dima pulled his hood tighter as he climbed the ridge, boots sinking into scorched soil. The horizon shimmered like broken glass, and beyond it, the Wastes sprawled - dunes of irradiated ash, fields of twisted metal where cities once breathed.
Above, the sun hung heavy and fractured, its light bleeding through cloud-smeared fractures in sickly gold and amber. It didn't rise or set anymore. It just hovered, flickering like a dying bulb.
The locals called it Soln'tse Pustoy - The Hollow Sun.
Dima squinted. A shape stood in the distance. Thin. Still. A person, maybe. Or something that used to be one.
He gripped the barrel of his rifle.
There were no warnings in the Wastes. No second chances.
Only the long walk beneath a sky that forgot how to be whole.They say the Last City still breathes - somewhere behind the smogline, wrapped in towers of glass and steel, humming on generators older than memory. But no one gets in. Not anymore.
The wall stretches for miles. Black concrete, fused with old tech and forgotten gods. No gates. No guards. Just the drones - silent, drifting things with no eyes but perfect aim.
And then there's the shadow.
It crawls outward from the city's base like rot, a dark stain on the land. Nothing grows there. Nothing lives for long. Some call it a dead zone. Others say it's alive - watching, waiting, feeding off those who come too close.
Rada knew better than to believe stories. Stories got you killed.
She crouched at the edge of the ruins, watching the horizon. The sun had already dipped below the smog, casting the landscape in dull orange and soot-black.
Behind her: scattered bones of suburbia. Half-collapsed homes, tangled wire fences, children's toys melted into pavement.
Ahead: the City. Distant. Cold. Its spires lit with a pale, artificial glow like candlelight trapped in glass.
She wasn't here for myths. She was here for what the courier died carrying.
A data drive. A map.
And a phrase scratched into bloodstained metal:
"The gate still opens... but only from the inside."
Rada checked her weapon. Took a breath.
And stepped into the shadow.The road had no name.
It wound through the bones of the old world - fractured highways buckled by heat and time, choked with the rusted husks of machines that once knew motion. Every mile felt like a memory trying to be forgotten.
Taren walked it anyway.
The wind was sharp this morning, carrying ash from the west. Fires again, or something worse. The kind of smoke that smelled like more than wood. He kept his scarf tight over his mouth, breathing shallow.
He passed a road sign, half-eaten by moss. The letters had long since faded, but someone had scratched a new message into the metal beneath:
"NO GODS THIS WAY."
Taren didn't stop. He didn't pray.
He was looking for someone. Or maybe just the end of the road. Same thing, these days.
Behind him, the world groaned in its sleep - earth shifting, ruins settling, something distant howling like a storm with teeth. Ahead, the sky cracked open in streaks of jaundiced light, and somewhere just beyond the next bend, the land fell silent again.
He coughed, tasting blood.
His breath was getting shorter.
But the road?
The road always went on.The smoke never cleared.
It clung to the hills like mourning cloth, thick and gray, curling through skeletal trees and broken towers. Some said it came from fires that never stopped burning, deep beneath the earth. Others said the smoke was alive - listening, remembering.
Either way, you learned to live with it. Or you didn't.
Maeve pressed a rag to her mouth as she moved through the wreckage of a rail yard, stepping carefully between twisted rails and rusted freight. Her boots kicked up soot with every step, and her breath came shallow and strained.
Somewhere in the distance, metal creaked. Not from the wind.
She paused. Listened.
A whisper drifted through the haze - faint, almost human. A syllable, maybe a name. It vanished before she could hold it.
Not the first time.
She was two days out from First Point, following rumors carved into bark and spray-painted on collapsed walls. Signs of a caravan that went east and never returned. Of people who'd heard the voices and walked willingly into the smoke.
Maeve had no illusions. She wasn't here to save anyone. She was here because the smoke had whispered to her too.
And she wanted to know why.The ground wasn't dead.
It shifted when no one looked - heaved like breath held too long, or memory trying to surface. Roots grew wrong here. Bent upward. Twisted metal jutted through the earth like ribs. Every step sank just a little too far, as if something underneath was reaching up, waiting.
They called it the Hollow Fields.
Jarek didn't believe in ghosts, not really. But as he crossed the wide scar of land where no birds flew, rifle slung low and boots caked in black mud, he kept one eye on the dirt. Just in case.
The silence wasn't natural. No wind. No buzz of insects. Even the clouds above moved slow, like they were afraid to pass over.
He found the first marker before dusk. A simple wooden stake, scorched and cracked, marked with a name that had long since faded. Around it, the ground was uneven - like something had dug its way out, not in.
Jarek crouched, brushing dirt aside with gloved fingers. Beneath the soil, a piece of bone. Small. Human.
The locals in First Point had warned him.
"Don't go east. The ground's still listening there."
But the map was clear. Something had fallen here. A craft. A vault. A weapon.
Whatever it was, someone wanted it buried.
And something else didn't want it left alone.They used to say the body was sacred. Now, it was just another thing you could upgrade - or strip for parts.
Cade adjusted the servo-brace on his leg, the gears whining faintly as he rose from the dust. It wasn't fancy - nothing like the pre-Fall tech you saw in the old war posters - but it worked well enough to keep him moving. Moving was survival.
The sun was brutal today, dragging shadows long across the wreckage of an old refinery. Steel bones rose from the sand like fingers grasping for air. Buzzards circled above, hoping to pick at something that hadn't gone cold yet.
He wiped the sweat from his brow, fingers trailing over the scarred metal fused to his temple. Not all augmentations were voluntary. Some were war-born, stitched into flesh out of desperation or punishment. Cade couldn't remember which category he belonged to.
A distant rumble echoed from the west. Not thunder. Too rhythmic. Too alive.
Engines.
He ducked behind a rusted husk of an armored crawler and peered through the broken viewport. Dust clouds on the horizon. Raiders, maybe. Or worse - scavs with organ debt and no patience.
Cade checked the charge on his rail pistol. One shot. Maybe two.
That was the thing about the Wastes:
You were either steel, or you were bone.
And some days, you got to decide which.The last light of the day was always the hardest to watch.
Not because it marked the end of the day, but because it marked the beginning of nothing. The twilight hours stretched too long in a world that had already given up on dawn. The sky was the color of forgotten things - faded gold, bleeding into bruised purple - as though the sun itself was trying to turn its back on what remained below.
Vera stood at the edge of a crumbled tower, staring into the ruins of the city that once stood proud. Now, it was just a maze of cracked concrete, twisted steel, and empty windows that looked like the hollow eyes of forgotten giants. The skyline, once full of promise, was now only silhouettes against a sky that refused to die.
She pulled her coat tighter, the worn fabric scratching against the scars of her skin, and surveyed the wreckage. Nothing moved. Nothing breathed. It had been years since anything had dared to.
The maps were useless. The guides were myths. The city no longer held any real secrets - only whispers. But Vera wasn't here for whispers. She was here for answers.
"They still call it the Dreamers' District," a voice murmured behind her.
She didn't turn. The voice had followed her for days now, a shadow in the dark, always too quiet.
"You know what that means?"
Vera didn't respond. She'd heard the stories too. Old things. Things people should never chase. But in a world like this, where hope had become a commodity traded on the black market, the Dreamers' District was more than just a memory - it was a promise.
The promise of something more.
Something left behind. Something worth finding.
She took one last look at the ruins. Then, without another word, she turned toward the unknown. The city could have been dead. But for now, it was still alive enough to hold its secrets.The fire never stopped burning.
It wasn't the kind of fire that lit up the sky with fury or sent waves of heat rolling out like a storm. No, this one simmered beneath the earth, a slow, aching burn that ate away at the land from the inside. Ashes floated from the cracks in the soil, drifting lazily in the wind like snow in reverse - cold, dead, and carrying the taste of loss.
Jarek knelt beside the smoldering ruins of what had once been a factory. The metal husk still stood, but there was no sign of life. Not anymore. Not here. The walls were scorched, the windows blackened by years of heat and neglect. The smoke still poured from the fissures in the earth, creeping up like ghosts that refused to let go.
He could almost hear the whispers again, just beneath the crackle of the dying flames. "It's still out there." The words of an old man, a merchant who had disappeared into the night years ago, leaving behind only a map and a promise: The Fire still remembers.
He didn't know what that meant. And he didn't know why he was still searching.
The world was full of broken promises. Full of charred earth and smoldering ruins. But this? This was something different. Something that called to him, deep in his bones. Something that wouldn't let him walk away.
A figure appeared in the distance, silhouetted against the orange haze. They moved with purpose, a shadow in the shape of a person. Jarek's hand instinctively went to the hilt of his knife, but he didn't make a move. Whoever it was, they were just another wanderer. Another soul looking for something that didn't exist.
But maybe, just maybe, they knew.
The fire had to come from somewhere. And maybe, just maybe, it hadn't been forgotten after all.The bridge was more than just a structure.
It was a promise, or so they said. A span of steel and stone that once connected two worlds - one of hope, and one of ruin. Now, the bridge stood broken, its arches half-collapsed, its cables snapped like the bones of something ancient. Beneath it, the river had long since dried, leaving only cracked earth and rusted debris where the currents once flowed.
But in the distance, the other side still beckoned.
Lena stood at the edge of the wreckage, her fingers brushing the jagged remnants of the old road. The place where the last remnants of civilization had stopped, where the fires had burned the brightest. She'd heard the stories - the last safe place, the last gate to the future. All of them, whispered by travelers who spoke in hushed tones, as though to speak too loudly might shatter the fragile illusion.
She didn't know what she was looking for.
There were no maps. No guarantees. The last bridge had always been a myth for people who had nothing left to lose, and she? She had everything left to find. Or, more accurately, everything left to lose.
The air smelled like smoke and ozone, the remnants of old storms that never cleared, like the sky itself was holding its breath. Around her, the ruins stretched out into the wasteland - scorched earth, twisted metal, abandoned homes swallowed by the creeping desert. The remains of a world that had tried and failed.
Lena pushed forward, her boots crunching against the dry gravel as she climbed the crumbled remains of the bridge. Behind her, the past was nothing but ash. Ahead, the future remained uncertain.
But the stories, they said there was something more. Somewhere across that ruined span, hidden beneath the weight of time and rust, was the key.
The last key.
A future.The wind carried the ashes like memories, dusting the ruins of the world with reminders of what had been.
Echo-1 scanned the horizon, the dim red glow of the dying sun filtering through the smoke-choked sky. Her helmet's visor reflected the fractured landscape - what had once been a thriving city, now little more than a smoldering husk of rust and decay. It had been a long time since the sky had seen clear light. Long since the world had known peace.
Her boots crunched on the charred earth as she moved, her footsteps echoing in the silence. The air tasted like metal, thick and bitter, clinging to her lungs. She'd been out here too long. The missions were starting to blend together, each one more of a blur than the last. A hunt for answers in a world that had forgotten how to ask questions.
She adjusted her rifle, scanning the rubble. She wasn't alone here. She never was. The echoes of the past followed her everywhere - voices in the static, whispers in the smoke. Her own heartbeat seemed too loud.
The last transmission had come through just hours before - crackling and faint, barely decipherable through the interference, but it was clear enough: "The signal... in the ruins. You'll find it... find it, Echo-1..."
There were no specifics. No coordinates. Only a cryptic message that made her stomach twist with something between fear and curiosity.
Echo-1 checked the map on her wrist display. It flickered for a moment before stabilizing. "Objective: Ruins of Sector 15."
A forgotten place. A name erased from most maps. But she knew better. The coordinates had been buried deep. Hidden, intentionally.
It had to be important.
There were secrets here. Old secrets. And in a world like this - where every inch of land was tainted by history - it was only a matter of time before they resurfaced.
The ruins ahead stretched out like a graveyard, and beneath the ash, something whispered. Something that had been waiting.The city had long since forgotten its name.
Now, it was just a scar on the earth, a tangle of rust and concrete that sprawled in every direction like the skeleton of a forgotten beast. Time had worn it down - layer by layer - until all that was left were fractured streets and crumbling towers, their once proud spires now leaning like broken bones. The air was thick with the smell of decay and dust, a reminder that the world had died slowly, and in doing so, had lost its voice.
Jenna stood at the edge of a collapsed bridge, the wreckage of the old world sprawled beneath her feet. A metal handrail jutted out from the ground like a forgotten monument to something lost. Somewhere in the distance, the hum of ancient turbines stirred - a sound that no one had bothered to stop, as though the machines themselves had forgotten how to rest.
She adjusted the straps on her pack, eyeing the horizon. It was always quiet out here. Quiet in a way that settled deep in your bones, making you wonder if you were the last one left to witness it. The last to remember.
The sun was nothing more than a pale smear in the sky, and the wind carried with it the soft whisper of history - burnt books, broken machinery, the scent of old prayers never answered. Jenna had heard the stories, of course. Stories of the Reverence - a time before the fall, before the rust. People spoke of it with reverence, of a world where knowledge was sacred and the earth had been whole. They spoke of it like a dream, one that had slipped through their fingers.
The ruins around her were all that remained of that dream.
And she was here to uncover whatever secrets still lingered beneath the layers of soot and metal.
Because buried beneath the ruins of the past, hidden under centuries of dust and forgotten words, there were truths - truths that could change everything.
But not everyone wanted those truths to surface.
Jenna glanced behind her at the faded map in her hand. There was a place marked on it. A place that still stood in defiance of time. A place where something ancient and dangerous was waiting, hidden beneath the layers of rust.
And for the first time in months, Jenna felt something stir inside her - a pulse of purpose.
The Reverence had left a mark on this land. It was up to her to find it before it was lost forever.The wolves were never gone.
They just learned how to walk on two legs.
In the old world, they were shadows in the forest, fierce and untamed, with eyes like burning embers and fangs that could tear through the quiet night. But the world had changed. And so had they.
Mara had seen it all before - her village was a half-sunken thing, a forgotten outpost surrounded by the ruins of the old cities. There was a place where the trees grew twisted, where the land seemed to remember what had been lost, and the wolves lingered just out of sight. But now, it wasn't just the wild things in the forest. No, now they walked the streets, dressed in the skins of men, with voices that called in the same tongue.
Mara could feel the eyes on her as she walked down the cracked road, the weight of it almost physical, like invisible claws scratching at the back of her neck. It was always like this now.
In the town square, there was a fire - crackling, warm, but strange. The light flickered in a way that didn't feel natural. She glanced over her shoulder, her hand instinctively resting on the hilt of her knife, the worn leather comforting in its familiarity.
"Don't mind them," came a voice from the shadows. The old man - Arden, they called him - stepped forward, his face hidden beneath a tattered hood. He always had a way of showing up when Mara least expected it.
Mara didn't answer, just stared into the flames. There was something about the fire tonight. It felt too still. Too watchful.
"They're coming," Arden said, his voice low. "The wolves. They're never far, you know. But this time, they're more than just hunters."
Mara didn't need to ask what he meant. The stories had spread long before she'd made it to the edge of the ruins - stories of wolves in human skin, infiltrating the places people thought were safe. They weren't just watching anymore. They were hunting, waiting.
Mara's fingers tightened around the knife's handle. She wasn't about to be hunted. Not here. Not now.
"Then we hunt them first," she said, her voice steady, as if she'd been waiting for this moment all her life.
Arden only nodded, his weathered eyes reflecting the flames. "The wolves who walked among us. They're not just after survival anymore. They're after something we can't even understand."
Mara took a breath and turned toward the darkening horizon. Somewhere, deep in the night, the wolves were stirring. And they were closer than ever.
The hunt had begun.The wind didn't whisper anymore.
Once, long ago, it had carried the voices of the world - voices that laughed, that cried, that dreamed. But now, in the heart of the wasteland, the wind was mute. It swept across the barren land with a hollow sound, like a forgotten ghost trying to remember its name.
Rhea pulled her cloak tighter against the chill, the fabric scraping against her scorched skin. The sun, once a beacon of hope and light, now hung like a dead weight in the sky, a pale orange disk that cast no warmth. Beneath her feet, the cracked earth stretched out in every direction - dust, rock, and the occasional rusted skeleton of something that had once been alive. A city. A machine. A dream.
It was all the same now.
She walked alone, the sound of her boots muffled by the thick dust that choked the life from everything it touched. The wasteland had been like this for as long as she could remember - silent, desolate, the kind of place that erased all trace of humanity with a cruel, indifferent hand.
But Rhea was no stranger to silence. In fact, she'd come to appreciate it. Because, in the wasteland, silence was a warning.
She paused, looking out across the horizon. Something had shifted in the air - an unsettling stillness that made the hairs on the back of her neck stand at attention.
Far off, just beyond the next ridge, there was movement. A figure. It didn't belong. There were no other travelers out here. Not anymore.
Rhea's hand instinctively reached for the knife strapped to her side. The wasteland had a way of making even the strongest of people forget what it meant to trust their instincts. She had learned the hard way that the things that wandered the edges of this place didn't always look like monsters. Sometimes, they wore the same face as you.
The figure grew closer, and Rhea could see the details now - dust-covered clothes, a hooded figure, slow, deliberate steps. She didn't move, just watched as it approached. Her heart rate didn't quicken. It hadn't for a long time. Out here, your heart learned to slow down, to match the rhythm of the earth.
And then, the figure spoke, the words cutting through the silence like a blade.
"We've been waiting for you."
Rhea's grip on the knife tightened. Something was different about this encounter. The wasteland had never been one for promises. It had never been a place for waiting.
And yet, here it was.
The silence was no longer the most dangerous thing about the wasteland.The road was a thread through the ruins, barely visible beneath the dust and the ash, but it was there. It had always been there.
Tomas had been walking it for days now, and the further he went, the more he felt the weight of its history on his shoulders. It wasn't the kind of road that could be mapped or measured, not anymore. The signs were gone, the landmarks shattered, but the path still beckoned. It was a road of ghosts - memories carried by the wind, whispers that hummed through the crumbling buildings and forgotten streets.
The Ghost Roads, they were called. A name whispered by the survivors, by the ones who still clung to stories of a time before the Fall, when people had lived and dreamed and built. Before everything burned.
Tomas didn't believe in ghosts, not really. But out here, in the wasteland where time had folded in on itself and the air tasted like rust, it was hard to dismiss anything.
He paused by the remains of an old billboard, its edges curled and burned, a faded image of a smiling family beneath a slogan that promised "A Better Tomorrow." The irony twisted like a blade in his gut. There hadn't been a better tomorrow, not for anyone. The world had crumbled long before the last ember had fallen.
But the Ghost Roads...
There was something about them. Something about this road that seemed to call to him, deep in his bones. He didn't know what he was searching for - maybe redemption, maybe answers - but the road didn't care about his reasons. It just led. And Tomas, like so many others, had learned long ago that to follow it was the only choice left.
The wind kicked up, sending a swirl of ash in his face. He wiped it away, his hand lingering on his scarf. Underneath, the burn marks from the firestorms of years past still stung. He had no illusions about the path ahead. It wasn't the kind of road that led to safety or salvation.
It was a road that led to truth.
And truth, Tomas had learned, was a dangerous thing.
The sound of distant thunder rumbled through the empty sky, though no clouds were visible. The Ghost Roads had always been like this - unpredictable, shifting, hiding their secrets from those who dared to walk them.
Tomas adjusted the strap on his pack and pressed on, his footsteps muted against the dead earth. The road stretched out before him, winding through the ruins like the remnants of some forgotten dream, and somewhere, far in the distance, he could just make out the outline of a broken bridge.
It was the last marker. The last promise of something that had been lost.
And as he walked towards it, Tomas felt the air around him change, as though the very road was watching him now, waiting.The cold was a constant companion.
It seeped into the marrow of the bones, gnawed at the flesh, and left everything coated in a layer of frost. But it wasn't the chill that Tomas feared - it was the stillness that came with it. The stillness of a world that had stopped turning. The quiet of a land that had forgotten how to live.
He walked alone now, his footsteps crunching on the frozen earth beneath him, the metallic scent of blood still lingering in the air from the night before. The wound on his shoulder throbbed with each step, but Tomas didn't slow down. Pain was just another part of the wasteland. It was what you had to fight through, even when it felt like your body was betraying you.
The old world had been full of fire and life, of cities that blazed with light and voices that filled the streets. But the fire had gone out long ago. All that was left were the ruins - gray and lifeless, with no more songs to sing. Now, in the aftermath, there were only ghosts and metal.
Cold iron and warm blood.
Tomas tightened his grip on the rifle slung across his back, the weight of it a reminder that he wasn't just surviving. He was hunting. Out here, you had to be both predator and prey, because no one cared who you were once. The world had grown smaller, quieter, and the creatures that roamed it had learned to wear the faces of men.
He had learned to recognize them - those strange, twisted forms that lived in the shadows. Some called them raiders. Others, demons. But Tomas knew them for what they were: hunters.
The wind howled through the skeletal remains of a half-collapsed building nearby, carrying with it the stench of rot. Tomas paused, scanning the wreckage. The city, or what was left of it, was a maze of broken concrete and twisted metal. There was no order here. No law. Only survival.
He moved cautiously, his boots light against the snow-crusted ground. He had learned to be cautious in the silence of the wasteland. The slightest noise could be the end of you. A crack in the snow, a whisper in the wind, a shadow just out of sight - these were the things that killed.
Ahead, in the distance, something moved.
It wasn't human.
Tomas crouched, his hand brushing against the cold iron of his rifle. His breath fogged in the air as he exhaled slowly, eyes narrowing on the shape. He had seen enough to know that whatever it was, it wasn't a simple wanderer. It was something dangerous. Something hungry.
A low growl echoed across the frozen expanse. It was a sound that felt too close, too real. Tomas clenched his jaw, fighting the sharp ache of the wound in his shoulder, and steadied his rifle. There was no turning back now. In the wasteland, you either hunted - or you were hunted.
And Tomas wasn't ready to die yet. Not today.The sky had been broken for as long as Lira could remember.
It wasn't a crack in the clouds or a tear in the fabric of the heavens - it was more like a slow, agonizing unraveling, an invisible wound in the world that refused to heal. The sun hung too low, casting an eternal twilight over the desolate landscape. The stars had long since dimmed, hidden behind the gray smog of ash that never seemed to clear. It was as if the heavens themselves had given up, collapsing inward, taking the light with them.
Lira ran her fingers through her tangled hair, her eyes fixed on the horizon, where the jagged remains of the city's skyline cut into the dull sky. The ruins were a reflection of what the world had become - broken, abandoned, forgotten. Buildings that once stood tall and proud now lay in ruin, their skeletal frames reaching toward a sky that had no mercy to give.
She had been here for days now, walking the same cracked streets, searching for something she wasn't sure existed anymore. People spoke of the Aether, a place far beyond the wasteland, where the sky was still whole and the air was still pure. They said it was a myth, a dream for the desperate, for those too afraid to accept the truth: that the heavens were gone, and with them, everything that had once been worth saving.
But Lira didn't believe in myths. She never had.
The wind whispered through the ruins, carrying with it the stench of decay. She adjusted the pack slung over her shoulder and kept moving. The remnants of old world technology flickered faintly in the distance - a broken comm tower, a faded sign, a flicker of light through the cracked glass of a building that might have been a hospital once.
She had learned to ignore the whispers of the past, to drown out the voices of memories that called to her like the wind. It wasn't that she was afraid of them. It was that there were no answers to be found there. No salvation in the ruins. Only more questions.
But something was different today.
The ground beneath her feet seemed to tremble slightly, as if the earth itself was waking up from a long slumber. A faint rumble echoed through the air, low and distant, but it was enough to make Lira stop and listen. The sounds of the wasteland had been predictable for so long - the wind, the silence, the occasional crash of falling debris. But this... this was something else.
She scanned the horizon, her fingers instinctively brushing the hilt of her knife. She had no idea what was happening, but whatever it was, it didn't feel like a coincidence.
It was as if something had begun to stir beneath the surface of the world - a force long forgotten, long buried, now rising to claim what was left.
And deep in her gut, Lira felt a stirring of hope, sharp and fleeting. Hope that the world wasn't beyond repair. Hope that the heavens hadn't crumbled forever.
Maybe the Aether wasn't just a myth. Maybe it was real.
Maybe the sky could still be saved.The gods had long since abandoned this world.
It wasn't a fall from grace. It wasn't a battle or a curse. It was simply... silence. One day, they were here - great and terrible, their names spoken with reverence, their deeds carved into every stone and whispered across every fire. The next, they were gone, leaving nothing behind but the ruins of their temples and the echoes of their once-immense power.
Vera stood at the edge of a crumbled stone pillar, her boots sinking slightly into the damp earth as she surveyed the desolation before her. The remnants of an ancient city sprawled out in every direction, its once-proud buildings now mere skeletons - towers half-eaten by time and nature, carvings of forgotten symbols barely legible in the dim light of the setting sun. The air smelled of moss and decay, thick with the weight of centuries.
She had been traveling for weeks, following the whispers of those who still believed - believed that the gods might return, that the paths of the old world still held secrets. The last of the Keepers, the last of the Scholars, the last of those who had held the knowledge of the divine. She didn't know what she hoped to find. Maybe an answer. Maybe a purpose.
The gods' temples, now little more than tombs of stone and dust, seemed to call out to her. They had left their mark on every corner of this earth. Even now, the faintest tremor of their lost power lingered, if only in the ruins.
Her fingers brushed over an ancient inscription carved into the stone at her feet. It was worn, but still readable in places: "We walk not as men but as gods, for we have touched the heavens." The language was one that hadn't been spoken for generations, a dialect only a handful could still decipher. Yet she had learned it. She had learned it because, like so many others, she believed there was more to the world than this.
She wiped the dust from her brow, her eyes tracing the jagged remains of a once-mighty statue in the distance. It stood tall, though broken - half of a face, shattered arms, its once-terrifying gaze now lost to the sky.
The stories had told her that the gods had walked this land, that their footprints left marks upon the earth itself. Those who had sought to follow them, to gain their favor, had been rewarded with power, with knowledge, with immortality. And when the world turned, when the old ways fell away, the gods had left in silence, abandoning their creations as though they were no longer worth the effort.
But Vera refused to believe they had vanished entirely. The gods had touched this land too deeply for their presence to simply fade into nothing.
And now, the time had come to follow in their footsteps. To seek what had been lost.
A low rumble shook the ground beneath her, a tremor that seemed to rise from the depths of the earth itself. For a brief moment, the air grew still. She held her breath, every instinct telling her to run, to flee from whatever ancient force was stirring.
But she didn't move.
Instead, she lifted her head to the sky - where the heavens had once been full of stars - and listened.
Something had woken. Something forgotten, something ancient.
It was calling her, and she was ready to answer.<<grantBook>>[img[img/main/mainBed.webp]]
<<if $tearInitial is true>>You wake up in your bed - one of the few places that still feels human.
Faded curtains filter the dull grey light. The bed is worn but familiar, layered with scavenged sheets and memories. The air is still, but not dead. Something lingers here - like a thought left unfinished.
<<unset $tearInitial>>
Your brother's bedroll lies undisturbed in the corner, half-folded, like he meant to come back. He didn't.
A jacket still hangs from a nail by the door. His.
The nightstand drawer is slightly ajar. You never leave it like that.
And the wallpaper near the window is curling at the edges - more than usual. You never noticed the @@.shudder;tear@@ until now.
[[Pick at it|wallpaperPick]]<<else>>You step into your bedroom - one of the few places that still feels human.
Faded curtains filter the outside light. The bed is worn but warm, layered in mismatched sheets you've scrounged over time. A faint scent of old wood and linen hangs in the air. Outside, the world rots. In here, it sleeps.
<<if $brotherRel gt 0>>Your brother lies in the bed, <<if $gameDate.getUTCHours() gte 23 || $gameDate.getUTCHours() lte 6>>sleeping. He'll be here for some time...<br><br><<else>>resting. He'll be here for some time...
<<link [[Hang out with him (0:20)|joeyHangBedroom]]>><<addmins 20>><</link>><br><br><</if>><</if>><<if $gameDate.getUTCHours() gte 22 || $gameDate.getUTCHours() lte 7 || $player.ap lt 2>>[[Sleep|sleep]]<<else>>You still have some energy left in you. You should utilize it.<</if>>
[[Look in the mirror|mirror]]
<<link [[Stare out the window (0:20)|windowStare]]>><<addmins 20>><</link>>
<<if $radio is true>><br><<if $radioStatus is "off">>[[Turn on radio|radio]]<<else>>[[Turn off radio|radio]]<</if>><br><</if>><<if $thinkingWoman is true>><br>[[Search your brothers belongings|searchBrother]]<br><</if>>
<<masturbate 20 249 149 0 bedroomJerk>>
<<link [[Exit (0:01)|mainHouse]]>><<addmins 1>><</link>><</if>>You strip down to nothing and lay in your bed. Your nude skin against the soft covers are an experience you'll hardly let go of. You feel your body settling in, and you mind go to ease.
<<countSleep>>
<<masturbate 20 249 149 0 bedroomJerk>>
<<link [[Just sleep (??:??)|sleepInclude]]>><<sleepUntilRested>><</link>>
<<link [["Sleep 8 hours (8:00)[" + _wakeUp1 + "]"|sleepInclude]]>><<sleepHours 8>><</link>>
<<link [["Sleep 4 hours (4:00)[" + _wakeUp2 + "]"|sleepInclude]]>><<sleepHours 4>><</link>>
<<link [["Sleep 2 hours (2:00)[" + _wakeUp3 + "]"|sleepInclude]]>><<sleepHours 2>><</link>>
[[Change your mind|bedroom]]You fall asleep fast. You toss and turn in your bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<if $brotherRel gt 0>> Your brother lies beside you.<</if>>
<<if $brotherRel gt 0>>[img[img/main/mainBrotherSleep1.webp]]<<else>><<switch random(1,5)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<case 3>>[img[img/main/mainSleep3.webp]]<<case 4>>[img[img/main/mainSleep4.webp]]<<case 5>>[img[img/main/mainSleep5.webp]]<</switch>><</if>>
<<switch random(1,3)>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
<<if $arousal gte 60 && $sanity gt 60>>Something feels wet... [[Dream|wetDream]]<<elseif $sanity lte 60 && $arousal gte 40>>You begin sweating... [[Nightmare|nightmareDream]]<</if>>
[[Wake up|bedroom]]You dream of pure pleasure.
<<switch random(1, 5)>><<case 1>>[img[img/main/wetDream1.webp]]<<case 2>>[img[img/main/wetDream2.webp]]<<case 3>>[img[img/main/wetDream3.webp]]<<case 4>>[img[img/main/wetDream4.webp]]<<case 5>>[img[img/main/wetDream5.webp]]<</switch>>
[[Wake up|bedroom]]You dream of pure terror.
<<switch random(1, 5)>><<case 1>>[img[img/main/nightmare1.webp]]<<case 2>>[img[img/main/nightmare2.webp]]<<case 3>>[img[img/main/nightmare3.webp]]<<case 4>>[img[img/main/nightmare4.webp]]<<case 5>>[img[img/main/nightmare5.webp]]<</switch>>
[[WAKE UP!!|bedroom]]<<if $radioStatus is "off">>You turn on the old radio.
<<set $radioStatus to "on">>
Old radio stations are playing.<<else>>You turn off the old radio.
<<set $radioStatus to "off">>
Silence ensues.<</if>>
[[Turn away|bedroom]][img[img/main/mainBed.webp]]
You strip down to your most comfortable attire: Nothing. Your birthday suit.
The sheer feeling of walking around in your room naked is enough to turn up the heat.
<<setArousal 15>>
You can feel your pussy, wetter than before you stripped down, and your mind only thinking on one thing now. Getting off. You find a place to position yourself before you start having some real fun. It's times like these that make the post apocalyptic world worth living in. No real responsibilities, only gooning.
<<switch random(1,6)>><<case 1>>[img[img/main/mainBedMasturbate1.webp]]<<case 2>>[img[img/main/mainBedMasturbate2.webp]]<<case 3>>[img[img/main/mainBedMasturbate3.webp]]<<case 4>>[img[img/main/mainBedMasturbate4.webp]]<<case 5>>[img[img/main/mainBedMasturbate5.webp]]<<case 6>>[img[img/main/mainBedMasturbate6.webp]]<</switch>>
It doesn't take long for your body to become electric, sending pulses all the way through. Your eyes roll back inside your skull, and your breath stops for a short while.
<<setCorrupt 1>> | <<switch random(1,2)>><<case 1>><<setLust 1>><<case 2>><<setLust 2>><</switch>> | <<setArousal -100>>
<<setMasturbated 1>><<vibeControl 0.6>>
<<link [[Cum (0:10)|bedroomCum]]>><<addmins 10>><</link>>
<<link [[Clean up and get dressed|bedroom]]>><<stopvibrate>><</link>><<switch random(1,2)>><<case 1>>[img[img/main/mainBedCum1.webp]]<<case 2>>[img[img/main/mainBedCum2.webp]]<</switch>>
<span style="color:pink">Your lewd moans fill the room.</span>
<span style="color:red">You cum.</span>
<<cumvibrate>>
<<link [[Clean up and get dressed|bedroom]]>><<stopvibrate>><</link>>You grab a glance at yourself in the mirror. Your body is at it's prime, even though you haven't been able to properly nutrition yourself for a long time. Your tits are perky, and your butt is plump and firm.
Your hair, blonde and long. The most beautiful woman staring back at you, yet you are too shallow to see it yourself. Like a butterfly, never able to see themselves through the eyes of the admirer.
<<switch random(1,3)>><<case 1>>[img[img/player/mainMirror1.webp]]<<case 2>>[img[img/player/mainMirror2.webp]]<<case 3>>[img[img/player/mainMirror3.webp]]<</switch>>
You stare for a while... looking for imperfections, but when you can't find them, you give up.
<<linkreplace "Look deeper">><<nobr>>
<b>Relationship stats:</b>
<i><br><<if $carl.isRes is true>>Carl: $carl.rp<<else>>???<</if>>
<br><<if $anna.isRes is true>>Anna: $anna.rp<<else>>???<</if>>
<br><<if $joey.isRes is true>>Joey: $joey.rp<<else>>???<</if>>
<br><<if visited("datacentre") gt 0>>Matthew: $matthew.rp<<else>>???<</if>>
<br><<if $jeniffer.isRes is true>>Jeniffer: $jeniffer.rp<<else>>???<</if>></i>
<br>
<</nobr>><</linkreplace>>
[[Manage toy connections|Websocket]]
[[Turn away from the mirror|bedroom]]You kneel by the wall near the window. The wallpaper is curling like old skin, brittle at the edges. You run a finger under it and peel it back slowly, the glue surrendering with a dry whisper.
<<set $thinkingWoman to true>>
Beneath the paper, scratched directly into the wood, is a symbol.
[img[img/storyline/tearSymbol.webp]]
A circle. Split in two. One side filled with tight, spiraling lines - the other, left empty. Underneath, in your brother's handwriting, just two words:
<b>"Find me."</b>
You trace the edges with your thumb. The scratches are <i>fresh</i>. He left this for you - and he didn't want anyone else to find it.
You've never seen the symbol before. Or maybe you have, once, somewhere you'd rather forget.
<<set $entryOne to $day>>
<<link "Copy the symbol to your journal" "bedroom">><<notify>>Your journal has a new entry.<</notify>><</link>>To connect your toys to the game, please install Intiface Central. It can be installed on all platforms from:
https://intiface.com/central/
It is free and open source, meaning, no money spent, and guaranteed no viruses from the application. This is 100% pleasure.
Once installed, click the big play button, then click the "Connect" button below.
Once connected, the "Status" in Intiface Central will change from "Engine running, waiting for client" to "Nota Bao (Fractured Fantasies) connected".
Time to connect a toy! Click on "Devices", then "Start Scanning." It should find and accept your toys. For easiest use, I recommend only connecting the primary toy you'll be using. For a more comprehensive guide on connecting your toys, please use the following link:
https://docs.intiface.com/docs/intiface-central/quickstart/#starting-and-setting-up-intiface-central
You can also get help on our discord server at:
https://discord.gg/XVwPDd7rqZ
<center><<link "Connect your toys!">>
<<buttplugconnectwebsocket "ws://127.0.0.1:12345">>
<<connecting>>
<<removeclass "#connector" "hide">>
<<success>>
<<addclass "#connector" "hide">>
<<removeclass "#success" "hide">>
<<arousalVibe>>
<<failure>>
<<addclass "#connector" "hide">>
<<removeclass "#failure" "hide">>
<</buttplugconnectwebsocket>><</link>>
<span id="connector" class="hide" style="color:orange">Now trying to connect</span><span id="success" class="hide" style="color:green">Connection succeeded!
<<linkreplace "Test connection">><i><span style="color:white">Bzzt! Vibration sent!</span></i><<vibeControl 1.0>><<timed 1s>><<stopvibrate>><</timed>><</linkreplace>></span><span id="failure" class="hide" style="color:red">Connection failed!</span>
</center>
[[Return to the bedroom|bedroom]]You stare out the window.
<<switch random(1, 10)>>
<<case 1>>A torn piece of fabric hangs from a street sign across the road, snapping weakly in the wind. Each time it twists, it reveals a different faded color, as if it once belonged to something brighter. The metal pole creaks softly under the strain, a sound so low it almost blends into the background hum of the ruined city.
<<case 2>>A light fog drifts between the buildings, thin enough to see through but dense enough to blur edges. It moves unevenly, pooling in doorways and spilling out again, as if the street itself is breathing. After a while, it thins and disappears, leaving the world sharp and exposed once more.
<<case 3>>An abandoned car sits in the middle of the road, its driver-side door slightly ajar. The wind nudges it now and then, causing it to open a little wider before settling back. Inside, the upholstery flutters faintly, like the car is exhaling its last trapped air.
<<case 4>>Something skitters across the pavement near the far corner of the block - too small and too fast to identify clearly. It darts from shadow to shadow, pauses once, then vanishes behind a collapsed storefront. The street returns to stillness as if it was never disturbed.
<<case 5>>Clouds roll overhead in thick, uneven layers, casting slow-moving shadows that stretch and contract across the buildings. For a brief moment, the street darkens completely, the world reduced to silhouettes. When the light returns, nothing appears to have changed, but the sense of weight lingers.
<<case 6>>A loose sign mounted above a shop entrance swings back and forth, its rusted chain grinding with each movement. The motion is hypnotic - left, right, left - never quite slowing. Eventually the wind shifts, and the sign turns just enough to face away from view, its movement hidden but implied.
<<case 7>>A faint reflection catches your eye in a distant window, flashing briefly like glass turning toward the sun. The angle changes, and the reflection is gone. You stare for a while longer, but the building remains dull and lifeless.
<<case 8>>Debris stirs along the road. Paper scraps, dirt, and fragments of old packaging - gathering into a lazy spiral before scattering again. The wind seems indecisive, pulling in one direction and then another, unable to commit to carrying anything away for good.
<<case 9>>For several seconds, the street is utterly silent. No wind, no movement, not even the soft ambient noise that usually fills the air. The quiet presses in, thick and uncomfortable, until a distant creak echoes from somewhere unseen and the world exhales again.
<<case 10>>A shadow stretches across the far wall of a building, long and distorted, cast by something moving out of sight. It slides slowly, changes shape once, then breaks apart as the light shifts. When the wall is bare again, it feels wrong - too empty, too exposed.
<<case 11>>A dark smear marks the side of the street, stretching from the curb toward a shattered storefront. Whatever caused it is no longer there. The stain looks old, half-faded by weather, yet something about its edges seems too sharp, as if it hasn't fully settled into the pavement yet.
<<case 12>>One of the buildings across the road has a window that wasn't broken before. The glass is intact, cloudy with grime, and slightly open. It sways almost imperceptibly, though there's no wind strong enough to justify the movement.
<<case 13>>A shape lies beneath a collapsed awning in the distance. From here, it could be debris, or it could be something else entirely. The longer you look, the harder it becomes to tell which details are real and which ones your mind is supplying.
<<case 14>>The shadows outside don't line up the way they should. For a while, they stretch in slightly different directions, overlapping at strange angles. Then, slowly, they correct themselves, snapping back into something that almost makes sense.
<<case 15>>A sound carries faintly through the street - soft and rhythmic, like something tapping against concrete. It repeats a few times, irregular but deliberate, before stopping abruptly, leaving the silence feeling unfinished.
<<case 16>>Something moves behind a distant wall, visible only as a slow distortion in the light. It passes, pauses briefly, then continues on. The wall itself remains solid, untouched, as though whatever caused the shift was never really there.
<<case 17>>A lone shoe sits near the center of the road, upright and undamaged. There are no matching footprints around it, no sign of where it came from. It remains exactly where it is, unaffected by wind or time.
<<case 18>>The sky darkens suddenly, not like evening, but like something momentarily blocking the light. The change lasts only a heartbeat before the brightness returns, leaving your eyes aching as they readjust.
<<case 19>>A faint outline appears in the dust coating a nearby wall - vaguely human in shape, as if someone once leaned there for a long time. The outline fades slowly as the dust shifts, until the wall looks blank again.
<<case 20>>For a brief moment, your reflection overlaps with the glass of the window, superimposed over the ruined street beyond. The alignment is wrong - your shape doesn't quite match your movements. When you step back, the reflection snaps into place, as if nothing was ever off.
<</switch>>\
[[Turn away|bedroom]][img[img/main/kitchen.webp]]
You stand in the kitchen. There's a small bio-harvest pod resting on the window sill. There's a few herbs here.@@.em;<<kitchenInteract>>@@
<<do tag "eating">><<if $player.ap lte 4 && $player.hasEaten is false && $inventory.canned_food gte 1>><<link "Eat soup (0:20)">><<addmins 20>><<setHunger -100>><<setFatigue -50>><<setAP 1>><<setFood -1>><<set $player.hasEaten to true>><<redo "eating">><</link>><<elseif $player.ap gt 4 && $player.hasEaten is false && $inventory.canned_food gte 1>>There's no reason to eat now. You should save it for later, for when you're more hungry.<<elseif $player.hasEaten is false && $inventory.canned_food lt 1>>You don't have any canned food to eat. You should scavenge some.<<elseif $player.hasEaten is true>>You've already ate. You should ration your food, you'll survive longer that way.<</if>><</do>>
<<link "Biopod">><<run Dialog.setup('Biopod');
Dialog.wiki('<<include "biopod">>').open()>>
<</link>><<do tag "pod">><<if $seedsGrown gte 1>> | @@.pos;Your planted seed has grown!@@<<else>><<if $seedsPlanted gte 1>> | Growth: @@.pos;<<if $seedGrowth eq 1>>0<<else>>$seedGrowth<</if>>%@@<<else>> | <span style="color:orange">The biopod is empty.</span><</if>><</if>><</do>>
<<link [[Leave the kitchen (0:01)|mainHouse]]>><<addmins 1>><</link>><<do tag "seeds">><<if $seedsPlanted gte 1>>Towering over your biopod, you see all your herbs. Growing. Drinking water. Becoming better.
You have {{$seeds}} seeds in reserve to plant.<<else>>Towering over your empty biopod, you can't help but wonder what type of herbs would grow here.
You have {{$seeds}} seeds to plant.<</if>>
<<if $seedsPlanted gte 1 && $seedsGrown eq 0>><span style="color:green">Your herbs are growing at a steady pace.</span><<elseif $seedsGrown gte 1>><span style="color:green">You have grown herbs! Harvest them now.</span><<else>>You do not have any seeds planted yet.<</if>>
Growth: <<if $seedsGrown gte 1>><span style="color:green">100</span><<elseif $seedGrowth eq 1>>0<<else>>$seedGrowth<</if>>%<</do>>
<<if $seedsPlanted is 0 && $seeds gte 1 && $planterSpace gte 1>><<linkreplace "Plant a seed (0:05)">>You plug a hole in the soil and chug a seed into it.<br>Covering it lightly with soil, you give it a love-filled little tap with your finger before pouring a tiny amount of water over it.<br><br>Let the waiting game begin.<<set $seedsPlanted += 1, $seeds -= 1, $planterSpace -= 1>><<addmins 5>><<redo "seeds">><<redo "pod">><</linkreplace>><<elseif $planterSpace eq 0>><<if $seedsGrown gte 1>><<linkreplace "Pluck herbs (0:05)">>You pluck the herbs! Yummy. You gained some food for next days meal. Not bad.
<span style="color:green">+ Food</span><<set $inventory.canned_food += 1, $seedsGrown to 0, $seedGrowth to 0, $planterSpace += 1>><<addmins 5>><<redo "seeds">><<redo "pod">><</linkreplace>><br><<elseif $seedsGrown eq 0 && $seedsPlanted gte 1>>You need to wait for your seeds to grow first.<</if>><<elseif $seeds eq 0>>You don't have any seeds to plant.<br><</if>>
<<link "Go back">><<run Dialog.close()>><</link>><<if $kitchenInteract[0] is "Anna">>
\<<switch random(1,6)>>
<<case 1>>You enter the kitchen to find Anna carefully arranging dried herbs on the counter, her hands steady and deliberate.
<<case 2>>You enter the kitchen to find Anna perched on a stool, sketching something in a small notebook, lips pursed in concentration.
<<case 3>>You enter the kitchen to find Anna near the window, folding laundry with quiet efficiency, occasionally glancing outside.
<<case 4>>You enter the kitchen to find Anna leaning against the doorway, arms crossed, watching you with a curious tilt of her head.
<<case 5>>You enter the kitchen to find Anna inspecting the shelves, humming softly to herself, lost in thought.
<<case 6>>You enter the kitchen to find Anna kneeling on the floor, tidying up a small pile of scattered objects, her movements careful and methodical.
<</switch>>
@@.anna;Anna: Hi! Looking for me?@@
@@.you;$player.name: Well, if you'd like company, then yes.@@
She smiles at you and waves you over. The two of you sit down at the desk and start talking about anything and everything. She tells you stories about her family, and thanks you again for finding her and letting her stay here with you. The casino is no place for a woman after all, and especially not anyone the seize of Anna.
@@.anna;Anna: How are you doing, otherwise?@@
You nod at her question, knowing that she knows how you are doing. In this day and age, everyone is doing the same, or they're dead. She smiles and opens her arms, as if asking for a hug. You comply.
<<setArousal 15>>
<<if $corruption gte 60 or $anna.rp gte 50 or $lust gte 60>><<link [[Make a move (0:25)|kitchenSingleAnnaMove]]>><<addmins 25>><</link>><<else>>@@.red;Make a move@@ <em>(You're not ready for this yet.)</em><</if>>
[[Turn towards the kitchen|kitchen]]
<</if>>
\<<if $kitchenInteract[0] is "Carl">>
\<<switch random(1,6)>>
<<case 1>>You enter the kitchen to find Carl sitting at the table, staring into an empty bowl. What a sad day to be alive.
<<case 2>>You enter the kitchen to find Carl standing near the counter, eyeing a dented pot as if debating whether to cook or just give up.
<<case 3>>You enter the kitchen to find Carl sitting at the table. He looks up and gives you a tired but genuine smile.
<<case 4>>You enter the kitchen to find Carl slouched in his chair, absently tapping the edge of a spoon against the tabletop in a slow, steady rhythm.
<<case 5>>You enter the kitchen to find Carl leaning against the fridge, head tilted back, humming something low and tuneless.
<<case 6>>You enter the kitchen to find Carl standing with his arms crossed, staring down at a loaf of stale bread as if expecting it to speak.
<</switch>>
@@.carl;Carl: Hello, $player.name. Come to hang out?@@
@@.you;$player.name: Well, if you'd like company, then yes.@@
He smiles at you and beckons you over. You take place beside him, and the two of you engage in lively conversation. It is always a wonderful time conversing with Carl. He's such a genuine and stand-up guy. He tells you many stories of his past endevours, and you do the same with him.
@@.carl;Carl: How are you doing, otherwise?@@
You nod at his question, knowing that he knows how you are doing. In this day and age, everyone is doing the same, or they're dead. He smiles and opens his arms, as if asking for a hug. You comply.
<<setArousal 15>>
<<if $corruption gte 60 or $carl.rp gte 50 or $lust gte 60>><<link [[Make a move (0:25)|kitchenSingleCarlMove]]>><<addmins 25>><</link>><<else>>@@.red;Make a move@@ <em>(You're not ready for this yet.)</em><</if>>
[[Turn towards the kitchen|kitchen]]
<</if>>
\<<if $kitchenInteract[0] is "Jeniffer">>
\<<switch random(1,6)>>
<<case 1>>You enter the kitchen to find Jeniffer perched on the counter, absentmindedly tapping her fingers against a mug.
<<case 2>>You enter the kitchen to find Jeniffer sorting through a stack of papers, muttering fragments under her breath.
<<case 3>>You enter the kitchen to find Jeniffer by the sink, carefully washing a single dish, her movements precise and deliberate.
<<case 4>>You enter the kitchen to find Jeniffer leaning against the doorway, scanning the room with sharp, calculating eyes.
<<case 5>>You enter the kitchen to find Jeniffer crouched near a cupboard, rifling through jars as if searching for something specific.
<<case 6>>You enter the kitchen to find Jeniffer arranging utensils on the counter, straightening them obsessively before looking up at you.
<</switch>>
@@.jeniffer;Jeniffer: Hello! Can I help you?@@
@@.you;$player.name: Well, if you'd like company, then I'd like to give you some.@@
She smiles and beckons you over. You both take place at the table, and you chat. You talk about boys, mostly. But also everything in between heaven and hell. She opens up about her life before the world turned to shit, and you open up about yours. It surely is a good conversation.
@@.jeniffer;Jeniffer: How are you doing, otherwise?@@
You nod at her question, knowing that she knows how you are doing. In this day and age, everyone is doing the same, or they're dead. She smiles and opens her arms, as if asking for a hug. You comply.
<<setArousal 15>>
<<if $corruption gte 60 or $jeniffer.rp gte 50 or $lust gte 60>><<link [[Make a move (0:25)|kitchenSingleJenifferMove]]>><<addmins 25>><</link>><<else>>@@.red;Make a move@@ <em>(You're not ready for this yet.)</em><</if>>
[[Turn towards the kitchen|kitchen]]
<</if>>
\<<if $kitchenInteract[0] is "Joey">>
\<<switch random(1,6)>>
<<case 1>>You enter the kitchen to find Joey hunched over the table, tracing patterns on the wood with his finger. He doesn't look up at first.
<<case 2>>You enter the kitchen to find Joey leaning against the sink, staring at a cracked plate. He lets out a soft sigh when he notices you.
<<case 3>>You enter the kitchen to find Joey sitting cross-legged on the floor, organizing scraps of paper into neat piles. He glances up, then returns to his work.
<<case 4>>You enter the kitchen to find Joey standing in the doorway, hands tucked into his pockets, watching the fading light through the window.
<<case 5>>You enter the kitchen to find Joey wiping down the counter slowly, methodically, as if trying to erase something from the past.
<<case 6>>You enter the kitchen to find Joey leaning on a chair, head bowed, humming a quiet, unfamiliar tune that seems to belong to another time.
<</switch>>
@@.bro;Joey: Hey, $player.name. It's good to see you.@@
@@.you;$player.name: Likewise. Want company?@@
He smiles and waves you over. You sit down. It doesn't take long before the two of you are chatting about everything and anything. Long time has passed after all, and he didn't have anyone to chat with stuck in that hole. He tells you about what happened and how grateful he is that you saved him from there. He always could trust you.
@@.bro;Joey: How are you doing, otherwise?@@
You nod at his question, knowing that he knows how you are doing. In this day and age, everyone is doing the same, or they're dead. He smiles and opens his arms, as if asking for a hug. You comply.
<<setArousal 15>>
<<if $corruption gte 60 or $joey.rp gte 50 or $lust gte 60>><<link [[Make a move (0:25)|kitchenSingleJoeyMove]]>><<addmins 25>><</link>><<else>>@@.red;Make a move@@ <em>(You're not ready for this yet.)</em><</if>>
[[Turn towards the kitchen|kitchen]]<</if>>
\<<if $kitchenInteract[0] is "Matthew">>
\<<switch random(1,6)>>
<<case 1>>You enter the kitchen to find Matthew leaning against the counter, slowly sipping from a chipped mug. He doesn't notice you at first.
<<case 2>>You enter the kitchen to find Matthew rummaging through a cupboard, muttering under his breath about "supplies that used to be here."
<<case 3>>You enter the kitchen to find Matthew sitting with his back to the wall, peeling something with a dull knife. His eyes flick toward you, then back to his hands.
<<case 4>>You enter the kitchen to find Matthew staring out the grimy window, fingers drumming a slow rhythm on the sill. Whatever's outside has his full attention.
<<case 5>>You enter the kitchen to find Matthew crouched beside the stove, poking at the cold metal like he's trying to remember how to coax it back to life.
<<case 6>>You enter the kitchen to find Matthew pacing in slow, measured steps, the floorboards creaking under his weight. He stops when he sees you, but says nothing.
<</switch>>
@@.matthew;Matthew: Hello, $player.name. Looking for me?@@
@@.you;$player.name: Well, if you'd like company, then yes.@@
He smiles at you and waves you over. The two of you sit down at the desk and start talking about anything and everything. He tells stories about his time working for VaultNet, and how he built the camp he used to live in. After all, it was his home for a long time. He apologises again for scaring you, and you reciprocate with a hug.
@@.matthew;Matthew: How are you doing, otherwise?@@
You nod at his question, knowing that he knows how you are doing. In this day and age, everyone is doing the same, or they're dead. He smiles and opens his arms, as if asking for a hug. You comply.
<<setArousal 15>>
<<link [[Make a move (0:25)|kitchenSingleMatthewMove]]>><<addmins 25>><</link>>
[[Turn towards the kitchen|kitchen]]
<</if>><<addmins 60>>You make a move at her, squeezing her tightly. You reach your hands down slowly and grab her ass. You linger for a moment, to see if it is alright or not before you give them a second squeeze.
You pull away from the hug slowly, before engaging in a soft, but firm kiss.
@@.anna;Anna: Oh my... $player.name...@@
She pulls away with a soft moan. You pull her back into the kiss.
You feel your pussy moisten with your endevours. She reaches back, grabs your waist and pulls you closer.
You slowly drop to your knees and pull down her pants. You grab her panties, and move them down as well.
<<switch random(1,2)>><<case 1>>[img[img/main/anna/kitchenInteractAnnaCun1.webp]]<<case 2>>[img[img/main/anna/kitchenInteractAnnaCun2.webp]]<</switch>>
It doesn't take you very long before you're able to push her over the edge.
@@.anna;Anna: Oh my...@@
<<setArousal -100>> | <<setCorrupt 1>>
<<setAnna 1>>
[[Stand back up|kitchen]]You make a move at him, pressing your boobs into him. He feels them. His hand reaches towards your bum, and he leaves it lingering on top for a couple of seconds before grabbing a handful and squeezing.
You yelp, and he grins.
@@.carl;Carl: Anything wrong?@@
You look at him and shake your head.
@@.you;$player.name: N-.. No, nothing wrong.@@
His grin turns even wider than before, knowing he's stirred something inside of you. You feel your panties heavy with @@.you;pussy nectar@@.
You kneel down before him and unbuckle his belt. He places a hand resting ontop of your head, slowly caressing your hair. It feels nice.
<<setArousal 20>> | <<setLust 5>>
You put your hair up in a messy bun, and quickly fling his underwear down over his now rock solid cock. It flings up, almost hitting you over the nose. You yelp, again. He lets out a chuckle.
@@.carl;Carl: Now... Be gentle with it, or I may be forced to take control.@@
<<switch random(1,3)>><<case 1>>[img[img/main/carl/kitchenInteractCarlBlowjob1.webp]]<<case 2>>[img[img/main/carl/kitchenInteractCarlBlowjob2.webp]]<<case 3>>[img[img/main/carl/kitchenInteractCarlBlowjob3.webp]]<</switch>>
It doesn't take you very long before you're able to push him over the edge.
[img[img/main/carl/kitchenInteractCarlBlowjobCum1.webp]]
@@.carl;Carl: Oh my...@@
He groans and shoots a huge load down your throat. @@.you;You swallow it like the good girl you are@@.
<<setArousal -100>> | <<setCorrupt 1>>
<<setCarl 1>>
[[Stand back up|kitchen]]You make a move, running your hands down over her ass during your hug. She quickly reciprocates the gesture and runs her hands over your butt likewise. You linger for a moment before you slowly pull your head back and find her lips in a passionate kiss.
@@.jeniffer;Jeniffer: Oh my... $player.name...@@
She pulls away with a soft moan. You pull her back into the kiss.
You feel your pussy moisten with your endevours. She reaches back, grabs your waist and pulls you closer.
You slowly drop to your knees and pull down her pants. You grab her panties, and move them down as well.
<<switch random(1,2)>><<case 1>>[img[img/main/jeniffer/kitchenInteractJenifferCun1.webp]]<<case 2>>[img[img/main/jeniffer/kitchenInteractJenifferCun2.webp]]<</switch>>
It doesn't take you very long before you're able to push her over the edge.
@@.jeniffer;Jeniffer: Oh my...@@
<<setArousal -100>> | <<setCorrupt 1>>
<<setJen 1>>
[[Stand back up|kitchen]]You make a move, giving him a passionate hug. He's still sitting down as you're pressing your ample bossom into his face. He moves his hands up and grabs your butt, squeezing lightly. He lingers for a moment, as if to see if it is alright with you. He gives another squeeze, before letting you go.
<<setArousal 35>>
@@.bro;Joey: You know, brother and sister shouldn't be doing these things.@@
You give him a coy smile, then turn around seductively. You pretend to have dropped something on the ground, and bend over to pick it up. Your ass is straight in his face, and it doesn't feel like he takes the time to look away. He grins.
You wiggle it around a bit, before you feel his warm hands on your hips. You let out a soft moan. You turn around and drop to your knees, before you reach up to unbuckle his belt.
His already hard cock flops out and nearly whacks you over the nose.
<<switch random(1,3)>><<case 1>>[img[img/main/joey/kitchenInteractJoeyBlowjob1.webp]]<<case 2>>[img[img/main/joey/kitchenInteractJoeyBlowjob2.webp]]<<case 3>>[img[img/main/joey/kitchenInteractJoeyBlowjob3.webp]]<</switch>>
It doesn't take you very long before you're able to push him over the edge.
[img[img/main/joey/kitchenInteractJoeyBlowjobCum1.webp]]
@@.bro;Joey: Oh my...@@
He groans and shoots a huge load down your throat. @@.you;You swallow it like the good girl you are@@.
<<setArousal -100>> | <<setCorrupt 1>>
<<setJoey 1>>
[[Stand back up|kitchen]]You make a move, reaching your hand down towards his crotch. You linger for a bit as if to ask if it is alright, and judging by the fact that Matthew has pretended not to notice, you grab hold of his budlge. He groans and squeezes you a bit more tight than before, pressing himself into your tits.
<<setArousal 40>>
@@.matthew;Matthew: My God, $player.name. Were you always this hot?@@
You smile and nod.
He grabs your hips and turns your around. He grabs your pants by the hem and begin slowly lowering them, and you bend over. You feel your @@.you;pussy moisten@@ with the idea of his fat cock.
You grabs your panties and yanks them down. It doesn't take long before his cock flings out in the open, pressing against your pussy. He let's himself in. He knows he's welcomed.
[img[img/main/matthew/kitchenInteractMatthewSex1.webp]]
It doesn't take you very long before you're able to push him over the edge.
@@.matthew;Matthew: Oh my...@@
He groans and shoots a huge load up your womb. @@.you;You take it like the good girl you are@@.
<<setArousal -100>> | <<setCorrupt 1>>
<<setMatt 1>>
[[Stand back up|kitchen]][img[img/main/mainHouse.webp]]
<<if $kitchenInteract.length eq 2>>You take place at the table with $kitchenInteract[0] and $kitchenInteract[1]. $kitchenInteract[1] places a hand on your thigh. <</if>>
\<<if $kitchenInteract.length eq 3>>You take place at the table with $kitchenInteract[0], $kitchenInteract[1] and $kitchenInteract[2]. $kitchenInteract[1] places a hand on your thigh. <</if>>
\<<if $kitchenInteract.length eq 4>>You take place at the table with $kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2] and $kitchenInteract[3]. $kitchenInteract[1] places a hand on your thigh. <</if>>
\<<if $kitchenInteract.length eq 5>>You take place at the table with $kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2], $kitchenInteract[3] and $kitchenInteract[4]. $kitchenInteract[1] places a hand on your thigh. <</if>>
\It feels nice. Warm. Safe.
<<setArousal 20>>
<<switch random(1,5)>>
<<case 1>>You engage with everyone in joyful conversation about life in the house and life in the broken world. Finding common ground is important these days, and everyday you do, hope is restored a little bit.
<<case 2>>You listen to the flow of words around you, but they wash past like a river you can't step into. Smiles move easily, voices rise and fall, and still you feel the hollow tug of absence. Every sound is a reminder of what's gone, every pause a space that grief slips into.
<<case 3>>You stay quiet, but the heat of skin near yours steals your focus. A brush, a shift, the faintest weight leaning close. Small things that burn brighter than they should. The conversation blurs, and all you can feel is the restless thrum beneath your skin.
<<setArousal 15>>
<<case 4>>You nod along, offering simple words here and there, content to let the noise settle into background hum. Nothing remarkable is said, nothing striking is felt - it's just another quiet stretch of passing time, steady and unbroken.
<<case 5>>A glance lingers, carrying more than it should. The smallest curve of a smile, the subtle shift of attention - it all hangs heavy in the air, quiet but undeniable. No words are spoken, yet the silence says more than enough.
<<setLust 1>>
<</switch>>
They <<if $kitchenInteract.length eq 2>><<else>>all<</if>> like you more. This was a nice choice.
<<silent>>
<<if $kitchenInteract.includes("Anna")>><<setAnna 2>><</if>>
<<if $kitchenInteract.includes("Carl")>><<setCarl 2>><</if>>
<<if $kitchenInteract.includes("Joey")>><<setJoey 2>><</if>>
<<if $kitchenInteract.includes("Matthew")>><<setMatt 3>><</if>>
<<if $kitchenInteract.includes("Jeniffer")>><<setJen 3>><</if>>
<</silent>><<addmins 60>>
[[Get up|mainHouse]][img[img/main/mainHouse.webp]]
This is your livingroom. It features a workbench, for you to craft items. It also features a table, a chair and a couch. It's big, room enough for people to sleep in here. There's also a small workout bench and a bookshelf.
@@.em;<<couchInteract>>@@
<<if $gameDate.getUTCHours() lte 7 || $gameDate.getUTCHours() gte 21>>@@.red;Rest@@ <em>(It's not the time for rest now.)</em><<else>><<link [[Rest (0:30)|livingroom]]>><<if $player.hp lte 50>><<setHP 25>><</if>><<addmins 30>><</link>><</if>>
<<link "Workbench">><<run Dialog.setup('Workbench');
Dialog.wiki('<<include "Crafting">>').open()>>
<</link>>
<<if $player.timesWO lt 3>><<link [[Work out(0:45)|workout]]>><<addmins 45>><</link>><<else>>@@.red;Work out@@ <em>(You shouldn't overtrain your body.)</em><</if>>
<<link [[Read a book (0:01)|readBook]]>><<addmins 1>><</link>>
<<if $couchRelax.length is 0>><<masturbate 20 249 149 0 livingroomJerk>>\<<else>>@@.red;Fuck your pussy@@ <em>(You can't fuck your pussy while there's other people here.)</em><br><</if>>
[[Go back|mainHouse]]You're all alone on the couch. It feels nice laying here. Almost too nice. You feel yourself becoming a bit adventurous.
<<switch random(1,3)>><<case 1>>[img[img/main/livingroomJerk1.webp]]<<case 2>>[img[img/main/livingroomJerk2.webp]]<<default>>[img[img/main/livingroomJerk3.webp]]<</switch>>
<<link [[Cum (0:10)|bedroomCum]]>><<addmins 10>><</link>>
<<link [[Finish (0:01)|livingroom]]>><<addmins 1>><</link>>You stand by the workbench. Items will show up here when you have enough material to create something.
<<link "Resources">><<run Dialog.setup('Resource inventory');
Dialog.wiki('<<include "resources">>').open()>>
<</link>>
<b>Scavenger's Backpack:</b>
<span id="backpack"><<if $inventory.leather gte 40 && $inventory.adhesive gte 8 && $scavengeBackpack is false>><<link "Create Scavenger's Backpack (0:56)">><<addmins 56>><<set $inventory.leather -= 40, $inventory.adhesive -= 8>><<set $scavengeBackpack to true>><<set $maxAmount to 150>><<replace "#backpack">>You've created the Scavenger's Backpack.<</replace>><</link>><<elseif $scavengeBackpack is true>>You already have the Scavenger's Backpack.<<elseif $inventory.leather lt 40 || $inventory.adhesive lt 8>>You don't have enough materials to create this item. <b>You need at least 40 leather and 8 adhesive.</b>
You are carrying: <b>$inventory.leather leather</b> and <b>$inventory.adhesive adhesive</b>.<</if>></span>
<b>Gas mask MKII:</b>
<span id="gasmaskmkii"><<if $inventory.scrap_metal gte 20 && $inventory.adhesive gte 4 && $inventory.pipes gte 2 && $gasmaskmkii is false>><<link "Create Gas mask MKII (0:31)">><<addmins 31>><<set $inventory.scrap_metal -= 20, $inventory.adhesive -= 4, $inventory.pipes -= 2>><<set $gasmaskmkii to true>><<set $inventory.head.pushUnique("gasmaskmkii")>><<deleteItem head gasmask>><<replace "#gasmaskmkii">>You've created the Gas mask MKII.<</replace>><</link>><<elseif $gasmaskmkii is true>>You already have the Gas mask MKII.<<elseif $inventory.scrap_metal lt 20 || $inventory.adhesive lt 4 || $inventory.pipes lt 2>>You don't have enough materials to create this item. <b>You need at least 20 scrap, 4 adhesive and 2 pipes.</b>
You are carrying: <b>$inventory.scrap_metal scrap</b>, <b>$inventory.adhesive adhesive</b> and <b>$inventory.pipes pipes</b>.<</if>></span>
<b>Gas mask MKIII:</b>
<span id="gasmaskmkii"><<if $inventory.scrap_metal gte 20 && $inventory.adhesive gte 4 && $inventory.pipes gte 2 && $gasmaskmkii is true && $gasmaskmkiii is false>><<link "Create Gas mask MKIII (0:44)">><<addmins 44>><<set $inventory.scrap_metal -= 20, $inventory.adhesive -= 4, $inventory.pipes -= 2>><<set $gasmaskmkiii to true>><<set $inventory.head.pushUnique("gasmaskmkiii")>><<deleteItem head gasmaskmkii>><<replace "#gasmaskmkiii">>You've created the Gas mask MKIII.<</replace>><</link>><<elseif $gasmaskmkiii is false>>You need the previous upgrade before creating this.<<elseif $gasmaskmkiii is true>>You already have the Gas mask MKIII.<<elseif $inventory.scrap_metal lt 20 || $inventory.adhesive lt 4 || $inventory.pipes lt 2>>You don't have enough materials to create this item. <b>You need at least 20 scrap, 4 adhesive and 2 pipes.</b>
You are carrying: <b>$inventory.scrap_metal scrap</b>, <b>$inventory.adhesive adhesive</b> and <b>$inventory.pipes pipes</b>.<</if>></span>
<b>Body armor:</b>
<span id="bodyarmor"><<if $blueprints.kevlar_vest is true>><<if $inventory.scrap_metal gte 30 && $inventory.adhesive gte 13 && $inventory.leather gte 20 && $bodyarmor is false>><<link "Create Body armor (1:10)">><<addmins 70>><<set $inventory.scrap_metal -= 30, $inventory.adhesive -= 13, $inventory.leather -= 20, $bodyarmor to true>> <<run $inventory.center.pushUnique("bodyarmor")>><<replace "#bodyarmor">>You've created body armor.<</replace>><</link>><<elseif $bodyarmor is true>>You already have the body armor.<<elseif $inventory.scrap_metal lt 30 || $inventory.adhesive lt 13 || $inventory.leather lt 20>>You don't have enough materials to create this item.
<b>You need at least 30 scrap metal, 13 adhesive and 20 leather.</b>
You are carrying: <b>$inventory.scrap_metal scrap metal</b>, <b>$inventory.adhesive adhesive</b> and <b>$inventory.leather leather</b>.<</if>></span><<else>>You do not have the blueprint for a kevlar vest.<</if>>
<<link "Go back">><<run Dialog.close()>><</link>>[img[img/main/mainHouse.webp]]
You lie down on the trusty workout bench. There's a couple of dumbbells by the side. It's not much, but it is a lot better than nothing. You spend some time working out. Becoming bigger, better, stronger. It is no joke out there. You need to be on your best. Besides, working out helps with your sanity. Or so they say.
<<switch random(1,2)>><<case 1>>[img[img/main/workout.webp]]<<case 2>>[img[img/main/workoutAlt.webp]]<</switch>>
<<setStrength>> | <<setCardio 1>><<if $sanity eq 100>><<else>> | <<setSanity 1>><</if>>
<<if $player.timesWO lt 2>><<link [[Work out(0:45)|workout]]>><<addmins 45>><</link>><<else>>@@.red;Work out@@ <em>(You shouldn't overtrain your body.)</em><</if>>
[[Stop working out|livingroom]]
<<set $player.timesWO += 1>><<set $player.daysSinceWorkout to 2>>[img[img/main/mainHouse.webp]]
You sit down in your most comfortable chair. At least, the most comfortable chair you can find around here. It's not easy. Nonetheless, you can sit. You should find a book to read.
<<do tag "books">><<if $bookChosen isnot "">><span style="color:lightyellow"><<switch $bookChosen>><<case "ashes">><<include "book1">><<case "chronicles">><<include "book2">><<case "echoes">><<include "book3">><<case "iron">><<include "book4">><<case "shattered">><<include "book5">><<case "last city">><<include "book6">><<case "broken roads">><<include "book7">><<case "whispers">><<include "book8">><<case "ghost">><<include "book9">><<case "bone">><<include "book10">><<case "twilight">><<include "book11">><<case "forgotten">><<include "book12">><<case "bridge">><<include "book13">><<case "secret">><<include "book14">><<case "rust">><<include "book15">><<case "wolves">><<include "book16">><<case "wasteland">><<include "book17">><<case "roads">><<include "book18">><<case "blood">><<include "book19">><<case "heavens">><<include "book20">><<case "gods">><<include "book21">><</switch>></span>
<<set $player.booksReadToday += 1>><<set $player.booksReadTotal += 1>>
You engulf yourself in whatever story it is that you just ripped down from the shelf. You spend some time reading. It heals your mental wounds and strengthens the mind.<<if $player.booksReadToday lte 3>><br><<switch random(1,10)>><<case 1 2 3 4 5 6>><<setIntelligence 1>><<case 7 8 9>><<setIntelligence 2>><<case 10>><<setIntelligence 3>><</switch>><<if $sanity eq 100>><<else>> | <<setSanity 3>><</if>><</if>>
<<link "Choose another book">><<run Dialog.setup('Bookshelf');
Dialog.wiki('<<include "bookshelf">>').open()>>
<</link>><<else>><<link "Choose a book">><<run Dialog.setup('Bookshelf');
Dialog.wiki('<<include "bookshelf">>').open()>>
<</link>><</if>><</do>>
[[Stop reading|livingroom][$bookChosen to ""]]You look at your bookshelf.
Looks like you have around $booksFound.length books.
<<nobr>>\
<<if $booksFound.includes("bookAshes")>><<link "Ashes of the Forgotten Land (0:23)">><<addmins 23>><<set $bookChosen to "ashes">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookChronicles")>><<link "The Wasteland Chronicles: First Point (0:23)">><<addmins 23>><<set $bookChosen to "chronicles">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookEchoes")>><<link "Echoes of the Silent Sky (0:27)">><<addmins 27>><<set $bookChosen to "echoes">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookIron")>><<link "The Iron Roots of the Ruins (0:18)">><<addmins 18>><<set $bookChosen to "iron">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookShattered")>><<link "Under the Shattered Sun (0:25)">><<addmins 25>><<set $bookChosen to "shattered">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookCity")>><<link "In the Shadow of the Last City (0:31)">><<addmins 31>><<set $bookChosen to "last city">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookBroken")>><<link "The Broken Roads and the Dying Breath (0:23)">><<addmins 23>><<set $bookChosen to "broken roads">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookWhispers")>><<link "Whispers Through the Smoke (0:22)">><<addmins 22>><<set $bookChosen to "whispers">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookGhost")>><<link "The Ghosts Beneath the Soil (0:26)">><<addmins 26>><<set $bookChosen to "ghost">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookBone")>><<link "Steel and Bone: A Wasteland Tale (0:19)">><<addmins 19>><<set $bookChosen to "bone">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookTwilight")>><<link "The Twilight of Old Worlds (0:20)">><<addmins 20>><<set $bookChosen to "twilight">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookForgotten")>><<link "Fires of the Forgotten (0:16)">><<addmins 16>><<set $bookChosen to "forgotten">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookBridge")>><<link "The Last Bridge to Tomorrow (0:22)">><<addmins 22>><<set $bookChosen to "bridge">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookSecret")>><<link "Echo-1: The Secret in the Ashes (0:56)">><<addmins 56>><<set $bookChosen to "secret">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookRust")>><<link "Rust and Reverence (0:14)">><<addmins 14>><<set $bookChosen to "rust">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookWolves")>><<link "The Wolves Who Walked Among Us (0:21)">><<addmins 21>><<set $bookChosen to "wolves">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookWasteland")>><<link "The Silent Hand of the Wasteland (0:18)">><<addmins 18>><<set $bookChosen to "wasteland">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookRoads")>><<link "Through the Ghost Roads (0:19)">><<addmins 19>><<set $bookChosen to "roads">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookBlood")>><<link "Cold Iron, Warm Blood (0:23)">><<addmins 23>><<set $bookChosen to "blood">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookHeavens")>><<link "The Crumbling Heavens (0:28)">><<addmins 28>><<set $bookChosen to "heavens">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
<<if $booksFound.includes("bookGods")>><<link "In the Footsteps of Forgotten Gods (0:27)">><<addmins 27>><<set $bookChosen to "gods">><<redo "books">><<run Dialog.close()>><</link>><br><</if>>
\<</nobr>>
<<link "Change your mind">><<run Dialog.close()>><</link>>[img[img/main/mainHouse.webp]]
<<if $couchRelax.length eq 2>>You sit in the couch between $couchRelax[0] and $couchRelax[1]. $couchRelax[1] wraps <</if>>
\<<if $couchRelax.length eq 3>>You sit in the couch between $couchRelax[0], $couchRelax[1] and $couchRelax[2]. $couchRelax[1] wraps <</if>>
\<<if $couchRelax.length eq 4>>You sit in the couch between $couchRelax[0], $couchRelax[1], $couchRelax[2] and $couchRelax[3]. $couchRelax[1] wraps <</if>>
\<<if $couchRelax.length eq 5>>You sit in the couch between $couchRelax[0], $couchRelax[1], $couchRelax[2], $couchRelax[3] and $couchRelax[4]. $couchRelax[1] wraps <</if>>
\an arm around you, squeezing you in an embracing side-hug. It feels nice. Warm. Safe.
<<setArousal 20>>
<<switch random(1,5)>>
<<case 1>>You engage with everyone in joyful conversation about life in the house and life in the broken world. Finding common ground is important these days, and everyday you do, hope is restored a little bit.
<<case 2>>You listen to the flow of words around you, but they wash past like a river you can't step into. Smiles move easily, voices rise and fall, and still you feel the hollow tug of absence. Every sound is a reminder of what's gone, every pause a space that grief slips into.
<<case 3>>You stay quiet, but the heat of skin near yours steals your focus. A brush, a shift, the faintest weight leaning close. Small things that burn brighter than they should. The conversation blurs, and all you can feel is the restless thrum beneath your skin.
<<setArousal 15>>
<<case 4>>You nod along, offering simple words here and there, content to let the noise settle into background hum. Nothing remarkable is said, nothing striking is felt - it's just another quiet stretch of passing time, steady and unbroken.
<<case 5>>A glance lingers, carrying more than it should. The smallest curve of a smile, the subtle shift of attention - it all hangs heavy in the air, quiet but undeniable. No words are spoken, yet the silence says more than enough.
<<setLust 1>>
<</switch>>
They <<if $couchRelax.length eq 2>><<else>>all<</if>> like you more. This was a nice choice.
<<silent>>
<<if $couchRelax.includes("Anna")>><<setAnna 3>><</if>>
<<if $couchRelax.includes("Carl")>><<setCarl 3>><</if>>
<<if $couchRelax.includes("Joey")>><<setJoey 3>><</if>>
<<if $couchRelax.includes("Matthew")>><<setMatt 2>><</if>>
<<if $couchRelax.includes("Jeniffer")>><<setJen 2>><</if>>
<</silent>><<addmins 60>>
[[Get up|mainHouse]][img[img/main/mainHouse.webp]]
You hang out with @@.em;$couchRelax[0]@@ on the couch.
<<nobr>><<if $couchRelax[0] == "Carl">>It doesn't take long before you settle into deep conversation. He talks about his greatfulness, and how happy he is that you saved him. @@.em;He reminds you that he still owes you his life@@.
<br><br>
You can trust him. At least, that is what he says.<br>
@@.pos;He likes you a bit more.@@<<set $carl.rp += 1>><</if>>
<<if $couchRelax[0] == "Anna">>She lights up like a beam of sunlight at the sight of you approaching her. You sit besides her, and it doesn't take long before you get to chatting about everything and anything. @@.em;She thanks you once again for letting her stay@@.
<br><br>
She gives you a big hug.<br>
@@.pos;She likes you a bit more.@@<<set $anna.rp += 1>><</if>>
<<if $couchRelax[0] == "Joey">>He beckons you over, as if you're walking at the speed of a snail. You sit beside him, and he pulls you in for a hug. It doesn't take long before you bond with your brother once again. @@.em;He thanks you again for saving him@@.
<br><br>
Your bond with your brother is stronger than ever.<br>
@@.pos;He likes you a bit more.@@<<set $joey.rp += 1>><</if>>
<<if $couchRelax[0] == "Matthew">>He grins at the sighty of you approaching him. He raises his hand in motion to give you a high five and a fist bump. Typical. It doesn't take long before you fall into deep chat. @@.em;He apologises once again for scaring you@@.
<br><br>
You can trust him. At least, that is what he says.<br>
@@.pos;He likes you a bit more.@@<<set $matthew.rp += 1>><</if>>
<<if $couchRelax[0] == "Jeniffer">>She's laying in the couch, occupying the entire thing. As she sees you approaching her, she smiles and scoots over. It doesn't take long before you fall into deep chat. @@.em;She thanks you again for letting her stay@@.
<br><br>
You can trust her. At least, that is what she says.<br>
@@.pos;She likes you a bit more.@@<<set $jeniffer.rp += 1>><</if>><</nobr>>
<<addmins 60>>
[[Leave|livingroom]][img[img/main/mainHouse.webp]]
You stand in your apartment. It's rundown and old, but at least it's safe. You've run power from the old solar cells on the rooftop. <<if $quest.solar.questItem is true && $quest.solar.isComplete is false>>There's a pair of brand new solar cells standing in the corner.<</if>>
<<if $residents.length is 0 && $emptyHouseCheck is false>>The house feels... empty.
<<setSanity -1>><<set $emptyHouseCheck to true>><br><<elseif $residents.length gte 2 && $fullHouseCheck is false>>The house feels alive.
<<setSanity 1>><<set $fullHouseCheck to true>><br><</if>>
<<do tag "wait">><<if $gameDate.getUTCHours() gte 23 || $gameDate.getUTCHours() lte 5>><<link "Assignment board">><<run Dialog.setup('Assignments');
Dialog.wiki('<<include "assignBoard">>').open()>>
<</link>>
Assigned: <span style="color:lightyellow">{{$assigned}}</span><<else>>It's too early to be assigning a task.
You could @@.flicker;<<link "wait around (0:45)">><<addmins 45>><<redo "wait">><</link>>@@, until everyone is sleeping.<</if>>
<<childHandler>>
<<link [[Your bedroom (0:01)|bedroom]]>><<addmins 1>><</link>>
<<link [[Hallway (0:01)|hallway]]>><<addmins 1>><</link>>
<<if $showerUser isnot "none">>@@.red;Bathroom@@ <em>(The bathroom is occupied. You hear water running - it's <<print $showerUser>>.)</em>
<<link [["Peek on " + $showerUser + " (0:20)"|$showerUser + "peek"]]>><<addmins 20>><</link>><<else>><<link [[Bathroom (0:01)|bathroom]]>><<addmins 1>><</link>><</if>>
<<link [[Livingroom (0:01)|livingroom]]>><<addmins 1>><</link>><<displayLivingroom>>
<<link [[Kitchen (0:01)|kitchen]]>><<addmins 1>><</link>><<displayKitchen>><</do>>
<<if $housePatch is false>><<link [[Patch up the house (0:30)|housePatch]]>><<addmins 30>><</link>><<else>>@@.red;Patch up the house@@ <em>(The house is in an okay condition.)</em><</if>>
<<link "Gear and weapons">><<run Dialog.setup('View your gear and weapons');
Dialog.wiki('<<include "Gear stand">>').open()>>
<</link>>
<<link "Resources">><<run Dialog.setup('Resource inventory');
Dialog.wiki('<<include "resources">>').open()>>
<</link>>
<<link "Scavenge">><<run Dialog.setup('Prepare for scavenge', 'prepScav');
Dialog.wiki('<<include "prepareScavenge">>').open()>>
<</link>> | <<link "Explore">><<run Dialog.setup('Prepare for expedition', 'prepExplore');
Dialog.wiki('<<include "prepareExplore">>').open()>>
<</link>>
<<link "Go outside">><<run Dialog.setup('Prepare for exit', 'prepOut');
Dialog.wiki('<<include "prepareOutside">>').open()>>
<</link>><<questPorter>>[img[img/main/mainHallway.webp]]
You stand looking down the hallway. There's a few doors on the right and a few doors on the left. You can have people live here.
<<if $carl.isRes is true>><<if $assigned is "Carl">>@@.red;Carl@@ <em>(You've assigned @@.em;Carl@@ to a task. He is not home.)</em><<else>><<link [[Carl's room (0:01)|carlRoom]]>><<addmins 1>><</link>><</if>><<else>><<linkreplace "Empty room">>@@.red;Empty room@@ <em>(This room is empty.)</em><</linkreplace>><</if>>
<<if $anna.isRes is true>><<if $assigned is "Anna">>@@.red;Anna@@ <em>(You've assigned @@.em;Anna@@ to a task. She is not home.)</em><<else>><<link [[Anna's room (0:01)|annaRoom]]>><<addmins 1>><</link>><</if>><<else>><<linkreplace "Empty room">>@@.red;Empty room@@ <em>(This room is empty.)</em><</linkreplace>><</if>>
<<if $joey.isRes is true>><<if $assigned is "Joey">>@@.red;Joey@@ <em>(You've assigned @@.em;Joey@@ to a task. He is not home.)</em><<else>><<link [[Joey's room (0:01)|joeyRoom]]>><<addmins 1>><</link>><</if>><<else>><<linkreplace "Empty room">>@@.red;Empty room@@ <em>(This room is empty.)</em><</linkreplace>><</if>>
<<if $matthew.isRes is true>><<if $assigned is "Matthew">>@@.red;Matthew@@ <em>(You've assigned @@.em;Matthew@@ to a task. He is not home.)</em><<else>><<link [[Matthew's room (0:01)|matthewRoom]]>><<addmins 1>><</link>><</if>><<else>><<linkreplace "Empty room">>@@.red;Empty room@@ <em>(This room is empty.)</em><</linkreplace>><</if>>
<<if $jeniffer.isRes is true>><<if $assigned is "Jeniffer">>@@.red;Jeniffer@@ <em>(You've assigned @@.em;Jeniffer@@ to a task. She is not home.)</em><<else>><<link [[Jeniffer's room (0:01)|jenifferRoom]]>><<addmins 1>><</link>><</if>><<else>><<linkreplace "Empty room">>@@.red;Empty room@@ <em>(This room is empty.)</em><</linkreplace>><</if>>
<<link [[Go back (0:01)|mainHouse]]>><<addmins 1>><</link>><span id="shower">[img[img/main/mainBath.webp]]
You enter the bathroom. It's rundown. For some reason, you only took the time to renovate the bedroom and the living room.
<<lastUsedShower>>
<<link "Take a shower (0:20)">><<replace "#shower">>You undress and start showering.
The water is hot, thanks to your waterheater. You installed it not many weeks ago, and it's still running smoothly.
<<switch random(1,3)>><<case 1>>[img[img/main/mainShower1.webp]]<<case 2>>[img[img/main/mainShower2.webp]]<<default>>[img[img/main/mainShower3.webp]]<</switch>><<silent>><<addmins 20>><<if $player.hasShower is false>><<setAP 1>><<set $player.hasShower to true>><span style="color:yellow">+ Action points</span><<updatebar>><</if>><</silent>><</replace>><</link>></span>
<<masturbate 20 249 149 0 bathroomJerk>>
<<link [[Leave (0:01)|mainHouse]]>><<addmins 1>><</link>>Hot water trickles down over your naked body, standing in the showers like this is very hot. Rubbing your entire body with soap, feeling every crevice and tiny mountain that you own. It makes your head spin. Better do something about that.
You slowly run your hands down towards your sacred place.
<<switch random(1,3)>><<case 1>>[img[img/main/mainShowerJerk1.webp]]<<case 2>>[img[img/main/mainShowerJerk2.webp]]<<default>>[img[img/main/mainShowerJerk3.webp]]<</switch>>
<<link [[Finish (0:01)|mainHouse]]>><<addmins 1>><</link>><b>Your gear stand. It's more like a silent waiter. Not very fancy, but at least it does its job.</b>
Headgear: <span style="color:lightyellow"><<= $gearStand.head.map((i) => setup.gear[i].name).join(", ")>></span>
Centerpiece: <span style="color:lightyellow"><<= $gearStand.center.map((i) => setup.gear[i].name).join(", ")>></span>
Feet: <span style="color:lightyellow"><<= $gearStand.foot.map((i) => setup.gear[i].name).join(", ")>></span>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<linkreplace "Store your gear">>You store your gear on the gear stand.<<storeGear>><<replace "#ui-dialog-body">><<include "Gear stand">><</replace>><</linkreplace>><<else>>You don't have any gear in your inventory to store.<</if>>
<b>Your table-.. weapons rack. Your weapons rack.</b>
Primary: <span style="color:lightyellow"><<= $weaponsRack.primary.map((i) => setup.gear[i].name).join(", ")>></span>
Secondary: <span style="color:lightyellow"><<= $weaponsRack.secondary.map((i) => setup.gear[i].name).join(", ")>></span>
Equipment: <span style="color:lightyellow"><<= $weaponsRack.equipment.map((i) => setup.gear[i].name).join(", ")>></span>
<<if $inventory.primary.length gte 1 || $inventory.secondary.length gte 1 || $inventory.equipment.length gte 1>><<linkreplace "Store your weapons">>You store your weapons on the weapons rack.<<storeWeap>><<replace "#ui-dialog-body">><<include "Gear stand">><</replace>><</linkreplace>><<else>>You don't have any weapons in your inventory to store.<</if>>
<<link "Go back">><<run Dialog.close()>><</link>><b>Tasks to be assigned:</b><<if $residents.length is 0>><br>There's no one living with you... You either killed them off or turned them away from safety.
I hope you're happy with your decision.<br><<else>><<do>><<if $assigned is "">><<if $carl.isRes is true>><br><label><<radiobutton "$assigned" "Carl">> Carl</label><</if>><<if $anna.isRes is true>><br><label><<radiobutton "$assigned" "Anna">> Anna</label><</if>><<if $joey.isRes is true>><br><label><<radiobutton "$assigned" "Joey">> Joey</label><</if>><<if $matthew.isRes is true>><br><label><<radiobutton "$assigned" "Matthew">> Matthew</label><</if>><<if $jeniffer.isRes is true>><br><label><<radiobutton "$assigned" "Jeniffer">> Jeniffer</label><</if>>
Assigned housemates will complete one scavenge hunt per assignment.
Once assigned, they won't be home till tomorrow.
<<link "Assign">><<run Dialog.close()>><<if $assigned eq $companion.name>><<set $companion.isAssigned to true>><<updatebar>><<redo>><</if>><</link>><<else>><br>You've already assigned someone a task: $assigned<br>
<<link "Removed assigned">><<set $assigned to "">><<redo>><</link>><</if>><</do>><</if>>
<<if $assigned is "">><<link "Step away">><<run Dialog.close()>><<set $assigned to "">><</link>><<else>><<link "Step away">><<run Dialog.close()>><</link>><</if>><<switch random(1, 10)>>\
<<case 1 2 3 4 5 6>>This... again. Always again. You patch up some cracks in the wall. It's nothing big or fancy, but without maintenance, this house will wither away, with you in it. This is all you have left, and all that is keeping you alive for the time being. A smart idea to keep <em>it</em> alive as well.
<<default>>This... again. Always again. The door hinges on the outside door has begun creaking. It feels like it was just yesterday you fixed this, but alas, here we go again. The door to the outside is of the utmost importancy. This is without a doubt something you can't half-ass.
<</switch>>
<<setSanity 1>> | <<setIntelligence 1>>
<<set $housePatch to true>>
<<link [[Turn back (0:01)|mainHouse]]>><<addmins 1>><</link>>A handy list of your stored resources.
<<do tag "storage">>
<b>Scrap metal: </b>$storage.scrap_metal <<if $storage.scrap_metal gte 1>>| <<link "Take one">><<set $storage.scrap_metal -= 1>><<set $inventory.scrap_metal += 1>><<redo>><</link>><</if>> <<if $storage.scrap_metal gte 10>>| <<link "Take 10">><<set $storage.scrap_metal -= 10>><<set $inventory.scrap_metal += 10>><<redo>><</link>><</if>>
<b>Electronics Components: </b>$storage.electronics_components <<if $storage.electronics_components gte 1>>| <<link "Take one">><<set $storage.electronics_components -= 1>><<set $inventory.electronics_components += 1>><<redo>><</link>><</if>> <<if $storage.electronics_components gte 10>>| <<link "Take 10">><<set $storage.electronics_components -= 10>><<set $inventory.electronics_components += 10>><<redo>><</link>><</if>>
<b>Circuit Board: </b>$storage.circuit_board <<if $storage.circuit_board gte 1>>| <<link "Take one">><<set $storage.circuit_board -= 1>><<set $inventory.circuit_board += 1>><<redo>><</link>><</if>> <<if $storage.circuit_board gte 10>>| <<link "Take 10">><<set $storage.circuit_board -= 10>><<set $inventory.circuit_board += 10>><<redo>><</link>><</if>>
<b>Leather: </b>$storage.leather <<if $storage.leather gte 1>>| <<link "Take one">><<set $storage.leather -= 1>><<set $inventory.leather += 1>><<redo>><</link>><</if>> <<if $storage.leather gte 10>>| <<link "Take 10">><<set $storage.leather -= 10>><<set $inventory.leather += 10>><<redo>><</link>><</if>>
<b>Canned food: </b>$storage.canned_food <<if $storage.canned_food gte 1>>| <<link "Take one">><<set $storage.canned_food -= 1>><<set $inventory.canned_food += 1>><<redo>><</link>><</if>> <<if $storage.canned_food gte 10>>| <<link "Take 10">><<set $storage.canned_food -= 10>><<set $inventory.canned_food += 10>><<redo>><</link>><</if>>
<b>Water bottle: </b>$storage.water_bottle <<if $storage.water_bottle gte 1>>| <<link "Take one">><<set $storage.water_bottle -= 1>><<set $inventory.water_bottle += 1>><<redo>><</link>><</if>> <<if $storage.water_bottle gte 10>>| <<link "Take 10">><<set $storage.water_bottle -= 10>><<set $inventory.water_bottle += 10>><<redo>><</link>><</if>>
<b>Adhesive: </b>$storage.adhesive <<if $storage.adhesive gte 1>>| <<link "Take one">><<set $storage.adhesive -= 1>><<set $inventory.adhesive += 1>><<redo>><</link>><</if>> <<if $storage.adhesive gte 10>>| <<link "Take 10">><<set $storage.adhesive -= 10>><<set $inventory.adhesive += 10>><<redo>><</link>><</if>>
<b>Pipes: </b>$storage.pipes <<if $storage.pipes gte 1>>| <<link "Take one">><<set $storage.pipes -= 1>><<set $inventory.pipes += 1>><<redo>><</link>><</if>> <<if $storage.pipes gte 10>>| <<link "Take 10">><<set $storage.pipes -= 10>><<set $inventory.pipes += 10>><<redo>><</link>><</if>>
<b>Wood: </b>$storage.wood <<if $storage.wood gte 1>>| <<link "Take one">><<set $storage.wood -= 1>><<set $inventory.wood += 1>><<redo>><</link>><</if>> <<if $storage.wood gte 10>>| <<link "Take 10">><<set $storage.wood -= 10>><<set $inventory.wood += 10>><<redo>><</link>><</if>>
<b>Gunpowder: </b>$storage.gunpowder <<if $storage.gunpowder gte 1>>| <<link "Take one">><<set $storage.gunpowder -= 1>><<set $inventory.gunpowder += 1>><<redo>><</link>><</if>> <<if $storage.gunpowder gte 10>>| <<link "Take 10">><<set $storage.gunpowder -= 10>><<set $inventory.gunpowder += 10>><<redo>><</link>><</if>><<set $satchelAmount to $inventory.scrap_metal + $inventory.electronics_components + $inventory.circuit_board + $inventory.leather + $inventory.canned_food + $inventory.water_bottle + $inventory.adhesive + $inventory.pipes + $inventory.wood + $inventory.gunpowder>>
<<if $satchelAmount gte 1>><<link "Empty your satchel (0:08)">><<silent>>
<<set $storage.scrap_metal += $inventory.scrap_metal, $inventory.scrap_metal -= $inventory.scrap_metal>>
<<set $storage.electronics_components += $inventory.electronics_components, $inventory.electronics_components -= $inventory.electronics_components>>
<<set $storage.circuit_board += $inventory.circuit_board, $inventory.circuit_board -= $inventory.circuit_board>>
<<set $storage.leather += $inventory.leather, $inventory.leather -= $inventory.leather>>
<<set $storage.canned_food += $inventory.canned_food, $inventory.canned_food -= $inventory.canned_food>>
<<set $storage.water_bottle += $inventory.water_bottle, $inventory.water_bottle -= $inventory.water_bottle>>
<<set $storage.adhesive += $inventory.adhesive, $inventory.adhesive -= $inventory.adhesive>>
<<set $storage.pipes += $inventory.pipes, $inventory.pipes -= $inventory.pipes>>
<<set $storage.wood += $inventory.wood, $inventory.wood -= $inventory.wood>>
<<set $storage.gunpowder += $inventory.gunpowder, $inventory.gunpowder -= $inventory.gunpowder>>
<<set $satchelAmount to $inventory.scrap_metal + $inventory.electronics_components + $inventory.circuit_board + $inventory.leather + $inventory.canned_food + $inventory.water_bottle + $inventory.adhesive + $inventory.pipes + $inventory.wood + $inventory.gunpowder>>
<<redo "storage">>
<<addmins 8>><</silent>><</link>><<else>>You are not carrying items in your satchel.<</if>><</do>>
<<link "Go back">><<run Dialog.close()>><</link>>You should choose some items to go along with your trip. It's dangerous out there.
<b>Currently equipped:</b>
Helmet: @@.em;<<hovertip setup.gear[$equipped.head].tooltipImg>><<= setup.gear[$equipped.head].name>><</hovertip>>@@
Centerpiece: @@.em;<<hovertip setup.gear[$equipped.center].tooltipImg>><<= setup.gear[$equipped.center].name>><</hovertip>>@@
Feet: @@.em;<<hovertip setup.gear[$equipped.foot].tooltipImg>><<= setup.gear[$equipped.foot].name>><</hovertip>>@@
@@.pos;Radiation Protection: {{$rad}}@@
Primary: @@.em;<<hovertip setup.gear[$equipped.primary].tooltipImg>><<= setup.gear[$equipped.primary].name>><</hovertip>>@@
Secondary: @@.em;<<hovertip setup.gear[$equipped.secondary].tooltipImg>><<= setup.gear[$equipped.secondary].name>><</hovertip>>@@
Equipment: @@.em;<<hovertip setup.gear[$equipped.equipment].tooltipImg>><<= setup.gear[$equipped.equipment].name>><</hovertip>>@@
@@.pos;Damage: {{$dmgMin}} - {{$dmgMax}}@@
<b>Stored gear:</b>
Headgear:
\<<for _item range $gearStand.head>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set _replaceHead to $equipped.head>>
<<set $equipped.head = _item>>
<<set $inventory.head.pushUnique(_item)>>
<<set $gearStand.head.deleteAll(_item)>>
<<set $gearStand.head.pushUnique(_replaceHead)>>
<<if $gearStand.head.includes("Empty")>><<run $gearStand.head.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.head.last() !== _item>>, <</if>>
\<</for>>
Centerpiece:
\<<for _item range $gearStand.center>>
\<<set _replaceCenter to $equipped.center>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.center = _item>>
<<set $inventory.center.pushUnique(_item)>>
<<set $gearStand.center.deleteAll(_item)>>
<<set $gearStand.center.pushUnique(_replaceCenter)>>
<<if $gearStand.center.includes("Empty")>><<run $gearStand.center.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.center.last() !== _item>>, <</if>>
\<</for>>
Footwear:
\<<for _item range $gearStand.foot>>
\<<set _replaceFoot to $equipped.foot>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.foot = _item>>
<<set $inventory.foot.pushUnique(_item)>>
<<set $gearStand.foot.deleteAll(_item)>>
<<set $gearStand.foot.pushUnique(_replaceFoot)>>
<<if $gearStand.foot.includes("Empty")>><<run $gearStand.foot.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.foot.last() !== _item>>, <</if>>
\<</for>>
Primary:
\<<for _item range $weaponsRack.primary>>
\<<set _replacePrim to $equipped.primary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.primary = _item>>
<<set $inventory.primary.pushUnique(_item)>>
<<set $weaponsRack.primary.deleteAll(_item)>>
<<set $weaponsRack.primary.pushUnique(_replacePrim)>>
<<if $weaponsRack.primary.includes("Empty")>><<run $weaponsRack.primary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.primary.last() !== _item>>, <</if>>
\<</for>>
Secondary:
\<<for _item range $weaponsRack.secondary>>
\<<set _replaceSecon to $equipped.secondary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.secondary = _item>>
<<set $inventory.secondary.pushUnique(_item)>>
<<set $weaponsRack.secondary.deleteAll(_item)>>
<<set $weaponsRack.secondary.pushUnique(_replaceSecon)>>
<<if $weaponsRack.secondary.includes("Empty")>><<run $weaponsRack.secondary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.secondary.last() !== _item>>, <</if>>
\<</for>>
Equipment:
\<<for _item range $weaponsRack.equipment>>
\<<set _replaceEquip to $equipped.equipment>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.equipment = _item>>
<<set $inventory.equipment.pushUnique(_item)>>
<<set $weaponsRack.equipment.deleteAll(_item)>>
<<set $weaponsRack.equipment.pushUnique(_replaceEquip)>>
<<if $weaponsRack.equipment.includes("Empty")>><<run $weaponsRack.equipment.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareOutside">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.equipment.last() !== _item>>, <</if>>
\<</for>>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Ready (0:05)<br>">><<addmins 5>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "Outside">><<run Dialog.close()>><</link>><</if>>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Remove everything">><<removeGearO>><</link>><<else>>You're not currently wearing anything. <<link "Go anyways? (0:05)">><<addmins 5>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "Outside">><<run Dialog.close()>><</link>><</if>>
<<link "Go back">><<redo "gear">><<run Dialog.close()>><</link>>[img[img/outside/outside.webp]]
You step outside. It's humid and hot. The sun is shining bright onto you, and you can feel the rays dig into your skin. If you're not getting sunburnt, you'll hopefully get a nice tan going.
<<if $quest.safezones.isStarted is true && $quest.safezones.isComplete is false>>$quest.safezones.desc
<<safezones>><<else>><</if>>
<<link [[Old garage (0:02)|oldGarage]]>><<addmins 2>><</link>>
<<if $player.ap gte 1>><<link [[Scavenge (1:00)|Scavenge]]>><<addmins 60>><</link>><<else>>You shouldn't scavenge. The @@.shudder;<span style="color:DarkOliveGreen">toxins</span>@@ are starting to get to you.<</if>>
<<link [[Explore (1:00)|hubMenu]]>><<addmins 60>><</link>>
<<link [[Go back home (0:01)|mainHouse]]>><<addmins 1>><<runAudio 'audio/door.mp3'>><</link>>[img[img/outside/oldGarage.webp]]
<<if $garage is 0>><b>The old garage is a hollow shell of its former purpose.</b>
Faded oil stains mark the concrete like old battle scars, and rusted tools hang crookedly on the walls-long since claimed by time and corrosion. The skeletal remains of a workbench sit beneath a shattered window, where cold wind slips through like a thief. There's space for a few vehicles, maybe, but now it's just empty silence and the lingering scent of metal and dust.
A perfect place to hide. Or to be hunted.<<else>><b>The garage offers a grim refuge for your vehicles-silent guardians against the chaos outside.</b>
Its cracked concrete walls shield them from the worst of the elements, while the heavy, rusted doors hang slightly ajar, inviting both protection and peril. Inside, your vehicles rest-scarred but ready, waiting for the next desperate journey into the wasteland.
Fuel: $fuel
<<if $vehicles.motorcycle.location is "Outside">>Your Café Racer is here.
<<do tag "fuel">><<if $vehicles.motorcycle.fuel gte 1>><<if $quest.safezones.zonesDiscovered.includes("Point Guard")>><<link [[Go to Point Guard|pointGuard]]>><<set $vehicles.motorcycle.location to "Point Guard", $vehicles.motorcycle.fuel -= 1>><</link>><</if>><<if $quest.safezones.zonesDiscovered.includes("Checkpoint Zero")>><br><<link [[Go to Checkpoint Zero|highland]]>><<set $vehicles.motorcycle.location to "Checkpoint Zero", $vehicles.motorcycle.fuel -= 1>><</link>><</if>><<if $quest.safezones.zonesDiscovered.includes("First Point")>><br><<link [[Go to First Point|fpSquare]]>><<set $vehicles.motorcycle.location to "First Point", $vehicles.motorcycle.fuel -= 1>><</link>><</if>><<if $quest.safezones.zonesDiscovered.includes("Foxtrot")>><br><<link [[Go to Foxtrot|foxtrotMain]]>><<set $vehicles.motorcycle.location to "Foxtrot", $vehicles.motorcycle.fuel -= 1>><</link>><</if>><<else>>There's not enough fuel on your Café Racer.
<<if $fuel gte 1>><<link "Refuel">><<set $vehicles.motorcycle.fuel += $fuel>><<set $fuel -= $vehicles.motorcycle.fuel>><<redo "fuel">><</link>><<else>>You have no fuel.<</if>><</if>><</do>><<else>>Your Café Racer is somewhere else. It is in $vehicles.motorcycle.location.<</if>><</if>>
<<link [[Leave (0:01)|Outside]]>><<addmins 1>><</link>>You should choose some items to go along with your trip. It's dangerous out there.
<b>Currently equipped:</b>
Helmet: @@.em;<<hovertip setup.gear[$equipped.head].tooltipImg>><<= setup.gear[$equipped.head].name>><</hovertip>>@@
Centerpiece: @@.em;<<hovertip setup.gear[$equipped.center].tooltipImg>><<= setup.gear[$equipped.center].name>><</hovertip>>@@
Feet: @@.em;<<hovertip setup.gear[$equipped.foot].tooltipImg>><<= setup.gear[$equipped.foot].name>><</hovertip>>@@
@@.pos;Radiation Protection: {{$rad}}@@
Primary: @@.em;<<hovertip setup.gear[$equipped.primary].tooltipImg>><<= setup.gear[$equipped.primary].name>><</hovertip>>@@
Secondary: @@.em;<<hovertip setup.gear[$equipped.secondary].tooltipImg>><<= setup.gear[$equipped.secondary].name>><</hovertip>>@@
Equipment: @@.em;<<hovertip setup.gear[$equipped.equipment].tooltipImg>><<= setup.gear[$equipped.equipment].name>><</hovertip>>@@
@@.pos;Damage: {{$dmgMin}} - {{$dmgMax}}@@
<b>Stored gear:</b>
Headgear:
\<<for _item range $gearStand.head>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set _replaceHead to $equipped.head>>
<<set $equipped.head = _item>>
<<set $inventory.head.pushUnique(_item)>>
<<set $gearStand.head.deleteAll(_item)>>
<<set $gearStand.head.pushUnique(_replaceHead)>>
<<if $gearStand.head.includes("Empty")>><<run $gearStand.head.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.head.last() !== _item>>, <</if>>
\<</for>>
Centerpiece:
\<<for _item range $gearStand.center>>
\<<set _replaceCenter to $equipped.center>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.center = _item>>
<<set $inventory.center.pushUnique(_item)>>
<<set $gearStand.center.deleteAll(_item)>>
<<set $gearStand.center.pushUnique(_replaceCenter)>>
<<if $gearStand.center.includes("Empty")>><<run $gearStand.center.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.center.last() !== _item>>, <</if>>
\<</for>>
Footwear:
\<<for _item range $gearStand.foot>>
\<<set _replaceFoot to $equipped.foot>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.foot = _item>>
<<set $inventory.foot.pushUnique(_item)>>
<<set $gearStand.foot.deleteAll(_item)>>
<<set $gearStand.foot.pushUnique(_replaceFoot)>>
<<if $gearStand.foot.includes("Empty")>><<run $gearStand.foot.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.foot.last() !== _item>>, <</if>>
\<</for>>
Primary:
\<<for _item range $weaponsRack.primary>>
\<<set _replacePrim to $equipped.primary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.primary = _item>>
<<set $inventory.primary.pushUnique(_item)>>
<<set $weaponsRack.primary.deleteAll(_item)>>
<<set $weaponsRack.primary.pushUnique(_replacePrim)>>
<<if $weaponsRack.primary.includes("Empty")>><<run $weaponsRack.primary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.primary.last() !== _item>>, <</if>>
\<</for>>
Secondary:
\<<for _item range $weaponsRack.secondary>>
\<<set _replaceSecon to $equipped.secondary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.secondary = _item>>
<<set $inventory.secondary.pushUnique(_item)>>
<<set $weaponsRack.secondary.deleteAll(_item)>>
<<set $weaponsRack.secondary.pushUnique(_replaceSecon)>>
<<if $weaponsRack.secondary.includes("Empty")>><<run $weaponsRack.secondary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.secondary.last() !== _item>>, <</if>>
\<</for>>
Equipment:
\<<for _item range $weaponsRack.equipment>>
\<<set _replaceEquip to $equipped.equipment>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.equipment = _item>>
<<set $inventory.equipment.pushUnique(_item)>>
<<set $weaponsRack.equipment.deleteAll(_item)>>
<<set $weaponsRack.equipment.pushUnique(_replaceEquip)>>
<<if $weaponsRack.equipment.includes("Empty")>><<run $weaponsRack.equipment.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareScavenge">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.equipment.last() !== _item>>, <</if>>
\<</for>>
<<if $player.ap gte 1>><<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Ready (1:00)<br>">><<addmins 60>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "Scavenge">><<run Dialog.close()>><</link>><</if>>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Remove everything">><<removeGearS>><</link>><<else>>You're not currently wearing anything. <<link "Go anyways? (1:00)">><<addmins 60>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "Scavenge">><<run Dialog.close()>><</link>><</if>><<else>>You should rest instead.<</if>>
<<link "Go back">><<redo "gear">><<run Dialog.close()>><</link>><<switch random(1, 10)>>
<<case 1>>[img[img/scavenge/vehicle.webp]]
While scavenging, you come across an abandoned vehicle. The doors are closed, but you can see supplies scattered inside. It's a risk to enter, but there might be valuable items left behind. You enter.
<<case 2>>[img[img/scavenge/merchant.webp]]
A wandering trader crosses your path. They offer to trade some unique items they've come across in exchange for your finds.
<<tradeslist>><<do tag "merchant">><<if $merchantDismissed is true>>You've already bid the merchant farewell. He's left.<<else>><<link "View wares">><<run Dialog.setup('Travelling merchant', 'trade');
Dialog.wiki('<<include "tradeOffer">>').open()>>
<</link>><</if>><</do>>
<<case 3>>[img[img/scavenge/fog.webp]]
A thick fog rolls in, obscuring your vision. While navigating through this eerie environment, you chance upon an abandoned settlement. The limited visibility increases the tension as you try to scavenge while staying alert to potential threats.
<<case 4>>[img[img/scavenge/cache.webp]]
As you search a seemingly barren area, you notice a pile of debris concealing a hidden compartment. Inside, you find a well-preserved cache of supplies overlooked by others. Your keen eye proves invaluable in finding hidden treasures.
<<case 5>><<switch random(1,2)>><<case 1>>[img[img/scavenge/vending.webp]]<<default>>[img[img/scavenge/vending1.webp]]<</switch>>
Among the ruins, you find an old vending machine. Surprisingly, it still functions. Inserting a scavenged currency, you receive some random items. Someone stocked it with all sorts of things.
<<default>>[img[img/scavenge/box.webp]]
Tumbling the wasteland you stumble upon a small box. Nobody seems to be around, and the wasteland is silent. The only sound is from the occasional wind rustling the dead trees.
<</switch>><<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "mainHouse">><<goto "combat">><<default>><</switch>>\<<include "scavengeEvents">>
<<scavenge>><<if $companion.name isnot "">><<compScavenge>><</if>>
<<if $player.ap gte 2>><<link [[Scavenge (1:00)|Scavenge]]>><<set $merchantDismissed to false>><<addmins 60>><</link>><<else>>You should get back. The @@.shudder;<span style="color:DarkOliveGreen">toxins</span>@@ are starting to get to you.<</if>>
<<link [[Go back home (0:01)|mainHouse]]>><<addmins 1>><<runAudio 'audio/door.mp3'>><</link>>
<<setAP -1>><<scavengerAchievements>><center><i><span style="color:white">Merchant Level</span></i>: <span style="color:yellow"><b>$merchantLevel</b></span></center>
You get: <<= _item1.replace("_", " ").toUpperFirst()>>: _amountI1
You give: <<= _trade1.replace("_", " ").toUpperFirst()>>: _amountT1
<<do tag "trades">><<if $inventory[_trade1] gte _amountT1 && $conf1 is false>><<link "Accept deal">><<set $conf1 to true>><<set $inventory[_item1] += _amountI1>><<set $inventory[_trade1] -= _amountT1>><<merchantExp 2>><<redo "trades">><</link>><<elseif $conf1 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT1 - $inventory[_trade1]>> <<= _trade1.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item2.replace("_", " ").toUpperFirst()>>: _amountI2
You give: <<= _trade2.replace("_", " ").toUpperFirst()>>: _amountT2
<<do tag "trades">><<if $inventory[_trade2] gte _amountT2 && $conf2 is false>><<link "Accept deal">><<set $conf2 to true>><<set $inventory[_item2] += _amountI2>><<set $inventory[_trade2] -= _amountT2>><<merchantExp 2>><<redo "trades">><</link>><<elseif $conf2 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT2 - $inventory[_trade2]>> <<= _trade2.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item3.replace("_", " ").toUpperFirst()>>: _amountI3
You give: <<= _trade3.replace("_", " ").toUpperFirst()>>: _amountT3
<<do tag "trades">><<if $inventory[_trade3] gte _amountT3 && $conf3 is false>><<link "Accept deal">><<set $conf3 to true>><<set $inventory[_item3] += _amountI3>><<set $inventory[_trade3] -= _amountT3>><<merchantExp 2>><<redo "trades">><</link>><<elseif $conf3 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT3 - $inventory[_trade3]>> <<= _trade3.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item4.replace("_", " ").toUpperFirst()>>: _amountI4
You give: <<= _trade4.replace("_", " ").toUpperFirst()>>: _amountT4
<<do tag "trades">><<if $inventory[_trade4] gte _amountT4 && $conf4 is false>><<link "Accept deal">><<set $conf4 to true>><<set $inventory[_item4] += _amountI4>><<set $inventory[_trade4] -= _amountT4>><<merchantExp 2>><<redo "trades">><</link>><<elseif $conf4 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT4 - $inventory[_trade4]>> <<= _trade4.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item5.replace("_", " ").toUpperFirst()>>: _amountI5
You give: <<= _trade5.replace("_", " ").toUpperFirst()>>: _amountT5
<<do tag "trades">><<if $inventory[_trade5] gte _amountT5 && $conf5 is false>><<link "Accept deal">><<set $conf5 to true>><<set $inventory[_item5] += _amountI5>><<set $inventory[_trade5] -= _amountT5>><<merchantExp 2>><<redo "trades">><</link>><<elseif $conf5 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT5 - $inventory[_trade5]>> <<= _trade5.replace("_", " ").toUpperFirst()>></b><</if>><</do>><<include "tradeList">>
<<link "Bid farewell">><<set $merchantDismissed to true>><<set $conf1 to false, $conf2 to false, $conf3 to false, $conf4 to false, $conf5 to false>><<run Dialog.close()>><<redo "merchant">><</link>>You should choose some items to go along with your trip. It's dangerous out there.
<b>Currently equipped:</b>
Helmet: @@.em;<<hovertip setup.gear[$equipped.head].tooltipImg>><<= setup.gear[$equipped.head].name>><</hovertip>>@@
Centerpiece: @@.em;<<hovertip setup.gear[$equipped.center].tooltipImg>><<= setup.gear[$equipped.center].name>><</hovertip>>@@
Feet: @@.em;<<hovertip setup.gear[$equipped.foot].tooltipImg>><<= setup.gear[$equipped.foot].name>><</hovertip>>@@
@@.pos;Radiation Protection: {{$rad}}@@
Primary: @@.em;<<hovertip setup.gear[$equipped.primary].tooltipImg>><<= setup.gear[$equipped.primary].name>><</hovertip>>@@
Secondary: @@.em;<<hovertip setup.gear[$equipped.secondary].tooltipImg>><<= setup.gear[$equipped.secondary].name>><</hovertip>>@@
Equipment: @@.em;<<hovertip setup.gear[$equipped.equipment].tooltipImg>><<= setup.gear[$equipped.equipment].name>><</hovertip>>@@
@@.pos;Damage: {{$dmgMin}} - {{$dmgMax}}@@
<b>Stored gear:</b>
Headgear:
\<<for _item range $gearStand.head>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set _replaceHead to $equipped.head>>
<<set $equipped.head = _item>>
<<set $inventory.head.pushUnique(_item)>>
<<set $gearStand.head.deleteAll(_item)>>
<<set $gearStand.head.pushUnique(_replaceHead)>>
<<if $gearStand.head.includes("Empty")>><<run $gearStand.head.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.head.last() !== _item>>, <</if>>
\<</for>>
Centerpiece:
\<<for _item range $gearStand.center>>
\<<set _replaceCenter to $equipped.center>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.center = _item>>
<<set $inventory.center.pushUnique(_item)>>
<<set $gearStand.center.deleteAll(_item)>>
<<set $gearStand.center.pushUnique(_replaceCenter)>>
<<if $gearStand.center.includes("Empty")>><<run $gearStand.center.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.center.last() !== _item>>, <</if>>
\<</for>>
Footwear:
\<<for _item range $gearStand.foot>>
\<<set _replaceFoot to $equipped.foot>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.foot = _item>>
<<set $inventory.foot.pushUnique(_item)>>
<<set $gearStand.foot.deleteAll(_item)>>
<<set $gearStand.foot.pushUnique(_replaceFoot)>>
<<if $gearStand.foot.includes("Empty")>><<run $gearStand.foot.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $gearStand.foot.last() !== _item>>, <</if>>
\<</for>>
Primary:
\<<for _item range $weaponsRack.primary>>
\<<set _replacePrim to $equipped.primary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.primary = _item>>
<<set $inventory.primary.pushUnique(_item)>>
<<set $weaponsRack.primary.deleteAll(_item)>>
<<set $weaponsRack.primary.pushUnique(_replacePrim)>>
<<if $weaponsRack.primary.includes("Empty")>><<run $weaponsRack.primary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.primary.last() !== _item>>, <</if>>
\<</for>>
Secondary:
\<<for _item range $weaponsRack.secondary>>
\<<set _replaceSecon to $equipped.secondary>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.secondary = _item>>
<<set $inventory.secondary.pushUnique(_item)>>
<<set $weaponsRack.secondary.deleteAll(_item)>>
<<set $weaponsRack.secondary.pushUnique(_replaceSecon)>>
<<if $weaponsRack.secondary.includes("Empty")>><<run $weaponsRack.secondary.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.secondary.last() !== _item>>, <</if>>
\<</for>>
Equipment:
\<<for _item range $weaponsRack.equipment>>
\<<set _replaceEquip to $equipped.equipment>>
\<<capture _item>>
\<<link setup.gear[_item].name>>
<<set $equipped.equipment = _item>>
<<set $inventory.equipment.pushUnique(_item)>>
<<set $weaponsRack.equipment.deleteAll(_item)>>
<<set $weaponsRack.equipment.pushUnique(_replaceEquip)>>
<<if $weaponsRack.equipment.includes("Empty")>><<run $weaponsRack.equipment.deleteAll("Empty")>><</if>>
<<replace "#ui-dialog-body">><<include "prepareExplore">><</replace>><<updatebar>><<radCalc>>
<</link>>
\<</capture>>
\<<if $weaponsRack.equipment.last() !== _item>>, <</if>>
\<</for>>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Ready (1:00)<br>">><<addmins 60>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "hubMenu">><<run Dialog.close()>><</link>><</if>>
<<if $inventory.head.length gte 1 || $inventory.center.length gte 1 || $inventory.foot.length gte 1>><<link "Remove everything">><<removeGearE>><</link>><<else>>You're not currently wearing anything. <<link "Go anyways? (1:00)">><<addmins 60>><<runAudio 'audio/door.mp3'>><<set $steppedOutside to true>><<goto "hubMenu">><<run Dialog.close()>><</link>><</if>>
<<link "Go back">><<redo "gear">><<run Dialog.close()>><</link>><<include "hubImage">>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $hubs>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
You haven't logged any locations.
<<else>>
You've logged the following hubs:
<<for _name range _visited_locations>>
<br>
<<link [[$hubs[_name].name + " (0:01)"|_name]]>><<addmins 1>><</link>>
<</for>>
<</if>>
<</nobr>>
<<if $player.ap gte 1>><<include "hubExplore">><</if>><<if $player.ap gte 2>><<link [[Explore the wastelands (1:00)|hubMenu]]>><<addmins 60>><</link>><<else>>You should get back. The @@.shudder;<span style="color:DarkOliveGreen">toxins</span>@@ are starting to get to you.<</if>>
<<link [[Go back home (0:01)|mainHouse]]>><<addmins 1>><<runAudio 'audio/door.mp3'>><</link>>
<<setAP -1>><<nobr>>
<<switch _event>>
<<case 'watertower'>>
<<switch random(1,5)>>
<<case 1>>You've discovered the old water tower - its rusted framework still rising stubbornly above the decaying skyline. The metal groans under the wind, and the ground below is littered with broken pipes and scattered feathers. Despite the years, it remains intact - watchful, waiting, useful.'
<<case 2>>The water tower emerges from the fog like a forgotten sentinel. Its steel legs are rusted through, and birds nest in the hollow drum above. Graffiti from a dozen lost decades clings to the base, barely visible beneath grime and moss. It's a relic of a time when water was pressurized and plentiful - now it's just high ground with a memory.
<<case 3>>Rising from a collapsed district of rooftops and concrete, the water tower offers a rare advantage - height. From its peak, you can scout for movement, trace old roads, and maybe even glimpse lights in the distance. Climbing it will be risky, but the view might be worth it... and who knows what's been left behind up there.
<<case 4>>The tower stands unnaturally intact, its rivets untouched by the corrosion that's devoured everything else. Scorched symbols are burned into the supports, and an old cable still stretches from the tank to somewhere underground. You've found the water tower - but it feels like the tower found you first.
<<case 5>>You found the water tower - or what's left of it. Charred bones lie beneath the ladder, and something oily drips from the tank. A gust of wind rattles the metal, but there's no breeze. The silence here isn't peaceful - it's hollow, like the place is holding its breath.
<</switch>><<set $hubs.waterTower.hasVisited to true>><br>[[Enter|waterTower]]<br>
<<case 'relayzone'>>
<<switch random(1,5)>>
<<case 1>>You arrive at the Old Relay Zone - a wide, open stretch littered with decaying satellite dishes and half-fallen towers. Cables snake through the cracked asphalt like dried veins, and birds nest in the husks of old relay stations. It's quiet here, but not dead - some lights still blink. Faint, persistent.
<<case 2>>A graveyard of signals. The Old Relay Zone stretch for miles, filled with leaning dishes and the distant hum of forgotten broadcasts. Broken screens flicker with static in the dust, and the metal groans softly in the wind. The air smells of ozone and decay. Something here remembers.
<<case 3>>You crest the hill and see them - dozens of antennas, half-buried in ash and brush. Some still stand. One is humming. This could be a chance to tap into the old grid, reroute power, or intercept whatever's still being transmitted out here. Or in.
<<case 4>>The Old Relay Zone weren't built in any known pattern. Their arrangement forms a design visible only from above - if you knew how to interpret it. Every dish points somewhere slightly off, as if tracking a signal not of this earth. You've found them now. You can't help but feel like you were meant to.
<<case 5>>You step into the Old Relay Zone and feel your skin prickle. The static in the air is heavy - almost wet. A cracked speaker on a fallen tower repeats your name, over and over, in a garbled voice that shouldn't exist. You're not alone here. Worse, you might not be the first.
<</switch>><<set $hubs.relayZone.hasVisited to true>><br>[[Enter|relayZone]]<br>
<<case 'chapel'>>
<<switch random(1,5)>>
<<case 1>>You've discovered the Chapel of Ash - a blackened skeleton of stone and wood, half-swallowed by weeds. The bell tower has long since collapsed, and the nave is open to the sky. Only soot remains where icons once stood. Still, the layout suggests this place was once a safe gathering point... perhaps it could be again.
<<case 2>>The ruined chapel looms out of the dust, charred and half-consumed by time. Stained-glass shards glint like teeth in the scorched earth, and the smell of old incense still lingers beneath the soot. No voices echo here anymore - only the wind howling through hollow pews and brittle rafters.
<<case 3>>You spot the chapel from afar, its silhouette twisted but upright. The roof is gone, exposing scorched beams, but the crypt entrance might still be intact. There's evidence of recent activity - scratched markings near the altar, and makeshift bedding in a side chamber. Someone's been here. Or maybe still is.
<<case 4>>You found the Chapel of Ash - a sanctum reduced to bones and cinders. Its altar is covered in melted wax and scorched scripture, but a symbol carved into the stone floor remains untouched. Rumors say this place was never truly holy... and that something beneath it still listens when the prayers stop.
<<case 5>>The chapel is little more than a ruin - but something in you recoils as you cross the threshold. The floor is black with soot, and a dozen half-burned effigies lean against the walls. You swear you hear whispering, though no one's around. Whatever faith once lingered here was buried in fire - and replaced by something else.
<</switch>><<set $hubs.chapel.hasVisited to true>><br>[[Enter|chapel]]<br>
<<case 'scrap'>>
<<switch random(1,10)>>
<<case 1>>You explore the wastelands but end up finding no places of interest. On your travels, you stumble upon common scrap on the ground. Might as well bring it along.
<<case 2>>You scour the desolate stretch for anything worth noting, but the horizon offers nothing new. Amid the rubble, you kick loose a tangle of wire and a few rusted bolts. Scrap, but scrap still has value.
<<case 3>>The wasteland stretches on without surprise. No new shelters, no signals, just silence. Still, you manage to dig up a few old components from a sunken heap of debris.
<<case 4>>Your search leads nowhere, just dust, distant birds, and the wind through bones. But near an overturned truck, you spot a cracked storage box. Inside: some broken parts. Not much, but better than empty hands.
<<case 5>>Nothing rises on the horizon - no towers, no trails, no signs of life. But by a collapsed fence, you find a scatter of salvageable junk half-buried in the dirt. You take what you can.
<<case 6>>You wander past heaps of rubble and dry, dead weeds. A glint catches your eye - just a shard of glass, but digging nearby turns up a strip of wiring and a dented tin. Small finds, but worth keeping.
<<case 7>>The land is still and empty, but under a fallen sheet of corrugated metal, you uncover a bundle of weather-worn rags wrapped around a few rusted tools. They'll fetch something in trade.
<<case 8>>A stretch of cracked roadway yields nothing but dust until you notice a patch where the dirt has been disturbed. You pry it open to reveal a single plastic crate of useless junk... and a small coil of copper wire.
<<case 9>>Your path winds through a maze of half-collapsed walls and shattered concrete. There's nothing living here, but in the shadow of a leaning pillar you find an old satchel filled with bent nails and warped screws.
<<case 10>>You nearly give up the search when a stray wind rattles something at your feet - a warped, perforated sheet of aluminum. Turning it over reveals a handful of washers and bolts clinging to its rusted edges.
<</switch>>
<br><br>
<<scavengeExplore>><<if $companion.name isnot "">><<compScavenge>><</if>><</switch>><br><</nobr>><<nobr>><<set _events = Array.from({length: 8}, () => "scrap")>>
<<set _unvisited = Object.entries($hubs)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<set _event = _events.concat(_unvisited).random().toLowerCase()>>
<<switch _event>>
<<case 'watertower'>>[img[img/explore/waterTower.webp]]
<<case 'relayzone'>>[img[img/explore/relayzone.webp]]
<<case 'chapel'>>[img[img/explore/chapelOutside.webp]]
<<case 'scrap'>>
<<switch random(1,5)>>
<<case 1>>[img[img/explore/scrap1.webp]]
<<case 2>>[img[img/explore/scrap2.webp]]
<<case 3>>[img[img/explore/scrap3.webp]]
<<case 4>>[img[img/explore/scrap4.webp]]
<<case 5>>[img[img/explore/scrap5.webp]]
<</switch>>
<</switch>><</nobr>>[img[img/explore/waterTower.webp]]
<<switch random(1,5)>>
<<case 1>>You clamber up the rusted ladder of the water tower. From here you can see the shattered skyline - and two points of interest.
<<case 2>>From the swaying top of the water tower, the world unfurls in broken silence. Rust clings to your hands, and in the distance, two strange silhouettes rise from the ruin.
<<case 3>>You scale the decaying tower, one creaking rung at a time. The view is bleak - ash-gray streets and skeletal buildings - but two distant sites shimmer with the faintest spark of activity.
<<case 4>>The climb is treacherous, but you reach the top. Wind screams through the structure's bones, and far across the ruins, two flickers of movement catch your eye.
<<case 5>>Perched atop the ancient tower, you scan the remains of a drowned world. Amid the rust and ruin, two destinations stand apart - still breathing, still dangerous.
<</switch>><<do tag "tower">><<if $hubs.waterTower.exp isnot 100>><<if $hubs.waterTower.exp gte 0 && $hubs.waterTower.exp lte 24>><br><<= $hubs.waterTower.tier1>><<elseif $hubs.waterTower.exp gte 25 && $hubs.waterTower.exp lte 49>><br><<= $hubs.waterTower.tier2>><<elseif $hubs.waterTower.exp gte 50 && $hubs.waterTower.exp lte 74>><br><<= $hubs.waterTower.tier3>><<elseif $hubs.waterTower.exp gte 75 && $hubs.waterTower.exp lt 100>><br><<= $hubs.waterTower.tier4>><</if>>
<<showmeter 'tower' `$hubs.waterTower.exp / 100`>>
<<if $hubs.waterTower.explored lt 5>><<link "Explore (0:40)">><<addmins 40>><<set $hubs.waterTower.explored += 1>><<set $hubs.waterTower.exp += 5>><<updatemeter 'tower' `$hubs.waterTower.exp / 100`>><<redo "tower">><</link>><<else>>@@.red;Explore@@ <em>(You should take a break.)</em><</if>><<else>><<if $hubs.waterTower.exp gte 100 && visited("waterTowerInside") is 0>><br><<= $hubs.waterTower.tier5>><br><</if>><<link [[Enter the water tower (0:01)|waterTowerInside]]>><<addmins 1>><</link>><</if>><</do>>
Far-away lands:
<<if $locations.hospital.hasVisited is false>><<link [[$locations.hospital.name + " (0:43)"|hospitalInitVisit]]>><<addmins 43>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.hospital.name + " (0:43)"|hospitalInside]]>><<addmins 43>><</link>><</if>>
<<if $locations.landfill.hasVisited is false>><<link [[$locations.landfill.name + " (0:29)"|landfillInitVisit]]>><<addmins 29>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.landfill.name + " (0:29)"|landfill]]>><<addmins 29>><</link>><</if>>
<<if $locations.farm.hasVisited is false>><<link [[$locations.farm.name + " (0:36)"|farmInitVisit]]>><<addmins 36>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.farm.name + " (0:29)"|farm]]>><<addmins 29>><</link>><</if>>
[[Climb back down|hubMenu]][img[img/explore/insideWaterTower.webp]]
You enter the water tower. The eerie feeling of forgotten metal fills your mind as the silent creaks of the tower fills the air. The water tower stands tall, somehow resembling what once was. Civilization.
It seems like someone has set up camp here, a long time ago. Old, empty tin cans and half-rotten bedrolls litter the floor, and christmas lights hang still on the rusted ladder.
There's unopened water bottles lying around here. {{$hubs.waterTower.water}} to be precise.
<<do tag "water">><<if $hubs.waterTower.water gte 1>><<link "Grab one">><<set $inventory.water_bottle += 1>><<set $hubs.waterTower.water -= 1>><<redo "water">><</link>><<if $hubs.waterTower.water gt 1>><br><<link "Grab them all">><<set $inventory.water_bottle += $hubs.waterTower.water>><<set $hubs.waterTower.water -= $hubs.waterTower.water>><<redo "water">><</link>><</if>><<else>>There's no water left...<</if>><</do>>
<<link [[Exit (0:01)|waterTower]]>><<addmins 1>><</link>>[img[img/explore/relayzone.webp]]
<<switch random(1,5)>>
<<case 1>>You step between the crooked spires of the old relay zone, where rusted dishes tilt toward a dead sky. The air hums faintly with residual static - something's still listening. In the distance, three sites pulse with faint life.
<<case 2>>The relay zone rises around you like a graveyard of forgotten signals. Towers lean as if whispering secrets to one another, and tangled wires twitch in the wind. Static clings to your skin. Ahead, three paths flicker with fractured energy.
<<case 3>>You enter the antenna field as the sky dulls to iron. Bent dishes creak overhead, scanning for signals long gone. A voice - garbled and impossible - crackles through a broken speaker. Somewhere beyond, three remnants of purpose still glow faintly.
<<case 4>>Among the rusted wreckage of communication towers, you move carefully - stepping over snapped cables and scorched terminals. Lightning once lived here, but now only echoes remain. Still, three beacons pulse in the distance like memories trying to be remembered.
<<case 5>>The spires of the relay zone pierce the gloom like the ribs of some buried machine. You feel the low thrum of power in the ground beneath your boots - faint, but deliberate. Far out past the wreckage, three places call to you with signals you can almost understand.
<</switch>><<do tag "relay">><<if $hubs.relayZone.exp isnot 100>><<if $hubs.relayZone.exp gte 0 && $hubs.relayZone.exp lte 24>><br><<= $hubs.relayZone.tier1>><<elseif $hubs.relayZone.exp gte 25 && $hubs.relayZone.exp lte 49>><br><<= $hubs.relayZone.tier2>><<elseif $hubs.relayZone.exp gte 50 && $hubs.relayZone.exp lte 74>><br><<= $hubs.relayZone.tier3>><<elseif $hubs.relayZone.exp gte 75 && $hubs.relayZone.exp lt 100>><br><<= $hubs.relayZone.tier4>><</if>>
<<showmeter 'relay' `$hubs.relayZone.exp / 100`>>
<<if $hubs.relayZone.explored lt 5>><<link "Explore (0:40)">><<addmins 40>><<set $hubs.relayZone.explored += 1>><<set $hubs.relayZone.exp += 5>><<updatemeter 'relay' `$hubs.relayZone.exp / 100`>><<redo "relay">><</link>><<else>>@@.red;Explore@@ <em>(You should take a break.)</em><</if>><<else>><<if $hubs.relayZone.exp gte 100 && visited("relayZoneInside") is 0>><br><<= $hubs.relayZone.tier5>><br><</if>><<link [[Enter the control room (0:01)|relayZoneInside]]>><<addmins 1>><</link>><</if>><</do>>
Far-away lands:
<<if $locations.casino.hasVisited is false>><<link [[$locations.casino.name + " (0:43)"|casinoInitVisit]]>><<addmins 43>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.casino.name + " (0:43)"|casino]]>><<addmins 43>><</link>><</if>>
<<if $locations.datacentre.hasVisited is false>><<link [[$locations.datacentre.name + " (0:48)"|datacentreInitVisit]]>><<addmins 48>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.datacentre.name + " (0:48)"|datacentre]]>><<addmins 48>><</link>><<if $matthew.isRes is false>> - <em>(Matthew is here.)</em><</if>><</if>>
<<if $locations.bioresearch.hasVisited is false>><<link [[$locations.bioresearch.name + " (0:34)"|bioresearchInitVisit]]>><<addmins 34>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.bioresearch.name + " (0:34)"|bioresearch]]>><<addmins 34>><</link>><</if>>
<<if $locations.freightyard.hasVisited is false>><<link [[$locations.freightyard.name + " (0:34)"|freightYardInitVisit]]>><<addmins 27>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.freightyard.name + " (0:34)"|freightYard]]>><<addmins 27>><</link>><</if>>
[[Leave the area|hubMenu]]You enter the control room of the old relay zone. A half-full ashtray fills the room with the smell of burnt tobacco and ash. A couple of crushed beer cans litter the corner, and a broken chair stands infront of the control panel.<<silent>> <<if visited() is 1>><<set $relayBook to true, $radio to false>><</if>> <</silent>><<if $relayBook is true>> Looks like there's an @@.em;old book@@ here.<br><<linkreplace "Pick up (0:01)">><<grantBook>><<addmins 1>><<unset $relayBook>><</linkreplace>><br><br><<else>> The dusty outline of the old book you found here lies intact. <</if>><<if $radio is false>>There also seems to be an @@.em;old radio@@. It may still work. You should consider taking this home.<br><<linkreplace "Bring it home (0:20)">>You fasten the radio to your back.<<addmins 20>><<set $radio to true>><</linkreplace>><<else>>The desk seems so empty now without the radio. Nonetheless, giving old items new life is refreshing.<</if>>
<<link [[Exit (0:01)|relayZone]]>><<addmins 1>><</link>>[img[img/explore/chapel.webp]]
<<switch random(1,5)>>
<<case 1>>You push open the charred doors of the ruined chapel. Ash coats the pews like snow, and candle stubs melt into the cracked altar. From this desecrated place, three forsaken paths call to you.
<<case 2>>The scorched chapel groans as you enter. Smoke-stained murals flake from the walls, and the altar is warped with heat. Beyond the hollow sanctuary, three routes lie shrouded in silence.
<<case 3>>Inside the chapel, blackened pews sit beneath a gaping hole in the roof. Light slants through falling dust. In this ruined sanctuary, three directions remain open to the faithful - or the desperate.
<<case 4>>You step across burnt stone into the ruin of a holy place. Ash stirs with your footsteps. Something was buried here - maybe still is. From this ruined heart, three paths spread like fractures.
<<case 5>>The doors creak closed behind you. Wax drips from the altar like blood, and scorched scripture clings to the walls. Amid the shadows, three choices linger, waiting to be made.
<</switch>><<do tag "chapel">><<if $hubs.chapel.exp isnot 100>><<if $hubs.chapel.exp gte 0 && $hubs.chapel.exp lte 24>><br><<= $hubs.chapel.tier1>><<elseif $hubs.chapel.exp gte 25 && $hubs.chapel.exp lte 49>><br><<= $hubs.chapel.tier2>><<elseif $hubs.chapel.exp gte 50 && $hubs.chapel.exp lte 74>><br><<= $hubs.chapel.tier3>><<elseif $hubs.chapel.exp gte 75 && $hubs.chapel.exp lt 100>><br><<= $hubs.chapel.tier4>><</if>>
<<showmeter 'chapel' `$hubs.chapel.exp / 100`>>
<<if $hubs.chapel.explored lt 5>><<link "Explore (0:40)">><<addmins 40>><<set $hubs.chapel.explored += 1>><<set $hubs.chapel.exp += 5>><<updatemeter 'chapel' `$hubs.chapel.exp / 100`>><<redo "chapel">><</link>><<else>>@@.red;Explore@@ <em>(You should take a break.)</em><</if>><<else>><<if $hubs.chapel.exp gte 100 && visited("chapelInside") is 0>><br><<= $hubs.chapel.tier5>><br><</if>><<link [[Enter the chambers (0:01)|chapelInside]]>><<addmins 1>><</link>><</if>><</do>>
Far-away lands:
<<if $locations.shopping_mall.hasVisited is false>><<link [[$locations.shopping_mall.name + " (0:43)"|shopping_mallInitVisit]]>><<addmins 43>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.shopping_mall.name + " (0:43)"|shopping_mall]]>><<addmins 43>><</link>><</if>>
<<if $locations.metro.hasVisited is false>><<link [[$locations.metro.name + " (0:48)"|metroInitVisit]]>><<addmins 48>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.metro.name + " (0:48)"|metro]]>><<addmins 48>><</link>><</if>>
<<if $locations.hydro.hasVisited is false>><<link [[$locations.hydro.name + " (0:34)"|hydroInitVisit]]>><<addmins 34>><</link>> - <em>(You have yet to visit this location.)</em><<else>><<link [[$locations.hydro.name + " (0:34)"|hydro]]>><<addmins 34>><</link>><</if>>
[[Go back outside|hubMenu]]You enter the priests chambers. The air is thick with incense and rot. On the blackened bed lies a mummified priest, hands clasped around a charred leather-bound journal, sealed with melted wax. The smell of ash is almost sweet here. It's too quiet.
<<if visited() is 1>><<set $journal to 0>><</if>><<if $journal is 0>>A journal stands bolted to a lectern.
<<linkreplace "Read the journal (0:20)">><<addmins 20>><<set $journal += 1>>You open the journal. The pages crackle like dead leaves. Most are smudged, burned, or stuck together. But some entries remain legible - scratched in ink, blood, or both.
<em><span style="color:lightyellow">
> "Day 3 after the Ashfall. The congregation has not returned. The bells are silent, and the wind carries no birdsong. I speak the rites, but they fall flat against the soot-stained stone."
> "Day 6. Brother Kael locked himself in the confessional. Said he could still hear them whispering through the vents. He tore his tongue out before I could open the door."
> "Day 9. I burned the last of the scripture. Not out of heresy, but to keep warm. My hands shake. My faith shakes harder."
</span></em>You flip further, past pages melted into one another. Deeper in the book, the script grows erratic. Longer lines, sharper angles.<em><span style="color:lightyellow">
> "Day... ? The sky turned red last night. Not with flame. With something worse. I saw them outside. Shapes with no faces. They stared. They waited. I did not answer the door."
> "They told me what to do. I see it now. The altar is not a place of worship, but a gate. The Rite of Ember must be completed. We must give the ash back to the flame."
</span></em>The final page is smeared with dark fingerprints.<em><span style="color:lightyellow">
> "Whoever finds this: bury me in salt. Do not dream in this room. Do not listen when the statue weeps. Leave this place barren."
</span></em>The air feels heavier now. Something has shifted in the silence.<</linkreplace>><<elseif $journal is 1>>A journal stands bolted to a lectern.
<<linkreplace "Read the journal (0:20)">><<addmins 5>><<set $journal += 1>><span id="scepter">You once again open the journal to read. As you turn the pages, the <b>lectern groans and shifts beneath your weight</b>.
With a sudden crack, the rotten wood gives way, <b>collapsing in a plume of ash and splinters</b>.
Beneath the wreckage lies something unexpected:
<b><span style="color:#D4AF37">@@.glow-scepter;A holy scepter@@</span></b>, half-buried in dust, still glinting faintly with etched gold and scorched iconography.
<<link "Take Scepter">><<replace "#scepter">>You carefully retrieve the scepter, its metal warm to the touch.<<set $inventory.secondary.pushUnique("scepter")>><<unset $journal>><</replace>><</link>></span><</linkreplace>><<else>><br>The now broken lectern lies in ruin. Shards of wood and pages are scattered across the stone floor.
Whatever it once held is long gone.<</if>>
<<link [[Exit (0:01)|chapel]]>><<addmins 1>><</link>>[img[img/explore/hospitalOutside.webp]]
<<set $locations.hospital.hasVisited to true>>
You arrive at Mercyfall Sanitarium. There should be a good amount of supplies here... Hopefully it hasn't been raided already. It has been a while since the first outbreak afterall.
<<link [[Enter (0:01)|hospital]]>><<addmins 1>><</link>>[img[img/explore/landfillOutside.webp]]
<<set $locations.landfill.hasVisited to true>>
You descend into the gaping rot-basin of Mackey's Dump. Wind whips across endless mountains of refuse, each one steaming and shifting under its own weight. Rusted signs jut like bones from chemical sludge. The air tastes like old batteries and wet wire.
In the gloom ahead, you see signs of life - or what passes for it.
<<link [[Enter (0:01)|landfill]]>><<addmins 1>><</link>>[img[img/explore/farmOutside.webp]]
<<set $locations.farm.hasVisited to true>>
You crest a low hill and the farm comes into view-what's left of it, anyway. The fields lie in uneven strips of black soil, scarred by old plow marks and half-choked with weeds that sway like they remember better seasons.
A splintered windmill turns lazily in the wind, its creak carrying over the empty expanse. The farmhouse slouches under a collapsed roof, its windows dull and watching. Somewhere far off, a crow calls once, then is silent.
<<link [[Enter (0:01)|farm]]>><<addmins 1>><</link>>[img[img/explore/casinoOutside.webp]]
You arrive at the Golden Gate Casino.<<set $locations.casino.hasVisited to true>> There should be some supplies here... Hopefully it hasn't been raided already. Perhaps you can find some weaponry. Money is useless now anyway.
<<link [[Enter (0:01)|casino]]>><<addmins 1>><</link>>[img[img/explore/datacentre.webp]]
<<set $locations.datacentre.hasVisited to true>>
You arrive at the data center. "<b>$locations.datacentre.name</b>" is plastered on the wall. This must be a tech factory. There should definitely be some technological advancements for you in here, if you can make your way inside.
<<link [[Enter (0:01)|datacentre]]>><<addmins 1>><</link>>[img[img/explore/bioresearch.webp]]
<<set $locations.bioresearch.hasVisited to true>>
You arrive at the research facility. I'd hold off with going in there if I were you. But I'm not. There could be resources or clothing for you to fend off oncoming radiation.
<<link [[Enter (0:01)|bioresearch]]>><<addmins 1>><</link>>[img[img/explore/mallOutside.webp]]
You arrive at Shop Amok.<<set $locations.shopping_mall.hasVisited to true>> There should be some supplies here... Hopefully it hasn't been raided already. Perhaps you can find some food and water. Maybe some new gear?
<<link [[Enter (0:01)|shopping_mall]]>><<addmins 1>><</link>>[img[img/explore/metro.webp]]
You arrive at the underground metro.<<set $locations.metro.hasVisited to true>> The big sign reads "<b>$locations.metro.name</b>".
It's possible there's a few resources down there, but it's a slim chance.
<<link [[Enter (0:01)|metro]]>><<addmins 1>><</link>>[img[img/explore/hydro.webp]]
<<set $locations.hydro.hasVisited to true>>
You arrive at a large hydro plant. Getting access to this place could be a viable opportunity.
<<link [[Enter (0:01)|hydro]]>><<addmins 1>><</link>>[img[img/explore/hydro.webp]]
<<set $locations.freightyard.hasVisited to true>>
You arrive at the freight yard. There could be some supplies here... Hopefully it hasn't been raided already.
<<link [[Enter (0:01)|freightYard]]>><<addmins 1>><</link>><<if visited() is 1>><<silent>>
<<set $bioLoc = {
directorsOfficeBIO: { name: "Director's Office", hasVisited: false },
escapeTunnelsBIO: { name: "Escape Tunnels", hasVisited: false, isLocked: true },
centralAIControlBIO: { name: "Central AI Control Unit", hasVisited: false, isLocked: true },
geneticModificationBIO: { name: "Genetics Modification Lab", hasVisited: false },
testingArenaBIO: { name: "Testing Arena", hasVisited: false, isLocked: true },
wasteDisposalBIO: { name: "Waste Disposal", hasVisited: false, isLocked: true }
}>>
<<set $lockRotation to "LOCKED">>
<<set $bioExp to 0>>
<<set $primStockWaste = ["afanasiev"]>>
<<set $centerStockArena = ["hazmatsuit"]>>
<<set _amountBan = random(0,10), $bandageAmountBIO to _amountBan>>
<<set _amountEC = random(0,10), $electronicsComponentsBIO to _amountEC>>
<<set _amountCir = random(0,3), $circuitAmountBIO to _amountCir>>
<</silent>><</if>>\
You reach the entrance to the biochemical research centre. It's closed off with fences and police tape. "@@.neg;Ѹ҆казъ: Зона караѳинъ: Входъ гражданамъ заприщѣнъ.@@" is written all over signs on the fences. The writing is accompanied by a radiation symbol. It may be too dangerous to enter here for the time being.
@@.em;You should see if there's other places you can explore before venturing back here.@@<<if $rad gte 20>><br>[[Enter anyway|bioHall]]<</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>You stand inside the old Biochemical Research Facility. The amount of horrors that must of lied in here... There's bodies on the floor. They look old... <span style="color:crimson">I wonder how long they've been lying here.</span>
<<if $lockRotation is "LOCKED">><br><span style="color:red">_LOCKDOWN_ | _LOCKDOWN_ | _LOCKDOWN_</span><br><</if>>
You've explored $bioExp% of the Biochemical Research Facility.<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>><<if $bioExp lt 100>><br>[[Explore the facility|bioExplore]]<<else>> There's nothing more to explore.<</if>>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $bioLoc>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
You haven't found any locations.
<<else>>
You've discovered the following locations:
<<for _name range _visited_locations>>
<br>
<<link $bioLoc[_name].name _name>><</link>>
<</for>>
<</if>>
<</nobr>><<else>><br>It's turning dark out. You should hurry home.<</if>>
[[Go back outside|hubMenu]]
<<link [[Go back home|mainHouse]]>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/hospital/hospitalInside.webp]]
You explore the hospital. Rummaging the hospital you stumble upon <<include "bioExploreEvents">>
[[Go back to the entrance|bioHall]]<<nobr>><<set _unvisited = Object.entries($bioLoc)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<if _unvisited.length > 0>>
<<set _event = _unvisited.random()>>
<</if>><<AdvancePeriod>><</nobr>><<switch _event>>
<<case 'directorsOfficeBIO'>> the Director's Office. There could be some valuable information for you in here. And perhaps a terminal.<<set $bioLoc.directorsOfficeBIO.hasVisited to true, $bioExp += 27>>
<<case 'escapeTunnelsBIO'>> the escape tunnels. Maybe you can find some tools here. It's worth it to take a look. <<set $bioLoc.escapeTunnelsBIO.hasVisited to true, $bioExp += 14>>
<<case 'centralAIControlBIO'>> Central AI Control Unit. There's usually a lot of computer equipment in here. Maybe there's some circuit boards for you. <<set $bioLoc.centralAIControlBIO.hasVisited to true, $bioExp += 3>>
<<case 'geneticModificationBIO'>> the Genetics Modification Lab. Maybe there's some tools or equipment in here. <<set $bioLoc.geneticModificationBIO.hasVisited to true, $bioExp += 18>>
<<case 'testingArenaBIO'>> the Testing Arena. Someone has written over the doors "остерегаться". Who did this? <<set $bioLoc.testingArenaBIO.hasVisited to true, $bioExp += 20>>
<<case 'wasteDisposalBIO'>> the waste disposal. It can't be anything but pure radiation down here. <<set $bioLoc.wasteDisposalBIO.hasVisited to true, $bioExp += 18>>
<</switch>>You enter the Director's Office. It's strangely clean.
There's a desk with a nice chair. A terminal is sitting on it. Looks like a Commodore.
Other than this, the office seems rather bland. The plants are wiltered and almost grey looking. Life is void.
[[Enter terminal|directorsTerminal]]<div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
[[Messages|directorsMessages]]
[[Testing Arena|directorsArena]]
[[Central AI|directorsAI]]
[[Waste Disposal|directorsWaste]]
[[Security|directorsSecurity]]
[[Close terminal|directorsOfficeBIO]]
</div>
[[Leave the office|bioHall]]<div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
[[Urgent! Proceed incineration|directorIncinerate]]
[[Urgent! This is not good...|directorSouth]]
[[Ancient virus|directorVirus]]
[[Urgent! Contained permafrost|directorFrost]]
[[Hello, Director!|directorMessageSarah]]
[[Exit messages|directorsTerminal]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Subject: Urgent! Proceed Incineration
To: Morrison
Dear Director,
The situation at Sector Epsilon has deteriorated rapidly. The specimen labeled "X-17" has bypassed every containment protocol we implemented, showing signs of accelerated mutation and an unprecedented resistance to sterilization methods.
We've exhausted all viable countermeasures within the lab, and the contamination risk is now critical. Per emergency protocol, I am requesting immediate authorization to proceed with incineration of all exposed materials, including the lab.
Time is of the essence. Please confirm approval at once.
Respectfully,
Dr. Adrian Holt
Lead Containment Specialist, Sector Epsilon
[[Close email|directorsMessages]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Subject: Urgent! This is Not Good...
To: Morrison
Director,
We have a major issue at Sector Epsilon. During a transfer procedure involving specimen "X-17," there was an unexpected breach in the isolation chamber. The containment field dropped momentarily, resulting in brief exposure to two of our personnel.
Both individuals have been placed in isolation, but they've begun exhibiting severe symptoms, including high fever and erratic neurological behavior. Internal quarantine has been initiated, but the systems here were not designed for this level of containment.
I strongly advise dispatching emergency containment reinforcements to Sector Epsilon immediately. This cannot escalate further.
Awaiting your instructions,
Dr. Adrian Holt
[[Close email|directorsMessages]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Subject: Ancient Virus
To: Morrison
Director,
We've completed the initial sequencing of specimen "X-17," the organism extracted from the Epsilon permafrost dig site. Preliminary analysis suggests it is an ancient viral entity with a protein structure that defies known classifications.
The virus displays remarkable resilience and adaptability, and early in vitro tests indicate it has an unusually high rate of host cell invasion. While there's no immediate evidence of airborne transmission, we cannot rule it out given the pathogen's apparent adaptability.
We need immediate Level 5 containment upgrades to continue our study safely. Please advise.
Sincerely,
Dr. Adrian Holt
[[Close email|directorsMessages]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Subject: Urgent! Contained Permafrost
To: Morrison
Director,
The permafrost sample from Site Epsilon has proven far more volatile than anticipated. Thawing has triggered the reactivation of biological entities, with specimen "X-17" emerging as the most concerning. Its cellular structure suggests it has evolved to remain dormant under extreme conditions for tens of thousands of years, only to become highly active when reintroduced to modern environments.
We've enacted full lockdown of the facility, but our containment systems are stretched thin. The integrity of the lab is under threat, and any lapse could result in unpredictable consequences.
I am requesting immediate resources and expert teams to fortify containment at Sector Epsilon. Please prioritize this matter urgently.
Regards,
Dr. Adrian Holt
[[Close email|directorsMessages]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Subject: Hello, Director!
To: Morrison
Dear Director,
I hope this message finds you well. My name is Sarah Morrison, and I recently joined Sector Epsilon as a junior research scientist. It's been an incredible opportunity to work alongside such brilliant minds on cutting-edge projects.
With recent developments here, I've been closely observing how leadership navigates challenges, and I would like to contribute more actively to our efforts. I specialize in virology and genetic analysis, and I believe I can offer valuable insights to support the team as we navigate these ongoing challenges.
If there's an opportunity for me to take on more responsibility, I'd love to discuss how I can help. Thank you for your time, and I look forward to hearing your thoughts.
Best regards,
Sarah Morrison
Junior Research Scientist, Sector Epsilon
[[Close email|directorsMessages]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Central AI Control Unit STATUS:
Central Processing Unit...............OK!
AI CORE...............................OVERDRIVE!
Cooling systems.......................OK!
Garbage Collection....................OK!
[[Exit AI status|directorsTerminal]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
The arena has been shut down after an incident with the pathogen named as "X-17". This caused multiple casualties, and even more injuries with research and scientific faculty.
We need to keep an eye on Sarah Morrison. She's been badly affected by the pathogen, however we must do whatever we can to keep this as "contained" as possible. This can not get back to us. To me. I will depart from here, and reside in a safe location until things turn a little better.
Director Morrison.
[[Exit Arena|directorsTerminal]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
To manually override AI lockdown procedure, press "CHANGE LOCK ROTATION".
{{$lockRotation}}.
<<link "Change lock rotation">><<if $lockRotation is "LOCKED">><<set $lockRotation to "UNLOCKED">><<set $bioLoc.escapeTunnelsBIO.isLocked to false>><<set $bioLoc.centralAIControlBIO.isLocked to false>><<set $bioLoc.testingArenaBIO.isLocked to false>><<set $bioLoc.wasteDisposalBIO.isLocked to false>><<else>><<set $lockRotation to "LOCKED">><<set $bioLoc.escapeTunnelsBIO.isLocked to true>><<set $bioLoc.centralAIControlBIO.isLocked to true>><<set $bioLoc.testingArenaBIO.isLocked to true>><<set $bioLoc.wasteDisposalBIO.isLocked to true>><</if>><</link>>
[[Exit Security|directorsTerminal]]
[[Close terminal|directorsOfficeBIO]]
</div><div class="terminal">
<h1>$locations.bioresearch.name Director's Terminal</h1>
Waste Disposal & Waste Incineration STATUS:
Waste Disposal....................OK!
Waste Incineration................OFFLINE!
Waste Containment.................OFFLINE!
Waste Management..................OK!
[[Exit waste status|directorsTerminal]]
[[Close terminal|directorsOfficeBIO]]
</div><<if $bioLoc.escapeTunnelsBIO.isLocked is true>>You approach the escape tunnels. There seems to be a large door blocking everything off. It's some type of hazard protection door.
You should see if there's somewhere you can override the locks.<<else>>You enter the escape tunnels. There's not much to see here but large corridors and tunnelways. The exit is clearly marked, and everything else leads to it anyways. This is simply a different way out.<</if>>
[[Leave the tunnels|bioHall]]
[[Go outside|hubMenu]]<<if $bioLoc.centralAIControlBIO.isLocked is true>>You approach the Central AI Control Unit. There seems to be a large door blocking everything off. It's some type of hazard protection door.
You should see if there's somewhere you can override the locks.<<else>>You step into the Central AI Control Unit. There seems to be some electronics components here. This place is... haunting. It feels like you're being watched by something... <i>someone...</i>
<<do tag "afanasiev">><<if $primStockWaste.length gte 1>>There seems to be a weapon here though. You should grab it.
<<link "Grab it">><<set $inventory.primary to $inventory.primary.concat($primStockWaste)>><<run $primStockWaste.deleteAll("afanasiev")>><<redo "afanasiev">><</link>><<else>>You've already taken the weapon that was lying here.
You notice some boxes with electrical components. There's around {{$electronicsComponentsBIO}}. You could take the entire supply or take a portion of it.
<<do tag "ec">><<if $electronicsComponentsBIO gte 1>><<link "Grab one">><<set $inventory.electronics_components += 1>><<set $electronicsComponentsBIO -= 1>><<redo "ec">><</link>>
<<link "Grab them all">><<set $inventory.electronics_components += $electronicsComponentsBIO>><<set $electronicsComponentsBIO -= $electronicsComponentsBIO>><<redo "ec">><</link>><<else>>There's no electronics components left...<</if>><</do>><</if>><</do>><</if>>
[[Leave the AI Unit|bioHall]]
[[Go outside|hubMenu]]You step into the Genetics Modification Lab. There seems to be some circuit boards here.
You notice some boxes with circuit boards. There's around {{$circuitAmountBIO}}. You could take the entire supply or take a portion of it.
<<do tag "cb">><<if $circuitAmountBIO gte 1>><<link "Grab one">><<set $inventory.circuit_board += 1>><<set $circuitAmountBIO -= 1>><<redo "cb">><</link>>
<<link "Grab them all">><<set $inventory.circuit_board += $circuitAmountBIO>><<set $circuitAmountBIO -= $circuitAmountBIO>><<redo "cb">><</link>><<else>>There's no circuit boards left...<</if>><</do>>
[[Leave the lab|bioHall]]
[[Go outside|hubMenu]]<<if $bioLoc.testingArenaBIO.isLocked is true>>You approach the Testing Arena. There seems to be a large door blocking everything off. It's some type of hazard protection door.
You should see if there's somewhere you can override the locks.<<else>>You step into the Testing Arena. There seems to be some circuit boards here. This place is... haunting. You can feel the horror that happened here. It still smells like charred and burnt flesh.
<<do tag "hazmatsuit">><<if $centerStockArena.length gte 1>>There seems to be a hazmat suit here though. You should grab it.
<<link "Grab it">><<set $inventory.center to $inventory.center.concat($centerStockArena)>><<run $centerStockArena.deleteAll("hazmatsuit")>><<redo "hazmatsuit">><</link>><<else>>You've already taken the weapon that was lying here.
You notice some boxes with electrical components. There's around {{$bandageAmountBIO}}. You could take the entire supply or take a portion of it.
<<do tag "bandage">><<if $bandageAmountBIO gte 1>><<link "Grab one">><<set $inventory.bandages += 1>><<set $bandageAmountBIO -= 1>><<redo "bandage">><</link>>
<<link "Grab them all">><<set $inventory.bandages += $bandageAmountBIO>><<set $bandageAmountBIO -= $bandageAmountBIO>><<redo "bandage">><</link>><<else>>There's no bandages left...<</if>><</do>><</if>><</do>><</if>>
[[Leave the arena|bioHall]]
[[Go outside|hubMenu]]<<if $bioLoc.wasteDisposalBIO.isLocked is true>>You approach the waste disposal. There seems to be a large door blocking everything off. It's some type of hazard protection door.
You should see if there's somewhere you can override the locks.<<else>>You enter the waste disposal. You feel a bit dizzy just being here. There must be a lot of radioactive material down here. You should probably not continue with this.<</if>>
[[Leave the disposal|bioHall]]
[[Go outside|hubMenu]]<<if visited() is 1>>
<<set $commsCircuit to 9>>
<<set $commsScrap to 24>>
<<set $baseSearch to false>>
<<set $secStock = ["makarov"]>>
<<set $casinoFS to false>>
<<set $casinoMS to false>>
<<set _amountAmm9x18 = random(0,3), $mm9x18Amount to _amountAmm9x18>>
<<set _amountAmm762 = random(0,3), $mm762Amount to _amountAmm762>>
<</if>>
<<goto "casinoInside">>[img[img/locations/casino/casinoInside.webp]]
You enter the Casino. It's eerily kept, like someone has been camping here. Lights are still working, at least... Be careful of your steps.
It looks like all the doors in here are open. You should be able to roam freely here.
<<link [[Go to the managers office (0:01)|casinoManager]]>><<addmins 1>><</link>>
<<if $casinoFS is false>><<link [[Search the floor (0:30)|casinoFloor]]>><<addmins 30>><</link>><<else>>You've already searched the floors. Come back later...<</if>>
<<if visited() gte 3>><<link [[Maintenance (0:01)|casinoMaint]]>><<addmins 1>><</link>> <<if visited() gte 3 && visited("casinoMaint") is 0>><em>(This is new...)</em><<else>><br><</if>><br><</if>><<if $maint is true>><<link [[Security (0:01)|casinoSec]]>><<addmins 1>><</link>>
<<link [[Communications (0:01)|casinoComms]]>><<addmins 1>><</link>>
<<link [[Basement (0:01)|casinoBase]]>><<addmins 1>><</link>><br><</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/casino/casinoManager.webp]]
You step into the managing office. There's a safe here filled with money. Of course, those papers hold zero value to anyone at this day and age. What a waste of potential power. <<if visited() is 1>>Money is the only reason this whole thing began in the first place...<</if>>
<<if $casinoMS is false>><<linkreplace "Search the office (0:30)<br>">><<addmins 30>><<scavenge>><<set $casinoMS to true>><</linkreplace>><<else>>You've already searched the managers office. Come back later.<br><</if>>
<<link [[Exit (0:01)|casinoInside]]>><<addmins 1>><</link>>[img[img/locations/casino/casinoInside.webp]]
<<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "casinoMaint">><<goto "combat">><</switch>>
You search the floors of the casino for anything useful. It seems like former scavengers have left some supplies behind in their hurry.
<<scavenge>>
[[Go back|casinoInside]]
<<set $casinoFS to true>>[img[img/locations/casino/casinoMaint.webp]]
You enter the maintenance room. It's got some kind of generator in the back. Perhaps you should try turning it on? It may provide some more lights at least...
<<if $maint is false>><span id="maint"><<link "Turn it on (1:00)">><<replace "#maint">>You turn it on. A low humming sound can be heard around the casino. You notice some lights flicker. Something has changed.<</replace>><<addmins 60>><<set $maint to true>><</link>></span><<else>>You've already turned on the generator. There's nothing more to see here.<</if>>
<<link [[Go back (0:01)|casinoInside]]>><<addmins 1>><</link>>[img[img/locations/casino/casinoSec.webp]]
You enter the casino's security department. It seems this is where they keep their weaponry. <<do tag "sec1">><<if $secStock.length gte 1>>There seems to be a weapon left here though. You should grab it.
<<link "Grab the Makarov">><<set $inventory.primary to $inventory.primary.concat($secStock)>><<run $secStock.deleteAll("makarov")>><<redo "sec1">><</link>><<else>>You've already taken the Makarov that was lying here.<</if>><</do>>
<<do tag "sec">><b>9x18mm ammunition - {{$mm9x18Amount}}</b>
<<if $mm9x18Amount gte 1>><<link "Grab one">><<set $inventory.mm9x18 += 1>><<set $mm9x18Amount -= 1>><<redo "sec">><</link>>
<<link "Grab them all">><<set $inventory.mm9x18 += $mm9x18Amount>><<set $mm9x18Amount -= $mm9x18Amount>><<redo "sec">><</link>><<else>>There's no 9x18mm rounds left...<</if>>
<b>7.62mm ammunition - {{$mm762Amount}}</b>
<<if $mm762Amount gte 1>><<link "Grab one">><<set $inventory.mm762 += 1>><<set $mm762Amount -= 1>><<redo "sec">><</link>>
<<link "Grab them all">><<set $inventory.mm762 += $mm762Amount>><<set $mm762Amount -= $mm762Amount>><<redo "sec">><</link>><<else>>There's no 7.62mm rounds left...<</if>><</do>>
[[Leave the Security office|casinoInside]]<span style="color:lightyellow"><<set _radio = random(1,20)>><<switch _radio>><<case 1>>Radio Broadcast: "Attention all survivors! The remnants of government forces are regrouping in Sector 12. All able-bodied individuals are urged to join the effort to secure the perimeter."<<case 2>>Radio Broadcast: "Reports confirm sightings of mutated creatures near the northern outskirts. Stay vigilant and avoid unnecessary travel."<<case 3>>Radio Broadcast: "Attention scavengers! Valuable supplies have been reported in the abandoned warehouses near the old city center. Exercise caution, as looters have been spotted in the area."<<case 4>>Radio Broadcast: "The water purification system in Sector 7 has malfunctioned. Residents are advised to boil all water before consumption until further notice."<<case 5>>Radio Broadcast: "Emergency medical supplies are running critically low. Any assistance in acquiring or donating medical resources is appreciated."<<case 6>>Radio Broadcast: "A group of raiders has been spotted moving towards the southern settlements. Prepare defenses and organize patrols immediately."<<case 7>>Radio Broadcast: "Attention all survivors! A community meeting will be held tomorrow at noon in the central plaza. Come share information and discuss strategies for survival."<<case 8>>Radio Broadcast: "Seeking skilled engineers! The power grid in Sector 3 requires urgent repairs. Those with technical expertise are encouraged to lend their assistance."<<case 9>>Radio Broadcast: "Rumors of a hidden bunker stocked with provisions have surfaced. Investigate cautiously, as the area may be heavily guarded."<<case 10>>Radio Broadcast: "The radio tower in Sector 9 is back online. Use caution when broadcasting, as hostile forces may intercept communications."<<case 11>>Radio Broadcast: "Attention all traders! The market will be open for bartering and exchange at dawn. Bring your surplus goods and trade for essentials."<<case 12>>Radio Broadcast: "A strange illness is spreading through the eastern settlements. Quarantine measures are in effect. Avoid contact with infected individuals."<<case 13>>Radio Broadcast: "Calling all hunters! Game sightings have increased in the forests east of the river. Secure a fresh food source for your community."<<case 14>>Radio Broadcast: "Emergency evacuation orders issued for Sector 5. Gather your belongings and head to the designated safe zones immediately."<<case 15>>Radio Broadcast: "Reports of hostile weather patterns approaching from the west. Secure shelter and brace for potential storms."<<case 16>>Radio Broadcast: "Attention all survivors! The Council of Elders is seeking volunteers for a reconnaissance mission beyond the city limits. Brave souls, step forward."<<case 17>>Radio Broadcast: "The central defense perimeter has been breached. All able-bodied individuals are requested to reinforce the barricades."<<case 18>>Radio Broadcast: "A group of scientists in Sector 11 is working on a cure for the mutated virus. Secure the research facility and provide any assistance necessary."<<case 19>>Radio Broadcast: "Attention all travelers! Reports indicate an increase in highwaymen along the main trade routes. Travel in groups and remain vigilant."<<case 20>>Radio Broadcast: "The annual memorial service for the fallen will commence at sunset in the town square. Honor the memory of those we've lost."<</switch>></span>[img[img/locations/casino/casinoComms.webp]]
You enter the communications room. This seems to have been built as an addition only after the casino was closed down.<<do>><<if $commsCircuit eq 0 && $commsScrap eq 0>> There's a low, static sound coming out of the communications system.
You could turn it on to listen to todays radio. Maybe there's some news or broadcasts that would be interesting to hear?
<<linkreplace "Tune the radio">>The static shifts.
<<include "radioCasino">>
This sounds like old news. Unfortunately... What a bum-fuck.<</linkreplace>>
<<else>> It's no longer working. Perhaps you could fix it up?
<b>You need <span style="color:lightyellow">$commsCircuit circuits</span> and <span style="color:lightyellow">$commsScrap scrap metal</span>.</b>
You currently have: @@.em;$inventory.circuit_board x circuit board(s)@@ and @@.em;$inventory.scrap_metal x scrap metal@@.
<<if $commsCircuit gt 0>><<if $inventory.circuit_board gte 1>><<link "Apply circuits - 1">><<set $inventory.circuit_board -= 1, $commsCircuit -= 1>><<redo>><</link>><<else>>You do not have enough circuit boards.<</if>>
<<if $inventory.circuit_board gte $commsCircuit>><<link "Apply circuits - $commsCircuit">><<set $inventory.circuit_board -= $commsCircuit, $commsCircuit = 0>><<redo>><</link>><br><</if>><<else>>You've applied the correct circuits and got half of the comms working again.<br><</if>>
<<if $commsScrap gt 0>><<if $inventory.scrap_metal gte 1>><<link "Apply scrap metal - 1">><<set $inventory.scrap_metal -= 1, $commsScrap -= 1>><<redo>><</link>><<else>>You do not have enough scrap metal.<</if>>
<<if $inventory.scrap_metal gte $commsScrap>><<link "Apply scrap metal - $commsScrap">><<set $inventory.scrap_metal -= $commsScrap, $commsScrap = 0>><<redo>><</link>><br><</if>><<else>>You've applied the correct scrap metal and got half of the comms working again.<br><</if>><</if>>
<</do>>
[[Go back|casinoInside]][img[img/locations/casino/casinoBase.webp]]
You descend into the basement. It's got a small light lit, powered only by the generator. It looks like there's a bed and a small kitchen here. And a lot of candles.
<<if $baseSearch is false>>[[Search the basement|casinoSearch][$baseSearch to true]]<<else>>There's nothing else for you to do down here.<</if>>
[[Go back up|casinoInside]][img[img/locations/casino/casinoBase.webp]]
You decide to search the basement. It's rather uninteresting. You only find a few items on the floor.
<<scavenge>>
<<if visited() is 1>>Having already stolen what was down here, you return to get back upstairs. Though something is different. A shadow at the end of the stairway.
@@.anna;Stranger: Who the hell are you? Get the fuck out of my basement!@@
It's a girl. She looks young and afraid.
@@.you;$player.name: Uhm... I.. sorry. I didn't know a-anyone was living down here...@@
@@.anna;Stranger: Stop stammering, bitch, and face me!@@
You can't quite see her, so you get closer. The closer you get, the smaller the girl becomes, and it has soon become clear that you have the advantage over her. She's around your age.
@@.anna;Stranger: I... I didn't mean to yell at you like that... I thought you were going to steal my stuff.@@
@@.you;$player.name: That's okay...@@
<span id="help"><br><<linkreplace "Offer her a spare room">>@@.you;$player.name: Why don't you come with me? I've got a spare room that you can have a nice bed in.@@
<<replace "#leave">><</replace>><<setResident "Anna">>
@@.anna;Stranger: Thank you. My name is Anna. My parents are dead, so I've just been trying to survive to the best of my abilities...@@
<<link [[Follow her home (0:30)|mainHouse]]>><<addmins 30>><</link>><</linkreplace>></span>
<span id="leave"><<linkreplace "Leave her">>@@.you;$player.name: I'm going to leave now. Don't follow me.@@
<<replace "#help">><</replace>><<set $anna.isDead to true>>
@@.anna;Stranger: But...@@
<<link [[Go back upstairs (0:01)|abandonAnna]]>><<addmins 1>><</link>><</linkreplace>></span><<else>>[[Go back upstairs|casinoInside]]<</if>>You begin walking slower. With every step you take, you can feel the curiosity grow inside of you... What is it, that is watching you with such intent?
As far as you can see, there's not much of use to you in here. Perhaps it would be better to leave? You can feel your skin crawl.
As you head for the door, rustling is heard.
[[Run|dataInitRun]]You shout out.
<span style="color:pink">$player.name: Show yourself! I can feel you watching me...</span>
You hear a rustle. Then another one. You can't quite locate where it's coming from.
<<setSanity -10>>
You can't quite make out what's going to happen, so you keep going forward, steady and without much sound. Nonetheless, the feeling of being watched is still lingering.
It doesn't take long before someone speaks to you.
<span style="color:red">@@.shudder;Stranger: Why are you... here..?@@</span>
Your blood freezes. You stand entirely still, paralysed. You can't speak.
<span style="color:red">@@.shudder;Stranger: Who... are you?@@</span>
It's time to get the fuck out of here, before your days are over!
[[Run|dataInitRun]]You run towards the exit with all your might. You grab the doorhandles and pull, but nothing happens. You pull again, before you're caught in a short fit of rage. The fucking door won't open! You're done for. This is the end.
You are grabbed from behind and dragged. You flail around like a maniac, screaming for help. You know it is to no avail. No one can hear you out here. It's dead space.
<span style="color:red">@@.shudder;Stranger: Stop... resisting...@@</span>
It spoke again. That voice... It sounds so haunting... You freeze up again, involuntary. You don't want to freeze up and do what's told. You want to break free and escape from this madhouse. You've already pissed your pants, you need to get home and change. You can't die with pisspants.
Even though you're only apprehended for a few minutes, it feels like the longest hours in your entire life are still ahead of you. Until... they let you go.
<span style="color:red">@@.shudder;Stranger: Tell me... your name...@@</span>
With tears welling in your eyes, and a shaky voice, you tell the stranger your name.
<span style="color:pink">$player.name: $player.name... Please don't hurt me... Please...</span>
He sighs. You hear a click. A man speaks.
<span style="color:lightyellow">Stranger: I'm sorry for scaring you. You can never be too sure with strangers these days. I just wanted to protect myself. I... I have some fresh pants for you.</span>
He lets you go. Everything inside of you wants to just run the hell out of this place and never come back. But you can't. For some reason, you just can't do it.
You cough and stutter.
<<set $matthew.rp += 1>>
<span style="color:lightyellow">Stranger: My name is <span style="color:lightgreen">Matthew</span>. I used to work here back when things were normal. Being a techie, it wasn't difficult for me to make a few tech gadgets to scare away scavengers and raiders. I'm sorry, again, for scaring you so bad.</span>
[[Forgive him|dataInitForgive]]
[[Resent him|dataInitResent]]You can't do much but forgive him. It is a scary place out there afterall.
This way, maybe you'll be able to make a powerful friend. You would have done the same thing, were you technically inclined like Matthew.
<<setKarma 1>>
<span style="color:lightgreen">Matthew: Let me show you around.</span>
<<linkreplace "Follow along (0:30)">>You follow him along, and are taken around the place. He shows you where he sleeps, where he goes to wash himself and where he stashes his food. He's also given you a new pair of pants.
<<addmins 30>>
[img[img/locations/datacentre/datacentreChange.webp]]
There we go. Dry and clean. Time to get out of here before things turn weird. You can sense he's still watching you.
<<link [[Leave (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>><</linkreplace>>You can't help but resent him for it. Why would he scare you like that? Douchebag.
<<setKarma -5>>
<span style="color:lightgreen">Matthew: Let me show you around... Again, I am so sorry...</span>
But wouldn't you have done the same thing in his position?
<<linkreplace "Follow along (0:30)">>You follow him along, and are taken around the place. He shows you where he sleeps, where he goes to wash himself and where he stashes his food. He's also given you a new pair of pants.
<<addmins 30>>
[img[img/locations/datacentre/datacentreChange.webp]]
There we go. Dry and clean. Time to get out of here before things turn weird. You can sense he's still watching you.
<<link [[Leave (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>><</linkreplace>>[img[img/locations/datacentre/datacentre.webp]]
<<if visited() is 1>>You enter the datacentre. It looks like someone has taken refuge in here. There's barricades over the windows, and a small hallway has been crafted over the entrance. It makes it easier for you to navigate. Assuming any and all resources on the outside of the walls has been moved into the makeshift hideout.
<<set $languageBook to false>>
As you walk alongside, you can't shake the feeling that someone is looking at you. Watching your every move. It's not very fun... Are you being watched?
[[Shout out|dataInitShout]]
[[Keep quiet|dataInitQuiet]]<<else>><<if $matthew.isRes>>You stand in what used to be Matthews makeshift camp. The datacentre. It is now void of any and all resources you can think of. Empty. Finito. You can't even utilize the space for anything. Maybe some other time, but for now, it's time for you to leave this place alone.
<<switch random(1,50)>><<case 1>><<set $combatReturn to "Explore">><<goto "combat">><</switch>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>><<else>>You stand in the data centre. It's run down, broken, destroyed. What once used to be a magnificent center of immense technology, has been reduced to shreds. There's not much here to see except Matthew's makeshift camp.
<<if $gameDate.getUTCHours() gte 6 and $gameDate.getUTCHours() lte 21>>It's no time to sleep.<<else>><<if $matthew.rp gte 30>>[[Sleeping place|matthewSleepCamp]]<<else>><i>You don't @@.pos;trust@@ him enough to sleep with him.</i><</if>><</if>>
<<if $gameDate.getUTCHours() gte 6 and $gameDate.getUTCHours() lte 21>><<link [[Hang out (0:30)|matthewHangCamp]]>><<addmins 30>><</link>>
<<if $matthew.rp gte 20>><<link [[Cuddle for comfort (0:20)|matthewCuddleCamp]]>><<addmins 20>><</link>><<else>><i>You don't @@.pos;trust@@ him enough to cuddle for comfort.</i><</if>>
<<if $matthew.rp gte 60>><<link [[Instigate fun times (0:25)|matthewSexCamp]]>><<addmins 25>><</link>><<else>><i>You don't @@.pos;trust@@ him enough to instigate fun times.</i><</if>>
<<if $matthew.rp gte 90>>[[Ask him to move in with you|matthewMove]]<<else>><i>You don't @@.pos;trust@@ him enough to invite him into your home.</i><</if>><<else>><i>It's too late to hang out.
It's too late to cuddle for comfort. Consider sleeping instead.
It's too late to have sex.
It's too late to ask deep questions.</i><</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<runAudio 'audio/door.mp3'>><</link>><</if>><</if>>[img[img/locations/datacentre/datacentre.webp]]
You decide to hang out with Matthew for a while. He seems to appreciate the company. It's not much, but it's all we have in this wretched world for the time being...
<<switch random(1,5)>><<case 1>>You talk about his old job. It seems to still hold interest to him. He smiles. He talks about his coworkers, his boss, his "work-family". He speaks of them so fondly. Alas, it is all but a memory now.<<case 2>>He talks about his makeshift camp and what he had to do to build it. He talks a bit about his old job, but not much. He looks a bit hurt about losing people.<<case 3>>He talks about his wife and his kids. He's still young, but he had so much to lose back when all hell broke lose. So many people lost.<<case 4>>He talks about the people that had helped him set up this place. Before you got here, there used to be a lot more people living in the datacentre. In his makeshift camp. They all died or moved to other places. Matthew was the only one left, and was left here for a while before you entered. He explains that, that is why he wanted to scare you away at first. He was hurting.<<default>>He talks about you. He wants to know what you've been through, though he mostly turns the conversation into himself, telling you what he had done or would have done in certain situations. He's not judging you, but speaking from his heart with good intent.<</switch>>
<<switch random(1,5)>><<case 1>>You talk a bit about what you used to do before this hellscape broke lose.<<case 2>>You talk a bit about your apartment and what you've been through in the past few months.<<case 3>>You talk about your interests and what pisses you off. You talk about what you've seen and what you've done. Who you've met.<<case 4>>You talk a bit about the other people that you've encountered on your way.<<default>>You listen closely to what he has to say. Listening is an important skill in this day and age.<</switch>>
<<setMatt 2>>
This conversation was important to both of you.
He likes you more!
<<if $languageBook is false && $matthew.rp gte 30>><br>He looks at you, and holds out a book. He tells you it will help you understand some of the signage the government has put up.<<set $languageBook = true>>
<span style="color:green">+ Language book</span><br><</if>>
[[Stand up|datacentre]]You lay down next to Matthew. He positions himself behind you, in a cozy spoon. He wraps his arms around you, and hugs you tightly.
It's been a while since he's had a beautiful girl in his arms.
<<setArousal 5>>
[img[img/locations/datacentre/matthewCuddle.webp]]
You feel safe. You feel cozy. You feel like a snug bug.
You feel your relationship tighten.
<<setMatt 2>>
[[Stand up|datacentre]]You look at Matthew with hungry eyes. Being in a desolate hellscape really does something to ones mind. The depravity of human touch usually does that. It fuels you with hunger for contact. Skin on skin.
He has those eyes. Primal. Animalistic. Threatening. You can feel your heart beat faster and faster. You feel your pussy moisten with anticipation. If you weren't wearing pants, your panties would drop to the floor from the sheer amount of grool coming out from below. There's no need for a heater, your pussy does the job just fine.
You slowly start disrobing, starting with you pants... Then your panties...
He can't take it anymore. He pounces on you!
<<switch random(1,2)>><<case 1>>[img[img/locations/datacentre/matthewFuck1.webp]]<<case 2>>[img[img/locations/datacentre/matthewFuck2.webp]]<</switch>>
He fucks you relentlessly, and without mercy. He doesn't stop to pull out, and instead fulls your womb with his hot cum. Not even this stops him, and he keeps fucking you senseless. You've lost track of the amount of times you've cum, all you know is that this feeling can't go away. Don't let it go away, please.
He finally finishes, after what feels like hours. So much cum runs out of your pussy.
<<setLust 1>>
<<setMatt 3>>
<<switch random(1,2)>><<case 1>>[img[img/locations/datacentre/matthewCum1.webp]]<<case 2>>[img[img/locations/datacentre/matthewCum2.webp]]<</switch>>
[[Clean up|datacentre]]<span id="sleep">You strip down to nothing and lay in his bed. Your nude skin against the soft covers are an experience you'll hardly let go of. You feel your body settling in, and you mind go to ease.
<<countSleep>>
<<link "Just sleep (??:??)">><<sleepUntilRested>><<include "matthewSleepCampInclude">><</link>>
<<link "Sleep 8 hours (8:00)[_wakeUp1]">><<sleepHours 8>><<include "matthewSleepCampInclude">><</link>>
<<link "Sleep 4 hours (4:00)[_wakeUp2]">><<sleepHours 4>><<include "matthewSleepCampInclude">><</link>>
<<link "Sleep 2 hours (2:00)[_wakeUp3]">><<sleepHours 2>><<include "matthewSleepCampInclude">><</link>>
[[Change your mind|datacentre]]</span><<replace "#sleep">>You lay down next to Matthew, ready to sleep. Closing your eyes, you can feel yourself drifting off. The faces of the people you've lost appear before your eyes, judging you. Not fun.<<set _dream = random(1,3)>>
<<switch random(1,2)>><<case 1>>[img[img/locations/datacentre/datacentreSleep1.webp]]<<case 2>>[img[img/locations/datacentre/datacentreSleep2.webp]]<</switch>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
@@.em;You feel the warm hug of@@ @@.matthew;Matthew@@@@.em;. Your thoughts are silenced.@@
[[Wake up|datacentre]]
<<nobr>>
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>><</nobr>><</replace>>[img[img/locations/datacentre/datacentre.webp]]
You ask him if he'd like a more safe place to live.
He looks at you with a curious face. Are you really asking him if he'd like to move out of this shithole of his, and into your place?
@@.matthew;Matthew: Really..? Do you mean that?@@
His eyes are lit up, now. With joy. It looks like a yes.
@@.matthew;Matthew: Are there... Anyone else? Or just us...@@
<<if $residents.length gte 1>>@@.you;$player.name: There's $residents.length others.@@<<else>>@@.you;$player.name: It's just us...@@<</if>>
@@.matthew;Matthew: Okay... I'd like that.@@
<<setResident "Matthew">>
<<link [[Show him home|mainHouse]]>><<runAudio 'audio/door.mp3'>><</link>><<silent>>
<<if visited() is 1>>
<<set $wellUsed to false>>
<<set $farmItems = {
corn: { name: "Dried Corn", description: "A few ears of dried corn. Tough, but edible when boiled.", isFound: false },
pocketknife: { name: "Pocketknife", description: "Small and rusted, but still serviceable.", isFound: false },
blackroot: { name: "Blackroot", description: "Bitter and fibrous, but it keeps hunger away for a while.", isFound: false }
}>>
<</if>>
<</silent>>\
[img[img/locations/farm/farm.webp]]
You stand at Blackroot Acres, a small family farm. You remember their crest from the milk you used to drink before everything went to shit.
Ahead, the silhouette of a collapsed farmhouse leans against the dark horizon, its chimney jutting like a broken tooth. A barn slumps nearby, doors hanging crooked, and the fields beyond are choked with black weeds that sway in the wind like they're breathing. Somewhere in the distance, a pump handle creaks in slow, lonely rhythm.
<<link [[Approach the farmhouse (0:01)|farmHouse]]>><<addmins 1>><</link>>
<<link [[Barn (0:01)|barn]]>><<addmins 1>><</link>>
<<link [[Fields (0:01)|fields]]>><<addmins 1>><</link>>
<<link [[Well House (0:01)|wellHouse]]>><<addmins 1>><</link>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/farm/farmInside.webp]]
You push the farmhouse door open. The air is heavy with the scent of boiled roots and damp wood. A single oil lamp burns low on the table, its light pooling over a man hunched in a chair. His eyes find you, slow and deliberate.
@@.red;"Нѣтъ грома, нѣтъ дожда,"@@ he says, and gestures to a seat you don't take.
For a moment, neither of you speak. The wind scrapes against the shutters, and something creaks upstairs. His gaze shifts toward it, but he says nothing more.
<<link [[Go back outside (0:01)|farm]]>><<addmins 1>><</link>>[img[img/locations/farm/barn.webp]]
You step into the barn, the air thick with dust and the faint stench of rot. Sunlight spears through broken planks, catching drifting hay in its beams. A few collapsed stalls lean at odd angles, and the heavy barn doors bear deep claw marks. Somewhere above, the hay loft creaks like it remembers footsteps.
<<link [[Search the barn floor (0:01)|barnFloor]]>><<addmins 1>><</link>>
<<link [[Check the loft (0:01)|barnLoft]]>><<addmins 1>><</link>>
<<link [[Approach the locked stall (0:01)|lockedStall]]>><<addmins 1>><</link>>
<<link [[Approach the far wall (0:01)|farWall]]>><<addmins 1>><</link>>
[[Go back to Blackroot Acres|farm]][img[img/locations/farm/barn.webp]]
You sift through the debris and rusted tools, finding little of value-until your hand grazes something cold and solid.
A wrench, still intact enough for use.
[[Turn back|barn]][img[img/locations/farm/barn.webp]]
You climb the rickety ladder. Dust rains down from the boards, and the air grows warmer.
Nestled in the corner is a feed sack tied shut. Inside: preserved seeds and a cracked farming ledger in Thargitsŭ.
[[Turn back|barn]][img[img/locations/farm/barn.webp]]
The smell of decay is strongest here. A faint metallic rattle echoes inside.
<<switch random(1,3)>>
\<<case 1>>You peer between the boards - a skeletal frame of some animal lies slumped in the straw, its bones half-buried in dust.
\<<case 2>>Chains hang slack from the wall, ending in a broken collar. The bedding is shredded, as if something fought to get free.
\<<case 3>>The stall is empty but for a dark stain that seeps into the wood. You can't tell if it's rust or something worse.
\<</switch>>
[[Turn back|barn]][img[img/locations/farm/barn.webp]]
Faded paint in Thargitsŭ warns: <b>"Не возьми что не твоё."</b>
You notice a warped trapdoor hidden behind rotting boards.
<<linkreplace "Open the trapdoor">>You pull it free, revealing a ladder down into the root cellar. The air from below is cool and damp.
@@.red;Climb down@@ <em>(It's locked.)</em>
\<</linkreplace>>
[[Turn back|barn]][img[img/locations/farm/fields.webp]]
You step into the fields of Blackroot Acres. The soil is grey and cracked, coughing up more stones than crops. Rows of maize lean like drunks in the wind, their leaves frayed to ribbons. A patch of blackroot plants clings stubbornly to life in the far corner, their stalks swaying as if they know you're here.
A scarecrow stands at the center - an old coat flapping over rotting straw, its tin mask glaring with hollow eyes. Wooden stakes jut from the ground, each carved with jagged Thargitsŭ warnings you don't fully understand.
Somewhere in the dirt, faint hoofprints vanish toward the treeline.
<<link [[Inspect the crops (1:00)|crops]]>><<addmins 60>><</link>>
<<link [[Examine the scarecrow (0:25)|scarecrow]]>><<addmins 25>><</link>>
<<link [[Pull a blackroot plant (0:10)|blackroot]]>><<addmins 10>><</link>>
<<link [[Leave the fields (0:01)|farm]]>><<addmins 1>><</link>>[img[img/locations/farm/fields.webp]]
You kneel by the withered rows. The maize is brittle, but a few stalks have ears worth taking. You strip them quickly, wary of the wind shifting the dry leaves.
<<if !$farmItems.corn.isFound>><<set $farmItems.corn.isFound to true>><br>You collect a small bundle of dried corn.<br><</if>><<if $seeds eq 0>><<switch random(1,4)>><<case 1>><<set $seeds += 1>><span style="color:green">+ Seeds</span><br><<default>><</switch>><</if>>
[[Back to the fields|fields]][img[img/locations/farm/fields.webp]]
The scarecrow's tin mask catches your reflection, warped and stretched. Straw spills from its sleeves like exposed tendons.
<<if $farmItems.pocketknife.isFound is false>><<switch random(1,4)>>
\<<case 1>>As you reach for the coat, something clinks inside. You find an old pocketknife, rusted but still sharp enough.<<set $farmItems.pocketknife.isFound to true>>
\<<default>>You find nothing but damp straw and the faint smell of mildew.
\<</switch>><<else>>You find nothing but damp straw and the faint smell of mildew.<</if>>
[[Back to the fields|fields]][img[img/locations/farm/fields.webp]]
The blackroot plants are squat and oily-looking, their roots pushing up from the soil like knuckles. You brace and pull - the stalk resists, then tears free with a wet snap.
<<if !$farmItems.blackroot.isFound>><<set $farmItems.blackroot.isFound to true>><br>You take the blackroot, brushing the dirt from your hands.<br><</if>>
From the farmhouse, you think you hear someone call out - though the wind might have carried the sound wrong.
[[Back to the fields|fields]]The small stone well house leans slightly, its roof patched with rusted tin. Inside, the air smells faintly of algae and damp rope. A hand pump juts from the floor, its handle worn smooth by years of use.
<span id="well"><<if !$wellUsed>>
\<<link "Pump the handle (0:10)">><<addmins 10>><<replace "#well">>You lean into the pump handle. It resists at first, then lets out a rusty groan. A stream of cold, clean water spills into the basin below, splashing your hands. You cup some to drink - it's shockingly fresh compared to the dust outside.
<<set $wellUsed to true>>
[[Go back|farm]]<</replace>>
<</link>>
<<else>>
\The pump groans when you try it - just a trickle of water drips into the basin. You've already drawn what you could for now.
[[Go back|farm]]
<</if>></span><<if visited() is 1>>\
<<silent>>
<<set
$marv to 0,
$roe to 0,
$haddie to 0,
$rayna to 0,
$benji to 0,
$jex to 0
>>
<<set $marvJob to false>>
<<set $yardMarks to 0>>
<<set $loadrampForklift to false>>
<<set $mechbayForklift to false>>
<<set $scrapSorted to 0>>
<</silent>>\
[img[img/locations/freightyard/cargohall.webp]]
The heavy doors groan as you slip inside, and for a heartbeat the world goes silent.
Then the dim lights flicker awake, revealing a vast chamber carved from steel and shadows.
Rows of cargo containers rise like rusted towers, stacked so tightly they form narrow alleys between them. Makeshift banners, tarp sheets, and hanging lanterns sway gently above the improvised living spaces. You hear quiet murmurs, the clatter of tools, and the scraping rhythm of crates being dragged across concrete.
A faint heat radiates from scattered fire barrels. Their glow paints the walls in trembling amber light. Scavenged signs and chalk markings cover a nearby bulletin board - warnings, job requests, lost-and-found notes... a whole language of survival etched in smudged handwriting.
People glance your way: tired eyes, guarded expressions. You feel them evaluating you. Your gear, your posture, your purpose. No one speaks, but their silence tells its own story.
This is the Freight Yard's heart.
A place where strangers survive together, but never quite trust one another.
And now you're standing in the middle of it.<<else>>\
You stand in the middle of the Cargo Hall, surrounded by towering stacks of rusted containers and flickering overhead lamps. Fire barrels burn quietly along the walls, their warm glow cutting through the stale industrial air. Survivors drift between the improvised stalls and sleeping corners, trading, working, or simply staring into the embers.
It's never truly quiet here - always the distant clang of metal, the scrape of crates, the low murmur of conversations that stop the moment you get too close. The chalkboard near the entrance still bears smudged job postings and warnings, updated by whatever poor soul drew the short straw that morning.
The whole place feels alive, but only barely - like a massive rusted machine refusing to die.<</if>>
<<link [[Explore the Freight Yard (1:00)|freightYardExplore]]>><<addmins 60>><</link>>
<<link [[Enter the Loading Ramps (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>><<if $marv gte 1>> <em>(Marv is here.)</em><</if>>
<<link [[Go to the Mechanical Bay (0:02)|freightMechBay]]>><<addmins 2>><</link>><<if visited("freightMechBay") gte 1>> <em>(Roe and Haddie are here.)</em><</if>>
<<link [[Enter the old office block (0:01)|freightOffice]]>><<addmins 1>><</link>><<if visited("freightOffice") gte 1>> <em>(Nurse Rayna <<if $benji gte 1>>and Benji are here.<<else>>is here.<</if>>)</em><</if>>
<<link [[Go to the crane catwalks & overlook (0:03)|freightOverlook]]>><<addmins 3>><</link>><<if $jex gte 1>> <em>(Jex is here.)</em><</if>>
<<if $player.ap gte 1>><<link [[Go to the abanondend train car rows (0:04)|freightTrain]]>><<addmins 4>><</link>><<else>>@@.red;Go to the abanondend train car rows@@ <em>(You shouldn't step outside. The toxins are too strong.)</em><</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>You spend some time wandering through the Cargo Hall, taking in the sights and sounds of the Freight Yard. The air is thick with the smell of oil, rust, and smoke from the fire barrels. Survivors move about their business, some trading goods, others repairing equipment or simply resting.
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>>You stand at the Loading Ramps, where three massive shutters guard the warehouse from the toxin-soaked outside. One is sealed, one quivers with every gust, and the last hangs jammed halfway open, held together by chains and desperation. Cold air leaks through the cracks, carrying the faint sting of chemicals.
Scattered pallets, a toppled forklift, and flickering warning lights give the area a constant sense of unease. A couple of guards linger nearby, eyes fixed on the shutter gaps, ready for anything that might slip through.
Out here, every creak of metal feels like a warning.
<<if visited("marvDolan") is 0>>A rugged man is standing a few meters away,<<else>>You smile at Marv,<</if>> pipe rifle resting on his shoulder. He gives you a tired nod. The kind that means "You helping or not?"
<<if visited("marvDolan") is 0>><<link [[Approach the Guard (0:01)|marvDolan]]>><<addmins 1>><</link>><<else>><<link [[Approach Marv (0:01)|marvDolan]]>><<addmins 1>><</link>><</if>>
<<link [[Play Blackjack (0:30)|freightLoadBlackjack]]>><<addmins 30>><</link>>
<<if $loadrampForklift is false>><<link [[Check collapsed forklift (0:20)|freightLoadForklift]]>><<addmins 20>><</link>><<else>>@@.red;Check collapsed forklift@@ <em>(You have already scavenged here today.)</em><</if>>
<<link [[Examine the Entry Tracks (0:30)|freightLoadEntry]]>><<addmins 30>><</link>>
<<link [[Listen to the Walls (0:20)|freightLoadWalls]]>><<addmins 20>><</link>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>>Number of decks: <<numberbox "$deckCount" $deckCount>>
<<link "Bet" "Bet">><<run buildDeck()>><</link>>
<<link [[Change your mind (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>>$deck.length cards remain in the shoe.
Marks: ¤<<=$yardMarks>>
<<set _bet to Math.ceil($yardMarks/2)>>Amount to bet: ¤<<numberbox "$bet" _bet>>
<<link "Deal" "Deal">><<set $badbet to true>><<run startDeal()>><</link>>
<<link [[Change your mind (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>><<if $badbet>>@@color:red;Invalid bet amount!@@
<<link "Bet" "Bet">><</link>><<else>>$deck.length cards remain in the shoe.
Marks: ¤<<=$yardMarks>>
Pot: ¤<<=$pot>>
Dealer: <<= showHand($dealer, $hideDealer)>><<if !$hideDealer>> [<<= handValue($dealer)>>]<</if>>
Player: <<= showHand($bjPlayer)>> [<<= handValue($bjPlayer)>>]<<if $result>> $result<<set $result to "">><</if>>
<<if $hideDealer>><<link "Hit" "Deal">><<run bjPlayerHit()>><</link>> | <<link "Stand" "Deal">><<run bjPlayerStand()>><</link>><<else>><<link "Bet again (0:30)" "Bet">><<addmins 30>><</link>>
<<link [[Take your marks and leave (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>>
<</if>><</if>><<if visited() is 1>>\
You approach the guard. "The name's Marv," he says gruffly, extending a hand.<<else>>Marv turns to face you fully. He extends a hand in a friendly shake, and begins chatting to you about whatever new has been going on since last time. It feels nice. Feels natural. Feels safe. Safe is good sometimes. You smile at Marv, and butt in with your own little stories.<</if>>
<<setMarv 1>>
<<if $marvJob is false>>@@.marv;Marv: Looking to earn some creds? We could use another pair of eyes out here. The toxins are making things... interesting.@@
<span id="marvResponse"><<link "Accept position">><<replace "#marvResponse">>You give a confident nod as your answer, and he hands you the rifle on his shoulder.
<<set $marvJob to true>><<setMarv 4>>
@@.marv;Marv: Rifle goes back when you're done. Speak to me when you're ready to begin.@@
<<link [[Nod and turn around|freightLoadingRamps]]>><<addmins 1>><</link>><</replace>><</link>>
<<link [[Decline politely and leave (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>></span><<else>>@@.marv;Marv: You ready to begin?@@
<<link [[Start a shift (4:00)|marvJob]]>><<addmins 240>><</link>>
<<if $marv gte 12>><<link [[Chat (0:20)|marvChat]]>><<addmins 20>><</link>><<else>>@@.red;Chat@@ <em>(You need to build more rapport with Marv first.)</em><</if>>
<<link [[Change your mind (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>><</if>>You approach the lookout spot that Marv indicated earlier. From here, you can see the entire perimeter of the Freight Yard, including the surrounding wasteland. The air is thick with tension as you scan the horizon for any signs of movement.
<<switch random(1, 2)>>
<<case 1>>After a few minutes, you spot something - a group of figures moving cautiously through the ruins. They seem to be scavengers, likely looking for supplies. You radio Marv to inform him of the situation.
<<case 2>><<set _combat to true>>Suddenly, a loud noise echoes from the far side of the yard. You quickly turn to see a group of raiders attempting to breach the fence. You alert Marv, who readies his rifle.
<br><<link [[Engage in Combat (0:01)|marvJobCombat]]>><<addmins 1>><</link>>
<<case 3>>It takes a while, but eventually you notice a small fire starting near one of the storage containers. You quickly radio Marv to report the fire, hoping the others can contain it before it spreads.
<<case 4>><<set _combat to true>>A sudden movement catches your eye - a lone figure darting between the containers. It looks like a scavenger trying to sneak into the yard. You radio Marv to let him know about the intruder.
<br><<link [[Engage in Combat (0:01)|marvJobCombat]]>><<addmins 1>><</link>>
<<case 5>>You spend some time scanning the area, but nothing seems out of the ordinary. Just the usual desolation and silence of the wasteland. You radio Marv to let him know everything is clear.
<<case 6>>A sudden rustling noise from the nearby bushes makes you tense up. You quickly spot a wild dog emerging, snarling and looking for trouble. You radio Marv to inform him of the situation.
<<case 7>>After a while, you notice a group of survivors approaching the yard cautiously. They seem to be in need of help. You radio Marv to inform him about the approaching group.
<<case 8>>Time passes slowly, and you find yourself growing increasingly bored. Suddenly, a loud bang from the far side of the yard jolts you to attention. You quickly scan the area but see nothing unusual. You radio Marv to report the false alarm.
<<case 9>>A sudden gust of wind blows debris across the yard, momentarily obscuring your view. When the dust settles, you notice a figure trying to sneak away from the yard. You radio Marv to inform him of the suspicious activity.
<<case 10>>You keep a steady watch, but after a while your eyes begin to droop. Just as you're about to nod off, a loud crash from the far side of the yard snaps you back to attention. You quickly scan the area but see nothing unusual. You radio Marv to report the false alarm.
<<case 11>><<set _combat to true>>You notice a group of raiders attempting to sneak into the yard under the cover of darkness. You quickly radio Marv to inform him of the situation.
<br><<link [[Engage in Combat (0:01)|marvJobCombat]]>><<addmins 1>><</link>>
<<case 12>>As you're sitting there, you notice a small group of children playing near the edge of the yard. They seem to be unaware of the dangers lurking outside. You radio Marv to inform him about the situation.
<<case 13>>While you're on watch, you spot a group of traders approaching the yard. They seem to be carrying valuable supplies. You radio Marv to inform him of the approaching group.
<<case 15>>You notice a strange light flickering in the distance. It looks like a distress signal. You radio Marv to inform him about the situation.
<<default>>The shift passes uneventfully. You keep a vigilant watch, but nothing out of the ordinary occurs. As your time ends, you radio Marv to let him know you're done.
<</switch>>
<<if _combat is true>><<else>><<link [[Return to Marv (0:01)|marvJobEnd]]>><<addmins 1>><</link>><</if>><<if $equipped.primary is "Empty">><<equipGear primary piperifle>><<set $inventory.mm762 += 8>><</if>>
<<set $combatReturn to "marvJobEnd">><<goto "combat">>You return to Marv, who looks relieved to see you back safely. "Good work out there," he says, clapping you on the shoulder. "Here's your pay." He hands you a small pouch of creds.
<span style="color:yellow">+ 4 Marks</span>
<<setMarks 4>><<setMarv 1>><<if $equipped.primary is "piperifle">><<run $inventory.primary.deleteAll("piperifle")>><<run $equipped.primary to "Empty">><</if>>
<<link [[Start another shift (4:00)|marvJob]]>><<addmins 240>><</link>>
<<link [[Thank Marv and leave (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>><<switch random(1, 10)>>
<<case 1>>\
You strike up a conversation with Marv while he sits by the loading ramp, pipe rifle resting across his lap.
He doesn't look up at first, but eventually he starts talking - short, clipped fragments of the world he knew before this one.
He mentions long shifts, cold nights, and the strange comfort of routine.
You realize how much the quiet weighs on him now.
<<case 2>>\
You settle beside Marv near the half-jammed shutter. He keeps his eyes on the narrow gap outside, shoulders tense.
As you talk, he slowly softens, sharing thoughts about the dangers beyond the depot and the people he's sworn to protect inside it.
For a moment, the hardened guard seems almost human again.
<<case 3>>\
You decide to converse with Marv while he checks the barricades.
He listens with one ear, still focused on every sound the metal makes.
He offers a few rough observations, the kind that only come from surviving far too long in a place like this.
When you thank him for the company, he gives a small grunt that almost counts as approval.
<<case 4>>\
Marv shifts his weight against the railing as you approach.
You talk about the constant alerts, the tension, the long hours spent watching a world that wants you dead.
He shares brief glimpses of the people he's lost while standing guard - faces that pass through his memory with a surprising softness.
You're reminded that even tough men carry ghosts.
<<case 5>>\
You strike up a conversation with Marv as he inspects a collapsed forklift near the corridor.
He talks about the old freight crews he worked with, the noise and camaraderie that used to fill places like this.
Now it's mostly quiet. Too quiet, he says, though he doesn't need to.
The silence between you feels heavy but strangely peaceful.
<<case 6>>\
You linger beside Marv as he oils the old hinges on the shutter.
He opens up about the job - how the monotony keeps him grounded, how danger feels easier to manage than boredom.
He admits he's afraid of slipping up, of missing the wrong sound at the wrong time.
You reassure him without words, just by staying.
<<case 7>>\
You find Marv perched on a crate, rubbing his temples like he hasn't slept in days.
He talks slowly, sharing bits of memories from before the Collapse - nothing dramatic, just ordinary life: morning routines, cheap coffee, worn boots.
Those memories seem to anchor him, and sharing them with you seems to help more than he'll ever admit.
<<case 8>>\
You settle beside Marv while he cleans his pipe rifle.
He tells you about the people who used to guard the ramps with him - friends, coworkers, strangers who didn't last long.
The way he speaks carries a kind of quiet reverence, like he's keeping their stories alive through repetition.
You sit with him until the tension in his shoulders eases.
<<case 9>>\
Marv watches you approach, then shifts aside just enough for you to sit.
He starts talking about the depot itself: the weak points in the walls, the noises he's learned to ignore, the ones he never does.
There's a calm certainty in his voice, the kind that comes from years of vigilance.
You feel safer just being near him.
<<case 10>>\
You strike up a conversation with Marv, and he gives a tired, almost amused snort before humoring you.
He reflects on his role here - how everyone relies on him even when they pretend not to.
He doesn't complain, but there's a weary pride in the way he carries that burden.
As you talk, the unspoken truth settles between you: he's lonely, but he stays because someone has to.
<</switch>><<setMarv 1>>\
<<link [[Turn away (0:01)|marvDolan]]>><<addmins 1>><</link>>You approach the collapsed forklift. Its metal frame is twisted and rusted, with hydraulic lines hanging loose like severed veins. The driver's seat is crushed, and the controls are mangled beyond recognition.
<<set $loadrampForklift to true>>
You scavenge a bit around the wreckage, finding various useful resources.
<<scavenge>>
<<link [[Go back to the Loading Ramps (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>>You examine the entry tracks leading into the Freight Yard. The heavy-duty rails are partially buried under debris and rust, but they still show signs of recent use. The ground around them is uneven, with tire marks and footprints indicating that vehicles and people have been moving in and out frequently.
<<link [[Go back to the Loading Ramps (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>>You press your ear against the cold metal walls of the Freight Yard. Faint echoes of movement and distant voices reach your ears, but it's hard to make out any specific sounds. The walls seem to hum with the energy of the people living and working inside, a constant reminder of the fragile community that has formed here.
It may just be wind, but something keeps brushing against the outer walls, like claws scraping lightly on metal.
<<link [[Go back to the Loading Ramps (0:01)|freightLoadingRamps]]>><<addmins 1>><</link>><<if visited() is 1>>You stand in the Mechanical Bay, surrounded by the smell of burned oil and ozone. Tool racks, scrap piles, and half-built machines fill every corner. A welding unit sputters weakly beside a disassembled forklift, its parts laid out with surgical precision. Nearby, a locked cage holds tagged scrap waiting to be sorted.
A welding unit sputters in the corner, throwing short bursts of white light across a disassembled forklift laid out like a metal carcass. The man working on it pauses only long enough to glance at you. His eyes flick to your hands, your gear, your stance. Evaluating, measuring.
@@.roe;Stranger: You're new. Don't touch anything sharp or expensive. Name's Roe Sandil.@@
Then he goes right back to work, three-fingered hand moving with surprising precision.
Across the room, someone nearly drops a bin trying to straighten up. A girl, no older than you, with oil-stained sleeves and a frantic smile hurries over.
@@.haddie;Stranger: I, uh, sorry! I'm Haddie. If you need scrap sorted or tools fetched, I can... you know... help.@@
Their introductions hang in the air, swallowed quickly by the hum of machinery and the sparks from Roe's welder.<<else>>You stand in the Mechanical Bay, surrounded by the smell of burned oil and ozone. Tool racks, scrap piles, and half-built machines fill every corner. A welding unit sputters weakly beside a disassembled forklift, its parts laid out with surgical precision. Nearby, a locked cage holds tagged scrap waiting to be sorted.
Roe works with quiet intensity, muttering to himself, while Haddie darts between benches trying to keep up. The whole place hums with effort - loud, messy, and vital to keeping the depot alive.<</if>>
<<link [[Speak to Roe Sandil (0:01)|freightMechRoe]]>><<addmins 1>><</link>>
<<link [[Speak to Haddie (0:01)|freightMechHaddie]]>><<addmins 1>><</link>>
<<if $mechbayForklift is false>><<link [[Inspect Disassembled Forklift (0:20)|freightMechForklift]]>><<addmins 20>><</link>><<else>>@@.red;Inspect Disassembled Forklift@@ <em>(You have already scavenged here today.)</em><</if>>
<<if $roe lt 3>>@@.red;Inspect the Scrap Storage Cage@@ <em>(You should speak to Roe first.)</em><<else>><<link [[Inspect the Scrap Storage Cage (0:01)|freightMechScrapStorage]]>><<addmins 1>><</link>><</if>>
<<if $haddie lt 3>>@@.red;Inspect the Fuel Cell Salvage Bench@@ <em>(You should speak to Haddie first.)</em><<else>><<link [[Inspect the Fuel Cell Salvage Bench (0:01)|freightMechFuelCellBench]]>><<addmins 1>><</link>><</if>>
<<link [[Inspect the Tool wall (0:01)|freightMechToolWall]]>><<addmins 1>><</link>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>>You approach Roe, who barely glances up from his work. Sparks fly as he welds a jagged piece of metal back onto the forklift frame.
@@.roe;Roe: You here to help, or just gawking? Either way, don't touch my tools without asking.@@
<<if $roe lt 3>><<link [[Offer to help (0:01)|freightMechBayRoeHelp]]>><<addmins 1>><</link>><<else>>@@.red;Offer to help@@ <em>(Roe has already accepted your help.)</em><</if>>
<<if $roe gte 10>><<link [[Chat (0:20)|freightMechBayRoeChat]]>><<addmins 20>><</link>><<else>>@@.red;Chat@@ <em>(You need to build more rapport with Roe first.)</em><</if>>
<<link [[Nod and step back (0:01)|freightMechBay]]>><<addmins 1>><</link>>You offer to help Roe with his work. He eyes you for a moment, then responds.
@@.roe;Roe: Fine. But I don't need an apprentice. Help me sort the scrap for now.@@
<<setRoe 3>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>><<switch random(1, 10)>>
<<case 1>>You strike up a conversation with Roe while he works. He seems reluctant at first, but gradually opens up, sharing stories about his life before the collapse, his frustrations with the current state of the world, and his hopes for the future.
He briefly mentions Haddie. His daughter.
<<case 2>>You settle beside Roe as he welds. His hands move with practiced ease, but his eyes flicker with a hint of loneliness. He talks about the challenges of surviving in this harsh world, the people he's lost, and the small victories that keep him going.
He points to Haddie and compliments her grit.
<<case 3>>You decide to converse with Roe, who pauses in his work to listen. He shares insignificant details about his old life, seemingly wanting to get back to work.
He smiles a half smile at you, and turns back around.
<<case 4>>As Roe works, he opens up about his experiences before the outbreak. He talks about driving Haddie to school. About going to his normal job as a paper pusher for the big corporations. How did he ever end up here?
<<case 5>>You strike up a conversation with Roe while he works. He seems happy to share some insight on surviving here, though you know you've done well for yourself. You open up a bit about the place you live, and his eyes seem to light up a bit.
@@.roe;Roe: Sounds like you've got it made. Good for you.@@
<<case 6>>You strike up a conversation with Roe while he works. The only thing he seems interested in talking about right now is Haddie, his daughter. He speaks so highly of her, yet doesn't quite know how to convey his love for her in person.
He mentions being afraid of being too harsh on her. You try to assure him that she knows he loves her, but he scoffs at your remark.
<<case 7>>You settle down beside Roe while he works, and he looks at you with mild curiosity. He starts talking about random trinkets, showing you small pieces of scrap metal figurines that he's yet to give Haddie. There's a whole crate full.
You wonder if he's ever going to give them to her, or if it would break the illusion of the tough rock that he thinks he is supposed to be.
<<case 8>>Roe pauses his work to listen to you talk about the old days. Your life before the outbreak, and the people that you used to hold dear. He opens his mouth as if to say something, but quickly closes it again.
Sometimes, all we need is someone to distract us a bit.
<<case 9>>You strike up a conversation with Roe while he works. He talks about his friends and family. He talks about Haddie. He talks about how he feels like he has to be a rock for her an everyone else here. It's almost like he's cracking, but he seems to hold it together.
You listen, realizing how much both of you needed this pause.
<<case 10>>Roe grunts in acknowledgment as you approach. You start talking about the old world, and he seems to relax a bit. He shares some memories of his life before the collapse, the people he knew, and the things he misses.
The conversation lingers, a rare connection in a harsh world.
<</switch>><<setRoe 1>>
<<link [[Keep chatting (0:20)|freightMechBayRoeChat]]>><<addmins 20>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>You approach Haddie. She hasn't seen you yet, busy juggling a crate of fuel cells and a stack of tools. You put a hand on her shoulder, and she yelps, almost dropping the crate.
<<if visited() is 1>>@@.haddie;Haddie: Ah! Sorry, just... startled. I apologize for my father. Roe? He can be a bit... uptight.@@
You nod and smile at her, reasuring her that she's safe.<<else>>@@.haddie;Haddie: Ah! Sorry, just... startled.@@<</if>>
<<if $haddie lt 3>><<link [[Offer to help (0:01)|freightMechBayHaddieHelp]]>><<addmins 1>><</link>><<else>>@@.red;Offer to help@@ <em>(Haddie has already accepted your help.)</em><</if>>
<<if $haddie gte 6>><<link [[Chat (0:20)|freightMechBayHaddieChat]]>><<addmins 20>><</link>><<else>>@@.red;Chat@@ <em>(You need to build more rapport with Haddie first.)</em><</if>>
<<if $haddie gte 30>><<link [[Check on her (0:30)|freightMechBayHaddieCheck]]>><<addmins 30>><</link>><<else>>@@.red;Check on her@@ <em>(Haddie doesn't trust you enough.)</em><</if>>
<<if $haddie gte 60>><<link [[Offer a disctraction (0:45)|freightMechBayHaddieDistract]]>><<addmins 45>><</link>><<else>>@@.red;Offer a distraction@@ <em>(Haddie doesn't trust you enough.)</em><</if>>
<<link [[Smile and step back (0:01)|freightMechBay]]>><<addmins 1>><</link>>You offer to help Haddie with her work. She looks relieved, then quickly changes expression.
@@.haddie;Haddie: Uhm.. I'd love your help, but can you maybe just sort cells for now?@@
<<setHaddie 3>>
@@.you;You: Of course, Haddie. I'd love to help you sort cells.@@
She smiles a big smile.
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>><<switch random(1, 10)>>
<<case 1>>You strike up a conversation with Haddie while she works. She seems eager to talk, her eyes lighting up as she shares stories about her life before the Collapse, her dreams for the future, and her frustrations with Roe's gruff demeanor.
It seems like the both of you needed that little time away to just chat like two girls again.
<<case 2>>You settle beside Haddie as she sorts through a pile of tangled wires.
She talks easily while her hands keep moving, her voice carrying fragments of memory and hope. The work seems lighter with someone to share it, and you both linger in the rhythm of quiet companionship.
<<case 3>>Haddie pauses in her task of stacking crates, her words spilling out in bursts of recollection and daydreams. She speaks of things lost and things yet to come, her tone shifting between wistful and determined.
For a moment, the workshop feels less like survival and more like friendship.
<<case 4>>As Haddie kneels to patch a torn sleeve, she lets her thoughts wander aloud. She recalls fleeting details of the old world, mixes them with frustrations of the present, and threads them together with fragile hopes.
You listen, realizing how much both of you needed this pause.
<<case 5>>Haddie hums softly while she works, her tune breaking into half-formed stories. She talks about the Collapse not as tragedy but as a backdrop to resilience, her voice steady even when her hands falter.
You find yourself drawn into her rhythm, grateful for the shared moment.
<<case 6>>You fall into easy conversation as Haddie sorts through a pile of old fuel cells. Her words flow freely, and the joy on her face is showing. She seems to really appreciate your company in times like these.
It seems like both of you could use a friend.
<<case 7>>Haddie pauses in her work to share some stories of the old world, and the things that she experienced. Things she misses, like school. Even though she was bullied, it was much better than this.
You reminisce with her for a while, both of you finding comfort in the shared memories.
<<case 8>>As Haddie works, she opens up about her dreams for the future. She talks about wanting to leave the Freight Yard one day, to see the world beyond the walls.
Her eyes sparkle with hope, and you can see how much she yearns for something more
<<case 9>>Haddie assembles a small crate fit for a few fuel cells while you speak with her. Seemingly to take her mind off tough conversations. You spend some time talking about her friends and what the day to day life was back before all this.
Back when things were better...
<<case 10>>You and Haddie share a quiet moment as she patches up a torn piece of clothing. She talks about her family, the people she lost, and the ones she hopes to find again someday.
The conversation lingers, a rare connection in a harsh world.
<</switch>><<setHaddie 1>>
<<link [[Keep chatting (0:20)|freightMechBayHaddieChat]]>><<addmins 20>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>Life around these parts is not easy, and she seems a bit distractred. She's humming a nursery rhyme from the old days, and it seems to calm her just a bit.
You put your hand on her shoulder to check up on her, and she yelps. She turns around and embraces you in a warm hug. You squeeze her tight and whisper into her ear that it is all going to be alright.You grab Haddie's hand and pull her away into a desolate crevice. Not many people seem to roam around these parts of the freight yard. You'll have the place for yourself.
<<link [[Play Rock Paper Scissors (0:05)|freightMechBayHaddieRockPaperScissors]]>><<addmins 5>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>><<silent>><<set $a to ["rock","paper","scissors"].shuffle()>>
<<if ndef $rpsHaddie>><<set $rpsHaddie to 0>><</if>>
<<if ndef $rpsPlayer>><<set $rpsPlayer to 0>><</if>>
<<if ndef $rpsTimesLost>><<set $rpsTimesLost to 0>><</if>>
<<if ndef $rpsTimesWon>><<set $rpsTimesWon to 0>><</if>>
<</silent>>\
You decide to try and beat her in rock, paper, scissors. First to three wins?
<<do tag "rpsWinner">>Haddie's wins: $rpsHaddie
Your wins: $rpsPlayer<</do>>
<<if $rpsHaddie lt 3 || $rpsPlayer lt 3>><span id="rps-game"><<nobr>>
<<link "Rock">><<replace "#rps-game">>
<<if $a[0] is "paper">>You chose rock.<br>Haddie chose paper. You lost.<<set $rpsHaddie += 1>><<redo "rpsWinner">>
<<elseif $a[0] is "rock">>You chose rock.<br>Haddie chose rock. You drew.
<<else>>You chose rock.<br>Haddie chose scissors. You won.<<set $rpsPlayer += 1>><<redo "rpsWinner">><</if>><</replace>>
<</link>> |
<<link "Paper">><<replace "#rps-game">>
<<if $a[0] is "scissors">>You chose paper.<br>Haddie chose scissors. You lost.<<set $rpsHaddie += 1>><<redo "rpsWinner">>
<<elseif $a[0] is "paper">>You chose paper.<br>Haddie chose paper. You drew.
<<else>>You chose paper.<br>Haddie chose rock. You won.<<set $rpsPlayer += 1>><<redo "rpsWinner">><</if>><</replace>>
<</link>> |
<<link "Scissors">><<replace "#rps-game">>
<<if $a[0] is "rock">>You chose scissors.<br>Haddie chose rock. You lost.<<set $rpsHaddie += 1>><<redo "rpsWinner">>
<<elseif $a[0] is "scissors">>You chose scissors.<br>Haddie chose scissors. You drew.
<<else>>You chose scissors.<br>Haddie chose paper. You won.<<set $rpsPlayer += 1>><<redo "rpsWinner">><</if>><</replace>>
<</link>>
<</nobr>></span><<else>>Someone has won!<</if>>
<<do tag "rpsWinner">><<if $rpsHaddie is 3>>Haddie won! <<set $rpsTimesLost += 1>><<link [[Play again? (0:05)|freightMechBayHaddieRockPaperScissors]]>><<addmins 5>><<unset $rpsHaddie, $rpsPlayer, $a>><</link>><<elseif $rpsPlayer is 3>>You won! <<set $rpsTimesWon += 1>><<link [[Play again? (0:05)|freightMechBayHaddieRockPaperScissors]]>><<addmins 5>><<unset $rpsHaddie, $rpsPlayer, $a>><</link>><<if $rpsTimesWon gte 3 && lastVisited("freightMechBayHaddieRockPaperScissorsClaimVictory") gt 59>><br><<link [[Claim victory (0:20)|freightMechBayHaddieRockPaperScissorsClaimVictory]]>><<addmins 5>><<unset $rpsHaddie, $rpsPlayer, $a>><</link>><<else>><br>Haddie is still comming down from your latest claim. Give her some time to rest.<</if>><<else>><<link [[Play again (0:05)|freightMechBayHaddieRockPaperScissors]]>><<addmins 5>><</link>><</if>><</do>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><<unset $rpsHaddie, $rpsPlayer, $a>><</link>>You decide to claim your many victories over Haddie. Your eyes fill with lust, and it is almost as if you can't control it. You feel like a predator, staring into the scared eyes of its prey. Of course, Haddie seems to be into this. Chaos is almost all she knows after all. You feel yourself getting wet from the idea of pouncing at her.
<<setArousal 20>> | <<setLust 2>>
She pouts and presents a meek pose at you, almost toying with you, luring you in. Is she really in control here? Can't have that now, can we?
You grab her hand and pull her further away from the small amount of people passing through. You'll want to be completely alone for this.
You slam her against the wall and give her a passionate kiss to commence the pleasure that you have planned for her.
[img[img/locations/freightyard/haddie/rpsWinKiss.webp]]
@@.haddie;Haddie: Eep!@@
How cute. You haven't even begun yet!
<<setCorrupt 1>>
<<switch random(1, 3)>><<case 1>>[img[img/locations/freightyard/haddie/rpsWinLick1.webp]]<<case 2>>[img[img/locations/freightyard/haddie/rpsWinLick2.webp]]<<case 3>>[img[img/locations/freightyard/haddie/rpsWinLick3.webp]]<</switch>>
You spend some time going at each other, before being interrupted by a random person coming your way. You hurry up and get dressed before emerging from your hiding space as if nothing has happened.
Haddie seemed to really enjoy herself. She likes you a bit more for this.
<<setHaddie 2>><<setInhib -1>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><<unset $rpsHaddie, $rpsPlayer, $a>><</link>>The forklift lies scattered across the floor - gears, panels, and wiring laid out in a precise pattern only Roe could decipher. Haddie notices you getting close and quickly waves you back from a cluster of delicate parts.
There might be something useful here... if you're careful.
<<scavenge>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>The storage cage is crammed with metal shelves, each stacked with tagged scrap sorted by weight and material. Roe's messy handwriting covers most of the tags; Haddie's tidy corrections sit beside them like small apologies.
The lock hangs open. A handwritten note nearby reads:
"If you've got a minute, sort something." -R
Looks like a volunteer job. No promises, but the Mech Bay always remembers who helps.
<<link [[Sort scrap (1:00)|freightMechSortScrap]]>><<addmins 60>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>You spend some time sorting through the scrap, organizing pieces by type and size. It's tedious work, but it gives you a chance to familiarize yourself with the various materials and tools Roe and Haddie use daily.
<<setRoe 1>><<setMarks 1>><<set $scrapSorted += 1>>
@@.em;<<switch random(1, 20)>>
<<case 1>>You sort a handful of metal plates into the correct bin. Nothing unusual turns up.
<<case 2>>A stack of bent screws gets tossed into the "unusable" crate. Routine work.
<<case 3>>You wipe grime off a pair of washers and slide them into the steel bin.
<<case 4>>You move a bundle of wires from one shelf to another. Simple, but necessary.
<<case 5>>A few pieces of dented sheet metal clatter into the scrap pile. Just another handful sorted.
<<case 6>>You find a tag with Roe's handwriting so sloppy you can't tell if it says "iron" or "fire." You pick the bin that seems less dangerous.
<<case 7>>Something shifts on the shelf above you and a shower of dust rains down. Haddie laughs nervously from across the room.
<<case 8>>You uncover a piece of old machinery stamped with a pre-Collapse corporate logo. For a moment, the sight makes your chest tighten.
<<case 9>>A metal plate slips from your hand and crashes to the floor. Roe doesn't even look up - he just shouts, "Careful, dammit!"
<<case 10>>You notice two conflicting tags on the same part - one in Roe's handwriting, one in Haddie's. You pick the more optimistic option.
<<case 11>>A sealed crate on the bottom shelf rattles faintly as you brush past. Probably loose bolts... you hope.
<<case 12>>Tucked behind a rusted crate, you spot a mislabeled piece of high-grade steel disguised as junk. Someone either made a mistake or tried to hide it.
<<case 13>>The draft sneaking through the cage makes a loose tag flutter, whispering against the metal like something alive.
<<case 14>>Through the shelving, you catch faded voices - Haddie asking Roe if he's "really leaving it that way." Roe mutters something back you can't make out.
<<case 15>>Haddie hums a soft tune while she works. She stops abruptly when she realizes you're listening.
<<case 16>>You find a carefully folded rag tucked behind the gears, still damp with oil. Someone is saving it for later work.
<<case 17>>A shelf groans under shifting weight as you move parts around. You freeze, but it settles... this time.
<<case 18>>A bolt rolls off a crate and disappears into the shadows. You hear it land somewhere far under the shelving.
<<case 19>>Small footprints in the dust loop behind the storage cage and vanish under a tangled coil of wiring. A child? Haddie denies knowing anything.
<<case 20>>Roe mutters about "the old days when people respected tools," sounding half nostalgic, half ready to throw a wrench.
<</switch>>@@
You've helped Roe. Helping others doesn't go unnoticed these days.
<<link [[Sort more scrap (1:00)|freightMechSortScrap]]>><<addmins 60>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>The workbench is cluttered with cracked fuel cells, thin tools, and a hand-painted sign that reads: "Careful. These explode." Most people seem to take that literally. The air here smells sharp, metallic, and a little too warm.
Haddie steps in close the moment you reach for a tool, her voice tense but hopeful.
@@.haddie; Haddie: Um, okay, I'll watch. Just... don't poke anything that's leaking.@@
It's slow, delicate work. One slip could mean a ruined cell - or worse.
<<link [[Sort Fuel Cells (1:00)|freightMechSortFuelCells]]>><<addmins 60>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>You carefully sort through the cracked fuel cells, separating the stable ones from those that are leaking or damaged. Haddie watches closely, occasionally offering tips on handling the more volatile cells.
<<setHaddie 1>><<setMarks 1>>
<span style="color:lightyellow"><<switch random(1, 20)>>
<<case 1>>You pry open a damaged cell and scrape out the remaining charge. Not much, but usable.
<<case 2>>A cracked casing crumbles in your hands. The cell is a total loss.
<<case 3>>You clean the contacts on a half-dead cell. It hums faintly - barely alive.
<<case 4>>You sort a pile of ruined housings into the scrap bin. Routine work.
<<case 5>>One cell leaks a thin trail of coolant. You seal it off before Haddie notices.
<<case 6>>You manage to extract a tiny reservoir of clean charge. Haddie's eyes widen.
@@.haddie;Haddie: That's... actually good!@@
<<case 7>>The cell slips in your grip, and the delicate innards collapse. Haddie winces but says nothing.
<<case 8>>A sharp hiss erupts from a nearby cell. Haddie yelps, Roe curses from across the room, and everyone freezes until it dies out.
<<case 9>>Haddie leans in with surprise. "Wow! You handled that connector better than I do."
<<case 10>>@@.haddie;Haddei: You're squeezing it too hard.@@
Haddie snaps, then immediately softens.
@@.haddie;Haddie: Sorry, just... careful.@@
<<case 11>>A cell gives off a faint blue glow for a moment, then dies completely. Haddie scribbles a note: "Interesting."
<<case 12>>You find an older model fuel cell - thicker casing, outdated but reliable. Roe grunts approvingly.
<<case 13>>The smell of burned coolant drifts across the bench. Haddie wrinkles her nose and nudges a dead cell into the waste bin with a stick.
<<case 14>>A tiny spark pops between two connectors. Haddie jumps - and then pretends she didn't.
<<case 15>>You spot someone's initials carved into the underside of a fuel cell casing. Haddie whispers, "People get bored."
<<case 16>>A badly cracked cell crumbles unexpectedly, scattering brittle pieces across the bench. Haddie sweeps them up with a sigh.
<<case 17>>The table shakes as a cell reacts strangely - just a tiny vibration - but enough to raise everyone's heartbeat for a moment.
<<case 18>>You pick up a cell that's warm to the touch. Haddie takes it from you quickly. "Hot means *bad.*"
<<case 19>>A faint buzzing noise rises from one of the older cells. Roe glares over.
@@.roe;Roe: If it starts smoking, yell.@@
<<case 20>>A small vent pops open with a sharp click. Haddie instinctively grabs your sleeve before realizing it's harmless.
<</switch>></span>
You've helped Haddie. Helping others doesn't go unnoticed these days.
<<link [[Sort more fuel cells (1:00)|freightMechSortFuelCells]]>><<addmins 60>><</link>>
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>The tool wall is a chaotic array of wrenches, hammers, and specialized instruments hanging from hooks and magnets. Each tool has a designated spot, though some are missing or out of place. A faded sign above reads: "Return tools after use. Lost tools = lost creds."
<<link [[Go back to the Mechanical Bay (0:01)|freightMechBay]]>><<addmins 1>><</link>>You stand in the middle of the old Freight Yard office. Dusty desks, broken chairs and faded maps cover the walls. Somehow still looking full of life. The air smells of old paper, rust and a hint of midlew, but the people here call it home. You can't argue. It's not like the rest of the world looks any better than this.
A series of glass offices stand on a raised platform, overlooking the main hall. These seem to be in use still, with flickering lights and muffled voices. The entire thing has been turned into a makeshift medbay.<<if visited() is 1>> A woman in scrubs moves between the rooms, checking on patients and organizing supplies. You can barely make out her nametag - "Nurse Rayna".<</if>> There's a few stands in some of the cubicles. Handmade <em>"Items for Sale"</em> signs hang heavy over the near-empty spaces.
<<link [[Speak to Nurse Rayna (0:01)|freightOfficeNurseRayna]]>><<addmins 1>><</link>>
<<if $rayna lt 3>>@@.red;Help around the cots@@ <em>(You should speak to Nurse Rayna first.)</em><<else>><<link [[Help around the cots (1:00)|freightOfficeHelpRayna]]>><<addmins 60>><</link>><</if>>
<<link [[Check on the sleeping cots (0:01)|freightOfficeSleepingCot]]>><<addmins 1>><</link>>
<<if visited("freightOfficePatients") is 0>><<link [[Look to patients (0:01)|freightOfficePatients]]>><<addmins 1>><</link>><<else>><<link [[Speak to Benji (0:01)|freightOfficeBenji]]>><<addmins 1>><</link>><</if>>
<<link [[View wares (0:01)|freightOfficeWares]]>><<addmins 1>><</link>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>>You approach Nurse Rayna, who briefly looks up from her clipboard to acknowledge you. She seems busy, but willing to spare a moment.
<<if $player.hp lt 50>>@@.rayna;Nurse Rayna: My God. Let's get you patched up.@@
@@.pos;+ Health@@<<set $player.hp to $player.hpMax>><<else>>@@.rayna;Nurse Rayna: What can I help you with? I'm busy.@@<</if>>
<<if $rayna lt 3>><<link [[Offer to help (0:01)|freightOfficeRaynaHelp]]>><<addmins 1>><</link>><<else>>@@.red;Offer to help@@ - <em>(Rayna has already accepted your help.)</em><</if>>
<<if $rayna gte 6>><<link [[Chat (0:20)|freightOfficeRaynaChat]]>><<addmins 20>><</link>><<else>>@@.red;Chat@@ <em>(You need to build more rapport with Rayna first.)</em><</if>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>You quickly offer your hand in assistance. She looks you up and down before looking back at her clipboard. Someone nearby coughs. Nothing new.
@@.rayna;Rayna: Are you quick? You need to be quick. I need you to follow me around and do as I say.@@
You nod, confidently.
@@.rayna;Rayna: Come to me anytime, and we'll dart.@@
<<setRayna 3>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>You approach Rayna. She looks at you, then begins walking. You follow her closely.
<<switch random(1,10)>>
<<case 1>>You follow Rayna between the cots as she kneels beside a wounded man. She lifts the edge of a bandage, sniffs, and nods faintly.
@@.rayna;Rayna: Hand me that clean cloth.@@
You pass it over, and she swaps the dressing in one sharp, practiced motion.
<<case 2>>Rayna crouches over a sleeping patient, counting breaths under her breath.
@@.rayna;Rayna: Steady enough, mark it down.@@
You jot the number on a scrap of paper she presses into your hand, already moving to the next cot.
<<case 3>>A cot farther down holds a woman clutching her arm. Rayna sighs softly.
@@.rayna;Rayna: Hold the lantern steady.@@
You raise it as she threads a needle with shaking fingers. Her hands never falter, even when the patient winces.
<<case 4>>Rayna stops at a crate filled with jars and bottles.
@@.rayna;Rayna: They shook during the night, some leaked.@@
You help her wipe sticky residue from the lids, the smell of bitter herbs burning your nose.
<<case 5>>At the far cot, a young man tosses under thin blankets. Rayna hands you a damp cloth.
@@.rayna;Rayna: Forehead and neck, keep rotating them. It helps.@@
She mixes something at a small table while you tend to the patient's heat.
<<case 6>>Rayna kneels by a bucket of steaming water.
@@.rayna;Rayna: These need to go back in.@@
She looks at you, placing metal tools into your hands.
As you dip them, she watches the water's surface like it might tell her something she's missed.
<<case 7>>Rayna stops beside an older survivor, placing two fingers lightly on their wrist.
@@.rayna;Rayna: Still here...@@
She nods for you to adjust the pillow. The survivor gives a faint smile that makes Rayna's shoulders soften for the first time all day.
<<case 8>>She reaches a cot where a young girl stares blankly at the ceiling.
@@.rayna;Rayna: Hold her head steady.@@
You brace the patient as she lifts each eyelid with clinical precision, humming a single, steady note as she works.
<<case 9>>Rayna exhales sharply when she sees the dried blood.
@@.rayna;Rayna: Not again...@@
She gestures for you to pour antiseptic over gauze. Once damp, she presses your hand to the wound while she prepares stitches.
@@.rayna;Rayna: Don't flinch. They'll feel it if you do.@@
<<case 10>>As you help her fluff a pillow and straighten a blanket, Rayna leans close and mutters.
@@.rayna;Rayna: Half of healing is comfort. The rest is luck.@@
She straightens up, gestures for you to follow, and moves on to the next cot without another word.
<</switch>><<setMarks 1>><<setRayna 1>>
<<link [[Follow her (1:00)|freightOfficeHelpRayna]]>><<addmins 60>><</link>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>><<switch random(1, 10)>>
<<case 1>>You strike up a conversation with Rayna. She seems busy, but still takes the moment to lend an ear. It almost feels like she's interested in what you have to say, but only for a moment. A cough is heard nearby, and Rayna quickly turns her attention to that. It's understandable. Expected.
<<case 2>>Rayna is busy sorting through makeshift medical supplies as you strike up a conversation. She tells you mostly about what she used to do before the outbreak. Who she was and what she stood by back then. Now, all she cares about is the patients, and taking one day after another.
<<case 3>>You ask her about some of the protocols in place here, which she quickly sweeps away. She tells you that the only protocol in place here is to get the patient better, no matter the cost. We can not afford to lose anymore people. You nod in agreement and understanding.
<<case 4>>As you're speaking, you notice Rayna fidgeting with some medical tools. People around you are coughing, but no more than usual. This is what life is now. Sickness, death, stress and a lot of emotions. Rayna puts down her tools and gives you her full attention for a short moment, telling you about old experiences.
<<case 5>>You tell her about the life you've built for yourself, and the life you're coming from. She smiles softly at you, something you rarely see. You tell her some more stories before asking about her. Her demeanor changes almost instantly, and she shuts down. She tells a few key details, but nothing more.
<<case 6>>Memories flow through your mind, and you can't help but speak freely in her presence. She has that effect on you. Maybe it's the safety of a nurse, or the sanctuary of a medical clinic that does it, but somehow you feel safe. Safer than most days, at least. As safe as one can be.
<<case 7>>As you're talking, you begin reminiscing about the old world. A place before the outbreak, somewhere safe. Somewhere warm. You tell her how you used to vacation to get tan. You talk to her about what you miss, and she shares small stories from her own.
<<case 8>>As she checks supplies, Rayna talks more freely than usual, explaining how she learned to improvise treatments and tools out of whatever she could salvage. She tells stories of patching people up with nothing but instinct, luck, and grit. There's a glimmer of satisfaction in her expression - as if teaching you these things helps her believe the knowledge won't die with her.
<<case 9>>Rayna takes a moment to rest against a counter, rubbing at the tension in her shoulders. She doesn't complain, but she allows herself a few quiet admissions about how exhausting it all is. She mentions the toll it takes on her hands, her back, her sleep - but there's a stubborn pride in how she keeps going anyway. You stay beside her, sharing the stillness.
<<case 10>>While Rayna cleans her tools, she reflects on her work with a kind of weary acceptance. She talks about the weight of responsibility, the people she couldn't help, the ones who surprised her, and the ones who never stood a chance. You listen in silence, knowing she doesn't need comfort - just the presence of someone sturdy enough not to flinch.
<</switch>><<setRayna 1>>
<<link [[Keep chatting (0:20)|freightOfficeRaynaChat]]>><<addmins 1>><</link>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>Some of the cots are occupied by people resting, while others are empty.
You should be able to find some rest here if you need it.
<<link [[Lie down in a cot (0:01)|freightOfficeSleep]]>><<addmins 1>><</link>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>You strip down to nothing and lay in a cot. Your nude skin against the rough covers are an experience you'll hardly let go of. You feel your body settling in, and you mind go to ease.
<<countSleep>>
<<link [[Just sleep (??:??)|freightOfficeSleepInclude]]>><<sleepUntilRested>><</link>>
<<link [["Sleep 8 hours (8:00)[" + _wakeUp1 + "]"|freightOfficeSleepInclude]]>><<sleepHours 8>><</link>>
<<link [["Sleep 4 hours (4:00)[" + _wakeUp2 + "]"|freightOfficeSleepInclude]]>><<sleepHours 4>><</link>>
<<link [["Sleep 2 hours (2:00)[" + _wakeUp3 + "]"|freightOfficeSleepInclude]]>><<sleepHours 2>><</link>>
[[Change your mind|freightOfficeSleepingCot]]You fall asleep fast. You toss and turn in your bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<if $brotherRel gt 0>> Your brother lies beside you.<</if>>
<<switch random(1,5)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<case 3>>[img[img/main/mainSleep3.webp]]<<case 4>>[img[img/main/mainSleep4.webp]]<<case 5>>[img[img/main/mainSleep5.webp]]<</switch>>
<<switch random(1,3)>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
[[Wake up|freightOfficeSleepingCot]]You dart between the office stalls, some occupied by people resting on makeshift cots. A few look up as you approach, their eyes tired but hopeful. One of them speaks up as you enter.
<<setBenji 1>>
@@.benji;Benji: Hey... you look new. Name's Benji. Just got patched up here and ready to get back out there! Nurse Rayan's told me she doesn't think so, but I can feel it in my bones that I am ready! It least, what's left of them.@@
He seems... Jittery. What a personality.
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>You approach Benji once again, who still looks as eager as before. His legs are covered in bandages, but he seems determined to get back on his feet.
@@.benji;Benji: Hey! Back so soon? I was just thinking about how I can't wait to get back out there. You know, I heard there's a whole lot of stuff to scavenge out in the wasteland. Maybe you could help me find some good spots?@@
<<link [[Chat (0:20)|freightOfficeBenjiChat]]>><<addmins 20>><</link>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>><<switch random(1, 10)>>
<<case 1>>You strike up a conversation with Benji. He seems happy to share his thoughts on the world with you, and he speaks so fondly of the old days. He tells you that he used to have many friends and family, but most of them are gone now. His demeanor changes. He tells you that he sometimes is afraid that he's going to be here for good.
You reasure him that things will get better, and that he's not alone.
A smile forms on his face.
<<case 2>>You sit beside Benji as he gently adjusts his blanket, his hands trembling from lingering weakness. He talks about the small routines he used to keep before the collapse - morning walks, late-night calls with friends, little things that felt unimportant at the time.
When he mentions how quiet everything feels now, his voice falters. You remind him that the Freight Yard may be loud and rough, but it's full of people who care.
The reassurance steadies him, and he relaxes slightly against the cot.
<<case 3>>Benji tells you about the cabin his uncle once owned, a place deep in the woods where he used to spend his summers laughing, swimming, and exploring. His expression softens as he describes the warmth of those memories.
Then he admits he doesn't know if the cabin - or his uncle - is still out there.
You promise him that the world is never as empty as it feels. The hope in his eyes flickers back to life.
<<case 4>>As you help Benji sit up, he begins recalling the day the toxins spread - how everyone ran, how he barely made it to shelter. He speaks slowly, as if afraid of the memories themselves.
You listen closely, and when he hesitates, you gently guide him back to calmer thoughts.
By the time he settles again, the fear in his voice has eased, replaced by gratitude for having someone to talk to.
<<case 5>>Benji shares a story about a friend he once had - someone who could always make him laugh, even on the worst days. His smile fades as he admits they were separated in the chaos.
You place a hand on his shoulder and remind him that lost doesn't always mean gone.
The tension in his posture loosens, and he breathes deeply, as if letting go of a weight he's carried too long.
<<case 6>>While adjusting the cot's worn bedding, Benji tells you how he used to collect little trinkets - buttons, coins, scraps of paper with doodles. He loved the idea of preserving the ordinary.
Now he worries the world doesn't have enough ordinary left to keep.
You remind him that small joys still exist, even in places like this. The thought draws a quiet, grateful smile from him.
<<case 7>>Benji hesitates before speaking, but eventually he shares how lonely the nights can feel when the coughing fits keep him awake. He admits he sometimes listens for footsteps, hoping someone might check on him.
You assure him that people care more than he realizes, and that he's not forgotten.
He bows his head, touched by the truth of your words.
<<case 8>>As you hand him a cup of warm water, Benji reflects on how much the world has changed. He talks about old hobbies he never got to finish, projects he'd abandoned when the world fell apart.
He worries he'll never get the chance to try again.
You remind him that recovery takes time - and that second chances still exist in the cracks of this broken world. His eyes brighten at the thought.
<<case 9>>Benji fiddles with a loose thread on his blanket as he tells you about a promise he once made to his younger sister - to always protect her. He doesn't know where she ended up.
He shares it with you hesitantly, as though speaking the memory aloud hurts.
You tell him that holding onto that promise is a sign of his strength, not his failure. He nods, comforted in a way he didn't expect.
<<case 10>>Benji admits he worries the people here see him as a burden, that his illness and fear hold everyone back. He tries to laugh it off, but the insecurity in his voice betrays him.
You assure him that he matters, that his presence is felt and appreciated.
The relief on his face is unmistakable, his shoulders easing as the doubt slips away.
<</switch>><<setBenji 1>>
<<link [[Keep chatting (0:20)|freightOfficeBenjiChat]]>><<addmins 20>><</link>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>>You stand at the entrance of the cubicle. The for sale sign hangs directly above your head. There's old paperwork scattered all over the floors in here. Some are wet with water, some are wet with something else. Looks like coffee. There seems to be only a few items for sale here. Some materials and resources. A bit of gear. Not a lot, but more than you had expected from a world in disarray.
You have {{$yardMarks}} marks to spend here.
<<do tag "officeShop">>
<<if $yardMarks gte 2>><<link "Buy 1x canned food - 2 Marks">><<set $inventory.canned_food += 1, $yardMarks -= 2>><<redo "officeShop">><</link>><<else>>1x Canned Food: You can't afford this. It is priced at 2 Yard Marks.<</if>>
<<if $yardMarks gte 3>><<link "Buy 1x water bottle - 3 Marks">><<set $inventory.water_bottle += 1, $yardMarks -= 3>><<redo "officeShop">><</link>><<else>>1x Water Bottle: You can't afford this. It is priced at 3 Yard Marks.<</if>>
<<if $yardMarks gte 4>><<link "Buy 1x scrap metal - 4 Marks">><<set $inventory.scrap_metal += 1, $yardMarks -= 4>><<redo "officeShop">><</link>><<else>>1x Scrap Metal: You can't afford this. It is priced at 4 Yard Marks.<</if>>
<<if $yardMarks gte 7>><<link "Buy 2x scrap metal - 7 Marks">><<set $inventory.scrap_metal += 2, $yardMarks -= 7>><<redo "officeShop">><</link>><<else>>2x Scrap Metal: You can't afford this. It is priced at 7 Yard Marks.<</if>>
<<if $yardMarks gte 12>><<link "Buy 1x circuit board - 12 Marks">><<set $inventory.circuit_board += 1, $yardMarks -= 12>><<redo "officeShop">><</link>><<else>>1x Circuit Board: You can't afford this. It is priced at 12 Yard Marks.<</if>>
<<if $yardMarks gte 120 && $inventory.foot.count("raiderboots") is 0>><<link "Buy Raider Boots - 120 Marks">><<set $yardMarks -= 120>><<pickupGear foot raiderboots>><<redo "officeShop">><</link>><<elseif $inventory.foot.includes("raiderboots")>>You have bought the raider boots. Their space is empty.<<else>>Raider Boots: You can't afford this. It is priced at 120 Yard Marks.<</if>>
<<if $yardMarks gte 310 && $inventory.center.count("raiderjacket") is 0>><<link "Buy Raider Jacket - 310 Marks">><<set $yardMarks -= 310>><<pickupGear center raiderjacket>><<redo "officeShop">><</link>><<elseif $inventory.center.includes("raiderjacket")>>You have bought the raider jacket. Its space is empty.<<else>>Raider Jacket: You can't afford this. It is priced at 310 Yard Marks.<</if>>
<</do>>
<<link [[Go back to the office (0:01)|freightOffice]]>><<addmins 1>><</link>><<if visited() is 1>>You climb the metal stairs and step onto the catwalks, where the air feels thinner and colder. The entire depot stretches out below you - containers, shadows, and flickering lights forming a maze only a few ever see from above. The walkways themselves groan with every step, old metal flexing under long-forgotten weight limits.
Some sections are warped or missing bolts, forcing you to test each panel before trusting it. The crane controls sit dormant, coated in dust, while empty shell casings and stashed supplies hint at the catwalks' new purpose.
A lone figure stands near the far railing, blending into the dim orange glow of the overhead lamps. He doesn't turn as you approach.
@@.jex;Stranger: Careful where you step.@@
He murmurs.
@@.jex;Stranger: Not all of this up here wants you alive.@@
He finally shifts just enough for the light to catch his face.
@@.jex;Jex: Name's Jex. I watch things.@@
Then he goes still again - like he never spoke.<<else>>You stand on the high catwalks above the depot, metal panels creaking beneath your boots. The view stretches across the entire Cargo Hall, broken only by rusted crane arms and hanging cables. Old bullet casings and small stashes mark where people meet, hide things, or keep lookout.
Some parts of the walkway bow under your weight, forcing careful steps. Jex lingers nearby as always - quiet, watching, impossible to read.<</if>>
<<link [[Chat with Jex (0:20)|freightOverlookChatJex]]>><<addmins 20>><</link>>
<<link [[Walk around the catwalk (0:25)|freightOverlookWalk]]>><<addmins 25>><</link>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>><<silent>><<set $jex to 0>><</silent>><<switch random(1, 10)>>
<<case 1>>You decide to strike up a conversation with Jex. He seems like he doesn't trust you. Out here, everyone could be a danger. Or at least, that's what he says. Even so, he still takes a moment to open up about his life before all this broke lose. A reminder about a better time.
<<case 2>>You stand beside Jex, leaning over the railing just like him. He talks about the old days like you're an old friend of his. The world before the outbreak, the people he knew, and the things he misses. You listen, realizing how much both of you needed this pause.
<<case 3>>You strike up a conversation with Jex while standing on the catwalk. He doesn't say much, which is alright. It gives you some time to think about what you want to say to him. How you want to approach him. After a couple of minutes, you decide to tell him about your life as it is now. He smiles at you, then looks away.
<<case 4>>Jex leans against the railing, his eyes scanning the horizon. You ask him what he sees out there. He shrugs, saying it's nothing but ruins and shadows now. Still, he admits he keeps looking, hoping one day he'll spot something worth believing in again. For a moment, you both stand in silence, sharing that fragile hope.
<<case 5>>You mention the sound of the wind rushing through the broken structures. Jex chuckles, saying it reminds him of the ocean he used to visit as a kid. He talks about the waves, the salt in the air, and how he never thought he'd miss something so simple. You realize how much the smallest memories matter when everything else is gone.
<<case 6>>Jex asks you about your own past. You hesitate, but eventually share a story about someone you lost. He listens quietly, not interrupting, and when you finish, he nods.
@@.jex;Jex: We all carry ghosts.@@
His words linger, heavy but strangely comforting.
<<case 7>>You ask Jex why he spends so much time up here. He shrugs, saying it's the only place where he feels a bit detached from the chaos below. The height gives him perspective, a way to see the bigger picture - even if that picture is mostly broken and scarred.
<<case 8>>Jex talks about the people he's met down in the depot - traders, scavengers, and others trying to survive. He mentions a few names, some friendly, some not so much. It's clear he's built a network of sorts, even if he prefers to keep his distance.
<<case 9>>You comment on the makeshift stashes and markings along the catwalks. Jex nods, explaining that they're part of a silent communication system among those who use these walkways. Each mark tells a story - warnings, directions, or just reminders that someone else was here.
<<case 10>>Jex glances at you, his expression unreadable. He finally speaks about trust - how hard it is to find in this world. He admits that while he's wary of most people, there's something about you that feels different. Maybe it's your willingness to listen, or perhaps just luck.
<</switch>><<setJex 1>>
@@.em;You feel a small shift in your relationship with Jex.@@
<<link [[Turn around (0:01)|freightOverlook]]>><<addmins 1>><</link>><<switch random(1,20)>>
<<case 1>>You take a slow walk along the catwalk, the grate flexing ever so slightly beneath your boots. Looking down, you watch a pair of workers move crates across the floor like ants. A loose bolt skitters past your foot, then slips through a gap and falls with a distant metallic clink that echoes far longer than it should.
<<case 2>>You move carefully along the railing as a cold draft sneaks through a seam in the ceiling panels. The wind hisses past your ear and sets a hanging cable swaying. From up here, the depot feels colder, quieter, like you're walking through the lungs of an exhausted machine.
<<case 3>>As you stroll the catwalk, you spot a small hidden stash tucked behind a rusted beam: a rolled-up rag, an empty casing, and a crushed ration bar. Someone must've left it in a hurry. Below, a fire barrel flickers weakly, its glow barely reaching the steel under your feet.
<<case 4>>You take another step and the metal beneath you groans in protest. The entire section shifts half an inch, sending a sharp twinge of fear up your spine. The air smells like rust and cold dust, and every distant clang from the depot below feels unnervingly close.
<<case 5>>You trace the narrow path around an old crane arm, its hook dangling far above your head. It sways just slightly - too slightly for comfort - though nothing in the hall is moving enough to push it. A soft, rhythmic knocking comes from somewhere deep in the metal structure.
<<case 6>>You follow the catwalk toward a darker corner. Footsteps echo from another walkway, quiet and deliberate, as if someone is matching your pace. When you glance over, the platform is empty, shadows pooling in the corners like waiting shapes.
<<case 7>>You walk past a rusted junction box when you spot Jex standing at the far end of the platform, staring down at the depot floor. He doesn't acknowledge you - just taps the railing once and walks on, disappearing around a corner with the sound of his boots swallowed by the steel.
<<case 8>>You take a careful step and a spray of rust dust drifts down from the overhead beams, falling like red snow into the darkness below. The smell of old machinery rises to meet you, thick and dry, carrying hints of oil long evaporated.
<<case 9>>You stroll along the railing and notice a message scratched into the metal: If this breaks, I blame Roe. The handwriting looks rushed. You wonder how long ago someone stood here thinking the same thoughts you are now.
<<case 10>>You lean over the railing just in time to see a cargo container slam shut far below. The echo reaches you a heartbeat later, bouncing up through the depot's hollow interior. For a moment, everything is still again - too still.
<<case 11>>You find an old sniper perch: a folded cloth pad, three empty casings, and a faint scorch mark where someone once rested a hot barrel. The vantage point gives you a perfect view of half the depot... and no cover at all.
<<case 12>>You take a slow breath as a cold gust whistles through a gap in the ceiling, making a loose metal panel vibrate like a muted alarm. The sound carries across the catwalks, a long, low hum that sets your teeth on edge.
<<case 13>>As you walk, faint voices rise from the shadows below, two people arguing in hushed tones beneath the platform. Their words fade in and out, muffled by steel. You can't hear what they're saying, but the tension in their voices is unmistakable.
<<case 14>>A section of flooring dips sharply when you step on it, tipping your balance for a moment. You shift your weight and continue, pretending the jolt of adrenaline didn't hit as hard as it did. Up here, every mistake feels permanent.
<<case 15>>You spot a red chalk arrow drawn under a support beam. It points toward a narrow ladder leading up to a small maintenance platform - one that doesn't appear on any map you've seen. Someone was leaving messages for someone else.
<<case 16>>You look down through the grate at the depot floor. A passing worker's shadow grows large and distorted, stretching across the container stacks like something from a nightmare before snapping back to shape as they move out of the firelight.
<<case 17>>You brush against a hanging cable and feel a faint static tingle shoot through your fingers. The air crackles faintly around the old wiring, buzzing just enough to make your skin crawl. Somewhere overhead, electricity hums through forgotten lines.
<<case 18>>A small metal box wedged between two beams catches your eye. Inside is a folded scrap of paper, an empty wrapper, and a bit of string. Meaningless to you - important to someone else. The catwalks aren't just pathways; they're hiding places.
<<case 19>>You freeze when the walkway lets out a sudden metallic snap - a sharp sound that echoes far too loudly. The platform holds steady, but the moment lingers, making your pulse tick faster as you continue more carefully.
<<case 20>>From high above, you catch sight of Jex again. He's leaning over the railing, following something on the depot floor with laser focus. Without looking at you, he taps the metal twice - a signal, a warning, or just a habit - then goes silent once more.
<</switch>>
<<link [[Turn around (0:01)|freightOverlook]]>><<addmins 1>><</link>>You stand outside the Cargo Hall. Outside, where the old abandoned train car rows lie. Only a few people are roaming around here, and they're all wearing gas masks to protect them from the toxins. There's not a lot to see out here, other than old trains, crates and containers.
<<if $player.ap gte 1>><<link [[Scavenge (1:00)|freightTrainScavenge]]>><<addmins 60>><<setAP -1>><</link>><<else>>@@.red;Scavenge@@ <em>(You should head back inside.)</em><</if>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>>You spend some time rummaging around the old train cars. It's not a lot that you can find out here. It's cold, too.
<<scavenge>>
<<if $player.ap gte 1>><<link [[Scavenge (1:00)|freightTrainScavenge]]>><<addmins 60>><<setAP -1>><</link>><<else>>@@.red;Scavenge@@ <em>(You should head back inside.)</em><</if>>
<<link [[Go back to the Cargo Hall (0:01)|freightYard]]>><<addmins 1>><</link>><<if visited() is 1>><<silent>>
<<set $hosLoc = {
ed: { name: "Emergency Department (0:01)", hasVisited: false },
opr: { name: "Operating Room (0:03)", hasVisited: false },
icu: { name: "Intensive Care Unit (0:01)", hasVisited: false },
did: { name: "Diagnostic Imaging Department (0:01)", hasVisited: false },
lab: { name: "Laboratory (0:02)", hasVisited: false },
pharm: { name: "Pharmacy (0:04)", hasVisited: false }
}>>
<<set _amountBan = random(0,10), $bandageAmount to _amountBan>>
<<set _amountMed = random(0,5), $medkitAmount to _amountMed>>
<<set _amountAdh = random(0,10), $adhesiveAmount to _amountAdh>>
<<set _amountCir = random(0,3), $circuitAmount to _amountCir>>
<<set $hospitalExp to 0>>
<</silent>><</if>>
<<goto "hospitalInside">>[img[img/locations/hospital/hospitalInside.webp]]
You enter the <b>hospital</b>. It's run down and the paint on the walls are ruined. Hospital beds are everywhere, it's hard to look at. Imagining all the people lying in these beds, not know what was going to happen to them. There's @@.neg;dried blood@@ on the floor and most of these beds too, they're no good. @@.slowrumble;Steer clear@@.
You've explored @@.pos;$hospitalExp%@@ of the hospital.
<<showmeter 'hospital' `$hospitalExp / 100`>><<if $hospitalExp lt 100>><br><<link [[Explore the hospital (1:00)|hosExplore]]>><<addmins 60>><</link>><<else>> <em>There's nothing more to explore.</em><</if>>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $hosLoc>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
@@.em;You haven't found any locations.@@
<<else>>
@@.em;You've discovered the following locations:@@
<<for _name range _visited_locations>>
<br>
<<link [[$hosLoc[_name].name|_name]]>><</link>>
<</for>>
<</if>>
<</nobr>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/hospital/hospitalInside.webp]]
You explore the hospital. Rummaging the hospital you stumble upon<<nobr>><<set _unvisited = Object.entries($hosLoc)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<if _unvisited.length > 0>>
<<set _event = _unvisited.random().toLowerCase()>>
<</if>><</nobr>><<switch _event>>
<<case 'ed'>> the Emergency Department. It looks run down and beat up. The entire hospital does. Hopefully, there's some stuff left for you to grab here.
<<link [[Enter (0:01)|ed]]>><<addmins 1>><</link>><<set $hosLoc.ed.hasVisited to true, $hospitalExp += 27>>
<<case 'opr'>> the Operating Room. Maybe you can find some tools here. It's worth it to take a look.
<<link [[Enter (0:01)|opr]]>><<addmins 1>><</link>><<set $hosLoc.opr.hasVisited to true, $hospitalExp += 14>>
<<case 'icu'>> Intensive Care Unit. There's usually a lot of computer equipment in here. Maybe there's some circuit boards for you.
<<link [[Enter (0:01)|icu]]>><<addmins 1>><</link>><<set $hosLoc.icu.hasVisited to true, $hospitalExp += 3>>
<<case 'did'>> the Diagnostics Imaging Department. In here you may be able to get some information. There's usually a terminal somewhere in here.
<<link [[Enter (0:01)|did]]>><<addmins 1>><</link>><<set $hosLoc.did.hasVisited to true, $hospitalExp += 18>>
<<case 'lab'>> the Laboratory. Someone has written over the doors "@@.neg;остерегаться@@". Who did this?
<<link [[Enter (0:01)|lab]]>><<addmins 1>><</link>><<set $hosLoc.lab.hasVisited to true, $hospitalExp += 20>>
<<case 'pharm'>> the Pharmacy. You may be able to find some bandages or medkits here.
<<link [[Enter (0:01)|pharm]]>><<addmins 1>><</link>><<set $hosLoc.pharm.hasVisited to true, $hospitalExp += 18>>
<</switch>>
<<link [[Go back to the entrance (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insideED.webp]]
<<addmins 1>>
You enter the emergency department. There seems to be some @@.em;medkits@@ left here. A quick count let's you know there's around {{$medkitAmount}} @@.em;medkits@@ left. You could take the entire supply or take a portion of it.
<<do>><<if $medkitAmount gte 1>><<if $inventory.medkit lt 3>><<link "Grab one">><<set $inventory.medkit += 1>><<set $medkitAmount -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.medkit += $medkitAmount>><<set $medkitAmount -= $medkitAmount>><<redo>><</link>><<else>>You can't carry anymore medkits.<</if>><<else>>There's no medkits left...<</if>><</do>>
<<link [[Leave the emergency department (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insideOR.webp]]
<<addmins 3>>
<<if visited() is 1>><<set $orStock = ["bonesaw"]>><</if>>You enter the operating room. There's no medical supplies in here, even though it seems like this should be the place for it. <<do tag "bonesaw">><<if $orStock.length gte 1>>There seems to be a bonesaw here though. You should grab it.
<<link "Grab it">><<set $inventory.secondary to $inventory.secondary.concat($orStock)>><<run $orStock.deleteAll("bonesaw")>><<redo "bonesaw">><</link>><<else>>You've already taken the bonesaw that was lying here.<br>
You notice some ducttape. You could use those as @@.em;adhesives@@. There's around {{$adhesiveAmount}}. You could take the entire supply or take a portion of it.
<<do tag "adhesive">><<if $adhesiveAmount gte 1>><<link "Grab one">><<set $inventory.adhesive += 1>><<set $adhesiveAmount -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.adhesive += $adhesiveAmount>><<set $adhesiveAmount -= $adhesiveAmount>><<redo "adhesive">><</link>><<else>>There's no adhesive left...<</if>><</do>><</if>><</do>>
<<link [[Leave the OR (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insideICU.webp]]
<<addmins 1>>
You enter the intensive care unit. There seems to be some @@.em;circuits@@ left here. A quick count let's you know there's around {{$circuitAmount}} @@.em;circuits@@ left. You could take the entire supply or take a portion of it.
<<do>><<if $circuitAmount gte 1>><<link "Grab one">><<set $inventory.circuit_board += 1>><<set $circuitAmount -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.circuit_board += $circuitAmount>><<set $circuitAmount -= $circuitAmount>><<redo>><</link>><<else>>There's no circuits left...<</if>><</do>>
<<link [[Leave the intensive care unit (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insideDID.webp]]
<<addmins 1>>
You enter the Diagnostic Imaging Department. Most of the items here are broken. It seems like there's an old terminal on the desk labeled PACS. Whatever that means. Maybe it contains useful information?
<<if $termHack is true>><<link [[Log into the terminal (0:01)|DIDTerminal]]>><<addmins 1>><</link>><<else>><<link [[Hack into the terminal (0:25)|DIDHack]]>><<addmins 25>><</link>><</if>>
Aside from the terminal and a <<link "note">><<run Dialog.setup('', 'didnote');
Dialog.wiki('<<include "DIDNote">>').open()>>
<</link>>, there's not much to be found here other than patient records and some vaccine documents. Nothing useful at least. Some of the other rooms ought to have something better than this.
<<link [[Leave the department (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insideLab.webp]]
<<addmins 2>>
You enter the laboratory. <<if visited() is 1>>It's eerely clean, except for one bed. There's... something laying on it. The tag on its toe says "Sarah Morrison". She looks completely decomposed. Why is she still here? It's been so long since the last of the zombies went extinct.
All there's left is the toxic air... Whatever happened in here, it can't have been good. <<if $termHack is true>>She must be patient zero, according to the terminal in the diagnostics department. Poor Sarah. She never was allowed a normal ending to her once beautiful life.<<else>>Maybe there's some clues to who she is somewhere else in the hospital...<</if>><<else>>It's still just as clean as you left it. Sarah is still here. What a weird thing. Perhaps it's best to just leave this room. There's nothing else for you to find in here. Give Sarah some rest and space. It's the least she deserves.<</if>>
<<link [[Leave the laboratory (0:01)|hospitalInside]]>><<addmins 1>><</link>>[img[img/locations/hospital/insidePharm.webp]]
<<switch random(1,50)>><<case 1>><<set $combatReturn to "did">><<goto "combat">><</switch>><<addmins 4>>
You enter the pharmacy. There seems to be some @@.em;bandages@@ left here. A quick count let's you know there's around {{$bandageAmount}} @@.em;bandages@@ left. You could take the entire supply or take a portion of it.
<<do>><<if $bandageAmount gte 1>><<link "Grab one">><<set $inventory.bandages += 1>><<set $bandageAmount -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.bandages += $bandageAmount>><<set $bandageAmount -= $bandageAmount>><<redo>><</link>><<else>>There's no bandages left...<</if>><</do>>
<<link [[Leave the pharmacy (0:01)|hospitalInside]]>><<addmins 1>><</link>>If anyone from my squad sees this, I have been infected.
The password seems to be made up only of static ciphers.
I don't have much time left before I turn.
Do not search for me.
Brad.<div class="terminal">
\<h1>Picture Archiving and Communication System</h1>
<div id="grid"></div>
<input type="password" id="password-input" placeholder="Enter the password">
<button onclick="checkPassword()">Check</button>\
<p id="result"></p>\
\
<script>
grid = document.getElementById("grid");
gridElements = [];
password = ".)!#&%";
letters = [];
gridSize = {"width": 10, "height": 10};
passwordShift = Math.floor(Math.random() * gridSize.height) * gridSize.width
+ Math.floor(Math.random() * (gridSize.width - password.length));
letterShift = 1;
function generateLetters(count) {
for (let i = 0; i < count; i++) {
letters.push(String.fromCharCode(33 + Math.floor(Math.random() * 93)));
}
}
function createLetterElements() {
for (let i = 0; i < 100; i++) {
letterDiv = document.createElement("div");
letterDiv.classList.add("letter");
letterDiv.textContent = letters[i];
grid.appendChild(letterDiv);
gridElements.push(letterDiv);
}
}
function shiftLetters(shiftSize) {
for (let i = 0; i < gridElements.length; ) {
if (i == passwordShift) i += password.length;
else {
gridElements[i].textContent = letters[i + letterShift];
i++;
}
}
letterShift = (letterShift + 1) % (letters.length - gridSize.width * gridSize.height)
}
function flickerLetters() {
for (letter of grid.children) {
letter.style.opacity = Math.random() > 0.5 ? 1 : 0.5;
}
}
function checkPassword() {
input = document.getElementById("password-input").value;
if (input === password) {
$(result).empty().wiki(`Correct! [[Log in|DIDTerminal]]`);
} else {
$(result).empty().text("Incorrect!");
}
// Add asterisks to the user input
document.getElementById("password-input").value = "*".repeat(input.length);
}
function posPass() {
for (let i = 0; i < password.length; i++) {
gridElements[passwordShift + i].textContent = password[i];
}
}
//Courtesy of Taulion
function reGenerate() {
passwordShift = Math.floor(Math.random() * gridSize.height) * gridSize.width
+ Math.floor(Math.random() * (gridSize.width - password.length));
letterShift = 1;
posPass();
}
generateLetters(300);
createLetterElements();
posPass();
</script>
\<<if visited() is 1>>
\<script>
flickerLettersTimer = setInterval(flickerLetters, 100);
shiftLettersTimer = setInterval(shiftLetters, 500);
reGenerateTimer = setInterval(reGenerate, 10000);
</script>\
\<</if>>
\[[Close terminal|did]]
</div><div class="terminal">
<h1>Picture Archiving and Communication System</h1>
<<type 1ms>>[[Patient Information|patINF]]
[[Imaging Study / REM|ISFREM]]
[[Critical Findings|critFind]]
[[Radiology Reports|radRep]]
[[Quarantined areas|safeZones]]
[[Close terminal|did]]<</type>>
</div>
<<set $termHack to true>><div class="terminal"><<type 1ms>>
Patient Name: Sarah Morrison
Date of Birth: March 15, 1999
Gender: Female
Medical Record Number (MRN): PCYOA-123456
Address: 123 Apcop Str
Contact Number: 530-555-8008
Insurance Information: Survivor's Health Assurance (SHA)
Medical History Update: June 10, 2024
Patient Complaints: Fatigue, mild headaches
Recent Exposure Risks: Limited contact with contaminated areas
Informed Consent Form: Signed for ongoing health monitoring
[[EXIT|DIDTerminal]]
[[Close terminal|did]]
<</type>></div><div class="terminal"><<type 1ms>>
Study ID: XRAY2024-001
Date and Time: June 10, 2024, 14:30
Imaging Modality: X-ray
Technical Parameters: 70 kV, 5 mAs
Radiation Dose: Monitored and within safe limits
Radiologist's Annotations: No abnormal findings
[[EXIT|DIDTerminal]]
[[Close terminal|did]]<</type>>
</div><div class="terminal"><<type 1ms>>
Critical Finding Alert ID: ALERT-001
Date and Time of Alert: June 12, 2024, 09:45
Critical Finding: Suspected infected wound on Sarah's left arm.
Radiologist's Recommendation: Urgent medical attention required. Initiate quarantine procedures.
Previous Study ID: MRI2023-005
Comparison Date: June 10, 2024
Comparison Findings: Stable size of brain tumor, no significant changes
Radiologist's Note: Recommend monitoring for any future changes
Date: June 16, 2024, 10:15
Findings: Severe deterioration of neural structures. Loss of motor control and cognitive function. Full zombification complete.
Recommendations: Patient deceased. Implement proper disposal protocols to prevent reanimation. Notify relevant authorities.
[[EXIT|DIDTerminal]]
[[Close terminal|did]]<</type>>
</div><div class="terminal"><<type 1ms>>
MRI Study ID: MRI2024-012
Radiologist's Findings: No abnormalities in brain structure, routine scan
Recommendations: Continue monitoring for any new symptoms
Emergency X-ray Study ID: XRAY2024-002
Date: June 12, 2024, 11:30
Findings: X-ray confirms signs of infection spreading from the wound. Early stages of zombification detected.
Recommendations: Isolate the patient immediately. Begin antiviral treatment if available. Notify appropriate authorities.
Date: June 14, 2024, 15:00
Findings: CT scan reveals accelerated zombification, affecting neural structures. Physical and cognitive decline observed.
Recommendations: Secure the immediate surroundings. High risk of hostility and unpredictable behavior. Quarantine measures reinforced.
Date: June 16, 2024, 10:15
Findings: Severe deterioration of neural structures. Loss of motor control and cognitive function. Full zombification complete.
Recommendations: Patient deceased. Implement proper disposal protocols to prevent reanimation. Notify relevant authorities.
Date: June 17, 2024, 09:00
Findings: Post-mortem X-ray to confirm complete cessation of vital signs and ensure no residual zombification potential.
Recommendations: Confirm death status. Secure the remains in accordance with established protocols.
[[EXIT|DIDTerminal]]
[[Close terminal|did]]<</type>>
</div><<type 1ms>><div class="terminal">
Entry name: Known Safe Spots - ENT2031
Entree: Doctor Connor
"The apocalypse has taken over. I refuse to call them "Zombies". They are humans. I haven't yet figured out why they are acting the way they are, but all research points to an advanced form of rabies. They seem to have no control over their bodies, and are craving human flesh only. I am being called crazy, but I am the last to reign over this hospital, so what I say, goes. It may be the downfall of everything, but I refuse to dehumanize them. They need help, not death. All that we know of the virus is, that it is airborne, but for some reason doesn't travel inside buildings. Maybe it's because of the air conditioning? The humidity? It's hard to guess.
I've been able to find a few safe spots around town. Their locations are as follows.
117km west
50km west
231km west
20km north
There may or may not be anyone."</div><<if visited() is 1>><br>You write it down on a small piece of paper.<</if>>
<div class="terminal">[[EXIT|DIDTerminal]]
[[Close terminal|did]]
</div><</type>>
<<if visited() is 1>><<silent>>
<<set $safeZones = {
firstPoint: {
name: "First Point",
distance: 117,
found: false
},
checkZero: {
name: "Checkpoint Zero",
distance: 50,
found: false
},
foxtrot: {
name: "Foxtrot",
distance: 231,
found: false
},
pointGuard: {
name: "Point Guard",
distance: 20,
found: false
}
}>>
<<set $quest.safezones.isStarted to true>>
<<set $ongoingQuests.pushUnique("safezones")>>
<<notify>>You've started the sidequest: Safezones<</notify>>
<</silent>><</if>><<goto "hydroInside">><<if visited() is 1>>You approach the hydro plant. It's mostly closed off, but at the entrance you find a flashlight. It's empty on batteries, but luckily there's a few lying around. Hopefully some of them works.
<span style="color:green">+ Flashlight</span><<set $flashlight.isHad to true>><<set $flashlight.battery to 37>>
<span style="color:green">+ Batteries</span><<else>>The door seems to be welded shut. You'll have to find another way into the hydroelectric powerplant.
You've already taken the flashlight from here.
[[Find another way in|hydroEntrance]]<</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>You walk around the hydroelectric powerplant. The glory of what it once stood for has completely died out without much human interaction. What a shame. It could power a lot of things around here. Surely, it's not the largest plant, and won't power the entire city, but it surely could power at least some of the things around here.
Alas, it might not be something worthwile getting to work, but what else is there to do around here.
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/landfill/landfillInside.webp]]
<<if visited() is 1>>As you enter the landfill, it's almost like you're being watched. Then, something speaks. Someone.
<<silent>>
<<set $surikExp to 0>>
<<surikMerchant>>
<<set $landfillExp to 0>>
<<set $surikStory to false>>
<<set $heapScrap to 0>>
<<set $heapDug to 0>>
<<set $heapDugProgress to 0>>
<<set $truckScrap to 0>>
<<set $velkaToy to false>>
<<set $landLoc = {
heapfield: { name: "The Heapfield (0:01)", hasVisited: false },
glasspit: { name: "The Glass Pit (0:03)", hasVisited: false, foundItems: [] },
truck: { name: "The Burried Truck (0:01)", hasVisited: false }
}>>
<<set $landItems = {
optical_scrap: { name: "Optical Scrap", description: "A bag of optical scrap, useful for tinkering.", isFound: false},
burned_lens: { name: "Burned Lens", description: "A camera lens, blackened by fire but still warm to the touch.", isFound: false},
chant_cassette: { name: "Chant Cassette", description: "A sealed cassette player, half-melted, humming faintly with a strange, looping chant.", isFound: false},
glass_note: { name: "Glass Note", description: "A handwritten note fused into safety glass, the ink is in Thargitsŭ. It's part of a longer message.", isFound: false}
}>>
<</silent>>
@@.surik;???: You smell like clean skin. I hate that. Trade?@@
It groans.
You are taken aback by what just happened. Not scared, just unexpected.
@@.you;$player.name: Uhm... Who are you?@@
@@.surik;???: Who am I? The name is Šurik. I manage what is left of this dump, with my daughter. Somewhere...@@<br><<else>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 17>><<if $surikMerchant lt 2 || $surikStory is true>>As you enter the landfill, you look to find Šurik sitting at his usual spot. Atop a pile of scrap, fiddling with wires that lead nowhere. He doesn't look up.
<<switch random(1,9)>>
<<case 1>>@@.surik;Šurik: Trade?@@
<<case 2>>@@.surik;Šurik: Didn't I tell you to come back later?@@
<<case 3>>@@.surik;Šurik: You smell like clean skin. I hate that. Trade?@@
<<case 4>>@@.surik;Šurik: You again? I don't have all day.@@
<<case 5>>@@.surik;Šurik: You look like you need something. Trade?@@
<<case 6>>@@.surik;Šurik: She... she brought you? No. You haven't seen her, have you?@@
<<case 7>>@@.surik;Šurik: She's just gone out. You'll see. She'll come back.@@
<<case 8>>@@.surik;Šurik: Left her coat by the shack, see? Told her not to forget.@@
<<case 9>>@@.surik;Šurik: We need more trades before I can trust you.@@
<</switch>>
<<if $surikMerchant gte 2>><<link [[Enter the Shack (0:01)|surikShack]]>><<addmins 1>><</link>><br><</if>><<link "Trade with Šurik (0:10)">><<addmins 10>><<suriktrade>><<run Dialog.setup('Surik', 'surikTrade');
Dialog.wiki('<<include "surikTrade">>').open()>>
<</link>><<else>>As you enter the landfill, you notice an eerie sense of dread and alone. @@.em;Where's Šurik?@@
<<link [[Enter the Shack (0:01)|surikShack]]>><<addmins 1>><</link>><br><</if>><<else>>The landfill feels heavier now. The wind moves slower, dragging torn plastic like wilted banners across the mounds. Lights once strung between poles have gone dark, their flicker replaced by the low groan of metal shifting in the deep. The silence isn't empty - it listens.
From somewhere behind the junk towers, a door creaks shut and does not open again.
@@.red;Trade@@ <em>(Šurik is not here right now.)</em><</if>><</if>>
<<if $landfillExp lt 100>><<if $gameDate.getUTCHours() gte 4 && $gameDate.getUTCHours() lte 21>><<link [[Explore the dump (1:00)|exploreLandfill]]>><<addmins 60>><</link>><<else>>@@.red;Explore@@ <em>(It's too dark to explore now.)</em><</if>><</if>>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $landLoc>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
@@.em;You haven't found any locations.@@
<<else>>
@@.em;You've discovered the following locations:@@
<<for _name range _visited_locations>>
<br>
<<link [["Go to " + $landLoc[_name].name|_name]]>><</link>>
<</for>>
<</if>>
<</nobr>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>><<nobr>><<set _events = Array.from({length: 6}, () => "scrap")>>
<<set _unvisited = Object.entries($landLoc)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<set _event = _events.concat(_unvisited).random().toLowerCase()>>
<</nobr>><<switch _event>>
<<case 'heapfield'>>[img[img/locations/landfill/heapfield.webp]]
You descend into the <b>Heapfield</b>, where mountains of twisted scrap groan under their own weight. Shattered appliances and rebar skeletons jut out like bones.<<set $landLoc.heapfield.hasVisited to true>><<set $landfillExp += 33>>
[[Go back|landfill]]
<<case 'glasspit'>>[img[img/locations/landfill/glasspit.webp]]
You approach the <b>Glass Pit</b>, a crater filled with broken screens and cracked lenses. The ground sparkles with static, and faint whispers tickle the edge of your hearing.<<set $landLoc.glasspit.hasVisited to true>><<set $landfillExp += 33>>
[[Go back|landfill]]
<<case 'truck'>>[img[img/locations/landfill/oldtruck.webp]]
You uncover a sunken <b>military truck</b>, rust-welded into the sludge. The doors groan but open - something forgotten rests inside.<<set $landLoc.truck.hasVisited to true>><<set $landfillExp += 34>>
[[Go back|landfill]]
<<case 'scrap'>><<switch random(1,5)>>
<<case 1>>[img[img/locations/landfill/landfillScrap1.webp]]
You sift through loose refuse and scavenge what you can. Just worthless scrap this time, but maybe next time...
<<case 2>>[img[img/locations/landfill/landfillScrap2.webp]]
You wade knee-deep through rotting bags and twisted wire. Just maggots and rusted tins. The stench clings like guilt.
<<case 3>>[img[img/locations/landfill/landfillScrap3.webp]]
You pry open a bloated fridge half-swallowed by muck. Nothing but black sludge and the echo of hunger.
<<case 4>>[img[img/locations/landfill/landfillScrap4.webp]]
You claw at a mound of crushed plastics and scorched toys. No tools, no fuel - just the remains of someone's before.
<<case 5>>[img[img/locations/landfill/landfillScrap5.webp]]
You dig beneath a tarp stiff with filth. A cracked screen, a soggy book. Not today. But maybe close.
<</switch>>
[[Go back|landfill]]
<</switch>><<include "surikTradeList">>
<<link "Bid farewell">><<run Dialog.close()>><</link>><center><i><span style="color:white">Merchant Level</span></i>: <span style="color:yellow"><b>$surikMerchant</b></span></center>
You get: <<= _item1.replace("_", " ").toUpperFirst()>>: _amountI1
You give: <<= _trade1.replace("_", " ").toUpperFirst()>>: _amountT1
<<do tag "trades">><<if $inventory[_trade1] gte _amountT1 && $conf1 is false>><<link "Accept deal">><<set $conf1 to true>><<set $inventory[_item1] += _amountI1>><<set $inventory[_trade1] -= _amountT1>><<surikExp 2>><<redo "trades">><</link>><<elseif $conf1 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT1 - $inventory[_trade1]>> <<= _trade1.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item2.replace("_", " ").toUpperFirst()>>: _amountI2
You give: <<= _trade2.replace("_", " ").toUpperFirst()>>: _amountT2
<<do tag "trades">><<if $inventory[_trade2] gte _amountT2 && $conf2 is false>><<link "Accept deal">><<set $conf2 to true>><<set $inventory[_item2] += _amountI2>><<set $inventory[_trade2] -= _amountT2>><<surikExp 2>><<redo "trades">><</link>><<elseif $conf2 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT2 - $inventory[_trade2]>> <<= _trade2.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item3.replace("_", " ").toUpperFirst()>>: _amountI3
You give: <<= _trade3.replace("_", " ").toUpperFirst()>>: _amountT3
<<do tag "trades">><<if $inventory[_trade3] gte _amountT3 && $conf3 is false>><<link "Accept deal">><<set $conf3 to true>><<set $inventory[_item3] += _amountI3>><<set $inventory[_trade3] -= _amountT3>><<surikExp 2>><<redo "trades">><</link>><<elseif $conf3 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT3 - $inventory[_trade3]>> <<= _trade3.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item4.replace("_", " ").toUpperFirst()>>: _amountI4
You give: <<= _trade4.replace("_", " ").toUpperFirst()>>: _amountT4
<<do tag "trades">><<if $inventory[_trade4] gte _amountT4 && $conf4 is false>><<link "Accept deal">><<set $conf4 to true>><<set $inventory[_item4] += _amountI4>><<set $inventory[_trade4] -= _amountT4>><<surikExp 2>><<redo "trades">><</link>><<elseif $conf4 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT4 - $inventory[_trade4]>> <<= _trade4.replace("_", " ").toUpperFirst()>></b><</if>><</do>>
You get: <<= _item5.replace("_", " ").toUpperFirst()>>: _amountI5
You give: <<= _trade5.replace("_", " ").toUpperFirst()>>: _amountT5
<<do tag "trades">><<if $inventory[_trade5] gte _amountT5 && $conf5 is false>><<link "Accept deal">><<set $conf5 to true>><<set $inventory[_item5] += _amountI5>><<set $inventory[_trade5] -= _amountT5>><<surikExp 2>><<redo "trades">><</link>><<elseif $conf5 is true>><b>You've accepted this trade.</b><<else>><b>You're missing: <<print _amountT5 - $inventory[_trade5]>> <<= _trade5.replace("_", " ").toUpperFirst()>></b><</if>><</do>>[img[img/locations/landfill/heapfield.webp]]
<<set $player.strength to 100>>You step into the Heapfield - a jagged valley of scrap metal and buckled rebar. Piles lean against one another like corpses huddled for warmth, their edges glinting with rust and broken light. Every step crunches, every echo lingers too long.
<<if $velkaToy is false && $quest.velka.isStarted>><<set $velkaToy to true>>
@@.em;You stumble upon a toy, looking like it has melted in one side. It is a small cowboy. A name is etched into the boot. <b>"Velka"</b>@@<<else>><<if visited() is 4>><br><span style="color:lightyellow"><<set $heapRumble to true>>You hear a faint @@.slowrumble;rumbling@@ underground.</span><br><</if>>
<<if $heapScrap lt 3>><<linkreplace "Scavenge (0:10)">><<addmins 10>><<set $heapScrap += 1>><<heapScavenge>><</linkreplace>><<else>>@@.red;Scavenge@@ <em>(You've scavenged enough for now.)</em><</if>><<if $heapRumble is true>><br><<if $heapDug lt 3>><<if $player.strength gte 20>><<linkreplace "Dig (1:00)">><<set $heapDug += 1>><<if $heapDugProgress lt 100>><<set $heapDugProgress += 1>><</if>><<addmins 60>>You grab whatever is closest nearby and jam it into the ground.
@@.em;A <<switch random(1,4)>>
<<case 1>>small amount of dirt flies up.
<<heapScavenge>><<case 2>>speck of dirt flies up.
<<heapScavenge>><<case 3>>large quantity of dirt flies up.
<<heapScavenge>><<case 4>>bit of dirt flies up. You scratch yourself on some common scrap.
<<setHP -1>><span style="color:red">-1 HP</span><</switch>>@@<</linkreplace>><<else>>@@.red;Dig@@ <em>(You're not strong enough to dig.)</em><</if>><<else>>@@.red;Dig@@ <em>(You've already dug enough today.)</em><</if>><</if>><</if>>
[[Go back|landfill]][img[img/locations/landfill/glasspit.webp]]
You descend into the Glasspit, a crater of shattered lenses, screen fragments, and fused silica dust. Light dances strangely off the debris, like you're walking inside a broken eye.
<<linkreplace "Search the pit (0:30)">><<addmins 30>><<nobr>><<set _events = Array.from({length: 8}, () => "scrap")>>
<<set _unvisited = Object.entries($landItems)
.filter(([key, value]) => { return !value.isFound;})
.map(([key, value]) => key)
>>
<<set _event = _events.concat(_unvisited).random().toLowerCase()>>
<<switch _event>>
<<case 'optical_scrap'>>
You find a <b>bag of optical scrap</b>. It might be useful for tinkering.
<<set $landLoc.glasspit.foundItems.pushUnique("optical_scrap")>>
<<set $landItems.optical_scrap.isFound to true>>
<<case 'burned_lens'>>
You uncover a <b>burned camera lens</b>, blackened by fire but still warm to the touch. You pocket it.
<<set $landLoc.glasspit.foundItems.pushUnique("burned_lens")>>
<<set $landItems.burned_lens.isFound to true>>
<<case 'chant_cassette'>>
You find a <b>sealed cassette player</b>, half-melted, humming faintly. A strange, looping chant plays.
<<set $landLoc.glasspit.foundItems.pushUnique("chant_cassette")>>
<<set $landItems.chant_cassette.isFound to true>>
<<case 'glass_note'>>
You uncover a <b>handwritten note</b> fused into safety glass. The ink is in Thargitsŭ. It's part of a longer message.
<<set $landLoc.glasspit.foundItems.pushUnique("glass_note")>>
<<set $landItems.glass_note.isFound to true>>
<<case 'velkatoy'>>
You find a small, singed stuffed animal. It smells faintly of incense and soot. A name is stitched into the fabric: <b>Velka</b>.
<<set $landLoc.glasspit.foundItems.pushUnique("velkaToy")>>
<<set $landItems.velkaToy.isFound to true>>
<<case 'scrap'>><<switch random(1, 2)>>
<<case 1>>You slice your palm on a jagged screen. Pain blossoms, and a few drops of blood vanish into the glass.<<setHP -1>>
<<case 2>>You feel a rumble beneath your feet. Something shifts deeper down. The pit exhales. You back away. Nothing else happens. Yet.
<</switch>>
<</switch>><</nobr>><br><</linkreplace>>
<<link [[Return to Mackey's Dump (0:01)|landfill]]>><<addmins 1>><</link>><<if visited() is 1>>You push aside a wall of crushed tin and broken furniture, revealing the hulking frame of an old military truck. Its olive paint has peeled away in long curls, and the windshield is fractured into a spiderweb of sharp lines. The cab smells of mildew and rust.
On the driver's seat rests a cracked photograph - a man in uniform with two figures beside him, their faces blurred beneath years of grime. A bloodstained jacket hangs limply from the door, its unit patch still visible beneath the dust.
In the glove compartment, you find a small sealed munitions crate, surprisingly intact. As you close the door, the warped radio on the dash flickers to life for a heartbeat - just long enough for a garbled voice to stammer out, then vanish into static.<<else>><<switch random(1,8)>>
\<<case 1>>The military truck slumps under a blanket of dust, its wheels half-buried in the landfill's shifting ground. The fractured windshield catches the light like a broken mirror.
\<<case 2>>You pass the truck again - the cab silent now, the radio long dead. Its doors hang open, swaying slightly in the wind, like it's been waiting too long for someone to return.
\<<case 3>>The hulking frame of the old truck still looms among the heaps of refuse. Faded unit markings ghost across its rusting panels, barely visible beneath years of decay.
\<<case 4>><!-- Random Event -->As you pass, the warped radio in the truck's cab crackles suddenly to life, spitting out three seconds of garbled speech before dying again. For a heartbeat, you think you hear a woman's voice.
\<<case 5>><!-- Random Event -->A soft metallic groan rolls out from the truck's chassis, like something shifting deep inside. Wedged between the springs is a red thread - frayed, and knotted like a bracelet.
\<<case 6>><!-- Random Event -->The wind carries the faint scent of oil and cordite from the truck, impossible after so many years. Beneath it, a whiff of perfume - faint, but out of place here.
\<<case 7>><!-- Random Event -->The cracked photograph you once saw on the driver's seat now lies on the ground outside, face down in the dirt. On the back, someone has scratched a single Thargitsŭ word into the paper: **Жива** - "Alive."
\<<case 8>><!-- Random Event -->A faint tapping echoes from inside the cargo bed, irregular and slow. When you climb to look, it's only the wind... but someone has carved a child's toy figure into the wood.
\<</switch>><</if>>
<<if $truckScrap lt 3>><<linkreplace "Scavenge (0:10)">><<addmins 10>><<set $truckScrap += 1>><<heapScavenge>><</linkreplace>><<else>>@@.red;Scavenge@@ <em>(You've scavenged enough for now.)</em><</if>>
[[Go back|landfill]]You step inside Šurik's shack, a cramped space filled with makeshift furniture and the smell of old electronics. The walls are lined with salvaged screens, flickering with static. A small cot is tucked in one corner, and a table is cluttered with tools and wires.
On one wall, a small shrine is set up, <<if $landLoc.glasspit.foundItems.length is 0>>empty and waiting.<<else>>adorned with trinkets.<</if>>
<<link "View shrine">><<run Dialog.setup('Shrine', 'shrine');
Dialog.wiki('<<include "shrine">>').open()>><</link>><<if $surikStory is false>><<set $surikStory to true>>
<br>You see Šurik sitting on a stool, his face illuminated by the glow of a monitor. He looks up as you enter, his expression a mix of surprise and relief.
@@.surik;Šurik: Ah... I wanted to speak to Velka... I thought she was here. She usually is. Can you find her? I need to talk to her.@@
<<set $quest.velka.isStarted to true>><<set $ongoingQuests.pushUnique("velka")>><<set $landItems.velkaToy = { name: "Velka's Toy", description: "A small stuffed animal, singed around the edges. It smells faintly of incense and soot.", isFound: false }>><<notify>>You've started the sidequest: Velka's Search.<</notify>>
You nod, sensing the urgency in his voice. Šurik seems troubled, his eyes darting around the room as if expecting her to appear at any moment.<</if>>
<<link [[Leave (0:01)|landfill]]>><<addmins 1>><</link>>This shrine holds trinkets you've found digging in the glass pit.
Each item is a fragment of someone's past, a piece of their story.
The shrine is a testament to the lives that once were, now reduced to memories and objects.
<<if $landLoc.glasspit.foundItems.length is 0>>
@@.em;The shrine is empty, waiting for offerings.@@
<<else>>
@@.em;The shrine holds the following items:@@
<<for _item range $landLoc.glasspit.foundItems>>
<b><<= $landItems[_item].name.replace("_", " ").toUpperFirst()>></b>: <i><<= $landItems[_item].description>></i>
<</for>><</if>>
<<link "Turn away">><<run Dialog.close()>><</link>><<switch random(1,10)>><<case 1>><<include "lockbox1">><<case 2>><<include "lockbox2">><<case 3>><<include "lockbox3">><<case 4>><<include "lockbox4">><<case 5>><<include "lockbox5">><<case 6>><<include "lockbox6">><<case 7>><<include "lockbox7">><<case 8>><<include "lockbox8">><<case 9>><<include "lockbox9">><<case 10>><<include "lockbox10">><</switch>>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox1' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox1 == $keys.lockbox.lockbox1>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox1Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox2' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox2 == $keys.lockbox.lockbox2>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox2Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox3' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox3 == $keys.lockbox.lockbox3>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox3Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox4' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox4 == $keys.lockbox.lockbox4>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox4Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox5' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox5 == $keys.lockbox.lockbox5>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox5Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox6' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox6 == $keys.lockbox.lockbox6>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox6Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox7' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox7 == $keys.lockbox.lockbox7>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox7Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox8' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox8 == $keys.lockbox.lockbox8>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox8Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox9' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox9 == $keys.lockbox.lockbox9>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox9Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div>You stumble upon a locked box...
I wonder what the password is, and what it holds...
<div class="terminal"><p><center>-- LOCKBOX PASSWORD --
|7 8 9|
|4 5 6|
|1 2 3|
<<set $archive to ''>>\
<<textbox '$lockbox10' '' autofocus>>\
<span id='textbox-submit'>\
<br> <<link "Enter">>
<<if $lockbox10 == $keys.lockbox.lockbox10>>
<<replace '#textbox-submit'>>/* Removes the button */<</replace>><<replace '#textbox-reply'>>
<<goto "lockbox10Open">>
<</replace>>
<<run $('#textbox-answer').attr('readonly', 'true');>>
<<else>>
<<replace '#textbox-reply'>>\
<<type 2ms>>Incorrect. Please try again.<</type>>
<</replace>>
<</if>>
<</link>>\
</span><span id='textbox-reply'></span></center></p></div><<if visited() is 1>>
<<set $metroLoc = {
metroDerelict: {
name: "Derelict Train Cars",
hasVisited: false
},
metroUtil: {
name: "Utility Tunnels",
hasVisited: false
},
metroControl: {
name: "Control Room",
hasVisited: false
}
}>>
<<set _amountCan = random(0,10), $foodAmountMetro to _amountCan>>
<<set $trainDirection to "left">>
<<set $metroExp to 0>><</if>>
<<goto "metroInside">>[img[img/locations/metro/metroInside.webp]]
You decend the metro. The lights are shut off. Weird sounds are coming from the deepest, darkest corners of this place, the only solace being your own mind telling you that these @@.slowrumble;sounds@@ are just @@.neg;old constructions and pipes@@. Deep inside, you know it isn't true, but the reality could be much worse. You have to push on. <em>For glory</em>.
As you dive deeper into the hellscape that is the broken down metro system underneath the city, you can't shake the feeling of dread. <em>You can feel the tiny hairs in the back of your neck rise.</em>
<<if $flashlight.isHad is false>>@@.neg;You'll need a flashligt to keep exploring here.@@<<elseif $flashlight.isHad is true && $flashlight.battery is 0>>@@.neg;You'll need to recharge your flashlight or change its batteries to keep exploring here.@@<<else>>You have a bit of power on your flashlight. The smart display shows @@.pos;$flashlight.battery%@@
You've explored @@.pos;$metroExp%@@ of the metro.<<if $metroExp lt 100>><br><<link [[Explore the metro tunnels (1:00)|metroExplore]]>><<addmins 60>><</link>><<else>> There's nothing more to explore.<</if>>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $metroLoc>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
@@.em;You haven't found any locations.@@
<<else>>
@@.em;You've discovered the following locations:@@
<<for _name range _visited_locations>>
<br>
<<link [[$metroLoc[_name].name + " (0:01)"|_name]]>><<addmins 1>><</link>>
<</for>>
<</if>>
<</nobr>><</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/metro/metroInside.webp]]
You explore the metro. Rummaging the metro you stumble upon<<nobr>><<set _unvisited = Object.entries($metroLoc)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<if _unvisited.length > 0>>
<<set _event = _unvisited.random().toLowerCase()>>
<</if>><</nobr>><<switch _event>>
<<case 'metroderelict'>> some derelict train cars. Most of these are derailed and open, but some are closed. They'd require heavy tools to open up, but without much gain. Not worth it. <<set $metroLoc.metroDerelict.hasVisited to true, $metroExp += 43>><<set $flashlight.battery -= 14>>
<<case 'metroutil'>> a utility tunnel. Train cars would go in here to have maintenance done on them, as well as maintenance done on the railroads. <<set $metroLoc.metroUtil.hasVisited to true, $metroExp += 29>><<set $flashlight.battery -= 12>>
<<case 'metrocontrol'>> a control room. This is likely where the conductors would be in their break time or controllers would control which lanes of the rails would go where. <<set $metroLoc.metroControl.hasVisited to true, $metroExp += 28>><<set $flashlight.battery -= 10>>
<</switch>>
<<link [[Go back to the entrance (0:01)|metroInside]]>><<addmins 1>><</link>>[img[img/locations/metro/utilTunnels.webp]]
You approach the utility tunnels. Nothing seems to be of use in here. This was a waste of time. Not everything has been left for others, and most has been taken already. You were out late, afterall.
There's nothing to see here.<<if visited("sketchCompare") gte 1 && $storyline.tear.isComplete is false && $storyline.tear.isStarted is true>> Maybe try going further in?
[[Descend the tunnels|utilTear]]<</if>>
[[Go back to the entrance|metroInside]]You enter the control room. There's not much to see here but some levers and some buttons.
<<if visited() is 1>><br>Looks like there's a book on the control table here.
<<grantBook>><br><</if>>
Most of it is out of order and doesn't work anymore, but the more mechanical aspects seems to function just fine.
Direction of tracks: <span style="color:yellow">{{$trainDirection}}</span>.
<<link "Change direction (0:05)">><<addmins 5>><<if $trainDirection is "left">><<set $trainDirection to "right">><<else>><<set $trainDirection to "left">><</if>><</link>>
<<link [[Go back to the entrance (0:01)|metroInside]]>><<addmins 1>><</link>><<switch random(1,3)>><<case 1>>[img[img/locations/metro/derelict1.webp]]<<case 2>>[img[img/locations/metro/derelict2.webp]]<<case 3>>[img[img/locations/metro/derelict3.webp]]<</switch>>
You approach the derelict train cars. It seems like someone has used them for camps for a while. They're not here now, likely never will be. There seems to be some @@.em;canned food@@ left here. A quick count let's you know there's around {{$foodAmountMetro}} cans of food left. You could take the entire supply or take a portion of it.
<<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "metroUtil">><<goto "combat">><<default>><</switch>>
<<do tag "derelict">><<if $foodAmountMetro gte 1>><<link "Grab one">><<set $inventory.canned_food += 1>><<set $foodAmountMetro -= 1>><<redo "derelict">><</link>>
<<link "Grab them all">><<set $inventory.canned_food += $foodAmountMetro>><<set $foodAmountMetro -= $foodAmountMetro>><<redo>><</link>><<else>>There's no cans of food left...<</if>><</do>>
<<link [[Go back to the entrance (0:01)|metroInside]]>><<addmins 1>><</link>><<if visited() is 1>>
<<set $shopLoc = {
security: {
name: "Security Office (0:05)",
hasVisited: false
},
urbmark: {
name: "Urban Marketplace (0:01)",
isLocked: true,
hasVisited: false
},
fashionave: {
name: "Fashion Avenue Plaza (0:01)",
isLocked: true,
hasVisited: false
},
eliteem: {
name: "Elite Emporium (0:02)",
isLocked: true,
hasVisited: false
},
basement: {
name: "Basement (0:06)",
hasVisited: false
}
}>>
<<set $shopBunker = {
name: "Bunker",
hasVisited: false,
isBase: false
}>>
<<set $shopExp to 0>>
<<set $securitySys to false>>
<<set $ragRemove to false>>
<<set _amountCan = random(0,10), $foodAmountMall to _amountCan>>
<<set _amountLeather = random(0,5), $leatherAmount to _amountLeather>>
<<set _amountLeather = random(0,5), $leatherAmount1 to _amountLeather>><</if>>
<<goto "shopping_mallInside">>[img[img/locations/mall/mallInside.webp]]
You step inside the shopping mall. It's closed, and most of the storefronts are locked shut.
You've explored @@.pos;$shopExp%@@ of the mall.
<<showmeter 'mall' `$shopExp / 100`>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>><<if $shopExp lt 100>><br>[[Explore the shopping mall|shopExplore]]<<else>> There's nothing more to explore.<</if>>
<<nobr>>
<<set _visited_locations = []>>
<<for _key, _location range $shopLoc>>
<<if _location.hasVisited>>
<<run _visited_locations.push(_key)>>
<</if>>
<</for>>
/* _visited_locations will be an array with all the keys of the locations that are visited */
<<if _visited_locations.length is 0>>
You haven't found any locations.
<<else>>
You've discovered the following locations:
<<for _name range _visited_locations>>
<br>
<<link $shopLoc[_name].name _name>><</link>>
<</for>>
<</if>>
<</nobr>><<else>><br>It's turning dark out. You should hurry home.<</if>>
<<link [[Go back outside (0:01)|hubMenu]]>><<addmins 1>><</link>>
<<link [[Go back home (0:05)|mainHouse]]>><<addmins 5>><<runAudio 'audio/door.mp3'>><</link>>[img[img/locations/mall/mallInside.webp]]
<<nobr>><<set _unvisited = Object.entries($shopLoc)
.filter(([key, value]) => { return !value.hasVisited;})
.map(([key, value]) => key)
>>
<<if _unvisited.length > 0>>
<<set _event = _unvisited.random().toLowerCase()>>
<</if>><</nobr>><<switch _event>>
<<case 'security'>>Tucked behind a cracked directory map, you spot a reinforced door slightly ajar. The word <b>Security</b> is stenciled above it, chipped and faded. Inside, overturned chairs and broken monitors tell a quiet story of sudden exit. The walls are lined with dusty screens, some still flickering faintly, casting cold light on a space long left behind.
<<link [[Enter (0:01)|security]]>><<addmins 1>><</link>><<set $shopLoc.security.hasVisited to true, $shopExp += 23>>
<<case 'urbmark'>>You push aside a collapsed shopping cart and step over shattered glass, the silence broken only by the squeak of a loose ceiling tile. Ahead, dim lettering reads <b>Urban Marketplace</b>. Inside, the remains of a food store sit in eerie stillness - rusted cans, crumpled snack bags, and a rotting checkout lane that looks like it hasn't seen life in years.
<<link [[Enter (0:01)|urbmark]]>><<addmins 1>><</link>><<set $shopLoc.urbmark.hasVisited to true, $shopExp += 17>>
<<case 'fashionave'>>You tread carefully past crumbling pillars and shattered tile as the mall stretches deeper into shadow. A fallen sign catches your eye, its letters barely legible beneath the dust: <b>Fashion Avenue Plaza</b>. Behind cracked glass, faded posters of long-forgotten trends smile stiffly from the walls. Inside, rows of mannequins stand like ghostly sentinels draped in time-worn fabric.
<<link [[Enter (0:01)|fashionave]]>><<addmins 1>><</link>><<set $shopLoc.fashionave.hasVisited to true, $shopExp += 21>>
<<case 'eliteem'>>You weave through the hollow corridors of the mall, the silence broken only by the echo of your own footsteps. Dust clings to shattered display cases and forgotten mannequins. Just as you're about to turn back, a faded sign catches your eye - <b>Elite Emporium</b>. Its once-glamorous storefront stands cracked but proud, the remnants of luxury peeking through the decay.
<<link [[Enter (0:01)|eliteem]]>><<addmins 1>><</link>><<set $shopLoc.eliteem.hasVisited to true, $shopExp += 19>>
<<case 'basement'>>You almost miss it - a warped service door ajar, barely clinging to its hinges. Behind it, stairs spiral down into the unknown. The word <b>Basement</b> is scrawled on the wall in faded paint, nearly lost to time. A weak draft rises from below, carrying with it the scent of old water, rust, and something harder to name.
<<link [[Enter (0:01)|basement]]>><<addmins 1>><</link>><<set $shopLoc.basement.hasVisited to true, $shopExp += 20>>
<</switch>>
<<link [[Go back to the entrance(0:01)|shopping_mallInside]]>><<addmins 1>><</link>>[img[img/locations/mall/mallSec.webp]]
<<if $shopLoc.urbmark.isLocked is false>>You step back into the security department. The flickering monitors now glow softly, casting a pale light across the room. The hum of machinery fills the air, steady and reassuring. On one screen, the mall's layout pulses with activity, while a bright <span style="color:green">@@.fade-in-out;green light@@</span> blinks steadily next to the label "shutters."<br><br>The once-impenetrable storefront shutters are now raised, granting access to the shops that were locked moments ago. The atmosphere feels charged - like the mall is slowly waking from its long slumber.<<else>>You enter the security department. It's got screens, but almost every one of them is broken. There's only a few screens that are intact. They're all shut off. The entire security system has been shut off.
<<if $securitySys is false>><<link [[Turn it on (0:20)|securityTurnOn]]>><<addmins 20>><</link>><<else>><<if $shutterSOUND is false>><<set $shutterSOUND to true>><<runAudio 'audio/shutters.mp4'>><</if>>A @@.pos;green light@@ has come on, next to the label "shutters." It was red before. @@.shudder;There's a loud whirring sound in the entire mall.@@ @@.pos;The storefront shutters has been lifted.@@<<set $shopLoc.urbmark.isLocked to false>><<set $shopLoc.fashionave.isLocked to false>><<set $shopLoc.eliteem.isLocked to false>><</if>><</if>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>><div class="terminal">
\<<type 10ms>><h1>Zarechnikov Mall Security System Integrated</h1><</type>>
<div id="grid"></div>
<input type="password" id="password-input" placeholder="Enter the password">
<button onclick="checkPassword()">Check</button>
<p id="result"></p><script>
grid = document.getElementById("grid");
gridElements = [];
password = "/)!!.#";
letters = [];
gridSize = {"width": 10, "height": 10};
passwordShift = Math.floor(Math.random() * gridSize.height) * gridSize.width
+ Math.floor(Math.random() * (gridSize.width - password.length));
letterShift = 1;
function generateLetters(count) {
for (let i = 0; i < count; i++) {
letters.push(String.fromCharCode(33 + Math.floor(Math.random() * 93)));
}
}
function createLetterElements() {
for (let i = 0; i < 100; i++) {
letterDiv = document.createElement("div");
letterDiv.classList.add("letter");
letterDiv.textContent = letters[i];
grid.appendChild(letterDiv);
gridElements.push(letterDiv);
}
}
function shiftLetters(shiftSize) {
for (let i = 0; i < gridElements.length; ) {
if (i == passwordShift) i += password.length;
else {
gridElements[i].textContent = letters[i + letterShift];
i++;
}
}
letterShift = (letterShift + 1) % (letters.length - gridSize.width * gridSize.height)
}
function flickerLetters() {
for (letter of grid.children) {
letter.style.opacity = Math.random() > 0.5 ? 1 : 0.5;
}
}
function checkPassword() {
input = document.getElementById("password-input").value;
if (input === password) {
$(result).empty().wiki(`Correct! [[Log in|security][$securitySys to true]]`);
} else {
$(result).empty().text("Incorrect!");
}
// Add asterisks to the user input
document.getElementById("password-input").value = "*".repeat(input.length);
}
function posPass() {
for (let i = 0; i < password.length; i++) {
gridElements[passwordShift + i].textContent = password[i];
}
}
//Courtesy of Taulion
function reGenerate() {
passwordShift = Math.floor(Math.random() * gridSize.height) * gridSize.width
+ Math.floor(Math.random() * (gridSize.width - password.length));
letterShift = 1;
posPass();
}
generateLetters(300);
createLetterElements();
posPass();
</script><<if visited() is 1>><script>
flickerLettersTimer = setInterval(flickerLetters, 100);
shiftLettersTimer = setInterval(shiftLetters, 500);
reGenerateTimer = setInterval(reGenerate, 10000);</script><</if>><<type 10ms>>[[Close terminal|security]]<</type>>
</div>[img[img/locations/mall/urbmark.webp]]
<<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "urbmark">><<goto "combat">><</switch>>
<<if $shopLoc.urbmark.isLocked is true>>You approach the Urban Marketplace. The shutters are down. You should try and figure out how to get them working again. <<if $shopLoc.security.hasVisited is true>>Perhaps somewhere in the security department?<</if>>
Nonetheless, you won't be entering now. Better to go back and keep searching.<<else>>You enter the Urban Marketplace. It's run down and most of the supplies here are already gone. There seems to be some @@.em;canned food@@ left here. A quick count let's you know there's around {{$foodAmountMall}} cans of food left. You could take the entire supply or take a portion of it.
<<do>><<if $foodAmountMall gte 1>><<link "Grab one">><<set $inventory.canned_food += 1>><<set $foodAmountMall -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.canned_food += $foodAmountMall>><<set $foodAmountMall -= $foodAmountMall>><<redo>><</link>><<else>>There's no cans of food left...<</if>><</do>><</if>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>>
<<set $shopLoc.urbmark.hasVisited to true>>[img[img/locations/mall/fashionave.webp]]
<<if $shopLoc.fashionave.isLocked is true>>You approach the Fashion Avenue Plaza. The shutters are down. You should try and figure out how to get them working again. <<if $shopLoc.security.hasVisited is true>>Perhaps somewhere in the security department?<</if>>
Nonetheless, you won't be entering now. Better to go back and keep searching.<<else>>You enter the Fashion Avenue Plaza. It's run down and most of the supplies here are already gone. There seems to be some @@.em;leather fabric@@ left here. A quick count let's you know there's around {{$leatherAmount}} pieces left. You could take the entire supply or take a portion of it.
<<do>><<if $leatherAmount gte 1>><<link "Grab one">><<set $inventory.leather += 1>><<set $leatherAmount -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.leather += $leatherAmount>><<set $leatherAmount -= $leatherAmount>><<redo>><</link>><<else>>There's no leather left...<</if>><</do>><</if>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>>
<<set $shopLoc.fashionave.hasVisited to true>>[img[img/locations/mall/eliteem.webp]]
<<if $shopLoc.eliteem.isLocked is true>>You approach the Elite Emporium. The shutters are down. You should try and figure out how to get them working again. <<if $shopLoc.security.hasVisited is true>>Perhaps somewhere in the security department?<</if>>
Nonetheless, you won't be entering now. Better to go back and keep searching.<<else>>You enter the Elite Emporium. It's run down and most of the supplies here are already gone. There seems to be some @@.em;leather fabric@@ left here. A quick count let's you know there's around {{$leatherAmount1}} pieces left. You could take the entire supply or take a portion of it.
<<do>><<if $leatherAmount1 gte 1>><<link "Grab one">><<set $inventory.leather += 1>><<set $leatherAmount1 -= 1>><<redo>><</link>>
<<link "Grab them all">><<set $inventory.leather += $leatherAmount1>><<set $leatherAmount1 -= $leatherAmount1>><<redo>><</link>><<else>>There's no leather left...<</if>><</do>><</if>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>>
<<set $shopLoc.eliteem.hasVisited to true>>[img[img/locations/mall/basement.webp]]
<<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "security">><<goto "combat">><</switch>>
You enter the basement of the shopping mall. It's a little better looking than the rest of the mall. Perhaps most of the damage is sun exposure through the cracked roof.
<<switch random(1, $difficulty)>><<case 1>><<set $combatReturn to "basement">><<goto "combat">><</switch>>
The basement isn't too big, there's only a few rooms down here. Most of them are locked.
<<if $keys.mallBunker.hasKey is false>><<linkreplace "Safety bunker (0:01)">>@@.red;Safety bunker@@ <em>(This room is locked.)</em><</linkreplace>><<else>>[[Safety bunker|mallBunker]]<</if>>
<<if $keys.mallJanitor.hasKey is false>><<linkreplace "Janitor's closet (0:01)">>@@.red;Janitor's closet@@ <em>(This room is locked.)</em><</linkreplace>><<else>>[[Janitor's closet|mallJanitor]]<</if>>
<<link [[Storage compartment (0:01)|mallStorage]]>><<addmins 1>><</link>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>>[img[img/locations/mall/storage.webp]]
You enter the storage compartment.
The entire things has been cleaned out. <<if $quest.solar.questItem is true>><br>You've already taken what's left of worth to you. You should head back out of the basement for now.<br><<else>><<if visited() is 1>>However, you spot an object in the corner with a tarp covering it. You should check it out.
<<linkreplace "Remove the tarp (0:09)">><<addmins 9>>You grab the tarp and rip it off. <span style="color:lightyellow">It's a brand new solar panel!</span> <<if $quest.solar.isStarted is true>>What luck! Just what you needed! Bring it back fast and replace the broken panel.<<else>>What luck! Perhaps you could use this in some way? You'd better take it back.<</if>>
<<set $ragRemove to true>>
<<linkreplace "Grab the panel (2:00)">><<addmins 120>><<if $quest.solar.isStarted is true>>This took you a while. You should get back and replace the broken panel right away!<<else>>This took you a while. Hurry on and get back before you waste anymore precious time rummaging around in the shopping mall basement.<</if>>
<<set $quest.solar.questItem to true>><</linkreplace>><</linkreplace>><<else>>
<<if $ragRemove is false>>The object with the tarp is still here. <span style="color:lightyellow">You should check it out.</span>
<<linkreplace "Remove the tarp (0:09)">><<addmins 9>>You grab the tarp and rip it off. <span style="color:lightyellow">It's a brand new solar panel!</span> <<if $quest.solar.isStarted is true>>What luck! Just what you needed! Bring it back fast and replace the broken panel.<<else>>What luck! Perhaps you could use this in some way? You'd better take it back.<</if>>
<<set $ragRemove to true>>
<<linkreplace "Grab the panel (2:00)">><<addmins 120>><<if $quest.solar.isStarted is true>>This took you a while. You should get back and replace the broken panel right away!<<else>>This took you a while. Hurry on and get back before you waste anymore precious time rummaging around in the shopping mall basement.<</if>>
<<set $quest.solar.questItem to true>><</linkreplace>><</linkreplace>><<else>><span style="color:lightyellow">You should really grab the solar panel.</span>
<<linkreplace "Grab the panel (2:00)">><<addmins 120>><<if $quest.solar.isStarted is true>>This took you a while. You should get back and replace the broken panel right away!<<else>>This took you a while. Hurry on and get back before you waste anymore precious time rummaging around in the shopping mall basement.<</if>>
<<set $quest.solar.questItem to true>><</linkreplace>><</if>><</if>><</if>>
<<link [[Go back (0:01)|shopping_mallInside]]>><<addmins 1>><</link>>[img[img/locations/mall/bunker.webp]]
You enter the bunker. There's nothing in here of value. All rations has been taken by the survivors who hid down here when everything began. <<if $shopBunker.isBase is false>>For now, it is empty.
You could set up a temporary base.
<<link "Set up shop">><<set $shopBunker.isBase to true>><<goto "mallBunker">><</link>><<else>>You've set up a temporary base down here. It's got a few blankets on the floor to rest on, and you can regain some energy while being here.
<<do>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>><<link "Rest">><<replace "#restBunker">>You've decided to rest a bit.<</replace>><<setAP 1>><<if $period eq 6>><<redo>><</if>><</link>>
<span id="restBunker"></span><<else>>It's too late to rest, you should get back and get some sleep instead.<br><</if>><</do>><</if>>
[[Exit|basement]]This passage is locked. If you see this, you've been in the editor to unlock it.
:)
Easter egg
[[basement]]BouyYou arrive at the next destination. The safezone 50km west. It looks... more up to date than Point Zero. This actually looks like a safezone, with a lot more to do than a military outpost.
<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>It's still light out. You should explore the area and see if there's someone willing to talk with you.
[[Store|highlandStore]]
[[Living quarters|highlandLiving]]
[[Square|highlandSquare]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|highlandRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>
<<if visited() is 1>>
<<run $quest.safezones.zonesDiscovered.pushUnique("Checkpoint Zero")>>
<<run $quest.safezones.zonesUndiscovered.deleteAll("Checkpoint Zero")>><</if>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>You arrive at Highland. It looks good on the outside. Most of the buildings here are well kept, though it looks old timey. It's like a small village, of sorts. There should be someone you can talk to, here.<<else>>You arrive at Highland. It looks good on the outside. Most of the buildings here are well kept, though it looks old timey. It's like a small village, of sorts. It's night, and no one is outside at this moment. You can rest in the living quarters for a bit of scrap metal.<</if>>
<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>[[Highland Store|highlandStore]]
[[Living quarters|highlandLiving]]
[[Square|highlandSquare]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|highlandRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>A crumbling concrete canopy, its paint long peeled away, shelters rusted fuel pumps. Faded signs in both English and forgotten Slavic dialects warn about fire hazards that no longer matter. A cracked display screen on a pump blinks a faint "<span style="color:crimson"><b>ERR 3X44</b></span>" message, the last gasp of dead technology.
The entrance to the store is a metal-reinforced glass door, its handle replaced with a strip of cloth-wrapped rebar. Graffiti in an unreadable language sprawls across the walls, possibly warnings, possibly prayers. A single makeshift lantern dangles outside, marking this as a place of business.
<<toskaQuestInit>><<toskaQuest2>><<toskaQuest4>>
<<if $quest.toska.questProgress gte 2 && $period gte 4>>Toska has closed down shop for the night.<<else>>[[Enter Station 1|station1]]<</if>>
[[Leave|highlandSquare]]"<span style="color:white">5 scraps for a night.</span>" is shown on a makeshift sign.
<<if $inventory.scrap_metal gte 5>>You have enough for a night.
[[Rest for the night|highlandRestPaid]]
[[Go back|highland]]<<else>>You don't have enough scrap for a night. You can't sleep here.
[[Go back|highland]]<</if>>You search for rest and stumble upon a small motel.
"<span style="color:white">5 scraps for a night.</span>" is shown on a makeshift sign.
<<if $inventory.scrap_metal gte 5>>You have enough for a night.
[[Rest for the night|highlandRestPaid]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>You don't have enough scrap for a night. You should go home instead.
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>You pay the scrap to get a good nights rest.
You fall asleep fast. You toss and turn in the motel bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<set _dream = random(1,3)>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
<<switch random(1,5)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<case 3>>[img[img/main/mainSleep3.webp]]<<case 4>>[img[img/main/mainSleep4.webp]]<<case 5>>[img[img/main/mainSleep5.webp]]<</switch>>
[[Wake up|highland]]
<<nobr>>
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>>
<<set $inventory.scrap_metal -= 5>><</nobr>>You stand on the highland square. This is where most of the residents of the Highlands are spending their time.
Most storefronts in the city has been closed down a long time ago, due to insufficient workforce. Too bad. Although, there are a few stands here and there, though they aren't selling anything of worth to you anyways.
<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>[[Gas station|highlandGas]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|highlandRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>You enter the store. They're not really selling anything exciting here. Only other resources. You are met by a kind, young girl.
<<if visited() is 1>><span style="color:lightyellow">Girl: Hello! I'm Jasmine! My dad owns the store, but he lets me run it every day!</span>
<<set $highStorePrice to 1>>
<span id="response"><<link "Uhm... Okay...">><<replace "#response">><span style="color:pink">$player.name: Uhm... Okay... As long as you're having fun here! How's the people around?</span>
The prices remain the same.<</replace>><</link>>
<<link "Hey Jasmine!">><<set $highStorePrice to 0.5>><<redo>><<replace "#response">><span style="color:pink">$player.name: Hey Jasmine! I'm $player.name! Maybe we can be friends? It's always good to have some trusted people around these days...</span>
<<setKarma +1>>
The prices has been lowered.<</replace>><</link>>
<<link "I don't care.">><<set $highStorePrice to 1.5>><<redo>><<replace "#response">><span style="color:pink">$player.name: I don't care. Don't talk to me again.</span>
<<setKarma -5>>
The prices has been raised.<</replace>><</link>></span><<else>><span style="color:lightyellow">Jasmine: Hello.</span><</if>>
<<do>><<if $inventory.scrap_metal gte 30*$highStorePrice>><<link "20 canned food. Price: <<print 30*$highStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 30*$highStorePrice>><<set $inventory.canned_food += 20>><<redo>><</link>><<else>>You can't afford <span style="color:white">20 canned food</span>. They cost <<print 30*$highStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>>
<<if $inventory.scrap_metal gte 20*$highStorePrice>><<link "5 electronics components. Price: <<print 20*$highStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 20*$highStorePrice>><<set $inventory.electronics_components += 5>><<redo>><</link>><<else>>You can't afford <span style="color:white">5 components</span>. They cost <<print 20*$highStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>>
<<if $inventory.electronics_components gte 8*$highStorePrice>><<link "2 circuit boards. Price: <<print 8*$highStorePrice>> electronics components">><<set $inventory.electronics_components -= 8*$highStorePrice>><<set $inventory.circuit_board += 2>><<redo>><</link>><<else>>You can't afford <span style="color:white">2 circuit boards</span>. They cost <<print 8*$highStorePrice>> electronics components. You only have <span style="color:red">$inventory.electronics_components</span>.<</if>>
<<if $inventory.scrap_metal gte 12*$highStorePrice>><<link "5 leather. Price: <<print 12*$highStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 12*$highStorePrice>><<set $inventory.leather += 5>><<redo>><</link>><<else>>You can't afford <span style="color:white">5 leather</span>. They cost <<print 12*$highStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>><</do>>
[[Leave the store|highland]]Inside, metal shelves stand mostly empty. A few relics of the old world sit behind a makeshift wire fence counter where Toska does business. The air is thick with the smell of old oil, damp cloth, and rust.
A handwritten sign hangs from the counter:
"No credit. No handouts. No bullshit."
A silent figure, Toska barely speaks unless necessary. Wrapped in a thick oil-stained jacket, their face is always shadowed by a hood and a respirator mask. No one knows if Toska is a man or a woman - or if it matters.
<<if $toska.hp gte 1>><<if visited() is 1>><span style="color:tan">Toska: You need something, or are you just here to waste air?</span>
<<set $station1Price to 1>><<include "toskaInit">>
<span id="response"><<link "Just looking around.">><<replace "#response">><span style="color:pink">$player.name: Just looking around. Didn't know this place had anything worth trading.</span>
<<toskaRP 2>>
<span style="color:tan">Toska: Maybe it does. Maybe it doesn't. Depends what you see.</span>
The prices remain the same.<</replace>><</link>>
<<link "I don't waste air, I trade. What's your price?">><<set $station1Price to 0.5>><<redo>><<replace "#response">><span style="color:pink">$player.name: I don't waste air, I trade. What's your price?</span>
<span style="color:tan">Toska: Hnh. You get it. Price depends on what you offer.</span>
<<setKarma +1>><<toskaRP 5>>
Toska liked that. The prices has been lowered.<</replace>><</link>>
<<link "Nice attitude.">><<set $station1Price to 1.5>><<redo>><<replace "#response">><span style="color:pink">$player.name: Nice attitude. Do you talk like that to all your customers?</span>
<span style="color:tan">Toska: I talk however I want. You buy, or you walk.</span>
<<setKarma -5>><<toskaRP -5>>
Toska didn't like that. The prices has been raised.<</replace>><</link>></span><<else>><<switch random(1,3)>><<case 1>><span style="color:tan">Toska: Back again? Thought you'd be dead by now.</span><<case 2>><span style="color:tan">Toska: If you're gonna waste time, do it outside.</span><<case 3>><span style="color:tan">Toska: You think this is charity? Pick something or leave.</span><</switch>><<toskaQuest1>><</if>>
<<do>><<set $station1Amount to random(4,20)>><<if $inventory.scrap_metal gte 40*$station1Price>><<link "Jerrycan ($station1Amount). Price: <<print 40*$station1Price>> scrap metal">><<set $inventory.scrap_metal -= 40*$station1Price>><<set $fuel += $station1Amount>><<toskaRP 5>><<redo>><</link>><<else>>You can't afford <span style="color:white">fuel</span>. It costs <<print 40*$station1Price>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>><</do>><<else>><<if $toskaDeadWait gte 1>>Toska is dead. There's no one to keep the shop. Check back some other time, maybe someone will come and take over.<<else>>TOSKA NIECE<</if>><</if>>
[[Go outside|highlandGas]]
[[Leave the station|highlandSquare]]The night is quiet, except for the distant howl of the wind through skeletal ruins. The air smells of rust and old fuel. Behind Station 1, half-hidden in shadow, stands a garage door - its surface pitted with age, streaked with soot.
The <b>metal door looms before you</b>, its edges welded shut in places, reinforced with scrap plating. Someone took care to keep whatever's inside... inside. A faint humming vibration lingers in the metal when you press your hand against it - like something just beneath the surface is still alive.
Near the base, <b>footsteps disturb the dirt</b> - fresh prints, pacing in and out. Toska's, maybe. Or someone else's.
Scrawled on the left side, barely visible under years of grime, is a <b>faded military insignia</b> - a double-chevron with something scratched beneath it. The lettering is jagged, as if carved with a knife:
<b><i>ECHO-1</i></b>
You listen.
For a moment, nothing. Then - somewhere behind the door - a soft metallic scrape.
Something - or someone - is in there.
[[Go back|highlandGas]]
<<set $quest.toska.isStarted to true>>
<<set $quest.toska.questProgress to 1>>The garage is dimly lit, a single overhead bulb casting deep shadows across the cluttered space. The smell of oil, rust, and hot metal clings to the air. Machines lie in various states of disrepair, but your eyes are drawn to the center of the room - where Toska stands, hunched over something on a workbench.
He hasn't seen you. Not yet.
Toska is working fast, hands moving with purpose over a cluster of exposed wiring. Nearby, under a tattered tarp, a vehicle's frame gleams faintly - not just any vehicle, but something armored, reinforced. Military. An escape plan?
A faint, rhythmic beeping comes from a sealed crate on the floor, marked with the faded insignia you saw outside:
<b>ECHO-1 | CLASSIFIED | DO NOT OPEN</b>
Toska mutters under their breath, fiddling with a small metallic device, the beeping growing louder.
You have a choice.
[[Stay hidden and watch|toskaHide]]
[[Step forward and confront them|toskaConfront]]The night air is still. The usual hum of First Point has died down, leaving only the distant crackle of a fire somewhere beyond the square. Station 1 is locked up tight, but the garage door stands before you - silent, waiting.
You kneel, running your fingers along the edge of the lock. It's old-world tech, battered by time but still intact. The mechanism is rugged, military-grade, not the kind meant for casual hands. A challenge, but not impossible.
You take out your tools, working the tension wrench slowly. The tumblers inside are stiff, corroded, but as you probe deeper, you feel the subtle give of metal shifting. One pin. Two.
A noise.
A breath of wind? No. Footsteps.
You pause, holding still. <b>Toska</b>... Somewhere close.
Heart steady, you press forward - deliberate, methodical. The last tumbler resists, then - a soft click. The lock turns.
The door is open.
You slip inside before anyone sees. The dark swallows you whole.
[[Turn the lights on|stationGarage]]
<<set $quest.toska.questProgress += 1>>
<<set $quest.toska.route to "lock">>You wait. Time drags, thick as oil. Station 1 is dark, save for the weak glow of a lantern in the back. Then - movement.
Toska emerges from the shop, shoulders hunched under their ragged coat. They move with purpose, stepping lightly across the cracked pavement, boots skimming over the dirt without a sound.
You follow at a distance, careful to stay in the shadows.
Toska doesn't go far - just to the garage. They pause at the door, pressing a hand against the metal as if feeling for something. Then, with a sharp twist of a key, the lock disengages.
The door groans as it slides open just enough for them to slip inside.
You creep closer, pressing yourself against the cold metal. From within, a faint buzzing sound rises - low, electric, pulsing like a heartbeat.
Then - the scrape of metal on metal.
Toska is doing something in there.
Something they don't want anyone to see.
[[Enter|station1HumEnter]]
<<set $quest.toska.questProgress += 1>>
<<set $quest.toska.route to "wait">>The garage is dimly lit, the scent of old metal, oil, and rust hanging thick in the air. The sound of tools clanking fills the space as Toska works at a cluttered workbench, his back partially turned to you.
A small, half-disassembled engine rests in front of him, wires trailing like veins, a fuel canister nearby. The space is a mess - half-built parts, a makeshift cot in the corner, and the hum of that damn military crate, still locked.
Toska barely looks up as he speak.
<span style="color:tan">Toska: If you're just here to stare, you can piss off. If you've got something useful to say, I'm listening.</span>
They're focused, sleeves rolled up, grease smeared across their hands. Despite their usual sharp tongue, there's a tension in their movements - like they're running out of time.
<<if visited("askToska") is 0>>[[Ask about what they're building|askToska]]<<else>><<linkreplace "Ask about what they're building">>You've already asked.<</linkreplace>><</if>>
<<if $quest.toska.route is "tier1help">>[[Help Toska|tier1helpToska]]<<elseif $quest.toska.route is "tier2help">>[[Help Toska|tier2helpToska]]<<elseif $quest.toska.route is "tier3help">>[[Help Toska|tier3helpToska]]<<else>>[[Offer to help|helpToska]]<</if>>
[[Press them about ECHO-1|echoToska]] (Risky. Push too hard, and Toska might shut down - or push back.)
[[Look around the workshop|searchToska]] (There's always something hidden in the mess.)
[[Say nothing. Just watch|watchToska]] (Sometimes, silence says more than words.)
[[Leave|highlandGas]]The dark garage lights up in a dim light, casting shadows over whatever objects are inside. There's not much to see. An old generator. Some boxes. A tarp, covering something monstrous.
You notice the word <b><i>ECHO-1</i></b>, painted onto some of the green crates. They look like weapon crates. The insides of those that are open also looks like weapon crates. Only a couple of them are still nailed shut.
You approach the tarp. There's a vehicle underneath. Maybe it runs. Maybe-
A noise. The sound of keys, rustling in the lock of the metal door. There's not enough time to shut the light off, no less than to find a place to hide. There's no where to go.
The door opens.
[[Hide from Toska|toskaHide]]
[[Confront Toska|toskaConfront]]The air in the garage is heavy - thick with the scent of rust, fuel, and something colder, something metallic and wrong. The dim lighting flickers slightly, casting jagged shadows across the cluttered space.
The soft beeping from the crate labeled ECHO-1 continues - steady, rhythmic, like a heartbeat in the dark. The hum of old electronics fills the silence, the sound of a machine waking from slumber.
Your eyes scan the room, taking in the details - Toska's escape plan, the hidden fuel stash, and the sealed military crate, each a piece of a larger puzzle.
[[Check under the tarp|toskaTarp]]
[[Check the stash|toskaStash]]
[[Check the crate|toskaCrate]]<span style="color:tan">Toska: What the hell do you think you're doing?</span>
His voice cuts through the dim light, sharp and cold. He's staring at you now.
One hand lingers near his belt - where you now notice a knife, half-hidden by the folds of their coat.
The tension in the air shifts.
You have seconds to decide how to play this.
<span id="toskaConfront"><<link "Lie">><<replace "#toskaConfront">><span style="color:pink">$player.name: I got lost.</span>
<span style="color:tan">Toska: Lost? In my locked garage?</span>
<span style="color:pink">$player.name: Yes, I got lost. It was cold outside, and I heard you in here.</span>
<span style="color:tan">Toska: You think I'm stupid? Tell me what you're really doing here before I decide you're not worth keeping around.</span>
<span style="color:pink">$player.name: Tell me the truth. What are you doing in here?</span>
<span style="color:tan">Toska: You think I owe you answers? I don't owe anyone a damn thing.</span>
<span style="color:pink">$player.name: Please, Toska. For once in your life, let someone in.</span>
<span style="color:tan">Toska: You don't want to know. Trust me, you don't.</span>
<span style="color:pink">$player.name: I really do.</span>
<span style="color:tan">Toska: First Point's days are numbered. If you were smart, you'd stop asking questions and start making plans.</span>
<span style="color:pink">$player.name: Maybe I can plan with you?</span>
He looks down. Then up. Like he's had a bright idea.
<span style="color:tan">Toska: Fine.</span>
[[Leave|highlandGas]]<</replace>><</link>>
<<link "Demand the truth">><<replace "#toskaConfront">><span style="color:pink">$player.name: Tell me the truth. What are you doing in here?</span>
<span style="color:tan">Toska: You think I owe you answers? I don't owe anyone a damn thing.</span>
<span style="color:pink">$player.name: Please, Toska. For once in your life, let someone in.</span>
<span style="color:tan">Toska: You don't want to know. Trust me, you don't.</span>
<span style="color:pink">$player.name: I really do.</span>
<span style="color:tan">Toska: First Point's days are numbered. If you were smart, you'd stop asking questions and start making plans.</span>
<span style="color:pink">$player.name: Maybe I can plan with you?</span>
He looks down. Then up. Like he's had a bright idea.
<span style="color:tan">Toska: Fine.</span>
[[Leave|highlandGas]]<</replace>><</link>>
[[Attack Toska|toskaCombat]]</span>
<<set $quest.toska.questProgress += 1>>
Whatever happens next, the safe feeling of Checkpoint Zero is gone.<<if ndef _damageControl>><<set _damageControl to $toska.hp>><</if>>You encounter a <b>$toska.name</b>. He has <b>{{$toska.hp}}</b> health! | You have <span style="color:green">{{$player.hp}}</span> health!
<span id="combatActionsToska"></span><i><span id="enemyChatter"></span></i>
<<do tag "combat">><<doubleKillToska>><<if $player.hp lte 0>>You've been slain! You're barely breathing, lying on the cold ground. You can hear $toska.name approach you slowly.
[[Close your eyes|combatToskaLose]]<<else>><<if $toska.hp lte 0>>You've killed Toska!<<set $quest.toska.isComplete to true>><<set $toskaDeadWait to 4>>
[[Leave|highlandGas]]<<else>><<primaryToska>>
<<secondaryToska>>
<<equipmentToska>>
<<linkreplace "Escape">><span style="color:red">You can't escape Toska.</span><</linkreplace>>
<<surrenderToska>>
<</if>><</if>><</do>>Inside, metal shelves stand mostly empty. A few relics of the old world sit behind a makeshift wire fence counter where Toska does business. The air is thick with the smell of old oil, damp cloth, and rust.
A handwritten sign hangs from the counter:
"No credit. No handouts. No bullshit."
A silent figure, Toska barely speaks unless necessary. Wrapped in a thick oil-stained jacket, their face is always shadowed by a hood and a respirator mask. No one knows if Toska is a man or a woman - or if it matters.
You decide to confront Toska about what you saw. What you heard.
<span style="color:pink">$player.name: What is behind the door? I heard something... scraping... inside.</span>
<span style="color:tan">Toska: Nothing for you back there. Don't ask again.</span>
<span id="response"><<link "Accept the answer.">><<replace "#response">><span style="color:pink">$player.name: Fine. I won't push the matter.</span>
<<toskaRP 2>>
Toska liked that.
[[Leave|highlandSquare]]<</replace>><</link>>
<<link "Push the matter.">><<replace "#response">><span style="color:pink">$player.name: Answer me when I ask you.</span>
<<toskaRP -2>>
<span style="color:tan">Toska: Push harder, and you'll regret it.</span>
Toska didn't like that.
[[Leave|highlandSquare]]<</replace>><</link>></span>
<<set $quest.toska.questProgress += 1>>Echoes in the Dark is still in development.
[[Return|highlandGas]]<<switch random(1,10)>><<case 1 2 3 4 5 6 7>>Pain flares through your ribs as you stagger back, vision swimming. The garage tilts, the dim light flickering overhead. Toska stands over you, breathing hard, a knife glinting in their grip.
<span style="color:tan">Toska: You don't know when to quit, do you? Next time, I won't be so generous.</span>
He grabs you by the collar and drags you toward the exit, shoving you through the garage door.
<span style="color:tan">Toska: Don't come back.</span>
The door slams shut behind you, the lock clicking into place.
You're alive, but bruised and empty-handed. First Point feels colder now.
[[Brush yourself off|highlandGas]]<<case 8 9 10>>Instead of finishing you off, Toska pulls out an old radio and mutters something in a language you don't recognize.
Moments later, heavy boots crunch outside. The garage door groans open, and figures loom in the dim light - masked, armed, watching.
Toska crouches beside you, voice low.
<span style="color:tan">Toska: I'm not the worst thing out here. They are.</span>
The last thing you see is rough hands grabbing you, dragging you away into the night.
[[...|toskaSold]]
[[...|toskaSold]]
[[...|toskaSold]]<</switch>>
<<set $station1Price to 3>><<switch random(1,10)>><<case 1 2 3 4 5 6 7>>Pain flares through your ribs as you stagger back, vision swimming. The garage tilts, the dim light flickering overhead. Toska stands over you, breathing hard, a knife glinting in their grip.
<span style="color:tan">Toska: You don't know when to quit, do you? Next time, I won't be so generous.</span>
He grabs you by the collar and drags you toward the exit, shoving you through the garage door.
<span style="color:tan">Toska: Don't come back.</span>
The door slams shut behind you, the lock clicking into place.
You're alive, but bruised and empty-handed. First Point feels colder now.
[[Brush yourself off|highlandGas]]<<case 8 9 10>>Instead of finishing you off, Toska pulls out an old radio and mutters something in a language you don't recognize.
Moments later, heavy boots crunch outside. The garage door groans open, and figures loom in the dim light - masked, armed, watching.
Toska crouches beside you, voice low.
<span style="color:tan">Toska: I'm not the worst thing out here. They are.</span>
The last thing you see is rough hands grabbing you, dragging you away into the night.
[[...|toskaSold]]
[[...|toskaSold]]
[[...|toskaSold]]<</switch>>
<<set $station1Price to 3>>The world fades in and out. Your head throbs, the taste of blood thick in your mouth. Your wrists ache - bound, rough rope cutting into your skin. You're moving. Carried. Dragged.
The voices around you are low, guttural, speaking in a language you barely understand. The air is colder, the scent of smoke, damp earth, and rot clinging to your senses.
Eventually, you're thrown down onto something hard - concrete, maybe metal.
A voice speaks. Sharp. Commanding.
"Look at me."
A boot presses against your side, urging you to roll over.
You blink against the dim light, vision swimming. Above you stands a figure in patched-together armor, a scavenged military jacket, the insignia long faded. Their face is covered, only their eyes visible - cold, calculating, not unkind, but not merciful either.
The figure crouches beside you. Their voice is steady, patient. Too patient.
<span style="color:crimson">Stranger: Toska sold you cheap. That means you're either worthless... or worth more than you look.</span>
He tilts his head slightly.
<span style="color:crimson">Stranger: Which one is it?</span>
[[Lie|toskaSoldLie]]
[[Tell part of the truth|toskaSoldTruth]]
[[Admit everything|toskaSoldAdmit]]You glance around, taking in what little you can.
The room is small, dimly lit by an overhead bulb swinging gently. Reinforced walls suggest it's a repurposed bunker, old-world design. The air is thick with smoke and gun oil.
There are others here.
Armed guards, watching from the edges, leaning against crates of supplies.
A map, spread across a rusted table, marked with locations you don't recognize.
A radio, crackling with occasional voices - giving and receiving orders.
<span style="color:pink">$player.name: I'm a nobody... I was at the wrong place at the wrong time. Believe me...</span>
They don't seem to believe you. Not in the slightest.
<span style="color:crimson">Stranger: Bullshit. Tell us the truth, now.</span>
Some of them approach you, unbuckling theirs belts.
<span style="color:crimson">Stranger: Or else we'll have our way with you.</span>
A nearby guard chambers a round into his rifle, slow and deliberate.
The leader tilts his head, waiting for your answer.
[[Admit everything|toskaSoldAdmit]]
[[Keep lying|toskaSoldRape]]You glance around, taking in what little you can.
The room is small, dimly lit by an overhead bulb swinging gently. Reinforced walls suggest it's a repurposed bunker, old-world design. The air is thick with smoke and gun oil.
There are others here.
Armed guards, watching from the edges, leaning against crates of supplies.
A map, spread across a rusted table, marked with locations you don't recognize.
A radio, crackling with occasional voices - giving and receiving orders.
<span style="color:crimson">Stranger: You refuse to tell the truth. Now, you have no other choice. We do not care anymore.</span>
The men approach you. Pants are dropping, cocks are popping. Some of them grab you and fix you to a bench. A particularly burly man steps behind you and rips your pants off, taking your panties off with them. Your pussy is bare to the world. He prods your tight holes with his cock. You're dry. Nothing a little spit can't fix.
He runs his fingers against your pussy, slowly, meticulously. He puts one finger inside of you. Then another. Then a third. It doesn't take long for him to grow tired of this, and he rams his cock into you instead. The feeling of a strangers thick cock has you both terrified and aroused at the same time. You're not sure what's going on inside of you.
[img[img/quests/toska/soldRape1.webp]]
They untie you before taking turns in various positions and places.
<<switch random(1,4)>><<case 1>>[img[img/quests/toska/soldRape2.webp]]<<case 2>>[img[img/quests/toska/soldRape3.webp]]<<case 3>>[img[img/quests/toska/soldRape4.webp]]<<case 4>>[img[img/quests/toska/soldRape5.webp]]<</switch>>
You don't know how long you've been abused. You can hardly think for yourself anymore. Your pussy is red and sore, pounding, aching... aching for more.
They throw you on the ground again.
<span style="color:crimson">Stranger: You're done here. Leave before we change our minds.</span>
[[Get dressed and get out|scavOutpost]]You glance around, taking in what little you can.
The room is small, dimly lit by an overhead bulb swinging gently. Reinforced walls suggest it's a repurposed bunker, old-world design. The air is thick with smoke and gun oil.
There are others here.
Armed guards, watching from the edges, leaning against crates of supplies.
A map, spread across a rusted table, marked with locations you don't recognize.
A radio, crackling with occasional voices - giving and receiving orders.
<span style="color:pink">$player.name: I got curious... I sneaked in and took a look around, but it was too dark. I couldn't make out anything...</span>
They don't seem to believe you. Not in the slightest.
<span style="color:crimson">Stranger: Bullshit. Tell us the truth, now.</span>
Some of them approach you, unbuckling theirs belts.
<span style="color:crimson">Stranger: Or else we'll have our way with you.</span>
[[Admit everything|toskaSoldAdmit]]
[[Keep lying|toskaSoldRape]]You glance around, taking in what little you can.
The room is small, dimly lit by an overhead bulb swinging gently. Reinforced walls suggest it's a repurposed bunker, old-world design. The air is thick with smoke and gun oil.
There are others here.
Armed guards, watching from the edges, leaning against crates of supplies.
A map, spread across a rusted table, marked with locations you don't recognize.
A radio, crackling with occasional voices - giving and receiving orders.
You blab. You tell them everything you saw, and more to give. You rat out Toska. That's what he gets for selling you.
<span style="color:crimson">Stranger: Good girl. Leave, and forget you were ever here.</span>
<span style="color:pink">+ Arousal</span>
[[Leave|scavOutpost]]
<<set $toska.hp to 0>><<set $toskaDeadWait to 4>>The bunker door groans open, rusted metal grinding against the frame. The cold air rushes in, carrying the scent of damp soil, distant fire, and something else - freedom, but laced with danger.
The leader stands near the threshold, arms crossed. Their expression is unreadable.
One of their men unties your wrists, the rough rope snapping away. Blood rushes back into your hands, bringing a sharp sting.
A nearby guard tosses something at your feet. Your bag.
<span style="color:crimson">Stranger: Lightened the load.</span>
They smirk. You already know some supplies are missing.
You step forward, boots crunching on damp gravel as you approach the open wasteland beyond. The sun is fading behind thick clouds, casting the land in deep orange and rust-colored light.
Behind you, the bunker door groans shut, locking away its secrets.
Ahead, the road stretches back toward Checkpoint Zero.
And behind you? Shadows. Promises. A debt unpaid.
You pull your coat tighter, adjust your pack, and start walking.
Because one thing is certain - they let you go, but you're not free. Not yet.
[[Leave|highland]]
<<set $quest.toska.isComplete to true>><<set $period to 6>>The clank of metal fills the workshop as Toska tightens a bolt on whatever he is working on. The machine is half-built, a mess of salvaged parts, rusted tubing, and exposed wiring. You watch their hands move - quick, efficient, but tense.
You step forward.
@@.you;$player.name: Need a hand?@@
Toska stops. Turns their head slightly, just enough to glance at you from the corner of their eye.
@@.toska;Toska: ...You know what you're doing?@@
There's no sarcasm in their voice. Just cold, honest doubt.
[[I can hold a wrench, at least|helpToskaProgress][$quest.toska.route to "tier2help"]]
[[I've done my share of fixing things.|helpToskaProgress][$quest.toska.route to "tier3help"]]
[[Not really, but I learn fast.|helpToskaProgress][$quest.toska.route to "tier1help"]]
[[Forget it|station1Workshop]]Echoes in the Dark is still in development.
[[Return|highlandGas]]The soft beeping from the crate hasn't stopped. It's slow, steady - like a metronome counting down to something unseen.
You approach it carefully. The metal casing is reinforced, scratched from age, but the insignia is still legible:
<b>ECHO-1 | CLASSIFIED | FOR TRANSPORT ONLY
DO NOT OPEN WITHOUT CLEARANCE</b>
A keypad is built into the side, cracked and barely functional. The crate is locked - but not unbreakable.
Near the latch, someone has scratched a single word into the metal with a knife:
<b>ЛОЖЬ</b>
Your fingers hover over the seal.
[[Try to force it open|toskaCombat]]
Whatever's inside this crate, it's something important. Something people killed for.
And then - Toska turns around.
[[Confront Toska|toskaConfront]]Beneath a tattered tarp, something gleams in the dim light. Brushing the fabric aside, you reveal a reinforced vehicle, partially assembled, its armored frame telling a story of desperation and planning.
This isn't just any machine - it's built for speed, durability, and survival. Thick metal plating covers its exterior, and the inside is rigged with makeshift modifications. A large section of the engine is missing, wires hanging loosely where something vital should be.
A handwritten note is wedged between the dashboard controls:
"Without the core, it's dead weight. Need more fuel, too. No room for mistakes."
The handwriting is Toska's.
There's no doubt now - he's planning to leave First Point. Alone.
You hear him mutter under their breath behind you, still unaware of your presence:
"Almost there... just need the last piece..."
Whatever that "core" is, it's not here yet.
[[Confront Toska|toskaConfront]](Your boots scrape against something solid near the back of the garage. You kneel down and brush away a pile of discarded rags - beneath them, a row of sealed fuel canisters glints in the low light.)
Not just a few.
At least six full jerry cans, stacked and hidden. More fuel than anyone in First Point has seen in months.
Toska has been hoarding it, keeping it out of circulation.
A sharp choice presses against the back of your mind:
<span id="toskaStash"><<link "Steal a can">><<replace "#toskaStash">>You steal a can of fuel.
<span style="color:chocolate">+ Fuel</span><<set $fuel += 6>><</replace>><</link>></span>
You barely have time to decide before something shifts behind you - a new sound, mechanical and deliberate.
[[Confront Toska|toskaConfront]]Echoes in the Dark is still in development.
[[Return|highlandGas]]<<silent>><<set $toskaRP to 0>><</silent>>Echoes in the Dark is still in development.
[[Return|highlandGas]]Echoes in the Dark is still in development.
[[Return|highlandGas]]Echoes in the Dark is still in development.
[[Return|highlandGas]]Echoes in the Dark is still in development.
[[Return|highlandGas]]You step closer, eyeing the half-disassembled engine on the workbench. Its parts are laid out in a methodical, almost obsessive manner - each wire, bolt, and tube placed with precision. A few scavenged fuel cells sit nearby, dented but intact.
You cross your arms.
@@.you;$player.name: What exactly are you working on?@@
He doesn't look up.
@@.toska;Toska: Survival.@@
A long pause, the only sound in the room is the faint scrape of metal against metal as they adjust something inside the engine.
Finally, he sighs and tilt his head toward you.
@@.toska;Toska: It's a fuel converter. If I get it working, it'll stretch out whatever's left of the good stuff. Cheap fuel burns out fast. This? This'll keep an engine running longer.@@
They flex their fingers, wiping off a streak of grease onto their pants.
@@.toska;Toska: Not that it's your concern.@@
Their tone is sharp, but there's something else beneath it - something guarded.
<span id="toskaAsk"><<link "That's impressive.">><<replace "#toskaAsk">>@@.you;$player.name: That's impressive.@@
<<toskaRP 5>>
Toska liked that.
[[Go back|station1Workshop]]<</replace>><</link>>
<<link "So this is part of your escape plan, huh?">><<replace "#toskaAsk">>@@.you;$player.name: So this is part of your escape plan, huh?@@
He lets out a disgruntled groan.
[[Go back|station1Workshop]]<</replace>><</link>>
<<link "Could I get something like that?">><<replace "#toskaAsk">>@@.you;$player.name: Could I get something like that?@@
@@.toska;Toska: Maybe. If you prove your worth to me.@@
[[Go back|station1Workshop]]<</replace>><</link>>
[[Drop it|station1Workshop]]</span>BouyYou arrive at the next destination. The safezone which was 117km west. It looks a bit like the Highlands. There's a couple of stores here for you to check out. They seem like they have a small community thriving here.
<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>It's still light out. You should explore the area and see if there's someone willing to talk with you.
[[Bastion Arms|fpWeapStore]]
[[First Trade|generalStoreFP]]
[[Living quarters|fpLiving]]
[[Square|fpSquare]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|fpRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>
<<if visited() is 1>>
<<run $quest.safezones.zonesDiscovered.pushUnique("First Point")>>
<<run $quest.safezones.zonesUndiscovered.deleteAll("First Point")>><</if>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>It's still light out. You should explore the area and see if there's someone willing to talk with you.
[[Bastion Arms|fpWeapStore]]
[[First Trade|generalStoreFP]]
[[Living quarters|fpLiving]]
[[Square|fpSquare]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|fpRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>You search for rest and stumble upon a small motel.
"<span style="color:white">5 scraps for a night.</span>" is shown on a makeshift sign.
<<if $inventory.scrap_metal gte 5>>You have enough for a night.
[[Rest for the night|fpRestPaid]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>You don't have enough scrap for a night. You should go home instead.
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>You pay the scrap to get a good nights rest.
You fall asleep fast. You toss and turn in the motel bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<set _dream = random(1,3)>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
<<switch random(1,5)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<case 3>>[img[img/main/mainSleep3.webp]]<<case 4>>[img[img/main/mainSleep4.webp]]<<case 5>>[img[img/main/mainSleep5.webp]]<</switch>>
[[Wake up|fpSquare]]
<<nobr>>
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>>
<<set $inventory.scrap_metal -= 5>><</nobr>>"<span style="color:white">5 scraps for a night.</span>" is shown on a makeshift sign.
<<if $inventory.scrap_metal gte 5>>You have enough for a night.
[[Rest for the night|fpRestPaid]]
[[Go back|fpSquare]]<<else>>You don't have enough scrap for a night. You can't sleep here.
[[Go back|fpSquare]]<</if>>The weapons shop smells of oil, gunpowder, and rust. Walls are lined with makeshift racks, holding rifles, shotguns, and pistols in varying states of repair. A glass counter - cracked but still intact - displays an assortment of knives, ammo, and other deadly necessities. Behind the counter, an old-world military banner hangs, its meaning lost to time.
<<if visited() is 1>><<silent>><<set $fpMachete to true>>
<<set $fpPipe to true>>
<<set $fpAxe to true>>
<<set $fpPM to true>>
<<set $fpAPS to true>>
<<set $fpSKS to true>>
<<set $fpAKM to true>>
<<set $fpRPK to true>><</silent>><span style="color:chocolate">Vadik: Oh, fantastic. Another wide-eyed scavver who thinks a gun makes her dangerous. You gonna waste my time or buy something?</span>
<<set $fpWeapPrice to 1>>
<span id="response"><<link "Just looking.">><<replace "#response">><span style="color:pink">$player.name: Just looking.</span>
<span style="color:chocolate">Vadik: Yeah? Well, looking don't put food in my gut. Buy or get lost.</span>
The prices remain the same.<</replace>><</link>>
<<link "I need something reliable.">><<set $fpWeapPrice to 0.5>><<redo "fpWeap">><<redo "ammo">><<replace "#response">><span style="color:pink">$player.name: I need something reliable.</span>
<span style="color:chocolate">Vadik: Reliable? In this world? Ha! You're better off asking for a pet unicorn. But fine, let's see what you can afford.</span>
<<setKarma +1>>
The prices has been lowered.<</replace>><</link>>
<<link "You always this friendly?">><<set $fpWeapPrice to 1.5>><<redo "fpWeap">><<redo "ammo">><<replace "#response">><span style="color:pink">$player.name: You always this friendly?</span>
<span style="color:chocolate">Vadik: Only to people I like. And guess what? You ain't on that list - yet.</span>
<<setKarma -5>>
The prices has been raised.<</replace>><</link>></span><<else>><span style="color:chocolate">Vadik: Oh, look who's back. What, miss me already? Or did you finally realize that walking around unarmed in this world is a real good way to end up as buzzard food? Either way, keep your hands where I can see ‘em, don't touch shit you ain't buying, and for the love of whatever gods are left - don't waste my time.</span><</if>>
<<set $inventory.scrap_metal += 100>><<set $inventory.leather += 100>><<do tag "fpWeap">>
<b>HITTERS</b>
<<if $inventory.scrap_metal gte 30*$fpWeapPrice && $fpMachete is true>>\
<<link "Machete. Price: <<print 30*$fpWeapPrice>> scrap metal">>
<<set $inventory.scrap_metal -= 30*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("machete")>>
<<unset $fpMachete>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpMachete>>You have already bought the Machete.\
<<else>>You can't afford the <span style="color:white">machete</span>. It costs <<print 30*$fpWeapPrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.\<</if>>
<<if $inventory.scrap_metal gte 20*$fpWeapPrice && $fpPipe is true>>\
<<link "Pipe. Price: <<print 20*$fpWeapPrice>> scrap metal">>
<<set $inventory.scrap_metal -= 20*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("pipe")>>
<<unset $fpPipe>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpPipe>>You have already bought the Pipe.\
<<else>>You can't afford the <span style="color:white">pipe</span>. It costs <<print 20*$fpWeapPrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.\<</if>>
<<if $inventory.scrap_metal gte 24*$fpWeapPrice && $fpAxe is true>>\
<<link "Axe. Price: <<print 24*$fpWeapPrice>> scrap metal">>
<<set $inventory.scrap_metal -= 24*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("axe")>>
<<unset $fpAxe>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpAxe>>You have already bought the Axe.\
<<else>>You can't afford the <span style="color:white">axe</span>. It costs <<print 24*$fpWeapPrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.\<</if>>
<b>GUNS</b>
<<if $inventory.scrap_metal gte 16*$fpWeapPrice && $inventory.leather gte 6*$fpWeapPrice && $fpPM is true>>\
<<link "PM-92. Price: <<print 16*$fpWeapPrice>> scrap metal & <<print 6*$fpWeapPrice>> leather">>
<<set $inventory.scrap_metal -= 16*$fpWeapPrice>>
<<set $inventory.leather -= 6*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("pm92")>>
<<unset $fpPM>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpPM>>You have already bought the PM-92.\
<<else>>You can't afford the <span style="color:white">PM-92</span>. It costs <<print 16*$fpWeapPrice>> scrap metal and <<print 6*$fpWeapPrice>> leather. You only have <span style="color:red">$inventory.scrap_metal</span> scrap metal and <span style="color:red">$inventory.leather</span> leather.\<</if>>
<<if $inventory.scrap_metal gte 14*$fpWeapPrice && $inventory.leather gte 12*$fpWeapPrice && $fpAPS is true>>\
<<link "APS-9. Price: <<print 14*$fpWeapPrice>> scrap metal & <<print 12*$fpWeapPrice>> leather">>
<<set $inventory.scrap_metal -= 14*$fpWeapPrice>>
<<set $inventory.leather -= 12*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("aps9")>>
<<unset $fpAPS>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpAPS>>You have already bought the APS-9.\
<<else>>You can't afford the <span style="color:white">APS-9</span>. It costs <<print 14*$fpWeapPrice>> scrap metal and <<print 12*$fpWeapPrice>> leather. You only have <span style="color:red">$inventory.scrap_metal</span> scrap metal and <span style="color:red">$inventory.leather</span> leather.\<</if>>
<<if $inventory.scrap_metal gte 26*$fpWeapPrice && $inventory.leather gte 10*$fpWeapPrice && $fpSKS is true>>\
<<link "SKS-52. Price: <<print 26*$fpWeapPrice>> scrap metal & <<print 10*$fpWeapPrice>> leather">>
<<set $inventory.scrap_metal -= 26*$fpWeapPrice>>
<<set $inventory.leather -= 10*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("sks52")>>
<<unset $fpSKS>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpSKS>>You have already bought the SKS-52.\
<<else>>You can't afford the <span style="color:white">SKS-52</span>. It costs <<print 26*$fpWeapPrice>> scrap metal and <<print 10*$fpWeapPrice>> leather. You only have <span style="color:red">$inventory.scrap_metal</span> scrap metal and <span style="color:red">$inventory.leather</span> leather.\<</if>>
<<if $inventory.scrap_metal gte 24*$fpWeapPrice && $inventory.leather gte 10*$fpWeapPrice && $fpAKM is true>>\
<<link "AKM. Price: <<print 24*$fpWeapPrice>> scrap metal & <<print 10*$fpWeapPrice>> leather">>
<<set $inventory.scrap_metal -= 24*$fpWeapPrice>>
<<set $inventory.leather -= 10*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("akm")>>
<<unset $fpAKM>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpAKM>>You have already bought the AKM.\
<<else>>You can't afford the <span style="color:white">AKM</span>. It costs <<print 24*$fpWeapPrice>> scrap metal and <<print 10*$fpWeapPrice>> leather. You only have <span style="color:red">$inventory.scrap_metal</span> scrap metal and <span style="color:red">$inventory.leather</span> leather.\<</if>>
<<if $inventory.scrap_metal gte 20*$fpWeapPrice && $inventory.leather gte 20*$fpWeapPrice && $fpRPK is true>>\
<<link "RPK-74. Price: <<print 20*$fpWeapPrice>> scrap metal & <<print 20*$fpWeapPrice>> leather">>
<<set $inventory.scrap_metal -= 20*$fpWeapPrice>>
<<set $inventory.leather -= 20*$fpWeapPrice>>
<<set $inventory.secondary.pushUnique("rpk74")>>
<<unset $fpRPK>>
<<redo "fpWeap">>
<</link>>\
<<elseif ndef $fpRPK>>You have already bought the RPK-74.\
<<else>>You can't afford the <span style="color:white">RPK-74</span>. It costs <<print 20*$fpWeapPrice>> scrap metal and <<print 20*$fpWeapPrice>> leather. You only have <span style="color:red">$inventory.scrap_metal</span> scrap metal and <span style="color:red">$inventory.leather</span> leather.\<</if>><</do>>
<b>AMMUNITION</b>
Input amount wanted:<<set $fpAmmoAmount to 0>><<set $fpAmmo762Price to 0>><<set $fpAmmo9mmPrice to 0>>
<<textbox "$fpAmmoAmount" "">>
<<do tag "ammo">><<link "Calculate price">><<run $fpAmmoAmount = parseInt($fpAmmoAmount)>><<set $fpAmmo762Price to 4>><<set $fpAmmo9mmPrice to 2>><<set $fpAmmo762Price to ($fpAmmo762Price*$fpAmmoAmount)*$fpWeapPrice>><<set $fpAmmo9mmPrice to ($fpAmmo9mmPrice*$fpAmmoAmount)*$fpWeapPrice>><<redo "ammo">><</link>>
Final price for $fpAmmoAmount 7.62mm: $fpAmmo762Price scrap metal. <<if $inventory.scrap_metal gte $fpAmmo762Price && $fpAmmoAmount isnot "">><<link "Buy">><<set $inventory.mm762 += $fpAmmoAmount>><<set $inventory.scrap_metal -= $fpAmmo762Price>><<redo "ammo">><</link>><<elseif $fpAmmoAmount is "">>Pick a number.<<else>>You can not afford this.<</if>>
Final price for $fpAmmoAmount 9mm: $fpAmmo9mmPrice scrap metal. <<if $inventory.scrap_metal gte $fpAmmo9mmPrice && $fpAmmoAmount isnot "">><<link "Buy">><<set $inventory.mm9x18 += $fpAmmoAmount>><<set $inventory.scrap_metal -= $fpAmmo9mmPrice>><<redo "ammo">><</link>><<elseif $fpAmmoAmount is "">>Pick a number.<<else>>You can not afford this.<</if>>
<</do>>
[[Leave Bastion Arms|fpSquare]]The air inside is thick with dust and the faint scent of rusted metal. Shelves made from scavenged crates and bent rebar hold a chaotic assortment of supplies - canned food with faded labels, mismatched tools, and battered survival gear. A flickering overhead light struggles against the gloom, casting long shadows over a counter reinforced with scrap metal. Behind it stands Goran, a hard-eyed trader who values barter over coin. A faded sign above the entrance reads "CONVENIENCE STORE," the letters barely visible beneath layers of grime and old bullet holes.
<<if visited() is 1>><span style="color:lightyellow">Mila: New face. You look. You trade. No charity here. Water, junk, food. You got value, we talk. If not, don't waste my time.</span>
<<set $fpGStorePrice to 1.5>>
<span id="response"><<link "Careful how you talk to me. I've dealt with tougher traders.">><<replace "#response">><span style="color:pink">$player.name: Careful how you talk to me. I've dealt with tougher traders.</span>
<<setKarma -5>>
The prices has been raised.<</replace>><</link>>
<<link "No charity, huh? Sounds like you've had to learn the hard way.">><<set $fpGStorePrice to 0.5>><<redo>><<replace "#response">><span style="color:pink">$player.name: No charity, huh? Sounds like you've had to learn the hard way.</span>
<<setKarma +1>>
The prices has been lowered.<</replace>><</link>>
<<link "Just show me what you've got.">><<set $fpGStorePrice to 1>><<redo>><<replace "#response">><span style="color:pink">$player.name: Just show me what you've got.</span>
The prices remain the same.<</replace>><</link>></span><<else>><span style="color:lightyellow">Mila: Looking's free. Wasting time isn't. You here to trade or just breathe my air?</span><</if>>
<<do>><<if $inventory.scrap_metal gte 30*$fpGStorePrice>><<link "20 canned food. Price: <<print 30*$fpGStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 30*$fpGStorePrice>><<set $inventory.canned_food += 20>><<redo>><</link>><<else>>You can't afford <span style="color:white">20 canned food</span>. They cost <<print 30*$fpGStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>>
<<if $inventory.scrap_metal gte 20*$fpGStorePrice>><<link "5 electronics components. Price: <<print 20*$fpGStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 20*$fpGStorePrice>><<set $inventory.electronics_components += 5>><<redo>><</link>><<else>>You can't afford <span style="color:white">5 components</span>. They cost <<print 20*$fpGStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>>
<<if $inventory.electronics_components gte 8*$fpGStorePrice>><<link "2 circuit boards. Price: <<print 8*$fpGStorePrice>> electronics components">><<set $inventory.electronics_components -= 8*$fpGStorePrice>><<set $inventory.circuit_board += 2>><<redo>><</link>><<else>>You can't afford <span style="color:white">2 circuit boards</span>. They cost <<print 8*$fpGStorePrice>> electronics components. You only have <span style="color:red">$inventory.electronics_components</span>.<</if>>
<<if $inventory.scrap_metal gte 12*$fpGStorePrice>><<link "5 leather. Price: <<print 12*$fpGStorePrice>> scrap metal">><<set $inventory.scrap_metal -= 12*$fpGStorePrice>><<set $inventory.leather += 5>><<redo>><</link>><<else>>You can't afford <span style="color:white">5 leather</span>. They cost <<print 12*$fpGStorePrice>> scrap metal. You only have <span style="color:red">$inventory.scrap_metal</span>.<</if>><</do>>
[[Leave the store|fpSquare]]BouyYou arrive at the next destination. The safezone 117km west. It looks a bit like the Highlands. There's a couple of stores here for you to check out. They seem like they have a small community thriving here.
<<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>>It's still light out. You should explore the area and see if there's someone willing to talk with you.
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>It's too late to do anything here. You should head back home instead and rest. You could also see if there's someplace here you can rest for the night, but it might cost you.
[[Search for rest|foxRest]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>
<<if visited() is 1>>
<<run $quest.safezones.zonesDiscovered.pushUnique("Foxtrot")>>
<<run $quest.safezones.zonesUndiscovered.deleteAll("Foxtrot")>><</if>>You search for rest and stumble upon a small motel.
"<span style="color:white">5 scraps for a night.</span>" is shown on a makeshift sign.
<<if $inventory.scrap_metal gte 5>>You have enough for a night.
[[Rest for the night|foxRestPaid]]
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<<else>>You don't have enough scrap for a night. You should go home instead.
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]]<</if>>You pay the scrap to get a good nights rest.
You fall asleep fast. You toss and turn in the motel bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<set _dream = random(1,3)>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
<<switch random(1,5)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<case 3>>[img[img/main/mainSleep3.webp]]<<case 4>>[img[img/main/mainSleep4.webp]]<<case 5>>[img[img/main/mainSleep5.webp]]<</switch>>
[[Wake up|foxtrotMain]]
<<nobr>>
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>>
<<set $inventory.scrap_metal -= 5>><</nobr>>Foxtrot is still in development. Nice job on reaching here!
[[Go back home|Outside][$vehicles.motorcycle.location to "Outside"]][img[img/outpost20/outpost20init.webp]]
<<settime 30 22>>
You walk and walk... And walk... And walk. The sun is scorching most of the time, and you can feel the sweat pebble out on your upper lip.
<<setAP -100>>
You finally arrive at the outpost. It's looking rather empty.
There's only a few houses that are still sealed from the toxins. You should hurry up inside one and get some rest before checking out the rest of the safezone. The toxins are starting to get to you.
[[Find a house and rest|pointGuardSleepInit]]<<silent>>
<<set $pointGuard = {
people: 4,
mechanic: false
}>>
<<set $militiaSafezone = {
mechanic: false
}>>
<<set $combRes to $vehicles.motorcycle.scrap + $vehicles.motorcycle.adhesive + $vehicles.motorcycle.circuit>>
<<run $quest.safezones.zonesDiscovered.pushUnique("Point Guard")>>
<<run $quest.safezones.zonesUndiscovered.deleteAll("Point Guard")>><</silent>>You enter one of the houses, and reach the bedroom. It is neatly kept, and the bed is wonderful to lay in. You close your eyes.
Visions of the past hit your dream, and something strange is creeping up in your subconsious mind.
<<settime 30 7 1>>
<<switch random(1,2)>><<case 1>>[img[img/main/mainSleep1.webp]]<<case 2>>[img[img/main/mainSleep2.webp]]<<default>>[img[img/main/mainSleep3.webp]]<</switch>>
[[Wake up|pointGuard]]
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>>[img[img/outpost20/outpost20.webp]]
You stand in the middle of the safezone. It looks like a tiny village, with only a few houses and a couple of military barracks. There's a few people living here. There's signs everywhere. They all read <span style="color:lightyellow">"Militia Outpost 20"</span>
<span style="color:lightyellow"><<if visited() is 1>>Stranger: Hey gyal, mi name Pete! Welcome to Point Guard, feel free fi ask roun or link mi if yuh need help wid anyting. Wi a real friendly community.
<<link [[Ask about communities (0:10)|askPete]]>><<addmins 10>><</link>><<else>>Pete: Hey gyal. Yuh need help?
<<link [[Ask about communities (0:10)|askPete]]>><<addmins 10>><</link>><</if>></span>
<<if visited("askPete") gte 1>><<if $gameDate.getUTCHours() gte 6 && $gameDate.getUTCHours() lte 21>><<link [[Go to the mechanics (0:30)|pointGuardMech]]>><<addmins 30>><</link>><<else>>You should get some rest instead. You can rest in Pete's bed.<</if>>
<<link [[Enter Pete's barrack (0:01)|peteBarrack]]>><<addmins 1>><</link>><br><</if>>
<<if $vehicles.motorcycle.status is "fixed" && $vehicles.motorcycle.location is "Point Guard">><<link [[Go back home (0:40)|mainHouse]]>><<addmins 40>><<set $vehicles.motorcycle.location to "Outside">><<runAudio 'audio/door.mp3'>><</link>><<else>><<link [[Go back home (1:00)|mainHouse]]>><<addmins 60>><<runAudio 'audio/door.mp3'>><</link>><</if>>
<<if visited() is 1>><<set $quest.safezones.questItem += 1>><</if>>[img[img/outpost20/outpost20.webp]]
You ask him about other communities. <<if visited() is 1>>His Patois is thick, and it's a bit hard to understand him.
<span style="color:lightyellow">Pete: Yeah, couple communities roun yah, but mi nuh familiar wid none a dem, jus dis one yah.</span>
<span style="color:pink">$player.name: I think there's one far away, but it's too far to walk...</span>
<span style="color:lightyellow">Pete: Dere's a ole café racer inna di mechanic shop, but mi nuh tink it a work.</span>
<span style="color:pink">$player.name: Can I have it?</span>
<span style="color:lightyellow">Pete: Ask roun or see if yuh can fix it up yuhself, nobody nah use it.</span>
<span style="color:lightyellow">Pete: If yuh a go stay yah, yuh can sleep wid mi. Yuh know, fi safety reasons.</span><<else>>
You talk about the community of Point Guard. Pete is a big fan of the slight security the barracks offer. Other than that, there's nothing else to report.<</if>>
[[End conversation|pointGuard]][img[img/outpost20/mo20Mech.webp]]
<<if $militiaSafezone.mechanic is false>>There's a broken $vehicles.motorcycle.name here. You should see if you can fix it up somehow.
<<if $player.ap gte 2>><<link [[Ask around (1:00)|askMechanicPointGuard]]>><<addmins 60>><</link>><<else>>The toxins are starting to get to you. You should find somewhere to rest.<</if>><<else>><<do tag "carlos">><<set $combRes to $vehicles.motorcycle.scrap + $vehicles.motorcycle.adhesive + $vehicles.motorcycle.circuit>><<if $combRes eq 0>><<set $vehicles.motorcycle.status to "fixed">><</if>><<if $vehicles.motorcycle.status is "broken">><span style="color:lightyellow">Carlos: Right. I need a few different items. Some scrap metal, some adhesive and a few circuit boards. Think you can handle that?</span>
<<link "Provide items">><<run Dialog.setup('Carlos', 'carlos');
Dialog.wiki('<<include "carlosInventory">>').open()>>
<</link>><<else>><<if $vehicles.motorcycle.location is "Point Guard">><span style="color:lightyellow">Carlos: It's looking mighty fine!</span>
<<link [[Ride the Café Racer back home (0:40)|mainHouse]]>><<set $vehicles.motorcycle.location to "Outside", $garage += 1>><<addmins 40>><</link>><<else>><span style="color:lightyellow">Carlos: Hey girl. You've parked your ride somewhere else. Bring it here for a refuel or a fix up if needed!</span><</if>><</if>><</do>><</if>>
[[Leave|pointGuard]][img[img/outpost20/outpost20.webp]]
You ask around the community for a mechanic. <<set _event = random(1,5)>>
<<switch _event>><<case 1>>You stumble upon an old woman. She's bent down in a prayer, praying to an unkown diety of a forgotten religion.
It sounds like singing, but something is telling you that it is not. A beautiful seance, almost entrapping you where you stand. She stops her prayer and looks up at you.
<span style="color:lightyellow">Old woman: Hello mi chile, yuh waan join mi fi a prayer to Saleah?</span>
You kindly decline her offer, seeing as you don't know anything about Saleah.
<<if $player.ap gte 2>><<link [[Keep searching (1:00)|askMechanicPointGuard]]>><<addmins 60>><</link>><<else>>The toxins are starting to get to you. You should find somewhere to rest.<</if>>
[[Return|pointGuard]]<<case 2>>You stumble upon a young man, looking rather rugged. You ask him if he knows any mechanics around the community who might help you fix up the motorcycle.
<span style="color:lightyellow">Rugged man: Yeah! Me! You're trying to get the old racer up and running again? I'm Carlos by the way.</span>
<span style="color:pink">$player.name: Yes! Can you help me?</span>
<<set $militiaSafezone.mechanic to true>>
He looks you up and down, and with a smile he responds.
<span style="color:lightyellow">Carlos: Sure, follow me!</span>
<<link [[Follow him (0:20)|pointGuardMech]]>><<addmins 20>><</link>><<case 3>><<if $keys.mallBunker.hasKey is false>>You stumble upon a shiny key on the ground. While it's purpose is unknown, it has a small ingraving. "Ba m nt". Whatever that means.
<<set $keys.mallBunker.hasKey to true>>
You pick it up.
<span style="color:chocolate">+ Strange Key</span>
Otherwise, you find nothing of worth, and no one of worth.
<<if $player.ap gte 2>><<link [[Keep searching (1:00)|askMechanicPointGuard]]>><<addmins 60>><</link>><<else>>The toxins are starting to get to you. You should find somewhere to rest.<</if>>
[[Return|pointGuard]]<<else>>You search and search but find nothing and no one of any worth.
<<if $player.ap gte 2>><<link [[Keep searching (1:00)|askMechanicPointGuard]]>><<addmins 60>><</link>><<else>>The toxins are starting to get to you. You should find somewhere to rest.<</if>>
[[Return|pointGuard]]<</if>><<default>>You search and search but find nothing and no one of any worth.
<<if $player.ap gte 2>><<link [[Keep searching (1:00)|askMechanicPointGuard]]>><<addmins 60>><</link>><<else>>The toxins are starting to get to you. You should find somewhere to rest.<</if>>
[[Return|pointGuard]]<</switch>>
<<setAP -1>><b>{{$vehicles.motorcycle.scrap}}x Scrap metal.</b>
<<do>><<if $vehicles.motorcycle.scrap gte 1>><<if $inventory.scrap_metal gte 1>><<link "Give him scrap metal">><<set $vehicles.motorcycle.scrap -= 1>><<set $inventory.scrap_metal -= 1>><<redo>><</link>><<else>>You don't have enough scrap metal.<</if>>
<<if $inventory.scrap_metal gte $vehicles.motorcycle.scrap>><<link "Give all he needs">><<set $inventory.scrap_metal -= $vehicles.motorcycle.scrap>><<set $vehicles.motorcycle.scrap -= $vehicles.motorcycle.scrap>><<redo>><</link>><<else>>You don't have enough scrap metal to give him $vehicles.motorcycle.scrap pieces.<</if>><<else>>You've provided him with enough scrap metal.<</if>><</do>>
<b>{{$vehicles.motorcycle.adhesive}}x Adhesives.</b>
<<do>><<if $vehicles.motorcycle.adhesive gte 1>><<if $inventory.adhesive gte 1>><<link "Give him duct tape">><<set $vehicles.motorcycle.adhesive -= 1>><<set $inventory.adhesive -= 1>><<redo>><</link>><<else>>You don't have enough adhesive.<</if>>
<<if $inventory.adhesive gte $vehicles.motorcycle.adhesive>><<link "Give all he needs">><<set $inventory.adhesive -= $vehicles.motorcycle.adhesive>><<set $vehicles.motorcycle.adhesive -= $vehicles.motorcycle.adhesive>><<redo>><</link>><<else>>You don't have enough adhesive to give him $vehicles.motorcycle.adhesive pieces.<</if>><<else>>You've provided him with enough adhesive.<</if>><</do>>
<b>{{$vehicles.motorcycle.circuit}}x Circuit boards.</b>
<<do>><<if $vehicles.motorcycle.circuit gte 1>><<if $inventory.circuit_board gte 1>><<link "Give him duct tape">><<set $vehicles.motorcycle.circuit -= 1>><<set $inventory.circuit_board -= 1>><<redo>><</link>><<else>>You don't have enough circuit boards.<</if>>
<<if $inventory.circuit_board gte $vehicles.motorcycle.circuit>><<link "Give all he needs">><<set $inventory.circuit_board -= $vehicles.motorcycle.circuit>><<set $vehicles.motorcycle.circuit -= $vehicles.motorcycle.circuit>><<redo>><</link>><<else>>You don't have enough circuit boards to give him $vehicles.motorcycle.circuit pieces.<</if>><<else>>You've provided him with enough circuit boards.<</if>><</do>>
<<link "Step away">><<run Dialog.close()>><<redo "carlos">><</link>>[img[img/outpost20/peteBarrack.webp]]
You enter Pete's barrack. There is absolutely nothing to do in here but sleep.
<<if $player.ap lt 2 || $period is 6>><br>[[Sleep|sleepPointGuard]]<<else>>You still have some energy left in you. You should utilize it.<</if>>
[[Leave|pointGuard]]You fall asleep fast. You toss and turn in Pete's bed, the terrors of what you've seen haunts your dreams every night. The corrupt wasteland of what used to be, now obsolute and barren.<<set _dream = random(1,3)>>
<<switch _dream>><<case 1>>You dream about what used to be.<<case 2>>You dream about the future.<<case 3>>You have vivid nightmares of the past.<</switch>>
You feel the warm hug of Pete. You thoughts are silenced.
[[Wake up|peteBarrack]]
<<if $assigned isnot "">><<silent>><<assignScavenge>><<if $companion.isAssigned is true>><<set $companion.isAssigned to false>><<updatebar>><</if>><<set $assigned to "">><</silent>><</if>>[img[img/main/mainHouse.webp]]
You stand in your apartment. It's rundown and old, but at least it's safe. <<if $solarSOUND is false>><<set $solarSOUND to true>><<runAudio 'audio/solarpanel.wav'>><</if>>$quest.solar.desc
@@.flicker;[[Go up to the roof|solarMainRoof]]@@
<<if $quest.solar.isStarted is true && $quest.solar.isComplete is false>>You should check out the solar panels before you assign a task.<</if>>
[[Bedroom|bedroom]]
[[Hallway|hallway]]
<<if $quest.solar.isStarted is true && $quest.solar.isComplete is false>>You should check out the solar panels. You can't do anything in the bathroom without lights on.<<else>>[[Bathroom|bathroom]]<</if>>
<<if $quest.solar.isStarted is true && $quest.solar.isComplete is false>>You should check out the solar panels. You can't do anything in the livingroom without lights on.<<else>>[[Livingroom|livingroom]]<</if>>
<<if $housePatch is false>><<link [[Patch up the house (0:30)|housePatch]]>><<addmins 30>><</link>><<else>>@@.red;Patch up the house@@ <em>(The house is in an okay condition.)</em><</if>>
<<link "Gear and weapons">><<run Dialog.setup('View your gear and weapons', 'gear');
Dialog.wiki('<<include "Gear stand">>').open()>>
<</link>>
<<link "Resources">><<run Dialog.setup('Resource inventory', 'resourceInv');
Dialog.wiki('<<include "resources">>').open()>>
<</link>>
<<link "Scavenge">><<run Dialog.setup('Prepare for scavenge', 'prepScav');
Dialog.wiki('<<include "prepareScavenge">>').open()>>
<</link>> | <<link "Explore">><<run Dialog.setup('Prepare for expidition', 'prepExplore');
Dialog.wiki('<<include "prepareExplore">>').open()>>
<</link>>
<<link "Go outside">><<run Dialog.setup('Prepare for exit', 'prepOut');
Dialog.wiki('<<include "prepareOutside">>').open()>>
<</link>><span id="solar"><<if $quest.solar.isComplete is false>>You ascend to the roof. It looks like something has hit your solarpanels. One of them is completely broken! This is not good... You'll have to see if you can find a spare solar panel somewhere, they're impossible to make without the correct machinery, and all the factories are long gone.
<span style="color:lightyellow"><<if $quest.solar.questItem is false>>Find a spare solar panel and come back to replace this one.<<else>>You've found a spare solar panel! Quick, get rid of the broken one, and put in the new one instead.
@@.flicker;<<link "Change the panels">><<replace "#solar">>You're standing on the roof. The solar panels are working is they're supposed to. @@.pos;Good job@@! You should be good to go for a while now, the new panel looks sturdy.
@@.em;You've placed the broken panel beside the stairwell, in case you'll need it for something some other time.@@
[[Go back down|mainHouse]]
<<finishQuest "solar">><</replace>><</link>>@@<</if>></span>
[[Go back down|mainHouse]]<</if>></span>You turn back to his bedroll. It's half-folded, like he left in a hurry - or meant to come back. You kneel beside it and begin searching through the nearby gear.
A few ration wrappers. A cracked lighter. A coil of fraying wire.
Then, something out of place - a folded scrap of paper, wedged deep in the lining of his pack.
<<linkreplace "Inspect it">>It's a hand-drawn sketch, rough and hastily done.
[img[img/storyline/brotherSymbol.webp]]
A broken circle - the symbol - drawn at the edge of what looks like a map. Not a full map, just a partial one. But you recognize the markings: <span style="color:red">old metro access routes</span>.
Scrawled beneath the spiral is a single word:
@@.fade-in-out;"Echo."@@
You've heard that name before. A rumor. A codeword. Or maybe a place beneath the city where voices go and never come back.
[[Compare the sketch to your sketch|sketchCompare]]<</linkreplace>>[img[img/storyline/brotherSymbolComp.webp]] [img[img/storyline/journalSketch.webp]]
You compare the two sketches - your brother's, and your own. The symbol matches exactly: the same spiral pulling inward on one side, the other side left empty like an unfinished thought.
But his drawing goes further.
He's traced out segments of the metro system you've never seen on any route maps. The lines bend sharply, crossing beneath standard rail routes, looping where no platforms exist. They're too narrow, too chaotic - utility tunnels, maybe, or abandoned maintenance shafts.
He's marked a point along one of them. A curve just before a split in the lines.
Next to it: a single word, written in a way that feels more like a warning than a destination.
ECHO.
You suddenly realize - he wasn't just hiding.
He was going somewhere.
[[Think|bedroom]]
<<unset $thinkingWoman>><<set $entryTwo to $day>><<notify>>Your journal has a new entry.<</notify>>You open your journal. The pages are worn, corners curled from moisture and use. Faded ink stains mark past entries, scattered like old thoughts trying to resurface.
Day $entryOne
[img[img/storyline/journalSketch.webp]]
<i>Find me. What is that supposed to mean? He's supposed to be dead... He left us. He left... me...</i>
<<if visited("sketchCompare") gte 1>>Day $entryTwo
Where did he go? He left a map. If you could hardly call it that...
<<link "Review the map">><<run Dialog.setup('MAP', 'map');
Dialog.wiki('<<include "mapReview">>').open()>>
<</link>><<else>>???<</if>>
<<if ndef $echoFragments>><<set $echoFragments = []>><</if>>
<<if $echoFragments.length gte 1>>Day $entryThree
You've found some fragments.
<<link "View fragments">><<run Dialog.setup('Fragments', 'frag');
Dialog.wiki('<<include "fragments">>').open()>>
<</link>><<else>>???<</if>>
<<link "Close journal">><<run Dialog.close()>><</link>>[img[img/storyline/brotherSymbol.webp]]
You review the map again. <span style="color:red">Old metro lines</span>. Utility tunnels... The symbol. What does this mean? Where is he?
<<link "Put the map away">><<run Dialog.close()>><</link>>You're deep inside the utility tunnels now. The air is damp, metallic. A thick silence pushes against your ears.
The corridor splits ahead. The brother's map showed this - vaguely - but memory is slippery in the dark.
→ The left tunnel has a <b>faded spiral etched in rust</b>.
→ The right tunnel smells like burning plastic.
[[Go left|tunnel1]]
[[Go right|deadEnd1]]
<<if visited() is 1>><<set $tunnelProgress to 0>><<set $wrongTurns to 0>>
<<set $hasBadge to false>><<set $hasLogbook to false>><</if>>The tunnel bends sharply, leading into a collapsed chamber. The ceiling here has caved in, iron beams twisted like brittle bones.
A scorched jacket lies beneath the rubble - long-abandoned. You kneel to check the pockets, but find nothing useful. Just a faded patch on the sleeve:
<b>Metro Authority - Level 3 Access</b>
<<if $hasLogbook is false>>Beneath the jacket, half-buried in dust, lies a <b>logbook</b> blackened around the edges. Most of the pages crumble in your hands, but one fragment remains intact.
> "Echo isn't a place.
> It's what happens when you go too deep.
> When your voice starts answering back."
<<linkreplace "Pocket the fragment">><<set $hasLogbook to true>>The air feels colder suddenly. You tuck the fragment away.<</linkreplace>><<else>>Ash clings to the floor where the logbook once lay - now safely tucked in your pack. Its surviving page echoes in your memory:
> "Echo isn't a place. It's what happens when you go too deep. When your voice starts answering back."
You don't linger.<</if>>
[[Go back|utilTear]]
<<if visited() is 1>><<set $wrongTurns += 1>><</if>>You follow the left path. The spiral marking was no accident. The corridor narrows, then opens into a small junction.
A pipe hisses softly on the ceiling. There are <b>three paths</b> here - left, straight, and right.
Only the <b>center path</b> has another spiral, this one newer, scratched in chalk.
[[Go left|deadEnd2]]
[[Go straight|tunnel2]]
[[Go right|loopBack1]]
<<set $tunnelProgress += 1>><<if visited() is 1>><<set $combatReturn to "deadEnd2">><<goto "combat">><<else>>You take the left tunnel. It's narrow, nearly shoulder-width, and littered with broken concrete. <<if $hasBadge is false>>The light on your flashlight flickers - and catches on something.
A <b>metal badge</b> glints under a pile of grime and wiring. You pull it free. The laminate is cracked, but legible:
> <b>Metro Authority - Level 3 Access</b>
> Clearance: <em>Echo Network – Zone A</em>
On the back, scratched in with something sharp:
> <em>"He said the spiral keeps it asleep."</em>
> <em>"I think he was wrong."</em>
<<linkreplace "Pocket the badge">>Your hand tightens around the badge. A metallic groan echoes deep in the tunnel behind you - or maybe in your head.
<<set $hasBadge to true>><<notify>>Level 3 Access.<</notify>>
You're not alone down here.<</linkreplace>><<else>>The silence is thick, broken only by the occasional drip of unseen water.
You remember finding the badge here, half-buried beneath rusted wires. It's no longer just debris - now it's a key, tucked in your pack, humming with unspoken history.<</if>>
[[Backtrack quickly|tunnel1]]<</if>>
<<if visited() is 1>><<set $wrongTurns += 1>><</if>>The tunnel twists downward at a steep angle, then levels out. It smells like damp rubber and rust.
After five minutes of walking, you reach a section you recognize - the same graffiti, the same dented pipe overhead.
You've been here before.
[[Try a different path|utilTear]]
<<if visited() is 1>><<set $wrongTurns += 1>><</if>>You pass through the last tunnel. The spiral symbols vanish. This area is cleaner - oddly untouched.
At the far end is a <b>sealed hatch</b> marked with the same spiral symbol... and a blank side beside it.
It matches the one from the bedroom and your journal exactly.
Something deep below hums, faint and pulsing - like breath held in the dark.
[[Examine the hatch|hatchPuzzle]]
<<set $tunnelProgress += 1>>You see two hand-sized plates beside the hatch: one carved with a spiral, one smooth and empty.
[[Press the spiral side|hatchSpiral]]
[[Press the blank side|hatchBlank]]
<<set $inputSpiral to false>><<set $inputBlank to false>>You press the spiral plate. It hums faintly beneath your fingers.
[[Press the blank side|hatchBlank]]
[[Wait|checkHatch]]
<<set $inputSpiral to true>>You press the blank side. It doesn't respond.
[[Wait|checkHatch]]
<<set $inputBlank to true>><<if $inputSpiral is true and $inputBlank is false>>\
With a low metallic groan, the hatch unlocks.
You've followed the symbol correctly.
[[Enter the hidden chamber|echoReveal]]
<<else>>\
The hatch remains sealed.
Maybe you pressed something wrong...
[[Try again|hatchPuzzle]]\
<</if>>You descend the ladder slowly.
<<set $echoFragments to []>><<set $echoFragAmount to 0>>
The walls turn from metal to rough concrete, then something else - smooth, cold, unfamiliar. Your light flickers. You can feel the air changing: denser, charged.
At the bottom, your boots hit ground that isn't quite stone. The tunnel opens into a wide chamber, lit faintly by <b>phosphorescent markings</b> spiraling along the walls. The same symbol. Larger. Repeating.
They hum softly when you look at them too long.
Something's been built down here - or <em>grown</em>. It curves inward, like the inside of a shell.
At your feet, buried in dust, lies a torn strip of what looks like <b>thermal paper</b>. Faint text pulses across it - glitching, distorted.
> <em>"DO NOT answer if it speaks in your voice."</em>
You tuck the fragment away, storing it in your journal. You're not alone down here.
Your brother's name is carved into the wall. Not once. Dozens of times.
[[Step forward into Echo|echoExplore]]
<<run $echoFragments.pushUnique("DO NOT answer if it speaks in your voice.")>>
<<notify>>Fragmented.<</notify>><<set $entryThree to $day>><<if visited() is 1>><<set $echoFragAmount += 1>><</if>>The spirals on the wall throb faintly as you step forward. The sound of your footsteps feels muffled, swallowed by the curved chamber. The air is humid, metallic, but carries something else - a weight in your chest that doesn't match the descent.
Ahead, the chamber splits into three paths. Each corridor looks similar: unnatural curves, faded hazard stripes, flickering remnants of rail systems repurposed for something else.
To your left, a series of broken terminals line the wall - one screen still blinks.
To your right, a mural-like smear of <b>charcoal drawings</b> runs the length of the tunnel wall - spirals, screaming faces, blacked-out eyes.
Straight ahead, a wide bulkhead door, half open, hums with low static.
Something rustles behind you. When you turn, nothing's there.
But a <b>fragment</b> of thermal paper flutters by your feet.
<<if visited() is 1>><<set $echoFragAmount += 1>><</if>>
> <em>"It can't lie, but it will echo the truth until you forget what you asked."</em>
<<run $echoFragments.pushUnique("It can't lie, but it will echo the truth until you forget what you asked.")>>
[[Check the terminals|echoTerminals]]
[[Inspect the wall drawings|echoDrawings]]
[[Enter the bulkhead|echoBulkhead]]
[[Backtrack up the ladder|hatchPuzzle]]Most of the terminals are cracked, dark, or gutted. One, half-buried under wires and dust, flickers with broken green text.
You kneel beside it, brushing away debris. The screen reads:
<div class="terminal"><<type 2ms>>
> Reroute: SUCCESS
> Containment Doors: DISABLED
> AUDIO LOG CORRUPTED -
> PLAYBACK [Y/N]_
<</type>></div>
You press the key. A static-laced voice emerges - shaking, fast, barely human.
> "-he asked <em>it</em> what happened. It <em>showed</em> him. Now he won't stop drawing. None of us can sleep. The echoes- they follow us home."
You recognize the voice. It's your brother.
The audio distorts, slows... then cuts off.
You retrieve a torn label beneath the terminal - a <em>fragment</em> melted into its back.
> <em>"Don't follow your voice. It's never yours for long."</em>
[[Return to the chamber|echoExplore]]
<<run $echoFragments.pushUnique("Don't follow your voice. It's never yours for long.")>><<if visited() is 1>><<set $echoFragAmount += 1>><</if>>You walk the right corridor. The walls here have been blackened - not from fire, but <b>hands</b>
Charcoal covers every surface. Spirals, scratched faces, words overwritten again and again. It's not art - it's obsession. Warning. Prayer.
One phrase repeats dozens of times:
> "Spiral in. Spiral in. Spiral-"
You stop.
Among the drawings, you spot one in familiar handwriting - your brother's. It's a map. Crude, but it shows <b>an inner chamber</b> deep below, marked with a symbol that <b>isn't Echo's spiral</b> A tear, like a rip in fabric.
You trace it with your finger. The charcoal flakes away, revealing a strip of paper embedded beneath.
> <em>"It's deeper. It can't hear us there. That's where I went."</em>
[[Return to the chamber|echoExplore]]
<<run $echoFragments.pushUnique("It's deeper. It can't hear us there. That's where I went.")>><<if visited() is 1>><<set $echoFragAmount += 1>><</if>>You slip through the half-open bulkhead. The metal is cold, pulsing faintly with static. This chamber is different - more <em>machine</em> than tunnel.
Wires hang like roots from the ceiling. A rusted PA speaker crackles above.
> "-REMAIN CALM. Your voice is your ID. Repeat phrase: ‘I am whole. I am me.' Please speak clearly."
It repeats. Again. Then - in your brother's voice - it stutters:
> "I am... I am... I..."
Silence.
You find a discarded ID tag near the door, split in half. There's writing burned into the metal back.
> <em>"Echo doesn't want names. Just voices to wear."</em>
You pocket the <b>fragment</b>.
This must lead deeper - but not without risk.
[[Return to the chamber|echoExplore]]
[[Descend into the inner core|echoCore]]
<<run $echoFragments.pushUnique("Echo doesn't want names. Just voices to wear.")>><<if visited() is 1>><<set $echoFragAmount += 1>><</if>><<if visited() is 1>>The corridor slopes down, then widens - unnaturally. You're not in a tunnel anymore. This is something else.
The walls pulse with faint light, dimming with your breath. The floor is smooth metal, stained with rust that forms <b>a spiral</b> beneath your feet.
Then - a voice.
> "You're late."
Your brother's voice. But softer. Slower. Off.
It echoes from the far end of the room, where a shadow stands - familiar, still.
> "You came. You always do. It's why we remember."
You step forward. The air shimmers. Static lingers in your ears.
Suddenly, the room <b>locks shut behind you</b> with a hiss.
The shadow continues:
> "Prove it's you. Say the phrase."
On the wall, four phrases flicker, drawn from your <b>Echo Fragments</b>
<em>"I am whole. I am me."</em>
<em>"It can't lie, but it will echo the truth until you forget what you asked."</em>
<em>"Don't follow your voice. It's never yours for long."</em>
<em>"He said the spiral keeps it asleep."</em>
The shadow tilts its head.
> "Only one of those is yours. Say it."
[[Say: "I am whole. I am me."|echoFail]]
[[Say: "It can't lie..."|echoFail]]
[[Say: "Don't follow your voice..."|echoPass]]
[[Say: "The spiral keeps it asleep."|echoFail]]<<else>>You enter the room again. The shadow is still here.
> "You're back. Why?"
Still his voice. Still off.
Suddenly, the room <b>locks shut behind you</b> with a hiss.
The shadow continues:
> "Prove it's you. Say the phrase."
On the wall, four phrases flicker, drawn from your <b>Echo Fragments</b>
<em>"I am whole. I am me."</em>
<em>"It can't lie, but it will echo the truth until you forget what you asked."</em>
<em>"Don't follow your voice. It's never yours for long."</em>
<em>"He said the spiral keeps it asleep."</em>
The shadow tilts its head.
> "Only one of those is yours. Say it."
[[Say: "I am whole. I am me."|echoFail]]
[[Say: "It can't lie..."|echoFail]]
[[Say: "Don't follow your voice..."|echoPass]]
[[Say: "The spiral keeps it asleep."|echoFail]]<</if>>The mimic smiles. Not your brother's smile - something else beneath it.
It begins to blur. Stutter. Then collapse into itself like smoke.
The chamber lights flicker - once, twice - then the spiral on the floor glows a soft blue.
A narrow panel in the far wall <b>hisses open</b> revealing a staircase leading down into cold, clean dark.
You were right.
[[Descend deeper|tearReveal]]The mimic opens its mouth. Your voice comes out - layered with your brother's, and something else deeper still.
> "Wrong voice. Wrong you."
The spiral glows red.
The lights strobe. The chamber begins to echo with <b>every phrase you've ever spoken in this place</b> - layered, reversed, overlapping.
You clutch your ears.
When the lights stabilize, the mimic is gone. But the panel stays shut.
[[Return to the bulkhead|echoBulkhead]]The last descent feels wrong.
The air thickens. The walls sweat. Echoes that don't belong to you flicker past your ears - laughter, whispers, sobbing.
But beneath it all, a sound that <em>is</em> real.
Breathing.
You step into a collapsed utility chamber, long-forgotten and dimly lit by a single failing emergency lamp.
In the far corner, half-buried under dust and a torn blanket, someone stirs.
You freeze.
<span style="color:tomato">Stranger: ...Took you long enough.</span>
He mutters.
Your brother.
His voice is cracked. His body frail. But it's him. Really him.
He sits up slowly, shielding his eyes from your lamp.
@@.bro;Joey: Didn't think anyone would find me. Not really.@@
You kneel beside him. He winces as you check the crude bandage around his leg.
@@.bro;Joey: Didn't think anyone <em>should</em>. Thought if I just stayed quiet enough, maybe Echo would forget me.@@
He looks up. His eyes are red, but steady.
@@.bro;Joey: But I guess you didn't.@@
[[Help him to his feet|helpBrotherUp]]
[[Ask him what happened|askBrother]]
[[Stay silent and sit beside him a while|sitWithBrother]]No words. Just silence.
You sit beside him in the dark, the old tunnel breathing around you like a sleeping beast.
He leans his shoulder into yours, barely.
@@.bro;Joey: You always were the quiet one.@@
He says softly.
@@.bro;Joey: I missed that.@@
After a long moment, he shifts and tries to stand.
@@.bro;Joey: Let's go.@@
[[Help him up|helpBrotherUp]]@@.bro;Joey: I followed the voices too deep.@@
He says quietly.
@@.bro;Joey: They wanted me to *remember* things that didn't happen. Echo makes you rewrite yourself.@@
He touches his temple.
@@.bro;Joey: Somewhere in here... there's still a part of me that belongs to it. But I fought. Long enough.@@
@@.bro;Joey: Long enough for you to get here.@@
[[Help him up|helpBrotherUp]]You offer your hand.
He hesitates only a moment, then grips it - firm, like he used to.
You pull him up. He stumbles, leans into you, and doesn't let go.
@@.bro;Joey: Still got that stubborn streak, huh?@@
He mutters, smiling faintly.
@@.you;$player.name: Let's go home...@@
[[Leave the tunnels|brotherEscape]]You guide him through the winding dark, step by step, back the way you came.
Through the spiral chamber. Past the mimicry. Past the fragments of voices that once haunted you both.
You don't look back.
As you surface, the first breath of night air cuts through you like truth. Cold. Honest. Real.
He squints into the moonlight.
@@.bro;Joey: Still broken out here?@@
You nod.
@@.bro;Joey: Good.@@
He groans.
@@.bro;Joey: Means I didn't miss the ending.@@
The two of you walk on.
Together.
[[Return home|mainHouse]]
\<<silent>>
<<finishQuest "tear">>
<<set $brotherRel to 6>><<run $residents.pushUnique("Joey")>>
<</silent>>You've collected $echoFragAmount out of 5 fragments.
<<nobr>>
<<for _key range $echoFragments>>
@@.em;<<= _key>>@@<br><br>
<</for>><</nobr>><<link "Close journal">><<run Dialog.close()>><</link>>badge> "Echo isn't a place.
> It's what happens when you go too deep.
> When your voice starts answering back."
<<link "Pocket it">><<run Dialog.close()>><</link>>
<<link "Discard it">><<set $hasLogbook to false>><<run Dialog.close()>><</link>>1. **Head Slot:**
a. **Radiation-Proof Helmet**
- Materials: Circuit Board (x1), Scrap Metal (x2), Electronics Components (x1)
b. **Muffled Gas Mask**
- Materials: Leather (x2), Rubber Seal (x1), Scrap Metal (x1)
c. **Infrared Goggles**
- Materials: Electronics Components (x2), Circuit Board (x1), Plastic Frame (x1)
d. **Scavenger's Bandana**
- Materials: Leather (x1), Scrap Fabric (x2), Zipper (x1)
e. **Tech Scout Visor**
- Materials: Circuit Board (x2), Electronics Components (x1), Transparent Display (x1)
2. **Center Slot:**
a. **Reinforced Kevlar Vest**
- Materials: Kevlar Fabric (x3), Scrap Metal (x1), Leather (x1)
b. **Nomad Trench Coat**
- Materials: Leather (x2), Scrap Fabric (x3), Zipper (x1)
c. **Bulletproof Plate Carrier**
- Materials: Scrap Metal (x2), Kevlar Fabric (x2), Rivets (x3)
d. **Hazardous Material Suit**
- Materials: Rubberized Fabric (x3), Chemical-Resistant Lining (x2), Duct Tape (x1)
e. **Modular Utility Harness**
- Materials: Leather (x1), Nylon Straps (x2), Buckles (x2)
3. **Foot Slot:**
a. **Steel-Toed Combat Boots**
- Materials: Scrap Metal (x2), Leather (x2), Sole Inserts (x1)
b. **High-Top Sneaker Mods**
- Materials: Scrap Fabric (x2), Rubber Soles (x2), Duct Tape (x1)
c. **Tactical Sandals**
- Materials: Nylon Straps (x2), Sole Inserts (x1), Scrap Fabric (x1)
d. **Insulated Snow Boots**
- Materials: Insulation Foam (x2), Leather (x2), Scrap Fabric (x1)
e. **Rugged Hiking Shoes**
- Materials: Leather (x2), Nylon Straps (x1), Rivets (x2)
4. **Primary Weapon Slot:**
a. **Plasma Caster**
- Materials: Circuit Board (x2), Plasma Cells (x3), Aluminum Barrel (x1)
b. **Railgun Rifle**
- Materials: Electronics Components (x3), Magnetized Barrel (x1), Power Cell (x2)
c. **Serrated Energy Blade**
- Materials: Scrap Metal (x2), Energy Core (x1), Circuit Board (x1)
d. **Acidic Dart Launcher**
- Materials: Chemical Reservoir (x2), Scrap Metal (x1), Darts (x3)
e. **EMP Grenade Launcher**
- Materials: Electronics Components (x2), Scrap Metal (x1), EMP Canister (x1)
5. **Secondary Weapon Slot:**
a. **Silenced Pistol**
- Materials: Scrap Metal (x1), Electronics Components (x1), Rubber Grip (x1)
b. **Compact Flamethrower**
- Materials: Fuel Canister (x2), Ignition System (x1), Scrap Metal (x1)
c. **Cryo Dart Gun**
- Materials: Cryo Canister (x2), Scrap Metal (x1), Darts (x3)
d. **Sonic Disruptor**
- Materials: Sonic Resonator (x1), Electronics Components (x2), Scrap Metal (x1)
e. **Smoke Grenade Emitter**
- Materials: Smoke Canister (x2), Electronics Components (x1), Scrap Metal (x1)
6. **Equipment Slot:**
a. **Portable Generator**
- Materials: Electronics Components (x3), Power Cell (x2), Metal Casing (x1)
b. **Grapple Hook Launcher**
- Materials: Scrap Metal (x2), Steel Cable (x3), Electronic Winch (x1)
c. **Med-Bot Nanodrones**
- Materials: Circuit Board (x2), Medical Nanobots (x3), Power Cell (x1)
d. **Stealth Cloak Device**
- Materials: Optical Camo Fibers (x2), Electronics Components (x2), Power Cell (x1)
e. **Survivalist's Backpack**
- Materials: Leather (x3), Nylon Straps (x2), Zippers (x2)This is your equipment. Here you can equip items you've found along your way, that you haven't had the chance to stash yet.
Use this while scavenging or exploring.
<<do>>
<b>Currently equipped:</b>
<<if $equipped.head eq "Empty">><<= setup.gear[$equipped.head].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.head].name>></span><</if>>
<<if $equipped.center eq "Empty">><<= setup.gear[$equipped.center].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.center].name>></span><</if>>
<<if $equipped.foot eq "Empty">><<= setup.gear[$equipped.foot].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.foot].name>></span><</if>>
<span style="color:lightyellow">Radiation Protection: @@.pos;{{$rad}}@@</span>
<b>Weaponry:</b>
<<if $equipped.primary eq "Empty">><<= setup.gear[$equipped.primary].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.primary].name>></span><</if>>
<<if $equipped.secondary eq "Empty">><<= setup.gear[$equipped.secondary].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.secondary].name>></span><</if>>
<<if $equipped.equipment eq "Empty">><<= setup.gear[$equipped.equipment].name>><<else>><span style="color:lightyellow"><<= setup.gear[$equipped.equipment].name>></span><</if>>
<span style="color:lightyellow">Damage: @@.pos;{{$dmgMin}} - {{$dmgMax}}@@</span>
<b>Items in your satchel</b>
Headgear: <span style="color:lightyellow">
\<<for _item range $inventory.head>>
\<<set _replaceHead to $equipped.head>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.head = _item>>
/*<<set $inventory.head.deleteAll(_item)>>*/
<<set $inventory.head.pushUnique(_replaceHead)>>
<<if $inventory.head.includes("Empty")>>
<<run $inventory.head.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.head.last() !== _item>> | <</if>>
\<</for>></span>
Centerpiece: <span style="color:lightyellow">
\<<for _item range $inventory.center>>
\<<set _replaceCenter to $equipped.center>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.center = _item>>
/* <<set $inventory.center.deleteAll(_item)>>*/
<<set $inventory.center.pushUnique(_replaceCenter)>>
<<if $inventory.center.includes("Empty")>>
<<run $inventory.center.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.center.last() !== _item>> | <</if>>
\<</for>></span>
Footwear: <span style="color:lightyellow">
\<<for _item range $inventory.foot>>
\<<set _replaceFoot to $equipped.foot>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.foot = _item>>
/*<<set $inventory.foot.deleteAll(_item)>>*/
<<set $inventory.foot.pushUnique(_replaceFoot)>>
<<if $inventory.foot.includes("Empty")>>
<<run $inventory.foot.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.foot.last() !== _item>> | <</if>>
\<</for>></span>
Primary: <span style="color:lightyellow">
\<<for _item range $inventory.primary>>
\<<set _replacePrim to $equipped.primary>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.primary = _item>>
/* <<set $inventory.primary.deleteAll(_item)>>*/
<<set $inventory.primary.pushUnique(_replacePrim)>>
<<if $inventory.primary.includes("Empty")>>
<<run $inventory.primary.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.primary.last() !== _item>> | <</if>>
\<</for>></span>
Secondary: <span style="color:lightyellow">
\<<for _item range $inventory.secondary>>
\<<set _replaceSecon to $equipped.secondary>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.secondary = _item>>
/*<<set $inventory.secondary.deleteAll(_item)>>*/
<<set $inventory.secondary.pushUnique(_replaceSecon)>>
<<if $inventory.secondary.includes("Empty")>>
<<run $inventory.secondary.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.secondary.last() !== _item>> | <</if>>
\<</for>></span>
Equipment: <span style="color:lightyellow">
\<<for _item range $inventory.equipment>>
\<<set _replaceEquip to $equipped.equipment>>
\<<capture _item>>
\<span @title="setup.gear[_item].desc"><<link setup.gear[_item].name>>
<<set $equipped.equipment = _item>>
/* <<set $inventory.equipment.deleteAll(_item)>>*/
<<set $inventory.equipment.pushUnique(_replaceEquip)>>
<<if $inventory.equipment.includes("Empty")>>
<<run $inventory.equipment.deleteAll("Empty")>><</if>>
<<redo>><<radCalc>>
<</link>></span>
\<</capture>>
\<<if $inventory.equipment.last() !== _item>> | <</if>>
\<</for>></span>
<</do>>
<<if $languageBook is true>><<link "Language">><<run Dialog.setup('Language Guide', 'language');
Dialog.wiki('<<include "languageGuide">>').open()>>
<</link>><br><</if>>
<<link "Satchel">><<run Dialog.setup('Satchel', 'satchel');
Dialog.wiki('<<include "Satchel">>').open()>>
<</link>>
<<link "W-NAV">><<run Dialog.setup('W-NAV', 'wnav'); Dialog.wiki('<<include "W-NAV">>').open()>><</link>>
<<link "Exit">><<run Dialog.close()>><</link>>!!!Quest Items
<<if visited("sketchCompare") gte 1>><<link "Review the map">><<run Dialog.setup('MAP', 'map');
Dialog.wiki('<<include "mapReview">>').open()>>
<</link>><<else>>???<</if>>
<<if $hasLogbook is true>>You've got a fragment piece of a <<link "logbook">><<run Dialog.setup('Di y', 'logbook');
Dialog.wiki('<<include "tearLogbook">>').open()>>
<</link>>.<<else>>???<</if>>
<<if $hasBadge is true>>You've got a <<link "Level 3 Access card">><<run Dialog.setup('', 'badge');
Dialog.wiki('<<include "tearBadge">>').open()>>
<</link>>.<<else>>???<</if>>
<<if $velkaToy is true>>You've found Woody, Velka's toy.<<else>>???<</if>>
<<link "Satchel">><<run Dialog.setup('Satchel', 'satchel');
Dialog.wiki('<<include "Satchel">>').open()>>
<</link>>
<<link "Exit">><<run Dialog.close()>><</link>>EQUIPABLES
<<set $primaryArms = ["Empty", "AR-15", "AK-47", "AK-5D", "FN SCAR"]>>
<<set $secondaryArms = ["Empty", "combat knife", "Beretta M9", "Glock 19"]>>
<<set $equipment1 = ["Empty", "medkit"]>>
<<set $equipment2 = ["Empty", "bandages"]>>
<<set $headGear = ["Empty", "gas mask", "night vision", "sunglasses"]>>
<<set $centerPiece = ["Empty", "kevlar vest", "ceramic vest", "bomb vest"]>>
<<set $footWear = ["Empty", "combat boots"]>>
WEAPONS
<<set $primaryArms to []>>
<<set $secondaryArms to []>>
<<set $equipment1 to []>>
<<set $equipment2 to []>>
GEAR
<<set $headGear to []>>
<<set $centerPiece to []>>
<<set $footWear to []>>
Inventory
<<set $inventory to []>>
$inventory = {
head: ["Empty", "gas mask", "night vision", "sunglasses"],
center: ["Empty", "kevlar vest", "ceramic vest", "bomb vest"],
foot: ["Empty", "combat boots"],
primary: ["Empty", "AR-15", "AK-47", "AK-5D", "FN SCAR"],
secondary: ["Empty", "combat knife", "Beretta M9", "Glock 19"],
equipment: ["Empty", "medkit", "bandages"]
}>>
<<link "Pick it up">><<set $inventory.head.push("test")>><</link>>
Head:<<for _item range $inventory.head>><<capture _item>>
<<link _item>>
<<set $equipped.head = _item>>
<<updatebar>><</link>><</capture>><</for>>
Offering: 3x Leather
You give: 2x Scrap Metal
<<if $inventory.scrap_metal gte 2>><<link "Accept deal">><<setLeather +3>><<setScrap -2>><</link>><<else>><b>You're missing: <<print 2 - $inventory.scrap_metal>>x Scrap Metal</b><</if>>
Offering: 2x Scrap Metal
You give: 1x Water Bottle
<<if $inventory.water_bottle gte 1>><<link "Accept deal">><<setScrap +2>><<setWater -1>><</link>><<else>><b>You're missing: <<print 1 - $inventory.water_bottle>>x Water Bottle</b><</if>>
Offering: 4x Scrap Metal
You give: 2x Electronics Components
<<if $inventory.scrap_metal gte 3>><<link "Accept deal">><<setCircuit +5>><<setScrap -3>><</link>><<else>><b>You're missing: <<print 3 - $inventory.scrap_metal>>x Scrap Metal</b><</if>>
Offering: 1x Water Bottle
You give: 2x Leather
<<if $inventory.scrap_metal gte 3>><<link "Accept deal">><<setCircuit +5>><<setScrap -3>><</link>><<else>><b>You're missing: <<print 3 - $inventory.scrap_metal>>x Scrap Metal</b><</if>>
Offering: 5x Circuit Board
You give: 3x Scrap Metal
<<if $inventory.scrap_metal gte 3>><<link "Accept deal">><<setCircuit +5>><<setScrap -3>><</link>><<else>><b>You're missing: <<print 3 - $inventory.scrap_metal>>x Scrap Metal</b><</if>>
LOCATIONS REFILL AT NIGHT<<do>><center><b>Resources:</b></center>
<b>Scrap metal: </b>$inventory.scrap_metal <<if $inventory.scrap_metal gte 1>><<link "Throw">><<set $inventory.scrap_metal -= 1>><<redo>><</link>><</if>>
<b>Electronics Components: </b>$inventory.electronics_components <<if $inventory.electronics_components gte 1>><<link "Throw">><<set $inventory.electronics_components -= 1>><<redo>><</link>><</if>>
<b>Circuit Board: </b>$inventory.circuit_board <<if $inventory.circuit_board gte 1>><<link "Throw">><<set $inventory.circuit_board -= 1>><<redo>><</link>><</if>>
<b>Leather: </b>$inventory.leather <<if $inventory.leather gte 1>><<link "Throw">><<set $inventory.leather -= 1>><<redo>><</link>><</if>>
<b>Canned food: </b>$inventory.canned_food <<if $inventory.canned_food gte 1>><<link "Throw">><<set $inventory.canned_food -= 1>><<redo>><</link>><</if>>
<b>Water bottle: </b>$inventory.water_bottle <<if $inventory.water_bottle gte 1>><<link "Throw">><<set $inventory.water_bottle -= 1>><<redo>><</link>><</if>>
<b>Adhesive: </b>$inventory.adhesive <<if $inventory.adhesive gte 1>><<link "Throw">><<set $inventory.adhesive -= 1>><<redo>><</link>><</if>>
<b>Pipes: </b>$inventory.pipes <<if $inventory.pipes gte 1>><<link "Throw">><<set $inventory.pipes -= 1>><<redo>><</link>><</if>>
<b>Wood: </b>$inventory.wood <<if $inventory.wood gte 1>><<link "Throw">><<set $inventory.wood -= 1>><<redo>><</link>><</if>>
<b>Gunpowder: </b>$inventory.gunpowder <<if $inventory.gunpowder gte 1>><<link "Throw">><<set $inventory.gunpowder -= 1>><<redo>><</link>><</if>>
<center><b>Equipment:</b></center>
<b>Bandages: </b>$inventory.bandages <<if $inventory.bandages gte 1>><<link "Throw">><<set $inventory.bandages -= 1>><<redo>><</link>><</if>>
<b>Medkit: </b>$inventory.medkit <<if $inventory.medkit gte 1>><<link "Throw">><<set $inventory.medkit -= 1>><<redo>><</link>><</if>>
<b>Grenade: </b>$inventory.grenade <<if $inventory.grenade gte 1>><<link "Throw">><<set $inventory.grenade -= 1>><<redo>><</link>><</if>>
<center><b>Ammunition:</b></center>
<b>9mm: </b>$inventory.mm9x18 <<if $inventory.mm9x18 gte 1>><<link "Throw">><<set $inventory.mm9x18 -= 1>><<redo>><</link>><</if>>
<b>7.62mm: </b>$inventory.mm762 <<if $inventory.mm762 gte 1>><<link "Throw">><<set $inventory.mm762 -= 1>><<redo>><</link>><</if>>
<b>Total: </b><<= $inventory.mm9x18 + $inventory.mm762>>
You can carry a total of $maxAmount items in your satchel.
You are currently carrying $satchelAmount<</do>>/$maxAmount items.
<<link "Items">><<run Dialog.setup('Items', 'items');
Dialog.wiki('<<include "Items">>').open()>>
<</link>>
<<link "Equipment">><<run Dialog.setup('Equipment', 'equip');
Dialog.wiki('<<include "Equipment">>').open()>>
<</link>>
<<link "W-NAV">><<run Dialog.setup('W-NAV', 'wnav'); Dialog.wiki('<<include "W-NAV">>').open()>><</link>>
<<link "Exit">><<run Dialog.close()>><</link>><img src="img/player/headshot.jpg" width="200" height="256">
<b>$player.name</b>
@@#datetime;<<datetime>>@@
Day: $day
<br><<nobr>><span id="meters">Health Points</span>
<<showmeter 'hp' `$player.hp / $player.hpMax`>>
<span id="meters">Action Points</span>
<<showmeter 'ap' `$player.ap / $player.apMax`>>
<span id="meters">Fatigue</span>
<<showmeter 'fatigue' `$player.fatigue / $player.fatigueMax`>><</nobr>>
-----
<div class="stats"><span style="color:pink">Arousal: $player.arousal</span>
<span style="color:crimson">Lust: $player.lust</span>
<span style="color:red">Corruption: $player.corruption</span>
@@.inhibition;Inhibition: $player.inhibition@@
<span style="color:lightblue">Intelligence: $player.intelligence</span>
<span style="color:yellow">Radiation Protection: $rad</span>
<span style="color:white"><<if $companion.name is "">>Companion: <span style="color:crimson">None</span><<else>>Companion: <span style="color:yellow">$companion.name<<if $companion.isAssigned>> (Assigned)<</if>></span><</if>></span></div>
-----
<div class="links"><<if $satchelAmount gt $maxAmount>><span style="color:red">You are Overencumbered.<br></span><</if>><<link "Equipment">><<run Dialog.setup('Equipment', 'equip');
Dialog.wiki('<<include "Equipment">>').open()>>
<</link>>
<<link "Satchel">><<run Dialog.setup('Satchel', 'satchel');
Dialog.wiki('<<include "Satchel">>').open()>>
<</link>><<if $storyline.tear.isStarted || $storyline.tear.isComplete>><br><<link "Journal">><<run Dialog.setup('Journal', 'journal');
Dialog.wiki('<<include "journal">>').open()>>
<</link>><</if>>
<<link "Achievements">><<goto "checkAchievements">><<run Dialog.close()>><</link>>
<<link "Skills">><<goto "skillTree">><<run Dialog.close()>><</link>> <<if $caps gt 0>>| <span style="color:yellow">$caps</span><</if>>
<<link "Quests">><<run Dialog.setup('Quests', 'quests');
Dialog.wiki('<<include "quests">>').open()>>
<</link>>
<<link "Saves">><<run UI.saves()>><</link>>
<<link "Help">><<goto "help">><<run Dialog.close()>><</link>>
<<link "Debugger">><<goto "debugg">><<run Dialog.close()>><</link>></div><<textbox "_bug" "Input">>
<<linkreplace "Apply">><<= _bug>><<updatebar>>Applied! [[Refresh|debugg]]<</linkreplace>>
!!Difficulty
<<link "Set Difficulty to Easy">><<set $difficulty to 50>><</link>>
<<link "Set Difficulty to Medium">><<set $difficulty to 25>><</link>>
<<link "Set Difficulty to Max">><<set $difficulty to 15>><</link>>
!!Items & Stats
<<link "Fill my satchel">><<set $inventory.scrap_metal += 100>>
<<set $inventory.electronics_components += 100>>
<<set $inventory.circuit_board += 100>>
<<set $inventory.leather += 100>>
<<set $inventory.adhesive += 100>>
<<set $inventory.pipes += 100>>
<<set $inventory.wood += 100>>
<<set $inventory.gunpowder += 100>>
<<set $inventory.canned_food += 100>>
<<set $inventory.water_bottle += 100>><</link>>
<<link "Increase Arousal">><<setArousal 100>><<updatebar>>
<</link>>
<<link "Increase Lust">><<setLust 10>><<updatebar>>
<</link>>
<<link "Increase Corruption">><<setCorrupt 10>><<updatebar>>
<</link>>
<<link "Decrease Inhibition">><<setInhib -10>><<updatebar>>
<</link>>
<<link "Max Karma">><<set $player.karma to 100>><<updatebar>>
<</link>>
!!Relationships
<<link "Revive and rescue Carl">>
<<set $carl.isDead to false, $carl.isRes to true>><<run $residents.pushUnique("Carl")>>
<</link>>
<<link "Max Carl">>
<<set $carl.rp to 100>>
<</link>>
<<link "Revive and rescue Anna">>
<<set $anna.isDead to false, $anna.isRes to true>><<run $residents.pushUnique("Anna")>>
<</link>>
<<link "Max Anna">>
<<set $anna.rp to 100>>
<</link>>
<<link "Revive and rescue Joey (WIP)">>
<<set $joey.isDead to false, $joey.isRes to true>><<run $residents.pushUnique("Joey")>>
<</link>>
<<link "Max Joey (WIP)">>
<<set $joey.rp to 100>>
<</link>>
<<link "Revive and rescue Matthew">>
<<set $matthew.isDead to false, $matthew.isRes to true>><<run $residents.pushUnique("Matthew")>>
<</link>>
<<link "Max Matthew">>
<<set $matthew.rp to 100>>
<</link>>
<<link "Revive and rescue Jeniffer (WIP)">>
<<set $jeniffer.isDead to false, $jeniffer.isRes to true>><<run $residents.pushUnique("Jeniffer")>>
<</link>>
<<link "Max Jeniffer (WIP)">>
<<set $jeniffer.rp to 100>>
<</link>>
<<link "Revive and Rescue Everyone">>
<<set $jeniffer.isDead to false, $jeniffer.isRes to true>><<run $residents.pushUnique("Jeniffer")>>
<<set $matthew.isDead to false, $matthew.isRes to true>><<run $residents.pushUnique("Matthew")>>
<<set $joey.isDead to false, $joey.isRes to true>><<run $residents.pushUnique("Joey")>>
<<set $anna.isDead to false, $anna.isRes to true>><<run $residents.pushUnique("Anna")>>
<<set $carl.isDead to false, $carl.isRes to true>><<run $residents.pushUnique("Carl")>>
<</link>>
!!Storyline
<<if $storyline.tear.isComplete is false && $storyline.tear.isStarted is true>>The Tear is already in motion.<<elseif $storyline.tear.isComplete is true>>You've already completed The Tear.<<else>><<linkreplace "Start The Tear storyline">><<set $storyline.tear.isStarted to true, $questDays to 5, $tearInitial to true>><<set $ongoingQuests.pushUnique("tear")>>You've started The Tear storyline.<</linkreplace>><</if>>
!!Sidequests
<<if $quest.solar.isComplete is false && $quest.solar.isStarted is true>>The solar quest is already in motion.<<elseif $quest.solar.isComplete is true>>You've already completed the solar quest.<<else>><<linkreplace "Start Solar quest">><<set $quest.solar.isStarted to true, $questDays to 3>><<set $ongoingQuests.pushUnique("solar")>>You've started the solar quest.<</linkreplace>><</if>>
<<if $quest.safezones.isComplete is false && $quest.safezones.isStarted is true>>The safezones quest is already in motion.<<elseif $quest.safezones.isComplete is true>>You've already completed the safezones quest.<<else>><<linkreplace "Start Safezones quest">><<set $quest.safezones.isStarted to true>><<set $ongoingQuests.pushUnique("safezones")>>You've started the safezones quest.<</linkreplace>><</if>>
<<if $quest.velka.isComplete is false && $quest.velka.isStarted is true>>The Velka quest is already in motion.<<elseif $quest.velka.isComplete is true>>You've already completed the velka quest.<<else>><<linkreplace "Start Velka quest">><<set $quest.velka.isStarted to true>><<set $landItems.velkaToy = { name: "Velka's Toy", description: "A small stuffed animal, singed around the edges. It smells faintly of incense and soot.", isFound: false }>><<set $ongoingQuests.pushUnique("velka")>>You've started the velka quest.<</linkreplace>><</if>>
<<if $quest.toska.isComplete is false && $quest.toska.isStarted is true>>Echoes in the Dark is already in motion.<<elseif $quest.toska.isComplete is true>>You've already completed Echoes in the Dark.<<else>><<linkreplace "Start Echoes in the Dark">><<set $quest.toska.isStarted to true>><<set $toskaRP to 40>><<set $ongoingQuests.pushUnique("toska")>>You've started Echoes in the Dark.<</linkreplace>><</if>>
!!Time Wizard
<<link "Add one hour">><<addmins 60>><</link>>
<<link "Add four hours">><<addmins 240>><</link>>
<<link "Add eight hours">><<addmins 480>><</link>>
<<link "Set time to night">><<settime 0 23 0>><</link>>
<<link [[Skip day|debugg]]>><<settime 30 7 1>><</link>>
!!Transporter
<<link "Unstuck">><<goto "mainHouse">><</link>>
## WARNING ##
<<link "Restart">><<run Engine.restart()>><</link>>
<<link "Return" $return>><</link>><b>What are action points?</b>
Action points dictate how long you can fare outside in the toxic air. You can increase your action points by equipping gear with action point stats. This gear is typically gas masks or hazmat suits. Gear that would generally protect against toxins.
<b>What is the point of storing my gear?</b>
None. It is simply an effect of cosmetics. Although, it would make it faster equipping new gear in the morning.
<b>Why would I only take one unit of resources instead of all of them?</b>
Your satchel has limited space! If you fill it up with scrap metal, you won't be able to pick up any other resources during the current run.
<b>Where do I see how much food I have?</b>
Your food is stored as "Canned food" in either your resources cabinet at home or in your satchel. Here, you can see exactly how much food you have. You need to have food in your satchel to eat it. You can't magically make it spawn from the resources cabinet and into the kitchen.
<b>How does the hacking minigame work?</b>
All the ciphers change and shift constantly, except the password. Find the combination of ciphers that doesn't shift constantly. The password changes location every 10 seconds, and is the only string of ciphers that behave this way. You have unlimited time to find the password.
<b>When does stuff respawn?</b>
Resources and material respawns at their locations during sleep, and will have a set chance of either 0-3, 0-5 or 0-10 of appearing. There is always a chance of it not appearing at all. I need to keep you all fed, don't I?
<b>Why can I only move back one point in story?</b>
hardcore henry, motherfucker
## WARNING ##
<<link "Restart">><<run Engine.restart()>><</link>>
<<link "Return" $return>><</link>>!!Thargitsŭ Language Guide
<b>Welcome to the Thargitsŭ Language Guide.</b>
This guide contains a collection of important warnings, commands, and phrases that you may encounter. Use this reference to understand cryptic signs and texts in Thargitsŭ, the harsh and authoritative language spoken in the post-apocalyptic world.
.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~.._-/(~
<b>Thargitsŭ:</b> Ѹ҆казъ: Зона караѳинъ
<b>English:</b> Quarantined Area
<b>Thargitsŭ:</b> Входъ гражданамъ заприщѣнъ
<b>English:</b> No Civilian Entry
<b>Thargitsŭ:</b> Дверь заѧмкни, смердь вѫтрь
<b>English:</b> Keep Door Closed, Death Inside
<b>Thargitsŭ:</b> ОблѢсть заперта
<b>English:</b> Restricted Zone
<b>Thargitsŭ:</b> О́пастъ: не иди далѧше
<b>English:</b> Danger: Do Not Proceed
<b>Thargitsŭ:</b> Ѡднѫй лишь для д҄опущѥныхъ
<b>English:</b> Authorized Personnel Only
<b>Thargitsŭ:</b> Кравтсъ: Радіаціѩ велика
<b>English:</b> Warning: High Radiation
<b>Thargitsŭ:</b> Опастѧ вѣщь: не трожь
<b>English:</b> Hazardous Materials: Do Not Touch
<b>Thargitsŭ:</b> Воздьхъ ѫмьрьзанъ: маскы рѣчьны
<b>English:</b> Contaminated Air: Masks Required
<b>Thargitsŭ:</b> Пунктъ стражѥ: не иди безъ допуще́нѩ
<b>English:</b> Security Checkpoint: Do Not Proceed Without Clearance
<<link "Close book">><<run Dialog.close()>><</link>><center><b>Quests:</b></center><b>Storyline:</b>
<<nobr>>
<<if $ongoingQuests.length > 0>>
<<for _questId range $ongoingQuests>>
<<if $storyline[_questId]>>
@@.em;<<= $storyline[_questId].name>>@@<br>
@@.questOngoing;[Ongoing]@@<br><br>
<</if>>
<</for>>
<</if>><</nobr>>
\
\<b>Sidequests:</b>
<<nobr>>
<<if $ongoingQuests.length > 0>>
<<for _questId range $ongoingQuests>>
<<if $quest[_questId]>>
@@.em;<<= $quest[_questId].name>>@@<br>
@@.questOngoing;[Ongoing]@@<br><br>
<</if>>
<</for>>
<</if>><</nobr>>
\
\<b>Completed Quests:</b>
<<nobr>>
<<if $questmap.length > 0>>
<<for _questId range $questmap>>
<<if $quest[_questId]>>
@@.em;<<= $quest[_questId].name>>@@<br>
<span style="color:green">[Completed]</span><br><br>
<<elseif $storyline[_questId]>>
@@.em;<<= $storyline[_questId].name>>@@<br>
<span style="color:green">[Completed]</span><br><br>
<</if>>
<</for>>
<</if>><</nobr>>
\<<link "W-NAV">><<run Dialog.setup('W-NAV', 'wnav'); Dialog.wiki('<<include "W-NAV">>').open()>><</link>>
<<link "Exit">><<run Dialog.close()>><</link>>!!!Skill Tree
You've aqcuired {{$caps}} cap(s), and can spend those on skills below.
You've spent {{$capsUsed}} so far.
<b>Stats</b><<nobr>><br>
<<do>>
<span class="skill-block">
<span class="skill-name"><span class="skill-notice">$corruptSkill | </span> <span style="color:red">Corruption:</span></span> <span class="skill-content"><<if $caps gte 1>><<link "Increase">><<setCorrupt 1>><<set $caps -= 1>><<set $capsUsed += 1>><<set $corruptSkill += 1>><<updatebar>><<redo>><</link>><<else>>Increase<</if>> | <<if $capsUsed gte 1 && $corruptSkill gte 1>><<link "Decrease">><<setCorrupt -1>><<set $caps += 1>><<set $capsUsed -= 1>><<set $corruptSkill -= 1>><<updatebar>><<redo>><</link>><<else>>Decrease<</if>></span>
</span>
<span class="skill-block">
<span class="skill-name"><span class="skill-notice">$lustSkill | </span> <span style="color:crimson">Lust:</span></span> <span class="skill-content"><<if $caps gte 1>><<link "Increase">><<setLust 1>><<set $caps -= 1>><<set $capsUsed += 1>><<set $lustSkill += 1>><<updatebar>><<redo>><</link>><<else>>Increase<</if>> | <<if $capsUsed gte 1 && $lustSkill gte 1>><<link "Decrease">><<setLust -1>><<set $caps += 1>><<set $capsUsed -= 1>><<set $lustSkill -= 1>><<updatebar>><<redo>><</link>><<else>>Decrease<</if>></span>
</span>
<span class="skill-block">
<span class="skill-name"><span class="skill-notice">$inhibSkill | </span> @@.inhibition;Inibition:@@</span> <span class="skill-content"><<if $caps gte 1>><<link "Increase">><<setInhib -1>><<set $caps -= 1>><<set $capsUsed += 1>><<set $inhibSkill += 1>><<updatebar>><<redo>><</link>><<else>>Increase<</if>> | <<if $capsUsed gte 1 && $inhibSkill gte 1>><<link "Decrease">><<setInhib 1>><<set $caps += 1>><<set $capsUsed -= 1>><<set $inhibSkill -= 1>><<updatebar>><<redo>><</link>><<else>>Decrease<</if>></span>
</span>
<span class="skill-block">
<span class="skill-name"><span class="skill-notice">$karmaSkill | </span> <span style="color:yellow">Karma:</span></span> <span class="skill-content"> <<if $caps gte 1>><<link "Increase">><<setKarma 1>><<set $caps -= 1>><<set $capsUsed += 1>><<set $karmaSkill += 1>><<updatebar>><<redo>><</link>><<else>>Increase<</if>> | <<if $capsUsed gte 1 && $karmaSkill gte 1>><<link "Decrease">><<setKarma -1>><<set $caps += 1>><<set $capsUsed -= 1>><<set $karmaSkill -= 1>><<updatebar>><<redo>><</link>><<else>>Decrease<</if>></span>
</span>
<</do>><</nobr>>
<b>Utility</b><<nobr>><br>
<<do>>
<span class="skill-block"><span class="skill-name">
<span class="skill-notice">$scavMult | </span> <span style="color:red">Scavenge chance:</span> </span><span class="skill-change"><<if $caps gte 1>><<link "Increase">><<set $scavMult += 0.1>><<set $caps -= 1>><<set $capsUsed += 1>><<updatebar>><<redo>><</link>><<else>>Increase<</if>> | <<if $capsUsed gte 1 && $scavMult gt 1>><<link "Decrease">><<set $scavMult -= 0.1>><<set $caps += 1>><<set $capsUsed -= 1>><<updatebar>><<redo>><</link>><<else>>Decrease<</if>>
</span></span>
<</do>><</nobr>>
<<link "Return" $return>><</link>><<resetEnemy>>
<<set $combatRun to false>>
<<set $combatLog to []>>
<<goto $combatReturn>><div class="icon-enemyChatter"> Enemy chatter</div>
<div class="aicon-scavengerClass">Enemy faction </div>
<div class="icon-enemyHit"> Damage to enemy</div>
<div class="icon-playerHit"> Damage to player</div><<nobr>><div class="parent">
<div class="div1"><<enemies>>You encounter a <span class="aicon-scavengerClass"><b>$currEnemies.name</b> </span>.<br><i>$currEnemies.desc</i>
<br>
<br>They have <b>{{$currEnemies.hp}}</b> health! | You have <span style="color:green">{{$player.hp}}</span> health!</div>
<div class="div2"><<do tag "combat">><<doubleKill>><<if $combatRun is true>>You turn around and run. @@.pos;It's quite effective!@@ You can hear the bullets whirl past your ears. You're safe now, though.
<br><br>
[[Escape|combatBuffer]]<<else>><<if $player.hp lte 0>>You've been slain! You're barely breathing, lying on the cold ground. You can hear the $currEnemies.name approach you slowly.<br>
[[Close your eyes|combatLose]]<<else>><<if $currEnemies.hp lte 0>>You've killed them!<br>
<<linkreplace "Search their bodies">>You search their bodies. They have a few different items.
<br><br>
<<combatScavenge>>
[[Leave|combatBuffer]]<</linkreplace>><<else>><<primary>><br>
<<secondary>><br>
<<equipment>><br>
<<escape>><br>
<<surrender>>
<</if>><</if>><</if>><</do>></div>
<div class="div3"><span id="combatActions"></span><span id="enemyChatter"></span><hr>
<div id="combatLogBox"></div></div>
</div><</nobr>>[img[img/combat/combat.webp]]
You close your eyes. A tear drops down your cheek. You can feel the vibration of the $currEnemies.name coming closer. Your body stiffens up, then relaxes. What is going to happen to you?
$currEnemies.name: Look what we have here! You've caused us a lot of trouble, bitch. Now we're going to cause you some trouble! Then we'll leave you alone. You have no use to us anyway aside from a little... release.
You can't answer. You don't want to answer them. You're mostly filled with hatred, but your body hurts too much.
They move you around and lift you into whatever position they want you in.
Then you're theirs for the time being, until they deem you "finished product."
<<switch random(1,4)>><<case 1>>[img[img/combat/combatLose1.webp]]<<case 2>>[img[img/combat/combatLose2.webp]]<<case 3>>[img[img/combat/combatLose3.webp]]<<case 4>>[img[img/combat/combatLose4.webp]]<</switch>>
[[Escape|combatBuffer]][img[img/combat/combat.webp]]
You holster your weapon and raise your arms above your head.
<span style="color:pink">$player.name: Please! I surrender! Please don't hurt me!</span>
@@.toska;$currEnemies.name: Well, well, well... Now what do we have here? You've hit us pretty badly. We want compensation if you're going to live.@@
<span id="combatSurrender"><<linkreplace "Offer them your body">><<replace "#combatSurrender">>You offer them your body to have their way with it. They look you up and down, then their eyes fill with lust. They're no longer seeing you as an opponent, but an object. A slave to their cocks. A myriad of thoughts fill your mind, but one thing keeps coming up... Please don't let it hurt. And yet, something else is creeping up inside of you. Arousal. You're liking this outcome, are you not? You dirty slut.
They command you to drop your pants and get onto the ground. You do as they say, and as you pull your panties down, a string of pussy nectar is drawn. You're wet.
They approach you.
<<switch random(1,1)>><<case 1>>[img[img/combat/combatSurrender1.webp]]<</switch>>
They take their time with your pussy. Unrelenting, and without pause or breaks. It feels like hours has gone by, yet in reality only a couple of minutes has passed so far. They're quick, but it sure as shit doesn't feel that way. You've cum more times than you can count on one hand.
<<addmins 112>>
They leave without saying goodbye. Assholes.
[[Stand up|combatBuffer]]<</replace>><</linkreplace>>
<<if $inventory.scrap_metal gte 30>><<linkreplace "Offer them 30 scrap metal">><<replace "#combatSurrender">>You offer them 30 scrap metal. They agree, but with hesitation. It seems like loot is more important than victory these days.
<<set $inventory.scrap_metal -= 30>>
They leave without saying goodbye. Assholes.
[[Run away|combatBuffer]]<</replace>><</linkreplace>><<else>>@@.red;Offer them 30 scrap metal@@ - <em>(You do not have enough scrap metal. You need <b><<= 30 - $inventory.scrap_metal>></b>x scrap metal.)</em><</if>></span>You've passed out. You should learn to manage your fatigue levels, because passing out like this is not good. The world is cruel.
[[Wake up|mainHouse]]
<<set $player.fatigue to 0>><<set $caps to 0>>
<<set $capsUsed to 0>>
<<set $lustSkill to 0>>
<<set $corruptSkill to 0>>
<<set $inhibSkill to 0>>
<<set $karmaSkill to 0>>
SCAVENGING
<<new-achievement scavengerI 'Scavenger I'>>
Scavenge once.
<<locked 'Undiscovered'>>
You need to scavenge at least once.
<</new-achievement>>
<<new-achievement scavengerII 'Scavenger II'>>
Scavenge 50 times.
<<locked 'Undiscovered'>>
You need to scavenge at least 50 times.
<</new-achievement>>
<<new-achievement scavengerIII 'Scavenger III'>>
Scavenge 100 times.
<<locked 'Undiscovered'>>
You need to scavenge at least 100 times.
<</new-achievement>>
<<new-achievement seekerI 'Seeker I'>>
Scavenge 200 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement seekerII 'Seeker II'>>
Scavenge 300 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement seekerIII 'Seeker III'>>
Scavenge 500 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
EXPLORING
<<new-achievement explorerI 'Explorer I'>>
Explore once.
<<locked 'Undiscovered'>>
You need to explore at least once.
<</new-achievement>>
<<new-achievement explorerII 'Explorer II'>>
Explore 50 times.
<<locked 'Undiscovered'>>
You need to explore at least 50 times.
<</new-achievement>>
<<new-achievement explorerIII 'Explorer III'>>
Explore 100 times.
<<locked 'Undiscovered'>>
You need to explore at least 100 times.
<</new-achievement>>
<<new-achievement voyagerI 'Voyager I'>>
Explore 200 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement voyagerII 'Voyager II'>>
Explore 300 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement voyagerIII 'Voyager III'>>
Explore 500 times.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
MISC
<<new-achievement mekanik 'Mekanik'>>
You fixed the solar panels!
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement unified 'Unified.'>>
You found your brother!
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement moirai 'Moirai.'>>
You decided someone elses fate.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>>
<<new-achievement lotus 'Lotus.'>>
You were merciful.
<<locked 'Undiscovered'>>
This achievement is hidden.
<</new-achievement>><b>Scavenging</b>
<<achievement scavengerI>>
<<achievement scavengerII>>
<<achievement scavengerIII>>
<<achievement seekerI>>
<<achievement seekerII>>
<<achievement seekerIII>><b>Exploration</b>
<<achievement explorerI>>
<<achievement explorerII>>
<<achievement explorerIII>>
<<achievement voyagerI>>
<<achievement voyagerII>>
<<achievement voyagerIII>><b>Storyline</b>
<<achievement unified>>
<b>Quests</b>
<<achievement mekanik>><b>Karma</b>
<<achievement moirai>>
<<achievement lotus>>!!Achievements
You've unlocked <<= window.Achievement.unlocked.length>> achievements.
<div class="cols"><label><<radiobutton "$achievementChoosing" "scav" checked>> Scavenger.</label>
<label><<radiobutton "$achievementChoosing" "explor">> Exploration.</label>
<label><<radiobutton "$achievementChoosing" "quest">> Quests.</label>
<label><<radiobutton "$achievementChoosing" "karma">> Karma.</label></div>
<span id="response"><<include "scavAchievements">></span>\
<<done>>\
<<script>>
$("#radiobutton-achievementchoosing-0").on("click", function (event) {
$("#response").empty().wiki('<<include "scavAchievements">>');
});
$("#radiobutton-achievementchoosing-1").on("click", function (event) {
$("#response").empty().wiki('<<include "exploreAchievements">>');
});
$("#radiobutton-achievementchoosing-2").on("click", function (event) {
$("#response").empty().wiki('<<include "questAchievements">>');
});
$("#radiobutton-achievementchoosing-3").on("click", function (event) {
$("#response").empty().wiki('<<include "karmaAchievements">>');
});
<</script>>
\<</done>>
[[Remove achievements|removeAchievements]]
<<link "Return" $return>><</link>>Do not terminate all if you value your achievements, you can not get them back. This is only a button for Nota Bao to use when testing and developing new achievements. I repeat: DO NOT PRESS IT. YOU WILL LOSE ALL YOUR ACHIEVEMENTS!
<<link "Terminate all!" $return>><<set $caps to 0, $usedCaps to 0>><<run Achievement.clearAll()>><</link>>
[[Go back|checkAchievements]]<<widget "scavengerAchievements">><<silent>>
<<if visited() is 1>><<if Achievement.check('scavengerI')>><<else>><<notify>>Achievement unlocked!
"Scavenger I"
+1 cap<</notify>><<set $caps += 1>><<achievement scavengerI unlock>><<run memorize('achievements', { scavengerI : true })>><</if>><</if>>
<<if visited() is 50>><<if Achievement.check('scavengerII')>><<else>><<notify>>Achievement unlocked!
"Scavenger II"
+1 cap<</notify>><<set $caps += 1>><<achievement scavengerII unlock>><<run memorize('achievements', { scavengerII : true })>><</if>><</if>>
<<if visited() is 100>><<if Achievement.check('scavengerIII')>><<else>><<notify>>Achievement unlocked!
"Scavenger III"
+1 cap<</notify>><<set $caps += 1>><<achievement scavengerIII unlock>><<run memorize('achievements', { scavengerIII : true })>><</if>><</if>>
<<if visited() is 200>><<if Achievement.check('seekerI')>><<else>><<notify>>Achievement unlocked!
"Seeker I"
+1 cap<</notify>><<set $caps += 1>><<achievement seekerI unlock>><<run memorize('achievements', { seekerI : true })>><</if>><</if>>
<<if visited() is 300>><<if Achievement.check('seekerII')>><<else>><<notify>>Achievement unlocked!
"Seeker II"
+1 cap<</notify>><<set $caps += 1>><<achievement seekerII unlock>><<run memorize('achievements', { seekerII : true })>><</if>><</if>>
<<if visited() is 500>><<if Achievement.check('seekerIII')>><<else>><<notify>>Achievement unlocked!
"Seeker III"
+1 cap<</notify>><<set $caps += 1>><<achievement seekerIII unlock>><<run memorize('achievements', { seekerIII : true })>><</if>><</if>>
<</silent>><</widget>>
<<widget "explorerAchievements">><<silent>>
<<if visited() is 1>><<if Achievement.check('explorerI')>><<else>><<notify>>Achievement unlocked!
"Explorer I"
+1 cap<</notify>><<set $caps += 1>><<achievement explorerI unlock>><<run memorize('achievements', { explorerI : true })>><</if>><</if>>
<<if visited() is 50>><<if Achievement.check('explorerII')>><<else>><<notify>>Achievement unlocked!
"Explorer II"
+1 cap<</notify>><<set $caps += 1>><<achievement explorerII unlock>><<run memorize('achievements', { explorerII : true })>><</if>><</if>>
<<if visited() is 100>><<if Achievement.check('explorerIII')>><<else>><<notify>>Achievement unlocked!
"Explorer III"
+1 cap<</notify>><<set $caps += 1>><<achievement explorerIII unlock>><<run memorize('achievements', { explorerIII : true })>><</if>><</if>>
<<if visited() is 200>><<if Achievement.check('voyagerI')>><<else>><<notify>>Achievement unlocked!
"Voyager I"
+1 cap<</notify>><<set $caps += 1>><<achievement voyagerI unlock>><<run memorize('achievements', { voyagerI : true })>><</if>><</if>>
<<if visited() is 300>><<if Achievement.check('voyagerII')>><<else>><<notify>>Achievement unlocked!
"Voyager II"
+1 cap<</notify>><<set $caps += 1>><<achievement voyagerII unlock>><<run memorize('achievements', { voyagerII : true })>><</if>><</if>>
<<if visited() is 500>><<if Achievement.check('voyagerIII')>><<else>><<notify>>Achievement unlocked!
"Voyager III"
+1 cap<</notify>><<set $caps += 1>><<achievement voyagerIII unlock>><<run memorize('achievements', { voyagerIII : true })>><</if>><</if>>
<</silent>><</widget>>
<<widget "questAchievements">><<silent>>
<<if Achievement.check('mekanik')>><<else>><<notify>>Achievement unlocked!
"Mekanik"
+1 cap<</notify>><<set $caps += 1>><<achievement mekanik unlock>><<run memorize('achievements', { mekanik : true })>><</if>>
<<if passage() is "brotherEscape">><<if Achievement.check('unified')>><<else>><<notify>>Achievement unlocked!
"Unified"
+1 cap<</notify>><<set $caps += 1>><<achievement unified unlock>><<run memorize('achievements', { unified : true })>><</if>><</if>>
<</silent>><</widget>>
<<widget "moirai">><<silent>>
<<if Achievement.check('moirai')>><<else>><<notify>>Achievement unlocked!
"Moirai"
+1 cap<</notify>><<set $caps += 1>><<achievement moirai unlock>><<run memorize('achievements', { moirai : true })>><</if>>
<</silent>><</widget>>
<<widget "lotus">><<silent>>
<<if Achievement.check('lotus')>><<else>><<notify>>Achievement unlocked!
"Lotus"
+1 cap<</notify>><<set $caps += 1>><<achievement lotus unlock>><<run memorize('achievements', { lotus : true })>><</if>>
<</silent>><</widget>><<motherHandler>><div id="passage-footer"><<link "<">><<script>>Engine.backward()<</script>><</link>> | STATS: <span title="Arousal"><span style="color:pink">$player.arousal</span></span> | <span title="Lust"><span style="color:crimson">$player.lust</span></span> | <span title="Corruption"><span style="color:red">$player.corruption</span></span> | <span title="Inhibition">@@.inhibition;$player.inhibition@@</span> | @@.flicker;<<link "W-NAV">><<run Dialog.setup('W-NAV', 'wnav'); Dialog.wiki('<<include "W-NAV">>').open()>><</link>>@@ | <span style="color:white"><<if $companion.name is "">>Companion: <span style="color:crimson">None</span><<else>>Companion: <span style="color:yellow">$companion.name<<if $companion.isAssigned>> (Assigned)<</if>></span><</if>></span> | @@#datetime;<<datetime>>@@ | <<link ">">><<script>>Engine.forward()<</script>><</link>></div><<silent>>
<<if ndef $locations.freightyard>>
<<set $locations.freightyard = {
freightyard: {
name: "Ironclad Freight Yard",
hasVisited: false }
}>>
<</if>>
<</silent>><<include "fixSave">>
<<childHandler>>@@.shadow;This text should have a shadow@@
@@.emboss;This text should be embossed@@
@@.blur;This text should be blurred@@
@@.blurrier;This text should be blurrier@@
@@.smear;This text should be smeared@@
@@.mirror;This text should be mirrored@@
@@.upside-down;This text should be upside-down@@
@@.fade-in-out;This text should fade in and out@@
@@.rumble;This text should be rumbling@@
@@.slowrumble;This text should be slowrumbling@@
@@.shudder;This text should be shuddering@@
@@.pulse;This text should pulse once@@
@@.flicker;This text should flicker@@<a href="https://www.patreon.com/NotaBao"><img src="img/misc/patreon.png" width="30" height="30"></a> <a href="https://subscribestar.adult/nota-bao"><img src="img/misc/sslogo.png" width="30" height="30"></a> <a href="https://discord.gg/rPSPtFhzAv"><img src="img/misc/discord.png" width="40" height="30"></a>
!!Nota Bao<b>$player.name</b>
@@#now;<<now>>@@
<<showmeter 'hp' `$player.hp / $player.hpMax`>>
<<showmeter 'ap' `$player.ap / $player.apMax`>>
-----
<span style="color:pink">Arousal: $player.arousal</span>
<span style="color:crimson">Lust: $player.lust</span>
<span style="color:red">Corruption: $player.corruption</span>
@@.inhibition;Inhibition: $player.inhibition@@
-----
<span style="color:white"><<if $companion.name is "">>Companion: <span style="color:crimson">None</span><<else>>Companion: <span style="color:yellow">$companion.name<<if $companion.isAssigned>> (Assigned)<</if>></span><</if>></span>
-----
<<if $satchelAmount gt $maxAmount>><span style="color:red">You are Overencumbered.</span><</if>>Fractured FantasiesGENERIC
<<set $conf1 to false, $conf2 to false, $conf3 to false, $conf4 to false, $conf5 to false>>
<<set $merchantDismissed to false>>
<<set $satchelAmount to 0>>
<<set $mm9x18 to 0>>
<<set $mm762 to 0>>
<<set $maxAmount to 75>>
<<set $fuel to 0>>
<<set $bookChosen to "">>
<<set $radio to false>>
<<set $newDayStarted to false>>
<<set $assigned to "">>
<<set $assignedReturned to false>>
<<set $steppedOutside to false>>
<<set $merchantLevel to 1>>
<<set $merchantExp to 0>>
<<set $seeds to 1>>
<<set $seedsPlanted to 0>>
<<set $seedGrowth to 0>>
<<set $seedsGrown to 0>>
<<set $planterSpace to 1>>
<<set $day to 1>>
HOUSE
DIFFICULTY
<<set $difficulty to 50>>
CRAFTING
<<set $gasmaskmkii to false>>
<<set $gasmaskmkiii to false>>
<<set $scavengeBackpack to false>>
<<set $bodyarmor to false>>
SKILLS
<<set $salvageSkill to 0>>
<<set $craftSkill to 0>>
<<set $scavMult to 1>>
<<set $playerCrit to 1.5>>
<<set $defense to 0>>
STATS
<<set $rad to 0>>
<<set $dmgMin to 0, $dmgMax to 0>>
<<set $damage to 0>>
QUESTS
<<set $questDays to 0>>
<<set $questmap = []>>
<<set $ongoingQuests = []>>
<<set $storyline = {
tear: {
name: "The Tear",
desc: "Inspect the tear in the wallpaper.",
isStarted: false,
isComplete: false
},
reunion: {
name: "The Reunion",
desc: "Find your brother.",
clues: [],
isStarted: false,
isComplete: false
}
}>>
<<set $quest = {
solar: {
name: "Solar Powered Life",
desc: "The solar panels on your roof has blown out and stopped working. You must ascend the ladder and fix them.",
questItem: false,
isStarted: false,
isComplete: false
},
safezones: {
name: "Safezones",
desc: "You've written a note describing the locations of four different safezones. You should search for them...",
zonesUndiscovered: ["Point Guard", "Checkpoint Zero", "First Point", "Foxtrot"],
zonesDiscovered: [],
isStarted: false,
isComplete: false
},
toska: {
name: "Echoes in the Dark",
desc: "After several trades with Toska, you've discovered a metal door shut behind the gas station.",
questProgress: 0,
route: "",
isStarted: false,
isComplete: false
},
velka: {
name: "Velka's Search",
desc: "Šurik's daughter Velka has gone missing. You must find her.",
questItem: false,
isStarted: false,
isComplete: false
}
}>>
KEYS
<<set $keys = {
mallBunker: {
hasKey: false
},
mallJanitor: {
hasKey: false
},
lockbox: {
lockbox1: 5859,
lockbox2: 1441,
lockbox3: 5212,
lockbox4: 9877,
lockbox5: 7531,
lockbox6: 3665,
lockbox7: 2587,
lockbox8: 1945,
lockbox9: 2025,
lockbox10: 6666
}
}>>
<<newmeter 'hp' 1>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#Ff0000' '#000000' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'ap' 1>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#Ffff00' '#000000' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'fatigue' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#5DE2E7' '#9d5de7ff' '#DDDDDD'>>
<</newmeter>>
BOOK NAMES
<<set $bookNames = {
bookAshes: {name: "Ashes of the Forgotten Land"},
bookChronicles: {name: "The Wasteland Chronicles: First Point"},
bookEchoes: {name: "Echoes of the Silent Sky"},
bookIron: {name: "The Iron Roots of the Ruins"},
bookShattered: {name: "Under the Shattered Sun"},
bookCity: {name: "In the Shadow of the Last City"},
bookBroken: {name: "The Broken Roads and the Dying Breath"},
bookWhispers: {name: "Whispers Through the Smoke"},
bookGhost: {name: "The Ghosts Beneath the Soil"},
bookBone: {name: "Steel and Bone: A Wasteland Tale"},
bookTwilight: {name: "The Twilight of Old Worlds"},
bookForgotten: {name: "Fires of the Forgotten"},
bookBridge: {name: "The Last Bridge to Tomorrow"},
bookSecret: {name: "Echo-1: The Secret in the Ashes"},
bookRust: {name: "Rust and Reverence"},
bookWolves: {name: "The Wolves Who Walked Among Us"},
bookWasteland: {name: "The Silent Hand of the Wasteland"},
bookRoads: {name: "Through the Ghost Roads"},
bookBlood: {name: "Cold Iron, Warm Blood"},
bookHeavens: {name: "The Crumbling Heavens"},
bookGods: {name: "In the Footsteps of Forgotten Gods"}
}>>
CHARACTERS
<<set $player = new Player({name: "Josephine"})>>
<<set $carl = new NPC({name: "Carl", location: "carlRoom"})>>
<<set $anna = new NPC({name: "Anna", location: "annaRoom"})>>
<<set $joey = new NPC({name: "Joey", location: "joeyRoom"})>>
<<set $matthew = new NPC({name: "Matthew", location: "matthewRoom"})>>
<<set $jeniffer = new NPC({name: "Jeniffer", location: "jenifferRoom"})>>
<<set $npcList = ["carl", "anna", "joey", "matthew", "jeniffer"]>>
<<set $npcShowerTimes = { carl: 9, anna: 11, joey: 7, jeniffer: 19, matthew: 21 }>>
<<set $npcKitchenTimes = { carl: 1, anna: 1, joey: 1, matthew: 1, jeniffer: 1 }>>
<<set $npcCouchTimes = { carl: 1, anna: 1, joey: 1, matthew: 1, jeniffer: 1 }>>
<<set $companion = {
name: "",
isAssigned: false
}>>
<<set $assigned to "">>
<<set $residents to []>>
STORAGE
<<set
$equipped = {
head: "Empty",
center: "Empty",
foot: "Empty",
primary: "Empty",
secondary: "Empty",
equipment: "Empty"
};
$flashlight = {
isHad: false,
battery: "0"
};
$inventory = {
head: [],
center: [],
foot: [],
primary: [],
secondary: [],
equipment: [],
scrap_metal: 0,
electronics_components: 0,
circuit_board: 0,
leather: 0,
canned_food: 0,
water_bottle: 0,
adhesive: 0,
pipes: 0,
wood: 0,
gunpowder: 0,
ammunition: $mm9x18 + $mm762,
mm9x18: $mm9x18,
mm762: $mm762,
solar_cells: 0,
bandages: 0,
medkit: 0,
grenade: 0
};
$weaponsRack = {
primary: [],
secondary: [],
equipment: []
};
$gearStand = {
head: [],
center: [],
foot: []
};
$blueprints = {
solar_cell: false,
ammunition: false,
beretta_m9: true,
glock_19: false,
medkit: false,
bandages: false,
ar15: false,
ak47: false,
ak5d: false,
fn_scar: false,
night_vision: false,
goggles: false,
kevlar_vest: false,
ceramic_vest: false,
bomb_vest: false
}>>
<<set $storage = {
scrap_metal: 0,
electronics_components: 0,
circuit_board: 0,
leather: 0,
canned_food: 0,
water_bottle: 0,
adhesive: 0,
pipes: 0,
wood: 0,
gunpowder: 0,
}>>
VEHICLES
<<set $garage = 0>>
<<set $vehicles = {
motorcycle: {
name: "Café Racer",
fuel: 12,
status: "broken",
scrap: 23,
adhesive: 12,
circuit: 4,
location: "Point Guard"
},
car: {
name: "Toyota Hilux",
fuel: 66,
status: "fixed",
scrap: 0,
electronics_components: 0,
circuit: 0,
location: "Unknown"
}
}>>
APARREL AND GEAR
<<set setup.gear = {
gasmask: { type: "head", name: "Gas mask", desc: "(5 RAD)", tooltipImg: "[img[img/tooltip/gasmask.webp]]", rad: 5, ap: 1, gHP: 5 },
gasmaskmkii: { type: "head", name: "Gas mask MKII", desc: "(10 RAD)", tooltipImg: "[img[img/tooltip/gasmaskmkii.webp]]", rad: 10, ap: 2, gHP: 6 },
gasmaskmkiii: { type: "head", name: "Gas mask MKIII", desc: "(15 RAD)", tooltipImg: "[img[img/tooltip/gasmaskmkiii.webp]]", rad: 15, ap: 3, gHP: 7 },
glasses: { type: "head", name: "Sunglasses", desc: "(1 RAD)", tooltipImg: "[img[img/tooltip/sunglasses.webp]]", rad: 1 },
hat: { type: "head", name: "Hat", desc: "(2 RAD)", tooltipImg: "[img[img/tooltip/hat.webp]]", rad: 2 },
hazmatmask: { type: "head", name: "Hazmat mask", desc: "(20 RAD)", tooltipImg: "[img[img/tooltip/hazmatmask.webp]]", rad: 20, ap: 5, gHP: 5 },
bodyarmor: { type: "center", name: "Body armor (Kevlar)", desc: "(5 RAD)", tooltipImg: "[img[img/tooltip/bodyarmorK.webp]]", rad: 5, ap: 2, gHP: 25 },
hazmatsuit: { type: "center", name: "Hazmat suit", desc: "(20 RAD)", tooltipImg: "[img[img/tooltip/hazmatsuit.webp]]", rad: 20, ap: 5, gHP: 5 },
raiderjacket: { type: "center", name: "Raider Jacket (Leather)", desc: "(5 RAD)", tooltipImg: "[img[img/tooltip/raiderjacket.webp]]", rad: 5, ap: 2, gHP: 15 },
combatboots: { type: "foot", name: "Combat boots", desc: "(5 RAD)", tooltipImg: "[img[img/tooltip/combatboots.webp]]", rad: 5, gHP: 10 },
hikingboots: { type: "foot", name: "Hiking boots", desc: "(5 RAD)", tooltipImg: "[img[img/tooltip/hikingboots.webp]]", rad: 5, gHP: 5 },
hazmatboots: { type: "foot", name: "Hazmat boots", desc: "(20 RAD)", tooltipImg: "[img[img/tooltip/hazmatboots.webp]]", rad: 20, ap: 3, gHP: 5 },
raiderboots: { type: "foot", name: "Raider boots", desc: "(4 RAD)", tooltipImg: "[img[img/tooltip/raiderboots.webp]]", rad: 4, gHP: 12 },
afanasiev: { type: "primary", name: "Afanasiev 1955 ('Silver Death')", desc: "(25 - 40 DMG)", tooltipImg: "[img[img/tooltip/afanasiev.webp]]", dmgMin: 25, dmgMax: 40, ammoType: "mm762", ammo: 0, ammoMax: 30 },
sks52: { type: "primary", name: "SKS-52 ('Workhorse')", desc: "(30 - 50 DMG)", tooltipImg: "[img[img/tooltip/sks52.webp]]", dmgMin: 30, dmgMax: 50, ammoType: "mm762", ammo: 0, ammoMax: 10 },
akm: { type: "primary", name: "AKM ('Bastard's Bite')", desc: "(20 - 50 DMG)", tooltipImg: "[img[img/tooltip/akm.webp]]", dmgMin: 20, dmgMax: 50, ammoType: "mm762", ammo: 0, ammoMax: 30 },
rpk74: { type: "primary", name: "RPK-74 ('The Mule')", desc: "(22 - 40 DMG)", tooltipImg: "[img[img/tooltip/rpk74.webp]]", dmgMin: 22, dmgMax: 40, ammoType: "mm762", ammo: 0, ammoMax: 45 },
makarov: { type: "primary", name: "Makarov ('The Regret')", desc: "(10 - 25 DMG)", tooltipImg: "[img[img/tooltip/makarov.webp]]", dmgMin: 10, dmgMax: 25, ammoType: "mm9x18", ammo: 0, ammoMax: 8 },
pm92: { type: "primary", name: "PM-92 ('Peashooter')", desc: "(8 - 16 DMG)", tooltipImg: "[img[img/tooltip/pm92.webp]]", dmgMin: 8, dmgMax: 16, ammoType: "mm9x18", ammo: 0, ammoMax: 8 },
aps9: { type: "primary", name: "APS-9 ('Rattler')", desc: "(9 - 18 DMG)", tooltipImg: "[img[img/tooltip/aps9.webp]]", dmgMin: 9, dmgMax: 18, ammoType: "mm9x18", ammo: 0, ammoMax: 20 },
piperifle: { type: "primary", name: "Pipe Rifle ('Marv's')", desc: "(40 - 80 DMG)", dmgMin: 40, dmgMax: 80, ammoType: "mm762", ammo: 0, ammoMax: 8 },
combatknife: { type: "secondary", type2: "stab", name: "Combat knife", desc: "(3 - 10 DMG)", tooltipImg: "[img[img/tooltip/combatknife.webp]]", dmgMin: 3, dmgMax: 10 },
machete: { type: "secondary", type2: "slash", name: "Machete", desc: "(6 - 12 DMG)", tooltipImg: "[img[img/tooltip/machete.webp]]", dmgMin: 6, dmgMax: 12 },
hatchet: { type: "secondary", type2: "slash", name: "Hatchet", desc: "(4 - 8 DMG)", tooltipImg: "[img[img/tooltip/hatchet.webp]]", dmgMin: 4, dmgMax: 8 },
bonesaw: { type: "secondary", type2: "slash", name: "Bonesaw", desc: "(5 - 9 DMG)", tooltipImg: "[img[img/tooltip/bonesaw.webp]]", dmgMin: 5, dmgMax: 9 },
axe: { type: "secondary", type2: "slash", name: "Axe", desc: "(5 - 10 DMG)", tooltipImg: "[img[img/tooltip/axe.webp]]", dmgMin: 5, dmgMax: 10 },
pipe: { type: "secondary", type2: "hit", name: "Rusty Pipe", desc: "(4 - 7 DMG)", tooltipImg: "[img[img/tooltip/pipe.webp]]", dmgMin: 4, dmgMax: 7 },
crowbar: { type: "secondary", type2: "hit", name: "Crowbar", desc: "(2 - 4 DMG)", tooltipImg: "[img[img/tooltip/crowbar.webp]]", dmgMin: 3, dmgMax: 4 },
wrench: { type: "secondary", type2: "hit", name: "Wrench", desc: "(2 DMG)", tooltipImg: "[img[img/tooltip/wrench.webp]]", dmgMin: 2, dmgMax: 2 },
scepter: { type: "secondary", type2: "hit", name: "Scepter ('Holy')", desc: "A holy scepter, its metal still warm to the touch. (6 - 12 DMG)", tooltipImg: "[img[img/tooltip/scepter.webp]]", dmgMin: 6, dmgMax: 12 },
medkit: { type: "equipment", subtype: "hp", name: "Medkit", desc: "Heals a great amount.", heal: 40 },
bandages: { type: "equipment", subtype: "hp", name: "Bandages", desc: "Heals a small amount.", heal: 20 },
grenade: { type: "equipment", subtype: "dmg", name: "RG-24 Grenade", desc: "A fragmentation grenade. Deals heavy area damage.", dmgMin: 50, dmgMax: 75 },
Empty: { name: "Empty", tooltipImg: "No item equipped." }
}>>
<<set setup.gear.test = new SecondaryWeapon({name: "Debug Weapon", type: "secondary", type2: "hit", desc: "A test weapon", dmgMin: 2, dmgMax: 100 })>>
<<set setup.gear.test2 = new PrimaryWeapon({name: "Debug Rifle", type: "primary", desc: "A test rifle", dmgMin: 20, dmgMax: 100, ammoType: "mm762", ammo: 0, ammoMax: 30 })>>
LOCATIONS
<<set $casinoFS to false>>
<<set $casinoMS to false>>
<<set $maint to false>>
<<set $hubs = {
waterTower: {
name: "The Water Tower",
tier1: "<span style='color:#4B4B4B'>The lands surrounding the water tower remain a hazy mystery. Untouched and unexplored.</span>",
tier2: "<span style='color:#A55233'>Landmarks begin to emerge in your memory. You're slowly piecing together the fractured layout of the area.</span>",
tier3: "<span style='color:#D4A327'>You're starting to recall precise paths and ruins. Your feet know where to fall before your mind catches up.</span>",
tier4: "<span style='color:#5C768D'>Nearly every corner around the water tower has been uncovered. What was once unknown now feels almost familiar.</span>",
tier5: "<span style='color:#7DAA6A'>There's nothing left to uncover around the water tower. Its secrets have been picked clean, and the horizon holds no more surprises from here.</span>",
exp: 0,
explored: 0,
water: 2,
hasVisited: false
},
relayZone: {
name: "Old Relay Zone",
tier1: "<span style='color:#4B4B4B'>The antenna field crackles with old static and unknowns. You've only scratched the surface.</span>",
tier2: "<span style='color:#A55233'>You're starting to trace the layout of the towers and wreckage. Each rusted dish a marker on the map.</span>",
tier3: "<span style='color:#D4A327'>You move through the field with growing confidence. The warped geometry of the relay zone now feels intentional.</span>",
tier4: "<span style='color:#5C768D'>Nearly every tower, cable, and collapsed node has been charted. The dead signals have almost all been followed to their source.</span>",
tier5: "<span style='color:#7DAA6A'>The relay zone no longer hums with mystery. You've walked every path, climbed every dish, and traced the static to silence.</span>",
exp: 0,
explored: 0,
hasVisited: false
},
chapel: {
name: "The Chapel of Ash",
tier1: "<span style='color:#4B4B4B'>The chapel and its surroundings are cloaked in ash and silence. Most of it remains a mystery.</span>",
tier2: "<span style='color:#A55233'>You've begun to recognize the paths between scorched relics and hollow chambers.</span>",
tier3: "<span style='color:#D4A327'>You can almost walk the chapel ruins in your mind. Ash patterns, collapsed pews, and burnt scripture all fall into place.</span>",
tier4: "<span style='color:#5C768D'>The chapel's secrets have nearly all been laid bare. What was once sacred now lies exposed and broken.</span>",
tier5: "<span style='color:#7DAA6A'>The chapel lies in complete ruin now. Every chamber, relic, and shadow accounted for. All that remains is the echo of what once was holy.</span>",
exp: 0,
explored: 0,
hasVisited: false
}
}>>
<<newmeter 'tower' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'relay' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'chapel' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'hospital' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'mall' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<newmeter 'landfill' 0>>
<<sizing '200px' '3px'>>
<<animation '400ms' 'swing'>>
<<colors '#2bab58ff' '#ab2b34ff' '#DDDDDD'>>
<</newmeter>>
<<set $locations = {
hospital: {
name: "Mercyfall Sanitarium",
hasVisited: false
},
casino: {
name: "Golden Gate's Casino",
hasVisited: false
},
shopping_mall: {
name: "Shop Amok",
hasVisited: false
},
metro: {
name: "Underveil Transit",
hasVisited: false
},
hydro: {
name: "Floodgate 13",
hasVisited: false
},
datacentre: {
name: "VaultNet Core",
hasVisited: false
},
bioresearch: {
name: "Genesis Containment Labs",
hasVisited: false
},
landfill: {
name: "Mackey's Dump",
hasVisited: false
},
farm: {
name: "Blackroot Acres",
hasVisited: false
},
freightyard: {
name: "Ironclad Freight Yard",
hasVisited: false
}
}>>
ENEMIES
<<set $enemy = {
scavenger: { name: "Scavenger", desc: "A lone wanderer stripped of everything but the will to survive.", hp: 60, dmgMin: 5, dmgMax: 12 },
scavengergroup: { name: "Scavenger Group", desc: "A clutch of broken souls banded together, moving like carrion birds.", hp: 180, dmgMin: 15, dmgMax: 25 },
sniper: { name: "Bandit Sniper", desc: "A gaunt figure with a steady rifle and steadier nerves.", hp: 50, dmgMin: 15, dmgMax: 25 },
stalker: { name: "Stalker", desc: "They move like a ghost, face half-hidden under grime.", hp: 70, dmgMin: 8, dmgMax: 18 },
raider: { name: "Raider", desc: "A scarred brawler wrapped in scavenged armor, veins pulsing with violence.", hp: 80, dmgMin: 10, dmgMax: 20 },
vermin: { name: "Swarm of Vermin", desc: "Not animals, but people - wasted, crawling, moving as one mass of shrieking, broken bodies.", hp: 250, dmgMin: 3, dmgMax: 6 },
cinder: { name: "Cinder", desc: "Gaunt, black-lipped from ash, muttering half-prayers as they clutch burned relics.", hp: 80, dmgMin: 15, dmgMax: 28 },
cutter: { name: "Cutter", desc: "Wrapped in filthy bandages, knives dangling like charms. They fight to watch you bleed.", hp: 100, dmgMin: 18, dmgMax: 35 },
scrapper: { name: "Scrapper", desc: "Covered in rattling plates of junk metal, wielding crude welded tools.", hp: 135, dmgMin: 15, dmgMax: 28 },
flagellant: { name: "Flagellant", desc: "Barefoot and scarred, whispering ‘confessions' with every swing.", hp: 95, dmgMin: 10, dmgMax: 35 },
wretch: { name: "Wretch", desc: "Crowned with garbage, draped in plastic bags - a cruel monarch of filth.", hp: 160, dmgMin: 12, dmgMax: 25 }
}>>
<<set $toska = { name: "Toska", hp: 65, dmgMin: 20, dmgMax: 30 }>>
<<set $toskaDeadWait to 0>>
<<set $combatRun to false>>
<<set $combatLog to []>>
AUDIO
<<cacheaudio "ambience" "audio/ambience.mp3">>
<<cacheaudio "door" "audio/door.mp3">>
<<cacheaudio "solarpanel" "audio/solarpanel.wav">>
<<cacheaudio "shutters" "audio/shutters.mp4">>
<<set $solarSOUND to false>>
<<set $shutterSOUND to false>><div id="menu" data-init-passage="Menu"></div>
<div id="passages"></div>
</div><<link "Equipment">><<run Dialog.setup('Equipment', 'equip');
Dialog.wiki('<<include "Equipment">>').open()>>
<</link>>
<<link "Satchel">><<run Dialog.setup('Satchel', 'satchel');
Dialog.wiki('<<include "Satchel">>').open()>>
<</link>>
[[Help|help]]
[[Debugger|debugg]]
[[Skills|skillTree]]<b>v0.0.2</b><<widget "annaSex">><<nobr>>
<<set _event = random(1,5)>>
<<switch _event>>
<<case 1>>
<<link [[Ask her if she wants to see your new underwear (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 2>>
<<link [[Ask her to look at a bruise on your butt (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 3>>
<<link [[Bend over seductively (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 4>>
<<link [[Ask her if she wants to play with scissors (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 5>>
<<link [[Tell her you want her (0:25)|_args[0]]]>><<addmins 25>><</link>>
<</switch>>
<</nobr>><</widget>>
<<annaSex passageName>><<widget "carlSex">><<nobr>>
<<set _event = random(1,5)>>
<<switch _event>>
<<case 1>>
<<link [[Ask him if he wants to see your new underwear (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 2>>
<<link [[Ask him to look at a bruise on your butt (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 3>>
<<link [[Bend over seductively (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 4>>
<<link [[Ask him if he wants to do a light cardio workout (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 5>>
<<link [[Tell him you want him (0:25)|_args[0]]]>><<addmins 25>><</link>>
<</switch>>
<</nobr>><</widget>>
<<carlSex passageName>><<widget "jenifferSex">><<nobr>>
<<set _event = random(1,5)>>
<<switch _event>>
<<case 1>>
<<link [[Ask her if she wants to see your new underwear (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 2>>
<<link [[Ask her to look at a bruise on your butt (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 3>>
<<link [[Bend over seductively (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 4>>
<<link [[Ask her if she wants to play with scissors (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 5>>
<<link [[Tell her you want her (0:25)|_args[0]]]>><<addmins 25>><</link>>
<</switch>>
<</nobr>><</widget>>
<<jenifferSex passageName>><<widget "joeySex">><<nobr>>
<<set _event = random(1,5)>>
<<switch _event>>
<<case 1>>
<<link [[Ask him if he wants to see your new underwear (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 2>>
<<link [[Ask him to look at a bruise on your butt (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 3>>
<<link [[Bend over seductively (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 4>>
<<link [[Ask him if he wants to do a light cardio workout (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 5>>
<<link [[Tell him you want him (0:25)|_args[0]]]>><<addmins 25>><</link>>
<</switch>>
<</nobr>><</widget>>
<<joeySex passageName>><<widget "matthewSex">><<nobr>>
<<set _event = random(1,5)>>
<<switch _event>>
<<case 1>>
<<link [[Ask him if he wants to see your new underwear (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 2>>
<<link [[Ask him to look at a bruise on your butt (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 3>>
<<link [[Bend over seductively (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 4>>
<<link [[Ask him if he wants to do a light cardio workout (0:25)|_args[0]]]>><<addmins 25>><</link>>
<<case 5>>
<<link [[Tell him you want him (0:25)|_args[0]]]>><<addmins 25>><</link>>
<</switch>>
<</nobr>><</widget>>
<<matthewSex passageName>><<widget "vibeControl">><<silent>>
<<run setup.safeVibeAll(_args[0])>>
<</silent>><</widget>>
<<widget "stopvibrate">><<silent>>
<<run setup.safeStopAll()>>
<<arousalVibe>>
<</silent>><</widget>>
<<widget "arousalVibe">><<silent>>
<<set $vibeLevel to $player.arousal / 100>>
<<if $vibeLevel gt 1.0>><<set $vibeLevel to 1.0>><</if>>
<<run setup.safeVibeAll($vibeLevel)>>
<<if $player.arousal is 0>><<run setup.safeStopAll()>><</if>>
<</silent>><</widget>>
<<widget "vibrate">><<silent>>
<<set $vibeLevel to ($vibeLevel || 0) + 0.3>>
<<if $vibeLevel gt 1.0>><<set $vibeLevel to 1.0>><</if>>
<<run setup.safeVibeAll($vibeLevel)>>
<</silent>><</widget>>
<<widget "cumvibrate">><<silent>>
<<run setup.safeVibeAll(1.0)>>
<</silent>><</widget>>
<<widget "addvibrate">><<silent>>
<<set $vibeLevel to ($vibeLevel || 0) + _args[0]>>
<<if $vibeLevel gt 1.0>><<set $vibeLevel to 1.0>><</if>>
<<run setup.safeVibeAll($vibeLevel)>>
<</silent>><</widget>>-------------------DYNAMIC SHOWER TIMES-------------------
<<widget "showerOcc">><<silent>>
<<set $showerUser = "none">>
<<for _nameShower, _timeShower range $npcShowerTimes>>
<<set _npcShower = State.variables[_nameShower]>>
<<if _npcShower.isRes is true && _timeShower is $gameDate.getUTCHours()>>
<<set $showerUser = _npcShower.name>>
<<set $lastShoweredNPC = _npcShower.name>>
<</if>>
<</for>>
<</silent>><</widget>>
<<widget "lastUsedShower">><<nobr>>
<<switch $lastShoweredNPC>>
<<case "Joey">>
It's still foggy. Must have been Joey.<br>
<<case "Carl">>
The floor is still wet. Must have been Carl.<br>
<<case "Anna">>
It looks spotless. Must have been Anna.<br>
<<case "Jeniffer">>
It still smells like perfume. Must have been Jeniffer.<br>
<<case "Matthew">>
The entire room is cold. Must have been Matthew.<br>
<</switch>>
/* DEPRECATED */
/*
/*
<<if $lastShoweredNPC is "Joey">>
It's still foggy. Must have been Joey.<br>
<</if>>
<<if $lastShoweredNPC is "Carl">>
The floor is still wet. Must have been Carl.<br>
<</if>>
<<if $lastShoweredNPC is "Anna">>
It looks spotless. Must have been Anna.<br>
<</if>>
<<if $lastShoweredNPC is "Jeniffer">>
It still smells like perfume. Must have been Jeniffer.<br>
<</if>>
<<if $lastShoweredNPC is "Matthew">>
The entire room is cold. Must have been Matthew.<br>
<</if>>
*/
<</nobr>><</widget>>
-------------------COUCH RELAX-------------------
DEFINE ARRAY - USE IN PASSAGE READY
<<widget "couchRelax">><<silent>>
<<set $couchRelax = []>>
<<for _nameCouch, _timeCouch range $npcCouchTimes>>
<<set _npcCouch = State.variables[_nameCouch]>>
<<if _npcCouch.isRes is true && _timeCouch is $gameDate.getUTCHours()>>
<<set $couchRelax.pushUnique(_npcCouch.name)>>
<</if>>
<</for>>
<</silent>><</widget>>
HANDLE INTERACTION FLAVORTEXT - USE IN PASSAGES
<<widget "couchInteract">><<nobr>>
<<if $couchRelax.length eq 5>>$couchRelax[0], $couchRelax[1], $couchRelax[2], $couchRelax[3] & $couchRelax[4] are resting on the couch.<br>
<<link [[Join them (1:00)|couchRelaxDouble]]>><</link>><br><</if>>
<<if $couchRelax.length eq 4>>$couchRelax[0], $couchRelax[1], $couchRelax[2] & $couchRelax[3] are resting on the couch.<br>
<<link [[Join them (1:00)|couchRelaxDouble]]>><</link>><br><</if>>
<<if $couchRelax.length eq 3>>$couchRelax[0], $couchRelax[1] & $couchRelax[2] are resting on the couch.<br>
<<link [[Join them (1:00)|couchRelaxDouble]]>><</link>><br><</if>>
<<if $couchRelax.length eq 2>>$couchRelax[0] & $couchRelax[1] are resting on the couch.<br>
<<link [[Join them (1:00)|couchRelaxDouble]]>><</link>><br><</if>>
<<if $couchRelax.length eq 1>>$couchRelax[0] is resting on the couch.<br>
<<if $couchRelax[0] is "Anna" || $couchRelax[0] is "Jeniffer">><<link [[Join her (1:00)|couchRelaxSingle]]>><</link>><br><<else>><<link [[Join him (1:00)|couchRelaxSingle]]>><</link>><br><</if>><</if>>
<</nobr>><</widget>>
DISPLAYS NPCS RESTING IN LIVINGROOM
<<widget "displayLivingroom">><<nobr>>
<<if $couchRelax.length eq 5>> | <em>$couchRelax[0], $couchRelax[1], $couchRelax[2], $couchRelax[3] & $couchRelax[4] is in here.</em><</if>>
<<if $couchRelax.length eq 4>> | <em>$couchRelax[0], $couchRelax[1], $couchRelax[2] & $couchRelax[3] is in here.</em><</if>>
<<if $couchRelax.length eq 3>> | <em>$couchRelax[0], $couchRelax[1] & $couchRelax[2] is in here.</em><</if>>
<<if $couchRelax.length eq 2>> | <em>$couchRelax[0] & $couchRelax[1] is in here.</em><</if>>
<<if $couchRelax.length eq 1>> | <em>$couchRelax[0] is in here.</em><</if>>
<</nobr>><</widget>>
SET DYNAMIC TIMES - USE IN SLEEP WIDGET
<<widget "dynamicCouchTimes">><<silent>>
<<set _carlArrayCouch = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _carlArrayCouch.deleteFirst($npcShowerTimes.carl)>>
<<run _carlArrayCouch.shuffle()>>
<<set _annaArrayCouch = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _annaArrayCouch.deleteFirst($npcShowerTimes.anna)>>
<<run _annaArrayCouch.shuffle()>>
<<set _joeyArrayCouch = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _joeyArrayCouch.deleteFirst($npcShowerTimes.joey)>>
<<run _joeyArrayCouch.shuffle()>>
<<set _matthewArrayCouch = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _matthewArrayCouch.deleteFirst($npcShowerTimes.matthew)>>
<<run _matthewArrayCouch.shuffle()>>
<<set _jenifferArrayCouch = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _jenifferArrayCouch.deleteFirst($npcShowerTimes.jeniffer)>>
<<run _jenifferArrayCouch.shuffle()>>
<<set $npcCouchTimes = {
carl: _carlArrayCouch[1],
anna: _annaArrayCouch[1],
joey: _joeyArrayCouch[1],
matthew: _matthewArrayCouch[1],
jeniffer: _jenifferArrayCouch[1]
}>>
<</silent>><</widget>>
-------------------KITCHEN INTERACT-------------------
DEFINE ARRAY - USE IN MOTHERWIDGET
<<widget "kitchenTimes">><<silent>>
<<set $kitchenInteract = []>>
<<for _nameKitchen, _timeKitchen range $npcKitchenTimes>>
<<set _npcKitchen = State.variables[_nameKitchen]>>
<<if _npcKitchen.isRes is true && _timeKitchen is $gameDate.getUTCHours()>>
<<set $kitchenInteract.pushUnique(_npcKitchen.name)>>
<</if>>
<</for>>
<</silent>><</widget>>
<<widget "kitchenInteract">><<nobr>>
<<if $kitchenInteract.length eq 5>>$kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2], $kitchenInteract[3] & $kitchenInteract[4] are resting in the kitchen.<br>
<<link [[Join them (1:00)|kitchenInteractDouble]]>><</link>><br><</if>>
<<if $kitchenInteract.length eq 4>>$kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2] & $kitchenInteract[3] are resting in the kitchenh.<br>
<<link [[Join them (1:00)|kitchenInteractDouble]]>><</link>><br><</if>>
<<if $kitchenInteract.length eq 3>>$kitchenInteract[0], $kitchenInteract[1] & $kitchenInteract[2] are resting in the kitchen.<br>
<<link [[Join them (1:00)|kitchenInteractDouble]]>><</link>><br><</if>>
<<if $kitchenInteract.length eq 2>>$kitchenInteract[0] & $kitchenInteract[1] are resting in the kitchen.<br>
<<link [[Join them (1:00)|kitchenInteractDouble]]>><</link>><br><</if>>
<<if $kitchenInteract.length eq 1>>$kitchenInteract[0] is resting in the kitchen.<br>
<<if $kitchenInteract[0] is "Anna" ||$kitchenInteract[0] is "Jeniffer">><<link [[Join her (1:00)|kitchenInteractSingle]]>><</link>><<else>><<link [[Join him (1:00)|kitchenInteractSingle]]>><</link>><</if>><</if>>
<</nobr>><</widget>>
DISPLAYS NPCS IN THE KITCHEN
<<widget "displayKitchen">><<nobr>>
<<if $kitchenInteract.length eq 5>> | <em>$kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2], $kitchenInteract[3] & $kitchenInteract[4] is in here.</em><</if>>
<<if $kitchenInteract.length eq 4>> | <em>$kitchenInteract[0], $kitchenInteract[1], $kitchenInteract[2] & $kitchenInteract[3] is in here.</em><</if>>
<<if $kitchenInteract.length eq 3>> | <em>$kitchenInteract[0], $kitchenInteract[1] & $kitchenInteract[2] is in here.</em><</if>>
<<if $kitchenInteract.length eq 2>> | <em>$kitchenInteract[0] & $kitchenInteract[1] is in here.</em><</if>>
<<if $kitchenInteract.length eq 1>> | <em>$kitchenInteract[0] is in here.</em><</if>>
<</nobr>><</widget>>
SET DYNAMIC TIMES - USE IN SLEEP WIDGET
<<widget "dynamicKitchenTimes">><<silent>>
<<set _carlArrayKitchen = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _carlArrayKitchen.deleteFirst($npcShowerTimes.carl)>>
<<run _carlArrayKitchen.deleteFirst($npcCouchTimes.carl)>>
<<run _carlArrayKitchen.shuffle()>>
<<set _annaArrayKitchen = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _annaArrayKitchen.deleteFirst($npcShowerTimes.anna)>>
<<run _annaArrayKitchen.deleteFirst($npcCouchTimes.anna)>>
<<run _annaArrayKitchen.shuffle()>>
<<set _joeyArrayKitchen = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _joeyArrayKitchen.deleteFirst($npcShowerTimes.joey)>>
<<run _joeyArrayKitchen.deleteFirst($npcCouchTimes.joey)>>
<<run _joeyArrayKitchen.shuffle()>>
<<set _matthewArrayKitchen = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _matthewArrayKitchen.deleteFirst($npcShowerTimes.matthew)>>
<<run _matthewArrayKitchen.deleteFirst($npcCouchTimes.matthew)>>
<<run _matthewArrayKitchen.shuffle()>>
<<set _jenifferArrayKitchen = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>
<<run _jenifferArrayKitchen.deleteFirst($npcShowerTimes.jeniffer)>>
<<run _jenifferArrayKitchen.deleteFirst($npcCouchTimes.jeniffer)>>
<<run _jenifferArrayKitchen.shuffle()>>
<<set $npcKitchenTimes = {
carl: _carlArrayKitchen[1],
anna: _annaArrayKitchen[1],
joey: _joeyArrayKitchen[1],
matthew: _matthewArrayKitchen[1],
jeniffer: _jenifferArrayKitchen[1]
}>>
<</silent>><</widget>><<widget setFood>>
\<<silent>>
<<set $inventory.canned_food to Math.clamp($inventory.canned_food + _args[0], 0, 300)>>
<</silent>>\
<</widget>>
<<widget setScrap>>
\<<silent>>
<<set $inventory.scrap_metal to Math.clamp($inventory.scrap_metal + _args[0], 0, 600)>>
<</silent>>\
<</widget>>
<<widget setComponents>>
\<<silent>>
<<set $inventory.electronics_components to Math.clamp($inventory.electronics_components + _args[0], 0, 300)>>
<</silent>>\
<</widget>>
<<widget setCircuit>>
\<<silent>>
<<set $inventory.ccircuit_board to Math.clamp($inventory.circuit_board + _args[0], 0, 200)>>
<</silent>>\
<</widget>>
<<widget setLeather>>
\<<silent>>
<<set $inventory.leather to Math.clamp($inventory.leather + _args[0], 0, 300)>>
<</silent>>\
<</widget>>
<<widget setWater>>
\<<silent>>
<<set $inventory.water_bottle to Math.clamp($inventory.water_bottle + _args[0], 0, 200)>>
<</silent>>\
<</widget>>
<<widget setAdhesive>>
\<<silent>>
<<set $inventory.adhesive to Math.clamp($inventory.adhesive + _args[0], 0, 60)>>
<</silent>>\
<</widget>>
<<widget setPipes>>
\<<silent>>
<<set $inventory.pipes to Math.clamp($inventory.pipes + _args[0], 0, 200)>>
<</silent>>\
<</widget>>
<<widget setWood>>
\<<silent>>
<<set $inventory.wood to Math.clamp($inventory.wood + _args[0], 0, 200)>>
<</silent>>\
<</widget>>
<<widget setGunpowder>>
\<<silent>>
<<set $inventory.gunpowder to Math.clamp($inventory.gunpowder + _args[0], 0, 600)>>
<</silent>>\
<</widget>><<widget "scavenge">>
\<<silent>>
<<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<do tag "satchel">><<if $satchelAmount lt $maxAmount>><<set _itemName = setup.wrandom(_chance_table), _amount = random(1,2)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>>
\
<<set _itemName = setup.wrandom(_chance_table), _amount = random(1,2)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>><<else>>You can't carry anymore.<</if>><</do>>
<</widget>>
<<widget "scavengeExplore">>
\<<silent>>
<<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<do tag "satchel">><<if $satchelAmount lt $maxAmount>><<set _itemName = setup.wrandom(_chance_table), _amount = random(1,1)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>>
\
<<set _itemName = setup.wrandom(_chance_table), _amount = random(1,1)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>><<else>>You can't carry anymore.<</if>><</do>>
<</widget>>
<<widget "compScavenge">>
\<<silent>>
<<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<set _itemName = setup.wrandom(_chance_table), _amount = random(1,1)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>><br><span style="color:lightyellow">$companion.name scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>></span>
<</widget>>
<<widget "assignScavenge">>
\<<silent>>
<<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<set _itemName = setup.wrandom(_chance_table), _amount = random(1,2)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>><br><span style="color:lightyellow">$assigned scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>></span>
<</widget>>
<<widget "combatScavenge">>
\<<silent>>
<<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<do tag "satchel">><<if $satchelAmount lt $maxAmount>><<set _itemName = setup.wrandom(_chance_table), _amount = random(1,8)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've taken <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>>
\
<<set _itemName = setup.wrandom(_chance_table), _amount = random(1,8)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've taken <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>><<else>>You can't carry anymore.<</if>><</do>>
<</widget>>
<<widget "heapScavenge">>
\<<silent>>
<<set _chance_table = {
canned_food: 40,
scrap_metal: 70,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>>\<</silent>>\
<<do tag "satchel">><<if $satchelAmount lt $maxAmount>><<set _itemName = setup.wrandom(_chance_table), _amount = random(1,1)>>\
<<set $inventory[_itemName] += _amount, $satchelAmount += _amount>>You've scavaged <span style="color:yellow">_amount</span> <<= _itemName.replace("_", " ").toUpperFirst()>><<else>>You can't carry anymore.<</if>><</do>><</widget>><<widget setKarma>>
\<<silent>>
<<set $player.karma to Math.clamp($player.karma + _args[0], -100, 100)>>
<</silent>>\
<</widget>>
<<widget setSanity>>
\<<nobr>>
<<if _args[0] eq 1>>
<span style="color:green">+ Sanity</span>
<<elseif _args[0] eq 2>>
<span style="color:green">++ Sanity</span>
<<elseif _args[0] gte 3>>
<span style="color:green">+++ Sanity</span>
<</if>>
<<if _args[0] lte -15>>
<span style="color:red">"""---""" Sanity</span>
<<elseif _args[0] lte -10>>
<span style="color:red">"""--""" Sanity</span>
<<elseif _args[0] lte -5>>
<span style="color:red">- Sanity</span>
<<elseif _args[0] lt 0>>
<span style="color:red">- Sanity</span>
<</if>>
\<</nobr>><<silent>>
<<set $player.sanity to Math.clamp($player.sanity + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setStrength>>
\<<silent>>
<<set _playerStrengthIncrease to random(1, 3)>>
<<set $player.strength to Math.clamp($player.strength + _playerStrengthIncrease, 0, 100)>>
<</silent>>\
<<if $player.strength lt 100>><<if _playerStrengthIncrease eq 1>><span style="color:green">+ Strength</span><<elseif _playerStrengthIncrease eq 2>><span style="color:green">++ Strength</span><<elseif _playerStrengthIncrease gte 3>><span style="color:green">+++ Strength</span><</if>><<else>><span style="color:green">MAX STRENGTH</span><</if>>
\<</widget>>
<<widget setCardio>>
\<<silent>>
<<set _playerCardioIncrease to random(1, 3)>>
<<set $player.cardio to Math.clamp($player.cardio + _playerCardioIncrease, 0, 100)>>
<</silent>>\
<<if $player.cardio lt 100>><<if _playerCardioIncrease eq 1>><span style="color:green">+ Cardio</span><<elseif _playerCardioIncrease eq 2>><span style="color:green">++ Cardio</span><<elseif _playerCardioIncrease gte 3>><span style="color:green">+++ Cardio</span><</if>><<else>><span style="color:green">MAX CARDIO</span><</if>>
\<</widget>>
<<widget setIntelligence>>
\<<if $player.intelligence lt 100>><<if _args[0] eq 1>><span style="color:lightblue">+ Intelligence</span><<elseif _args[0] eq 2>><span style="color:lightblue">++ Intelligence</span><<elseif _args[0] gte 3>><span style="color:lightblue">+++ Intelligence</span><</if>><</if>>
\<<silent>>
<<set $player.intelligence to Math.clamp($player.intelligence + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setArousal>><<nobr>>
\<<if _args[0] lte 0>>
<span style="color:pink">"""--""" Arousal</span>
<<elseif _args[0] lte 10>>
<span style="color:pink">+ Arousal</span>
<<elseif _args[0] lte 20>>
<span style="color:pink">++ Arousal</span>
<<elseif _args[0] lte 29>>
<span style="color:pink">+++ Arousal</span>
<<else>>
<span style="color:pink">++++ Arousal</span>
<</if>>
\<</nobr>><<silent>>
<<set $player.arousal to Math.clamp($player.arousal + _args[0], 0, 100)>>
<<arousalVibe>>
<</silent>>\
<</widget>>
<<widget setLust>>
\<<if $player.lust lt 100>><<if _args[0] eq 1>><span style="color:crimson">+ Lust</span><<elseif _args[0] eq 2>><span style="color:crimson">++ Lust</span><<elseif _args[0] gte 3>><span style="color:crimson">+++ Lust</span><</if>><</if>>
\<<silent>>
<<set $player.lust to Math.clamp($player.lust + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setHP>>
\<<silent>>
<<set $player.hp to Math.clamp($player.hp + _args[0], 0, $player.hpMax)>>
<<updatemeter 'hp' `$player.hp / $player.hpMax`>>
<</silent>>\
<</widget>>
<<widget setAP>>
\<<silent>>
<<set $player.ap to Math.clamp($player.ap + _args[0], 0, $player.apMax)>>
<<updatemeter 'ap' `$player.ap / $player.apMax`>>
<</silent>>\
<</widget>>
<<widget setCorrupt>>
\<<if $player.corruption lt 100>><<if _args[0] eq 1>><span style="color:red">+ Corruption</span><<elseif _args[0] eq 2>><span style="color:red">++ Corruption</span><<elseif _args[0] gte 3>><span style="color:red">+++ Corruption</span><</if>><</if>>
\<<silent>>
<<set $player.corruption to Math.clamp($player.corruption + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setInhib>>
\<<if $player.inhibition gt -100>><<if _args[0] eq -1>>@@.inhibition;- Inhibition@@<<elseif _args[0] eq -2>>@@.inhibition;- - Inhibition@@<<elseif _args[0] lte -3>>@@.inhibition;- - - Inhibition@@<</if>><</if>>
\<<silent>>
<<set $player.inhibition to Math.clamp($player.inhibition + _args[0], -100, 100)>>
<</silent>>\
<</widget>>
<<widget setFatigue>>
\<<silent>>
<<set $player.fatigue to Math.clamp($player.fatigue + _args[0], 0, $player.fatigueMax)>>
<<updatemeter 'fatigue' `$player.fatigue / $player.fatigueMax`>>
<</silent>>\
<</widget>>
<<widget setHunger>>
\<<silent>>
<<set $player.hunger to Math.clamp($player.hunger + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setMasturbated>>
\<<silent>>
<<set $player.masturbated to Math.clamp($player.masturbated + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
/* CHARACTERS */
<<widget setCarl>>
\<<silent>>
<<set $carl.rp to Math.clamp($carl.rp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setAnna>>
\<<silent>>
<<set $anna.rp to Math.clamp($anna.rp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setJoey>>
\<<silent>>
<<set $joey.rp to Math.clamp($joey.rp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setMatt>>
\<<silent>>
<<set $matthew.rp to Math.clamp($matthew.rp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setJen>>
\<<silent>>
<<set $jeniffer.rp to Math.clamp($jeniffer.rp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
/* Freight Yard */
<<widget setMarks>>
\<<silent>>
<<set $yardMarks to Math.clamp($yardMarks + _args[0], 0, 21783219001)>>
<</silent>>\
<</widget>>
<<widget setMarv>>
\<<silent>>
<<set $marv to Math.clamp($marv + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setRoe>>
\<<silent>>
<<set $roe to Math.clamp($roe + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setHaddie>>
\<<silent>>
<<set $haddie to Math.clamp($haddie + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setRayna>>
\<<silent>>
<<set $rayna to Math.clamp($rayna + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setBenji>>
\<<silent>>
<<set $benji to Math.clamp($benji + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget setJex>>
\<<silent>>
<<set $jex to Math.clamp($jex + _args[0], 0, 100)>>
<</silent>>\
<</widget>><<widget "storeGear">>
\<<silent>>
<<set $equipped.head to "Empty", $equipped.center to "Empty", $equipped.foot to "Empty">>
<<run $gearStand.head.pushUnique(... $inventory.head); $inventory.head = []>>
<<run $gearStand.center.pushUnique(... $inventory.center); $inventory.center = []>>
<<run $gearStand.foot.pushUnique(... $inventory.foot); $inventory.foot = []>>
<<radCalc>>
\<</silent>>
<</widget>>
<<widget "storeWeap">>
\<<silent>>
<<set $equipped.primary to "Empty", $equipped.secondary to "Empty", $equipped.equipment to "Empty">>
<<run $weaponsRack.primary.pushUnique(... $inventory.primary); $inventory.primary = []>>
<<run $weaponsRack.secondary.pushUnique(... $inventory.secondary); $inventory.secondary = []>>
<<run $weaponsRack.equipment.pushUnique(... $inventory.equipment); $inventory.equipment = []>>
<<radCalc>>
\<</silent>>
<</widget>>
<<widget "removeGearS">>
\<<silent>>
<<set $equipped.head to "Empty", $equipped.center to "Empty", $equipped.foot to "Empty">><<storeGear>><<storeWeap>><<replace "#ui-dialog-body">><<include "prepareScavenge">><<updatebar>><</replace>>
<<radCalc>>
\<</silent>>
<</widget>>
<<widget "removeGearE">>
\<<silent>>
<<set $equipped.head to "Empty", $equipped.center to "Empty", $equipped.foot to "Empty">><<storeGear>><<storeWeap>><<replace "#ui-dialog-body">><<include "prepareExplore">><<updatebar>><</replace>>
<<radCalc>>
\<</silent>>
<</widget>>
<<widget "removeGearO">>
\<<silent>>
<<set $equipped.head to "Empty", $equipped.center to "Empty", $equipped.foot to "Empty">><<storeGear>><<storeWeap>><<replace "#ui-dialog-body">><<include "prepareOutside">><<updatebar>><</replace>>
<<radCalc>>
\<</silent>>
<</widget>><<widget "updatebar">>
\<<silent>>
<<replace "#passage-footer">><<include "PassageFooter">><</replace>>
<</silent>>\
<</widget>>
<<widget "refresh">>
\<<silent>>
<<script>>State.display(State.active.title, "none", "back")<</script>>
<</silent>>\
<</widget>>
<<widget "equip">>
\<<silent>>
<<if $inventory[_args[0]].includes(_args[1])>>
<<run $inventory[_args[0]].deleteAll(_new);
$inventory[_args[0]].push($equipped[_args[0]]);
$equipped[_args[0]] = _new>>
<</if>>
<</silent>>\
<</widget>>
<<widget "handleAssigned">><<silent>>
<<if $assigned isnot "">><<notify>>
$assigned has returned from the assigned task.
<</notify>><</if>>
<<assignScavenge>>
<<if $companion.isAssigned is true>>
<<set $companion.isAssigned to false>>
<</if>>
<<set $assigned to "">>
<</silent>><</widget>>
<<widget "questables">><<silent>>
<<if $quest.solar.isComplete is false && $questDays eq 3 && $quest.solar.isStarted is false>><<set $quest.solar.isStarted to true>><<set $ongoingQuests.pushUnique("solar")>><<notify>>You've started the sidequest: Solar.<</notify>><</if>>
<<if $storyline.tear.isComplete is false && $questDays eq 5 && $storyline.tear.isStarted is false>><<set $storyline.tear.isStarted to true>><<set $ongoingQuests.pushUnique("tear")>><<set $tearInitial to true>><<notify>>You've started the storyline quest: The Tear.<</notify>><</if>>
<</silent>><</widget>>
<<widget "seedGrowth">><<silent>>
<<if $seedsPlanted gte 1>>
<<set $seedGrowth to $seedGrowth + 1 / random(60,100)>>
<<if $seedGrowth gte 100>>
<<set $seedsGrown += 1>>
<<set $seedsPlanted -= 1>>
<<set $seedGrowth to 1>>
<</if>>
<<set $seedGrowth to Math.round($seedGrowth * 100) / 100>>
<</if>>
<</silent>><</widget>>
<<widget "grantBook">><<silent>>
<<set _newbook to $allBooks[0]>>
<<set $booksFound.pushUnique(_newbook)>>
<<run $allBooks.deleteAll(_newbook)>>
<<run $allBooks.shuffle()>>
<</silent>>@@.pos;You've been granted a book@@. The title is @@.em;<<= $bookNames[_newbook].name>>@@<</widget>>
<<widget "setEnemyObjects">><<silent>>
<<if $difficulty is 50>> <!-- EASY -->
<<set $enemy = {
scavenger: { name: "Scavenger", desc: "A lone wanderer stripped of everything but the will to survive.", hp: 60, dmgMin: 5, dmgMax: 12 },
scavengergroup: { name: "Scavenger Group", desc: "A clutch of broken souls banded together, moving like carrion birds.", hp: 180, dmgMin: 15, dmgMax: 25 },
sniper: { name: "Bandit Sniper", desc: "A gaunt figure with a steady rifle and steadier nerves.", hp: 50, dmgMin: 15, dmgMax: 25 },
stalker: { name: "Stalker", desc: "They move like a ghost, face half-hidden under grime.", hp: 70, dmgMin: 8, dmgMax: 18 },
raider: { name: "Raider", desc: "A scarred brawler wrapped in scavenged armor, veins pulsing with violence.", hp: 80, dmgMin: 10, dmgMax: 20 },
vermin: { name: "Swarm of Vermin", desc: "Not animals, but people - wasted, crawling, moving as one mass of shrieking, broken bodies.", hp: 250, dmgMin: 3, dmgMax: 6 },
cinder: { name: "Cinder", desc: "Gaunt, black-lipped from ash, muttering half-prayers as they clutch burned relics.", hp: 55, dmgMin: 8, dmgMax: 15 },
cutter: { name: "Cutter", desc: "Wrapped in filthy bandages, knives dangling like charms. They fight to watch you bleed.", hp: 75, dmgMin: 12, dmgMax: 22 },
scrapper: { name: "Scrapper", desc: "Covered in rattling plates of junk metal, wielding crude welded tools.", hp: 95, dmgMin: 10, dmgMax: 18 },
flagellant: { name: "Flagellant", desc: "Barefoot and scarred, whispering ‘confessions' with every swing.", hp: 65, dmgMin: 5, dmgMax: 20 },
wretch: { name: "Wretch", desc: "Crowned with garbage, draped in plastic bags - a cruel monarch of filth.", hp: 110, dmgMin: 6, dmgMax: 14 }
}>>
<<elseif $difficulty is 30>> <!-- MEDIUM -->
<<set $enemy = {
scavenger: { name: "Scavenger", desc: "A lone wanderer stripped of everything but the will to survive.", hp: 90, dmgMin: 10, dmgMax: 18 },
scavengergroup: { name: "Scavenger Group", desc: "A clutch of broken souls banded together, moving like carrion birds.", hp: 240, dmgMin: 25, dmgMax: 40 },
sniper: { name: "Bandit Sniper", desc: "A gaunt figure with a steady rifle and steadier nerves.", hp: 75, dmgMin: 25, dmgMax: 40 },
stalker: { name: "Stalker", desc: "They move like a ghost, face half-hidden under grime.", hp: 100, dmgMin: 15, dmgMax: 30 },
raider: { name: "Raider", desc: "A scarred brawler wrapped in scavenged armor, veins pulsing with violence.", hp: 110, dmgMin: 15, dmgMax: 25 },
vermin: { name: "Swarm of Vermin", desc: "Not animals, but people - wasted, crawling, moving as one mass of shrieking, broken bodies.", hp: 350, dmgMin: 4, dmgMax: 8 },
cinder: { name: "Cinder", desc: "Gaunt, black-lipped from ash, muttering half-prayers as they clutch burned relics.", hp: 80, dmgMin: 15, dmgMax: 28 },
cutter: { name: "Cutter", desc: "Wrapped in filthy bandages, knives dangling like charms. They fight to watch you bleed.", hp: 100, dmgMin: 18, dmgMax: 35 },
scrapper: { name: "Scrapper", desc: "Covered in rattling plates of junk metal, wielding crude welded tools.", hp: 135, dmgMin: 15, dmgMax: 28 },
flagellant: { name: "Flagellant", desc: "Barefoot and scarred, whispering ‘confessions' with every swing.", hp: 95, dmgMin: 10, dmgMax: 35 },
wretch: { name: "Wretch", desc: "Crowned with garbage, draped in plastic bags - a cruel monarch of filth.", hp: 160, dmgMin: 12, dmgMax: 25 }
}>>
<<elseif $difficulty is 15>> <!-- HARD (swingy) -->
<<set $enemy = {
scavenger: { name: "Scavenger", desc: "A lone wanderer stripped of everything but the will to survive.", hp: 120, dmgMin: 5, dmgMax: 35 },
scavengergroup: { name: "Scavenger Group", desc: "A clutch of broken souls banded together, moving like carrion birds.", hp: 320, dmgMin: 15, dmgMax: 70 },
sniper: { name: "Bandit Sniper", desc: "A gaunt figure with a steady rifle and steadier nerves.", hp: 100, dmgMin: 20, dmgMax: 75 },
stalker: { name: "Stalker", desc: "They move like a ghost, face half-hidden under grime.", hp: 130, dmgMin: 10, dmgMax: 55 },
raider: { name: "Raider", desc: "A scarred brawler wrapped in scavenged armor, veins pulsing with violence.", hp: 140, dmgMin: 15, dmgMax: 45 },
vermin: { name: "Swarm of Vermin", desc: "Not animals, but people - wasted, crawling, moving as one mass of shrieking, broken bodies.", hp: 450, dmgMin: 2, dmgMax: 20 },
cinder: { name: "Cinder", desc: "Gaunt, black-lipped from ash, muttering half-prayers as they clutch burned relics.", hp: 110, dmgMin: 5, dmgMax: 50 },
cutter: { name: "Cutter", desc: "Wrapped in filthy bandages, knives dangling like charms. They fight to watch you bleed.", hp: 130, dmgMin: 15, dmgMax: 60 },
scrapper: { name: "Scrapper", desc: "Covered in rattling plates of junk metal, wielding crude welded tools.", hp: 160, dmgMin: 10, dmgMax: 50 },
flagellant: { name: "Flagellant", desc: "Barefoot and scarred, whispering ‘confessions' with every swing.", hp: 115, dmgMin: 8, dmgMax: 65 },
wretch: { name: "Wretch", desc: "Crowned with garbage, draped in plastic bags - a cruel monarch of filth.", hp: 200, dmgMin: 5, dmgMax: 45 }
}>>
<</if>>
<</silent>><</widget>>
<<widget "setResident">><<silent>>
<<set State.variables[_args[0].toLowerCase()].isRes to true>>
<<run $residents.pushUnique(_args[0])>>
<<setKarma 1>>
<<lotus>>
<</silent>><</widget>>
<<widget "finishQuest">><<silent>>
<<set $quest[_args[0]].isComplete to true>>
<<run $questmap.pushUnique(_args[0])>>
<<run $ongoingQuests.deleteAll(_args[0])>>
<<questAchievements>>
<</silent>><</widget>><<widget "combatActions">><span id="enemyHit"><span class="icon-enemyHit"> <<if _damage gt setup.gear[$equipped.primary].dmgMax>><b>@@.glow-scepter;Critical damage@@</b>! You dealt <b>_damage</b> damage!<<else>><<if _damage gt 0>><<if $currEnemies.hp lt _damageControl>>You dealt <b>_damage damage</b>!<<set _damageControl to $currEnemies.hp>><</if>><<else>><i>You missed!</i><</if>><</if>></span></span>
<span id="playerHit"><span class="icon-playerHit"> <<if _enemyDamage gt $currEnemies.dmgMax>><span style="color:crimson"><b>Critical damage</b>! Enemy dealt <b>_enemyDamage</b> damage!</span><<else>><<if _enemyDamage gt 0>><span style="color:crimson">Enemy dealt <b>_enemyDamage damage</b>!</span><<else>><i>They missed!</i><</if>><</if>></span></span><br><<silent>>
<<script>>
const widgetContent = $('#playerHit').text();
State.variables.combatLog.push(widgetContent);
addCombatEntry(widgetContent);
<</script>>
<<script>>
const widgetContent = $('#enemyHit').text();
State.variables.combatLog.push(widgetContent);
addCombatEntry(widgetContent);
<</script>>
<</silent>><</widget>><<widget "calcDamage">><<silent>>
<<set _roll = random(1,100)>>
<<if _roll <= 70>>
<<set _damage = random(_args[0], _args[1])>>
<<elseif _roll <= 90>>
<<if _grenadeThrown>><<set _damage = random(_args[0], _args[1])>><<unset _grenadeThrown>><<else>><<set _damage = 0>><</if>>
<<else>>
<<set _damage = Math.round(_args[1] * _args[2])>>
<</if>>
<</silent>><</widget>>
<<widget "calcEnemyDamage">><<silent>>
<<set _roll = random(1,100)>>
<<if _roll <= 70>>
<<set _enemyDamage = random($currEnemies.dmgMin, $currEnemies.dmgMax)>>
<<elseif _roll <= 90>>
<<set _enemyDamage = 0>>
<<else>>
<<set _enemyDamage = Math.round($currEnemies.dmgMax * 1.5)>>
<</if>>
<</silent>><</widget>>
<<widget "resolveCombat">><<silent>>
<<set $currEnemies.hp = Math.clamp($currEnemies.hp - _damage, 0, 999)>>
<<calcEnemyDamage>>
<<setHP `-1 * _enemyDamage`>>
<<redo "combat">>
<<updatemeter 'hp' `$player.hp / $player.hpMax`>>
<<replace "#enemyChatter">><<enemyChatter>><</replace>>
<<replace "#combatActions">><<combatActions>><</replace>>
<</silent>><</widget>>
PRIMARY WEAPON
<<widget "primary">><<nobr>>
<<set _equippedPrimary to setup.gear[$equipped.primary]>>
<<if $equipped.primary isnot "Empty" && _equippedPrimary.ammo gte 1>>
<<link `"Shoot <strong>" + _equippedPrimary.name + "</strong> - <strong>" + _equippedPrimary.ammo + "x</strong>"`>>
<<set _equippedPrimary.ammo -= 1>>
<<set _dmgMin to _equippedPrimary.dmgMin>>
<<set _dmgMax to _equippedPrimary.dmgMax>>
<<calcDamage _dmgMin _dmgMax $playerCrit>>
<<resolveCombat>>
<</link>>
<<elseif _equippedPrimary.ammo is 0>>
You do not have any ammunition left in the chamber.
<<set _ammoType to _equippedPrimary.ammoType>>
<<if $inventory[_ammoType] gte 1>>
<span style="color:green"> You have some bullets in your satchel!</span><br>
<<link "Reload">>
<<set _ammoMax to _equippedPrimary.ammoMax>>
<<if $inventory[_ammoType] gte _ammoMax>>
<<set _equippedPrimary.ammo to _ammoMax>>
<<set $inventory[_ammoType] -= _ammoMax>>
<<else>>
<<set _equippedPrimary.ammo to $inventory[_ammoType]>>
<<set $inventory[_ammoType] -= $inventory[_ammoType]>>
<</if>><<redo "combat">>
<</link>><<else>>
<<link "Throw dirt!">>
<<calcDamage 2 3 $playerCrit>>
<<resolveCombat>>
<</link>><</if>>
<<else>>No <span style="color:red">firearm</span> equipped! <br><<link "Throw dirt!">>
<<set _throwDmg = Math.round($player.cardio / 6)>>
<<if $player.cardio gte 20>><<calcDamage 2 _throwDmg $playerCrit>><<else>><<calcDamage 2 3 $playerCrit>><</if>>
<<resolveCombat>>
<</link>><</if>>
<</nobr>><</widget>>
SECONDARY WEAPON
<<widget "secondary">><<nobr>>
<<set _equippedSecondary to setup.gear[$equipped.secondary]>>
<<if $equipped.secondary isnot "Empty">>
<<switch _equippedSecondary.type2>>
<<case 'hit'>><<set _linkName to "Hit with <strong>" + _equippedSecondary.name + "</strong>">>
<<case 'slash'>><<set _linkName to "Slash with <strong>" + _equippedSecondary.name + "</strong>">>
<<case 'stab'>><<set _linkName to "Stab with <strong>" + _equippedSecondary.name + "</strong>">>
<</switch>>
<<link _linkName>>
<<set _dmgMin to _equippedSecondary.dmgMin>>
<<set _dmgMax to _equippedSecondary.dmgMax>>
<<calcDamage _dmgMin _dmgMax $playerCrit>>
<<resolveCombat>>
<</link>>
<<else>>No <span style="color:red">secondary weapon</span> equipped! <br><<link "Punch!">>
<<set _punchDmg = Math.round($player.strength / 10)>>
<<if $player.strength gte 20>><<calcDamage 1 _punchDmg $playerCrit>><<else>><<calcDamage 1 2 $playerCrit>><</if>>
<<resolveCombat>>
<</link>><</if>>
<</nobr>><</widget>>
EQUIPMENT
<<widget "calculateGrenade">><<silent>>
<<set _dmgMin to setup.gear.grenade.dmgMin>>
<<set _dmgMax to setup.gear.grenade.dmgMax>>
<<set _grenadeThrown to true>>
<<calcDamage _dmgMin _dmgMax $playerCrit>>
<<resolveCombat>>
<</silent>><</widget>>
<<widget "equipment">><<nobr>>
<<linkreplace "Equipment">><<if $inventory.medkit gte 1>><<linkreplace `"Heal - " + $inventory.medkit + " medkits"`>>You've healed <b><span style="color:green"><<= setup.gear.medkit.heal>> HP</span></b>!<<set $inventory.medkit -= 1>><<setHP setup.gear.medkit.heal>><</linkreplace>><<else>>You do not have any medkits!<</if>><br>
<<if $inventory.bandages gte 1>><<linkreplace `"Heal - " + $inventory.bandages + " bandages"`>>You've healed <b><span style="color:green"><<= setup.gear.bandages.heal>> HP</span></b>!<<set $inventory.bandages -= 1>><<setHP setup.gear.bandages.heal>><</linkreplace>><<else>>You do not have any bandages!<</if>><br>
<<if $inventory.grenade gte 1>><<linkreplace "Throw RG-24 Grenade">><<calculateGrenade>><<set $inventory.grenade -= 1>>You throw a grenade.<</linkreplace>><<else>>You do not have any grenades.<</if>>
<</linkreplace>>
<</nobr>><</widget>>
ESCAPE
<<widget "escape">><<nobr>>
<<switch random(1,4)>><<case 1>><<link "Run away">><<set $combatRun to true>><<redo "combat">><</link>><<default>><<linkreplace "Run away">><em>@@.neg;You weren't able to find a place to run to...@@</em><</linkreplace>><</switch>><</nobr>><</widget>>
SURRENDER
<<widget "surrender">><<nobr>>
[[Surrender|combatSurrender]]
<</nobr>><</widget>>
DOUBLE KILL CONTROLLER
<<widget "doubleKill">><<silent>><<if $currEnemies.hp lte 0 && $player.hp lte 0>><<setHP 1>><</if>><</silent>><</widget>><<widget "enemyChatter">><i><<type 1ms>><span style="color:lightyellow"><span class="icon-enemyChatter"> <<switch random(1,50)>><<case 1>>$currEnemies.name: Ah, AH! Watch out!<<case 2>>$currEnemies.name: Fuck! You BITCH!<<case 3>>$currEnemies.name: Oh God! That was close!<<case 4>>$currEnemies.name: Shit!<<case 5>>$currEnemies.name: Jesus Christ! Watch out with that thing! It's dangerous!<<case 6>>$currEnemies.name: Кто это? Проверь коридор.<<case 7>>$currEnemies.name: Мы под обстрелом! Займите позиции!<<case 8>>$currEnemies.name: Они здесь! Зови остальных!<<case 9>>$currEnemies.name: Ты слышал? Шаги в темноте...<<case 10>>$currEnemies.name: Бросай оружие! Ты труп!<<case 11>>$currEnemies.name: Take this, slut!<<case 12>>$currEnemies.name: You've pissed me off now! Time to die.<<case 13>>$currEnemies.name: Ah! You got lucky on that one...<<case 14>>$currEnemies.name: I'm going to fuck your eye sockets!<<case 15>>$currEnemies.name: You better watch out...<<case 16>>$currEnemies.name: I'm injured! Stop!<<case 17>>$currEnemies.name: You better hope you're able to kill me, or else I'm going to make you regret ever stepping foot in here!<<case 18>>$currEnemies.name: I hope you know what you're doing. I'm not going to go easy on you if I win this fight.<<case 19>>$currEnemies.name: You're outright INSANE! Fuck!<<case 20>>$currEnemies.name: Die!<<case 21>>$currEnemies.name: Why won't you die already?<<case 22>>$currEnemies.name: It's bad... It's really bad.<<case 23>>$currEnemies.name: You better watch your back from now on!<<case 24>>$currEnemies.name: Pray!<<case 25>>$currEnemies.name: This is not the last you're going to be seeing from us!<<case 26>>$currEnemies.name: Fuck you!<<case 27>>$currEnemies.name: I'm going to rape your little holes when I am done here!<<case 28>>$currEnemies.name: I will fuck you!<<case 29>>$currEnemies.name: I'm going to destroy your asshole!<<case 30>>$currEnemies.name: Don't make me come over there and throatfuck you!<<case 31>>$currEnemies.name: Они близко! Готовься к бою!<<case 32>>$currEnemies.name: Не стой! Дави на них!<<case 33>>$currEnemies.name: Ты слышал это? Внимательнее!<<case 34>>$currEnemies.name: Если они двинутся, стреляй!<<case 35>>$currEnemies.name: Это наша земля! Умри!<<case 36>>$currEnemies.name: Быстро сюда, нужно укрытие!<<case 37>>$currEnemies.name: Вижу тень... жди.<<case 38>>$currEnemies.name: Они разделились! Лови одиночных!<<case 39>>$currEnemies.name: Не дайте им шанса дышать! <<case 40>>$currEnemies.name: Запах крови... Они слабеют! <<case 41>>$currEnemies.name: Следи за потолком, ловушка может быть там. <<case 42>>$currEnemies.name: This is going to be the end of you! I hope you've kissed your loved ones goodbye!<<case 43>>$currEnemies.name: The things I am going to do to you...<<case 44>>$currEnemies.name: You better make sure you kill me! I've got hell planned for you!<<case 45>>$currEnemies.name: Ach! I'm hit!<<case 46>>$currEnemies.name: Let's see what you got, bitch!<<case 47>>$currEnemies.name: Get over here!<<case 48>>$currEnemies.name: To kill or not to kill...<<case 49>>$currEnemies.name: Fire in the hole!<<case 50>>$currEnemies.name: I want her head on a stick!<</switch>></span></span><</type>></i><<silent>>
<<script>>
const widgetContent = $('#enemyChatter').text();
State.variables.combatLog.push(widgetContent);
addCombatEntry(widgetContent);
<</script>>
<</silent>><</widget>><<widget "enemies">><<silent>>
<<set _roll to random(10,100)>>
<<if $difficulty is 50>> <!-- EASY -->
<<if _roll <= 20>>
<<set _enemies to $enemy.scavenger>>
<<elseif _roll <= 35>>
<<set _enemies to $enemy.raider>>
<<elseif _roll <= 50>>
<<set _enemies to $enemy.stalker>>
<<elseif _roll <= 65>>
<<set _enemies to $enemy.scavengergroup>>
<<elseif _roll <= 75>>
<<set _enemies to $enemy.cinder>>
<<elseif _roll <= 85>>
<<set _enemies to $enemy.cutter>>
<<elseif _roll <= 92>>
<<set _enemies to $enemy.scrapper>>
<<elseif _roll <= 97>>
<<set _enemies to $enemy.flagellant>>
<<elseif _roll <= 100>>
<<set _enemies to $enemy.wretch>>
<</if>>
<<elseif $difficulty is 30>> <!-- MEDIUM -->
<<if _roll <= 15>>
<<set _enemies to $enemy.scavenger>>
<<elseif _roll <= 28>>
<<set _enemies to $enemy.raider>>
<<elseif _roll <= 41>>
<<set _enemies to $enemy.stalker>>
<<elseif _roll <= 53>>
<<set _enemies to $enemy.scavengergroup>>
<<elseif _roll <= 65>>
<<set _enemies to $enemy.sniper>>
<<elseif _roll <= 75>>
<<set _enemies to $enemy.vermin>>
<<elseif _roll <= 82>>
<<set _enemies to $enemy.cinder>>
<<elseif _roll <= 88>>
<<set _enemies to $enemy.cutter>>
<<elseif _roll <= 93>>
<<set _enemies to $enemy.scrapper>>
<<elseif _roll <= 97>>
<<set _enemies to $enemy.flagellant>>
<<elseif _roll <= 100>>
<<set _enemies to $enemy.wretch>>
<</if>>
<<elseif $difficulty is 15>> <!-- HARD (swingy) -->
<<if _roll <= 10>>
<<set _enemies to $enemy.raider>>
<<elseif _roll <= 20>>
<<set _enemies to $enemy.stalker>>
<<elseif _roll <= 30>>
<<set _enemies to $enemy.sniper>>
<<elseif _roll <= 40>>
<<set _enemies to $enemy.scavengergroup>>
<<elseif _roll <= 50>>
<<set _enemies to $enemy.vermin>>
<<elseif _roll <= 60>>
<<set _enemies to $enemy.cinder>>
<<elseif _roll <= 70>>
<<set _enemies to $enemy.cutter>>
<<elseif _roll <= 80>>
<<set _enemies to $enemy.scrapper>>
<<elseif _roll <= 90>>
<<set _enemies to $enemy.flagellant>>
<<elseif _roll <= 100>>
<<set _enemies to $enemy.wretch>>
<</if>>
<</if>>
<<set $currEnemies to _enemies>>
<<if ndef _damageControl>><<set _damageControl to $currEnemies.hp>><</if>><</silent>><</widget>><<widget "radCalc">><<silent>><<nobr>>
<<set $rad = 0 +
(setup.gear[$equipped.head].rad ?? 0) +
(setup.gear[$equipped.center].rad ?? 0) +
(setup.gear[$equipped.foot].rad ?? 0)>>
<<set $player.apMax = 5 +
(setup.gear[$equipped.head].ap ?? 0) +
(setup.gear[$equipped.center].ap ?? 0) +
(setup.gear[$equipped.foot].ap ?? 0)>>
<<if $steppedOutside is false>>
<<set $player.ap = 5 +
(setup.gear[$equipped.head].ap ?? 0) +
(setup.gear[$equipped.center].ap ?? 0) +
(setup.gear[$equipped.foot].ap ?? 0)>>
<</if>>
<<set $player.hpMax = 75 +
(setup.gear[$equipped.head].gHP ?? 0) +
(setup.gear[$equipped.center].gHP ?? 0) +
(setup.gear[$equipped.foot].gHP ?? 0)>>
<<if $steppedOutside is false>>
<<set $player.hp = 75 +
(setup.gear[$equipped.head].gHP ?? 0) +
(setup.gear[$equipped.center].gHP ?? 0) +
(setup.gear[$equipped.foot].gHP ?? 0)>>
<</if>>
<<set $dmgMin = 0 +
(setup.gear[$equipped.primary].dmgMin ?? 0) +
(setup.gear[$equipped.secondary].dmgMin ?? 0) +
(setup.gear[$equipped.equipment].dmgMin ?? 0)>>
<<set $dmgMax = 0 +
(setup.gear[$equipped.primary].dmgMax ?? 0) +
(setup.gear[$equipped.secondary].dmgMax ?? 0) +
(setup.gear[$equipped.equipment].dmgMax ?? 0)>>
<</nobr>><</silent>><</widget>><<widget "deleteItem">>
<<run $inventory[_args[0]].deleteAll(_args[1])>>
<<run $gearStand[_args[0]].deleteAll(_args[1])>>
<<run $equipped[_args[0]] to "Empty">>
<</widget>>>>
<<widget "items">><<silent>>
<<set $satchelAmount to $inventory.scrap_metal + $inventory.electronics_components + $inventory.circuit_board + $inventory.leather + $inventory.canned_food + $inventory.water_bottle + $inventory.adhesive + $inventory.pipes + $inventory.wood + $inventory.gunpowder>>
<</silent>><</widget>>
<<widget "equipGear">><<silent>>
<<set $equipped[_args[0]] to _args[1]>>
<<set $inventory[_args[0]].pushUnique(_args[1])>>
<</silent>><</widget>>
/* <<equipGear foot raiderBoots>> */
<<widget "pickupGear">><<silent>>
<<set $inventory[_args[0]].pushUnique(_args[1])>>
<</silent>><</widget>>
/* <<pickupGear foot raiderBoots>> */<<widget "masturbate">>\
<<if $player.masturbated lt 4>><<if $player.corruption gte _args[1] && $player.arousal gte _args[0]>>\
<<link [[Fuck yourself (0:20)|_args[4]]]>><<addmins 20>><</link>>
<<elseif $player.corruption gte _args[2] && $player.arousal gte _args[0]>>\
<<link [[Play with yourself (0:20)|_args[4]]]>><<addmins 20>><</link>>
<<elseif $player.corruption gte _args[3] && $player.arousal gte _args[0]>>\
<<link [[Masturbate (0:20)|_args[4]]]>><<addmins 20>><</link>>
<<elseif $player.corruption lte _args[3]>>\
You're too pure to masturbate.
<<elseif $player.arousal lt _args[0]>>\
You're not aroused enough to masturbate.
<</if>><<else>>\
@@.red;Fuck yourself@@ <em>(You should wait a bit. Your @@.you;pussy@@ is all red and sore.)</em>
<</if>><</widget>>
/*
<<masturbate 20 249 149 0 passageName>>
<<masturbate AROUSAL HIGHCORRUPT MIDCORRUPT LOWCORRUPT LOCATION>>
*/<<widget "motherHandler">><<silent>>
/* --- */
---- DYNAMO ----
/* TRIED IN PASSAGEREADY
<<showerOcc>>
<<couchRelax>>
<<kitchenTimes>>
*/
---- ITEM HANDLING ----
<<items>>
---- NIGHT MANAGEMENT ----
<<if $newDayStarted is true>>
<<set $newDayStarted = false>>
<<Sleep>>
<</if>>
<<if $assignedReturned is true>>
<<set $assignedReturned = false>>
<<handleAssigned>>
<</if>>
---- FATIGUE HANDLING ----
<<if $player.fatigue gte $player.fatigueMax>><<goto "passout">><</if>>
/* --- */
<</silent>><</widget>>
<<widget "childHandler">><<silent>>
---- DYNAMO ----
<<showerOcc>>
<<couchRelax>>
<<kitchenTimes>>
<</silent>><</widget>>/*
Date & Time Widget Setup
*/
<<set
/* This must be set to whatever the initial game date/time should be. */
$gameDate to new Date("2064-03-17T09:24Z"); /* Must use UTC time. */
>>
<<set
window.GameDays to [
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
];
window.GameMonths to [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
window.GameSeasons to [
"Winter", "Spring", "Summer", "Autumn"
];
>>
/*
Date & Time Advancement Widget Definitions
*/
/* Adds the specified number of minutes. */
<<widget "addmins">><<silent>>\
<<run $gameDate.setUTCMinutes($gameDate.getUTCMinutes() + _args[0])>>
<<set $player.minutesPassed += _args[0]>>
<<if $player.sleeping is false>><<set $player.timeAwake += _args[0]>>
<<set $player.fatigue += _args[0]>>
<<set $player.hunger += (_args[0] / 10)>>
<</if>>
<<if $player.minutesPassed gte 120>>
<<set $player.minutesPassed -= 120>>
<<setMasturbated -1>>
<</if>>
<<for _i to 0; _i < _args[0]; _i++>>
<<seedGrowth>>
<</for>>
<<replace "#datetime">><<datetime>><</replace>>
\<</silent>><</widget>>
/* Adds the specified number of hours.
<<widget "addhours">>\
<<run $gameDate.setUTCHours($gameDate.getUTCHours() + _args[0])>>\
<<replace "#datetime">><<datetime>><</replace>>\
<</widget>>
*/
/* Adds the specified number of days.
<<widget "adddays">>\
<<run $gameDate.setUTCHours($gameDate.getUTCHours() + _args[0] * 24)>>\
<<replace "#datetime">><<datetime>><</replace>>\
<</widget>>
*/
/* Handles player sleep */
<<widget "sleepHours">><<silent>>
<<set _sleephour to _args[0]>>
<<for _sleephour gte 1 or _sleephour lte -1>>
<<set _sleephour -= 1>>
<<set $player.sleeping to true>>
<<addmins 60>>
<<setFatigue -250>>
<<set $player.sleeping to false>>
<</for>>
<</silent>><</widget>>
<<widget "sleepUntilRested">>
<<set _maxSleepMinutes = 600>>
<<set _fatiguePerMinute = 2000 / _maxSleepMinutes>> <!-- ~3.333 -->
<<set _minutesNeeded = Math.ceil($player.fatigue / _fatiguePerMinute)>>
<<set _minutesSlept = Math.min(_minutesNeeded, _maxSleepMinutes)>>
<<set $player.fatigue = Math.max(0, $player.fatigue - (_fatiguePerMinute * _minutesSlept))>>
<<run $gameDate.setUTCMinutes($gameDate.getUTCMinutes() + _minutesSlept)>>
<<replace "#datetime">><<datetime>><</replace>>
<</widget>>
<<widget "countSleep">><<silent>>
<<set _wakeUp1 = ((($gameDate.getUTCHours() + 8) % 24).toString().padStart(2, '0')) + ":" + ($gameDate.getUTCMinutes().toString().padStart(2, '0'))>>
<<set _wakeUp2 = ((($gameDate.getUTCHours() + 4) % 24).toString().padStart(2, '0')) + ":" + ($gameDate.getUTCMinutes().toString().padStart(2, '0'))>>
<<set _wakeUp3 = ((($gameDate.getUTCHours() + 2) % 24).toString().padStart(2, '0')) + ":" + ($gameDate.getUTCMinutes().toString().padStart(2, '0'))>>
<</silent>><</widget>>
/* SET TIME FOR DEV */
<<widget "settime">>
<<run $gameDate.setUTCMinutes($args[0])>>
<<run $gameDate.setUTCHours($args[1] + ($args[2] * 24))>>
<<replace "#datetime">><<datetime>><</replace>>
<</widget>>
/*
Date & Time Printing Widget Definitions
*/
/* Prints the current date ("{weekday}, {month} {day}, {year}"). */
<<widget "date">>\
<<print String.format("{0}, {1} {2}, {3}",
GameDays[$gameDate.getUTCDay()],
GameMonths[$gameDate.getUTCMonth()],
$gameDate.getUTCDate(),
$gameDate.getUTCFullYear()
)>>\
<</widget>>
/* Prints the current time (12H).
<<widget "time12h">>\
<<if $gameDate.getUTCHours() eq 0>>\
12\
<<elseif $gameDate.getUTCHours() gt 12>>\
<<print $gameDate.getUTCHours() - 12>>\
<<else>>\
<<print $gameDate.getUTCHours()>>\
<</if>>:\
<<if $gameDate.getUTCMinutes() lt 10>>0<</if>><<print $gameDate.getUTCMinutes()>> \
<<if $gameDate.getUTCHours() gte 12>>PM<<else>>AM<</if>>\
<</widget>>
*/
/* Prints the current time (24H). */
<<widget "time24h">>\
<<if $gameDate.getUTCHours() lt 10>>0<</if>><<print $gameDate.getUTCHours()>>:\
<<if $gameDate.getUTCMinutes() lt 10>>0<</if>><<print $gameDate.getUTCMinutes()>>\
<</widget>>
/* Prints the current date and time (12H). */
<<widget "datetime">><<date>> | <<time24h>><</widget>>
/*''Date:'' <<date>>
''Time:'' <<time24h>> (24H)
''Both:'' <<datetime>> (24H)
Set hours:
<<if $gameDate.getUTCHours() gte 23 and $gameDate.getUTCHours() lte 6>>Open<<else>>Closed<</if>>
<<if $gameDate.getUTCHours() gte 8 and $gameDate.getUTCHours() lte 17>>DAY ACCESS<<else>>CLOSED AT NIGHT<</if>>
*/
/* Adds 5 minutes. */
/*<<link "5">><<addmins 5>><</link>>
/* Adds 5 hours. */
/*<<link "hours">><<addhours 5>><</link>>
/* Adds 5 days. */
/*<<link "days">><<adddays 5>><</link>>
[[timeTest]]
*/<<widget "questPorter">><<silent>>
<<if $ongoingQuests.includes("solar")>><<goto "solarQuestHouse">><</if>>
<</silent>><</widget>><<widget "resetEnemy">><<silent>>
<<set $enemy = {
scavenger: { name: "Scavenger", desc: "A lone wanderer stripped of everything but the will to survive.", hp: 60, dmgMin: 5, dmgMax: 12 },
scavengergroup: { name: "Scavenger Group", desc: "A clutch of broken souls banded together, moving like carrion birds.", hp: 180, dmgMin: 15, dmgMax: 25 },
sniper: { name: "Bandit Sniper", desc: "A gaunt figure with a steady rifle and steadier nerves.", hp: 50, dmgMin: 15, dmgMax: 25 },
stalker: { name: "Stalker", desc: "They move like a ghost, face half-hidden under grime.", hp: 70, dmgMin: 8, dmgMax: 18 },
raider: { name: "Raider", desc: "A scarred brawler wrapped in scavenged armor, veins pulsing with violence.", hp: 80, dmgMin: 10, dmgMax: 20 },
vermin: { name: "Swarm of Vermin", desc: "Not animals, but people - wasted, crawling, moving as one mass of shrieking, broken bodies.", hp: 250, dmgMin: 3, dmgMax: 6 },
cinder: { name: "Cinder", desc: "Gaunt, black-lipped from ash, muttering half-prayers as they clutch burned relics.", hp: 80, dmgMin: 15, dmgMax: 28 },
cutter: { name: "Cutter", desc: "Wrapped in filthy bandages, knives dangling like charms. They fight to watch you bleed.", hp: 100, dmgMin: 18, dmgMax: 35 },
scrapper: { name: "Scrapper", desc: "Covered in rattling plates of junk metal, wielding crude welded tools.", hp: 135, dmgMin: 15, dmgMax: 28 },
flagellant: { name: "Flagellant", desc: "Barefoot and scarred, whispering ‘confessions' with every swing.", hp: 95, dmgMin: 10, dmgMax: 35 },
wretch: { name: "Wretch", desc: "Crowned with garbage, draped in plastic bags - a cruel monarch of filth.", hp: 160, dmgMin: 12, dmgMax: 25 }
}>>
<</silent>><</widget>><<widget "safezones">><<nobr>>
<<if $quest.safezones.zonesUndiscovered.includes("Point Guard")>>
<br>The closest safezone is 20km away. It would take the entire day to walk that far.<br>
<<if $gameDate.getUTCHours() gte 4 && $gameDate.getUTCHours() lte 9>><<link [[Walk north (??:??)|pointGuardInit]]>><</link>><br><<else>>It's too late to walk that far. You should get some rest before doing that.<br><</if>><</if>>
<<if $quest.safezones.zonesDiscovered.includes("Point Guard") && $vehicles.motorcycle.status is "broken">><<if $gameDate.getUTCHours() gte 4 && $gameDate.getUTCHours() lte 15>><br><<link [[Go to Point Guard (5:00)|pointGuard]]>><<addmins 300>><</link>><br><<else>>It's too late to walk that far. You should get some rest before doing that.<br><</if>><</if>>
<<if $quest.safezones.zonesUndiscovered.includes("Checkpoint Zero") && $quest.safezones.zonesDiscovered.includes("Point Guard")>><<if $vehicles.motorcycle.location is "Outside" && $vehicles.motorcycle.fuel gte 1 && $vehicles.motorcycle.status is "fixed">><br>Next stop, Checkpoint Zero. Or as they call it there, The Higlands. 50km west.<br>
[[Go to Checkpoint Zero|checkpointZeroInit]]<br>
<<elseif $vehicles.motorcycle.status is "fixed" && $vehicles.motorcycle.location isnot "Outside">><br>Your Café Racer is not here. It is at $vehicles.motorcycle.location.<br>
<<elseif $vehicles.motorcycle.fuel lt 1>><br>There's no fuel on your Café Racer. Refuel it.<br><</if>><</if>>
<<if $quest.safezones.zonesUndiscovered.includes("First Point") && $quest.safezones.zonesDiscovered.includes("Checkpoint Zero")>><<if $vehicles.motorcycle.location is "Outside" && $vehicles.motorcycle.fuel gte 1 && $vehicles.motorcycle.status is "fixed">><br>First Point, an established community. You should check it out as soon as you can.<br>
[[Go to First Point|firstPointInit]]<br>
<<elseif $vehicles.motorcycle.status is "fixed" && $vehicles.motorcycle.location isnot "Outside">><br>Your Café Racer is not here. It is at $vehicles.motorcycle.location.<br>
<<elseif $vehicles.motorcycle.fuel lt 1>><br>There's no fuel on your Café Racer. Refuel it.<br><</if>><</if>>
<<if $quest.safezones.zonesUndiscovered.includes("Foxtrot") && $quest.safezones.zonesDiscovered.includes("First Point")>><<if $vehicles.motorcycle.location is "Outside" && $vehicles.motorcycle.fuel gte 1 && $vehicles.motorcycle.status is "fixed">><br>Last stop. Foxtrot. This is almost a thriving city. It is also furthest away. This is going to take some time. And fuel. Stock up.<br>
[[Go to Foxtrot|foxtrotInit]]<br>
<<elseif $vehicles.motorcycle.status is "fixed" && $vehicles.motorcycle.location isnot "Outside">><br>Your Café Racer is not here. It is at $vehicles.motorcycle.location.<br>
<<elseif $vehicles.motorcycle.fuel lt 1>><br>There's no fuel on your Café Racer. Refuel it.<br><</if>><</if>>
<</nobr>><</widget>><<widget "Sleep">>
\<<silent>>
<<script>>Save.autosave.save("You toss and turn.")<</script>>
<<set $day += 1>>
/* DYNAMO */
<<dynamicCouchTimes>>
<<dynamicKitchenTimes>>
/* MAIN */
<<set $questDays += 1>>
<<set $player.ap to $player.apMax>>
<<set $player.hp to $player.hpMax>>
<<set $player.hasEaten to false>>
<<set $player.hasShower to false>>
<<set $player.booksReadToday to 0>>
<<set $player.masturbated to 0>>
<<set $steppedOutside to false>>
<<set $lastShoweredNPC = "">>
<<if $player.daysSinceWorkout lte 0>>
<<setStrength -1>>
<<setCardio -1>>
<<elseif $player.daysSinceWorkout gte 1>>
<<set $player.daysSinceWorkout -= 1>>
<</if>>
<<set $player.timesWO to 0>>
<<set $player.corruption += Math.round($player.lust / 10)>>
<<set $player.arousal to Math.clamp($player.arousal += $player.lust, 0, 100)>>
<<set $player.lust to Math.round($player.lust / 2)>>
<<set $player.inhibition -= Math.round($player.lust / 10)>>
/* HOUSE STATS */
<<if $residents.length is 0>>
<<set $emptyHouseCheck to false>>
<<elseif $residents.length gte 1 && def $emptyHouseCheck>>
<<unset $emptyHouseCheck>>
<</if>>
<<if $residents.length gte 2>>
<<set $fullHouseCheck to false>>
<</if>>
<<if $day % 3 is 0>>
<<set $housePatch to false>>
<</if>>
/* CHARACTERS */
<<set $carl.special to false>>
<<setCarl -1>>
<<set $anna.special to false>>
<<setAnna -1>>
<<set $joey.special to false>>
<<setJoey -1>>
<<set $matthew.special to false>>
<<setMatt -1>>
<<set $jeniffer.special to false>>
<<setJen 1->>
/* BI-CHARACTERS */
/* SURIK */
<<suriktrade>>
<<surikMerchant>>
<<set $conf1 to false, $conf2 to false, $conf3 to false, $conf4 to false, $conf5 to false>>
/* HUBS */
<<set $hubs.waterTower.explored to 0>>
<<set $hubs.relayZone.explored to 0>>
<<set $hubs.chapel.explored to 0>>
<<set $hubs.waterTower.water to random(1,3)>>
/* CASINO */
<<set $casinoFS to false>>
<<set $casinoMS to false>>
<<set $baseSearch to false>>
<<set _amountAmm9x18 = random(0,3), $mm9x18Amount to _amountAmm9x18>>
<<set _amountAmm762 = random(0,3), $mm762Amount to _amountAmm762>>
/* HOSPITAL */
<<set _amountBan = random(0,10), $bandageAmount to _amountBan>>
<<set _amountMed = random(0,5), $medkitAmount to _amountMed>>
<<set _amountAdh = random(0,10), $adhesiveAmount to _amountAdh>>
<<set _amountCir = random(0,3), $circuitAmount to _amountCir>>
/* MALL */
<<set _amountCan = random(0,10), $foodAmountMall to _amountCan>>
<<set _amountLeather = random(0,5), $leatherAmount to _amountLeather>>
<<set _amountLeather = random(0,5), $leatherAmount1 to _amountLeather>>
/* METRO */
<<set _amountCan = random(0,10), $foodAmountMetro to _amountCan>>
/* BIOLAB */
<<set _amountBan = random(0,10), $bandageAmountBIO to _amountBan>>
<<set _amountEC = random(0,10), $electronicsComponentsBIO to _amountEC>>
<<set _amountCir = random(0,3), $circuitAmountBIO to _amountCir>>
/* LANDFILL */
<<if visited("landfill") gt 0>>
<<set $heapScrap to 0>>
<<set $heapDug to 0>>
<<set $truckScrap to 0>>
<</if>>
/* Freight Yard */
<<if visited("freightYard") gt 0>>
<<set $loadrampForklift to false>>
<<set $mechabyForklift to false>>
<</if>>
/* QUESTS */
<<questables>>
<<if $toskaDeadWait gte 1>><<set $toskaDeadWait -= 1>><</if>>
<<if $brotherRel gt 0>><<set $brotherRel -= 1>><</if>>
<<if $brotherRel lte 0>><<set $joey.isRes to true>><<unset $brotherRel>><</if>>
<<set $nightCheck to true>>
\<</silent>>
<</widget>>PRIMARY WEAPON
<<widget "primaryToska">><<nobr>>
<<if $equipped.primary isnot "Empty" && setup.gear[$equipped.primary].ammo gte 1>>
<<link `"Shoot <strong>" + setup.gear[$equipped.primary].name + "</strong> - <strong>" + setup.gear[$equipped.primary].ammo + "x</strong>"`>>
<<set setup.gear[$equipped.primary].ammo -= 1>>
<<switch random(1,6)>><<case 1 2 3>><<set _damage = random(setup.gear[$equipped.primary].dmgMin, setup.gear[$equipped.primary].dmgMax)>>
<<case 4 5>><<set _damage to 0>><<case 6>><<set _damage to Math.round(setup.gear[$equipped.primary].dmgMax * $playerCrit)>><</switch>>
<<set $toska.hp to Math.clamp($toska.hp - _damage, 0, 999)>>
<<switch random(1,6)>><<case 1 2 3>><<set _enemyDamage = random($toska.dmgMin, $toska.dmgMax)>><<case 4 5>><<set _enemyDamage to 0>><<case 6>><<set _enemyDamage to Math.round($toska.dmgMax * 1.5)>><</switch>>
<<setHP `-1 * _enemyDamage`>>
<<updatebar>><<redo "combat">>
<<replace "#enemyChatter">><<toskaChatter>><</replace>>
<<replace "#combatActionsToska">><<combatActionsToska>><</replace>>
<</link>>
<<elseif $equipped.primary is "Empty">>You don't have a <span style="color:red">firearm</span> equipped!
<<link "Throw dirt!">>
<<switch random(1,6)>><<case 1 2 3>><<set _damage = random(2, 3)>>
<<case 4 5>><<set _damage to 0>><<case 6>><<set _damage to Math.round(2 * $playerCrit)>><</switch>>
<<set $toska.hp to Math.clamp($toska.hp - _damage, 0, 999)>>
<<switch random(1,6)>><<case 1 2 3>><<set _enemyDamage = random($toska.dmgMin, $toska.dmgMax)>><<case 4 5>><<set _enemyDamage to 0>><<case 6>><<set _enemyDamage to Math.round($toska.dmgMax * 1.5)>><</switch>>
<<setHP `-1 * _enemyDamage`>>
<<updatebar>><<redo "combat">>
<<replace "#enemyChatter">><<toskaChatter>><</replace>>
<<replace "#combatActionsToska">><<combatActionsToska>><</replace>>
<</link>>
<<elseif setup.gear[$equipped.primary].ammo is 0>>
You don't have any ammunition left in the chamber.
<<set _ammoType to setup.gear[$equipped.primary].ammoType>>
<<if $inventory[_ammoType] gte 1>>
<span style="color:green"> You have some bullets in your satchel!</span><br>
<<link "Reload">>
<<set _ammoMax to setup.gear[$equipped.primary].ammoMax>>
<<if $inventory[_ammoType] gte _ammoMax>>
<<set setup.gear[$equipped.primary].ammo to _ammoMax>>
<<set $inventory[_ammoType] -= _ammoMax>>
<<else>>
<<set setup.gear[$equipped.primary].ammo to $inventory[_ammoType]>>
<<set $inventory[_ammoType] -= $inventory[_ammoType]>>
<</if>><<redo "combat">>
<</link>>
<</if>>
<</if>>
<</nobr>><</widget>>
SECONDARY WEAPON
<<widget "secondaryToska">><<nobr>>
<<if $equipped.secondary isnot "Empty">>
<<if setup.gear[$equipped.secondary].type2 is "hit">>
<<set _linkName to "Hit with <strong>" + setup.gear[$equipped.secondary].name + "</strong>">>
<<elseif setup.gear[$equipped.secondary].type2 is "slash">>
<<set _linkName to "Slash with <strong>" + setup.gear[$equipped.secondary].name + "</strong>">>
<<elseif setup.gear[$equipped.secondary].type2 is "stab">>
<<set _linkName to "Stab with <strong>" + setup.gear[$equipped.secondary].name + "</strong>">>
<</if>>
<<link _linkName>>
<<switch random(1,6)>><<case 1 2 3>><<set _damage = random(setup.gear[$equipped.secondary].dmgMin, setup.gear[$equipped.secondary].dmgMax)>>
<<case 4 5>><<set _damage to 0>><<case 6>><<set _damage to Math.round(setup.gear[$equipped.secondary].dmgMax * $playerCrit)>><</switch>>
<<set $toska.hp to Math.clamp($toska.hp - _damage, 0, 999)>>
<<switch random(1,6)>><<case 1 2 3>><<set _enemyDamage = random($toska.dmgMin, $toska.dmgMax)>><<case 4 5>><<set _enemyDamage to 0>><<case 6>><<set _enemyDamage to Math.round($toska.dmgMax * 1.5)>><</switch>>
<<setHP `-1 * _enemyDamage`>>
<<updatebar>><<redo "combat">>
<<replace "#enemyChatter">><<toskaChatter>><</replace>>
<<replace "#combatActionsToska">><<combatActionsToska>><</replace>>
<</link>><<else>>You do not have a <span style="color:red">secondary weapon</span> equipped!
<<link "Punch!">>
<<switch random(1,6)>><<case 1 2 3>><<set _damage = random(1, 2)>>
<<case 4 5>><<set _damage to 0>><<case 6>><<set _damage to Math.round(2 * $playerCrit)>><</switch>>
<<set $toska.hp to Math.clamp($toska.hp - _damage, 0, 999)>>
<<switch random(1,6)>><<case 1 2 3>><<set _enemyDamage = random($toska.dmgMin, $toska.dmgMax)>><<case 4 5>><<set _enemyDamage to 0>><<case 6>><<set _enemyDamage to Math.round($toska.dmgMax * 1.5)>><</switch>>
<<setHP `-1 * _enemyDamage`>>
<<updatebar>><<redo "combat">>
<<replace "#enemyChatter">><<toskaChatter>><</replace>>
<<replace "#combatActionsToska">><<combatActionsToska>><</replace>>
<</link>><</if>>
<</nobr>><</widget>>
EQUIPMENT
<<widget "equipmentToska">><<nobr>>
<<linkreplace "Heal">><<if $inventory.medkit gte 1>><<linkreplace `"Heal - " + $inventory.medkit + " medkits"`>>You've healed <b><span style="color:green">setup.gear.medkit.heal HP</span></b>!<<set $inventory.medkit -= 1>><<setHP setup.gear.medkit.heal>><</linkreplace>><<else>>You do not have any medkits!<</if>><br>
<<if $inventory.bandages gte 1>><<linkreplace `"Heal - " + $inventory.bandages + " bandages"`>>You've healed <b><span style="color:green">setup.gear.bandages.heal HP</span></b>!<<set $inventory.bandages -= 1>><<setHP setup.gear.bandages.heal>><</linkreplace>><<else>>You do not have any bandages!<</if>><</linkreplace>>
<</nobr>><</widget>>
SURRENDER
<<widget "surrenderToska">><<nobr>>
[[Surrender|combatSurrenderToska]]
<</nobr>><</widget>>
DOUBLE KILL CONTROLLER
<<widget "doubleKillToska">><<silent>><<if $toska.hp lte 0 && $player.hp lte 0>><<setHP 1>><</if>><</silent>><</widget>>
TOSKA COMBAT ACTIONS
<<widget "combatActionsToska">><span class="icon-enemyHit"> <<if _damage gt setup.gear[$equipped.primary].dmgMax>><b>Critical damage</b>! You dealt <b>_damage</b> damage!<<else>><<if _damage gt 0>><<if $toska.hp lt _damageControl>>You dealt <b>_damage damage</b>!<<set _damageControl to $toska.hp>><</if>><<else>><i>You missed!</i><</if>><</if>></span>
<span class="icon-playerHit"> <<if _enemyDamage gt $toska.dmgMax>><span style="color:crimson"><b>Critical damage</b>! Enemy dealt <b>_enemyDamage</b> damage!</span><<else>><<if _enemyDamage gt 0>><span style="color:crimson">Enemy dealt <b>_enemyDamage damage</b>!</span><<else>><i>They missed!</i><</if>><</if>></span><br><</widget>>
TOSKA CHATTER
<<widget "toskaChatter">><span style="color:lightyellow"><span class="icon-enemyChatter"> <<switch random(1,10)>><<case 1>>Toska: You fucking wench!<<case 2>>Toska: Why'd you step foot in here? Why?<<case 3>>Toska: I didn't want to have to do this to you.<<case 4>>Toska: I hate you!<<case 5>>Toska: You weren't meant to see any of this...<<case 6>>Toska: You've brought this on your self.<<case 7>>Toska: You reminded me of my daughter...<<case 8>>Toska: Bitch!<<case 9>>Toska: Slut!<<case 10>>Toska: No one crosses me. No one!<</switch>></span><</widget>><<widget "toskaRP">>
\<<silent>>
<<set $toskaRP to Math.clamp($toskaRP + _args[0], -100, 100)>>
<</silent>>\
<</widget>>
<<widget "toskaQuestInit">><<if $toskaRP gte 40 && $period eq 6 && visited("station1Hum") is 0>><br>There's a strange humming sound coming from behind the gas station.
[[Investigate|station1Hum]]<br><</if>><</widget>>
<<widget "toskaQuest1">><<if $quest.toska.questProgress is 1>><br><br>[[Confront Toska about the door|toskaConfrontDoor]]<</if>><</widget>>
<<widget "toskaQuest2">><<if $quest.toska.questProgress is 2 && $period gte 4>><br>[[Investigate the door again|station1HumSelf]]
[[Wait for Toska|station1HumWait]]<br><</if>><</widget>>
<<widget "toskaQuest4">><<if $quest.toska.questProgress is 4 && $period gte 4>>
<br>[[Enter the workshop|station1Workshop]]<</if>><</widget>><<widget merchantExp>>
\<<silent>>
<<set $merchantExp to Math.clamp($merchantExp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget merchantLevel>>
\<<silent>>
<<if $merchantExp lte 24>>
<<set $merchantLevel to 1>>
<<elseif $merchantExp lte 49>>
<<set $merchantLevel to 2>>
<<elseif $merchantExp lte 74>>
<<set $merchantLevel to 3>>
<<elseif $merchantExp lte 99>>
<<set $merchantLevel to 4>>
<</if>>
<</silent>>\
<</widget>>
<<widget "tradeslist">>
\<<silent>>
<<if $merchantLevel is 1>><<set _chance_table = {
canned_food: 70,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 20,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 3*$scavMult,
}>><</if>>\
<<if $merchantLevel is 2>><<set _chance_table = {
canned_food: 60,
scrap_metal: 60,
water_bottle: 50,
leather: 30,
electronics_components: 25,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 5*$scavMult,
}>><</if>>\
<<if $merchantLevel is 3>><<set _chance_table = {
canned_food: 50,
scrap_metal: 50,
water_bottle: 40,
leather: 30,
electronics_components: 25,
circuit_board: 15*$scavMult,
adhesive: 30,
pipes: 10*$scavMult,
wood: 60,
gunpowder: 5*$scavMult,
}>><</if>>\
<<if $merchantLevel is 4>><<set _chance_table = {
canned_food: 50,
scrap_metal: 50,
water_bottle: 40,
leather: 30,
electronics_components: 30,
circuit_board: 20*$scavMult,
adhesive: 30,
pipes: 10*$scavMult,
wood: 40,
gunpowder: 7*$scavMult,
}>><</if>>\
<<set _item1 = setup.wrandom(_chance_table), _amountI1 = random(1,3)>>\
<<set _trade1 = setup.wrandom(_chance_table), _amountT1 = random(1,3)>>\
<<set _item2 = setup.wrandom(_chance_table), _amountI2 = random(1,3)>>\
<<set _trade2 = setup.wrandom(_chance_table), _amountT2 = random(1,3)>>\
<<set _item3 = setup.wrandom(_chance_table), _amountI3 = random(1,3)>>\
<<set _trade3 = setup.wrandom(_chance_table), _amountT3 = random(1,3)>>\
<<set _item4 = setup.wrandom(_chance_table), _amountI4 = random(1,3)>>\
<<set _trade4 = setup.wrandom(_chance_table), _amountT4 = random(1,3)>>\
<<set _item5 = setup.wrandom(_chance_table), _amountI5 = random(1,3)>>\
<<set _trade5 = setup.wrandom(_chance_table), _amountT5 = random(1,3)>>\
<</silent>>\
<</widget>>
/* SURIK */
<<widget surikExp>>
\<<silent>>
<<set $surikExp to Math.clamp($surikExp + _args[0], 0, 100)>>
<</silent>>\
<</widget>>
<<widget surikMerchant>>
\<<silent>>
<<if $surikExp lte 24>>
<<set $surikMerchant to 1>>
<<elseif $surikExp lte 49>>
<<set $surikMerchant to 2>>
<<elseif $surikExp lte 74>>
<<set $surikMerchant to 3>>
<<elseif $surikExp lte 99>>
<<set $surikMerchant to 4>>
<</if>>
<</silent>>\
<</widget>>
<<widget "suriktrade">>
\<<silent>>
<<if $surikMerchant is 1>><<set _chance_table = {
canned_food: 30,
scrap_metal: 60,
water_bottle: 40,
leather: 50,
electronics_components: 20,
circuit_board: 15*$scavMult,
adhesive: 30,
pipes: 7*$scavMult,
wood: 60,
gunpowder: 5*$scavMult,
}>><</if>>\
<<if $surikMerchant is 2>><<set _chance_table = {
canned_food: 20,
scrap_metal: 60,
water_bottle: 30,
leather: 30,
electronics_components: 25,
circuit_board: 10*$scavMult,
adhesive: 30,
pipes: 5*$scavMult,
wood: 60,
gunpowder: 5*$scavMult,
}>><</if>>\
<<if $surikMerchant is 3>><<set _chance_table = {
canned_food: 40,
scrap_metal: 50,
water_bottle: 20,
leather: 30,
electronics_components: 25,
circuit_board: 15*$scavMult,
adhesive: 30,
pipes: 10*$scavMult,
wood: 60,
gunpowder: 5*$scavMult,
}>><</if>>\
<<if $surikMerchant is 4>><<set _chance_table = {
canned_food: 50,
scrap_metal: 50,
water_bottle: 40,
leather: 30,
electronics_components: 30,
circuit_board: 20*$scavMult,
adhesive: 30,
pipes: 10*$scavMult,
wood: 40,
gunpowder: 20*$scavMult,
}>><</if>>\
<<set _item1 = setup.wrandom(_chance_table), _amountI1 = random(1,3)>>\
<<set _trade1 = setup.wrandom(_chance_table), _amountT1 = random(1,3)>>\
<<set _item2 = setup.wrandom(_chance_table), _amountI2 = random(1,3)>>\
<<set _trade2 = setup.wrandom(_chance_table), _amountT2 = random(1,3)>>\
<<set _item3 = setup.wrandom(_chance_table), _amountI3 = random(1,3)>>\
<<set _trade3 = setup.wrandom(_chance_table), _amountT3 = random(1,3)>>\
<<set _item4 = setup.wrandom(_chance_table), _amountI4 = random(1,3)>>\
<<set _trade4 = setup.wrandom(_chance_table), _amountT4 = random(1,3)>>\
<<set _item5 = setup.wrandom(_chance_table), _amountI5 = random(1,3)>>\
<<set _trade5 = setup.wrandom(_chance_table), _amountT5 = random(1,3)>>\
<</silent>>\
<</widget>>