;"Main file for ADVENTURE" ;"Ported to ZIL by Jesse McGrew, July-September 2015" ;"TODO: DESCRIBE-OBJECTS should mention special LOCAL-GLOBALS?" ;"TODO: Add CANT-GO property?" ;---------------------------------------------------------------------- "General directives" ;---------------------------------------------------------------------- > > > ;"BETA and DBMAZE are defined by this game. Do not comment out these lines -- that will leave the options stuck *on*." > ;"Transcript prompt, lucky number, beta title/credits" > ;"Gives the maze rooms unique names" "A Modern Classic| Based on Adventure by Willie Crowther and Don Woods (1977)| And prior adaptations by David M. Baggett (1993), Graham Nelson (1994), and others| Adapted once more by Jesse McGrew (2015)">> ;---------------------------------------------------------------------- "Main entry point" ;---------------------------------------------------------------------- > )> ;"7 objects at default size 5" > > )> > " Lucky number " N .S ".\"" CR "Use XLUCKY " N .S " to replay this game next time.]" CR> >>> ;"Change the default response, but give the location a chance to override it." > >> )> ) ( > > > > > >> )>) ( <=? ,HERE ,INSIDE-BUILDING> > ) (> >) (ELSE ) (ELSE )>)> ) ( ) ( > ,BEAR-FOLLOWING>>> ;"DROP BIRD/BEAR is normally blocked by PRE-DROP, so we intercept it here and redirect to RELEASE BIRD/BEAR." ) ( > )>)> ;"Fall back to the library's handler." > ;---------------------------------------------------------------------- "Include the standard library" ;---------------------------------------------------------------------- ;"This affects the definition of GAME-VERB?." > ;"This is used by the debugging verbs. Note: TREASUREBIT isn't listed because it's a bit synonym." ;"Override the HAVE check to allow PUT, HAVE, and DROP in a few special situations." ;"Allow PUT BIRD IN CAGE, PUT BOTTLED WATER/OIL ON , or PUT [POOL OF] WATER/OIL IN BOTTLE." > >>> ;"Allow DROP BIRD and DROP BEAR." >>>>> ;"Hook into the main loop to call UPDATE-SCORE-AND-NOTIFY directly instead of using the interrupt queue: first, because we need to make sure it runs after all other interrupts, since they might affect the score. Second, because we want it to run even on GAME-VERB turns, since debugging verbs can move treasures and affect the score." >> ;"We replace a few more library sections below." ;---------------------------------------------------------------------- "Utilities, properties, globals, and constants" ;---------------------------------------------------------------------- ;"Utility macro for randomness" .N>> ;"Properties" ;"We're almost over the limit of flags for Z-machine version 3, but we can save one flag by making TREASUREBIT a synonym of SACREDBIT. This works because SACREDBIT is only for rooms and TREASUREBIT is only for things." ;---------------------------------------------------------------------- "Scoring and treasure counting" ;---------------------------------------------------------------------- ;"Treasures" LARGE-GOLD-NUGGET TR-UNFOUND DIAMONDS TR-UNFOUND BARS-OF-SILVER TR-UNFOUND PRECIOUS-JEWELRY TR-UNFOUND RARE-COINS TR-UNFOUND PERSIAN-RUG TR-UNFOUND TREASURE-CHEST TR-UNFOUND GOLDEN-EGGS TR-UNFOUND TRIDENT TR-UNFOUND MING-VASE TR-UNFOUND EGG-SIZED-EMERALD TR-UNFOUND PLATINUM-PYRAMID TR-UNFOUND PEARL TR-UNFOUND RARE-SPICES TR-UNFOUND GOLDEN-CHAIN TR-UNFOUND>> > ) (ELSE )> )> ) (ELSE )> > >) > > CR> > ) (ELSE )> )>> ,SCORE> 1>> ) (ELSE )>) (ELSE )>)>> 2> 2) > >> ) ( ) ( ) (ELSE )> ;"A permanent 2 points for taking it in the first place" >)> ;"A revocable 5 points for carrying it" >) (<=? .OS ,TR-CARRIED> >)> ;"A revocable ${DEPOSIT-POINTS} points for placing it in INSIDE-BUILDING" >>) (<=? .OS ,TR-DEPOSITED> >>)> .NS>)>> ;"Notify player if score has changed" > ) (ELSE > )> > )> )> > ;---------------------------------------------------------------------- "The outside world" ;---------------------------------------------------------------------- >> ) (ELSE )>)>> ;"Inspired by a typo that was too amusing to take out..." ) ( ) (ELSE )> ) ( ) (ELSE )>) ( > > >> ) (ELSE )> )>) ( ) ( ) (.ENDS-HERE? ) (ELSE ) (ELSE )> ) (ELSE > )> )>)>) ( )>> ;---------------------------------------------------------------------- (HILL BUMP INCLINE) "It's just a typical hill." OTHER SIDE "Why not explore it yourself?") (FLAGS LIGHTBIT SACREDBIT)> ;---------------------------------------------------------------------- <0? >> ) ( > ) ( ) ( )>)>> )>> > )>> )>> )>> ) ( ) (ELSE )>> > ) ( ) (ELSE )>) ( ) ( ) ( )> > ) ( ) ( > ) ( ) (ELSE )>)>> > )>> > )> ;"Drain power and turn lamp off if dead" )> ;"Report anything interesting" >> ) (ELSE )> ) (<=? ,LANTERN-POWER 30> ) ( > ) ( >> )> )>)>> > ) ( ) ( ) (ELSE )>) ( >> ) ( >> ) (> ) (ELSE )>) ( > )>> ) (> ) (ELSE )>> )>> ) ( > )>> ,WATER-IN-BOTTLE) ( ,STREAM)>> ;"The response to DRINK OIL is to refuse, so we don't remove the object." ) ( > )>> ,OIL-IN-BOTTLE) ( ,OIL)>> ;---------------------------------------------------------------------- 1> ,IN-FOREST-1) (ELSE ,IN-FOREST-2)>> ;---------------------------------------------------------------------- ) ( )>> ;---------------------------------------------------------------------- ;"Since the grate isn't actually in the room, describe it here" ) ( > >> ;"Return false to continue handling WALK" )>> ) (> )>> > > ) ( ) (ELSE )>) (ELSE ) (ELSE )>)>)>> ;---------------------------------------------------------------------- "Facilis descensus Averno..." ;---------------------------------------------------------------------- ;"Since the grate isn't actually in the room, describe it here" )>> ) (TEXT "They're just ordinary cobbles.") (FLAGS PLURALBIT MULTITUDEBIT)> ;---------------------------------------------------------------------- > ) ( >> )>> ;---------------------------------------------------------------------- (DEBRIS STUFF MUD) "Yuck." <> NOTE ([READ EXAMINE] "The note says \"Magic word XYZZY\".")) (FLAGS SACREDBIT)> > )>> ) ( ) (ELSE )>) (ELSE )>)>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "The little bird in its natural habitat" ;---------------------------------------------------------------------- ) ( ) (ELSE )>) ( > ) (ELSE )>) ( > ) ( ) (> ) ( ) (ELSE )>) ( > ) (ELSE ) ( ) (ELSE )>)>) ( > ) ;"TODO: TELL, ASK, ANSWER...?" ( ) (ELSE )>)>> ;---------------------------------------------------------------------- ) (ELSE ,IN-HALL-OF-MISTS)>> > )> ) ( > )>> ) ( )>> ) ( )>> ;---------------------------------------------------------------------- "The caves open up: The Hall of Mists" ;---------------------------------------------------------------------- DOME DOME-F)> >> >) (<=? .RARG ,M-LOOK> > )> ) ( > )>> ) (ELSE ,AT-TOP-OF-SMALL-PIT)>> ) ( )>> ) ( ) (ELSE )>) ( ,P?UP) (ELSE ,P?DOWN)>>)>> ) (ELSE )>) ( )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ) (ELSE )>) ( > )>) (<=? .RARG ,M-FLASH> ;"Since the bridge isn't actually in the room, describe it here" )>)>> > )>> >>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "Long Hall to the west of the Hall of Mists" ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "Many Dead Ends will be needed for the maze below, so define a helper function" ;---------------------------------------------------------------------- !.PS>> > <0? >> )>> ;---------------------------------------------------------------------- "The Hall of the Mountain King and side chambers" ;---------------------------------------------------------------------- > > ) ( >>> )>)>> ) ( > ) (ELSE )> ) ( > ) (ELSE )>) ( ) ( )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "The Y2 Rock Room and environs, slightly below" ;---------------------------------------------------------------------- ) ( )> )>) ( > )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;"AT-WINDOW-ON-PIT-1 and AT-WINDOW-ON-PIT-2 have nearly identical descriptions and some common action responses, so we handle them with the same routine" ) ( <0? >> "east to Y2") (ELSE "west to the junction")> "." CR>) ( <=? ,HERE ,AT-WINDOW-ON-PIT-2>> )>) (<=? .RARG ,M-LOOK> "right") (ELSE "left")> ". Marks in the dust around the window would seem to indicate that someone has been here recently. Directly across the pit from you and 25 feet away there is a similar window looking into a lighted room. A shadowy figure can be seen there peering back at you." CR>)>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ) ( )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- )>> ;---------------------------------------------------------------------- "A maze of twisty little passages, all alike..." ;---------------------------------------------------------------------- ;"Define a function to save a bit of tedium. This lets us specify connections within the maze by number instead of typing out the room name, and omit TO." (NORTH TO FOO-ROOM) (NORTH 5) -> (NORTH TO ALIKE-MAZE-5)" ) (DEST <2 .C>)) >>>)> > .CS>> ;"Build room definition and evaluate it" >) (ELSE '(DESC "Maze"))> '(IN ROOMS) '(LDESC "You are in a maze of twisty little passages, all alike.") '(ACTION MAZE-ROOMS-F) !.PS>> > ) ( > )>> ;---------------------------------------------------------------------- )>> ) ( )>> ;---------------------------------------------------------------------- > > ) (ELSE )>> ;---------------------------------------------------------------------- "A line of three vital junctions, east to west" ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- > > ) ( )> )>) ( )> )>)> ) (<1? .DEST> ) (ELSE )>)>> ;---------------------------------------------------------------------- > >>> )>> ) ( )>> ;---------------------------------------------------------------------- "The Twopit Room area" ;---------------------------------------------------------------------- ;"Possible heights for the plant" >> )>> (ACTION PLANT-STICKING-UP-F) (FLAGS INVISIBLE SPONGEBIT PERSONBIT)> ) (ELSE )>> ) ( <=? ,PLANT-HEIGHT ,HUGE-HEIGHT>> ) ( ) ( )>> )>> ;---------------------------------------------------------------------- ;"TODO: is this CLIMB handler needed?" >> )>)>> (DESCFCN PLANT-DESCFCN) (ACTION PLANT-F) (FLAGS SPONGEBIT PERSONBIT)> )> )> ) (<=? ,PLANT-HEIGHT ,TALL-HEIGHT> ) (ELSE )>> ) (<=? ,PLANT-HEIGHT ,TALL-HEIGHT> ) (ELSE )>) ( ) ( > ) (>> ) (<=? .F ,OIL-IN-BOTTLE> ) (ELSE ) (<=? ,PLANT-HEIGHT ,TALL-HEIGHT> ) (ELSE )> )>) ( ) ( ) ( > ) ( )>> ;---------------------------------------------------------------------- )>> ;---------------------------------------------------------------------- ) ( ) (ELSE )>) ( ) (ELSE )>)>> ;---------------------------------------------------------------------- ) ( )>> ;---------------------------------------------------------------------- "A small network of Canyons, mostly Secret" ;---------------------------------------------------------------------- > ;"Rooms that connect to SECRET-CANYON set CANYON-FROM upon entry so SECRET-CANYON can return to the correct room" )> > ;---------------------------------------------------------------------- ,ALIKE-MAZE-6) ( ,ALIKE-MAZE-9) (ELSE ,ALIKE-MAZE-4)>> > )>> ) ( )>> ;---------------------------------------------------------------------- "Here be dragons" ;---------------------------------------------------------------------- > > > ) (ELSE .DEST)>> > ) ( > )>)> >)>> > ) ( ) ( > ) ( > > ) (ELSE )>)>> ) ( ) (ELSE )>> > )>> )>> ;---------------------------------------------------------------------- "Above the beanstalk: the Giant Room and the Waterfall" ;---------------------------------------------------------------------- > )>> (ACTION LEAVES-F) (FLAGS NDESCBIT PLURALBIT MULTITUDEBIT)> )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- > ) (> )>)>> )> "leads through") (ELSE "is barred by")> " a massive, rusty, iron door." CR>> ) (> )>) ( ) (ELSE )>) ( > ) (ELSE )>) ( > ) (ELSE )>)>> ;---------------------------------------------------------------------- ) ( )>> ;---------------------------------------------------------------------- "The caves around Bedquilt" ;---------------------------------------------------------------------- ) ( )>> ) ( )>> ;---------------------------------------------------------------------- ) (> )>) ( ) ( > >> )>> ;---------------------------------------------------------------------- (FISSURE CEILING) "You can't really get close enough to examine it.")> ;---------------------------------------------------------------------- "Plovers and pyramids" ;---------------------------------------------------------------------- > >> >>> .DEST) (ELSE )>> ,P?EAST) (ELSE ,P?WEST)>>)>> ;---------------------------------------------------------------------- > )> ) ( > )>)>> )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "North of the complex junction: a long up-down corridor" ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- " through that little passage!" CR> ) (ELSE ,AT-COMPLEX-JUNCTION)>> > > )> " here with its shell tightly closed." CR>> "are") (ELSE "is")>> > ) (ELSE > )>)> ) (ELSE )>) ( " with your bare hands." CR>) ( > > "n't strong enough to open the " "." CR>) (,OYSTER-REVEALED ) (ELSE )>) ( )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "Witt's End: Cave under construction" ;---------------------------------------------------------------------- )>> ) (ADJECTIVE RECENT SPELUNKER) (ARTICLE "a few") (FDESC "There are a few recent issues of \"Spelunker Today\" magazine here.") (TEXT "I'm afraid the magazines are written in Dwarvish.") (ACTION MAGAZINES-F) (FLAGS TAKEBIT TRYTAKEBIT PLURALBIT MULTITUDEBIT READBIT)> > > )> ) ( <=? ,HERE ,AT-WITTS-END> > )>> ;---------------------------------------------------------------------- >> ) (ELSE )>)>> ;---------------------------------------------------------------------- "North of the secret canyons, on the other side of the pit" ;---------------------------------------------------------------------- )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- > )>> ;---------------------------------------------------------------------- "The Chasm and the Troll Bridge" ;---------------------------------------------------------------------- <0? >> )>> <0? >> ) ( > ) (ELSE )>)>) (<=? .RARG ,M-FLASH> ;"Since the bridge isn't actually in the room, describe it here" )>> >> > )> ,ON-NE-SIDE-OF-CHASM) (ELSE ,ON-SW-SIDE-OF-CHASM)>) ( ) (ELSE )>> > > )>) (ELSE )>> ,P?NE) (ELSE ,P?SW)>> )>> > ) ( ) ( ) ( ) (ELSE )>) ;"TODO: TELL, ASK, ANSWER">> > > ;---------------------------------------------------------------------- > > ) (ELSE )>) (<=? .RARG ,M-FLASH> ;"Since the bridge isn't actually in the room, describe it here" )>> ;---------------------------------------------------------------------- "The Volcano" ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- > )>> ;---------------------------------------------------------------------- )>> )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- "If you go down to the woods today..." ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- (DUST MARKS) "It just looks like ordinary dust.") (FLAGS SACREDBIT)> > > > ) (,BEAR-FOLLOWING ) ( ) (<=? ,HERE ,IN-BARREN-ROOM> ) (ELSE )> > )>> > ) ( ) (ELSE )>) ( > ) (ELSE )>) (ELSE )>) ( ) (,BEAR-FRIENDLY ) (ELSE )>) ( > > ) (,BEAR-FRIENDLY ) (ELSE )>) ( > > ) (,BEAR-FRIENDLY ) (ELSE )>) ;"TODO: TELL, ASK, ANSWER" ( ) (ELSE )>) ( ) ( ) (,BEAR-FOLLOWING ) (ELSE )>) ( ) (ELSE > ) (ELSE )>)>)>> )> )>) (ELSE )>> ) ()>)>) ( > ) (> ) (> ) (ELSE )>) ( >> ) (ELSE )>) ( ) ( ) (ELSE )>)>> ;---------------------------------------------------------------------- "The Different Maze" ;---------------------------------------------------------------------- ;"Define a function to save a bit of tedium. Like MAZE-ROOM, this lets us specify connections within the maze by number instead of typing out the room name, and omit TO. It also builds the room description." (NORTH TO FOO-ROOM) (NORTH 5) -> (NORTH TO DIFFERENT-MAZE-5)" ) (DEST <2 .C>)) >>>)> > .CS>> ;"Build room definition and evaluate it" >) (ELSE '(DESC "Maze"))> '(IN ROOMS) > !.PS>> > ;---------------------------------------------------------------------- > ) (ELSE )>) ( ) ( ) ( ) ( )>> > ;"TODO: FRESH-BATTERIES should be plural." )>> ;---------------------------------------------------------------------- "Dwarves!" ;---------------------------------------------------------------------- ) ( ) ( > 1> ) (ELSE )>) ( ) (ELSE )>) ( > ) (ELSE )>) ( )>> > ) (<0? ,DWARVES-REMAINING> ) (> > ) ( > )> ) (ELSE )>)>) (> ) ( > ) ( >> ) (ELSE )>) ( ) (<=? ,HERE ,IN-MIRROR-CANYON> ) (ELSE 95> ) (ELSE )>)>) (<=? 1> )>> > ) ( )>)>> ;---------------------------------------------------------------------- "Two brushes with piracy" ;---------------------------------------------------------------------- > > <=? ,HERE ,IN-SECRET-CANYON> > ) ( )> ;"Look for treasure nearby" ;"MAP-SCOPE searches WINNER and its location, but WINNER might not be the player if this turn was an order, so set it temporarily." )>>> )> )> )> ;"Steal treasure" )> )> ;"We can't move objects in a MAP-SCOPE, so use recursion in a separate routine" > )> )>>> ;---------------------------------------------------------------------- "The cave is closing now..." ;---------------------------------------------------------------------- > 2> 2) > > )>> > ;"26 = 25 turns after this one" > > > > )> > > ;---------------------------------------------------------------------- "The End Game" ;---------------------------------------------------------------------- > ) (<=? .RARG ,M-FLASH> )>> > )>> ) (ADJECTIVE ADVENTURE MASSIVE SUNDRY) (TEXT "You've seen everything in here already, albeit in somewhat different contexts.") (ACTION GAME-MATERIALS-F) (FLAGS NDESCBIT MULTITUDEBIT)> )>> ) ( ) ( ) ( )>> > ;---------------------------------------------------------------------- SIGN ([READ EXAMINE] "The sign reads, \"TREASURE VAULT. Keys in main office.\"")) (FLAGS LIGHTBIT)> )>> ;"It can't actually be unlocked." > ) ( > )>> ) (ADJECTIVE ADVENTURE MASSIVE SUNDRY FIERCE GREEN) (TEXT "You've seen everything in here already, albeit in somewhat different contexts.") (ACTION GAME-MATERIALS-F) (FLAGS NDESCBIT MULTITUDEBIT)> )>> ;---------------------------------------------------------------------- "Stumbling around in the dark" ;---------------------------------------------------------------------- ;"Our darkness rules differ slightly from the Inform and Hugo ports as well as the original Colossal Cave. - Like the original and the Inform version, entering darkness is always safe. The player will only ever fall into a pit when moving in the dark. - Like the original version, the chance of falling into a pit is 35%, compared to 25% in the Inform and Hugo ports. - Unlike any of those versions, the player may fall into a pit when moving in an unconnected direction in the dark! The only safe direction is back into the light." ) (<=? .ARG ,M-SCOPE?> ) (<=? .ARG ,M-NOW-DARK> ) (<=? .ARG ,M-NOW-LIT> ) (<=? .ARG ,M-LIT-TO-DARK> ) (<=? .ARG ,M-DARK-TO-DARK ,M-DARK-CANT-GO> ) (<=? .ARG ,M-DARK-CANT-GO> ) (ELSE )>) (ELSE )>> > ;---------------------------------------------------------------------- "Teleportation system" ;---------------------------------------------------------------------- ;"TODO: Implement keyword navigation for the above-ground rooms" ;---------------------------------------------------------------------- "Resurrection" ;---------------------------------------------------------------------- > ) (ELSE )> >> > > POOF!<|| Everything disappears in a dense cloud of orange smoke." "Okay, if you're so smart, do it yourself! I'm leaving.">> ) (,CAVES-CLOSED )> > > CR> )> CR CR> )> > > >> > ;---------------------------------------------------------------------- "Grammar extensions" ;---------------------------------------------------------------------- > ) (ELSE )>> > ) (ELSE )>> ;---------------------------------------------------------------------- > ) (ELSE )>> ) (ELSE )>> ;---------------------------------------------------------------------- ;"There are many ways to pour liquids out in this game. We translate them all to the WATER and OIL actions. The verbs WATER and OIL themselves refer to separate actions, and they use separate preaction routines to check for the correct liquid, but they have the same default action routine, which empties the bottle into the location." ;"These syntaxes require V4+, because OUT has too many parts of speech. On V4+, Adjective is free." > )> ;"These syntaxes require V4+; see above." > )> >> ) ( >> )>> >> ) ( >> )>> ) ( ) (ELSE )>> > ) (ELSE )>) (> )>> ) ( ) (ELSE )>> > ;---------------------------------------------------------------------- ) ( > > ) ( > > ) (ELSE )>> > ) (ELSE )>> ;---------------------------------------------------------------------- ;"PLOVER has too many parts of speech, so these syntaxes are only enabled on V4+, where Adjective is free." > )> > > > > > > > > ;"Always a mistake" ) (> 3> ) (ELSE > ) (ELSE )> )>)>) (ELSE )>> > > ;---------------------------------------------------------------------- ;"TODO: Eliminate MULTITUDEBIT since it's almost identical to PLURALBIT. Just list the special cases here." ) ( ) (ELSE )>> > > ;---------------------------------------------------------------------- > ) (ELSE )>> ;---------------------------------------------------------------------- ;---------------------------------------------------------------------- ;"When the player types an incomplete command like FEED BEAR, the parser has to infer which syntax they meant to use (since there was no exact match). The two syntaxes for FEED above are similar, except one has a prep2 and the other doesn't. The parser is weighted to prefer the syntax with the prep2, which is often a good idea (GIVE X TO Y is more likely than GIVE Y X), but in this case it's wrong; FEED BEAR means something is being fed *to* the bear. So, we define a separate action for FEED OBJECT that searches for food, and redirects it to V-GIVE. We use GWIM instead of FIND-IN to locate the food because the player is probably carrying it." > ) (>> ) (ELSE )>> > ) ( ) (ELSE )>> > ;"TODO: Instead of , could we orphan and force the parser to use the FEED OBJECT OBJECT syntax?" ;"TODO: A better solution built into the parser. [ZILF-79]" ;---------------------------------------------------------------------- ;"Same deal as with FEED above. We want PAY OBJECT to treat the object as a person being paid, not the treasure being given as payment." > ) (>> ) (ELSE )>> ;---------------------------------------------------------------------- > )> > ;---------------------------------------------------------------------- >> >> > >)>> ) (ELSE )>> ;---------------------------------------------------------------------- "Creatures the player might try to follow when they aren't present" ;---------------------------------------------------------------------- ) ( ,MISSING-CREATURE-F>> ) (ELSE )>> ;---------------------------------------------------------------------- "Help and info commands" ;----------------------------------------------------------------------