1
0
Fork 0
mirror of https://gitlab.com/Oreolek/black_phone.git synced 2024-05-17 00:18:34 +03:00
black_phone/game/story.coffee
2016-03-10 21:49:48 +07:00

512 lines
16 KiB
CoffeeScript

# This room has no description.
# The description is constructed from the objects within.
room "living-room", salet,
title: "Living room"
enter: (character, system, from) ->
if (from == "start")
audio = document.getElementById("bgsound")
audio.currentTime=0
audio.volume = 0.5
audio.play()
ways: ["bedroom", "kitchen", "balcony"]
objects: [
obj "window",
act: """
The moon is full today.
It illuminates the apartment, makes the things stand out in some weird angles.
"""
order: 0
dsc: "Ronald is standing in a dark room with a big {{window}}."
obj "walls",
dsc: "{{The walls}} are covered with a dingy rose wallpaper."
act: """
There are colorful photographs on the walls.
A wooden house in a forest.
A village on a mountaintop.
A family sitting around a fire.
A sunset burning in a vast ocean.
A black monolith standing on sand dunes.
"""
obj "door",
dsc: "Oh, and {{the door Ronald came into}} the apartment is there, too."
order: 99
act: (salet) ->
if salet.character.box_opened == 0
return "Ronald has a job here. It's still on."
else
salet.goTo("exitdoor")
obj "zane",
level: 1,
act: """
A three-part romantic urban fantasy detective about a girl who solves murders while dining
with her best werewolf friend in an Orient café.
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.
"""
obj "magic",
level: 1,
act: """
”Soviet Black Magic: a Lost Art”
The author, who calls himself The Master, describes the lost art of Soviet Union *magija.*
It's mostly about illusions.
This is a cheap paperback edition, but she read this at least a couple of times.
The pages have dogged ears, and coffee stains too.
Ronald can even see a hint of lipstick smearing the variety show retelling.
"""
obj "dictionary",
level: 1,
act: """
A big fat Dictionary of Everything, issued in 1989.
Nobody reads every page of these.
Ronald doubts Anastasia got to read at least one page.
"""
obj "silent",
level: 1,
act: """
Silent Things, a story where nothing speaks and nothing happens.
*And she actually read that.*
"""
obj "zaratustra",
level: 1,
act: (salet) ->
if salet.character.seen_zaratustra?
return """
This book already gave Ronald everything he wanted.
No need to read it, not a bit.
"""
else
money(salet, 20000)
return """
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.
"""
obj "pepper",
level: 1,
act: """
An "ironic woman detective" who plays harp and solves murders!
It's a trash book filled with blatant product placement. Looks untouched.
"""
obj "culinary",
level: 1,
act: "An old culinary book. Nothing about it."
obj "classico",
level: 1,
act: """
A history of classical music, from the prehistoric times to the 1970s, a brand new edition with passages about psychedelic rock.
The Bach section is bookmarked.
"""
obj "tv",
dsc: "#{objlink("A book stand", "bookcase")} is hanging above {{a television set.}}"
order: 1
act: """
An expensive 40-something inch TV standing on a stylish black stand. The room looks kinda small for that monster.
"""
obj "bookcase",
order: 0
act: """
Either Anastasia has a very conflicting taste in books, or she has no taste at all. Let's see...
#{objlink("“Soviet Black Magic: a Lost Art”,", "magic")}
#{objlink("”My Dinner with Zane”,", "zane")}
#{objlink("The Scientific Dictionary of Everything,", "dictionary")}
#{objlink("“Silent Things”,", "silent")}
#{objlink("”Also sprach Zarathustra”,", "zaratustra")}
#{objlink("”Pepperoni poker”,", "pepper")}
#{objlink("”Jazz sauce. Culinary collection”", "culinary")}
and #{objlink("Classico.", "classico")}
"""
]
room "bedroom", salet,
title: "Bedroom"
ways: ["living-room", "kitchen", "bathroom"]
after: (salet, from) ->
if from == "bathroom"
return "Ronald doesn't want to search the bathroom. It's too private a room to enter."
dsc: (salet) ->
return """
The bedroom is spacious; its walls are lavender green, almost white in the moonlight.
On the wall across #{objlink("a big bed", "bed")} hangs #{objlink("a full sized mirror.", "mirror")}
#{if salet.character.box_opened == 0
"On a small table near the bed is an ornate #{way_to("wooden box.", "box")}"
else ""}
"""
objects: [
obj "bed",
dsc: false,
order: 2
act: """
A double bed with flower-embroidered sheets.
She left several days ago.
The sheets are still fresh.
"""
obj "wardrobe",
dsc: "{{A massive wardrobe}} occupies one of the walls.",
order: 1,
act: """
Anastasia's wardrobe is very high-maintenance.
It has a built-in ironing board (with an iron hanged nearby), with 5 drawer rows for #{objlink("lingerie,", "lingerie")} #{objlink("accessories", "accessories")}, #{objlink("shoes.", "shoes")}, #{objlink("hats", "hats")} and.. #{objlink("audio players.", "mp3")}
On the hangers are #{objlink("cashmere coat,", "coat")} #{objlink("sport jacket,","jacket")} #{objlink("jeans,", "jeans")} #{objlink("green shirt,", "gshirt")} #{objlink("a red sleeveless shirt", "rshirt")}, #{objlink("an orange vest,", "vest")} #{objlink("knee-length flower dress,", "dress")} #{objlink("another flower dress,", "adress")} #{objlink("alpaca coat,","coat")} #{objlink("a short skirt", "skirt")} and #{objlink("a big collection of dancing costumes.", "costumes")}
"""
obj "coat",
level: 1
act: "A warm coat for the cold winter."
obj "jacket",
level: 1,
act: """
A light expensive jacket.
An unusual material, must be something high-tech.
It's slightly used.
"""
obj "jeans",
level: 1,
act: "Just a pair of women jeans, nothing special."
obj "gshirt",
level: 1,
act: """
A green shirt, looks very worn.
It's not remarkable in any way but maybe she just loves it very much.
"""
obj "rshirt",
level: 1,
act: """
A red women-cut shirt.
She didn't wear it much.
"""
obj "vest",
level: 1,
act: """
It looks like a life vest but actually it's a fashionable piece of warm clothing.
It was trendy last year.
*Why do I know this, is something wrong with me?*
"""
obj "dress",
level: 1,
act: """
Just a dress.
Lots of flower embroidery, no pockets.
*Impractical.*
"""
obj "adress",
level: 1,
act: "These flowers are not like that flowers."
obj "coat",
level: 1,
act: (salet) ->
if salet.character.seen_coat?
return """
A warm grey alpaca coat for the bleak autumn times.
It's one of her favorites.
"""
else
salet.character.seen_coat = 1
money(salet, 4000)
return """
A warm coat.. hey, what's this?
One of the pockets is loaded with cash!
"""
obj "skirt",
level: 1,
act: """
This hanger has only a short skirt.
Maybe there was something else on it?
Who knows.
"""
obj "costumes",
level: 1,
act: """
Ana is an exotic dancer.
She has her own dance style, and these exquisite costumes are made just for her moves and motions.
"""
obj "mp3",
level: 1,
act: """
Wow, this woman LOVES her players!
There are MP3 players, CD players, portable DVD, walk-on clips, sport hands-free players, underwater ones.
These are all rather cheap, though, compared to *something else* in this room.
"""
obj "hats",
level: 1,
act: """
These look very old-style, very Mary Poppins-like.
Maybe that's just a trend or whatever.
"""
obj "lingerie",
level: 1,
act: "Ronald won't be digging in that."
obj "accessories",
level: 1,
act: """
A cross necklace, three metal bracelets and lots of uncomplicated earrings and hair pins.
A dozen of scarfs or so.
No diamonds, no rings, no *jewelry.*
On the other hand, her Instagram nickname is *bareboned mane shaker.*
"""
obj "shoes",
level: 1,
act: """
Anastasia doesn't care for the footwear fashion.
These 4 pairs of combat boots and 13 pairs of ballet flats can attest that.
Of course, there are sandals, loafers, flat dress shoes.. That's a strong dislike for heels... or maybe it's a medical problem?
"""
obj "mirror",
order: 3
dsc: false
act: """
The mirror looks directly at the bed.
Kinky, though not very much *Feng Shui* in it.
#{objlink("The frame","frame")} depicts various artists (all women) making sculptures of men.
It's a very *unusual* art.
"""
obj "frame",
level: 1,
act: """
On a close examination, the frame isn't attached to the wall.
There is #{objlink("a safe", "safe")} behind the mirror!
"""
obj "safe",
level: 2
act: (salet) ->
if salet.character.seen_safe?
return """
The safe is locked with a regular lock.
Ronald tries two keys.
The first of them opens the door.
There are #{objlink("money", "money")} inside, and #{objlink("a rough sketch.", "sketch")}
"""
else
return """
The safe is open now.
There is #{objlink("a rough sketch", "sketch")} inside.
"""
obj "money",
level: 3
act: (salet) ->
salet.character.seen_safe = 1
money(salet, 50000)
return """
It's a big cash pile.
Odd that she didn't take this when she left.
But someone's fault just makes Ronald's payday now.
"""
obj "sketch",
level: 3
act: """
It's a portrait of Anastasia.
She bites her lower lip slightly.
Her eyes are sad, or maybe concerned with something.
The sketch is signed: *"L. Y. - 2017"*
"""
]
room "kitchen", salet,
title: "Kitchen"
ways: ["living-room", "bedroom"]
dsc: """
The white, perfectly clean kitchen could be called spartan: #{objlink("a fridge,", "fridge")} a microwave
and #{objlink("a big table", "table")} where one can eat whatever she "cooked" that way.
"""
objects: [
obj "fridge",
dsc: ""
act: """
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.
"""
obj "table",
dsc: ""
act: (salet) ->
if salet.character.seen_table?
return "A letter's still there. Nothing new about it."
else
salet.character.seen_table = 1
return """
There's something on the table.
It looks like a formal letter.
It's in French, though, so Ronald won't be able to read it.
He's sure it's recent (`24.03.2018`) and it's about something-something QUANTUM AUDIO.. armement?
"""
]
room "bathroom", salet,
enter: (salet) ->
bedroom = salet.getRoom("bedroom")
index = bedroom.ways.indexOf("bathroom")
bedroom.ways.splice(index, 1)
return salet.goTo("bedroom")
title: "Bathroom"
ways: ["bedroom"]
room "balcony", salet,
title: "Balcony"
ways: ["living-room"]
dsc: """
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 #{objlink("an ashtray","ashtray")} with some ash in it.
"""
objects: [
obj "ashtray",
dsc: false,
act: (salet) ->
salet.character.knows_the_code = 1
return """
She completely smoked out two cigarettes here.
There's also a #{objlink("piece of paper nearby,", "paper")} half-burnt.
"""
obj "paper",
level: 1,
act: """
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.*
"""
]
room "box", salet,
ways: ["bedroom"]
choices: "#box"
dsc: (salet) ->
return """
It's a red wood, very expensive.
And this box is locked with a digital code key.
#{if salet.isVisited(this.name) == 0
"""
Ronald takes out a vial from his pocket. He coats the keys with a bright white powder.
Only 1, 2, 7 and 0 keys are fingerprinted.
He wipes the box clean until there is no trace of the powder.
"""
}
"""
room "smash", salet,
canView: (salet) ->
salet.character.view_smash == 1
optionText: "Smash the box"
before: (salet) ->
salet.character.view_smash = 0
choices: "#box"
tags: ["box"]
dsc: "Ronald still needs the phone in this box. A very high-tech fragile phone. Smashing isn't an option."
safe_button = (number, salet) ->
room "put#{number}", salet,
choices: "#box"
tags: ["box"]
optionText: "Enter #{number}"
before: (salet) ->
code_input(salet, number)
canChoose: (salet) ->
code_can_input(salet)
dsc: (salet) -> """
Ronald presses button #{number}. The display is #{code_print(salet)} now.
"""
after: (salet) ->
code_check(salet)
safe_button(1, salet)
safe_button(2, salet)
safe_button(7, salet)
safe_button(0, salet)
room "reset", salet,
choices: "#box"
tags: ["box"]
optionText: "Reset the display"
before: (salet) ->
code_reset(salet)
dsc: """
Ronald presses Backspace until the display is empty.
"""
room "exitdoor", salet,
ways: ["living-room"]
choices: "#door"
dsc: """
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.
"""
room "finale", salet,
before: () ->
_paq.push(['setCustomDimension', 1, true])
$("#tools_wrapper").hide()
optionText: "Use the Phone"
tags: ["door"]
ways: []
dsc: (salet) -> """
"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 and plaid shirt.
*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 salet.character.money > 0
"The pocket is heavy with #{salet.character.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 learning something secret about your neighbors.
<center><h3>END</h3></center>
"""