Advertisement
Chartered_Flight

Chartered Flight

Nov 1st, 2014
528
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 90.84 KB | None | 0 0
  1. # =======================
  2. #  Chartered Flight v1.0
  3. # =======================
  4.  
  5. # --------------
  6. #  0.0 Contents
  7. # --------------
  8. #
  9. # * 1.0 Introduction
  10. # * 2.0 Version History
  11. # * 3.0 How to Install
  12. #  * 3.1 Troubleshooting
  13. # * 4.0 How to Play
  14. #  * 4.1 Cheating
  15. # * 5.0 Further Information
  16.  
  17. # ------------------
  18. #  1.0 Introduction
  19. # ------------------
  20. #
  21. # Chartered Flight is a simple text based computer game written in Python. It is
  22. # inspired partly by the game Dwarf Fortress, a highly challenging game admired
  23. # for its ability to foster substantial emotional investment through the use of
  24. # nothing but ASCII characters and simple plaintext descriptions.
  25. #
  26. # It is also partly inspired by the game Rule of Rose, an exploratory horror game
  27. # featuring a tragic storyline, much of which is left open to interpretation, and
  28. # wide use of symbolism in the environment and events.
  29. #
  30. # The game is named after the Penguin Cafe Orchestra song by the same name.
  31.  
  32. # ---------------
  33. #  2.0 Version History
  34. # ---------------
  35. #
  36. # * v1.0 released on 01/11/2014. At the time of writing, this is the only version.
  37.  
  38. # --------------------
  39. #  3.0 How to Install
  40. # --------------------
  41. #
  42. # This game is written in Python 2.7.8. It should work under any version of
  43. # Python 2.x, but will not work under any version 3.x. To run the game you must
  44. # first download and install Python from https://www.python.org/downloads/. To
  45. # reiterate, you must download Python 2.[something], not 3.[something].
  46. #
  47. # If you are viewing this through Pastebin, just click "DOWNLOAD" at the top of
  48. # the page. Double click on the downloaded file to run.
  49. #
  50. # Otherwise, run IDLE (Python GUI), which should be installed alongside Python. Go
  51. # to File -> New File. Copy this entire block of text, including this commented
  52. # section, and paste it into the blank file. Save it as "Chartered Flight.py".
  53. # Find the file and double click on it to run.
  54. #
  55. # As a general rule, it is not a good idea to run large amounts of code just
  56. # because somebody on the internet tells you to. On principle, I would recommend
  57. # putting it through a virus scanner first. Rest assured that, as it doesn't
  58. # reference any outside files, nor even import any modules, there's not a lot it
  59. # would be able to do anyway.
  60.  
  61. # ---------------------
  62. #  3.1 Troubleshooting
  63. # ---------------------
  64. #
  65. # Q: Double clicking on the file doesn't do anything.
  66. # A: Make sure that the file has the .py file extension, and that the .py file
  67. #    extension is registered to Python. To make sure, right click, choose "open
  68. #    with" and choose Python.exe. If that doesn't work, try running it as an
  69. #    administrator or something similar.
  70. #
  71. # Q: Double clicking on the file opens a window, but it closes straight away.
  72. # A: The most likely answer is that you downloaded Python 3.x instead of 2.x. For
  73. #    more detailed information, run IDLE (Python GUI), which should be installed
  74. #    with Python, choose open, and choose Chartered Flight.py. Press F5 to run. It
  75. #    should come up with an error message in red. If it's complaining about the
  76. #    "print" function, it's almost certainly the wrong version of Python.
  77. #
  78. # Q: The program crashes/closes suddenly when trying to do something in the game.
  79. # A: It is guaranteed to be possible to reach every ending in the game as it is,
  80. #    so just don't do whatever caused it. If you wish to help, report the bug in
  81. #    the discussion thread in the Further Information section below.
  82. #
  83. # Q: The backslashes all show up as yen symbols.
  84. # A: You are running the program under Japanese system locale. I recommend
  85. #    googling "How to change system locale" plus your operating system for
  86. #    instructions on how to change it. For best results, use English (UK) or
  87. #    English (USA).
  88. #
  89. # Q: The window is too small, or the text runs onto multiple lines where it
  90. #    shouldn't.
  91. # A: Open IDLE (Python GUI), which should be installed with Python. Choose
  92. #    Options, then Configure IDLE. Choose the General tab at the top. The Initial
  93. #    Window Size (in characters) should be set to at least Width: 80, Height: 40.
  94. #
  95. # Q: I only ever get the "grey" ending.
  96. # A: See the section on Cheating, below.
  97.  
  98. # -----------------
  99. #  4.0 How to Play
  100. # -----------------
  101. #
  102. # At all times, the game should have a prompt that looks like ">" at the bottom of
  103. # the screen. Type your command in there. If what's immediately above is a menu
  104. # with numbers, such as:
  105. #
  106. # 1: Leave room
  107. # 2: Do nothing
  108. #
  109. # then enter a number. If it's a plan of a room, such as:
  110. #
  111. # +------+
  112. # +----X-+
  113. # |hT    |
  114. # |     g|
  115. # +------+
  116. #
  117. # then enter a single letter to look at or interact with that object. Choosing a
  118. # character that's part of the room, such as -, | or + will give a description of
  119. # the room. If you enter more than one letter, only the first one will count.
  120. #
  121. # There are also two other commands: entering "h" or "H" will show the help screen
  122. # and entering "i" or "I" will open your inventory. From here, you can look at
  123. # items or interact with them, such as emptying the glass bowl or reading the
  124. # letters.
  125. #
  126. # In order to reach the end of the game, you must complete six specific tasks.
  127. # There are several ways of doing each of them, and which way you choose will
  128. # affect which ending you get.
  129.  
  130. # --------------
  131. #  4.1 Cheating
  132. # --------------
  133. #
  134. # To enable cheating, right click on Chartered Flight.py, select "Edit with IDLE",
  135. # scroll down to this point in the file and change "False" below to "True". Note
  136. # that it is case sensitive; "True", not "true".
  137.  
  138. debug_mode = False
  139.  
  140. # This does three things: firstly, upon completing any task it will say "Your
  141. # vision flashes [colour]", which gives a hint as to which ending you are heading
  142. # for.
  143. #
  144. # Secondly, you can enter the command "c" or "C" to check the current count for
  145. # each colour. In order to reach an ending other than grey, one value must be
  146. # greater than win_condition (see below).
  147. #
  148. # Finally, you can enter the command "r" or "R" to teleport to another room.
  149. # The names of the rooms are "cockpit", "fuselage", "metal detector", "morgue",
  150. # "gallery", "atrium", "corridor", "annexe" and "library".
  151. #
  152. #
  153. # If you are having difficulty reaching a particular ending, change the 5 below to
  154. # 4. If, on the other hand, you are a perfectionist, change it to 6. Note that a
  155. # value of 5 is already quite challenging, especially for reaching the "black"
  156. # ending. Do not set it to anything other than 4, 5 or 6.
  157.  
  158. win_condition = 5
  159.  
  160. # -------------------------
  161. #  5.0 Further Information
  162. # -------------------------
  163. #
  164. # A thread for discussion of the game can be found at
  165. # http://tohno-chan.com/cr/res/2447.html
  166. #
  167. # If you wish to contact the author directly, send an email to
  168. # eoyabosan[at]gmail.com. I cannot guarantee a response.
  169. #
  170. # This work is released under no licence in particular. Anyone is free to copy,
  171. # modify or plagiarise to their heart's content.
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182. # What follows is the code itself. It contains spoilers, so I highly recommend
  183. # not reading any further.
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210. if debug_mode not in [False, True]:
  211.     debug_mode = True
  212.  
  213. elif win_condition not in [4, 5, 6]:
  214.     win_condition = 5
  215.  
  216. room_map = {
  217.     "cockpit":"   +===+\n  /+===+\\ \n +/&%%&%\+\n +% A O %+\n |       |\n +---X---+",
  218.     "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 +---------------------+",
  219.     "metal detector": " +----+-+\n +-X--|-+\\ \n |    M  \\\\ \n +----+   \\\\ \n       \\   \\+----+\n        \\   +--X-+\n         \\       |\n          +----X-+",
  220.     "morgue": " +---------+\n +-u-u-g-u-+\n |     u   |\n |t=t      |\n +----+    |\n      |    |\n      +--X-+",
  221.     "gallery": "     +-+\n    /   \\\n +-+  g  +-+\n | |  ,  | |\n +-+-----+-+\n |      4  |\n X         X\n |         |\n +----X----+",
  222.     "atrium": "   +---+\n  /+---+\\ \n +/     \\+\n |       |\n X   o   |\n +       +\n  \\     /\n   +---+",
  223.     "corridor": " +---+\n +-X-+\\\n  \\   \\+-+==+-+\n   +   +-+u=+-+\n   +     +==+ X\n  /+   +------+\n +/   /\n +-X-+",
  224.     "annexe": "   +----+\n  /  __  \\\n +  [__]  +\n +--------+\n |    A   |\n |        |\n |        |\n +-X------+",
  225.     "library": " +=======y==+\n |     [mmn]|\n +--X--[mmm]+\n |     [mmm]|\n |N         |\n +          +\n  \\   f    /\n   +------+"}
  226.  
  227. room_desc = {
  228.     "cockpit": "You are in the cockpit of an aircraft.",
  229.     "fuselage": "You are in the cabin of an aircraft. The walls are lined with identical seats\nand small, round windows.",
  230.     "metal detector": "You are in a sloping corridor.",
  231.     "morgue": "You are in a room lined with white tiles. It appears to be a morgue.",
  232.     "gallery": "You are in a large, high ceilinged room.",
  233.     "atrium": "You are in a small, echoing octagonal room with a domed ceiling.",
  234.     "corridor": "You are in a dimly lit, bare corridor.",
  235.     "annexe": "You are in a large, almost empty room with wooden floorboards and rafters.",
  236.     "library": "You are in an old, rundown room with wooden panels on the walls."}
  237.            
  238. object_desc = {
  239.     "cockpit": {
  240.         "=": "In front of you is the aircraft windshield.",
  241.         "%": "There is a panel of flight instruments in front of you.",
  242.         "&": "There is a panel of flight instruments in front of you.",
  243.         "A": "There is an angel in the copilot's seat.",
  244.         "O": "You are seated in the pilot's seat.",
  245.         "X": "There is a closed door behind you."},
  246.     "fuselage": {
  247.         "=": "There is an empty hospital bed in the middle of the room.",
  248.         "t": "There is an empty hospital bed in the middle of the room.",
  249.         "L": "There are rows of seating facing towards the front of the plane.",
  250.         "o": "There are small round windows set into the wall.",
  251.         "P": "There are two grieving parents standing by the bed.",
  252.         "D": "There is a doctor standing by the bed.",
  253.         "X": "There are exits to the north and east.",},
  254.     "metal detector": {
  255.         "X": "There are exits to the northwest, northeast and south.",
  256.         "M": "There is a metal detector to the northwest."},
  257.     "morgue": {
  258.         "X": "There is an exit to the south.",
  259.         "g": "There is a dead girl on a sliding shelf in the northern wall.",
  260.         "u": "There are four sliding shelves in the northern wall.",
  261.         "t": "There is an operating table in the corner of the room.",
  262.         "=": "There is an operating table in the corner of the room."},
  263.     "atrium": {
  264.         "X": "There is an exit to the west.",
  265.         "o": "There is a human heart hanging from the ceiling by a string."},
  266.     "gallery": {
  267.         "X": "There are exits to the east, west and south.",
  268.         "g": "There is a large picture of a girl on the wall.",
  269.         "4": "There is an easel with a canvas and paintbrush in the room.",
  270.         ",": "There is a butterfly resting on the picture, wings spread."},
  271.     "corridor": {
  272.         "X": "There are exits to the north and east.",
  273.         "=": "There is a stack of shelves against the wall.",
  274.         "u": "There is a bottle of ink on the shelf."},
  275.     "annexe": {
  276.         "X": "There is an exit to the south.",
  277.         "[": "Sunlight filters in through a window in the northern wall.",
  278.         "_": "Sunlight filters in through a window in the northern wall.",
  279.         "]": "Sunlight filters in through a window in the northern wall.",
  280.         "A": "The angel from the cockpit is standing by the window."},
  281.     "library": {
  282.         "X": "There is an exit to the north.",
  283.         "=": "There is a pipe along the ceiling, near the wall.",
  284.         "y": "The pipe is leaking water onto the bookshelf.",
  285.         "[": "There is a bookshelf against the wall, under the pipe.",
  286.         "]": "There is a bookshelf against the wall, under the pipe.",
  287.         "m": "The books on the bookshelf are soaked and illegible.",
  288.         "n": "There is one book, in the upper corner, that is still unsoiled.",
  289.         "f": "There is a statue of a cat at the end of the room.",
  290.         "N": "There is a grandfather clock against the west wall."}}
  291.  
  292. item_desc = {
  293.     "a ring in your hand": "It is a plain, unadorned gold ring.",
  294.     "a ring on your finger": "It is a plain, unadorned gold ring.",
  295.     "a ring around your neck": "It is a plain, unadorned gold ring on a silver chain.",
  296.     "an empty glass bowl": "It is a simple glass bowl, about the size of your hand.",
  297.     "a glass bowl of ink": "It is a simple glass bowl filled mostly with ink.",
  298.     "a glass bowl of blood": "It is a simple glass bowl filled mostly with blood.",
  299.     "a glass bowl of water": "It is a simple glass bowl filled mostly with water.",
  300.     "a glass bowl of watered down ink": "It is a simple glass bowl filled with ink mixed with water.",
  301.     "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.",
  302.     "a roll of bandages": "It is a roll of medical bandages."}
  303.  
  304. cockpit_A_look = False
  305. cockpit_A_talk = False
  306.  
  307. morgue_g_inspect = False
  308.  
  309. metal_detector_ring = False
  310.  
  311. atrium_o_destroy = False
  312.  
  313. annexe_A_letters = False
  314. annexe_window_bandage = False
  315. annexe_letters_read = False
  316.  
  317. library_f_bowl = False
  318.  
  319. bandage_used = False
  320.  
  321. ovum_end = False
  322. larva_end = False
  323.  
  324. task_colour = {
  325.     "ring": "grey",
  326.     "painting": "grey",
  327.     "butterfly": "grey",
  328.     "heart": "grey",
  329.     "letters": "grey",
  330.     "water": "grey"}
  331.  
  332. colour_count = {"white": 0, "red": 0, "black": 0}
  333.  
  334. def colour_update(task_colour, colour_count, task, colour):
  335.     if debug_mode:
  336.         print "Your vision momentarily flashes " + colour + "."
  337.     task_colour[task] = colour
  338.     colour_count = {"white": 0, "red": 0, "black": 0}
  339.     for task in task_colour:
  340.         for colour in ["white", "red", "black"]:
  341.             if task_colour[task] == colour:
  342.                 colour_count[colour] += 1
  343.     return task_colour, colour_count
  344.  
  345. heart = 0
  346.  
  347. heart_desc = {
  348.     0: "There is a large gash in its side, from which blood is pouring.",
  349.     1: "There is a large gash in its side, from which blood is pouring.",
  350.     2: "There is a large gash in its side, from which blood is seeping.",
  351.     3: "There is a large gash in its side, from which blood is dripping.",
  352.     4: "It hangs limply, blood dripping steadily from it.",
  353.     5: "It is drooping and discoloured. Blood still drips from it.",
  354.     6: "It is bruised in colour and has begun to rot. Blood still drips from it.",
  355.     7: "It is wrapped in bandages."}
  356.  
  357. painting_desc = {
  358.     "grey": "The canvas is blank.",
  359.     #####    #-------------------------------------------------------------------------------|
  360.     "white": "There is a portrait painted, in ink, of a girl. She is looking away with a\nneutral expression on her face.",
  361.     "red": "There is a portrait painted, in blood, of a girl. She has a strange twisted\nsmile.",
  362.     "black": "There is a portrait painted, in watered down ink, of a girl. She stares\nstraight at you, chin in hands, smiling gently."}
  363.  
  364. time = {
  365.     0: "midnight.",
  366.     1: "one o'clock.",
  367.     2: "two o'clock.",
  368.     3: "three o'clock.",
  369.     4: "four o'clock.",
  370.     5: "five o'clock.",
  371.     6: "six o'clock."}
  372.  
  373. def ovum_A_whoareyou(command, ovum_end):
  374.     ##### #-------------------------------------------------------------------------------|
  375.     print "She frowns."
  376.     print "\"You really have forgotten, haven't you?\""
  377.     print
  378.     print "1: Stay silent"
  379.     print "2: \"I'm sorry.\""
  380.     command = choice(command, 2)
  381.     if command == "1":
  382.         print "\"Not that it matters,\" she mutters offhandedly."
  383.     elif command == "2":
  384.         print "She gives a short burst of laughter."
  385.         print "\"Oh, it's not your fault, dear.\""
  386.     print
  387.     print "1: \"Where am I?\""
  388.     print "2: \"Are you an angel?\""
  389.     command = choice(command, 2)
  390.     if command == "1":
  391.         ovum_A_whereamI(command, ovum_end)
  392.     elif command == "2":
  393.         ##### #-------------------------------------------------------------------------------|
  394.         print "She smiles, a genuine, honest smile, and says \"Well, maybe you haven't"
  395.         print "forgotten everything.\""
  396.         print "Then a look comes across her face as though she just remembered something"
  397.         print "unpleasant, and her smile dissolves. You are left at a loss as to what to say."
  398.     return ovum_end
  399.  
  400. def ovum_A_whereamI(command, ovum_end):
  401.     ##### #-------------------------------------------------------------------------------|
  402.     print "She laughs gently, and responds, facetiously, \"You're on a plane!\""
  403.     print "You say nothing. After a moment, she speaks again, more seriously."
  404.     print "\"I'm sorry. You don't seem in the mood for jokes.\""
  405.     print
  406.     print "1: \"Why are we here?\""
  407.     print "2: \"How did we get here?\""
  408.     print "3: \"Where is this plane going?\""
  409.     command = choice(command, 3)
  410.     if command == "1":
  411.         ovum_end = ovum_A_whyarewehere(command, ovum_end)
  412.     elif command == "2":
  413.         ovum_end = ovum_A_howdidwegethere(command, ovum_end)
  414.     elif command == "3":
  415.         ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
  416.     return ovum_end
  417.  
  418. def ovum_A_whyarewehere(command, ovum_end):
  419.     print "\"Hmm, I wonder...\" she muses, hand on chin."
  420.     print "\"Did you do something you shouldn't have?\""
  421.     print
  422.     print "1: \"I don't know.\""
  423.     print "2: \"I don't think so.\""
  424.     command = choice(command, 2)
  425.     if command == "1":
  426.         print "She says nothing, but has a curious look on her face."
  427.     elif command == "2":
  428.         print "\"Of course, these things are relative, aren't they?\" she says, smiling."
  429.     print
  430.     print "1: \"Where is this plane going?\""
  431.     print "2: \"How did we get here?\""
  432.     command = choice(command, 2)
  433.     if command == "1":
  434.         ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
  435.     elif command == "2":
  436.         ovum_end = ovum_A_howdidwegethere(command, ovum_end)
  437.     return ovum_end
  438.  
  439. def ovum_A_howdidwegethere(command, ovum_end):
  440.     ##### #-------------------------------------------------------------------------------|
  441.     print "\"That depends... What's the last thing you remember?\""
  442.     print "You concede that you do not remember anything meaningful. She responds,"
  443.     print "cryptically, \"In that case, I can't tell you anything yet.\""
  444.     print "You lack the strength to argue."
  445.     print
  446.     print "1: \"Why are we here?\""
  447.     print "2: \"Where is this plane going?\""
  448.     command = choice(command, 2)
  449.     if command == "1":
  450.         ovum_end = ovum_A_whyarewehere(command, ovum_end)
  451.     elif command == "2":
  452.         ovum_end = ovum_A_whereisthisgoing(command, ovum_end)
  453.     return ovum_end
  454.  
  455. def ovum_A_whereisthisgoing(command, ovum_end):
  456.     ##### #-------------------------------------------------------------------------------|
  457.     print "She gestures at the windshield, through which you can see nothing but ocean"
  458.     print "and sky."
  459.     print "\"Absolutely nowhere.\""
  460.     print "You are about to reply, when she speaks again."
  461.     print "\"But where could we be going, do you think?\""
  462.     print
  463.     print "1: \"I don't know.\""
  464.     print "2: \"I think I can guess.\""
  465.     command = choice(command, 2)
  466.     if command == "1":
  467.         print "She appears disappointed."
  468.         print "\"Guess, then.\""
  469.         print
  470.     ovum_end = ovum_A_endings(command, ovum_end)
  471.     return ovum_end
  472.  
  473. def ovum_A_endings(command, ovum_end):
  474.     ovum_A_questions = ["\"The plane could land somewhere.\"", "\"The plane could crash.\"", "\"The plane could keep flying.\""]
  475.     ovum_A_white = False
  476.     ovum_A_red = False
  477.     ovum_A_grey_black = False
  478.     proceed = True
  479.     while proceed:
  480.         if "Say nothing" not in ovum_A_questions and (ovum_A_white or ovum_A_red or ovum_A_grey_black):
  481.             ovum_A_questions.append("Say nothing")
  482.         for question in ovum_A_questions:
  483.             print str(ovum_A_questions.index(question) + 1) + ": " + question
  484.         command = choice(command, len(ovum_A_questions))
  485.         if "\"The plane could land somewhere.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could land somewhere.\"") + 1):
  486.             ##### #-------------------------------------------------------------------------------|
  487.             print "\"Indeed it could,\" she replies, \"That would be the proper thing for it to"
  488.             print "do, don't you think? It's what planes are supposed to do; what happens when"
  489.             print "everything is done correctly.\""
  490.             print "A shadow passes over her face."
  491.             print "\"But we cannot land on the ocean. We must keep flying first - and we may also"
  492.             print "require a change of course. Now, do you think this is possible? Could you land"
  493.             print "this plane?\""
  494.             print
  495.             print "1: \"Yes.\""
  496.             print "2: \"No.\""
  497.             command = choice(command, 2)
  498.             print "\"I see,\" she comments."
  499.             print "\"Any other ideas?\""
  500.             print
  501.             ovum_A_white = True
  502.             ovum_A_questions.remove("\"The plane could land somewhere.\"")
  503.         elif "\"The plane could crash.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could crash.\"") + 1):
  504.             ##### #-------------------------------------------------------------------------------|
  505.             print "Her eyes light up momentarily."
  506.             print "\"It could! Just imagine it, the fiery bloom of an explosion, neatly and"
  507.             print "beautifully ending everything onboard. Quite... alluring, don't you think?\""
  508.             print "She tilts her head slightly, then continues."
  509.             print "\"But could you actually do it? Kill yourself - and myself, for that matter - "
  510.             print "and condemn this aircraft to blackened wreckage? Could you?\""
  511.             print
  512.             print "1: \"Yes.\""
  513.             print "2: \"No.\""
  514.             command = choice(command, 2)
  515.             print "She smiles."
  516.             print "\"I see,\" she purrs."
  517.             print "\"Any other ideas?\""
  518.             print
  519.             ovum_A_red = True
  520.             ovum_A_questions.remove("\"The plane could crash.\"")
  521.         elif "\"The plane could keep flying.\"" in ovum_A_questions and command == str(ovum_A_questions.index("\"The plane could keep flying.\"") + 1):
  522.             ##### #-------------------------------------------------------------------------------|
  523.             print "\"No, no it couldn't.\""
  524.             print "Her eyebrows knit together."
  525.             print "\"Or maybe it could, but it oughtn't to. That would solve nothing, and you and"
  526.             print "I have been here too long already. I mean, could you really stand to just sit"
  527.             print "here forever, staring at the same damned ocean until you die and rot away?"
  528.             print "I know I couldn't, but could you?\""
  529.             print
  530.             print "1: \"Yes.\""
  531.             print "2: \"No.\""
  532.             print "3: \"That is not what I meant.\""
  533.             command = choice(command, 3)
  534.             if command in ["1", "2"]:
  535.                 print "She says stares at you silently for a few seconds."
  536.             elif command == "3":
  537.                 ##### #-------------------------------------------------------------------------------|
  538.                 print "She looks away and is silent for quite a while. Finally, she speaks again,"
  539.                 print "quietly, almost hesitantly."
  540.                 print "\"Did you, then, mean to... to keep flying, but to actually move forwards? I'm"
  541.                 print "not sure if that's even possible any more. I have been here so long, I can"
  542.                 print "scarcely believe there could be anything beyond the horizon but more damned"
  543.                 print "ocean. Is that what you meant? Can you fly us away?\""
  544.                 print
  545.                 print "1: \"Yes.\""
  546.                 print "2: \"No.\""
  547.                 command = choice(command, 2)
  548.                 print "\"I see,\" she says eventually."
  549.             ovum_A_grey_black = True
  550.             ovum_A_questions.remove("\"The plane could keep flying.\"")
  551.             print "\"Any other ideas?\""
  552.             print
  553.         elif command == str(len(ovum_A_questions)) and (ovum_A_white or ovum_A_red or ovum_A_grey_black):
  554.             ##### #-------------------------------------------------------------------------------|
  555.             print "The angel turns away and gazes out of the windshield. The conversation dies"
  556.             print "away, for good."
  557.             proceed = False
  558.     return True
  559.  
  560. def ovum_A(command, ovum_end):
  561.     print "You take a breath and speak."
  562.     print
  563.     print "1: \"Hello.\""
  564.     print "2: \"Who are you?\""
  565.     print "3: \"Where am I?\""
  566.     command = choice(command, 3)
  567.     if command == "1":
  568.         ##### #-------------------------------------------------------------------------------|
  569.         print "She turns and smiles to you."
  570.         print "\"Hello again, dear.\""
  571.         print
  572.         print "1: \"Again?\""
  573.         print "2: \"Where am I?\""
  574.         command = choice(command, 2)
  575.         if command == "1":
  576.             print "Her smile takes on a slightly painful tinge."
  577.             print "The conversation quietly dies away."
  578.         elif command == "2":
  579.             ovum_end = ovum_A_whereamI(command, ovum_end)
  580.     elif command == "2":
  581.         ovum_end = ovum_A_whoareyou(command, ovum_end)
  582.     elif command == "3":
  583.         ovum_end = ovum_A_whereamI(command, ovum_end)
  584.     return ovum_end
  585.  
  586. def letters(command, annexe_letters_read):
  587.     ##### #-------------------------------------------------------------------------------|
  588.     print "It is a bundle of letters. There are nine of them, each dated, from April to"
  589.     print "December."
  590.     print
  591.     print "1: Read them"
  592.     print "2: Do nothing"
  593.     stop_reading = False
  594.     command = choice(command, 2)
  595.     if command == "1":
  596.         annexe_letters_read = True
  597.         while not stop_reading:
  598.             print "1: April"
  599.             print "2: May"
  600.             print "3: June"
  601.             print "4: July"
  602.             print "5: August"
  603.             print "6: September"
  604.             print "7: October"
  605.             print "8: November"
  606.             print "9: December"
  607.             command = choice(command, 9)
  608.             if command == "1":
  609.                 ##### #-------------------------------------------------------------------------------|
  610.                 print "    Dear x,"
  611.                 print "    Thank you for giving me your address. I hope this reaches you safely."
  612.                 print "    Please write back as soon as you can."
  613.                 print "        Yours,"
  614.                 print "            g"
  615.             elif command == "2":
  616.                 ##### #-------------------------------------------------------------------------------|
  617.                 print "    Dear x,"
  618.                 print "    I am so glad to hear from you again. I had missed you so. If only we"
  619.                 print "    could be together in person - the mountains in Spring are beautiful;"
  620.                 print "    I'm sure you would love it. Please find enclosed a pressed flower from"
  621.                 print "    the mountainside near my home."
  622.                 print "        Yours,"
  623.                 print "            g"
  624.             elif command == "3":
  625.                 ##### #-------------------------------------------------------------------------------|
  626.                 print "    Dear x,"
  627.                 print "    Thank you for your letter. I wasn't aware you were so interested in"
  628.                 print "    butterflies. To answer your question, yes, there's a lot of them here:"
  629.                 print "    mostly the large white and small blue ones at this time of year, but"
  630.                 print "    there are also lovely yellows and ones with mosaic patterns on their"
  631.                 print "    wings. I have enclosed a particularly beautiful black, red and white "
  632.                 print "    one I caught in a nearby valley."
  633.                 print "        Yours,"
  634.                 print "            g"
  635.             elif command == "4":
  636.                 ##### #-------------------------------------------------------------------------------|
  637.                 print "    My dear x,"
  638.                 print "    I must be honest, I really don't understand why you're so upset. It was"
  639.                 print "    only a butterfly. They don't live long anyway, you know. And how could"
  640.                 print "    I possibly send it alive? Surely you agree, the dead butterfly is at"
  641.                 print "    least as beautiful as the living."
  642.                 print "        Yours,"
  643.                 print "            g"
  644.             elif command == "5":
  645.                 ##### #-------------------------------------------------------------------------------|
  646.                 print "    My dear, dear x,"
  647.                 print "    I am so sorry. Please, write to me again, I miss you dreadfully."
  648.                 print "        Yours,"
  649.                 print "            g"
  650.             elif command == "6":
  651.                 ##### #-------------------------------------------------------------------------------|
  652.                 print "    Dearest x,"
  653.                 print "    Thank you for your kind words. I am sorry to have been so insensitive."
  654.                 print "    Those weeks without word from you made me realise just how much you"
  655.                 print "    mean to me. Please, don't leave me; I don't think I could bear the rest"
  656.                 print "    of my life alone."
  657.                 print "        Yours,"
  658.                 print "            g"
  659.             elif command == "7":
  660.                 ##### #-------------------------------------------------------------------------------|
  661.                 print "    My dear x,"
  662.                 print "    Though it is still only Autumn, I can feel the Winter descending upon"
  663.                 print "    me. The conifers outside my window cry in the wind, day and night. The"
  664.                 print "    snow has spirited away all the wildflowers and butterflies and"
  665.                 print "    everything of colour or movement. The only thing that keeps me going"
  666.                 print "    is your love, the only warmth left in my world."
  667.                 print "        Yours,"
  668.                 print "            g"
  669.             elif command == "8":
  670.                 ##### #-------------------------------------------------------------------------------|
  671.                 print "    But it's mad, isn't it? That still I write to you, though I have"
  672.                 print "    received no word in twelve weeks. What happened? Are my letters no"
  673.                 print "    longer getting through, or are you unable to reply? Or unwilling? Do"
  674.                 print "    you still think about me, as I think about you? I cannot sleep or eat"
  675.                 print "    for lack of answers."
  676.             elif command == "9":
  677.                 ##### #-------------------------------------------------------------------------------|
  678.                 print "    Dear x,"
  679.                 print "    I am afraid this is goodbye. I tried so very hard to forge a life for"
  680.                 print "    myself in this world, but this is a battle I must concede. If you are"
  681.                 print "    reading this, if you still care at all, all I ask is that you join me."
  682.                 print "    Even if we had to walk on this earth apart, we can fly away from it"
  683.                 print "    together."
  684.                 print "        Yours,"
  685.                 print "            g"
  686.             print
  687.             print "1: Continue reading"
  688.             print "2: Stop reading"
  689.             command = choice(command, 2)
  690.             if command == "2":
  691.                 stop_reading = True
  692.     return annexe_letters_read
  693.  
  694. room = "cockpit"
  695.  
  696. inv = []
  697.  
  698. def choice(command, number):
  699.     command_range = []
  700.     while number > 0:
  701.         command_range.append(str(number))
  702.         number -= 1
  703.     command = "invalid"
  704.     while command not in command_range:
  705.         command = (raw_input(">") + " ")[0]
  706.         if command not in command_range and command != "invalid":
  707.             print "Command \"" + command + "\" not in menu. Choose from",
  708.             command = ""
  709.             for item in command_range:
  710.                 command += str(item + ",",)
  711.             print command[:-1] + "."
  712.     print
  713.     return command
  714.  
  715. proceed = True
  716. while proceed:
  717.     ##### #-------------------------------------------------------------------------------|
  718.     print "                                                                               "
  719.     print "                                   #        #                                  "
  720.     print "                ######,             \     /             ,######               "
  721.     print "                #:#####::##,         \   /         ,##::#####:#               "
  722.     print "                ##:###:::####@@#,     \ /     ,#@@####:::###:##               "
  723.     print "                '#####:::###@@#####,   \/   ,#####@@###:::#####'               "
  724.     print "                 '#::######@@##########&&##########@@######::#'                "
  725.     print "                  #::#:##@@@##########&&&&##########@@@##:#::#                 "
  726.     print "                  ######@@############&&&&############@@######                 "
  727.     print "                    '##@@@############&&&&############@@@##'                   "
  728.     print "                     ,##@@############&&&&############@@##,                    "
  729.     print "                     ##################&&##################                    "
  730.     print "                     #################&&&&#################                    "
  731.     print "                     #################&&&&#################                    "
  732.     print "                     @@###############&&&&###############@@                    "
  733.     print "                     '@@@@#############&&#############@@@@'                    "
  734.     print "                      @@@@@@@@####################@@@@@@@@                     "
  735.     print "                        '@@@@@@@@@@@@@#''#@@@@@@@@@@@@@'                       "
  736.     print "                          '@@@@@@@@@@'    '@@@@@@@@@@'                         "
  737.     print "Chartered Flight v1.0"
  738.     print
  739.     print "1: Start game"
  740.     print "2: Help"
  741.     print "3: Exit"
  742.     command = ""
  743.     command = choice(command, 3)
  744.     if command == "1":
  745.         proceed = False
  746.     elif command == "2":
  747.         print "At all times, the game should have a prompt that looks like \">\" at the bottom"
  748.         print "of the screen. Type your command in there. If what's immediately above is a"
  749.         print "menu with numbers, such as:"
  750.         print
  751.         print "1: Leave room"
  752.         print "2: Do nothing"
  753.         print
  754.         print "then enter a number. In the menu below, enter \"1\" to continue."
  755.         print
  756.         print "1: Continue"
  757.         command = choice(command, 1)
  758.         print "If it's a plan of a room, such as:"
  759.         print
  760.         print " +------+"
  761.         print " +----X-+"
  762.         print " |hT    |"
  763.         print " |     g|"
  764.         print " +------+"
  765.         print
  766.         print "then enter a single letter to look at or interact with that object. Choosing a"
  767.         print "character that's part of the room, such as -, | or + will give a description of"
  768.         print "the room. If you enter more than one letter, only the first one will count."
  769.         print
  770.         print "1: Continue"
  771.         command = choice(command, 1)
  772.         print "There are also two other commands: entering \"h\" or \"H\" will show the help"
  773.         print "screen and entering \"i\" or \"I\" will open your inventory. From here, you can"
  774.         print "look at items or interact with them, such as emptying the glass bowl or reading"
  775.         print "the letters."
  776.         print
  777.         print "In order to reach the end of the game, you must complete six specific tasks."
  778.         print "There are several ways of doing each of them, and which way you choose will"
  779.         print "affect which ending you get."
  780.         print
  781.         print "1: Return to menu"
  782.         print "2: Start game"
  783.         command = choice(command, 2)
  784.         if command == "2":
  785.             proceed = False
  786.     elif command == "3":
  787.         name = error
  788.  
  789. print room_desc[room]
  790.  
  791. proceed = True
  792. while proceed == True:
  793.     if not larva_end and "grey" not in task_colour.values():
  794.         print
  795.         print "A faintly distorted voice speaks over the intercom."
  796.         print "\"The pilot's presence is required in the cockpit.\""
  797.         larva_end = True
  798.     print
  799.     print room_map[room]
  800.     print
  801.     command = (raw_input(">") + " ")[0]
  802.  
  803. # General commands
  804.    
  805.     if command in ["h", "H"]:
  806.         print "Help:"
  807.         print
  808.         print "At all times, the game should have a prompt that looks like \">\" at the bottom"
  809.         print "of the screen. Type your command in there. If what's immediately above is a"
  810.         print "menu with numbers, such as:"
  811.         print
  812.         print "1: Leave room"
  813.         print "2: Do nothing"
  814.         print
  815.         print "then enter a number. In the menu below, enter \"1\" to continue."
  816.         print
  817.         print "1: Continue"
  818.         command = choice(command, 1)
  819.         print "If it's a plan of a room, such as:"
  820.         print
  821.         print " +------+"
  822.         print " +----X-+"
  823.         print " |hT    |"
  824.         print " |     g|"
  825.         print " +------+"
  826.         print
  827.         print "then enter a single letter to look at or interact with that object. Choosing a"
  828.         print "character that's part of the room, such as -, | or + will give a description of"
  829.         print "the room. If you enter more than one letter, only the first one will count."
  830.         print
  831.         print "1: Continue"
  832.         command = choice(command, 1)
  833.         print "There are also two other commands: entering \"h\" or \"H\" will show the help"
  834.         print "screen and entering \"i\" or \"I\" will open your inventory. From here, you can"
  835.         print "look at items or interact with them, such as emptying the glass bowl or reading"
  836.         print "the letters."
  837.         print
  838.         print "In order to reach the end of the game, you must complete six specific tasks."
  839.         print "There are several ways of doing each of them, and which way you choose will"
  840.         print "affect which ending you get."
  841.         print
  842.         print "1: Return to game"
  843.         command = choice(command, 1)
  844.     elif command in ["i", "I"]:
  845.         if len(inv) == 0:
  846.             print "You have nothing in your inventory."
  847.         else:
  848.             prinv = ""
  849.             for item in inv:
  850.                 prinv += item + ", "
  851.             prinv = prinv[:-2] + "."
  852.             print "You are currently carrying " + prinv
  853.             print
  854.             if len(inv) == 1:
  855.                 print "1: Look at " + inv[0]
  856.             else:
  857.                 print "1: Look at items"
  858.             print "2: Do nothing"
  859.             command = choice(command, 2)
  860.             if command == "1":
  861.                 if len(inv) > 1:
  862.                     inv_incr = 0
  863.                     for item in inv:
  864.                         print str(inv_incr + 1) + ": Look at " + inv[inv_incr]
  865.                         inv_incr += 1
  866.                     command = choice(command, len(inv))
  867.                     if inv[int(command) - 1] == "a bundle of letters":
  868.                         annexe_letters_read = letters(command, annexe_letters_read)
  869.                         if annexe_letters_read:
  870.                             task_colour["letters"] = "red"
  871.                         else:
  872.                             task_colour["letters"] = "black"
  873.                     else:
  874.                         print item_desc[inv[int(command) - 1]]
  875.                         if inv[int(command) - 1] in [
  876.                             "a glass bowl of water",
  877.                             "a glass bowl of blood",
  878.                             "a glass bowl of ink",
  879.                             "a glass bowl of watered down ink"]:
  880.                             print
  881.                             print "1: Empty the bowl"
  882.                             print "2: Do nothing"
  883.                             command = choice(command, 2)
  884.                             if command == "1":
  885.                                 print "You empty the glass bowl onto the floor."
  886.                                 for item in [
  887.                                     "a glass bowl of water",
  888.                                     "a glass bowl of blood",
  889.                                     "a glass bowl of ink",
  890.                                     "a glass bowl of watered down ink"]:
  891.                                     if item in inv:
  892.                                         inv.remove(item)
  893.                                 inv.append("an empty glass bowl")
  894.                 elif len(inv) == 1:
  895.                     print item_desc[inv[0]]
  896.     elif command in ["+", "|", "/", "-", "\\"]:
  897.         print room_desc[room]
  898.     elif command in ["c", "C"] and debug_mode:
  899.         print "Red:", colour_count["red"]
  900.         print "White:", colour_count["white"]
  901.         print "Black:", colour_count["black"]
  902.     elif command in ["r", "R"] and debug_mode:
  903.         print "Choose room:"
  904.         room = ""
  905.         while room not in room_map:
  906.             room = raw_input(">")
  907.     elif command in object_desc[room]:
  908.         print object_desc[room][command]
  909.  
  910. # Cockpit
  911.  
  912.         if room == "cockpit":
  913.             if command == "A":
  914.                 print
  915.                 print "1: Look at her"
  916.                 print "2: Talk to her"
  917.                 print "3: Do nothing"
  918.                 command = choice(command, 3)
  919.                 if command == "1":
  920.                     ##### #-------------------------------------------------------------------------------|
  921.                     print "She is tall and thin, with deathly pale skin, black hair and maroon eyes. She"
  922.                     print "is dressed entirely in grey."
  923.                     if not cockpit_A_look:
  924.                         print "\"It's rude to stare,\" she says, smiling."
  925.                         cockpit_A_look = True
  926.                     else:
  927.                         print "She stares straight ahead, out of the window."
  928.  
  929.                 elif command == "2":
  930.                     if not cockpit_A_talk:
  931.                         ##### #-------------------------------------------------------------------------------|
  932.                         print "\"Hello there,\" she says. You try to reply, but the words stick in your throat."
  933.                         cockpit_A_talk = True
  934.                     elif not ovum_end:
  935.                         ovum_end = ovum_A(command, ovum_end)
  936.                         if ovum_end not in [True, False]:
  937.                             ovum_end = True
  938.                     elif ovum_end and not larva_end:
  939.                         print "\"I believe you have somewhere else to be, my dear.\""
  940.                     elif ovum_end and larva_end:
  941.                         proceed = False
  942.             elif command == "=":
  943.                 print
  944.                 print "1: Look out"
  945.                 print "2: Do nothing"
  946.                 command = choice(command, 2)
  947.                 if command == "1":
  948.                     ##### #-------------------------------------------------------------------------------|
  949.                     print "You can see nothing but blue skies and, far below, ocean. There are a few thin"
  950.                     print "streaks of clouds near the horizon."
  951.             elif command == "X":
  952.                 print
  953.                 print "1: Leave"
  954.                 print "2: Do nothing"
  955.                 command = choice(command, 2)
  956.                 if command == "1":
  957.                     if not ovum_end:
  958.                         print "The angel in the in the copilot's seat turns and speaks to you."
  959.                         print "\"Leaving so soon? I'll get lonely.\""
  960.                         print
  961.                         print "1: Leave anyway"
  962.                         print "2: Do nothing"
  963.                         command = choice(command, 2)
  964.                         if command == "1":
  965.                             ovum_end = True
  966.                             cockpit_A_talk = True
  967.                             room = "fuselage"
  968.                             print room_desc[room]
  969.                     elif larva_end:
  970.                         print "You have no reason to go back."
  971.                     else:
  972.                         room = "fuselage"
  973.                         print room_desc[room]
  974.  
  975. # Fuselage
  976.  
  977.         elif room == "fuselage":
  978.                
  979.             if command == "X":
  980.                 print
  981.                 print "1: Leave by east exit"
  982.                 print "2: Leave by north exit"
  983.                 print "3: Do nothing"
  984.                 command = choice(command, 3)
  985.                 if command == "1":
  986.                     if not larva_end:
  987.                         print "You cannot bear to face her again."
  988.                     else:
  989.                         room = "cockpit"
  990.                         print room_desc[room]
  991.                 elif command == "2":
  992.                     room = "metal detector"
  993.                     print room_desc[room]
  994.                     if "P" in object_desc["fuselage"]:
  995.                         room_map["fuselage"] = (room_map["fuselage"].replace("P", " ")).replace("D", " ")
  996.                         del object_desc["fuselage"]["P"]
  997.                         del object_desc["fuselage"]["D"]
  998.             elif command == "o":
  999.                 print
  1000.                 print "1: Look out"
  1001.                 print "2: Do nothing"
  1002.                 command = choice(command, 2)
  1003.                 if command == "1":
  1004.                     ##### #-------------------------------------------------------------------------------|
  1005.                     print "You can see nothing but ocean and open sky out of any of the windows."
  1006.  
  1007.             elif command == "P":
  1008.                 print "They move with jerky motions, like automota or marionettes."
  1009.                 print "\"Such a shame. Such a shame.\" the father says."
  1010.                 print "The mother sobs quietly into her open hands."
  1011.  
  1012.             elif command == "D":
  1013.                 print "He moves with jerky motions, like an automaton or a marionette."
  1014.                 print "He shakes his head back and forth, a grim look on his face."
  1015.                
  1016.  
  1017. # Metal detector
  1018.  
  1019.         elif room == "metal detector":
  1020.          
  1021.             if command == "X":
  1022.                 print
  1023.                 print "1: Leave by northwest exit"
  1024.                 print "2: Leave by northeast exit"
  1025.                 print "3: Leave by south exit"
  1026.                 print "4: Do nothing"
  1027.                 command = choice(command, 4)
  1028.                 if command == "1":
  1029.                     if metal_detector_ring:
  1030.                         print "As you pass through the metal detector, it goes off."
  1031.                         print "The northwest door unlocks with a click."
  1032.                         room = "gallery"
  1033.                         print room_desc[room]
  1034.                     else:
  1035.                         print "As you pass through the metal detector, nothing happens."
  1036.                         print "The door is locked."
  1037.                 elif command == "2":
  1038.                     if metal_detector_ring and "a butterfly trapped under a glass bowl" not in inv:
  1039.                         print "You don't want to go back there unless you have to."
  1040.                     else:
  1041.                         room = "morgue"
  1042.                         print room_desc[room]
  1043.                 elif command == "3":
  1044.                     room = "fuselage"
  1045.                     print room_desc[room]
  1046.  
  1047. # Morgue
  1048.  
  1049.         elif room == "morgue":
  1050.          
  1051.             if command == "X":
  1052.                 print
  1053.                 print "1: Leave"
  1054.                 print "2: Do nothing"
  1055.                 command = choice(command, 2)
  1056.                 if command == "1":
  1057.                     room = "metal detector"
  1058.                     print room_desc[room]
  1059.                    
  1060.             elif command == "g":
  1061.                 if "a butterfly trapped under a glass bowl" not in inv:
  1062.                     print
  1063.                     print "1: Look at her"
  1064.                     print "2: Do nothing"
  1065.                     command = choice(command, 2)
  1066.                     if command == "1":
  1067.                         if not metal_detector_ring:
  1068.                             ##### #-------------------------------------------------------------------------------|
  1069.                             print "She is completely nude. She is very thin, likely underweight. Her hair is"
  1070.                             print "short, black and unkempt. Her eyes are closed. Her hands are clasped together"
  1071.                             print "at her breast."
  1072.                             print
  1073.                             print "1: Kiss her"
  1074.                             print "2: Hold her hand"
  1075.                             print "3: Do nothing"
  1076.                             command = choice(command, 3)
  1077.                             if command == "1":
  1078.                                 print "You cannot bring yourself to do it."
  1079.                             elif command == "2":
  1080.                                 print "Tightly clasped in her hands, you find a gold ring on a chain."
  1081.                                 print
  1082.                                 print "1: Take it"
  1083.                                 print "2: Do nothing"
  1084.                                 command = ""
  1085.                                 command = choice(command, 2)
  1086.                                 if command == "1":
  1087.                                     print "1: Keep it in your hand"
  1088.                                     print "2: Put it on your finger"
  1089.                                     print "3: Hang it around your neck"
  1090.                                     command = choice(command, 3)
  1091.                                     if command == "1":
  1092.                                         ##### #-------------------------------------------------------------------------------|
  1093.                                         print "You take the ring from the chain and hold it in your right hand. It is cold and"
  1094.                                         print "inert."
  1095.                                         inv.append("a ring in your hand")
  1096.                                         task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "white")
  1097.                                     elif command == "2":
  1098.                                         print "You take the ring from the chain and put it on your finger. It feels familiar"
  1099.                                         print "and comfortable."
  1100.                                         inv.append("a ring on your finger")
  1101.                                         task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "red")
  1102.                                     elif command == "3":
  1103.                                         print "You hang the ring around your neck by the chain. It feels strangely heavy."
  1104.                                         inv.append("a ring around your neck")
  1105.                                         task_colour, colour_count = colour_update(task_colour, colour_count, "ring", "black")
  1106.                                     metal_detector_ring = True
  1107.                                    
  1108.                         else:
  1109.                             print "She is completely nude. She is very thin, likely underweight. Her hair is"
  1110.                             print "short, black and unkempt. Her eyes are closed. Her hands are open and empty."
  1111.                 else:
  1112.                     print
  1113.                     print "1: Look at her"
  1114.                     print "2: Release the butterfly"
  1115.                     print "3: Do nothing"
  1116.                     command = choice(command, 3)
  1117.                     if command == "1":
  1118.                         ##### #-------------------------------------------------------------------------------|
  1119.                         print "She is completely nude. She is very thin, likely underweight. Her hair is"
  1120.                         print "short, black and unkempt. Her eyes are closed. Her hands are open and empty."
  1121.                     elif command == "2":
  1122.                         print "The butterfly climbs into her mouth and disappears into the darkness within."
  1123.                         inv.remove("a butterfly trapped under a glass bowl")
  1124.                         inv.append("an empty glass bowl")
  1125.                         inv.append("a bundle of letters")
  1126.                         task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "black")
  1127.             elif command == "u":
  1128.                 print "Three of them are closed."
  1129.                 print
  1130.                 print "1: Open one"
  1131.                 print "2: Do nothing"
  1132.                 command = choice(command, 2)
  1133.                 if command == "1":
  1134.                     print "They will not move."
  1135.  
  1136. # Gallery
  1137.  
  1138.         elif room == "gallery":
  1139.  
  1140.             if command == "X":
  1141.                 print
  1142.                 print "1: Leave by west exit"
  1143.                 print "2: Leave by east exit"
  1144.                 print "3: Leave by south exit"
  1145.                 print "4: Do nothing"
  1146.                 command = choice(command, 4)
  1147.                 if command == "1":
  1148.                     room = "corridor"
  1149.                     print room_desc[room]
  1150.                 elif command == "2":
  1151.                     room = "atrium"
  1152.                     print room_desc[room]
  1153.                     if heart < 7:
  1154.                         heart += 1
  1155.                         if heart == 7:
  1156.                             room_map["atrium"] = room_map["atrium"].replace("o", ".")
  1157.                             del object_desc["atrium"]["o"]
  1158.                             object_desc["atrium"]["."] = "There are rotting shreds of flesh on the floor."
  1159.                             task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "black")
  1160.                 elif command == "3":
  1161.                     room = "metal detector"
  1162.                     print room_desc[room]
  1163.             elif command == ",":
  1164.                 print
  1165.                 print "1: Talk to it"
  1166.                 print "2: Capture it"
  1167.                 print "3: Kill it"
  1168.                 print "4: Do nothing"
  1169.                 command = choice(command, 4)
  1170.                 if command == "1":
  1171.                     print "1: \"Hello.\""
  1172.                     print "2: \"Why are you here?\""
  1173.                     print "3: \"What do you want from me?\""
  1174.                     command = choice(command, 3)
  1175.                     if command == "1":
  1176.                         print "The butterfly twitches its wings slightly."
  1177.                     elif command == "2":
  1178.                         print "The butterfly makes no response."
  1179.                     elif command == "3":
  1180.                         ##### #-------------------------------------------------------------------------------|
  1181.                         print "The butterfly crawls around on the face of the girl in the picture and twitches"
  1182.                         print "its antennae meaningfully."
  1183.                 elif command == "2":
  1184.                     if "an empty glass bowl" in inv:
  1185.                         print "1: Capture it in your hands"
  1186.                         print "2: Capture it under your glass bowl"
  1187.                         command = choice(command, 2)
  1188.                         if command == "1":
  1189.                             print "The butterfly eludes your grasp."
  1190.                         elif command == "2":
  1191.                             print "The butterfly is trapped between the bowl and the surface of the picture."
  1192.                             if "a bundle of letters" in inv:
  1193.                                 print
  1194.                                 print "1: Set it free"
  1195.                                 print "2: Trap it using a letter"
  1196.                                 command = choice(command, 2)
  1197.                                 if command == "1":
  1198.                                     print "The butterfly returns to where it was before."
  1199.                                 elif command == "2":
  1200.                                     ##### #-------------------------------------------------------------------------------|
  1201.                                     print "You slip one of the letters between the bowl and the picture behind it. The"
  1202.                                     print "butterfly is trapped inside."
  1203.                                     print "You are now carrying a butterfly trapped under a glass bowl."
  1204.                                     inv.append("a butterfly trapped under a glass bowl")
  1205.                                     inv.remove("a bundle of letters")
  1206.                                     inv.remove("an empty glass bowl")
  1207.                                     room_map["gallery"] = room_map["gallery"].replace(",", " ")
  1208.                                     del object_desc["gallery"][","]
  1209.                             else:
  1210.                                 ##### #-------------------------------------------------------------------------------|
  1211.                                 print "The butterfly is trapped, but you cannot move without setting it free again."
  1212.                                 print
  1213.                                 print "1: Set it free"
  1214.                                 command = choice(command, 1)
  1215.                                 print "The butterfly returns to where it was before."
  1216.                     else:
  1217.                         print "The butterfly eludes your grasp."
  1218.                 elif command == "3":
  1219.                     if "a bundle of letters" in inv:
  1220.                         print "1: Kill it by hand"
  1221.                         print "2: Kill it using a letter"
  1222.                         command = choice(command, 2)
  1223.                         if command == "1":
  1224.                             print "The butterfly eludes your grasp."
  1225.                         elif command == "2":
  1226.                             ##### #-------------------------------------------------------------------------------|
  1227.                             print "You strike the butterfly with one of the letters. It drops to the floor, dead."
  1228.                             room_map["gallery"] = room_map["gallery"].replace(",", " ")
  1229.                             del object_desc["gallery"][","]
  1230.                             task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "red")
  1231.                     else:
  1232.                         print "The butterfly eludes your grasp."
  1233.             elif command == "4":
  1234.                 print painting_desc[task_colour["painting"]]
  1235.                 if task_colour["painting"] == "grey":
  1236.                     print
  1237.                     print "1: Paint onto the canvas"
  1238.                     print "2: Do nothing"
  1239.                     command = choice(command, 2)
  1240.                     if command == "1":
  1241.                         if "a glass bowl of ink" in inv:
  1242.                             ##### #-------------------------------------------------------------------------------|
  1243.                             print "You paint a portrait, in ink, of a girl. She is looking away with a neutral"
  1244.                             print "expression on her face."
  1245.                             task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "white")
  1246.                         elif "a glass bowl of blood" in inv:
  1247.                             print "You paint a portrait, in blood, of a girl. She has a strange twisted smile."
  1248.                             task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "red")
  1249.                         elif "a glass bowl of watered down ink" in inv:
  1250.                             print "You paint a portrait, in watered down ink, of a girl. She stares straight at"
  1251.                             print "you, chin in hands, smiling gently."
  1252.                             task_colour, colour_count = colour_update(task_colour, colour_count, "painting", "black")
  1253.                         elif "a glass bowl of water" in inv:
  1254.                             print "You cannot paint with water alone."
  1255.                         else:
  1256.                             print "You do not have anything to paint with."
  1257.  
  1258. # Atrium
  1259.  
  1260.         elif room == "atrium":
  1261.            
  1262.             if command == "X":
  1263.                 print
  1264.                 print "1: Leave"
  1265.                 print "2: Do nothing"
  1266.                 command = choice(command, 2)
  1267.                 if command == "1":
  1268.                     room = "gallery"
  1269.                     print room_desc[room]
  1270.             elif command == "o":
  1271.                 print heart_desc[heart]
  1272.                 if heart < 7:
  1273.                     print
  1274.                     print "1: Collect the blood"
  1275.                     print "2: Destroy it"
  1276.                     if "a roll of bandages" in inv:
  1277.                         print "3: Bandage it"
  1278.                         print "4: Do nothing"
  1279.                         command = choice(command, 4)
  1280.                     else:
  1281.                         print "3: Do nothing"
  1282.                         command = choice(command, 3)
  1283.                     if command == "1":
  1284.                         if "an empty glass bowl" in inv:
  1285.                             print "1: Collect the blood in your hands"
  1286.                             print "2: Collect the blood in the glass bowl"
  1287.                             command = choice(command, 2)
  1288.                             if command == "1":
  1289.                                 print "It slips through your fingers."
  1290.                             elif command == "2":
  1291.                                 print "You half fill the bowl with blood."
  1292.                                 inv.remove("an empty glass bowl")
  1293.                                 inv.append("a glass bowl of blood")
  1294.                         else:
  1295.                             ##### #-------------------------------------------------------------------------------|
  1296.                             print "You attempt to collect the blood in your hands, but it slips through your"
  1297.                             print "fingers."
  1298.                     elif command == "2":
  1299.                         if not atrium_o_destroy:
  1300.                             print "You are overcome with nausea even thinking of touching it with your bare hands."
  1301.                             atrium_o_destroy = True
  1302.                         else:
  1303.                             print "You are overcome with anger and tear it to pieces by hand."
  1304.                             room_map["atrium"] = room_map["atrium"].replace("o", ".")
  1305.                             del object_desc["atrium"]["o"]
  1306.                             object_desc["atrium"]["."] = "There are bloody shreds of flesh on the floor."
  1307.                             task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "red")
  1308.                     elif command == "3" and "a roll of bandages" in inv:
  1309.                         ##### #-------------------------------------------------------------------------------|
  1310.                         print "You wrap the bandages around the torn flesh as best you can."
  1311.                         print "They are stained crimson, saturated with blood, but adequate. The heart stops"
  1312.                         print "bleeding."
  1313.                         if not bandage_used:
  1314.                             bandage_used = True
  1315.                             item_desc["a roll of bandages"] += " There is not much left."
  1316.                         else:
  1317.                             print "The roll of bandages has run out."
  1318.                             inv.remove("a roll of bandages")
  1319.                         heart = 7
  1320.                         task_colour, colour_count = colour_update(task_colour, colour_count, "heart", "white")
  1321.  
  1322. # Corridor
  1323.  
  1324.         elif room == "corridor":
  1325.            
  1326.             if command == "X":
  1327.                 print
  1328.                 print "1: Leave by north exit"
  1329.                 print "2: Leave by east exit"
  1330.                 print "3: Leave by south exit"
  1331.                 print "4: Do nothing"
  1332.                 command = choice(command, 4)
  1333.                 if command == "1":
  1334.                     room = "annexe"
  1335.                     print room_desc[room]
  1336.                 elif command == "2":
  1337.                     room = "gallery"
  1338.                     print room_desc[room]
  1339.                 elif command == "3":
  1340.                     room = "library"
  1341.                     print room_desc[room]
  1342.             elif command == "u":
  1343.                 print
  1344.                 print "1: Collect the ink"
  1345.                 print "2: Do nothing"
  1346.                 command = choice(command, 2)
  1347.                 if command == "1":
  1348.                     if "an empty glass bowl" in inv:
  1349.                         print "1: Collect the ink in your hands"
  1350.                         print "2: Collect the ink in the glass bowl"
  1351.                         command = choice(command, 2)
  1352.                         if command == "1":
  1353.                             print "It slips through your fingers."
  1354.                         elif command == "2":
  1355.                             print "You half fill the bowl with ink."
  1356.                             inv.remove("an empty glass bowl")
  1357.                             inv.append("a glass bowl of ink")
  1358.                     elif "a glass bowl of water" in inv:
  1359.                         print "1: Collect the ink in your hands"
  1360.                         print "2: Add the ink to the water in the glass bowl"
  1361.                         command = choice(command, 2)
  1362.                         if command == "1":
  1363.                             print "It slips through your fingers."
  1364.                         elif command == "2":
  1365.                             print "The ink is watered down."
  1366.                             inv.remove("a glass bowl of water")
  1367.                             inv.append("a glass bowl of watered down ink")
  1368.                     elif "a glass bowl of blood" in inv:
  1369.                         print "1: Collect the ink in your hands"
  1370.                         print "2: Add the ink to the blood in the glass bowl"
  1371.                         command = choice(command, 2)
  1372.                         if command == "1":
  1373.                             print "It slips through your fingers."
  1374.                         elif command == "2":
  1375.                             print "The ink sinks into the blood without a trace. The contents of the bowl look the"
  1376.                             print "same as before."
  1377.                     else:
  1378.                         ##### #-------------------------------------------------------------------------------|
  1379.                         print "You attempt to collect the ink in your hands, but it slips through your"
  1380.                         print "fingers."
  1381.  
  1382. # Annexe
  1383.  
  1384.         elif room == "annexe":
  1385.            
  1386.             if command == "X":
  1387.                 print
  1388.                 print "1: Leave"
  1389.                 print "2: Do nothing"
  1390.                 command = choice(command, 2)
  1391.                 if command == "1":
  1392.                     room = "corridor"
  1393.                     print room_desc[room]
  1394.             elif command == "A":
  1395.                 if not annexe_A_letters:
  1396.                     print "Without a word, she holds out a bundle of papers to you."
  1397.                     print
  1398.                     print "1: Talk to her"
  1399.                     print "2: Take the papers"
  1400.                     print "3: Do nothing"
  1401.                     command = choice(command, 3)
  1402.                     if command == "1":
  1403.                         print "\"Take them,\" she implores."
  1404.                     elif command == "2":
  1405.                         inv.append("a bundle of letters")
  1406.                         annexe_A_letters = True
  1407.                         annexe_letters_read = letters(command, annexe_letters_read)
  1408.                         if annexe_letters_read:
  1409.                             task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "red")
  1410.                         else:
  1411.                             task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "black")
  1412.                 else:
  1413.                     print "She ignores you and stares out the window."
  1414.                     print
  1415.                     print "1: Talk to her"
  1416.                     print "2: Return the letters to her"
  1417.                     print "3: Do nothing"
  1418.                     command = choice(command, 3)
  1419.                     if command == "1":
  1420.                         print "1: \"Hello\""
  1421.                         print "2: \"What are these?\""
  1422.                         command = choice(command, 2)
  1423.                         if not larva_end:
  1424.                             print "She does not respond."
  1425.                         else:
  1426.                             print "\"I believe you're wanted elsewhere,\" she says."
  1427.                     elif command == "2":
  1428.                         print "You hold out the letters to her."
  1429.                         print "She looks surprised, but accepts them."
  1430.                         inv.remove("a bundle of letters")
  1431.                         annexe_A_letters = False
  1432.                         task_colour, colour_count = colour_update(task_colour, colour_count, "letters", "white")
  1433.             elif command in ["[", "_", "]"]:
  1434.                 if not annexe_window_bandage:
  1435.                     print "There is a roll of bandages on the windowsill."
  1436.                     print
  1437.                 if "a butterfly trapped under a glass bowl" in inv:
  1438.                     print "1: Look out"
  1439.                     print "2: Release the butterfly"
  1440.                     if not annexe_window_bandage:
  1441.                         print "3: Take the bandages"
  1442.                         print "4: Do nothing"
  1443.                         command = choice(command, 4)
  1444.                     else:
  1445.                         print "3: Do nothing"
  1446.                         command = choice(command, 3)
  1447.                     if command == "1":
  1448.                         print "You can see nothing but open skies and ocean. The sun has sunken into the haze"
  1449.                         print "near the horizon."
  1450.                     elif command == "2":
  1451.                         ##### #-------------------------------------------------------------------------------|
  1452.                         print "The butterfly flies, a little hesitantly, away out of the window, and out of"
  1453.                         print "sight."
  1454.                         inv.remove("a butterfly trapped under a glass bowl")
  1455.                         inv.append("an empty glass bowl")
  1456.                         inv.append("a bundle of letters")
  1457.                         task_colour, colour_count = colour_update(task_colour, colour_count, "butterfly", "white")
  1458.                     elif command == "3" and not annexe_window_bandage:
  1459.                         print "You are now carrying a roll of bandages."
  1460.                         inv.append("a roll of bandages")
  1461.                         annexe_window_bandage = True
  1462.                 else:
  1463.                     print "1: Look out"
  1464.                     if not annexe_window_bandage:
  1465.                         print "2: Take the bandages"
  1466.                         print "3: Do nothing"
  1467.                         command = choice(command, 3)
  1468.                     else:
  1469.                         print "2: Do nothing"
  1470.                         command = choice(command, 2)
  1471.                     if command == "1":
  1472.                         print "You can see nothing but open skies and ocean. The sun has sunken into the haze"
  1473.                         print "near the horizon."
  1474.                     elif command == "2" and not annexe_window_bandage:
  1475.                         print "You are now carrying a roll of bandages."
  1476.                         inv.append("a roll of bandages")
  1477.                         annexe_window_bandage = True
  1478.  
  1479. # Library
  1480.  
  1481.         elif room == "library":
  1482.             if command == "X":
  1483.                 print
  1484.                 print "1: Leave"
  1485.                 print "2: Do nothing"
  1486.                 command = choice(command, 2)
  1487.                 if command == "1":
  1488.                     room = "corridor"
  1489.                     print room_desc[room]
  1490.             elif command == "f":
  1491.                 if not library_f_bowl:
  1492.                     print "It is staring into a glass bowl at its feet."
  1493.                     print
  1494.                     print "1: Take the bowl"
  1495.                     print "2: Do nothing"
  1496.                     command = choice(command, 2)
  1497.                     if command == "1":
  1498.                         print "You are now carrying an empty glass bowl."
  1499.                         inv.append("an empty glass bowl")
  1500.                         library_f_bowl = True
  1501.                 else:
  1502.                     print "It stares pensively at the floor."
  1503.             elif command == "y":
  1504.                 if task_colour["water"] == "grey":
  1505.                     print
  1506.                     print "1: Collect the water"
  1507.                     print "2: Stop the flow of water"
  1508.                     print "3: Do nothing"
  1509.                     command = choice(command, 3)
  1510.                     if command == "1":
  1511.                         if "an empty glass bowl" in inv:
  1512.                             print "1: Collect the water in your hands"
  1513.                             print "2: Collect the water in the glass bowl"
  1514.                             command = choice(command, 2)
  1515.                             if command == "1":
  1516.                                 print "It slips through your fingers."
  1517.                             elif command == "2":
  1518.                                 print "You half fill the bowl with water."
  1519.                                 inv.remove("an empty glass bowl")
  1520.                                 print
  1521.                                 print "1: Take the glass bowl"
  1522.                                 print "2: Leave the glass bowl under the leaking pipe"
  1523.                                 command = choice(command, 2)
  1524.                                 if command == "1":
  1525.                                     print "You are now carrying a glass bowl of water."
  1526.                                     inv.append("a glass bowl of water")
  1527.                                 elif command == "2":
  1528.                                     ##### #-------------------------------------------------------------------------------|
  1529.                                     print "The water slowly collects into the bowl, rather than flowing onto the books."
  1530.                                     task_colour, colour_count = colour_update(task_colour, colour_count, "water", "black")
  1531.                                     object_desc["library"]["y"] = "The pipe is leaking water into a glass bowl."
  1532.                         elif "a glass bowl of blood" in inv:
  1533.                             print "1: Collect the water in your hands"
  1534.                             print "2: Add the water to the glass bowl of blood"
  1535.                             command = choice(command, 2)
  1536.                             if command == "1":
  1537.                                 print "It slips through your fingers."
  1538.                             elif command == "2":
  1539.                                 print "The contents of the bowl looks just the same."
  1540.                         elif "a glass bowl of ink" in inv:
  1541.                             print "1: Collect the water in your hands"
  1542.                             print "2: Add the water to the glass bowl of ink"
  1543.                             command = choice(command, 2)
  1544.                             if command == "1":
  1545.                                 print "It slips through your fingers."
  1546.                             elif command == "2":
  1547.                                 print "The ink is watered down."
  1548.                                 inv.remove("a glass bowl of ink")
  1549.                                 inv.append("a glass bowl of watered down ink")
  1550.                         else:
  1551.                             ##### #-------------------------------------------------------------------------------|
  1552.                             print "You attempt to collect the water in your hands, but it slips through your"
  1553.                             print "fingers."
  1554.                     elif command == "2":
  1555.                         if "a roll of bandages" not in inv:
  1556.                             print "You try to stop the flow by hand, but it still seeps through."
  1557.                         else:
  1558.                             print "1: Stop the flow by hand."
  1559.                             print "2: Wrap the bandages around the pipe"
  1560.                             print "3: Stuff the bandages into the pipe"
  1561.                             command = choice(command, 3)
  1562.                             if command == "1":
  1563.                                 print "You try to stop the flow by hand, but it still seeps through."
  1564.                             elif command == "2":
  1565.                                 ##### #-------------------------------------------------------------------------------|
  1566.                                 print "You wrap the bandages several times around the pipe. It eventually stops"
  1567.                                 print "leaking."
  1568.                                 task_colour, colour_count = colour_update(task_colour, colour_count, "water", "white")
  1569.                                 object_desc["library"]["y"] = "The pipe is wrapped in bandages."
  1570.                                 if not bandage_used:
  1571.                                     bandage_used = True
  1572.                                     item_desc["a roll of bandages"] += " There is not much left."
  1573.                                 else:
  1574.                                     print "The roll of bandages has run out."
  1575.                                     inv.remove("a roll of bandages")
  1576.                             elif command == "3":
  1577.                                 print "You bunch up the bandages and push them into the pipe, blocking it."
  1578.                                 inv.remove("a roll of bandages")
  1579.                                 task_colour, colour_count = colour_update(task_colour, colour_count, "water", "red")
  1580.                                 object_desc["library"]["y"] = "The pipe is blocked by a pile of bandages."
  1581.                 elif task_colour["water"] == "black":
  1582.                     print
  1583.                     print "1: Take the bowl"
  1584.                     print "2: Do nothing"
  1585.                     command = choice(command, 2)
  1586.                     if command == "1":
  1587.                         inv.append("a glass bowl of water")
  1588.                         object_desc["library"]["y"] = "The pipe is leaking water onto the bookshelf."
  1589.             elif command == "N":
  1590.                 print "It shows the time as being " + time[6 - (colour_count["red"] + colour_count["white"] + colour_count["black"])]
  1591.             elif command == "n":
  1592.                 print "It is a book on lepidopterology; the study of butterflies and moths."
  1593.                 print
  1594.                 print "1: Read it"
  1595.                 print "2: Do nothing"
  1596.                 command = choice(command, 2)
  1597.                 if command == "1":
  1598.                     print "1: Read about life cycle"
  1599.                     print "2: Read about behaviour"
  1600.                     print "3: Read about identification"
  1601.                     command = choice(command, 3)
  1602.                     if command == "1":
  1603.                         ##### #-------------------------------------------------------------------------------|
  1604.                         print "The life cycle of lepidoptera has four stages. They begin life as eggs, often"
  1605.                         print "laid hundreds at a time. Upon hatching, they become caterpillars (larva). At"
  1606.                         print "this stage, their sole purpose is to gather enough nutrients to undergo"
  1607.                         print "metamorphosis. As such, they consume prolific amounts of plant material. Once"
  1608.                         print "they have consumed enough, they spin a chrysalis or cocoon (pupa), in which"
  1609.                         print "their body undergoes complete change to become the butterfly or moth (imago)."
  1610.                         print "The imago mates and lays eggs, perpetuating the cycle."
  1611.                     elif command == "2":
  1612.                         ##### #-------------------------------------------------------------------------------|
  1613.                         print "Behaviour in the larval instar consists almost entirely of eating, and the"
  1614.                         print "creature is effectively sessile while unhatched or as pupa. Thus, the majority"
  1615.                         print "of complex behaviour occurs in the imago. Contrary to the popular impression of"
  1616.                         print "butterflies as being gentle, harmless, serendipitous creatures, many species"
  1617.                         print "are in fact highly territorial. Males will fight amongst themselves over food,"
  1618.                         print "females, and host plants for egg-laying. This fighting usually takes the form"
  1619.                         print "of flying around one another in a rising helix, followed by the dominant"
  1620.                         print "individual chasing the other away."
  1621.                     elif command == "3":
  1622.                         ##### #-------------------------------------------------------------------------------|
  1623.                         print "The imago can be identified by colour, pattern and shape of wings, size,"
  1624.                         print "and the form of the legs and antennae. Identification of lepidoptera at other"
  1625.                         print "development stages is more difficult, but not impossible. Note that the larva"
  1626.                         print "typically moults several times and may look different each time."
  1627.                         if "a butterfly trapped under a glass bowl" in inv:
  1628.                             print
  1629.                             print "1: Identify the butterfly trapped under the glass bowl"
  1630.                             print "2: Do nothing"
  1631.                             command = choice(command, 2)
  1632.                             if command == "1":
  1633.                                 ##### #-------------------------------------------------------------------------------|
  1634.                                 print "It is a Vanessa atalanta, otherwise known as the Red Admiral. They are a common"
  1635.                                 print "sight in the temperate regions of the northern hemisphere. The wings are mostly"
  1636.                                 print "black, with bright red strips and white patches on the tips of the forewings."
  1637.  
  1638.     else:
  1639.         print "Command \"" + command + "\" not recognised. Try entering H for help."
  1640.  
  1641. ##### #-------------------------------------------------------------------------------|
  1642. print "\"Welcome back,\" she says, \"I'm glad you could join me again. That's not to"
  1643. print "say you actually had any choice not to come back - after all, there is no"
  1644. print "choice any more, is there?\""
  1645. print
  1646. print "1: \"No, there isn't.\""
  1647. command = choice(command, 1)
  1648. if colour_count["white"] > win_condition:
  1649.     ##### #-------------------------------------------------------------------------------|
  1650.     print "She smiles; a strange, lopsided smile. Her eyes can't quite meet yours."
  1651.     print "\"Well, I'll leave it to you, then,\" she says quietly."
  1652.     print
  1653.     print "1: Take the controls"
  1654.     command = choice(command, 1)
  1655.     print "You steer the aircraft, banking it gently to the left. There are clouds on the"
  1656.     print "horizon."
  1657.     print
  1658.     print "1: Wait"
  1659.     command = choice(command, 1)
  1660.     print "After a few minutes, a long, sandy coast appears on the horizon. Beyond it is"
  1661.     print "a flat, featureless expanse of grassland."
  1662.     print "\"I suppose this is it, isn't it?\""
  1663.     print
  1664.     print "1: \"Yes.\""
  1665.     command = choice(command, 1)
  1666.     print "You carefully angle the nose downwards, flicking all the right switches in the"
  1667.     print "proper landing procedure."
  1668.     print "\"I wish it had ended differently, but... really, it's hard to deny that this is"
  1669.     print "for the best.\""
  1670.     print
  1671.     print "1: Land"
  1672.     command = choice(command, 1)
  1673.     print "The aircraft slows and meets the ground, coming to a stop in the long, waving"
  1674.     print "grass. You get up and make your way to the exit of the cockpit. You spare one"
  1675.     print "glance back at the angel in the copilot's seat. She smiles as sweetly as ever"
  1676.     print "she did before, but her eyes are glazed with tears."
  1677.     print
  1678.     print "1: Leave"
  1679.     command = choice(command, 1)
  1680.     print "And somewhere, in a hospital bed thousands of miles away, a young man in a coma"
  1681.     print "begins to return to lucidity. The process is slow and painful, and it is weeks"
  1682.     print "before he can even stand unaided. He suffers almost complete retrograde amnesia"
  1683.     print "and can remember nothing of how he ended up in this state - nor is he ever"
  1684.     print "told."
  1685.     print
  1686.     print "He is left with a severe, lifelong fear of flying."
  1687.     print
  1688.     print "Ending two of four: White"
  1689.     print
  1690.     print "1: Exit"
  1691.     command = choice(command, 1)
  1692.  
  1693. elif colour_count["red"] > win_condition:
  1694.     ##### #-------------------------------------------------------------------------------|
  1695.     print "She giggles mischievously."
  1696.     print "\"Well, I'll leave it to you, then,\" she purrs, stroking the back of your hand."
  1697.     print
  1698.     print "1: Take the controls"
  1699.     command = choice(command, 1)
  1700.     print "You steer the aircraft, banking it gently to the right, and increase the speed"
  1701.     print "via the throttle."
  1702.     print
  1703.     print "1: Wait"
  1704.     command = choice(command, 1)
  1705.     print "After a few minutes, a little greyish green patch appears on the horizon. As"
  1706.     print "you near, it coalesces into an island, with steep, grey cliffs and windblown"
  1707.     print "conifers."
  1708.     print "\"I suppose this is it, isn't it?\""
  1709.     print
  1710.     print "1: \"Yes.\""
  1711.     command = choice(command, 1)
  1712.     print "You angle the nose of the plane downwards, straight towards the rocks at the"
  1713.     print "base of the cliff, and accelerate further. You feel yourself pushed back into"
  1714.     print "your seat."
  1715.     print "\"Are you afraid?\""
  1716.     print
  1717.     print "1: \"Yes.\""
  1718.     command = choice(command, 1)
  1719.     print "\"So am I. I am afraid of death. I wish there were another way, but there is"
  1720.     print "no choice any more.\""
  1721.     print "Outside the window, the view of the cliff inflates further and further, filling"
  1722.     print "your entire vision. You hold her hand."
  1723.     print
  1724.     print "1: Crash"
  1725.     command = choice(command, 1)
  1726.     print "And somewhere, in a hospital bed thousands of miles away, a young man in a coma"
  1727.     print "falls into cardiac arrest. Despite the best efforts of the doctors and nurses,"
  1728.     print "he cannot be revived, and slips away into death."
  1729.     print
  1730.     print "Ending three of four: Red"
  1731.     print
  1732.     print "1: Exit"
  1733.     command = choice(command, 1)
  1734.  
  1735. elif colour_count["black"] > win_condition:
  1736.     ##### #-------------------------------------------------------------------------------|
  1737.     print "She smiles; a beautiful, carefree, almost childlike smile."
  1738.     print "\"I really didn't think it was possible.\""
  1739.     print
  1740.     print "1: Smile"
  1741.     command = choice(command, 1)
  1742.     print "You smile back at her, a mirror to her emotions."
  1743.     print "\"Well, I'll leave it to you, then,\" she says in a melodious voice."
  1744.     print
  1745.     print "1: Take the controls"
  1746.     command = choice(command, 1)
  1747.     print "You gently pull back on the throttle, letting the aircraft slow to a more"
  1748.     print "comfortable pace. Then, one by one, you cut power to the engines, leaving you"
  1749.     print "gliding silently through the air."
  1750.     print
  1751.     print "1: Do nothing"
  1752.     command = choice(command, 1)
  1753.     print "The two of you sit back and enjoy the silence, absent of that mechanical hum"
  1754.     print "that you'd forgotten you could even hear; and enjoy the view, the shapes of the"
  1755.     print "clouds, and the colour of the sea and the sky."
  1756.     print
  1757.     print "1: Do nothing"
  1758.     command = choice(command, 1)
  1759.     print "You spend days, or months, or years like that, watching the world turn beneath"
  1760.     print "you. Occasionally you talk, or laugh, or kiss, safe in the knowledge that this"
  1761.     print "is how things should be; that nothing more needs to be done."
  1762.     print
  1763.     print "1: Do nothing"
  1764.     command = choice(command, 1)
  1765.     print "And somewhere, in a hopsital bed thousands of miles away, a young man in a coma"
  1766.     print "lies still, body relaxed, a faint smile on his face. Even as the months pass,"
  1767.     print "as his muscles waste away and his pulse grows ever weaker, he makes no effort"
  1768.     print "at all. \"Why won't he wake up?\" lament his parents, his doctors, the world."
  1769.     print
  1770.     print "At last, his body fails, or a plug is pulled, but it doesn't matter for he has"
  1771.     print "already won."
  1772.     print
  1773.     print "Ending four of four: Black"
  1774.     print
  1775.     print "1: Exit"
  1776.     command = choice(command, 1)
  1777.  
  1778. else:
  1779.     ##### #-------------------------------------------------------------------------------|
  1780.     print "She sighs."
  1781.     print "\"I know you tried - believe me, I do - but trying alone is not enough. Perhaps"
  1782.     print "you did set everything in order to appease yourself, but, ultimately, you"
  1783.     print "lacked the conviction to set the two of us free.\""
  1784.     print
  1785.     print "1: Say nothing"
  1786.     command = choice(command, 1)
  1787.     print "She gestures towards the panel of flight instruments in front of you."
  1788.     print "\"You know what? Go on, you take the controls. Do something.\""
  1789.     print
  1790.     print "1: Do nothing"
  1791.     command = choice(command, 1)
  1792.     print "\"Look, the throttle is right there, under your hand. Just take it and push it"
  1793.     print "forwards.\""
  1794.     print
  1795.     print "1: Do nothing"
  1796.     command = choice(command, 1)
  1797.     print "\"There! There's a whole board of switches. Try pressing some of them.\""
  1798.     print
  1799.     print "1: Do nothing"
  1800.     command = choice(command, 1)
  1801.     print "\"It's so easy to imagine simply reaching out and taking control, isn't it? But"
  1802.     print "it's not that easy.\""
  1803.     print "She looks down at her lap, fists clenched, tears of frustration forming in the"
  1804.     print "corners of her eyes."
  1805.     print "\"It's not that easy.\""
  1806.     print
  1807.     print "1: Do nothing"
  1808.     command = choice(command, 1)
  1809.     print "Outside the windshield, the ocean and sky extend onwards forever, beyond the"
  1810.     print "horizon, an infinite, meaningless void."
  1811.     print
  1812.     print "Most butterflies do not make it to the imago stage; they are killed by"
  1813.     print "predators, parasites, disease, starvation, pesticide or even simply poor"
  1814.     print "weather. Thankfully, they lay eggs by the hundreds - sometimes thousands -"
  1815.     print "so, though the individual may die, somewhere, some other creature will succeed."
  1816.     print
  1817.     print "Ending one of four: Grey"
  1818.     print
  1819.     print "1: Exit"
  1820.     command = choice(command, 1)
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855. # Immediately above this is the code for the endings, which contains major
  1856. # spoilers. I highly recommend not scrolling up from here.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement