1
0
Fork 0
mirror of https://gitlab.com/Oreolek/black_phone.git synced 2024-05-14 23:18:35 +03:00
black_phone/game/story.coffee
2016-01-01 20:21:27 +07:00

374 lines
12 KiB
CoffeeScript

update_ways = (ways) ->
content = ""
for way in ways
if undum.game.situations[way]?
content += way_to(undum.game.situations[way].title, way)
$("#ways").html(content)
# if the player enters the code prior to learning the birthday, the game responds accordingly
# when he wants to go, there's someone at rge door
# it's another thief (someone who is at ease with Ana's Instagram too) who took out Petya
# the Black Phone can deal with him
situation "living-room",
title: "Living room"
before: () ->
if not $(".ways h2").is(':visible')
$(".ways h2").fadeIn()
update_ways(this.ways)
ways: ["bedroom", "kitchen", "balcony"]
content: """
Ronald is standing in a dark room with a big #{textlink("window.", "window")}
The walls are covered with a dingy rose wallpaper.
The room is very unnerving.
Was it actually her home?
On a coffee table lies an opened envelope.
#{textlink("A book stand", "bookcase")} is hanging above #{textlink("a television set.", "tv")}
Oh, and #{textlink("the door Ronald came into", "door")} the apartment is there, too.
"""
writers:
window: "The moon is full today. It illuminates the flat, makes the things stand out in some weird angles."
bookcase: """
Either Anastacia has a very conflicting taste in books, or she has no taste at all. Let's see...
#{textlink("“Master and Margarita”,", "bulgakov")}
#{textlink("“Breakfast at Tiffany's”,", "tiffanys")}
#{textlink("The Soviet Encyclopedic Dictionary,", "dictionary")}
#{textlink("“Grey”,", "grey")}
#{textlink("”Also sprach Zarathustra”,", "zaratustra")}
#{textlink("”Poker with sharks”,", "dontzova")}
#{textlink("”Classic sauce. Culinary collection”", "culinary")}
and #{textlink("The Bible.", "bible")}
"""
bulgakov: """
“Master and Margarita” by Mikhail Bulgakov.
A famous urban fantasy satire of Soviet nineteen-thirties.
This is a cheap paperback edition, she read this at least a couple of times.
The pages have dog's ears, and coffee stains too.
Ronald can even see a hint of lipstick smearing the episode of Satan's dark magic variety show performance.
"""
tiffanys: """
This book looks scrawny wedged between the fat dictionary and an epic novel.
It looks rather new, the pages are still white and straight.
Maybe she didn't catch the right moment to read this.. or maybe just forgot about it.
"""
dictionary: "A big fat dictionary of everything, issued in 1989. Nobody reads every page of these. Ronald doubts Anastacia got to read at least one page."
grey: "Fifty Shades of Grey, an unnecessary remake. Now from a psychopath's point of view. And she actually read that."
zaratustra: (character, system) ->
money(character, system, 20000)
"""
Nietsche's four-part novel about The Man, The Superman and everything in-between.
It's surprisingly worn down.
She took this book out a lot.
Was she secretly a philosophy nut?
An Übermensch dreamer?
No, of course not.
Ronald opens the book and finds a stash of money inside.
"""
dontzova: """
An "ironic detective" by Daria Dontzova about Evlampia Romanova, an amateur detective.
The heroine (nicknamed as Lamp) plays harp and solves murders.
It's a trash book filled with blatant product placement.
"""
culinary: "An old culinary book. Nothing about it."
bible: "An Orthodox Christian Bible, Old Testament. A decent hardcover edition. Bookmarked at the Sodom episode."
tv: "An expensive 40-something inch TV standing on a stylish black stand. The room looks kinda small for that monster."
door: (character, system) ->
if character.sandbox.box_opened == 0
"Ronald has a job here. It's still on."
else
system.doLink("door")
situation "bedroom",
before: () ->
update_ways(this.ways)
title: "Bedroom"
ways: ["living-room", "kitchen", "bathroom"]
content: (character, system) ->
return """
The bedroom is spacious; its walls are lavender green, almost white in the moonlight.
#{textlink("A massive wardrobe", "wardrobe")} occupies one of the walls.
On the wall across #{textlink("a big bed", "bed")} hangs #{textlink("a full sized mirror.", "mirror")}
#{if character.sandbox.box_opened == 0
"On a small table near the bed is an ornate #{way_to("wooden box.", "box")}"
}
"""
writers:
bed: """
A double bed with flower-embroidered sheets.
She left several days ago.
The sheets are still fresh.
"""
wardrobe: """
TODO [This is about Ana's looks, her body.]
"""
mirror: """
The mirror looks directly at the bed.
Kinky, though not very much *Feng Shui* in it.
#{textlink("The frame","frame")} depicts various artists (all women) making sculptures of men.
It's a very *unusual* art.
"""
frame: """
On a close examination, the frame isn't attached to the wall.
There is #{textlink("a safe", "safe")} behind the mirror!
"""
safe: """
The safe is locked with a regular lock.
Ronald tries two keys.
The first of them opens the door.
There are #{textlink("money", "money")} inside, and #{textlink("a rough sketch.", "sketch")}
"""
money: (character, system) ->
money(character, system, 50000)
"""
It's a big cash.
Odd that she didn't take this when she left.
But someone's fault just makes Ronald's payday now.
"""
sketch: """
It's a portrait of Anastacia.
She bites her lower lip slightly.
Her eyes are sad, or maybe concerned with something.
The sketch is signed: *"L. Y. - 2017"*
"""
situation "kitchen",
before: () ->
update_ways(this.ways)
title: "Kitchen"
ways: ["living-room", "bedroom"]
content: """
The white, perfectly clean kitchen could be called spartan: #{textlink("a fridge,", "fridge")} a microwave and #{textlink("a big table", "table")} where one can eat whatever she "cooked" that way.
"""
writers:
fridge: """
No magnets or stickers on the outside.
The door opens easily.
*If only the hinges on the apartment doors were as good as refrigerator ones.*
A hearty bunch of salad.
Some fruits, carrots, two beets.
Three eggs, one cracked.
A bottle of ketchup, bottle of whiskey, valerian vial.
A jar of raspberry preserve, half-finished.
And enough frozen pizzas to last a month.
"""
table: """
TODO [Here the player learns why Ana decided to bolt away]
"""
situation "bathroom",
before: (character,system) ->
writemd(system,"Ronald doesn't want to search the bathroom. It's too private a room to enter.")
index = undum.game.situations["bedroom"].ways.indexOf("bathroom")
undum.game.situations["bedroom"].ways.splice(index, 1)
update_ways(undum.game.situations["bedroom"].ways)
return false
title: "Bathroom"
ways: ["bedroom"]
situation "balcony",
before: () ->
update_ways(this.ways)
title: "Balcony"
ways: ["living-room"]
content: """
A small glazed-in empty balcony.
It's an amazing night.
The whole town is lit by moonlight, standing perfectly still.
On a short stand is #{textlink("an ashtray","ashtray")} with some ash in it.
"""
writers:
ashtray: (character) ->
character.sandbox.knows_the_code = 1
return """
She completely smoked out two cigarettes here.
There's also a #{textlink("piece of paper nearby,", "paper")} half-burnt.
"""
paper: """
It's a letter, written by hand on a thick sheet of what must be an A4 paper.
The handwriting is wobbly and the first three quarters of the sheet is gone, but the ending is legible.
...ok at them, celebrating the New Year, think of our anniversary.
The day of White.
I will fly to you no matter what.
    *L. Y.*
"""
situation "box",
before: () ->
update_ways(this.ways)
ways: ["bedroom"]
choices: "#box"
content: (character, system) ->
return """
It's a red wood, very expensive.
And this box is locked with a digital code key.
#{if is_visited(this) == 0
"""
Ronald takes out a vial from his pocket. He coats the keys with a bright white powder.
Only 1, 2, 3, 7 and 0 keys are fingerprinted.
He wipes the box clean until there is no trace of the powder.
"""
}
"""
# no need to call update_ways, it's the same location
situation "smash",
canView: (character) ->
character.sandbox.view_smash == 1
optionText: "Smash the box"
before: (character) ->
character.sandbox.view_smash = 0
choices: "#box"
tags: ["box"]
content: "Ronald still needs the phone in this box. A very high-tech fragile phone. Smashing isn't an option."
situation "put1",
choices: "#box"
tags: ["box"]
optionText: "Enter 1"
before: (character) ->
code_input(character, 1)
canChoose: (character) ->
code_can_input(character)
after: (character, system) ->
code_check(character, system)
content: (character) -> """
Ronald presses button 1. The display is #{character.sandbox.code} now.
"""
situation "put2",
choices: "#box"
tags: ["box"]
optionText: "Enter 2"
before: (character) ->
code_input(character, 2)
after: (character, system) ->
code_check(character, system)
canChoose: (character) ->
code_can_input(character)
content: (character) -> """
Ronald presses button 2. The display is #{character.sandbox.code} now.
"""
situation "put3",
choices: "#box"
tags: ["box"]
optionText: "Enter 3"
before: (character) ->
code_input(character, 3)
after: (character, system) ->
code_check(character, system)
canChoose: (character) ->
code_can_input(character)
content: (character) -> """
Ronald presses button 3. The display is #{character.sandbox.code} now.
"""
situation "put7",
choices: "#box"
tags: ["box"]
optionText: "Enter 7"
before: (character) ->
code_input(character, 7)
after: (character, system) ->
code_check(character, system)
canChoose: (character) ->
code_can_input(character)
content: (character) -> """
Ronald presses button 7. The display is #{character.sandbox.code} now.
"""
situation "put0",
choices: "#box"
tags: ["box"]
optionText: "Enter 0"
before: (character) ->
code_input(character, 0)
after: (character, system) ->
code_check(character, system)
canChoose: (character) ->
code_can_input(character)
content: (character) -> """
Ronald presses button 0. The display is #{character.sandbox.code} now.
"""
situation "reset",
choices: "#box"
tags: ["box"]
optionText: "Reset the display"
before: (character) ->
code_reset(character)
content: """
You press Backspace until the display is empty.
"""
situation "door",
before: () ->
update_ways(this.ways)
ways: ["living-room"]
choices: "#door"
content: """
Ronald is ready to go.
Maybe he's satisfied with his explorations or just wants to finish this.
But then a new problem arrives.
Someone's shadow is under the doorframe.
"""
situation "finale",
before: () ->
update_ways(this.ways)
optionText: "Use the Phone"
tags: ["door"]
ways: []
content: (character, system) -> """
"LOADING... 100%"
Ronald opens the door and presses his finger to the phone screen.
### A CACOPHONY OF MONKEY SOUNDS
There stands a tall man in a grey jacket.
*Another Instagram follower, perhaps?*
An older man in his pajamas and slippers lies motionless on the floor near him.
### A QUANTUM MAGICAL SMART PHONE FIESTA
The man in a grey jacket slumps as if struck by something.
Ronald taps the Phone again and quietly escapes the floor.
“Well, that was a good night.”
#{if character.qualities.money > 0
"The pocket is heavy with #{character.qualities.money} rubles and the phone."
else
"The phone is heavy in the pocket."
}
The sun is coming up soon.
If you're not sleeping at night, you risk to learn something secret about your neighbors.
<center><h3>END</h3></center>
"""