Skip to content

Instantly share code, notes, and snippets.

@Fahrengeit
Created August 31, 2021 11:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fahrengeit/1e55cfe4ff0e7997eb251251513599cf to your computer and use it in GitHub Desktop.
Save Fahrengeit/1e55cfe4ff0e7997eb251251513599cf to your computer and use it in GitHub Desktop.
Ink source files for InkJam2021 – The Blackout by Fahrengeit
INCLUDE 1-Station.ink
INCLUDE Functions.ink
INCLUDE MedCabinet.ink
INCLUDE Kitchen.ink
INCLUDE ConferenceRoom.ink
INCLUDE Residential.ink
INCLUDE DirectorRoom.ink
INCLUDE Lab.ink
INCLUDE Timetable.ink
INCLUDE Ending.ink
INCLUDE Dinner.ink
LIST facts = MichaelDead, LabDoorBlasted, AngelaAngered, AngelaAccused, AngelaSaved, MailSeen, MailDeleted, ThinksHeDidIt, LunchDone, DocumentsFire, DocumentsScattered, ComputerUnlocked, ComputerBroken, SeenAllCameras, DeletedCameras, SeenCoat, FightHappened, TalkedAboutBlackouts, AngelaHarassed, AntonPills, CoatHidden, CoatPlanted, CoatReturned, WaitForDinner, AngelaKnows, AngelaLocked
LIST states = Online, Offline
LIST characters = Angela, Anton, Abraam, Daniel, Robert
LIST items = MasterKey, Gun, Lighter, Password, DrawerKey
LIST rooms = Lab, Med, Kitchen, Director, Conference, Residential
VAR remembered_room = ()
VAR actual_room = ()
VAR current_state = Online
VAR known_facts = (MichaelDead)
VAR happened_facts = (MichaelDead)
VAR inventory = ()
* [Start the game]
-> intro
=== intro ===
I felt an urge. An unknowable force was pushing me to take a step forward. For a minute or so, I stared drunkenly down the barely lit by the cheap lamps corridor, weighing the pros and cons of making a move. There were my friends, the people I'd thought of as friends – would I do the right thing if I leave them behind?
Though deep down, I've already knew that I had no choice.
* "Anton...["] I need to take a piss. Shall we finish when I get back?"
-
"Absolutely! Tvoyo zdorovye," man exclaimed cheerfully and tipped the contents of the glass inside.
I waved my hand and staggered toward my quarters. Halfway there I was stopped by a familiar image. It was unmistakable: an old leather jacket. It used to be in fashion some time ago.
* "Gibson?["] We thought you'd gone to bed. Michael!"
-
But the director ignored the shouts and continued walking forward.
* "Are you lost?"
* "Rooms are the other way!"
-
Once again without an answer, I turned from my previous route and followed him. That would be a bad thing if...
* [Open my eyes] -> awakening
= awakening
I opened my eyes and immediately felt a sharp headache: the hangover wasn't long in coming.
* Someday I'll quit drinking.
* But it was worth it.
-
Yesterday was a good day: we finished the first stage of development and dug the shaft to the deposit. The next team will bring in additional equipment, lower the pressure, and ramp it up.
Every new planet is always a challenge – and you can call it a small miracle when it ends without any adventures. And so it was worth celebrating.
In a few days, ships with a full crew were due to arrive from Earth to turn the mining to full production, but in the meantime you could in a good conscience take the day off.
* Fifteen minutes later[...] I heard a knock on the door and a woman's voice
-
"Robert."
* "Yes, I'm almost done[."]," I exclaimed, running razor across my cheek.
-
"It's an urgent matter, Robert."
I quickly rinsed off the rest of the foam, wiped my face with a towel, and walked over to the uniform. It smelled like alcohol, but I couldn't expect a fresh replacement until tomorrow.
* On the way out of the cabin[...] Ange, Angela Trevino, our geologist, was waiting for me.
-
She was a great specialist but that didn't help: Michael, our director, had never had so many fights with his subordinates as he did with Angela. I don't know what they were fighting about, though Angela... really isn't the easiest person to talk to.
* We didn't get along either.
-
But something was wrong now. Ange's face reflected an unconcealed horror.
* "What happened?"
-
"Let's go. There's... Let's go."
I knew immediately where we were going: to the descent into the mine. Since only poisonous air awaited us outside the walls of the station, the mine was also developed inside these walls.
* "You didn't come in yesterday[."]," I remembered.
"I don't see much point in getting drunk before work is done," Angela replied sharply.
* "You look lively[."]," I remarked.
"Do you want to hear a secret? Try not getting drunk all night," Angela replied sharply.
-
"You know, you definitely need to relax."
Ange ignored the advice.
* [Get to the shaft]
-
We went out into the uninhabited part of the station. The spacious room was crammed with parts of machines that would be used in the mine in the future. A massive hangar door constrained the space to the left. On the opposite there was a gaping hole in the shaft.
A portion of the precipice was occupied by a passenger elevator, and the rest of the space was blocked off by temporary construction barriers. A permanent cargo elevator should have been installed here, but its delivery was delayed.
We walked to the elevator and entered the cabin. I pressed the button automatically.
* "So what happened?"
-
"You'll see soon"
- (elevator_talk)
{elevator_talk > 3: -> death_scene}
* "Is there something wrong with the mine?"
Angela shook her head in response.
* "Someone stole our deposits?"
Angela looked at me reproachfully, hoping I would die of shame.
* (lucky_guess){elevator_talk > 2}"Did someone get so drunk[?"] last night that he collapsed in a shaft?"
"Can you shut up, please?"
She refused to answer my following questions. -> death_scene
* "This isn't the right planet[."], is it?"
Angela was silent. I must have guessed.
* (flirt) {elevator_talk > 2} "You wanted to be alone with me?"
"Oh, wrong one. Definitely wrong one."
"What?"
"Nothing."
* {elevator_talk > 3}"How much further to go?"
Angela asked herself the same question.
- -> elevator_talk
= death_scene
Eventually, the cabin descended to the bottom of the mine. The full team was already there: Anton Bezrukov, our good-natured doctor, a couple of workers - the Saul brothers, Abraham and Daniel - and...
* "Where is Michael?"
-
~ known_facts += MichaelDead
The doctor gently lifted a piece of dirty construction tarp that was covering something on the ground. Damn it! How can you unsee this?
Under the tarp there was a mutilated body. With crushed, twisted limbs.
The remains of his head in a swirl of bits of flesh that looked like human brains lied around. Only torn skin and a soiled uniform held everything together. The blood had dripped into unbroken grooves on the ground and dried.
* "What the fuck is this?"
-
"I'm willing to assume it's Mr. Gibson," Anton replied.
- (how)
* "Is that so?"
"I'm not a coroner, of course, but he has his initials on the sleeve."
Doctors and their sense of humor.
-> how
* "How?"
-
{lucky_guess: "You said it yourself: looks like someone had too much to drink last night," | "I'm not going to say anything, but it looks like alcohol does kill after all,"} Angela pronounced her verdict.
Angela was shaking. She looked at the tarp like she was mesmerized.
* "Impossible.["] Fence should have stopped that."
* "It's possible.["] But you'd have to try hard to fall over the fence."
- "We shouldn't rule out the other option," Daniel noted grimly, who, along with his brother, remained on the sidelines.
"Which one?" Ange asked with interest.
"Someone helped him," Abraham finished.
I swallowed nervously, blinked, and...
* [Open the eyes]
-
... opened my eyes in the cabin. A headache was awful. Damn that hangover. There was something right in Angela's words: I really should drink less. Or should I drink more?
"What do you think, Robert?" Anton asked. Only the two of us went up: the others didn't dare go into the same cabin?
* "That I need a drink."
But not tonight, Ange. Not tonight.
"I can help with that.
* "That there's some devilry happening."
"Devilry indeed.
* "That it's time for me to wake up."
"I hear you, friend.
- <> But something still needs to be done about Michael."
"The main crew is already on its way. I could contact them and tell that Michael is dead, but it wouldn't make much difference."
"That's not all I'm saying."
* "I don't understand."
* "You think that...?"
-
"We can't rule out that he was murdered, Robert. I don't want to be an alarmist, but if there's a murderer among us, it's a good idea to find out before he considers anyone else uncomfortable."
* "Sorry, but that's bullshit.
"Maybe it is, maybe it isn't. But really, it could have been anyone.
* "Who could have done it?"
"Fake an accident? Anybody.
- <> All it takes is a motive, and in such a competitive industry you're always in a conflict of interests."
* "Oh, even me?"[] I grinned.
-
"You're the one I'm most worried about. You've never came back yesterday, you know," Anton winked.
* "What are you talking about?"[] I was genuinely surprised.
-
"So don't waste your time."
* "And what do you suggest I do?"
-
The elevator beeped loudly upon arrival.
"Oh, you'll think of something. As befits an acting director," Anton saluted me jokingly and headed toward his office.
* [Leave the elevator]
-> station.map
=== station ===
// We start at 10:00 Earth Time
// time counts in minutes
VAR time = 0
VAR stateTime = 0
VAR changeStateAt = 25
-> map
= map
{current_state == Offline:
{shuffle:
- ~ actual_room = Med
~ change_time(2)
-> medcabinet
- ~ actual_room = Kitchen
~ change_time(2)
-> kitchen
- ~ actual_room = Conference
~ change_time(2)
-> conferenceroom
- ~ actual_room = Residential
~ change_time(2)
->residential
- ~ actual_room = Lab
~ change_time(2)
->lab
}
}
{time >= 180: -> dinner}
~ remembered_room = ()
{time > 120: {!And now I want to eat. When will we are going to have lunch?}}
+ {known_facts has WaitForDinner or time > 120} [Wait for a lunch]
-> dinner
+ [Medical office]
~ change_time(2)
~ remembered_room = Med
~ actual_room = Med
-> medcabinet
+ [Dining room]
~ change_time(2)
~ remembered_room = Kitchen
~ actual_room = Kitchen
-> kitchen
+ [Lab]
~ change_time(2)
~ remembered_room = Lab
~ actual_room = Lab
-> lab
+ [Conference room]
~ change_time(2)
~ remembered_room = Conference
~ actual_room = Conference
-> conferenceroom
+ [Residential module]
~ change_time(2)
~ remembered_room = Residential
~ actual_room = Residential
-> residential
+ [Wandering around]
~ change_time(2)
-> map
VAR InConference = ()
VAR HasDocuments = true
=== conferenceroom ===
= entrance
{current_state == Offline: -> station.map}
I went into the conference room.
{once: The big table was filled with project documents. There are drawings and deeds even on the chairs. Probably, I should gather it all up and give it to the incoming team. Or maybe they'll have to wait.}
In the corner there was a cooler with water and cups. On the right is the door to the director's office.
-> actions
= actions
{current_state == Offline:
{HasDocuments:
{inventory has Lighter:
-> documents_fire
- else:
-> documents_scattered
}
- else:
-> station.map
}
}
+ [Drink water]
{not cooler_off:
{documents_scattered or documents_fire: I definitely need a drink after that. But I'll limit myself to the cooler. | { I was thirsty, so I decided to pour myself some water. | I still can't get enough.}}
{change_time(2)}
- else:
I took a cup and then I looked at the cooler without the bottle. Right.
}
* (documents) {HasDocuments}[Inspect the documents]
Half the job is filling out the damn forms. It's a waste of time. All these piles of papers: drawings, applications, deeds. On top there is one of the latest papers: "Temporary Fence Installation Report."
Oh, that's right. If they'd sent us a freight elevator on time, we could have mounted it, and no need for fences after that. {known_facts has ThinksHeDidIt: Would that have stopped me? | Maybe Michael wouldn't have crashed, either. Although, if he had been pushed... would they have found another way?}
* * (work) [Sort the documents]
{lab.work_idea: So, should I listen to Angela? | Maybe a routine would help me take my mind off things.}
I took up the electrical folders. That's the most important thing. The mechanics are handled on the spot, but the electrical connections are much more complicated.
I went straight to work.
{change_time(20)}
* * [Leave that]
{change_time(3)}
* {documents and HasDocuments} [Sort the documents] -> work
+ {not HasDocuments and not (happened_facts has DocumentsFire)} [Collect the scattered documents]
I've collected the scattered documents.
{change_time(3)}
~ HasDocuments = true
+ [Go to the director's office]
~ remembered_room = Director
~ actual_room = Director
-> directorroom
+ [Leave the room]
-> station.map
- -> actions
= documents_fire
{change_time(5)}
~ happened_facts += DocumentsFire
~ HasDocuments = false
The documents {work: that I'd been sorting so hard before} were burning right in my hand, and I was holding Michael's lighter in the other.
I felt a sharp pain from the flames and dropped the burning papers on the floor. What if sensors will pick that up?
* [Stomp out the documents]
I stomped out the papers, trying to knock the flames out.
* (cooler_off)[Put out with water]
I ran up to the cooler and started to fill water in a cup for a long time... But I gave up, detached the water bottle, and started pouring water from it.
- The fire was put out. The crisis was averted.
{change_time(2)}
-> actions
= documents_scattered
{change_time(5)}
~ happened_facts += DocumentsScattered
~ known_facts += DocumentsScattered
~ HasDocuments = false
The documents {work: that I'd been sorting so hard before} were scattered all over the room. {documents_scattered > 1: Again? | {blackouts >= 3: What's next? I'll start a fire? | What happened here? Did I do this? }}
-> actions
=== dinner ===
"Around 1:00 p.m. we gathered in the dining room for lunch."
{happened_facts has AngelaKnows: -> angela_accuses}
{happened_facts has AngelaAngered or happened_facts has AngelaAccused: -> angela_investigation}
Everybody sat at the table. {happened_facts has WaitForDinner: Anton, seeing me, winked.}
* [Start lunch]
I poured myself a bowl of soup and sat down with the others. There was silence at first, but then we start talking. We tried to remember funny or nice things about Michael, and that togetherness lifted our spirits, at least for a moment.
I missed that.
After lunch, I went to my room to...
-> ending.fence
* {happened_facts has WaitForDinner} [Accuse Angela]
"I'm sorry to interrupt your lunch. But I think this needs to be dealt with right now. I think Angela killed Michael."
"What" Angela was angered.
"Robert told me everything. And I really think we should at least test the hypothesis. {known_facts has ComputerBroken: Someone smashed the terminal in Michael's office. |Somebody wiped the security tapes in Michael's office.|} Also, Robert saw Angela with the jacket yesterday."
"I don't have any jacket, Anton, what are you talking about?"
* * "It's easy to check."
-> check_angela_room
= angela_accuses
But the mood wasn't exactly lunchtime. When I walked into the room, the whole crew was staring at me.
"I told them what you told me," Angela began. "I don't know and I don't want to know why you did it, but we don't feel safe now."
{known_facts has TalkedAboutBlackouts: "I had to explain about your blackouts",|"I don't think you're healthy",} Anton added. "That's why we decided to put you under observation."
* "Agree."
- I had no reason to bicker: after all, I told Angela everything myself. They took me to the operating room, where they could both take tests and keep me under lock and key at the same time.
"I'm sorry, Robert. I hope it's really not your fault, but we have to find that out first," Anton said at last and locked the door behind me.
* [Get to sleep]
-> ending.lockdown_ending
= angela_investigation
VAR suspicion = 0
But the mood wasn't exactly lunchtime. When I walked into the room, the whole team was staring at me.
"Hello again, Robert."
"What's the meeting about?"
"After your visit, I couldn't get the thought out of my head. {happened_facts has AngelaAngered: You were very rude.} {lab.michael_letter: You went through someone else's mail. {happened_facts has AngelaSaved: The fact that you deleted those letters doesn't change anything.}} {happened_facts has AngelaAccused: You accused me, groundlessly, of killing Michael.} And I wondered, what if it really was a murder? What if you did it, Robert?
* "What a load of crap."
"We'll see that. <>
* "You won't prove anything."
"You know, who talks like that. <>
~ suspicion += 1
-
I'd like to take a look at the cameras. Shall we go for a walk?
"The borscht will get cold," Anton was upset.
* [Go to the director's office]
-> investigation_directorroom
= investigation_directorroom
{happened_facts has ComputerBroken:
There was still a terminal on the floor.
"How interesting. Who did this?" Angela asked ironically.
"Anyone could have done it."
"And it is a senseless act of aggression. The data can be easily restored. Anyway, we'll look somewhere else. Robert, will you take us to your room?"
~ suspicion += 1
-> goroom
}
On Michael's desk there was a terminal that had been turned off. {happened_facts has ComputerUnlocked: It most likely get locked back out over time.}
"That's right. Password."
* (password){inventory has Password or happened_facts has ComputerUnlocked} Qwerty.[] With a big Q.
Angela raised an eyebrow, entered into the terminal, and the screen lit up.
"Interesting."
"Michael told me."
~ suspicion += 1
* [Be silent]
"Look around," Daniel said suddenly."Michael is a forgetful man."
{inventory has Password:
But they had no chance, as the paper with the password was still in my pocket.
-> nopassword
- else:
"Found it!" Angela exclaimed. "Right under the table. Oh, Michael, what a disgusting password," she entered the password into the terminal, and the screen lit up.
}
-
"And, the moment of truth... {happened_facts has DeletedCameras: -> deleted_cameras | ->have_cameras}
- (nopassword)
"Well. Cameras are not for us today. Then we'll see somewhere else. Robert, will you walk us to your room?"
- (goroom)
* [Go to my room]
-> investigation_residential
= deleted_cameras
It's empty. Everything's deleted."
"Or not recorded," Anton pointed out. "Michael, on the other hand, wanted to avoid the fine for the freight elevator violation. The fine for not recording is much, much less."
"Hmm. Well, let's say. Then we'll look someplace else. Robert, will you walk us to your room?"
* [Go to my room]
-> investigation_residential
= have_cameras
Bingo. All the records are in place."
Angela clicked through the various cameras, but only one record interested her. Robert walks back down the corridors to the residential module, holding Michael's jacket in his hand.
"What do you say to that, Robert?"
{not (happened_facts has ThinksHeDidIt): "What's happening here?"}
* "I have no words."
* "I... I don't know what it is."
-
"There's only one way to find out. Robert, will you walk us to your room?"
~ suspicion += 3
* [Go to my room]
-> investigation_residential
= investigation_residential
We got to my room.
{happened_facts has CoatPlanted or happened_facts has CoatReturned: -> no_coat}
{happened_facts has CoatHidden: -> coat_hidden}
After a few minutes of search, Abraham exclaimed:
"Jacket!"
Indeed, there was Michael's jacket on the bathroom floor.{have_cameras: It all made sense.}"
~ suspicion += 3
"I think we can draw some conclusions from this."
* [Listen to conclusions]
-> conclusion
= no_coat
"But no matter how hard everyone tried, they couldn't find anything in my room."
* {suspicion <= 2 and happened_facts has CoatPlanted} "Do you want to check Angela's room?"
"Why?"
"I saw her going back to her room yesterday with the jacket. She was probably planning to hide it and then get rid of it.
"And why didn't you say anything?" Daniel asked suspiciously.
"I was waiting for the right moment."
* * [Go to Angela room]
-> check_angela_room
* "What were you hoping for, Angela?"
"I thought... never mind.{not have_cameras:"}
{have_cameras:
<>Камеры всё показали."
"That's not enough. For all we know, Michael could have asked him to take the jacket," Anton pointed out.
}
-
"I think we can draw some conclusions from this."
* [Listen to conclusions]
-> conclusion
= coat_hidden
Everyone was getting desperate to find anything, but then Abraham exclaimed:
"Aha, the jacket! Hidden under the bed."
~ suspicion += 4
He pulled out Michael's jacket and showed to everyone.
"Well. Trying to cover his tracks speaks volumes."
* [Listen to conclusions]
-> conclusion
= conclusion
We went back to the dining room, where a slightly cold lunch awaited everyone.
{
- suspicion <= 2:
"I apologize, Robert. I overreacted. This whole morning was filled with stress and headaches, and I just wasn't thinking straight," Angela said.
"It happens."
We sat down at the table and started...
-> ending.fence
- suspicion <= 5:
"I'm sure you had something to do with Michael's death," Angela accused me. "But I don't think that convinced everyone else as much."
"You're wrong, Angela. I don't know how to prove it to you, but you'll see."
"I hope so."
Angela filled her plate with soup and left the dining room. We sat down at the table and...
-> ending.fence
- suspicion >= 6:
"There's nothing more to talk about. We have all the facts," Angela concluded.
"I'm sorry, Robert. She's right," Anton confirmed. "There's too much pointing at you."
They decided to take me to the operating room, where they could both observe me and keep me under lock and key at the same time.
"I hope we get to the real truth," Anton said at last, and locked the door behind me.
* [Get to sleep]
-> ending.lockdown_ending
}
= check_angela_room
Angela confidently opened the door to her room.
"You see? Nothing."
But we started a thorough search of her room, and after a while Daniel exclaimed:
"The jacket! And it's under the bed."
He pulled out Michael's jacket and showed everyone.
{angela_accuses: "What does this mean. Angela tried to cover her tracks, but instead of remaining silent, she went on the offensive? Interesting tactic," Anton pointed out. "But in the end, direct evidence works much better. Right, Ange?" | "It all adds up," Anton said sadly. "Do you have something to say, Ange?"}
"This is some nonsense. Robert set me up!"
"That's not for us to decide."
* [Lock Angela]
-> angela_locked
= angela_locked
We took Angela to the operating room, where she could be both observed and kept under lock and key at the same time.
Everyone felt safe at that moment, although the only one who was safe was...
~ known_facts += AngelaLocked
~ happened_facts += AngelaLocked
-> ending.fence
VAR InDirector = ()
=== directorroom ===
= entrance
{stopping:
- It was Michael's office. A desk in the middle, two guest chairs beside it. Racks of papers were standing against the wall. The empty room of a nameless worker on a nameless planet.
There's a company poster on the wall, "Don't miss your opportunity." I think the motto is up for a change.
On Michael's desk there is a picture in a worn wooden frame: two men, the older one hugging the younger one. At the bottom is the caption, "The Gibson family". But, for the life of me, I don't see the resemblance.
- I went into Michael's office. {happened_facts has ComputerBroken: The terminal is still on the floor.}
}
-> actions
= actions
{current_state == Offline: {happened_facts has ComputerBroken or not display: -> station.map | -> broken_computer}}
* [Examine Michael's desk]
Cheap plastic desk on metal supports. "Our company doesn't skimp on the comfort of its employees," they said. The picture is staring right at me. {not (happened_facts has ComputerBroken):Terminal is {display: on| off}.}
{change_time(2)}
* (display){not (happened_facts has ComputerBroken)}[Turn on the terminal]
I reached for the screen, but it automatically lit up, and then the password window appeared.
* (guess_password){display and not (inventory has Password) and not (happened_facts has ComputerBroken)}[Guess the password]
Maybe I'll get lucky. I decided to pick a password... and I'm already stuck at the guessing stage. What is it? Wife's maiden name? Year of birth? I realized I didn't even have an answer to basic questions.
* * "qwerty"
Wrong.
* * * [Try other popular combinations.]
I tried different combinations of first and last name, went back to the list of the most insecure passwords in the world, which for some reason I had saved in my memory. And all in...
* * * * "Qwerty"
A short greeting lit up on the terminal, followed by the desktop screen. Standard wallpaper, standard applications. In the center of the screen there were two icons: mail and access to camera recordings.
Really?
~ known_facts += ComputerUnlocked
~ happened_facts += ComputerUnlocked
{change_time(4)}
* * * [Give up]
{change_time(1)}
* * [Give up]
{change_time(1)}
* (drawer)[Inspect the drawer]
I pulled the drawer. It was closed.
* (opened_drawer){drawer and inventory has DrawerKey} [Open the drawer]
I took the key out of my pocket and slid it into the table. It fit like a glove.
Inside was a key card and... A gun? Why would Michael have a gun here in the first place.
{change_time(1)}
* {opened_drawer} [Take the key card]
I picked up a card. I could only guess, but it seemed to be the master key that opened all the doors on the station.
~ inventory += MasterKey
{change_time(1)}
* {opened_drawer} [Pick up the gun]
I took the gun in my hand. It was heavy and scratched: the gun had seen many owners. Weighing the current situation, I decided that an extra tool for defense would come in handy.
~ inventory += Gun
{change_time(1)}
* {display and not (happened_facts has ComputerBroken) and not (happened_facts has ComputerUnlocked)}[Find the password]
Maybe the password was written down somewhere? Michael didn't have a good memory. But where? Hidden on a random page among those papers in the racks? {not opened_drawer: In a drawer? | There's nothing in a drawer.}
I collapsed into the guest chair. The headache kept coming back. I bent my knees and exhaled, but it didn't make me feel any better. I turned my head... and froze. There was something glued under the table.
* * [Reach out]
I reached out, fumbled for the edge of the paper, and pulled it toward me.
There was a piece of paper in the palm of my hand. "Qwerty". {guess_password: I was so close! | Really? Although, when you think about it, who would he protect his terminal from?}
~ inventory += Password
{change_time(3)}
* {inventory has Password and not (happened_facts has ComputerUnlocked) and not (happened_facts has ComputerBroken)} [Enter the password]
After entering a password a short greeting lit up on the terminal, followed by the desktop screen. Standard wallpaper, standard applications. In the center of the screen there were two icons: mail and access to camera recordings. Apparently, Michael didn't use the rest.
~ known_facts += ComputerUnlocked
~ happened_facts += ComputerUnlocked
* {happened_facts has ComputerUnlocked and not (happened_facts has ComputerBroken)} [Search the mail]
I decided to look in the mail and found hundreds of messages: threats from bosses at the head office, advertisements for hot tours, excuses from the purchasing department for failing to deliver the equipment, and an invitation to a conference next month. Nothing interesting. Except for the last message.
* * "From: Angela Trevino"
"I'm not going to let you ruin my career!" I snatched from the general flow of words.
The whole branch of messages was Michael's complaints about the geologist's subpar work. And Ange's responses between excuses and threats.
That might be helpful.
~ happened_facts += MailSeen
~ known_facts += MailSeen
* * * [Leave the messages]
With these messages you can decide that Ange has a motive. It's not enough, of course, but it's something.
* * * [Delete the messages]
If anyone sees these messages, they will quickly decide that Ange has a motive. It probably won't go anywhere without a direct evidence, but it's enough to build a certain reputation.
I decided to delete the messages.
~ happened_facts += MailDeleted
~ known_facts += MailDeleted
- - -
{change_time(8)}
* {happened_facts has ComputerUnlocked and not (happened_facts has ComputerBroken)} [View camera records]
I decided to look at the camera footage. Maybe it will shed some light on yesterday's events.
* * [Turn on dining room]
We drink and have fun. Without Angela, of course. Anton, Abraham, Dan, me, Michael. He finishes his bottle, then says goodbye and leaves the dining room.
{change_time(2)}
{current_state == Offline: {happened_facts has ComputerBroken: -> station.map | -> broken_computer}}
* * * [Residential module]
Michael reaches his door, holds out hand and freezes. Then he slowly turns around and walks away.
{change_time(2)}
{current_state == Offline: {happened_facts has ComputerBroken: -> station.map | -> broken_computer}}
* * * * [Corridors]
Michael walks toward the cargo bay and the shaft. I show up. He walks by. I follow him. I follow him?
{change_time(2)}
{current_state == Offline: {happened_facts has ComputerBroken: -> station.map | -> broken_computer}}
* * * * * [Cargo bay]
"Connection failure." Oh, right. Because we started the work without installing all the equipment - the freight elevator, that is - Michael decided it's pointless to record the violation, so he disabled the cameras. That's inconsiderate, yeah.
{change_time(2)}
{current_state == Offline: {happened_facts has ComputerBroken: -> station.map | -> broken_computer}}
* * * * * * [Back to corridors]
I turned on the previous recording and scrolled forward a bit. And there I was again, coming back from the cargo bay and moving toward the living module. Alone. With Michael's jacket in my hands. {known_facts has ThinksHeDidIt: Proves me right.}
~ known_facts += SeenAllCameras
~ happened_facts += SeenAllCameras
~ known_facts += ThinksHeDidIt
~ happened_facts += ThinksHeDidIt
{change_time(2)}
{current_state == Offline: {happened_facts has ComputerBroken: -> station.map | -> broken_computer}}
* {known_facts has SeenAllCameras} [Try to understand]
{known_facts has ThinksHeDidIt:
If I could still assume that the jacket had gotten to me by mistake, I had no doubts now. I connected with Michael's fate. I don't remember why, I don't remember how, but all the facts were there.
- else:
What do these tapes mean? That I killed Michael? But I don't remember why and I don't remember how, I couldn't have been that drunk... {blackouts >= 3: although, judging by these blackouts, I could have.}
}
The only question remains: What should I do? Admit my guilt?
{change_time(1)}
* {happened_facts has SeenAllCameras and not (happened_facts has DeletedCameras) and not (happened_facts has ComputerBroken)} [Erase camera records]
I erased the camera footage. It's obviously better this way. There is no clear answer in the video, but there are new questions. And it's better if those questions stay with me.
~ known_facts += DeletedCameras
~ happened_facts += DeletedCameras
{change_time(1)}
+ [Back to conference room]
~ remembered_room = Conference
~ actual_room = Conference
-> conferenceroom
+ [Back to corridors]
-> station.map
- -> actions
= broken_computer
{change_time(5)}
I saw a terminal lying under my feet with a broken screen.
{blackouts >= 3: What did terminal do? Only because it was on? | When did that happen? Did I do this? }
~ happened_facts += ComputerBroken
~ known_facts += ComputerBroken
-> actions
=== ending ===
= fence
I closed my eyes...
* ...and opened them.
-
Darkness. The darkness of the shaft. It is in front of me. I look into it.
My body leans forward. One foot is already behind the railing. I tensed up, and I moved backwards as hard as I could. The railing staggered, for a second I thought it wouldn't hold. But it creaked, my body twisted, and I fell to the cold iron floor. The impact was followed by a flash of pain in my head and back. I froze.
What was going on? How had I got here? Why was I trying to fall down the shaft? Same place Michael had fallen...
Damn it. Did he do it himself?
* [Get up]
My back was cramped with pain. My head felt like it was exploding. But I'm up, I'm on my feet. I had to warn the others.
I was moving toward the residential module when I heard shouting. It sounded like it was coming from the dining room. Who was that? Is that Abraham's voice? Is he asking someone to stop?
-
* [Go to the dining room]
There were utensils scattered on the floor. The maroon borscht was spilled over the table. Abraham was standing at one end of the dining room. His face was red and there was a large cut on his cheek. He breathed heavily. Daniel was stumped at the other end of the table. He seemed pale, and his eyes seemed frozen. He held a bloody knife in his hand.
-
* "What's happening?"
"I don't know," Abraham shouted. "Everything was fine! And then he suddenly grabbed a kitchen knife and slashed me!"
Abraham moved abruptly to follow his brother, trying to keep the distance between them.
"Brother, stop this shit," he wheezed.
-
* "Dan, stop it!["] If he did something, let's solve it quietly!"
"I didn't do anything at all," Abraham shifted once more, with his back to the door opposite me. "After lunch, I rocked in my chair while he washed the dishes..."
"You filthy bastard," Daniel shouted.
-
* {inventory has Gun} [Pull out the gun]
I pulled out my gun and pointed it at Saul.
* {not (inventory has Gun)}[Grab the knife]
I grabbed another knife from the table and pointed it toward Saul.
-
My mouth is dry. So dry.
"Dan, if you don't drop the knife, I'm going to have to..."
Daniel screamed and lunged toward his brother...
-
I closed my eyes...
* ...and opened them.
-
{inventory has Gun: There was smoke coming from the muzzle of the gun.| I stood there with a bloody knife.}
There were two corpses underneath me, two Sauls.
Anton came running into the dining room. {not (happened_facts has AngelaLocked): Angela followed him.}
* "Go away!["] Go!"
-
{inventory has Gun: I pointed the gun.| I raised the knife.} Maybe that's scary enough.
Anton shook his head – he already had the syringe in his hands – and...
I closed my eyes...
* ...and opened them.
-
I crashed into one of the crates. The cargo bay again. The shaft again.
But something has changed: I hear it, I feel it. It's... It's there. It's down there. I have to go down.
-
* [Take the elevator down]
I stepped into the elevator and pressed the button. My head.
-
I closed my eyes...
* ...and opened them.
-
I slowly crawled out of the elevator. The rock beneath my hands was cold and sticky. After catching my breath a little, I managed to stand up.
The air around me seemed to pulsate. There was something here. I looked toward Michael's body. Something was rippling on the tarp.
-
* [Go closer]
-
I froze over the body. Little gray hairs sprouted on the surface of the cloth. They looked like mold. When I reached out my hand, the hairs leaned toward me. I recoiled, unable to keep my balance, and the world collapsed again...
* ...and built anew.
-
I was lying next to the opposite wall of the mine. The rock here had grown the same mold and was like a soft carpet. I was drawn there. I was drawn inside, behind the wall. But how to get there?
I looked around. There was our laser drill standing nearby.
-
* [Go to the drill]
I walked over to the drill. Condensation had accumulated on its metal surface. I yanked the switch: the work panel flashed with lights.
My head got hotter. No! NO! This is going to hurt!
Why? Why would it hurt?
Something was heard from above.
-
* [Raise head]
-
When I looked up, I saw a white drop. It hit the ground. A warm liquid splashed in my face. I wiped it off with my hands, but the white color was gone. My palms were all bloody.
I died...
* ... and lived again.
-
Fainting, I managed to turn around and press the main button on the panel. The drill roared, its tip glowing and spewing a bright beam. I stepped back.
Where there had been a wall, there was now a niche. Inside, gray mold was growing all over it. It was thick and long. Its spikelets intertwined, joining together to form a huge ball that flickered and pulsed faintly.
I know it. It knows me. We are together. We are one. We grow within me.
We call us. We call us to be reunited. Our hand reaches out to us. Us...
-
* [Obey]
We obey. We reconnect. Our hand sinks into us. We become whole.
-> connection_ending
* [Fight]
No. Not us. Me.
I started to crawl. Pain was cramping my body, something was tearing through me, but I had to fight the urge. But how?
-
* [Crawling toward the drill]
I crawled toward the drill. My body convulsed.
-
* [Continue to crawl]
I can do it. I can do it. The pain...
-
* [Reach for the panel]
My hand is no longer mine. Ours.
I almost reached it.
-
* [Press the button]
I pressed a button.
The drill came to life.
My consciousness died.
The pain.
-
* Oblivion.
DANGER! OVERHEATING! DANGER!
We...
DANGER! OVERHEATING! DANGER!
we die...
DANGER! OVERHEATING! DANGER!
-
* I closed my eyes...
-> disconnection_ending
= lockdown_ending
* [Open the eyes]
-
"Robert Fox? At least there's one alive on this station. How do you feel?"
Alive people.
"Everyone on the station is dead, and you're the only one left alive, locked up. Also, the station has grown some kind of strange fungus. What happened here?"
There's a weapon on his belt.
"Robert? Answer me something."
I closed my eyes...
* [And opened them]
-
GOOD ENDING IF YOU ARE SELFISH AND ONLY CARE ABOUT YOURSELF
SPOILER ALERT: YOU'RE ALREADY DEAD.
-> END
= connection_ending
It's us...
A BAD ENDING IF YOU DIDN'T WANT TO BE PART OF AN ALIEN MIND.
A GOOD ENDING IF YOU DID.
-> END
= disconnection_ending
{happened_facts has AngelaLocked: -> angela_ending}
When the ships from Earth arrived at the station, a monstrous picture awaited them. The entire crew was dead. The mine was wrecked: months of work lost with hundreds of thousands of credits for equipment.
What had happened here? Sabotage? An unpleasant set of circumstances?
Unfortunately, there was no one to answer these burning questions.
* [Finish the game]
-
A GOOD ENDING BUT COULD'VE BEEN BETTER
YOU COULD SAVE ONE LIFE
-> END
= angela_ending
"So you heard yelling all over the station while you were locked up?
"Yes," Angela answered, glancing at the table.
"And at the end, did you hear an explosion?" the man let out a puff of smoke that blew around the empty room.
"I did."
"Curious. So far our theory is that your colleague decided to sabotage the operation. The station manager, Michael, figured it out, so he got rid of him. But Michael's death only raised new questions, the truth came out, leading to a massacre. From which only one man came out alive. Did you know Robert Fox well?"
The woman cast a furious glance at her interlocutor.
"Oh, yes. He set you up. But you know what? It may well have saved your life. We'll let you go, but if you need anything, keep in touch.
"Thank you."
"And just out of curiosity. After a scandal like that you might have a hard time finding a job. Do you know what you're gonna do?"
"No. But I'll think of something."
* [Finish the game]
-
MOST LIKELY, A GOOD ENDING.
THERE IS DEFINITELY NOTHING BETTER (IN THE CURRENT VERSION).
-> END
VAR blackouts = 0
=== function toggle_state() ===
{current_state == Online:
~current_state -= Online
~current_state += Offline
I closed my eyes...
~ changeStateAt = RANDOM(1,4)
- else:
~current_state -= Offline
~current_state += Online
...and opened them.
//{remembered_room}
//{actual_room}
{remembered_room != actual_room:
{check_room()}
}
~ changeStateAt = RANDOM(20,30)
~ blackouts++
{remembered_room != Med:
{
- blackouts == 1: I don't like this.
- blackouts == 2: One time it's an accident, two times it's a coincidence. But I have a vague feeling that we won't have to wait long for the third.
- blackouts == 3: This was the third time it happened. It's safe to say there's something wrong with my head today. Blackouts don't happen just like that. {not (known_facts has TalkedAboutBlackouts): Maybe I should talk to Anton about it. | It's better for Anton not to know that this is still going on.}
}
}
}
~ return
=== function check_room() ===
{
- remembered_room == Lab:
How did I end up here? <>
{InLab has Angela:
I was just talking to Angela.
- else:
{labClosed:
I was just outside the lab.
- else:
I was just in the lab.
}
}
- remembered_room == Med:
It doesn't look like a medical office.
- remembered_room == Kitchen:
It doesn't look like a dining room.
- remembered_room == Conference:
It doesn't look like a conference room.
- remembered_room == Residential:
It doesn't look like a residential module.
}
~ remembered_room = actual_room
=== function change_time(passedTime) ===
~ time += passedTime
~ stateTime += passedTime
~ check_angela()
~ check_abraam()
~ check_anton()
~ check_daniel()
{check_state()}
{stateTime >= changeStateAt:
~ stateTime = 0
{toggle_state()}
}
~ return
=== function check_state() ===
{current_state == Online:
{
- stateTime >= changeStateAt - 7 and stateTime < changeStateAt - 5: I felt a familiar headache in my temples.
- stateTime >= changeStateAt - 5: The headache throbbed at an accelerated pace.
}
}
// DEBUG. Current state: {current_state}. Current timer: {stateTime}/{changeStateAt}
VAR InKitchen = ()
VAR noOneHome = false
=== kitchen ===
= entrance
{current_state == Offline: -> station.map}
I entered the kitchen.
{InKitchen has Daniel and noOneHome:
<> Sauls have returned already.
~ noOneHome = false
}
{once:
- Technically, it is a dining room combined with the kitchen - a standard layout. It is also the largest living space on the station.
In the middle of the room there is a massive metal table surrounded by chairs. Now it is still littered with dozens of bottles from last night: yesterday no one was able to put them away, and today in the morning no one is up to cleaning.
}
{InKitchen has Abraam: Abraham swayed slightly on one of the chairs, risking breaking one of the flimsy legs.}
{!At the far end is a corner with kitchen equipment and a refrigerator compartment door.}
{InKitchen has Daniel: Daniel was conjuring over the boiling pot.}
{!There were two doors in the room. One led to the main corridor, the other to the rooms.}
{fight: I'm not sure the Sauls had any desire to talk after the fight that happened.}
{not (InKitchen has Daniel):
~ noOneHome = true
Souls haven't arrived yet.
}
-> actions
= actions
* {InKitchen has Abraam and not fight} [Speak with Abraham]
-> abraam_talk
* {InKitchen has Daniel and not fight} [Speak with Daniel]
-> daniel_talk
+ [Leave the dining room]
-> station.map
= abraam_talk
"Good morning again."
"Good morning? Ha," answered Abraham.
- (dialogue1)
{current_state == Offline: -> fight}
* "You really think Michael was killed?"
"You said it yourself: fences. You can't just jump over them."
"And Michael obviously wasn't the kind of guy who'd jump himself," Daniel interjected, keeping his attention on the cooking.
* * "And who do you think it is?"
"Anton. You know that he takes pills on a regular basis, right? I went to see him once when he forgot to hide them. It's powerful stuff, it blows your mind. But on the side, it makes you aggressive, causes memory lapses. It's very convenient, isn't it?"
~ known_facts += AntonPills
~ happened_facts += AntonPills
{blackouts >= 3: Anton drugged me?}
"Ange is also a good option. Did you hear that Michael was hitting on her?" Daniel continued.
{change_time(3)}
{current_state == Offline: -> fight}
* * * (you)"What?"
"Yes, he groped her every chance he got."
"But he's got a wife."
"And you're funny. Anyway, Ange obviously had a problem with him. And lately, I don't know what Michael's been saying to her, but she's been acting all moody."
~ known_facts += AngelaHarassed
~ happened_facts += AngelaHarassed
"Also, you," Abraham reached for the bottle, hoping it wasn't empty. But it wasn't his day.
{change_time(2)}
{current_state == Offline: -> fight}
* * * * "Me?"
{known_facts has ThinksHeDidIt: "What do they know?"}
"Now it's straight to being a boss, isn't it?"
"Look at him," Daniel pointed out. "He couldn't do it."
"I've seen all kinds. The sheep's clothing is thick."
{change_time(2)}
{current_state == Offline: -> fight}
* * * * * "And you're the only one[."] above suspicion, right?
"We have an alibi."
"We were in front of each other all that night."
"You don't think we're in cahoots, do you?"
I had a lot to say on the subject, but decided to be tactfully silent.
{change_time(2)}
{change_time(3)}
* * "Mystery."
"Still a murder."
{change_time(1)}
* "What are you doing?"
"Don't you see?" Abraham swayed defiantly in his chair one more time. "I'm using my day off to the best of my ability."
"You could have helped, by the way," Daniel remarked.
"You know it's better to keep me away from cooking."
"It's better to keep you away from everything, but somehow you got the job."
"With out-of-this-world charm."
I felt unnecessary in this conversation.
* "I should probably go."
Abraham nodded in rhythm to the swaying of his chair.
-> actions
- -> dialogue1
= daniel_talk
"Cooking?"
"That's right. Tonight we'll have borscht, Anton asked for it."
"Can we talk?"
{abraam_talk: "I'm kind of busy. How after lunch sounds?" | "I'm a little busy. Talk to Abraham, he's not doing anything anyway."}
"Okay."
-> actions
= fight
{change_time(5)}
I took a massive slap to the face. I shook my head and saw that Abraham was bent over me, pinning me to the floor. Daniel was standing next to the brother, trying to pull us apart.
{not you:
"Yes, I'm not the most ideal employee, and," Abraham noted his position and stood up, "I can be harsh. But I'm not willing to take insults from you."
Insults? {blackouts >= 3: I've tired of it already. | What is he about?}
"I shouldn't have dropped you. But really, cut it out."
- else:
"Look, if that's your reaction to a simple assumption, then I'm starting to think strongly that it's not a damn assumption."
What happened? Why am I lying on the floor? {blackouts >= 3: I've tired of it already.}
Abraham stood up.
"Again. Nobody accused you of anything. Stop throwing your fists around. Especially when you don't have much of a chance of winning."
}
I got up after him, scuffed myself up, and extended my hand – something had definitely happened, whether or not I remembered it.
"Apologies."
Abraham nodded and shook my hand. Daniel smiled and returned to the stove.
{change_time(4)}
-> actions
VAR InLab = ()
VAR labClosed = true
VAR angelaEntrance = 0
=== lab ===
= door
{InLab has Angela:
~ labClosed = false
}
{labClosed:
-> door_closed
-else:
{current_state == Offline: -> station.map}
{known_facts has AngelaSaved: I didn't go inside. We had already discussed everything we could. -> station.map}
{time < angelaEntrance: I didn't dare go inside, Angela obviously needs time. -> station.map}
I walked to the lab door and went inside.
{happened_facts has AngelaAccused: -> shouldnt_be_back_again}
}
-> entrance
= door_closed
{current_state == Offline: -> station.map}
I went to the lab door, but it didn't open automatically, as usual. {once: Is Angela really that paranoid?}
- (closedDoor)
{current_state == Offline: -> station.map}
{InLab has Angela:
Angela came to the door.
"Are you waiting for me? Come on in, don't be shy."
She swiped the card over the lock and went inside.
{change_time(1)}
-> entrance
}
* [Knock on the door]
I knocked on the door. But no one opened the door, of course.
-> closedDoor
+ [Wait]
{change_time(5)}
-> closedDoor
+ [Go to a different location]
-> station.map
- -> station.map
= entrance
{current_state == Offline: -> station.map}
{!Angela's office. Another faceless workroom. On the shelves are boxes of soil samples. The large spherical apparatus she used for research. The desk looked like it was covered in sand.}
{TURNS_SINCE(-> closedDoor) == 0: Angela went to her desk and sat down at her terminal. | Angela was sitting at her desk, going over things on her terminal.}
{TURNS_SINCE(-> closedDoor) == 0: "So what did you want, Robert?" | {happened_facts has AngelaAngered:"Ah, it's you again. What do you need? Quick." | "Hello again, Robert. Did you want something?"}}
-> start_dialogue
= start_dialogue
{current_state == Offline:
~ happened_facts += AngelaAngered
-> sudden_exit
}
+ "We need to talk about Michael."
-> michael_talk
* (angela_small_talk) "I thought I'd check up on you."
-> small_talk -> start_dialogue
+ "Nothing, I just stopped by."
"Then I'll ask you not to stay too long, I have work to do."
I realized I couldn't look around in front of Angela, so I went out into the hallway.
-> station.map
= michael_talk
{michael_talk > 2: -> michael_talk_exhausted}
{"Do I have to? But okay, let's talk about it." | "Haven't we talk about it already? I want to distract myself and get some work done."}
- (continue_talk)
{change_time(2)}
{current_state == Offline:
~ happened_facts += AngelaAccused
-> michael_accusation
}
* "You killed him, right?"
~ happened_facts += AngelaAccused
~ known_facts += AngelaAccused
"What?"
"Did you kill Michael?"
"What are you talking about? Why would I kill him?"
* * "I know that you fought a lot.["] You were sick of it, so you decided to get rid of him!"
"That's ridiculous. Is that how you solve all your problems?"
* * "You obviously wanted his job.["] Earth has to choose a new director now, and here you are.
"Maybe that's why you killed him, huh? I'd like to remind you who's first in line for the chair."
* * {known_facts has AngelaHarassed} "Michael harassed you!["] And you couldn't take it anymore."
"I would have had to kill too many men with that approach."
* * {known_facts has MailSeen} "Michael wants to fire you.["] Yes, yes, I've seen the letters."
-> michael_letter
- - -> michael_accusation
* {known_facts has MailSeen} "I've seen the letters.[] Yeah, those where Michael says he wants to fire you, and you say that you won't let your career be ruined."
"Mm, okay. So what's next?"
* * {known_facts has MailDeleted} "I've deleted them."
-> letter_deleted
* * "This could be a problem.["] If Earth starts investigating, this could come up."
-> investigation
* * "It looks quite like a motive."
-> motive
* {known_facts has ThinksHeDidIt} "I killed Michael."
"What?"
* * {known_facts has SeenCoat} "I found his jacket in my room."
-> confession
* * {known_facts has SeenAllCameras}"I have seen it on a record."
-> confession
* * "Joking!"
"Robert, this isn't fucking funny. Listen, I need to work a little, come back a little later."
~ angelaEntrance = time + 30
I nodded and left the lab.
-> station.map
* "What do you think happened?"
"I haven't changed my mind. Michael got drunk and fell into the shaft. I don't have a better idea."
* * "I guess you're right."
"Most likely."
* * "You don't even think that someone could have killed him?"
"I think this is incredibly stupid. Do you really believe that someone is capable of this?"
* * * "You never know."
"Then I'd look around more often if I were you."
* * * "Anton? [] Who knows what these... doctors have on the mind.
"No comments."
* * * "Have you seen the Sauls? [] Why do you think they don't want to appear on Earth?
"No comments."
* "Could Michael have had enemies[?"], what do you think?"
"You don't need to use detective cliches, you know?"
* "Are we going to do something about the corpse?"
"To be honest, I don't plan to go down there until the ships arrive. My psyche withstood the first time, but I don't want to test it."
+ – {continue_talk > 1: "I'll be back". | "I'll come later." }
Angela shrugged and went back to her business, and I hurried out into the corridor.
-> station.map
- -> continue_talk
= michael_accusation
{change_time(2)}
{current_state == Offline:
-> sudden_exit
}
Angela sighed heavily.
"I don't understand what came over you, I don't understand why I have to explain myself at all. But no. I didn't kill Michael. And I suggest that we finish with this."
{not (known_facts has AngelaAccused): "What? Why was she even talking about it?"}
* {known_facts has AngelaAccused} "Okay. Sorry."
I don't know what I wanted to achieve with this at all, but I doubt that Angela will be able to help me in any other way.
~ angelaEntrance = time + 300
* {not (known_facts has AngelaAccused)} "O-o-okay?"
I don't quite understand what just happened, but Angela really looks very annoyed. {blackouts >= 3: What did I say while I was out?}
- I headed for the exit.
-> station.map
= michael_letter
Angela looked at me nervously.
– Is that a reason to kill him?"
* "It looks quite like a motive. []
- (motive)
<> He promised to ruin your career. If you value this job, then it can be perceived as an equivalent exchange."
"My career is important to me. But I'm not a killer."
* "For some reason, I don't believe you."
"I don't care if you believe it or not. I don't know what game you're playing, Robert, but I hope you'll come to your senses."
"We'll see," I said and headed for the exit, leaving Angela alone with her thoughts.
~ known_facts += AngelaAngered
~ happened_facts += AngelaAngered
~ angelaEntrance = time + 300
* "And I believe you.["] But if the Earth starts an investigation, it may come up."
- - (investigation)
"I don't understand. Is this how you want to help me?"
* * {known_facts has MailDeleted} Yes. I deleted the emails.["] So your chances have increased dramatically."
- - - (letter_deleted)
Angela stared at me blankly.
~ known_facts += AngelaSaved
~ happened_facts += AngelaSaved
"I don't know what to say. Thank you, I guess?"
* * * "Not bad for a start."
"Even here, you manage to seem like a complete jerk. Goodbye, Robert. We have nothing more to talk about here."
~ known_facts += AngelaAngered
~ happened_facts += AngelaAngered
I shrugged and headed for the exit.
* * * "I did it because it was the right thing to do."
"That sounds good. But I need to get back to work. See you at lunch?"
"Yes, of course."
I headed for the exit.
* * "I want to understand."
"What does it have to do with you at all? This is my problem. Mine, Robert. Let me solve my own problems."
"But..."
"I need to get back to work, Robert. I'll see you at lunch."
~ angelaEntrance = time + 300
I nodded silently and headed for the exit.
-
{change_time(3)}
-> station.map
= michael_talk_exhausted
"Listen, I'm honestly tired. I want to get this image out of my head, and not bring it back again and again and again. Anything else?"
{change_time(2)}
-> start_dialogue
= small_talk
"How thoughtful. I'm okay. But it could have been better," Angela paused. "How are you?"
{change_time(2)}
{current_state == Offline:
~ happened_facts += AngelaAngered
-> smalltalk2
}
- (smalltalk1)
* "Awful, Angela.["] I don't know what to do."
"No one knows. We are all in this situation for the first time. I try to pretend that nothing has happened and hope that the work will somehow distract me."
* * (work_idea) {not conferenceroom.work} "It's a good idea.["] I should try it."
"Tell me later."
* * {conferenceroom.work} "Yes, I tried. It really distracts."
"Well, I was right."
* * "How is this supposed to help me?"
~ happened_facts += AngelaAngered
~ known_facts += AngelaAngered
"I advise as I know. Do I also need to make adjustions for you?"
* "More or less.["] I still can't believe this happened."
"Me too, yes. We don't have the safest type of activity, of course, but I still couldn't imagine that this would ever happen to me."
* * "Similar feelings."
"Well, at least we agree on this"
* * "But it didn't happen to you."
"I'm talking about the situation, not about death."
* "No matter. I have to run."
Angela shrugged and went back to her business, and I hurried out into the corridor.
-> station.map
- (smalltalk2)
{change_time(1)}
{current_state == Offline:
// – Какая-нибудь сказанная гадость.
// – Знаешь, мне кажется, что тебе нужно немного проветриться.
// – Это не ты меня заставила уйти, это я сам ушёл!
~ happened_facts += AngelaAngered
-> sudden_exit
}
{happened_facts has AngelaAngered:
<> You know, enough talking. If you have something important to say, then go ahead, otherwise you know where the door is."
{not (known_facts has AngelaAngered): "What's gotten into her all of a sudden?"}
~ known_facts += AngelaAngered
->->
}
{smalltalk2 == 3:
<> Okay, I have to get back to work. Do you have something important to say?"
->->
}
* {intro.flirt} "So what's with the "wrong one","[]I winked.
"That sometimes you should hold your tongue."
"Come on, what did I say wrong then?"
"Can I leave this without a comment?"
* "Do you have any headaches?"
"What, last night does not give rest?" Angela smiled. "But, you know, I didn't drink with you yesterday, and in the morning I also noticed a faint throbbing pain. Is the hangover now transmitted through the air?"
{change_time(1)}
* "Why don't we get along so well?["] I've always been curious."
"Do you think we don't get along?" Ange laughed. "I'm also curious now."
"What would you call it?"
"That's what it is – a professional relationship. It wouldn't hurt for you to think like that too."
{change_time(1)}
* "What do you think is for lunch today?"
"Do you really care about this question? Now?"
* * "Food distracts me."
"I'm happy for you."
* * "I didn't know what else to ask."
"Then can we finish the conversation? Do you have something important to say?"
{change_time(1)}
->->
* "Why did you become a geologist?"
"When I was a little girl, I saw a very beautiful stone on the ground, picked it up and at the same moment I realized that I wanted to know everything about stones that I could!" Ange quipped.
"I'm serious."
"Robert, we've been here for a month, but you want to talk now? It's not a good time."
- -> smalltalk2
* "Okay, let's move on to the important issues."
Angela nodded.
->->
= sudden_exit
{change_time(1)}
{current_state == Offline: -> station.map}
"I found myself on my way out of the lab. But I was just talking to Angela."
* [Return]
{happened_facts has AngelaAccused: -> shouldnt_be_back_again | -> back_again}
* [Go to a different location] -> station.map
= back_again
"Angela?"
"I thought you left, didn't you?"
* "What are you talking about?"
* "And now I'm back."
-
"You're giving me a headache. Can you leave me alone? Please?"
"All right, all right."
What's gotten into her all of a sudden?
~ known_facts += AngelaAngered
~ angelaEntrance = time + 30
{change_time(1)}
* [Leave the lab] -> station.map
= shouldnt_be_back_again
"Angela?"
"Go away, Robert. We have nothing to talk about."
"I don't understand, what's wrong?"
"Don't piss me off more than you did. I don't know what happened with Michael, but I would really like to kill you."
~ known_facts += AngelaAccused
~ angelaEntrance = time + 300
{blackouts < 3: I was genuinely surprised, but decided not to tempt fate.| These blackouts are beginning to cause real problems.}
{change_time(1)}
* [Leave the lab] -> station.map
= confession
"Robert... why are you telling me this?"
{change_time(2)}
{current_state == Offline:
-> murder
}
"It seemed like the right thing to do."
"I... I don't know what to do with this information. I need to be alone."
Ange asked me to leave the lab and locked the door behind me.
~ known_facts += AngelaKnows
~ happened_facts += AngelaKnows
~ angelaEntrance = time + 300
-> station.map
= murder
{change_time(10)}
{inventory has Gun: I was standing there with my gun in my hand, and Angela Trevino's bloody body was lying in front of me. I immediately realized what had happened and dropped the gun, tears flowing uncontrollably from my eyes. | I pressed Angela Trevino's breathless body to the floor, with red marks on her neck. I immediately realized what had happened, and tears flowed uncontrollably from my eyes. }
"Ange. I didn't mean to. I didn't mean to!"
At the noise of {inventory has Gun: shooting|fight} the Saul brothers came running in, and Anton followed.
{kitchen.you: "And I told that" said Abraham.}
"Robert. Raise your hands and come slowly toward me," Daniel said coldly.
* [Raise your hands]
-
I wasn't going to fight back. I knew it wasn't my doing – something was obviously wrong with my head. But there was no easy way to explain it.
Anton stepped in for me and said that the first thing I needed was an examination. They took me to the operating room, where they could both take tests and keep me under lock and key at the same time.
"I'm sorry, Robert. I hope it's really not your fault, but we need to find that out first," Anton said one last time and locked the door behind me.
-> ending.lockdown_ending
VAR InMed = (Anton)
VAR angelaMurderer = 0
=== medcabinet ===
= entrance
{current_state == Offline: -> station.map}
I went into the medical office.
{once:
- It was quite spacious. The subdued light glinted off the chrome hardware. In the corner there was a pair of refrigerators with transparent doors. The vials with our tests rested on the shelves. Next to them were racks full of boxes of medical equipment and drugs.
But not all of the drugs. Some were in boxes under lock and key, for which only Anton had the code.
In the center of the room there was a guest chair turned toward the desk. Along the far wall was an examination couch with an open screen around it. To its right was the door that led to the operating room.
}
{InMed has Anton: At the table Anton {medcabinet > 1: still} was sitting, rereading his notes.}
"Ah, Robert. Come on in.{medcabinet == 1: Keep me company.}"
-> dialogue
= dialogue
{current_state == Offline: -> health_check}
* (blackout_talk){blackouts >= 3 and not health_check} "I have blackouts."
Anton took his eyes off his notes and looked at me carefully.
"You don't remember the details of the evening? That's not unusual when you drink so much, Robert."
* * "It's reassuring."
"Glad to help."
* * "No, it's a little more serious than that."
I had blackouts all morning. I blink, and then something happened without my knowledge.
"It's a little early for memory lapses, Robert. But given last night's partying, the sudden stress, it can be explained."
* * * "Probably."
* * * "I think it's something different."
- - - "If anything serious happens, we'll be sure to put you under observation. Agree?"
~ known_facts += TalkedAboutBlackouts
~ happened_facts += TalkedAboutBlackouts
{change_time(3)}
* {known_facts has AntonPills} "What pills are you taking?"
Anton raised his head and looked at me perplexed.
"What are you talking about, Robert?"
"Abraham told me..."
"You need to listen less to Abraham," Anton answered irritably.
{change_time(1)}
* "I've had a headache all morning."
"Who are you trying to impress with that? I've had headaches all my life. And after yesterday night, who doesn't have a headache. Angela?" Bezrukov laughed.
{change_time(1)}
+ (michael) {known_facts has ThinksHeDidIt and not (happened_facts has WaitForDinner)} ["{not michael:I think I killed Michael.|And back to me and Michael.}"]"{michael < 2:I think I killed Michael.|And back to me and Michael.}"
{once:
- Anton looked questioningly.
"You think?"
}
- - (murder_talk)
{current_state == Offline: -> health_check}
* * {known_facts has SeenCoat} "I found his jacket[."] in my room."
"This is... unexpected. But maybe he gave it to you yesterday and you forgot."
{change_time(1)}
-> murder_talk
* * "I have his position now.["] The work won't go on without a new director, and they're not likely to look for anyone else."
"Just because you seem to have a motive doesn't mean you could have done it."
{change_time(1)}
-> murder_talk
* * (said_cameras){known_facts has SeenAllCameras} "I saw myself on the cameras.["] Not the murder itself – we have the camera disabled in the cargo bay – but I followed him all the way to the shaft. And then I came back. With his jacket in my hands."
{change_time(1)}
{current_state == Offline: -> health_check}
-> damage_control
+ + "Maybe it's just my imagination."
"It's probably that, Robert. I shouldn't have said anything at the elevator, you obviously overreacted."
{change_time(1)}
* {said_cameras and not damage_control} "So what should I do about Michael?" -> damage_control
+ (angela) {not damage_control and not (happened_facts has WaitForDinner)} ["{not angela:I think Angela killed Michael.|And back to Angela.}"]"{angela < 2:I think Angela killed Michael.|And back to Angela.}"
{!"Angela? It's possible."}
- - (angela_talk)
{current_state == Offline: -> health_check}
* * {known_facts has MailSeen} "I saw mails between Angela and Michael."
"What was it about?"
"Michael wanted to fire her. And give her a bad reference."
"Ugh. That wouldn't have helped her, that's for sure. That's it?"
~ angelaMurderer++
{change_time(1)}
-> angela_talk
* * {known_facts has AngelaHarassed} "Sauls told me that Michael harassed Angela."
"Abraham or Daniel? Who said that?"
* * * "Dan?["] I can't remember."
"Interesting. Not exactly a reason to kill, but I've never understood women well."
~ angelaMurderer++
{change_time(1)}
-> angela_talk
* * * "Abraham?["] I can't remember."
"Take it with a grain of salt."
{change_time(1)}
-> angela_talk
* * {known_facts has CoatPlanted} "Angela took the Michael's jacket.["] I saw her last night."
"And you didn't say anything about it?"
"I didn't remember that right away, everything is so blurry."
~ angelaMurderer += 3
{change_time(1)}
-> angela_talk
* * {known_facts has ComputerBroken or known_facts has DeletedCameras} "{known_facts has ComputerBroken:Angela smashed Michael's terminal.|Angela erased the camera recordings.}"
"Did you see it yourself?"
"I saw the result."
"Fair enough."
~ angelaMurderer += 3
{change_time(1)}
-> angela_talk
+ + "What do you think?"
{
- angelaMurderer <= 2:
"That these are just your assumptions."
- angelaMurderer <= 5:
"She definitely has a motive, there's no arguing. But is it enough? We need hard evidence."
- angelaMurderer >= 6:
"Listen, if you really saw Michael's jacket, and that's not your memory is playing tricks on you... then we need to warn others about this. And {known_facts has ComputerBroken: this terminal| these camera recordings}... Let's bring it up at lunch, okay?
~ known_facts += WaitForDinner
~ happened_facts += WaitForDinner
}
{change_time(1)}
+ + {angelaMurderer <= 2}"But that's just my guess."
"We won't get very far on guesses."
{change_time(1)}
+ [Chat]
Anton was a pleasant companion and was always ready to listen to me or share his story. Time flew by unnoticed.
{change_time(5)}
+ "I'll go now."
"All right, Robert.{medcabinet == 1: But keep coming.}"
-> station.map
- -> dialogue
= damage_control
Anton was thinking hard.
{no health_check or no blackout_talk: "You say that as if you don't remember it.|"So your blackouts didn't start in the morning.} Interesting. But that still doesn't prove anything. You erased the records?"
* {known_facts has DeletedCameras} "Yes."
"Good.
* {not (known_facts has DeletedCameras)} "No."
"You'd better erase it. There will be fewer questions.
- <> What did you do with the jacket?"
* {known_facts has CoatHidden} "I hid it in my room."
"Better not in yours, of course.
* {known_facts has CoatReturned} "Tossed in Michael's room."
"Great. Everything where it should be.
* {known_facts has CoatPlanted} "Planted in Angela's room."
"You're a gentleman, Robert.
* "I've figured it out."
"Your freedom is at stake, I'm just asking questions.
- <> Something else?"
* "I think that's it."
"Well, that's good."
* {health_check or blackout_talk} "What about the blackouts?"
"That's one explanation for what happened yesterday. But let's not ruin your life just because you're sick."
* "Doesn't it bother you at all?"
"Robert. I know very well that you're not a murderer. But everyone's on edge right now, and if there's any talk of murder, chances are you just can't get away with it."
-
"Thank you, Anton."
"Don't get upset."
{change_time(5)}
-> dialogue
= health_check
{change_time(30)}
{health_check == 2: -> health_check2}
I found myself in the guest chair, feeling completely relaxed in my body.
"Are you awake? I had to give you a little sedative because you looked like you were not only going to throw another round of your mediocre swear words at me but going to blow up the whole office. How are you feeling?"
"What? Why?"
"I don't know. I thought you were going to tell me. But you weren't yourself, Robert. I checked your vitals and took blood samples while you were out, but so far nothing critical. {blackout_talk: That's your blackouts? -> end | How long have you had this?"}
* "First time[."]{blackouts == 1:."|," I lied.}
"Let's hope it's the last."
* {blackouts == 2} "I've had it before, but I didn't think much of it. We got pretty drunk last night, after all."
"That's right, that's right. I hope it really is temporary."
* {blackouts >= 3} "From the morning.["] I blinked and something happened without my knowledge.
"It's a little early for memory lapses, Robert. But given last night's partying, the sudden stress, it can be explained."
- (end)<> Can you get up?"
"Yeah. My legs are a little wobbly, but I can handle it."
"Good. And be sure to tell me if you have a recurrence of this: maybe you should lie down for today."
~ known_facts += TalkedAboutBlackouts
~ happened_facts += TalkedAboutBlackouts
{change_time(3)}
-> dialogue
= health_check2
I found myself back in the familiar guest chair.
"You don't stop to surprise me, Robert.{inventory has Gun: I took the gun away from you. Fortunately, in this state, you don't seem capable of disengaging the safety.}"
"Oh. Fuck."
"Uh-huh. For all our friendship, I have to take care of my other colleagues' health as well. And my own, of course.{damage_control: I remember our conversation, and I'll try to do my best. And no one would blame the man in the sick bed, would they?}"
* "What do you want to do?"
-
"I'll give you a higher dose and let you sleep it off. In the meantime, I'll take care of your tests. Tomorrow we'll find out what's wrong."
* "I think it's a bad idea."
"It's a bad idea to let you out like this. There's a chance we're not going to stop at one Michael."
* "You're probably right."
"Of course I'm right. Is there any other way?"
-
Anton helped me up from the chair and walked me to the operating room. I obediently undressed and lay down on the couch. Anton checked my vitals one more time: pulse, blood pressure, temperature – but saw nothing alarming.
After that, he opened up a fresh shot of tranquilizer and injected it into my shoulder.
"I'll stop by in a couple of hours to check on you, so don't go anywhere," Bezrukov laughed, left the room and locked it outside, just in case I turned out to be a naughty boy.
I made myself comfortable, closed my eyes, and drifted off to sleep.
* [Sleep]
-> ending.lockdown_ending
VAR InResidential = ()
=== residential ===
{current_state == Offline: -> station.map}
I walked up to the residential module. All the rooms were locked with personal keys. {inventory has MasterKey: Nothing a master key can't handle, of course.}
- (module)
+ [Get into my room]
-> entrance
+ {known_facts has SeenCoat and inventory has MasterKey and not (known_facts has CoatReturned) and not (known_facts has CoatPlanted)} [Return the jacket to Michael's room]
I grabbed the jacket from the room and dropped it off at Michael's, where it should be.
~ known_facts -= CoatHidden
~ happened_facts -= CoatHidden
~ known_facts -= CoatPlanted
~ happened_facts -= CoatPlanted
~ known_facts += CoatReturned
~ happened_facts += CoatReturned
{change_time(5)}
+ {known_facts has SeenCoat and inventory has MasterKey and not (known_facts has CoatPlanted)} [Plant the jacket to Angela's room]
I grabbed the jacket from the room and dropped it off at Angela's. I need assurances.
~ known_facts -= CoatHidden
~ happened_facts -= CoatHidden
~ known_facts -= CoatReturned
~ happened_facts -= CoatReturned
~ known_facts += CoatPlanted
~ happened_facts += CoatPlanted
{change_time(5)}
+ [Leave]
-> station.map
- -> module
= entrance
I entered my room.
{once:
- The little cubbyhole where I had spent so much time. A standard bed under a gray coverlet, a standard desk with a personal terminal. Next to it is a flower in a small pot. It's artificial, but, ironically, it still adds a little life around.
On the wall there is a poster of Moon Resorts. I wanted to go there after work, the bonus we were promised is not bad. Now it's definite: I'm going to sit there until I wash this place off me.
}
-> actions
= actions
{current_state == Offline:
{call_made or call:
-> station.map
- else:
{change_time(5)}
-> call_made
}
}
* [Go to the terminal]
I touched the glass with my finger. Nothing new. There was one last message in the mail from my brother: he was finishing a project somewhere on the other side of the galaxy, offering to hang out afterward. Yeah, I could use a break. Maybe no alcohol this time, though.
{call_made: My call to Earth was in my outbox. I wondered what I had said.}
* * (call) {not call_made}[Call to Earth]
I decided that Michael Gibson's death should be reported right away after all. At the very least they could break the news to his family.
It was a tough conversation.
{change_time(8)}
* * [Go away from the terminal]
{change_time(3)}
* {known_facts has SeenAllCameras} [Find the coat]
I searched the whole room and found it. It was right under the sink. It was the same Michael's jacket. A massive leather relic from the past.
~ known_facts += SeenCoat
~ happened_facts += SeenCoat
{change_time(2)}
* [Go to a shower]
It's not a bad idea to freshen up.
I turned on the lamp on the mirror and stared at my reflection. Puffy eyelids, bags under my eyes, chapped lips. I splashed cold water on my face. I didn't feel any better.
My stomach twisted, I bent over and fell down next to the toilet.
I threw up.
I leaned back against the iron wall. My eyes went black. I had to breathe.
* * [Breathe]
After sitting there for a few minutes, I came to my senses. I opened my eyes and noticed it.
It was lying right in front of me, tossed carelessly on the floor under the sink.
* * * Michael's jacket.
~ known_facts += SeenCoat
~ happened_facts += SeenCoat
A massive leather relic from the past. He always carried it outside of work. He thought it was cool.
{not (known_facts has SeenAllCameras): But what was it doing here?}
{change_time(10)}
* (coat){known_facts has SeenCoat} [Pick up the jacket]
I picked up the jacket and examined it. It was clean. It was intact.
{known_facts has SeenAllCameras:
What I saw in the notes was true. I followed Michael to the shaft and came back with his jacket.
What am I supposed to do?
{change_time(2)}
- else:
But where did I get it from?
Michael was in it yesterday, if memory serves me correctly{blackouts >= 3: – and I know it doesn't}.
And then a fragment from last night popped into my mind: I saw Michael walking toward the mine. I called out to him, but he didn't answer me. What does this mean...
}
* * {not (known_facts has SeenAllCameras)} Did I kill him?
~ known_facts += ThinksHeDidIt
~ happened_facts += ThinksHeDidIt
I really hope there is some other explanation.
{change_time(2)}
* (coat_search){coat} [Search the coat]
I went through my pockets. A crumpled pack of cigarettes. A crappy lighter. A small key.
A key? Small, metallic, physical – it looks like a key to a drawer or a box. {directorroom.drawer: Maybe it's from the desk in his office? } Either way, the key could come in handy, so I picked it up.
~ inventory += DrawerKey
But what to do with the jacket?
{change_time(2)}
* {coat_search and not (known_facts has CoatPlanted) and not (known_facts has CoatReturned)} [Take the lighter too]
After today's events, I might as well start smoking. I took the lighter.
~ inventory += Lighter
{change_time(1)}
* {coat_search and not (known_facts has CoatPlanted) and not (known_facts has CoatReturned)} [Hide the coat]
I rolled up my jacket and shoved it as far under the bed as possible. I didn't want anyone to find it.
~ known_facts += CoatHidden
~ happened_facts += CoatHidden
{change_time(3)}
{change_time(3)}
* [Lay down to rest]
I realized that I was incredibly tired, so I lay down on the bed.
{change_time(30)}
+ [Exit the room]
-> station.map
- -> actions
= call_made
I looked at the terminal screen, where there was an active call window.
- Hello? Robert?
I sharply pressed the big red button and exhaled. Did I have time to say something? What exactly?
{blackouts >= 3: When the hell is this going to end?}
-> actions
=== function check_angela() ===
{time >= 5:
~ InLab += Angela
}
~ return
=== function check_anton() ===
~ return
=== function check_abraam() ===
{time >= 5:
~ InKitchen += Abraam
}
~ return
=== function check_daniel() ===
{time >= 5:
~ InKitchen += Daniel
}
~ return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment