! Tomb of Depression -- A spoof on Egyptian Tomb Treasure Hunt Adventures ! An Interactive Fiction ! Written by Richard Avery ! CIS 587 - Dr. Maxim ! Spring 2000 ! set up the title info Constant Story "Tomb of Depression"; Constant Headline "^An Interactive Exploration^ Copyright (c) 2000 by Richard Avery.^ Dr. Maxim's name reused without permission.^"; Release 1; Serial "060100"; ! set the max score possible Constant MAX_SCORE 200; ! include the vital files Include "parser"; Include "verblib"; Include "grammar"; ! let's set up some verbs to expand the vocabulary ! ! allows player to see map of rooms visited. Verb "map" "m" * -> Map; [ MapSub ; draw_map(); ]; ! set up pry like open to use on crate Verb "pry" = "open"; ! set up lift to be like move Verb "lift" = "move"; ! set up strike to be like rub for the flint rocks Verb "strike" = "rub"; ! allow digging "in" the ash Extend "dig" first * "in" noun -> Dig; ! Start by setting player's location and give them the story background [ Initialise; location = entrance; print "^The year is 2047 A.D. and all of the Egyptian Tombs have been explored and pilfered. That is, all except one. There is still one tomb that remains essentially untouched since it's closure around 3000 years ago. The tomb encases a little known King who ruled during the Great Egyptian Depression, King Maxim. King Maxim had so little money that he was unable to hire anyone to build a great resting place like the other kings had, so not to be outdone, he set out to build his own great wonder of the world. Legend has it that King Maxim put so much time and effort into building the tomb, that he neglected his duties as ruler of Egypt. He also neglected his health and ultimately died within the very tomb that he was trying to finish. Unlike the more popular (and wealthy) kings before him, King Maxim's tomb did not surround him with all of the worldly jewels and treasures that typically are bestowed upon a Divine Ruler. This fact alone is the reason that his final resting place has remained intact all of these years. Nevertheless, being the great adventurer that you are, you hopped a plane to Egypt to explore the fabled Tomb of Depression.^^"; ]; !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! DEFINE ALL OF THE ROOMS ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! The Entrance to the tomb Object entrance "Entrance" has light with name "entrance", initial [; ! Only display this the first time if (graffiti_room hasnt visited) { "^^^Well you've done it. You've found the tomb and you're^ standing in the entrance. Of course, finding it wasn't^ all that difficult since the door to the tomb has been^ vandalized and spray painted words on the door exclaim^ 'Here lies the Great Loser Pharaoh'. Undaunted, you ^ insist on exploring what man has not seen in over 3000^ years."; } ], description "You are standing in the entrance to the tomb. A passage^ leads to the west.", ! Start a daemon to see if all of the rooms have been visited and to ! watch for the player trying to run around in the dark. each_turn [; StartDaemon(self);], daemon [; if (self has general) { ! shut down the daemon because we've already printed the ! message. StopDaemon(self); rtrue; } else if ((tomb_room has visited) && (bar_room has visited) && (storage_room has visited) && (empty_room has visited) && (dog_room has visited)) { ! All rooms visited, coax player back to entrance print"^Now that you've visited all of the rooms, if you^ think you've found all of the treasures, head back^ to the entrance to get out of here. Remember^ the boulder? If you think there are more treasures,^ keep looking!"; give self general; StopDaemon(self); rtrue; } else if ((player notin party_room) && (player notin graffiti_room) && (player notin entrance) && (player notin candle_room) && (player notin storage_room) && (player notin workshop) && (torch hasnt light)) { ! Player trying to run around in dark...kill 'em deadflag = 1; print "As you try wandering around in the dark, you smash^ your head against a rock wall. As you lie on the^ floor bleeding, your last thoughts are 'why didn't^ I just get a light (or better yet, a Bud Light)??'"; StopDaemon(self); rtrue; } ], w_to graffiti_room; ! The Graffiti Room Object graffiti_room "Graffiti Room" has light with name "graffiti", description "You're in a room that has carvings on the walls.^ Some of the carvings appear to be ancient Egyptian writings,^ but surprisingly, others look more recent. Passages lead to^ the north and east.", e_to entrance, n_to party_room; ! The Party Room Object party_room "Party Room" has light with name "party" "debris" "small" "beam" "stairwell", description "Barely lit by a small beam of light making^ its way from the tomb entrance, you appear to be standing^ in a room that was used for a party. Debris is scattered^ about. A stairwell leads down to the north and exits lead^ to the south and east.", s_to graffiti_room, e_to candle_room, d_to workshop, n_to workshop; ! The Candle Room Object candle_room "Candle Room" has light with name "candle", description "A small crack in the roof of this room lets ^ in a beam of sunlight. It seems that the good King's ^ building skills were not the greatest because along with^ the crack in the roof, much of the stone in this room is^ beginning to crumble. Exits lead to the east and west.", e_to storage_room, w_to party_room; ! The Storage Room Object storage_room "Storage Room" has ~light with name "storage", initial "^^You're in a very large, L-shaped room. This^ room was obviously intended to house all of the King's^ treasures. Local legend has it that the king was a bit^ of a gambling man and he intended on filling this room^ with the winnings he hoped for from the Egyptian Lottery.", description "You're in the large, L-shaped room intended^ to store the King's treasures...of which he had none. Exits^ lead to the west and east.", w_to candle_room, e_to empty_room; ! The Empty Room Object empty_room "Empty Room" has ~light with name "empty", initial "^^You're in a room that is amazingly empty for an^ adventure game. What, can't we have a room that has nothing^ in it? Consider this like a break at the movies. Go get^ a beer, a snack, stretch a bit and then come back. We'll^ still be here.", description "You're in the empty room. Nothing to do,^ nothing to see. Exits lead to the southwest and north.", sw_to storage_room, n_to dog_room; ! The Dog Room Object dog_room "Dog Room" has ~light with name "dog" "carving" "carvings", description "Based on the carvings on the wall you have^ cleverly deduced that this room was intended to be the ^ final resting place of the King's best friend... his dog.^ An exit leads south and a sloping ramp leads down to the^ north.", n_to tunnel_hub, d_to tunnel_hub, s_to empty_room; ! The Tunnel Hub Object tunnel_hub "Tunnel Hub" has ~light with name "hub" "tunnel" "arrow", description "You're in a room that has tunnels leading^ to the east and the west. A sloping ramp leads upward to^ the south. ", s_to dog_room, u_to dog_room, e_to winding_tunnel, w_to bar_room; ! The Winding Tunnel Object winding_tunnel "Winding Tunnel" has ~light with name "winding" "tunnel" "piles" "dirt" "stone", description "You're in a long winding tunnel with exits^ at each end. The tunnel is very narrow and piles of dirt^ and stone lie scattered about. It's obvious that this area^ was not completed by the King. The tunnel exits are at the west and south.", after [; Go: give iron_door ~open; ], s_to iron_door, w_to tunnel_hub; ! The Crank Room Object crank_room "Crank Room" has ~light with name "crank_room", initial [; ! If we haven't been here before, print this message if (self hasnt general) { give self general; print "^^As you enter this room, the large door smashes^ shut behind you. There is no handle on this side and the^ door cannot be opened. There appears to be no other exit^ from this room. A decaying body lies on the floor.^ Something tells you, however, that this is not the ^ body of King Maxim. The air smells very stale in^ here.^"; } ], description "You're in a room with no apparent exits other^ than a large iron door that cannot be opened from this side.^ The oxygen in this room is running low.", before [; ! only allow west exit if it was discovered Go: if (noun == w_obj) { if (opening notin crank_room) { "You can't go that way."; } else { give west_block concealed; remove opening; round_crank.twists = 0; print "As you leave the Crank Room, the block moves back to^ cover the opening.^"; rfalse; } } ! only allow east exit if it was discovered else if (noun == e_obj) { if (passage notin crank_room) { "You can't go that way."; } } ], ! Start a daemon that only allows a limited number of turns in this ! room before killing off the player number 0, each_turn [; StartDaemon(self);], daemon [; if (player notin crank_room) { self.number = 0; StopDaemon(self); rtrue; } switch(++self.number) { 4: "^Gosh, the air in here is thin."; 6: "^You are beginning to gasp for air as you quickly use up^ the available supply."; 8: "^You are feeling very light-headed and are about to ^ pass out. You better find a way out of here quickly!"; 10: deadflag = 1; "^As you take your last gasp of breath, you realize that you^ too will join King Maxim's friend for all of eternity in this^ room!!"; } ], w_to empty_room, e_to tomb_room; ! The Tomb Room Object tomb_room "Tomb Room" has ~light with name "tomb", initial "^^You can't believe your eyes, or your luck. You've^ found the final resting place of the Great King. Of^ course, he's lying in the middle of the room almost completely^ decayed and not looking like much of a king.", description "You're standing in the final room that the ^ King worked on. He's lying in the floor, what's left of him^ anyway. An exit to the west takes you back to the crank room.", w_to crank_room; ! The Bar Room Object bar_room "Bar Room" has ~light with name "bar", initial [; ! Only print this the first time in the room if (self hasnt general) { give self general; print "^^^As you enter this room, an iron bar zings past your face^ and embeds itself in the wall next to you. It was^ obviously a booby trap that was meant to eliminate you but^ the good King must have finished in the lower half of^ his 'how to kill an intruder in your tomb' class.^"; } ], description "You're in a room surrounded by bars embedded^ in the walls. It seems the King spent a lot of time^ practicing his booby trap here. Exits lead to the east and south.", e_to tunnel_hub, s_to workshop; ! The Workshop Object workshop "Workshop" has ~light with name "work" "shop" "workshop" "old" "broken" "tools" "large" "chunks" "iron", initial "^^This must be the room that the King used as his^ workshop. Several old broken tools are scattered about the^ area and large chunks of iron are here. The King must have^ used this room to make his tools, even though none of the^ tools here today appear to be useful to you.", description "Old broken tools litter the area along with^ chunks of iron. An exit leads to the north and a stairwell^ leads up to the south.", n_to bar_room, u_to party_room, s_to party_room; !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! DEFINE ALL OF THE OBJECTS ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! The large boulder in the entrance Object boulder "Boulder" entrance with name "boulder", initial "A boulder rests in the corner of this room.", description "It's a boulder, big and heavy.", before [; ! Do not allow takes or opens Take: "This is a boulder, it is much too heavy to carry."; Open, Unlock: "You can't do that to the boulder."; ! Only allow it to be moved if the player has found all ! treasures. Push, Pull: if (score >= 80) { give savings_bond ~concealed; if (self hasnt general) { if (bar in player) { give self general; "As you force up the boulder, you spot something underneath^ it. You kick it out from under the boulder and let the ^ boulder crash back down."; } else { "you need something else to pry with"; } } else { "lifting the boulder up again is only going to hurt your^ back."; } } else { print "You try to lift the boulder, but it seems you don't have^ enough strength. Perhaps if you had found all of the^ treasures in this tomb already, you'd be more energetic."; ! Tell player how many treasures he's missing if (score == 20) { "^It seems that you're still missing several of the treasures."; } else if (score == 40) { "^It seems that you're still missing two treasures."; } else if (score == 60) { "^It seems that you're missing only 1 more treasure piece."; } else { rtrue; } } ], has static; ! The small rocks in the entrance Object small_rocks "Small Rocks" entrance with name "small" "rocks" "rock" "stones" "flint", initial "Two small flint-like rocks lie on the dirt floor.", description "Two small flint-like rocks.", before [; ! Rubbing or striking rocks produces spark Rub: if (torch in player) { ! If spark and player has torch, light it. if (torch has light) { "Striking the rocks together produces a spark."; } else { give torch light; "After striking the rocks together, they spark and light^ the torch...cool huh?"; } } "Striking the rocks together produces a small spark."; ! If rocks thrown at dog, chase him away, otherwise just drop ! the rocks. ThrowAt: if (dog in location) { if (self in player) { if (second == dog) { give dog general; move self to location; if (dog in dog_room) { move dog to bar_room; print "You throw the rocks at the dog. Trying to avoid having^ his 3000 year old body critically damaged by being hit,^ he growls at you and runs off."; ! If dish has not been revealed before, do it ! now. if (golden_dish has concealed) { give golden_dish ~concealed; print"^You see a golden dish now that he was tirelessly guarding."; give golden_dish ~concealed; } rtrue; } else { move dog to dog_room; "Once again, you throw something at the dog and he^ runs away. If you leave him alone, he's not much of^ a threat to you. Remember, he's 21,000 years old in^ dog years!"; } } else { move self to location; "You throw the rocks down."; } } else { "You don't have any rocks."; } } else { move self to location; "You throw the rocks down."; } ], has pluralname; ! The carvings Object carvings "Carvings" graffiti_room with name "carvings", description "Being the great Egyptian hieroglyphic expert that you^ are, and the fact that some of the carvings are in^ English, you're able to decipher three of the ^ phrases:^ - Tut was here,^ - For a good time, go to Pyramid 7,^ - Danger: In room of no exits, exit quickly!^^^ You also find the following very useful information:^ Type map (or m) to see where you've been and where^ you currently are.", has pluralname static; Object fire_pit "Fire Pit" party_room with name "fire" "pit" "ash" "pile", description "It looks like someone had a campfire here, only a^ pile of ash remains.", before [; ! Can't take the ash, but you can dig or move it. Take: "You don't need to carry around a bunch of ash."; Dig, Push, Pull: if (self has general) "You've already played here, there's nothing more to see."; give self general; give broken_golden_cup ~concealed; "You sort through the ash and discover a broken golden cup,^ no doubt left over from some ancient Egyptian teenager^ Rave party."; ]; ! The torch...the main source of light Object torch "Torch" candle_room with name "torch", description "As with most adventures, there's got to be a light^ source somewhere.", before [; Examine: if (torch has light) "the torch is lit"; "your typical torch...this one's currently not lit"; ], has ~light; Object pole "Pole" candle_room with name "pole", description "A pole stuck between the floor and the ceiling.", before [; Examine: "a long straight wooden pole wedged between the^ floor of the room and rock above."; ! If the pole is moved, you die Take, Push, Pull: print "Moving the pole was a very bad idea.^ The good King's building skills were not very good and this^ pole was holding the rock above your head in place. The^ roof collapses with you trapped under it and now you too^ can spend eternity in King Maxim's tomb!"; deadflag = 1; rtrue; ], has ~light; ! golden cup treasure Object broken_golden_cup "Broken Golden Cup" party_room with name "cup" "golden" "broken", with cultural_value 20, description "A broken golden cup that was probably used to swig beer in the real-old days.", ! only reveal cup if it has been found before [; Take: if (self has concealed) "I don't see such a thing here."; ], after [; Take: if (self hasnt general) { give self general; score = score + self.cultural_value; } ], has concealed; ! The large crate Object large_crate "Large Crate" storage_room with name "crate" "lid", description "A very large crate big enough to house an awesome^ treasure. The lock is in very bad shape and probably can't be^ opened. Perhaps you could pry the lid with something.", when_open "The crate is open.", before [; PushDir, Remove, Take, Push, Pull: "The crate is far too heavy to bother moving."; ], ! only open crate if the bar was used after [; Unlock: if (self hasnt general) { give self general; give self open; "You're a smart one aren't you? You have successfully^ forced open the crate. Now for that awesome find...";} ], with_key bar, has container lockable locked ~open openable static; ! The old dog Object dog "Old Dog" dog_room with name "dog", description "The King's VERY old best friend. He looks very hungry!", before [; ! Attacking the dog twice will kill you Attack, Push, Pull, Take, PushDir: if (dog hasnt general) { give dog general; "Messing with a 3000 year old Pooch is not a good idea.^ He growls at you. I would take him seriously if I ^ were you. You feel the need to get him away from you,^ but you'll need to scare him away somehow."; } else { deadflag = 1; "I warned you to leave him alone! The dusty old hungry^ dog bites you and infects you with an Egyptian strain ^ of rabies that couldn't possibly have been prevented by^ his last puppy shot 3000 years ago."; } ], has animate male; ! The bar for prying the crate Object bar "Bar" bar_room with name "bar", description "A straight iron bar.", before [; ! The bar can be thrown at the dog or simply dropped ThrowAt: if (dog in location) { if (self in player) { if (second == dog) { give dog general; move self to location; if (dog in dog_room) { move dog to bar_room; print "You throw the bar at the dog. Trying to avoid having^ his 3000 year old body critically damaged by being hit,^ he growls at you and runs off."; if (golden_dish has concealed) { give golden_dish ~concealed; print"^You see a golden dish now that he was tirelessly guarding."; give golden_dish ~concealed; } rtrue; } else { move dog to dog_room; "Once again, you throw something at the dog and he^ runs away. If you leave him alone, he's not much of^ a threat to you. Remember, he's 21,000 years old in^ dog years!"; } } else { move self to location; "You throw the bar down."; } } else { "You don't have a bar."; } } else { move self to location; "You throw the bar down."; } ]; ! The toolbox...conceals the key Object toolbox "Empty Toolbox" workshop with name "empty" "toolbox" "tool" "box", description "An empty toolbox that is in very bad shape. There's a large hole^ in the bottom of it so it wouldn't be much good for holding things anymore.", before [; ! key is only available if it has been found Push, Pull: give old_key ~concealed; if (self hasnt general) { give self general; print "As you move the old toolbox, you see a key beneath it."; rtrue; } Take: give old_key ~concealed; if (self hasnt general) { give self general; move self to player; print "As you take the old toolbox, you see a key beneath it."; rtrue; } ]; ! The key to the iron door Object old_key "Old Key" workshop with name "key", description "A very old key. It must be to a very old lock.", has concealed; ! The dead king Object king "decaying Great King" tomb_room with name "king" "maxim" "decaying" "great", description "The once great, well not-so-great, King Maxim lies^ in his final resting place. It's not exactly what he had in mind^ but at least he did build his own tomb as he set out to do. His body^ is nearly gone now but you'll never forget him.", before [; ! can't move the king Push, Pull, Take: "Moving the King is not a good idea because he'll just^ crumble. Let's just let him rest where he is."; ]; ! The King's Friend Object decaying_body "decaying body" crank_room with name "decaying" "body" "friend", description "The decaying body of the King's good friend. There's^ not much else to say about him except that I'm sure he's still^ holding a grudge for being left here to die!", before [; ! can't move the body Push, Pull, Take: "Moving the body is not a good idea because he'll just^ crumble. Let's just let him rest where he is."; ]; ! The note left by King's friend Object note "Old Note" crank_room with name "note", description "The note says: I can't believe I'm going to die here.^ This is what I get for volunteering to help my friend, King Maxim,^ build this stupid tomb! He told me to stay here as he worked on the^ next room. But he never came back and I couldn't figure out how to^ get out. The air is almost gone...", before[; Examine: "The note says: I can't believe I'm going to die here.^ This is what I get for volunteering to help my friend, King Maxim,^ build this stupid tomb! He told me to stay here as he worked on the^ next room. But he never came back and I couldn't figure out how to^ get out. The air is almost gone..."; ]; ! The dog dish Object golden_dish "Golden Dish" dog_room with name "dish", with cultural_value 20, description "An old golden dish probably used to feed the King's^ Dog. It appears that the dog may have been treated^ better than the King!", before [; ! only reveal dish if dog has been chased away Take: if (self has concealed) "I don't see such a thing here."; ], after [; Take: if (self hasnt general) { give self general; score = score + self.cultural_value; } ], has concealed; ! The large door to the crank room Object iron_door "Iron Door" with name "door" "iron" "large", description "A large iron door that doesn't look like it's been^ opened in, say, 3000 years.", when_closed "A large door blocks the exit to the south.", when_open "The large door is open, revealing a mysterious room^ to the south.", door_to [; if (location == winding_tunnel) return crank_room;], door_dir [; if (location == winding_tunnel) return s_to;], with_key old_key, found_in winding_tunnel, has door lockable locked openable static; ! The impassable door in the crank room - the back side with no handle Object closed_door "Closed Iron Door" with name "door" "iron" "closed", description "A large iron door that cannot be opened from this side.", found_in crank_room, before [; unlock, open: "The door cannot be opened from this side."; ], has door lockable locked static; ! The crank that turns to reveal secret room Object round_crank "Round Crank" crank_room with name "round" "crank", description "A round iron crank is mounted on a block in the middle^ of the room.", twists, before [; ! the first turn of the crank reveals the block, the second ! turn reveals the column. Subsequent turns do nothing. Push, Pull, Turn: if (self.twists == 0) { self.twists = 1; give west_block ~concealed; "After putting all of your strength into trying to turn the crank,^ it finally moves a little. It might be because the air is thin in^ here, but did you hear the large block to the west rumble?"; } else if (self.twists == 1) { self.twists = 2; give east_wall ~concealed; "After struggling to turn the old crank again, it moves again and^ this time it sounds like the column to the east rumbled."; } else { "The crank will no longer turn."; } ]; ! the west block Object west_block "Dislodged Block to the West" crank_room with name "block" "dislodged", description [; if (self hasnt concealed) { "The block to the west seems to have moved a little after the^ crank was turned."; } else { "You see nothing unusual about the block"; } ], ! if the block has been revealed, it can be moved to open a ! new passage. before [; Take: "That is much too heavy to carry."; Push: if (self has concealed) { "Pushing the block does nothing, perhaps it needs to be ^ dislodged somehow."; } else { move opening to crank_room; "A good strong push against the block and it moves to reveal^ an opening to the west."; } ], has concealed; ! The secret opening from crank room to the west Object opening "secret opening to the west" with name "opening", description "A secret opening has been revealed to the west."; ! The column that moves to reveal the tomb room Object east_wall "Column to the East" crank_room with name "column", description [; if (self hasnt concealed) { "The large column to the east seems to have moved a little ^ after the crank was turned."; } else { "You see nothing unusual about the column";} ], ! If the column has been revealed, it can be moved to reveal ! a new passage. before [; Take: "That is much too heavy to carry."; Push: if (self has concealed) { "Pushing the column does nothing."; } else { move passage to crank_room; "A good strong push against the column and it moves to reveal^ a passage to the east."; } ], has concealed; ! the secret passage to tomb room Object passage "secret passage to the east" with name "passage", description "A secret passage has been revealed to the west."; Object bronze_crown "Bronze Crown" tomb_room with name "bronze" "crown" "tarnished", with cultural_value 20, description "An old tarnished bronze crown, representative of the^ poor King's life and wealth.", after [; Take: if (self hasnt general) { give self general; score = score + self.cultural_value; } ]; ! gold nugget treasure Object gold_nugget "Gold Nugget" large_crate with name "gold" "nugget", with cultural_value 20, description "The only real indication you've seen that the King^ had any gold. It's a gold nugget about half the size of a golf ball.^ It's probably worth only a few hundred bucks.", after [; Take: if (self hasnt general) { give self general; score = score + self.cultural_value; } ]; ! The big finale treasure Object savings_bond "Savings Bond" entrance with name "saving" "savings" "bond", with cultural_value 120, description "A 3000 year old Egyptian Savings Bond. The face value^ says $10", before [; ! you can only grab the bond if it has been found Push, Pull: if (self has concealed) { "I don't see such a thing here."; } Take: if (self has concealed) { "I don't see such a thing here."; } else { if (self hasnt general) { ! You WIN ! give self general; move self to player; score = score + self.cultural_value; print "^^^You take a 3000 year old Egyptian Savings Bond. The face value^ says $10 but knowing Egyptian law, you know this thing has been^ accruing interest since it was bought. Being the geek that you are^ you quickly run the numbers and realize this thing is worth^ billions of dollars! I guess poor old King Maxim finally did make^ it big...it's too bad though that you'll be the one spending it^ all!!."; deadflag=2; rtrue; } } ], has concealed; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! draw_map Function. ! Draws crude ASCII map of rooms visited and current location !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ draw_map; font off; ! This code is not pretty, but adding a map really enhanced the game, ! especially for my testers! All this code does is run through the ! combinations of rooms that have been visited and then draws the ! corresponding rooms on the map. The current location is marked by ! reversing the text. The basic idea below is to go room by room from ! the top of the screen down and draw each room that have been visited ! and mark the name of the room in reverse video if the player is currently ! in that room. ! if ((winding_tunnel has visited) && (bar_room has visited)) { print" +--------+ +------------+ +--------------+^"; print" |"; if (player in bar_room) style reverse; print"BAR ROOM"; style roman; print"|------|"; if (player in tunnel_hub) style reverse; print " TUNNEL HUB "; style roman; print"|----|"; if (player in winding_tunnel) style reverse; print "WINDING TUNNEL"; style roman; print "|^"; print" +-+------+ +------+-----+ +----------+ |^"; print" | | +-+-+^"; } else if (winding_tunnel has visited) { print" +------------+ +--------------+^"; print" ---|"; if (player in tunnel_hub) style reverse; print " TUNNEL HUB "; style roman; print"|----|"; if (player in winding_tunnel) style reverse; print "WINDING TUNNEL"; style roman; print "|^"; print" +------+-----+ +----------+ |^"; print" | +-+-+^"; } else if ((tunnel_hub has visited) && (bar_room has visited)) { print" +--------+ +------------+ ^"; print" |"; if (player in bar_room) style reverse; print"BAR ROOM"; style roman; print"|------|"; if (player in tunnel_hub) style reverse; print " TUNNEL HUB "; style roman; print"|--^"; print" +-+------+ +------+-----+ ^"; print" | | ^"; } else if (tunnel_hub has visited) { print" +------------+^"; print" ---|"; if (player in tunnel_hub) style reverse; print " TUNNEL HUB "; style roman; print"|--^"; print" +------+-----+^"; print" |^"; } else if (bar_room has visited) { print" +--------+ ^"; print" |"; if (player in bar_room) style reverse; print"BAR ROOM"; style roman; print"|---^"; print" +-+------+ ^"; print" | ^"; } if ((tomb_room has visited) && (dog_room has visited)) { print" | | |^"; print" +----+---+ +---+----+ |^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| |"; if (player in dog_room) style reverse; print"DOG ROOM"; style roman; print"| |^"; print" +-+------+ +---+----+ |^"; print" | | |^"; } else if (tomb_room has visited) { print" | |^"; print" +----+---+ |^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| "; print" |^"; print" +-+------+ "; print" |^"; print" | |^"; } else if ((crank_room has visited) && (dog_room has visited)) { print" | | |^"; print" +----+---+ +---+----+ |^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| |"; if (player in dog_room) style reverse; print"DOG ROOM"; style roman; print"| |^"; print" +-+------+ +---+----+ "; print" |^"; print" | | |^"; } else if (crank_room has visited) { print" | |^"; print" +----+---+ |^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| "; print" "; print" |^"; print" +-+------+ "; print" |^"; print" | |^"; } else if ((workshop has visited) && (dog_room has visited)) { print" | | ^"; print" +----+---+ +---+----+ ^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| |"; if (player in dog_room) style reverse; print"DOG ROOM"; style roman; print"| ^"; print" +-+------+ +---+----+ ^"; print" | | ^"; } else if (workshop has visited) { print" | ^"; print" +----+---+ ^"; print" |"; if (player in workshop) style reverse; print"WORKSHOP"; style roman; print"| ^"; print" +-+------+ ^"; print" | ^"; } else if (dog_room has visited) { print" | ^"; print" +---+----+ ^"; print" "; print" "; print" |"; if (player in dog_room) style reverse; print"DOG ROOM"; style roman; print"| ^"; print" +---+----+ ^"; print" | ^"; } if ((candle_room has visited) && (storage_room has visited) && (empty_room has visited) && (tomb_room has visited)) { print" | | |^"; print" +---+-+ +------+ +----+ +-+------+ +-------------+-+ +---------+^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"|"; if ((player notin crank_room) && (player notin tomb_room)) {print"<<| ";}else{print" | ";} if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" |---|"; if (player in tomb_room) style reverse; print"TOMB ROOM"; style roman; print"|^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |--+--------+ +---------------+ +---------+^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room has visited) && (tomb_room has visited)) { print" | | |^"; print" +---+-+ +------+ +-+------+ +-------------+-+ +---------+^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"|"; if ((player notin crank_room) && (player notin tomb_room)) {print"<<| ";}else{print" | ";} if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" |---|"; if (player in tomb_room) style reverse; print"TOMB ROOM"; style roman; print"|^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |- -+--------+ +---------------+ +---------+^"; print" +-+---+ +------+ ^"; print" | ^"; print" | ^"; } else if ((candle_room has visited) && (storage_room has visited) && (empty_room hasnt visited) && (tomb_room has visited)) { print" | |^"; print" +---+-+ +------+ +----+ +-------------+-+ +---------+^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | "; print" "; style roman; print" | "; if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" |---|"; if (player in tomb_room) style reverse; print"TOMB ROOM"; style roman; print"|^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |- +---------------+ +---------+^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room has visited) && (empty_room has visited) && (tomb_room hasnt visited) && (crank_room has visited)) { print" | | |^"; print" +---+-+ +------+ +----+ +-+------+ +-------------+-+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"|"; if ((player notin crank_room) && (player notin tomb_room)) {print"<<| ";}else{print" | ";} if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" | ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |--+--------+ +---------------+ ^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room has visited) && (empty_room has visited) && (crank_room hasnt visited)) { print" | | ^"; print" +---+-+ +------+ +----+ +-+------+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"| ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |--+--------+ ^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room hasnt visited) && (tomb_room has visited)) { print" | |^"; print" +---+-+ +------+ +-------------+-+ +---------+^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| "; print" "; print" | "; if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" |---|"; if (player in tomb_room) style reverse; print"TOMB ROOM"; style roman; print"|^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" | +---------------+ +---------+^"; print" +-+---+ +------+ ^"; print" | ^"; print" | "; print" "; print" ^"; print" | ^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room hasnt visited) && (crank_room has visited) && (tomb_room hasnt visited)) { print" | |^"; print" +---+-+ +------+ +-------------+-+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| "; print" "; print" | "; if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" |^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |- +---------------+^"; print" +-+---+ +------+ ^"; print" | ^"; print" | "; print" "; print" ^"; print" | ^"; } else if ((candle_room has visited) && (storage_room has visited) && (empty_room hasnt visited) && (tomb_room hasnt visited) && (crank_room has visited)) { print" | |^"; print" +---+-+ +------+ +----+ +-------------+-+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | "; print" "; print" | "; if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" | ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |- +---------------+ ^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room has visited) && (tomb_room hasnt visited) && (crank_room has visited)) { print" | | |^"; print" +---+-+ +------+ +-+------+ +-------------+-+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"|"; if ((player notin crank_room) && (player notin tomb_room)) {print"<<| ";}else{print" | ";} if (player in crank_room) style reverse; print"CRANK ROOM"; style roman; print" | ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |- -+--------+ +---------------+ ^"; print" +-+---+ +------+ ^"; print" | ^"; print" | ^"; print" | ^"; } else if ((candle_room has visited) && (storage_room has visited) && (empty_room hasnt visited) && (crank_room hasnt visited)) { print" | ^"; print" +---+-+ +------+ +----+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| | | ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |-| |- ^"; print" +-+---+ +------+ | |^"; print" | +----+ |^"; print" | | "; if (player in storage_room) style reverse; print"STORAGE"; style roman; print" |^"; print" | +---------+^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room has visited) && (crank_room hasnt visited)) { print" | | ^"; print" +---+-+ +------+ +-+------+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| |"; if (player in empty_room) style reverse; print"EMPTY RM"; style roman; print"| ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |- -+--------+ ^"; print" +-+---+ +------+ ^"; print" | ^"; print" | ^"; print" | ^"; } else if ((candle_room has visited) && (storage_room hasnt visited) && (empty_room hasnt visited) && (crank_room hasnt visited)) { print" | ^"; print" +---+-+ +------+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| |"; if (player in candle_room) style reverse; print"CANDLE"; style roman; print"| ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |--|"; if (player in candle_room) style reverse; print"ROOM"; style roman; print" |- ^"; print" +-+---+ +------+ ^"; print" | ^"; print" | ^"; print" | ^"; } else if ((party_room has visited) && (candle_room hasnt visited) && (storage_room hasnt visited) && (empty_room hasnt visited) && (crank_room hasnt visited)) { print" | ^"; print" +---+-+ ^"; print" |"; if (player in party_room) style reverse; print"PARTY"; style roman; print"| ^"; print" |"; if (player in party_room) style reverse; print"ROOM"; style roman; print" |-^"; print" +-+---+ ^"; print" | ^"; print" | ^"; print" | ^"; } !! Almost DONE!! !! if (graffiti_room has visited) { if (party_room hasnt visited) {print" |^";} print" +-------------+ +--------+^"; print" |"; if (player in graffiti_room) style reverse; print"GRAFFITI ROOM"; style roman; print"|----|"; if (player in entrance) style reverse; print"ENTRANCE"; style roman; print"|^"; print" +-------------+ +--------+^"; } else { print "Wow, some adventurer you are. You're in the entrance and you already^ need a map?!^^^"; print" +--------+^"; print" "; print" "; print" --|"; style reverse; print"ENTRANCE"; style roman; print"|^"; print" +--------+^"; } font on; ];