Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =======================
- # Chartered Flight v1.0
- # =======================
- # --------------
- # 0.0 Contents
- # --------------
- #
- # * 1.0 Introduction
- # * 2.0 Version History
- # * 3.0 How to Install
- # * 3.1 Troubleshooting
- # * 4.0 How to Play
- # * 4.1 Cheating
- # * 5.0 Further Information
- # ------------------
- # 1.0 Introduction
- # ------------------
- #
- # Chartered Flight is a simple text based computer game written in Python. It is
- # inspired partly by the game Dwarf Fortress, a highly challenging game admired
- # for its ability to foster substantial emotional investment through the use of
- # nothing but ASCII characters and simple plaintext descriptions.
- #
- # It is also partly inspired by the game Rule of Rose, an exploratory horror game
- # featuring a tragic storyline, much of which is left open to interpretation, and
- # wide use of symbolism in the environment and events.
- #
- # The game is named after the Penguin Cafe Orchestra song by the same name.
- # ---------------
- # 2.0 Version History
- # ---------------
- #
- # * v1.0 released on 01/11/2014. At the time of writing, this is the only version.
- # --------------------
- # 3.0 How to Install
- # --------------------
- #
- # This game is written in Python 2.7.8. It should work under any version of
- # Python 2.x, but will not work under any version 3.x. To run the game you must
- # first download and install Python from https://www.python.org/downloads/. To
- # reiterate, you must download Python 2.[something], not 3.[something].
- #
- # If you are viewing this through Pastebin, just click "DOWNLOAD" at the top of
- # the page. Double click on the downloaded file to run.
- #
- # Otherwise, run IDLE (Python GUI), which should be installed alongside Python. Go
- # to File -> New File. Copy this entire block of text, including this commented
- # section, and paste it into the blank file. Save it as "Chartered Flight.py".
- # Find the file and double click on it to run.
- #
- # As a general rule, it is not a good idea to run large amounts of code just
- # because somebody on the internet tells you to. On principle, I would recommend
- # putting it through a virus scanner first. Rest assured that, as it doesn't
- # reference any outside files, nor even import any modules, there's not a lot it
- # would be able to do anyway.
- # ---------------------
- # 3.1 Troubleshooting
- # ---------------------
- #
- # Q: Double clicking on the file doesn't do anything.
- # A: Make sure that the file has the .py file extension, and that the .py file
- # extension is registered to Python. To make sure, right click, choose "open
- # with" and choose Python.exe. If that doesn't work, try running it as an
- # administrator or something similar.
- #
- # Q: Double clicking on the file opens a window, but it closes straight away.
- # A: The most likely answer is that you downloaded Python 3.x instead of 2.x. For
- # more detailed information, run IDLE (Python GUI), which should be installed
- # with Python, choose open, and choose Chartered Flight.py. Press F5 to run. It
- # should come up with an error message in red. If it's complaining about the
- # "print" function, it's almost certainly the wrong version of Python.
- #
- # Q: The program crashes/closes suddenly when trying to do something in the game.
- # A: It is guaranteed to be possible to reach every ending in the game as it is,
- # so just don't do whatever caused it. If you wish to help, report the bug in
- # the discussion thread in the Further Information section below.
- #
- # Q: The backslashes all show up as yen symbols.
- # A: You are running the program under Japanese system locale. I recommend
- # googling "How to change system locale" plus your operating system for
- # instructions on how to change it. For best results, use English (UK) or
- # English (USA).
- #
- # Q: The window is too small, or the text runs onto multiple lines where it
- # shouldn't.
- # A: Open IDLE (Python GUI), which should be installed with Python. Choose
- # Options, then Configure IDLE. Choose the General tab at the top. The Initial
- # Window Size (in characters) should be set to at least Width: 80, Height: 40.
- #
- # Q: I only ever get the "grey" ending.
- # A: See the section on Cheating, below.
- # -----------------
- # 4.0 How to Play
- # -----------------
- #
- # At all times, the game should have a prompt that looks like ">" at the bottom of
- # the screen. Type your command in there. If what's immediately above is a menu
- # with numbers, such as:
- #
- # 1: Leave room
- # 2: Do nothing
- #
- # then enter a number. If it's a plan of a room, such as:
- #
- # +------+
- # +----X-+
- # |hT |
- # | g|
- # +------+
- #
- # then enter a single letter to look at or interact with that object. Choosing a
- # character that's part of the room, such as -, | or + will give a description of
- # the room. If you enter more than one letter, only the first one will count.
- #
- # There are also two other commands: entering "h" or "H" will show the help screen
- # and entering "i" or "I" will open your inventory. From here, you can look at
- # items or interact with them, such as emptying the glass bowl or reading the
- # letters.
- #
- # In order to reach the end of the game, you must complete six specific tasks.
- # There are several ways of doing each of them, and which way you choose will
- # affect which ending you get.
- # --------------
- # 4.1 Cheating
- # --------------
- #
- # To enable cheating, right click on Chartered Flight.py, select "Edit with IDLE",
- # scroll down to this point in the file and change "False" below to "True". Note
- # that it is case sensitive; "True", not "true".
- debug_mode = False
- # This does three things: firstly, upon completing any task it will say "Your
- # vision flashes [colour]", which gives a hint as to which ending you are heading
- # for.
- #
- # Secondly, you can enter the command "c" or "C" to check the current count for
- # each colour. In order to reach an ending other than grey, one value must be
- # greater than win_condition (see below).
- #
- # Finally, you can enter the command "r" or "R" to teleport to another room.
- # The names of the rooms are "cockpit", "fuselage", "metal detector", "morgue",
- # "gallery", "atrium", "corridor", "annexe" and "library".
- #
- #
- # If you are having difficulty reaching a particular ending, change the 5 below to
- # 4. If, on the other hand, you are a perfectionist, change it to 6. Note that a
- # value of 5 is already quite challenging, especially for reaching the "black"
- # ending. Do not set it to anything other than 4, 5 or 6.
- win_condition = 5
- # -------------------------
- # 5.0 Further Information
- # -------------------------
- #
- # A thread for discussion of the game can be found at
- # http://tohno-chan.com/cr/res/2447.html
- #
- # If you wish to contact the author directly, send an email to
- # eoyabosan[at]gmail.com. I cannot guarantee a response.
- #
- # This work is released under no licence in particular. Anyone is free to copy,
- # modify or plagiarise to their heart's content.
- # What follows is the code itself. It contains spoilers, so I highly recommend
- # not reading any further.
- if debug_mode not in [False, True]:
- debug_mode = True
- elif win_condition not in [4, 5, 6]:
- win_condition = 5
- room_map = {
- "cockpit":" +===+\n /+===+\\ \n +/&%%&%\+\n +% A O %+\n | |\n +---X---+",
- "fuselage": " +---------------------+\n +-X-o-o-o-o-o-o-o-o-o-+\n | P t-t L L L L L |\n | P | | D X\n | t=t L L L L L |\n +---------------------+",
- "metal detector": " +----+-+\n +-X--|-+\\ \n | M \\\\ \n +----+ \\\\ \n \\ \\+----+\n \\ +--X-+\n \\ |\n +----X-+",
- "morgue": " +---------+\n +-u-u-g-u-+\n | u |\n |t=t |\n +----+ |\n | |\n +--X-+",
- "gallery": " +-+\n / \\\n +-+ g +-+\n | | , | |\n +-+-----+-+\n | 4 |\n X X\n | |\n +----X----+",
- "atrium": " +---+\n /+---+\\ \n +/ \\+\n | |\n X o |\n + +\n \\ /\n +---+",
- "corridor": " +---+\n +-X-+\\\n \\ \\+-+==+-+\n + +-+u=+-+\n + +==+ X\n /+ +------+\n +/ /\n +-X-+",
- "annexe": " +----+\n / __ \\\n + [__] +\n +--------+\n | A |\n | |\n | |\n +-X------+",
- "library": " +=======y==+\n | [mmn]|\n +--X--[mmm]+\n | [mmm]|\n |N |\n + +\n \\ f /\n +------+"}
- room_desc = {
- "cockpit": "You are in the cockpit of an aircraft.",
- "fuselage": "You are in the cabin of an aircraft. The walls are lined with identical seats\nand small, round windows.",
- "metal detector": "You are in a sloping corridor.",
- "morgue": "You are in a room lined with white tiles. It appears to be a morgue.",
- "gallery": "You are in a large, high ceilinged room.",
- "atrium": "You are in a small, echoing octagonal room with a domed ceiling.",
- "corridor": "You are in a dimly lit, bare corridor.",
- "annexe": "You are in a large, almost empty room with wooden floorboards and rafters.",
- "library": "You are in an old, rundown room with wooden panels on the walls."}
- object_desc = {
- "cockpit": {
- "=": "In front of you is the aircraft windshield.",
- "%": "There is a panel of flight instruments in front of you.",
- "&": "There is a panel of flight instruments in front of you.",
- "A": "There is an angel in the copilot's seat.",
- "O": "You are seated in the pilot's seat.",
- "X": "There is a closed door behind you."},
- "fuselage": {
- "=": "There is an empty hospital bed in the middle of the room.",
- "t": "There is an empty hospital bed in the middle of the room.",
- "L": "There are rows of seating facing towards the front of the plane.",
- "o": "There are small round windows set into the wall.",
- "P": "There are two grieving parents standing by the bed.",
- "D": "There is a doctor standing by the bed.",
- "X": "There are exits to the north and east.",},
- "metal detector": {
- "X": "There are exits to the northwest, northeast and south.",
- "M": "There is a metal detector to the northwest."},
- "morgue": {
- "X": "There is an exit to the south.",
- "g": "There is a dead girl on a sliding shelf in the northern wall.",
- "u": "There are four sliding shelves in the northern wall.",
- "t": "There is an operating table in the corner of the room.",
- "=": "There is an operating table in the corner of the room."},
- "atrium": {
- "X": "There is an exit to the west.",
- "o": "There is a human heart hanging from the ceiling by a string."},
- "gallery": {
- "X": "There are exits to the east, west and south.",
- "g": "There is a large picture of a girl on the wall.",
- "4": "There is an easel with a canvas and paintbrush in the room.",
- ",": "There is a butterfly resting on the picture, wings spread."},
- "corridor": {
- "X": "There are exits to the north and east.",
- "=": "There is a stack of shelves against the wall.",
- "u": "There is a bottle of ink on the shelf."},
- "annexe": {
- "X": "There is an exit to the south.",
- "[": "Sunlight filters in through a window in the northern wall.",
- "_": "Sunlight filters in through a window in the northern wall.",
- "]": "Sunlight filters in through a window in the northern wall.",
- "A": "The angel from the cockpit is standing by the window."},
- "library": {
- "X": "There is an exit to the north.",
- "=": "There is a pipe along the ceiling, near the wall.",
- "y": "The pipe is leaking water onto the bookshelf.",
- "[": "There is a bookshelf against the wall, under the pipe.",
- "]": "There is a bookshelf against the wall, under the pipe.",
- "m": "The books on the bookshelf are soaked and illegible.",
- "n": "There is one book, in the upper corner, that is still unsoiled.",
- "f": "There is a statue of a cat at the end of the room.",
- "N": "There is a grandfather clock against the west wall."}}
- item_desc = {
- "a ring in your hand": "It is a plain, unadorned gold ring.",
- "a ring on your finger": "It is a plain, unadorned gold ring.",
- "a ring around your neck": "It is a plain, unadorned gold ring on a silver chain.",
- "an empty glass bowl": "It is a simple glass bowl, about the size of your hand.",
- "a glass bowl of ink": "It is a simple glass bowl filled mostly with ink.",
- "a glass bowl of blood": "It is a simple glass bowl filled mostly with blood.",
- "a glass bowl of water": "It is a simple glass bowl filled mostly with water.",
- "a glass bowl of watered down ink": "It is a simple glass bowl filled with ink mixed with water.",
- "a butterfly trapped under a glass bowl": "It is a red, black and white butterfly, trapped in a glass bowl by a bundle of\nletters.",
- "a roll of bandages": "It is a roll of medical bandages."}
- cockpit_A_look = False
- cockpit_A_talk = False
- morgue_g_inspect = False
- metal_detector_ring = False
- atrium_o_destroy = False
- annexe_A_letters = False
- annexe_window_bandage = False
- annexe_letters_read = False
- library_f_bowl = False
- bandage_used = False
- ovum_end = False
- larva_end = False
- task_colour = {
- "ring": "grey",
- "painting": "grey",
- "butterfly": "grey",
- "heart": "grey",
- "letters": "grey",
- "water": "grey"}
- colour_count = {"white": 0, "red": 0, "black": 0}
- def colour_update(task_colour, colour_count, task, colour):
- if debug_mode:
- print "Your vision momentarily flashes " + colour + "."
- task_colour[task] = colour
- colour_count = {"white": 0, "red": 0, "black": 0}
- for task in task_colour:
- for colour in ["white", "red", "black"]:
- if task_colour[task] == colour:
- colour_count[colour] += 1
- return task_colour, colour_count
- heart = 0
- heart_desc = {
- 0: "There is a large gash in its side, from which blood is pouring.",
- 1: "There is a large gash in its side, from which blood is pouring.",
- 2: "There is a large gash in its side, from which blood is seeping.",
- 3: "There is a large gash in its side, from which blood is dripping.",
- 4: "It hangs limply, blood dripping steadily from it.",
- 5: "It is drooping and discoloured. Blood still drips from it.",
- 6: "It is bruised in colour and has begun to rot. Blood still drips from it.",
- 7: "It is wrapped in bandages."}
- painting_desc = {
- "grey": "The canvas is blank.",
- ##### #-------------------------------------------------------------------------------|
- "white": "There is a portrait painted, in ink, of a girl. She is looking away with a\nneutral expression on her face.",
- "red": "There is a portrait painted, in blood, of a girl. She has a strange twisted\nsmile.",
- "black": "There is a portrait painted, in watered down ink, of a girl. She stares\nstraight at you, chin in hands, smiling gently."}
- time = {
- 0: "midnight.",
- 1: "one o'clock.",
- 2: "two o'clock.",
- 3: "three o'clock.",
- 4: "four o'clock.",
- 5: "five o'clock.",
- 6: "six o'clock."}
- def ovum_A_whoareyou(command, ovum_end):
- ##### #-------------------------------------------------------------------------------|
- print "She frowns."
- print "\"You really have forgotten, haven't you?\""
- print
- print "1: Stay silent"
- print "2: \"I'm sorry.\""
- command = choice(command, 2)
- if command == "1":
- print "\"Not that it matters,\" she mutters offhandedly."
- elif command == "2":
- print "She gives a short burst of laughter."
- print "\"Oh, it's not your fault, dear.\""
- print
- print "1: \"Where am I?\""
- print "2: \"Are you an angel?\""
- command = choice(command, 2)
- if command == "1":
- ovum_A_whereamI(command, ovum_end)
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "She smiles, a genuine, honest smile, and says \"Well, maybe you haven't"
- print "forgotten everything.\""
- print "Then a look comes across her face as though she just remembered something"
- print "unpleasant, and her smile dissolves. You are left at a loss as to what to say."
- return ovum_end
- def ovum_A_whereamI(command, ovum_end):
- ##### #-------------------------------------------------------------------------------|
- print "She laughs gently, and responds, facetiously, \"You're on a plane!\""
- print "You say nothing. After a moment, she speaks again, more seriously."
- print "\"I'm sorry. You don't seem in the mood for jokes.\""
- print
- print "1: \"Why are we here?\""
- print "2: \"How did we get here?\""
- print "3: \"Where is this plane going?\""
- command = choice(command, 3)
- if command == "1":
- ovum_end = ovum_A_whyarewehere(command, ovum_end)
- elif command == "2":
- ovum_end = ovum_A_howdidwegethere(command, ovum_end)
- elif command == "3":
- ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
- return ovum_end
- def ovum_A_whyarewehere(command, ovum_end):
- print "\"Hmm, I wonder...\" she muses, hand on chin."
- print "\"Did you do something you shouldn't have?\""
- print
- print "1: \"I don't know.\""
- print "2: \"I don't think so.\""
- command = choice(command, 2)
- if command == "1":
- print "She says nothing, but has a curious look on her face."
- elif command == "2":
- print "\"Of course, these things are relative, aren't they?\" she says, smiling."
- print
- print "1: \"Where is this plane going?\""
- print "2: \"How did we get here?\""
- command = choice(command, 2)
- if command == "1":
- ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
- elif command == "2":
- ovum_end = ovum_A_howdidwegethere(command, ovum_end)
- return ovum_end
- def ovum_A_howdidwegethere(command, ovum_end):
- ##### #-------------------------------------------------------------------------------|
- print "\"That depends... What's the last thing you remember?\""
- print "You concede that you do not remember anything meaningful. She responds,"
- print "cryptically, \"In that case, I can't tell you anything yet.\""
- print "You lack the strength to argue."
- print
- print "1: \"Why are we here?\""
- print "2: \"Where is this plane going?\""
- command = choice(command, 2)
- if command == "1":
- ovum_end = ovum_A_whyarewehere(command, ovum_end)
- elif command == "2":
- ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
- return ovum_end
- def ovum_A_whereisthisgoing(command, ovum_end):
- ##### #-------------------------------------------------------------------------------|
- print "She gestures at the windshield, through which you can see nothing but ocean"
- print "and sky."
- print "\"Absolutely nowhere.\""
- print "You are about to reply, when she speaks again."
- print "\"But where could we be going, do you think?\""
- print
- print "1: \"I don't know.\""
- print "2: \"I think I can guess.\""
- command = choice(command, 2)
- if command == "1":
- print "She appears disappointed."
- print "\"Guess, then.\""
- print
- ovum_end = ovum_A_endings(command, ovum_end)
- return ovum_end
- def ovum_A_endings(command, ovum_end):
- ovum_A_questions = ["\"The plane could land somewhere.\"", "\"The plane could crash.\"", "\"The plane could keep flying.\""]
- ovum_A_white = False
- ovum_A_red = False
- ovum_A_grey_black = False
- proceed = True
- while proceed:
- if "Say nothing" not in ovum_A_questions and (ovum_A_white or ovum_A_red or ovum_A_grey_black):
- ovum_A_questions.append("Say nothing")
- for question in ovum_A_questions:
- print str(ovum_A_questions.index(question) + 1) + ": " + question
- command = choice(command, len(ovum_A_questions))
- if "\"The plane could land somewhere.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could land somewhere.\"") + 1):
- ##### #-------------------------------------------------------------------------------|
- print "\"Indeed it could,\" she replies, \"That would be the proper thing for it to"
- print "do, don't you think? It's what planes are supposed to do; what happens when"
- print "everything is done correctly.\""
- print "A shadow passes over her face."
- print "\"But we cannot land on the ocean. We must keep flying first - and we may also"
- print "require a change of course. Now, do you think this is possible? Could you land"
- print "this plane?\""
- print
- print "1: \"Yes.\""
- print "2: \"No.\""
- command = choice(command, 2)
- print "\"I see,\" she comments."
- print "\"Any other ideas?\""
- print
- ovum_A_white = True
- ovum_A_questions.remove("\"The plane could land somewhere.\"")
- elif "\"The plane could crash.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could crash.\"") + 1):
- ##### #-------------------------------------------------------------------------------|
- print "Her eyes light up momentarily."
- print "\"It could! Just imagine it, the fiery bloom of an explosion, neatly and"
- print "beautifully ending everything onboard. Quite... alluring, don't you think?\""
- print "She tilts her head slightly, then continues."
- print "\"But could you actually do it? Kill yourself - and myself, for that matter - "
- print "and condemn this aircraft to blackened wreckage? Could you?\""
- print
- print "1: \"Yes.\""
- print "2: \"No.\""
- command = choice(command, 2)
- print "She smiles."
- print "\"I see,\" she purrs."
- print "\"Any other ideas?\""
- print
- ovum_A_red = True
- ovum_A_questions.remove("\"The plane could crash.\"")
- elif "\"The plane could keep flying.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could keep flying.\"") + 1):
- ##### #-------------------------------------------------------------------------------|
- print "\"No, no it couldn't.\""
- print "Her eyebrows knit together."
- print "\"Or maybe it could, but it oughtn't to. That would solve nothing, and you and"
- print "I have been here too long already. I mean, could you really stand to just sit"
- print "here forever, staring at the same damned ocean until you die and rot away?"
- print "I know I couldn't, but could you?\""
- print
- print "1: \"Yes.\""
- print "2: \"No.\""
- print "3: \"That is not what I meant.\""
- command = choice(command, 3)
- if command in ["1", "2"]:
- print "She says stares at you silently for a few seconds."
- elif command == "3":
- ##### #-------------------------------------------------------------------------------|
- print "She looks away and is silent for quite a while. Finally, she speaks again,"
- print "quietly, almost hesitantly."
- print "\"Did you, then, mean to... to keep flying, but to actually move forwards? I'm"
- print "not sure if that's even possible any more. I have been here so long, I can"
- print "scarcely believe there could be anything beyond the horizon but more damned"
- print "ocean. Is that what you meant? Can you fly us away?\""
- print
- print "1: \"Yes.\""
- print "2: \"No.\""
- command = choice(command, 2)
- print "\"I see,\" she says eventually."
- ovum_A_grey_black = True
- ovum_A_questions.remove("\"The plane could keep flying.\"")
- print "\"Any other ideas?\""
- print
- elif command == str(len(ovum_A_questions)) and (ovum_A_white or ovum_A_red or ovum_A_grey_black):
- ##### #-------------------------------------------------------------------------------|
- print "The angel turns away and gazes out of the windshield. The conversation dies"
- print "away, for good."
- proceed = False
- return True
- def ovum_A(command, ovum_end):
- print "You take a breath and speak."
- print
- print "1: \"Hello.\""
- print "2: \"Who are you?\""
- print "3: \"Where am I?\""
- command = choice(command, 3)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "She turns and smiles to you."
- print "\"Hello again, dear.\""
- print
- print "1: \"Again?\""
- print "2: \"Where am I?\""
- command = choice(command, 2)
- if command == "1":
- print "Her smile takes on a slightly painful tinge."
- print "The conversation quietly dies away."
- elif command == "2":
- ovum_end = ovum_A_whereamI(command, ovum_end)
- elif command == "2":
- ovum_end = ovum_A_whoareyou(command, ovum_end)
- elif command == "3":
- ovum_end = ovum_A_whereamI(command, ovum_end)
- return ovum_end
- def letters(command, annexe_letters_read):
- ##### #-------------------------------------------------------------------------------|
- print "It is a bundle of letters. There are nine of them, each dated, from April to"
- print "December."
- print
- print "1: Read them"
- print "2: Do nothing"
- stop_reading = False
- command = choice(command, 2)
- if command == "1":
- annexe_letters_read = True
- while not stop_reading:
- print "1: April"
- print "2: May"
- print "3: June"
- print "4: July"
- print "5: August"
- print "6: September"
- print "7: October"
- print "8: November"
- print "9: December"
- command = choice(command, 9)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print " Dear x,"
- print " Thank you for giving me your address. I hope this reaches you safely."
- print " Please write back as soon as you can."
- print " Yours,"
- print " g"
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print " Dear x,"
- print " I am so glad to hear from you again. I had missed you so. If only we"
- print " could be together in person - the mountains in Spring are beautiful;"
- print " I'm sure you would love it. Please find enclosed a pressed flower from"
- print " the mountainside near my home."
- print " Yours,"
- print " g"
- elif command == "3":
- ##### #-------------------------------------------------------------------------------|
- print " Dear x,"
- print " Thank you for your letter. I wasn't aware you were so interested in"
- print " butterflies. To answer your question, yes, there's a lot of them here:"
- print " mostly the large white and small blue ones at this time of year, but"
- print " there are also lovely yellows and ones with mosaic patterns on their"
- print " wings. I have enclosed a particularly beautiful black, red and white "
- print " one I caught in a nearby valley."
- print " Yours,"
- print " g"
- elif command == "4":
- ##### #-------------------------------------------------------------------------------|
- print " My dear x,"
- print " I must be honest, I really don't understand why you're so upset. It was"
- print " only a butterfly. They don't live long anyway, you know. And how could"
- print " I possibly send it alive? Surely you agree, the dead butterfly is at"
- print " least as beautiful as the living."
- print " Yours,"
- print " g"
- elif command == "5":
- ##### #-------------------------------------------------------------------------------|
- print " My dear, dear x,"
- print " I am so sorry. Please, write to me again, I miss you dreadfully."
- print " Yours,"
- print " g"
- elif command == "6":
- ##### #-------------------------------------------------------------------------------|
- print " Dearest x,"
- print " Thank you for your kind words. I am sorry to have been so insensitive."
- print " Those weeks without word from you made me realise just how much you"
- print " mean to me. Please, don't leave me; I don't think I could bear the rest"
- print " of my life alone."
- print " Yours,"
- print " g"
- elif command == "7":
- ##### #-------------------------------------------------------------------------------|
- print " My dear x,"
- print " Though it is still only Autumn, I can feel the Winter descending upon"
- print " me. The conifers outside my window cry in the wind, day and night. The"
- print " snow has spirited away all the wildflowers and butterflies and"
- print " everything of colour or movement. The only thing that keeps me going"
- print " is your love, the only warmth left in my world."
- print " Yours,"
- print " g"
- elif command == "8":
- ##### #-------------------------------------------------------------------------------|
- print " But it's mad, isn't it? That still I write to you, though I have"
- print " received no word in twelve weeks. What happened? Are my letters no"
- print " longer getting through, or are you unable to reply? Or unwilling? Do"
- print " you still think about me, as I think about you? I cannot sleep or eat"
- print " for lack of answers."
- elif command == "9":
- ##### #-------------------------------------------------------------------------------|
- print " Dear x,"
- print " I am afraid this is goodbye. I tried so very hard to forge a life for"
- print " myself in this world, but this is a battle I must concede. If you are"
- print " reading this, if you still care at all, all I ask is that you join me."
- print " Even if we had to walk on this earth apart, we can fly away from it"
- print " together."
- print " Yours,"
- print " g"
- print
- print "1: Continue reading"
- print "2: Stop reading"
- command = choice(command, 2)
- if command == "2":
- stop_reading = True
- return annexe_letters_read
- room = "cockpit"
- inv = []
- def choice(command, number):
- command_range = []
- while number > 0:
- command_range.append(str(number))
- number -= 1
- command = "invalid"
- while command not in command_range:
- command = (raw_input(">") + " ")[0]
- if command not in command_range and command != "invalid":
- print "Command \"" + command + "\" not in menu. Choose from",
- command = ""
- for item in command_range:
- command += str(item + ",",)
- print command[:-1] + "."
- print
- return command
- proceed = True
- while proceed:
- ##### #-------------------------------------------------------------------------------|
- print " "
- print " # # "
- print " ######, \ / ,###### "
- print " #:#####::##, \ / ,##::#####:# "
- print " ##:###:::####@@#, \ / ,#@@####:::###:## "
- print " '#####:::###@@#####, \/ ,#####@@###:::#####' "
- print " '#::######@@##########&&##########@@######::#' "
- print " #::#:##@@@##########&&&&##########@@@##:#::# "
- print " ######@@############&&&&############@@###### "
- print " '##@@@############&&&&############@@@##' "
- print " ,##@@############&&&&############@@##, "
- print " ##################&&################## "
- print " #################&&&&################# "
- print " #################&&&&################# "
- print " @@###############&&&&###############@@ "
- print " '@@@@#############&&#############@@@@' "
- print " @@@@@@@@####################@@@@@@@@ "
- print " '@@@@@@@@@@@@@#''#@@@@@@@@@@@@@' "
- print " '@@@@@@@@@@' '@@@@@@@@@@' "
- print "Chartered Flight v1.0"
- print
- print "1: Start game"
- print "2: Help"
- print "3: Exit"
- command = ""
- command = choice(command, 3)
- if command == "1":
- proceed = False
- elif command == "2":
- print "At all times, the game should have a prompt that looks like \">\" at the bottom"
- print "of the screen. Type your command in there. If what's immediately above is a"
- print "menu with numbers, such as:"
- print
- print "1: Leave room"
- print "2: Do nothing"
- print
- print "then enter a number. In the menu below, enter \"1\" to continue."
- print
- print "1: Continue"
- command = choice(command, 1)
- print "If it's a plan of a room, such as:"
- print
- print " +------+"
- print " +----X-+"
- print " |hT |"
- print " | g|"
- print " +------+"
- print
- print "then enter a single letter to look at or interact with that object. Choosing a"
- print "character that's part of the room, such as -, | or + will give a description of"
- print "the room. If you enter more than one letter, only the first one will count."
- print
- print "1: Continue"
- command = choice(command, 1)
- print "There are also two other commands: entering \"h\" or \"H\" will show the help"
- print "screen and entering \"i\" or \"I\" will open your inventory. From here, you can"
- print "look at items or interact with them, such as emptying the glass bowl or reading"
- print "the letters."
- print
- print "In order to reach the end of the game, you must complete six specific tasks."
- print "There are several ways of doing each of them, and which way you choose will"
- print "affect which ending you get."
- print
- print "1: Return to menu"
- print "2: Start game"
- command = choice(command, 2)
- if command == "2":
- proceed = False
- elif command == "3":
- name = error
- print room_desc[room]
- proceed = True
- while proceed == True:
- if not larva_end and "grey" not in task_colour.values():
- print
- print "A faintly distorted voice speaks over the intercom."
- print "\"The pilot's presence is required in the cockpit.\""
- larva_end = True
- print
- print room_map[room]
- print
- command = (raw_input(">") + " ")[0]
- # General commands
- if command in ["h", "H"]:
- print "Help:"
- print
- print "At all times, the game should have a prompt that looks like \">\" at the bottom"
- print "of the screen. Type your command in there. If what's immediately above is a"
- print "menu with numbers, such as:"
- print
- print "1: Leave room"
- print "2: Do nothing"
- print
- print "then enter a number. In the menu below, enter \"1\" to continue."
- print
- print "1: Continue"
- command = choice(command, 1)
- print "If it's a plan of a room, such as:"
- print
- print " +------+"
- print " +----X-+"
- print " |hT |"
- print " | g|"
- print " +------+"
- print
- print "then enter a single letter to look at or interact with that object. Choosing a"
- print "character that's part of the room, such as -, | or + will give a description of"
- print "the room. If you enter more than one letter, only the first one will count."
- print
- print "1: Continue"
- command = choice(command, 1)
- print "There are also two other commands: entering \"h\" or \"H\" will show the help"
- print "screen and entering \"i\" or \"I\" will open your inventory. From here, you can"
- print "look at items or interact with them, such as emptying the glass bowl or reading"
- print "the letters."
- print
- print "In order to reach the end of the game, you must complete six specific tasks."
- print "There are several ways of doing each of them, and which way you choose will"
- print "affect which ending you get."
- print
- print "1: Return to game"
- command = choice(command, 1)
- elif command in ["i", "I"]:
- if len(inv) == 0:
- print "You have nothing in your inventory."
- else:
- prinv = ""
- for item in inv:
- prinv += item + ", "
- prinv = prinv[:-2] + "."
- print "You are currently carrying " + prinv
- print
- if len(inv) == 1:
- print "1: Look at " + inv[0]
- else:
- print "1: Look at items"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- if len(inv) > 1:
- inv_incr = 0
- for item in inv:
- print str(inv_incr + 1) + ": Look at " + inv[inv_incr]
- inv_incr += 1
- command = choice(command, len(inv))
- if inv[int(command) - 1] == "a bundle of letters":
- annexe_letters_read = letters(command, annexe_letters_read)
- if annexe_letters_read:
- task_colour["letters"] = "red"
- else:
- task_colour["letters"] = "black"
- else:
- print item_desc[inv[int(command) - 1]]
- if inv[int(command) - 1] in [
- "a glass bowl of water",
- "a glass bowl of blood",
- "a glass bowl of ink",
- "a glass bowl of watered down ink"]:
- print
- print "1: Empty the bowl"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- print "You empty the glass bowl onto the floor."
- for item in [
- "a glass bowl of water",
- "a glass bowl of blood",
- "a glass bowl of ink",
- "a glass bowl of watered down ink"]:
- if item in inv:
- inv.remove(item)
- inv.append("an empty glass bowl")
- elif len(inv) == 1:
- print item_desc[inv[0]]
- elif command in ["+", "|", "/", "-", "\\"]:
- print room_desc[room]
- elif command in ["c", "C"] and debug_mode:
- print "Red:", colour_count["red"]
- print "White:", colour_count["white"]
- print "Black:", colour_count["black"]
- elif command in ["r", "R"] and debug_mode:
- print "Choose room:"
- room = ""
- while room not in room_map:
- room = raw_input(">")
- elif command in object_desc[room]:
- print object_desc[room][command]
- # Cockpit
- if room == "cockpit":
- if command == "A":
- print
- print "1: Look at her"
- print "2: Talk to her"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "She is tall and thin, with deathly pale skin, black hair and maroon eyes. She"
- print "is dressed entirely in grey."
- if not cockpit_A_look:
- print "\"It's rude to stare,\" she says, smiling."
- cockpit_A_look = True
- else:
- print "She stares straight ahead, out of the window."
- elif command == "2":
- if not cockpit_A_talk:
- ##### #-------------------------------------------------------------------------------|
- print "\"Hello there,\" she says. You try to reply, but the words stick in your throat."
- cockpit_A_talk = True
- elif not ovum_end:
- ovum_end = ovum_A(command, ovum_end)
- if ovum_end not in [True, False]:
- ovum_end = True
- elif ovum_end and not larva_end:
- print "\"I believe you have somewhere else to be, my dear.\""
- elif ovum_end and larva_end:
- proceed = False
- elif command == "=":
- print
- print "1: Look out"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "You can see nothing but blue skies and, far below, ocean. There are a few thin"
- print "streaks of clouds near the horizon."
- elif command == "X":
- print
- print "1: Leave"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- if not ovum_end:
- print "The angel in the in the copilot's seat turns and speaks to you."
- print "\"Leaving so soon? I'll get lonely.\""
- print
- print "1: Leave anyway"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- ovum_end = True
- cockpit_A_talk = True
- room = "fuselage"
- print room_desc[room]
- elif larva_end:
- print "You have no reason to go back."
- else:
- room = "fuselage"
- print room_desc[room]
- # Fuselage
- elif room == "fuselage":
- if command == "X":
- print
- print "1: Leave by east exit"
- print "2: Leave by north exit"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- if not larva_end:
- print "You cannot bear to face her again."
- else:
- room = "cockpit"
- print room_desc[room]
- elif command == "2":
- room = "metal detector"
- print room_desc[room]
- if "P" in object_desc["fuselage"]:
- room_map["fuselage"] = (room_map["fuselage"].replace("P", " ")).replace("D", " ")
- del object_desc["fuselage"]["P"]
- del object_desc["fuselage"]["D"]
- elif command == "o":
- print
- print "1: Look out"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "You can see nothing but ocean and open sky out of any of the windows."
- elif command == "P":
- print "They move with jerky motions, like automota or marionettes."
- print "\"Such a shame. Such a shame.\" the father says."
- print "The mother sobs quietly into her open hands."
- elif command == "D":
- print "He moves with jerky motions, like an automaton or a marionette."
- print "He shakes his head back and forth, a grim look on his face."
- # Metal detector
- elif room == "metal detector":
- if command == "X":
- print
- print "1: Leave by northwest exit"
- print "2: Leave by northeast exit"
- print "3: Leave by south exit"
- print "4: Do nothing"
- command = choice(command, 4)
- if command == "1":
- if metal_detector_ring:
- print "As you pass through the metal detector, it goes off."
- print "The northwest door unlocks with a click."
- room = "gallery"
- print room_desc[room]
- else:
- print "As you pass through the metal detector, nothing happens."
- print "The door is locked."
- elif command == "2":
- if metal_detector_ring and "a butterfly trapped under a glass bowl" not in inv:
- print "You don't want to go back there unless you have to."
- else:
- room = "morgue"
- print room_desc[room]
- elif command == "3":
- room = "fuselage"
- print room_desc[room]
- # Morgue
- elif room == "morgue":
- if command == "X":
- print
- print "1: Leave"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- room = "metal detector"
- print room_desc[room]
- elif command == "g":
- if "a butterfly trapped under a glass bowl" not in inv:
- print
- print "1: Look at her"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- if not metal_detector_ring:
- ##### #-------------------------------------------------------------------------------|
- print "She is completely nude. She is very thin, likely underweight. Her hair is"
- print "short, black and unkempt. Her eyes are closed. Her hands are clasped together"
- print "at her breast."
- print
- print "1: Kiss her"
- print "2: Hold her hand"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- print "You cannot bring yourself to do it."
- elif command == "2":
- print "Tightly clasped in her hands, you find a gold ring on a chain."
- print
- print "1: Take it"
- print "2: Do nothing"
- command = ""
- command = choice(command, 2)
- if command == "1":
- print "1: Keep it in your hand"
- print "2: Put it on your finger"
- print "3: Hang it around your neck"
- command = choice(command, 3)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "You take the ring from the chain and hold it in your right hand. It is cold and"
- print "inert."
- inv.append("a ring in your hand")
- task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "white")
- elif command == "2":
- print "You take the ring from the chain and put it on your finger. It feels familiar"
- print "and comfortable."
- inv.append("a ring on your finger")
- task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "red")
- elif command == "3":
- print "You hang the ring around your neck by the chain. It feels strangely heavy."
- inv.append("a ring around your neck")
- task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "black")
- metal_detector_ring = True
- else:
- print "She is completely nude. She is very thin, likely underweight. Her hair is"
- print "short, black and unkempt. Her eyes are closed. Her hands are open and empty."
- else:
- print
- print "1: Look at her"
- print "2: Release the butterfly"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "She is completely nude. She is very thin, likely underweight. Her hair is"
- print "short, black and unkempt. Her eyes are closed. Her hands are open and empty."
- elif command == "2":
- print "The butterfly climbs into her mouth and disappears into the darkness within."
- inv.remove("a butterfly trapped under a glass bowl")
- inv.append("an empty glass bowl")
- inv.append("a bundle of letters")
- task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "black")
- elif command == "u":
- print "Three of them are closed."
- print
- print "1: Open one"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- print "They will not move."
- # Gallery
- elif room == "gallery":
- if command == "X":
- print
- print "1: Leave by west exit"
- print "2: Leave by east exit"
- print "3: Leave by south exit"
- print "4: Do nothing"
- command = choice(command, 4)
- if command == "1":
- room = "corridor"
- print room_desc[room]
- elif command == "2":
- room = "atrium"
- print room_desc[room]
- if heart < 7:
- heart += 1
- if heart == 7:
- room_map["atrium"] = room_map["atrium"].replace("o", ".")
- del object_desc["atrium"]["o"]
- object_desc["atrium"]["."] = "There are rotting shreds of flesh on the floor."
- task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "black")
- elif command == "3":
- room = "metal detector"
- print room_desc[room]
- elif command == ",":
- print
- print "1: Talk to it"
- print "2: Capture it"
- print "3: Kill it"
- print "4: Do nothing"
- command = choice(command, 4)
- if command == "1":
- print "1: \"Hello.\""
- print "2: \"Why are you here?\""
- print "3: \"What do you want from me?\""
- command = choice(command, 3)
- if command == "1":
- print "The butterfly twitches its wings slightly."
- elif command == "2":
- print "The butterfly makes no response."
- elif command == "3":
- ##### #-------------------------------------------------------------------------------|
- print "The butterfly crawls around on the face of the girl in the picture and twitches"
- print "its antennae meaningfully."
- elif command == "2":
- if "an empty glass bowl" in inv:
- print "1: Capture it in your hands"
- print "2: Capture it under your glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "The butterfly eludes your grasp."
- elif command == "2":
- print "The butterfly is trapped between the bowl and the surface of the picture."
- if "a bundle of letters" in inv:
- print
- print "1: Set it free"
- print "2: Trap it using a letter"
- command = choice(command, 2)
- if command == "1":
- print "The butterfly returns to where it was before."
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "You slip one of the letters between the bowl and the picture behind it. The"
- print "butterfly is trapped inside."
- print "You are now carrying a butterfly trapped under a glass bowl."
- inv.append("a butterfly trapped under a glass bowl")
- inv.remove("a bundle of letters")
- inv.remove("an empty glass bowl")
- room_map["gallery"] = room_map["gallery"].replace(",", " ")
- del object_desc["gallery"][","]
- else:
- ##### #-------------------------------------------------------------------------------|
- print "The butterfly is trapped, but you cannot move without setting it free again."
- print
- print "1: Set it free"
- command = choice(command, 1)
- print "The butterfly returns to where it was before."
- else:
- print "The butterfly eludes your grasp."
- elif command == "3":
- if "a bundle of letters" in inv:
- print "1: Kill it by hand"
- print "2: Kill it using a letter"
- command = choice(command, 2)
- if command == "1":
- print "The butterfly eludes your grasp."
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "You strike the butterfly with one of the letters. It drops to the floor, dead."
- room_map["gallery"] = room_map["gallery"].replace(",", " ")
- del object_desc["gallery"][","]
- task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "red")
- else:
- print "The butterfly eludes your grasp."
- elif command == "4":
- print painting_desc[task_colour["painting"]]
- if task_colour["painting"] == "grey":
- print
- print "1: Paint onto the canvas"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- if "a glass bowl of ink" in inv:
- ##### #-------------------------------------------------------------------------------|
- print "You paint a portrait, in ink, of a girl. She is looking away with a neutral"
- print "expression on her face."
- task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "white")
- elif "a glass bowl of blood" in inv:
- print "You paint a portrait, in blood, of a girl. She has a strange twisted smile."
- task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "red")
- elif "a glass bowl of watered down ink" in inv:
- print "You paint a portrait, in watered down ink, of a girl. She stares straight at"
- print "you, chin in hands, smiling gently."
- task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "black")
- elif "a glass bowl of water" in inv:
- print "You cannot paint with water alone."
- else:
- print "You do not have anything to paint with."
- # Atrium
- elif room == "atrium":
- if command == "X":
- print
- print "1: Leave"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- room = "gallery"
- print room_desc[room]
- elif command == "o":
- print heart_desc[heart]
- if heart < 7:
- print
- print "1: Collect the blood"
- print "2: Destroy it"
- if "a roll of bandages" in inv:
- print "3: Bandage it"
- print "4: Do nothing"
- command = choice(command, 4)
- else:
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- if "an empty glass bowl" in inv:
- print "1: Collect the blood in your hands"
- print "2: Collect the blood in the glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "You half fill the bowl with blood."
- inv.remove("an empty glass bowl")
- inv.append("a glass bowl of blood")
- else:
- ##### #-------------------------------------------------------------------------------|
- print "You attempt to collect the blood in your hands, but it slips through your"
- print "fingers."
- elif command == "2":
- if not atrium_o_destroy:
- print "You are overcome with nausea even thinking of touching it with your bare hands."
- atrium_o_destroy = True
- else:
- print "You are overcome with anger and tear it to pieces by hand."
- room_map["atrium"] = room_map["atrium"].replace("o", ".")
- del object_desc["atrium"]["o"]
- object_desc["atrium"]["."] = "There are bloody shreds of flesh on the floor."
- task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "red")
- elif command == "3" and "a roll of bandages" in inv:
- ##### #-------------------------------------------------------------------------------|
- print "You wrap the bandages around the torn flesh as best you can."
- print "They are stained crimson, saturated with blood, but adequate. The heart stops"
- print "bleeding."
- if not bandage_used:
- bandage_used = True
- item_desc["a roll of bandages"] += " There is not much left."
- else:
- print "The roll of bandages has run out."
- inv.remove("a roll of bandages")
- heart = 7
- task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "white")
- # Corridor
- elif room == "corridor":
- if command == "X":
- print
- print "1: Leave by north exit"
- print "2: Leave by east exit"
- print "3: Leave by south exit"
- print "4: Do nothing"
- command = choice(command, 4)
- if command == "1":
- room = "annexe"
- print room_desc[room]
- elif command == "2":
- room = "gallery"
- print room_desc[room]
- elif command == "3":
- room = "library"
- print room_desc[room]
- elif command == "u":
- print
- print "1: Collect the ink"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- if "an empty glass bowl" in inv:
- print "1: Collect the ink in your hands"
- print "2: Collect the ink in the glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "You half fill the bowl with ink."
- inv.remove("an empty glass bowl")
- inv.append("a glass bowl of ink")
- elif "a glass bowl of water" in inv:
- print "1: Collect the ink in your hands"
- print "2: Add the ink to the water in the glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "The ink is watered down."
- inv.remove("a glass bowl of water")
- inv.append("a glass bowl of watered down ink")
- elif "a glass bowl of blood" in inv:
- print "1: Collect the ink in your hands"
- print "2: Add the ink to the blood in the glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "The ink sinks into the blood without a trace. The contents of the bowl look the"
- print "same as before."
- else:
- ##### #-------------------------------------------------------------------------------|
- print "You attempt to collect the ink in your hands, but it slips through your"
- print "fingers."
- # Annexe
- elif room == "annexe":
- if command == "X":
- print
- print "1: Leave"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- room = "corridor"
- print room_desc[room]
- elif command == "A":
- if not annexe_A_letters:
- print "Without a word, she holds out a bundle of papers to you."
- print
- print "1: Talk to her"
- print "2: Take the papers"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- print "\"Take them,\" she implores."
- elif command == "2":
- inv.append("a bundle of letters")
- annexe_A_letters = True
- annexe_letters_read = letters(command, annexe_letters_read)
- if annexe_letters_read:
- task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "red")
- else:
- task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "black")
- else:
- print "She ignores you and stares out the window."
- print
- print "1: Talk to her"
- print "2: Return the letters to her"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- print "1: \"Hello\""
- print "2: \"What are these?\""
- command = choice(command, 2)
- if not larva_end:
- print "She does not respond."
- else:
- print "\"I believe you're wanted elsewhere,\" she says."
- elif command == "2":
- print "You hold out the letters to her."
- print "She looks surprised, but accepts them."
- inv.remove("a bundle of letters")
- annexe_A_letters = False
- task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "white")
- elif command in ["[", "_", "]"]:
- if not annexe_window_bandage:
- print "There is a roll of bandages on the windowsill."
- print
- if "a butterfly trapped under a glass bowl" in inv:
- print "1: Look out"
- print "2: Release the butterfly"
- if not annexe_window_bandage:
- print "3: Take the bandages"
- print "4: Do nothing"
- command = choice(command, 4)
- else:
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- print "You can see nothing but open skies and ocean. The sun has sunken into the haze"
- print "near the horizon."
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "The butterfly flies, a little hesitantly, away out of the window, and out of"
- print "sight."
- inv.remove("a butterfly trapped under a glass bowl")
- inv.append("an empty glass bowl")
- inv.append("a bundle of letters")
- task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "white")
- elif command == "3" and not annexe_window_bandage:
- print "You are now carrying a roll of bandages."
- inv.append("a roll of bandages")
- annexe_window_bandage = True
- else:
- print "1: Look out"
- if not annexe_window_bandage:
- print "2: Take the bandages"
- print "3: Do nothing"
- command = choice(command, 3)
- else:
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- print "You can see nothing but open skies and ocean. The sun has sunken into the haze"
- print "near the horizon."
- elif command == "2" and not annexe_window_bandage:
- print "You are now carrying a roll of bandages."
- inv.append("a roll of bandages")
- annexe_window_bandage = True
- # Library
- elif room == "library":
- if command == "X":
- print
- print "1: Leave"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- room = "corridor"
- print room_desc[room]
- elif command == "f":
- if not library_f_bowl:
- print "It is staring into a glass bowl at its feet."
- print
- print "1: Take the bowl"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- print "You are now carrying an empty glass bowl."
- inv.append("an empty glass bowl")
- library_f_bowl = True
- else:
- print "It stares pensively at the floor."
- elif command == "y":
- if task_colour["water"] == "grey":
- print
- print "1: Collect the water"
- print "2: Stop the flow of water"
- print "3: Do nothing"
- command = choice(command, 3)
- if command == "1":
- if "an empty glass bowl" in inv:
- print "1: Collect the water in your hands"
- print "2: Collect the water in the glass bowl"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "You half fill the bowl with water."
- inv.remove("an empty glass bowl")
- print
- print "1: Take the glass bowl"
- print "2: Leave the glass bowl under the leaking pipe"
- command = choice(command, 2)
- if command == "1":
- print "You are now carrying a glass bowl of water."
- inv.append("a glass bowl of water")
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "The water slowly collects into the bowl, rather than flowing onto the books."
- task_colour, colour_count = colour_update(task_colour, colour_count, "water", "black")
- object_desc["library"]["y"] = "The pipe is leaking water into a glass bowl."
- elif "a glass bowl of blood" in inv:
- print "1: Collect the water in your hands"
- print "2: Add the water to the glass bowl of blood"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "The contents of the bowl looks just the same."
- elif "a glass bowl of ink" in inv:
- print "1: Collect the water in your hands"
- print "2: Add the water to the glass bowl of ink"
- command = choice(command, 2)
- if command == "1":
- print "It slips through your fingers."
- elif command == "2":
- print "The ink is watered down."
- inv.remove("a glass bowl of ink")
- inv.append("a glass bowl of watered down ink")
- else:
- ##### #-------------------------------------------------------------------------------|
- print "You attempt to collect the water in your hands, but it slips through your"
- print "fingers."
- elif command == "2":
- if "a roll of bandages" not in inv:
- print "You try to stop the flow by hand, but it still seeps through."
- else:
- print "1: Stop the flow by hand."
- print "2: Wrap the bandages around the pipe"
- print "3: Stuff the bandages into the pipe"
- command = choice(command, 3)
- if command == "1":
- print "You try to stop the flow by hand, but it still seeps through."
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "You wrap the bandages several times around the pipe. It eventually stops"
- print "leaking."
- task_colour, colour_count = colour_update(task_colour, colour_count, "water", "white")
- object_desc["library"]["y"] = "The pipe is wrapped in bandages."
- if not bandage_used:
- bandage_used = True
- item_desc["a roll of bandages"] += " There is not much left."
- else:
- print "The roll of bandages has run out."
- inv.remove("a roll of bandages")
- elif command == "3":
- print "You bunch up the bandages and push them into the pipe, blocking it."
- inv.remove("a roll of bandages")
- task_colour, colour_count = colour_update(task_colour, colour_count, "water", "red")
- object_desc["library"]["y"] = "The pipe is blocked by a pile of bandages."
- elif task_colour["water"] == "black":
- print
- print "1: Take the bowl"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- inv.append("a glass bowl of water")
- object_desc["library"]["y"] = "The pipe is leaking water onto the bookshelf."
- elif command == "N":
- print "It shows the time as being " + time[6 - (colour_count["red"] + colour_count["white"] + colour_count["black"])]
- elif command == "n":
- print "It is a book on lepidopterology; the study of butterflies and moths."
- print
- print "1: Read it"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- print "1: Read about life cycle"
- print "2: Read about behaviour"
- print "3: Read about identification"
- command = choice(command, 3)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "The life cycle of lepidoptera has four stages. They begin life as eggs, often"
- print "laid hundreds at a time. Upon hatching, they become caterpillars (larva). At"
- print "this stage, their sole purpose is to gather enough nutrients to undergo"
- print "metamorphosis. As such, they consume prolific amounts of plant material. Once"
- print "they have consumed enough, they spin a chrysalis or cocoon (pupa), in which"
- print "their body undergoes complete change to become the butterfly or moth (imago)."
- print "The imago mates and lays eggs, perpetuating the cycle."
- elif command == "2":
- ##### #-------------------------------------------------------------------------------|
- print "Behaviour in the larval instar consists almost entirely of eating, and the"
- print "creature is effectively sessile while unhatched or as pupa. Thus, the majority"
- print "of complex behaviour occurs in the imago. Contrary to the popular impression of"
- print "butterflies as being gentle, harmless, serendipitous creatures, many species"
- print "are in fact highly territorial. Males will fight amongst themselves over food,"
- print "females, and host plants for egg-laying. This fighting usually takes the form"
- print "of flying around one another in a rising helix, followed by the dominant"
- print "individual chasing the other away."
- elif command == "3":
- ##### #-------------------------------------------------------------------------------|
- print "The imago can be identified by colour, pattern and shape of wings, size,"
- print "and the form of the legs and antennae. Identification of lepidoptera at other"
- print "development stages is more difficult, but not impossible. Note that the larva"
- print "typically moults several times and may look different each time."
- if "a butterfly trapped under a glass bowl" in inv:
- print
- print "1: Identify the butterfly trapped under the glass bowl"
- print "2: Do nothing"
- command = choice(command, 2)
- if command == "1":
- ##### #-------------------------------------------------------------------------------|
- print "It is a Vanessa atalanta, otherwise known as the Red Admiral. They are a common"
- print "sight in the temperate regions of the northern hemisphere. The wings are mostly"
- print "black, with bright red strips and white patches on the tips of the forewings."
- else:
- print "Command \"" + command + "\" not recognised. Try entering H for help."
- ##### #-------------------------------------------------------------------------------|
- print "\"Welcome back,\" she says, \"I'm glad you could join me again. That's not to"
- print "say you actually had any choice not to come back - after all, there is no"
- print "choice any more, is there?\""
- print
- print "1: \"No, there isn't.\""
- command = choice(command, 1)
- if colour_count["white"] > win_condition:
- ##### #-------------------------------------------------------------------------------|
- print "She smiles; a strange, lopsided smile. Her eyes can't quite meet yours."
- print "\"Well, I'll leave it to you, then,\" she says quietly."
- print
- print "1: Take the controls"
- command = choice(command, 1)
- print "You steer the aircraft, banking it gently to the left. There are clouds on the"
- print "horizon."
- print
- print "1: Wait"
- command = choice(command, 1)
- print "After a few minutes, a long, sandy coast appears on the horizon. Beyond it is"
- print "a flat, featureless expanse of grassland."
- print "\"I suppose this is it, isn't it?\""
- print
- print "1: \"Yes.\""
- command = choice(command, 1)
- print "You carefully angle the nose downwards, flicking all the right switches in the"
- print "proper landing procedure."
- print "\"I wish it had ended differently, but... really, it's hard to deny that this is"
- print "for the best.\""
- print
- print "1: Land"
- command = choice(command, 1)
- print "The aircraft slows and meets the ground, coming to a stop in the long, waving"
- print "grass. You get up and make your way to the exit of the cockpit. You spare one"
- print "glance back at the angel in the copilot's seat. She smiles as sweetly as ever"
- print "she did before, but her eyes are glazed with tears."
- print
- print "1: Leave"
- command = choice(command, 1)
- print "And somewhere, in a hospital bed thousands of miles away, a young man in a coma"
- print "begins to return to lucidity. The process is slow and painful, and it is weeks"
- print "before he can even stand unaided. He suffers almost complete retrograde amnesia"
- print "and can remember nothing of how he ended up in this state - nor is he ever"
- print "told."
- print
- print "He is left with a severe, lifelong fear of flying."
- print
- print "Ending two of four: White"
- print
- print "1: Exit"
- command = choice(command, 1)
- elif colour_count["red"] > win_condition:
- ##### #-------------------------------------------------------------------------------|
- print "She giggles mischievously."
- print "\"Well, I'll leave it to you, then,\" she purrs, stroking the back of your hand."
- print
- print "1: Take the controls"
- command = choice(command, 1)
- print "You steer the aircraft, banking it gently to the right, and increase the speed"
- print "via the throttle."
- print
- print "1: Wait"
- command = choice(command, 1)
- print "After a few minutes, a little greyish green patch appears on the horizon. As"
- print "you near, it coalesces into an island, with steep, grey cliffs and windblown"
- print "conifers."
- print "\"I suppose this is it, isn't it?\""
- print
- print "1: \"Yes.\""
- command = choice(command, 1)
- print "You angle the nose of the plane downwards, straight towards the rocks at the"
- print "base of the cliff, and accelerate further. You feel yourself pushed back into"
- print "your seat."
- print "\"Are you afraid?\""
- print
- print "1: \"Yes.\""
- command = choice(command, 1)
- print "\"So am I. I am afraid of death. I wish there were another way, but there is"
- print "no choice any more.\""
- print "Outside the window, the view of the cliff inflates further and further, filling"
- print "your entire vision. You hold her hand."
- print
- print "1: Crash"
- command = choice(command, 1)
- print "And somewhere, in a hospital bed thousands of miles away, a young man in a coma"
- print "falls into cardiac arrest. Despite the best efforts of the doctors and nurses,"
- print "he cannot be revived, and slips away into death."
- print
- print "Ending three of four: Red"
- print
- print "1: Exit"
- command = choice(command, 1)
- elif colour_count["black"] > win_condition:
- ##### #-------------------------------------------------------------------------------|
- print "She smiles; a beautiful, carefree, almost childlike smile."
- print "\"I really didn't think it was possible.\""
- print
- print "1: Smile"
- command = choice(command, 1)
- print "You smile back at her, a mirror to her emotions."
- print "\"Well, I'll leave it to you, then,\" she says in a melodious voice."
- print
- print "1: Take the controls"
- command = choice(command, 1)
- print "You gently pull back on the throttle, letting the aircraft slow to a more"
- print "comfortable pace. Then, one by one, you cut power to the engines, leaving you"
- print "gliding silently through the air."
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "The two of you sit back and enjoy the silence, absent of that mechanical hum"
- print "that you'd forgotten you could even hear; and enjoy the view, the shapes of the"
- print "clouds, and the colour of the sea and the sky."
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "You spend days, or months, or years like that, watching the world turn beneath"
- print "you. Occasionally you talk, or laugh, or kiss, safe in the knowledge that this"
- print "is how things should be; that nothing more needs to be done."
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "And somewhere, in a hopsital bed thousands of miles away, a young man in a coma"
- print "lies still, body relaxed, a faint smile on his face. Even as the months pass,"
- print "as his muscles waste away and his pulse grows ever weaker, he makes no effort"
- print "at all. \"Why won't he wake up?\" lament his parents, his doctors, the world."
- print
- print "At last, his body fails, or a plug is pulled, but it doesn't matter for he has"
- print "already won."
- print
- print "Ending four of four: Black"
- print
- print "1: Exit"
- command = choice(command, 1)
- else:
- ##### #-------------------------------------------------------------------------------|
- print "She sighs."
- print "\"I know you tried - believe me, I do - but trying alone is not enough. Perhaps"
- print "you did set everything in order to appease yourself, but, ultimately, you"
- print "lacked the conviction to set the two of us free.\""
- print
- print "1: Say nothing"
- command = choice(command, 1)
- print "She gestures towards the panel of flight instruments in front of you."
- print "\"You know what? Go on, you take the controls. Do something.\""
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "\"Look, the throttle is right there, under your hand. Just take it and push it"
- print "forwards.\""
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "\"There! There's a whole board of switches. Try pressing some of them.\""
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "\"It's so easy to imagine simply reaching out and taking control, isn't it? But"
- print "it's not that easy.\""
- print "She looks down at her lap, fists clenched, tears of frustration forming in the"
- print "corners of her eyes."
- print "\"It's not that easy.\""
- print
- print "1: Do nothing"
- command = choice(command, 1)
- print "Outside the windshield, the ocean and sky extend onwards forever, beyond the"
- print "horizon, an infinite, meaningless void."
- print
- print "Most butterflies do not make it to the imago stage; they are killed by"
- print "predators, parasites, disease, starvation, pesticide or even simply poor"
- print "weather. Thankfully, they lay eggs by the hundreds - sometimes thousands -"
- print "so, though the individual may die, somewhere, some other creature will succeed."
- print
- print "Ending one of four: Grey"
- print
- print "1: Exit"
- command = choice(command, 1)
- # Immediately above this is the code for the endings, which contains major
- # spoilers. I highly recommend not scrolling up from here.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement