Guest User

Advent 101 - Quickbasic Port

a guest
Mar 11th, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 55.05 KB | Source Code | 0 0
  1.  
  2. 'REM COLOSSAL CAVE 101
  3. 'REM ORIGINAL DEVELOPMENT BY WILLIE CROWTHER, 1975
  4. 'REM GREATLY EXPANDED BY DON WOODS, 1976
  5. 'REM STREAMLINED WITH RANDOM MAPS AND NEW PUZZLES BY JEFFREY HENNING, 2017
  6. 'REM USING ABC ADVENTURE ENGINE V1.0
  7. 'REM USE IT TO WRITE YOUR OWN ADVENTURES!
  8.  
  9. INIT:
  10. 'REM ***DATA***
  11. 'REM WRITE YOUR OWN ADVENTURE HERE!
  12.  
  13. TITLE$ = "ADVENTURE"
  14.  
  15. LOCATIONS:
  16. 'REM NAME, PATH, DESC
  17. 'REM - 3-LETTER NAME OF ROOM (MUST BE UNIQUE)
  18. 'REM - PATH CONTAINS "NSEW" FOR VALID DIRECTIONS OR AN OBSTACLE MESSAGE IF IMPASSIBLE
  19. 'REM - DESC CONTAINS A DESCRIPTION.
  20. 'REM --THE SHORTER VERSION, FOR SUBSEQUENT VISITS, ENDS AT AN ASTERISK OR PERIOD
  21. 'REM --A CREATURE SHOULD BE MARKED WITH AN @, E.G. "A CAVE @BEAR" FOR THE GIVE ACTION (NAME MUST BE FOLLOWED BY A SPACE)
  22. 'REM SET THE NUMBER OF LOCATIONS AND DIMENSIONS OF THE MAP
  23. LOCNMAX=87
  24. 'REM PAD LOCATION WITH BORDER
  25. XMAX = 9+2
  26. YMAX = 10+2
  27. 'REM NOTE: WIDER THAN 7 NOT COUNTING BORDER WILL BREAK MAP
  28. DATA "---", "NSWE", "YOU ARE IN A PART OF A LARGE, FLAT EMPTY CAVERN."
  29. DATA "-N-", "EWS", "YOU ARE IN THE LONG EAST/WEST PASSAGEWAY."
  30. DATA "-S-", "NWE", "YOU ARE IN THE EAST/WEST CORRIDOR."
  31. DATA "-W-", "NSE", "YOU ARE IN THE LONG NORTH/SOUTH PASSAGEWAY."
  32. DATA "-E-", "NSW", "YOU ARE IN THE NORTH/SOUTH CORRIDOR."
  33. DATA "ENT", "NSWE", "YOU ARE IN THE ENTRANCE CHAMBER* BENEATH A 3X3 STEEL GRATE UP TO THE SURFACE. THE GRATE IS MOUNTED IN CONCRETE. PASSAGES LEAD OFF IN ALL DIRECTIONS."
  34. DATA "25A", "NS", "YOU ARE IN A NORTH/SOUTH CANYON* ABOUT 25 FEET ACROSS. THE FLOOR IS COVERED BY WHITE MIST SEEPING IN FROM THE NORTH. THE WALLS EXTEND UPWARD FOR WELL OVER 100 FEET. A SMALL WINDOW CAN BE SEEN IN EITHER WALL, SOME FIFTY FEET UP."
  35. DATA "2PT", "NW", "YOU ARE IN A ROOM WITH TWO PITS. THERE IS A LARGE HOLE IN THE WALL ABOVE THE WESTERN PIT."
  36. DATA "30F", "SWE", "YOU ARE ON THE BRINK OF A THIRTY FOOT PIT* WITH A MASSIVE ORANGE COLUMN DOWN ONE WALL."
  37. DATA "3CY", "NSE", "YOU ARE IN A SECRET CANYON AT A JUNCTION OF THREE CANYONS*, BEARING NORTH, SOUTH, AND SE. THE NORTH ONE IS AS TALL AS THE OTHER TWO COMBINED."
  38. DATA "ALC", "NE", "YOU ARE IN AN ALCOVE. A SMALL NORTH PATH SEEMS TO WIDEN AFTER A SHORT DISTANCE. AN EXTREMELY TIGHT TUNNEL LEADS EAST. IT LOOKS LIKE A VERY TIGHT SQUEEZE."
  39. DATA "ARC", "NSW", "YOU ARE IN AN ARCHED HALL. A CORAL PASSAGE ONCE CONTINUED UP AND EAST FROM HERE, BUT IS NOW BLOCKED BY DEBRIS. THE AIR SMELLS OF SEA WATER."
  40. DATA "AWK", "WE", "YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON."
  41. DATA "BDQ", "NSWE", "YOU ARE IN BEDQUILT*, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE."
  42. DATA "BEA", "THERE IS NO WAY TO GET PAST THE BEAR, WHICH IS PROBABLY JUST AS WELL.", "YOU ARE STANDING AT AN ENTRANCE TO A LARGE, BARREN ROOM. A SIGN POSTED ABOVE THE ENTRANCE READS: 'CAUTION! BEAR IN ROOM!' THE WAY IS GUARDED BY A FEROCIOUS CAVE @BEAR EYING YOU FROM THE FAR END OF THE ROOM!"
  43. DATA "BLD", "W", "YOU ARE IN A MASS OF BOULDERS* -- DEAD END."
  44. DATA "BRK", "SW", "YOU ARE ON THE BRINK OF A SMALL CLEAN CLIMBABLE PIT. A CRAWL LEADS WEST."
  45. DATA "CHA", "THERE IS NO WAY ACROSS.", "A WIDE CHASM YAWNS BEFORE YOU. THERE IS NO WAY ACROSS."
  46. DATA "CHM", "SW", "YOU ARE ON ONE SIDE OF A LARGE, DEEP CHASM. A HEAVY WHITE MIST RISING UP FROM BELOW OBSCURES ALL VIEW OF THE FAR SIDE. A SW PATH LEADS AWAY FROM THE CHASM INTO A WINDING CORRIDOR."
  47. DATA "CHS", "NSWE", "YOU ARE IN A ROOM WHOSE WALLS RESEMBLE SWISS CHEESE. OBVIOUS PASSAGES GO WEST, EAST, NORTH, AND SOUTH. PART OF THE ROOM IS OCCUPIED BY A LARGE BEDROCK BLOCK."
  48. DATA "CIN", "E", "THE PASSAGE HERE IS BLOCKED BY A RECENT CAVE-IN."
  49. DATA "CLM", "YOU CAN'T FIT BY THIS FIVE-FOOT CLAM THROUGH THAT LITTLE PASSAGE!", "YOU'RE IN A TINY CHAMBER* CARVED OUT OF SEDIMENTARY ROCK. THE FLOOR AND WALLS ARE LITTERED WITH BITS OF SHELLS IMBEDDED IN THE STONE. A SHALLOW PASSAGE PROCEEDS WEST, AND A SOMEWHAT STEEPER ONE LEADS EAST. A LOW HANDS AND KNEES PASSAGE ENTERS FROM THE SOUTH. THERE IS AN ENORMOUS @CLAM HERE WITH ITS SHELL TIGHTLY CLOSED."
  50. DATA "COR", "WE", "YOU ARE IN A LONG, NARROW CORRIDOR* STRETCHING OUT OF SIGHT TO THE WEST. AT THE EASTERN END IS A HOLE THROUGH WHICH YOU CAN SEE A PROFUSION OF LEAVES."
  51. DATA "CPX", "NWE", "YOU ARE AT A COMPLEX JUNCTION. A LOW HANDS AND KNEES PASSAGE FROM THE NORTH JOINS A HIGHER CRAWL FROM THE EAST TO MAKE A WALKING PASSAGE GOING WEST. THERE IS ALSO A LARGE ROOM ABOVE. THE AIR IS DAMP HERE."
  52. DATA "CRC", "NW", "YOU ARE IN A LARGE LOW CIRCULAR CHAMBER* WHOSE FLOOR IS AN IMMENSE SLAB FALLEN FROM THE CEILING. EAST AND WEST THERE ONCE WERE LARGE PASSAGES, BUT THEY ARE NOW FILLED WITH BOULDERS. LOW SMALL PASSAGES GO NORTH AND SOUTH, AND THE SOUTH ONE QUICKLY BENDS WEST AROUND THE BOULDERS."
  53. DATA "CUL", "W", "YOU ARE IN A CUL-DE-SAC* ABOUT EIGHT FEET ACROSS."
  54. DATA "CVN", "SW", "YOU ARE IN A MAGNIFICENT CAVERN* WITH A RUSHING STREAM, WHICH CASCADES OVER A SPARKLING WATERFALL INTO A ROARING WHIRLPOOL WHICH DISAPPEARS THROUGH A HOLE IN THE FLOOR. PASSAGES EXIT TO THE SOUTH AND WEST."
  55. DATA "DBR", "W", "YOU ARE IN A DEBRIS ROOM* FILLED WITH STUFF WASHED IN FROM THE SURFACE. A LOW WIDE PASSAGE WITH COBBLES BECOMES PLUGGED WITH MUD AND DEBRIS HERE, BUT A CANYON LEADS UPWARD AND WEST."
  56. DATA "DEC", "W", "YOU ARE IN A SMALL CHAMBER* FILLED WITH LARGE BOULDERS. THE ONLY EXIT IS A CRAWL HEADING WEST."
  57. DATA "DED", "E", "DEAD END CRAWL."
  58. DATA "DOR", "THE DOOR IS EXTREMELY RUSTY AND REFUSES TO OPEN.", "YOU ARE AT ONE END OF AN IMMENSE NORTH/SOUTH PASSAGE. THE WAY IS BARRED BY A MASSIVE, RUSTY, IRON DOOR."
  59. DATA "DRG", "THE DRAGON LOOKS RATHER NASTY. YOU'D BEST NOT TRY TO GET BY.", "YOU ARE IN A SECRET CANYON WHICH EXITS TO THE NORTH AND EAST: A HUGE GREEN FIERCE @DRAGON BARS THE WAY."
  60. DATA "DRK", "S", "YOU'RE IN THE DARK-ROOM. A CORRIDOR LEADING SOUTH IS THE ONLY EXIT."
  61. DATA "DRT", "WE", "YOU ARE IN A DIRTY BROKEN PASSAGE. TO THE EAST IT NARROWS TO A CRAWL. TO THE WEST IT WIDENS."
  62. DATA "DST", "NSEW", "YOU ARE IN A LARGE ROOM* FULL OF DUSTY ROCKS. THERE IS A BIG HOLE IN THE FLOOR. THERE ARE CRACKS EVERYWHERE, AND A PASSAGE LEADING EAST."
  63. DATA "DWA", "THE DWARF THROWS HIS AXE AT YOU. IT BARELY MISSES, THEN BOOMERANGS BACK INTO HIS WAITING HAND.", "YOU ARE IN A LONG WINDING CORRIDOR SLOPING OUT OF SIGHT IN BOTH DIRECTIONS: A LITTLE @DWARF WITH A LITTLE AXE BLOCKS YOUR WAY."
  64. DATA "DWF", "THE DWARF PUNCHES YOU, AND YOU RETREAT.", "YOU ARE IN A LONG SLOPING CORRIDOR WITH RAGGED SHARP WALLS: A LITTLE @DWARF FACES YOU, WITH BOTH FISTS UP, WAITING."
  65. DATA "DWR", "THE DWARF BLOCKS YOUR WAY.", "YOU'RE IN A LONG EAST/WEST CORRIDOR: A LITTLE @DWARF WITH A TRIM BEARD AND A BIG KNIFE BLOCKS YOUR WAY."
  66. DATA "E/W", "WE", "YOU ARE IN A SECRET CANYON RUNNING EAST/WEST. IT CROSSES OVER A VERY TIGHT CANYON FIFTY FEET BELOW."
  67. DATA "FRK", "NSW", "THE PATH FORKS HERE. THE LEFT FORK LEADS NORTH. THE RIGHT FORK LEADS SOUTH DOWN A GENTLE SLOPE. THE MAIN CORRIDOR ENTERS FROM THE WEST."
  68. DATA "FRZ", "WE", "YOU ARE IN A SPLENDID CHAMBER* THIRTY FEET HIGH. THE WALLS ARE FROZEN RIVERS OF ORANGE STONE. A CANYON AND A GOOD PASSAGE EXIT FROM EAST AND WEST SIDES OF THE CHAMBER."
  69. DATA "FSR", "THERE IS NO WAY ACROSS THE FISSURE.", "THE WAY IS BLOCKED BY A FISSURE* SLICING CLEAR ACROSS THE ROOM. MIST IS QUITE THICK HERE, AND THE FISSURE IS TOO WIDE TO JUMP. "
  70. DATA "GIA", "YOU’D BEST NOT TRY TO GET BY.", "YOU ARE IN THE GIANT ROOM. THE CEILING HERE IS TOO HIGH UP FOR YOUR LAMP TO SHOW IT. CAVERNOUS PASSAGES LEAD EAST, NORTH, AND SOUTH. A @GIANT SAYS, 'AH, WHAT’S THIS I SMELL? FEE-FIE-FOE-FUM.'"
  71. DATA "GRT", "THE GRATE IS VERY SOLID AND HAS A HARDENED STEEL LOCK. YOU CANNOT ENTER WITHOUT A KEY. ARE THERE KEYS NEARBY?", "A STRONG BUT OLD IRON GRATE BARS THE WAY."
  72. DATA "GTO", "W", "A ROTTED PIRATE SHIP RESTS HERE*, ALONGSIDE A DRIED UP RIVERBED. THE SHIP'S NAME, 'THE INFERNO', CAN STILL BE MADE OUT AMONG THE ROTTED TIMBERS. A @SKELETON WITH AN EYE PATCH RESTS BEFORE IT."
  73. DATA "HAL", "NSE", "YOU ARE IN A LONG FEATURELESS HALL. THE HALL JOINS UP WITH A NARROW NORTH/SOUTH PASSAGE."
  74. DATA "HOL", "NS", "YOU ARE IN A LOW NORTH/SOUTH PASSAGE* WITH A HOLE IN THE FLOOR."
  75. DATA "INC", "NSW", "YOU ARE AT THE TOP OF A STEEP INCLINE. THERE IS A PASSAGE LEADING TO THE NORTH."
  76. DATA "JUM", "NSEW", "YOU ARE IN A JUMBLE OF ROCK*, WITH CRACKS EVERYWHERE."
  77. DATA "LLR", "NWE", "YOU ARE IN A LARGE LOW ROOM. CRAWLS LEAD NORTH, EAST, AND WEST."
  78. DATA "LNG", "NE", "YOU ARE IN A VERY LONG HALL* APPARENTLY WITHOUT SIDE CHAMBERS. TO THE EAST A LOW WIDE CRAWL SLANTS UP. TO THE NORTH A ROUND TWO FOOT HOLE SLANTS DOWN."
  79. DATA "LOW", "WE", "YOU ARE CRAWLING OVER COBBLES* IN A LOW PASSAGE."
  80. DATA "LSN", "NS", "YOU ARE WALKING A LIMESTONE PASSAGE*, ALONG A GENTLY SLOPING NORTH/SOUTH ROUTE LINED WITH ODDLY SHAPED LIMESTONE FORMATIONS."
  81. DATA "LWC", "SE", "ANOTHER PASSAGE LEADS SOUTH*, AND A LOW CRAWL GOES EAST."
  82. DATA "MAZ", "YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE.", "YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE."
  83. DATA "MIR", "SE", "YOU ARE IN A DEEP CANYON. SUSPENDED FROM SOME UNSEEN POINT FAR ABOVE YOU, AN ENORMOUS TWO-SIDED MIRROR IS HANGING PARALLEL TO AND MIDWAY BETWEEN THE CANYON WALLS. (THE MIRROR IS OBVIOUSLY PROVIDED FOR THE USE OF THE DWARVES, WHO AS YOU KNOW, ARE EXTREMELY VAIN.)"
  84. DATA "MST", "NSW", "YOU ARE IN A HALL OF MISTS. A LOW WIDE CRAWL CONTINUES WEST AND ANOTHER GOES NORTH. TO THE SOUTH IS A LITTLE PASSAGE 6 FEET OFF THE FLOOR."
  85. DATA "N/S", "NS", "YOU ARE IN A SECRET NORTH/SOUTH CANYON."
  86. DATA "NWP", "NW", "YOU ARE IN A NORTH/WEST PASSAGEWAY."
  87. DATA "ORI", "NWSE", "THIS IS THE ORIENTAL ROOM. ANCIENT ORIENTAL CAVE DRAWINGS COVER THE WALLS. A GENTLY SLOPING PASSAGE LEADS UPWARD TO THE NORTH, ANOTHER PASSAGE LEADS SE, AND A HANDS & KNEES CRAWL LEADS WEST."
  88. DATA "PIR", "THE PIRATE IS WAITING.", "A NARROW CRAWL LEADS DOWN INTO A MAZE OF TWISTY LITTLE PASSAGES. CLAMBERING UP FROM THE SHADOWS POUNCES A BEARDED @PIRATE WHO CHORTLES 'HAR, HAR! I'LL JUST TAKE ALL YOUR BOOTY AND HIDE IT AWAY IN ME MAZE!'"
  89. DATA "PLC", "NS", "YOU ARE AT A WIDE PLACE* IN AN OTHERWISE VERY TIGHT N/S CANYON."
  90. DATA "PLT", "YOU CAN'T CROSS THE PIT.", "THE FLOOR HERE IS LITTERED WITH THIN ROCK SLABS* AROUND A LARGE PIT. THERE ARE HOLES ALL OVER, BUT TOO HIGH UP ABOVE THE PIT, WHERE YOU CAN'T GET TO THEM. THERE IS A TINY LITTLE PLANT IN THE PIT, MURMURING 'WATER, WATER, ...'"
  91. DATA "PSG", "WE", "YOU ARE IN A SIDE CHAMBER. A PASSAGE CONTINUES WEST AND UP HERE."
  92. DATA "PTH", "SW", "YOU ARE FOLLOWING A WIDE PATH* AROUND THE OUTER EDGE OF A LARGE CAVERN. FAR BELOW, THROUGH A HEAVY WHITE MIST, STRANGE SPLASHING NOISES CAN BE HEARD. THE MIST RISES UP THROUGH A FISSURE IN THE CEILING. THE PATH EXITS TO THE SOUTH AND WEST."
  93. DATA "PTS", "WE", "YOU ARE IN A ROOM OF PITS. THE FLOOR HERE IS LITTERED WITH THIN ROCK SLABS, WHICH MAKE IT EASY TO DESCEND THE PITS. A PATH HERE BYPASSES THE PITS TO CONNECT PASSAGES FROM EAST AND WEST. THERE ARE HOLES ALL OVER, BUT THE ONLY BIG ONE IS ON THE WALL DIRECTLY OVER THE WEST PIT WHERE YOU CAN'T GET TO IT."
  94. DATA "REP", "SHHH! YOU'LL WAKE THE DWARVES. DWARFS?", "YOU ARE IN THE REPOSITORY. YOU SEE A PILE OF BOTTLES, A NURSERY OF YOUNG BEANSTALKS MURMURING QUIETLY, A BED OF OYSTERS, A BUNDLE OF BLACK RODS WITH RUSTY MARKS ON THEIR ENDS, AND A COLLECTION OF BRASS LANTERNS. VARIOUS SUNDRY OBJECTS CAN BE GLIMPSED DIMLY IN THE DISTANCE. OFF TO ONE SIDE FOUR DWARVES ARE SLEEPING ON THE FLOOR, SNORING LOUDLY AMIDST A GREEN SMOKY VAPOR. A SIGN NEARBY READS: 'DO NOT DISTURB THE @DWARVES !'"
  95. DATA "RES", "S", "YOU ARE AT THE EDGE OF AN UNDERGROUND RESERVOIR. AN OPAQUE CLOUD OF WHITE MIST FILLS THE ROOM AND RISES RAPIDLY UPWARD. THE LAKE IS FED BY A STREAM, WHICH TUMBLES OUT OF A HOLE IN THE WALL ABOUT 10 FEET OVERHEAD AND SPLASHES NOISILY INTO THE WATER SOMEWHERE WITHIN THE MIST. THE ONLY PASSAGE GOES TOWARD THE SOUTH."
  96. DATA "SDE", "N", "YOU ARE IN A SIDE CHAMBER."
  97. DATA "SFT", "NSEW", "YOU ARE IN THE SOFT ROOM. THE WALLS ARE COVERED WITH HEAVY CURTAINS, THE FLOOR WITH A THICK PILE CARPET. MOSS COVERS THE CEILING."
  98. DATA "SNK", "YOU CAN'T KILL THE SNAKE, OR DRIVE IT AWAY, OR AVOID IT, OR ANYTHING LIKE THAT. THERE IS A WAY TO GET BY.", "YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES OFF IN ALL DIRECTIONS: A HUGE GREEN FIERCE @SNAKE BARS THE WAY."
  99. DATA "SPT", "W", "AT YOUR FEET IS A SMALL PIT BREATHING* TRACES OF WHITE MIST. AN EAST PASSAGE ENDS HERE EXCEPT FOR A SMALL CRACK LEADING ON."
  100. DATA "STA", "NSE", "A LARGE STALACTITE EXTENDS FROM THE ROOF* AND ALMOST REACHES THE FLOOR BELOW. YOU COULD CLIMB DOWN IT, AND JUMP FROM IT TO THE FLOOR, BUT HAVING DONE SO YOU WOULD BE UNABLE TO REACH IT TO CLIMB BACK UP."
  101. DATA "STR", "N", "YOU ARE IN THE BOTTOM OF A SMALL PIT* WITH A LITTLE STREAM, WHICH ENTERS AND EXITS THROUGH TINY SLITS."
  102. DATA "TAL", "NWE", "YOU ARE IN A TALL EAST/WEST CANYON. A LOW TIGHT CRAWL GOES THREE FEET NORTH AND SEEMS TO OPEN UP."
  103. DATA "TRL", "THE TROLL STEPS OUT FROM BENEATH THE BRIDGE AND BLOCKS YOUR WAY.", "A RICKETY WOODEN BRIDGE EXTENDS ACROSS* A CHASM, VANISHING INTO THE MIST. A SIGN POSTED ON THE BRIDGE READS, 'STOP! PAY TROLL!' A BURLY @TROLL STANDS BY THE BRIDGE AND INSISTS YOU THROW HIM A TREASURE BEFORE YOU MAY CROSS."
  104. DATA "VLC", "S", "FAR BELOW YOU IS AN ACTIVE VOLCANO*, FROM WHICH GREAT GOUTS OF MOLTEN LAVA COME SURGING OUT, CASCADING BACK DOWN INTO THE DEPTHS. GLOWING ROCK FILLS THE FARTHEST REACHES OF THE CAVERN WITH A BLOOD-RED GLARE, AN EERIE, MACABRE APPEARANCE. THE AIR IS FILLED WITH FLICKERING SPARKS OF ASH AND A HEAVY SMELL OF BRIMSTONE. THE WALLS ARE HOT TO THE TOUCH, AND THE THUNDERING OF THE VOLCANO DROWNS OUT ALL OTHER SOUNDS. A DARK, FOREBODING PASSAGE EXITS TO THE SOUTH."
  105. DATA "VST", "SWE", "YOU ARE IN A VAST HALL WITH OPENINGS TO EITHER SIDE. A WIDE STONE STAIRCASE LEADS DOWNWARD INTO DEBRIS. THE HALL IS FILLED WITH WISPS OF WHITE MIST SWAYING TO AND FRO AS IF ALIVE. A COLD WIND BLOWS UP THE STAIRCASE."
  106. DATA "WDE", "NSEW", "YOU HAVE CRAWLED THROUGH A LOW WIDE PASSAGE."
  107. DATA "WDP", "SW", "YOU ARE IN A WINDING PASSAGEWAY* THAT GOES SOUTH AND WEST FROM HERE."
  108. DATA "WFL", "THE FORCE OF THE WATER WILL PUSH AND TRAP YOU IN THE CRACK.", "A TORRENTIAL WATERFALL BLOCKS A NARROW ARCHWAY*, POURING INTO AND ECHOING DOWN A DEEP CRACK."
  109. DATA "WIT", "SWE", "YOU ARE IN AN ANTEROOM* LEADING TO A LARGE PASSAGE TO THE EAST. SMALL PASSAGES GO WEST AND SOUTH. THE REMNANTS OF RECENT DIGGING ARE EVIDENT A SIGN IN MIDAIR HERE SAYS 'CAVE UNDER CONSTRUCTION BEYOND THIS POINT. PROCEED AT OWN RISK. [WITT CONSTRUCTION COMPANY]'"
  110. DATA "WIZ", "HE SAYS, 'YOU SHALL NOT PASS.'", "YOU'RE IN A SMALL CHAMBER LIT BY AN EERIE GREEN LIGHT. A LARGE CLOUD OF GREEN SMOKE BILLOWS IN FRONT OF YOU. IT CLEARS AWAY TO REVEAL A TALL @WIZARD, CLOTHED IN GREY. HE FIXES YOU WITH A STEELY GLARE AND DECLARES, 'LOCOMOTOR MORTIS.' WITH THAT HE MAKES A SINGLE PASS OVER YOU WITH HIS HANDS, AND TRAINS HIS EYES ON YOU. YOU CANNOT MOVE."
  111. DATA "WND", "NSWE", "YOU ARE AT WITT'S END. PASSAGES LEAD OFF IN ALL DIRECTIONS."
  112. DATA "WNW", "NSW", "YOU'RE AT A LOW WINDOW OVERLOOKING A HUGE PIT*, WHICH EXTENDS UP OUT OF SIGHT. A FLOOR IS INDISTINCTLY VISIBLE OVER 50 FEET BELOW. TRACES OF WHITE MIST COVER THE FLOOR OF THE PIT, BECOMING THICKER TO THE RIGHT."
  113. DATA "XVR", "NSWE", "YOU ARE AT A CROSSOVER OF A HIGH N/S PASSAGE AND A LOW E/W ONE."
  114. DATA "Y2", "WS", "YOU ARE IN A LARGE ROOM*, WITH A PASSAGE TO THE SOUTH, A PASSAGE TO THE WEST, AND A WALL OF BROKEN ROCK TO THE EAST. THERE IS A LARGE 'Y2' ON A ROCK IN THE ROOM'S CENTER."
  115.  
  116. ACTIONDATA:
  117. 'REM ABC ADVENTURE SUPPORTS UP TO 26 ACTIONS, EACH STARTING WITH A UNIQUE LETTER
  118. 'REM YOU CAN REPLACE WITH SYNONYMS - OR CHANGE ALTOGETHER IF YOU REWRITE THAT ACTION HANDLER
  119. 'REM NAME, TRANSITIVE/INTRANSITIVE, MESSAGE
  120. 'REM - NAME (STARTS WITH A UNIQUE LETTER)
  121. 'REM - "T" FOR TRANSITIVE (REQUIRES OBJECT), "I" FOR INTRANSITIVE (DOESN’T)
  122. 'REM - DEFAULT MESSAGE (E.G., "READ" = "NOTHING IS WRITTEN ON IT.")
  123. DATA "ACTIONS", "I", "HERE IS MY VOCABULARY OF ACTIONS:"
  124. DATA "BACK", "I", "SORRY, BUT I NO LONGER SEEM TO REMEMBER HOW IT WAS YOU GOT HERE."
  125. DATA "CLOSE", "T", "I DON'T KNOW HOW TO OPEN OR CLOSE SUCH A THING."
  126. DATA "DROP", "T", "YOU AREN'T CARRYING ANYTHING."
  127. DATA "EAST", "I", "THERE IS NO WAY TO GO THAT DIRECTION."
  128. DATA "FIGHT", "I", "THERE IS NOTHING HERE TO FIGHT."
  129. DATA "GIVE", "T", "THERE IS NO ONE HERE TO GIVE IT TO."
  130. DATA "HELP", "I", "I KNOW OF PLACES, ACTIONS, AND THINGS. MOST OF MY VOCABULARY DESCRIBES 'ACTIONS' (TRY THAT WORD). TO MOVE, TRY WORDS LIKE 'EAST', 'WEST', 'NORTH', 'SOUTH', 'XPLORE'. NOTE THAT CAVE PASSAGES TURN A LOT, AND THAT LEAVING A ROOM TO THE NORTH DOES NOT GUARANTEE YOU CAN RETURN TO IT BY GOING SOUTH. GOING 'BACK' SOMETIMES WORKS. I KNOW ABOUT A FEW SPECIAL OBJECTS, LIKE A BLACK 'ROD' HIDDEN IN THE CAVE. THESE OBJECTS CAN BE MANIPULATED USING SOME OF THE ACTION WORDS THAT I KNOW. USUALLY YOU WILL NEED TO GIVE BOTH THE ACTION AND OBJECT WORDS (IN THAT ORDER), BUT SOMETIMES I CAN INFER THE OBJECT FROM THE VERB ALONE. SOME OBJECTS ALSO IMPLY VERBS; IN PARTICULAR, 'INVENTORY' IMPLIES 'TAKE INVENTORY', WHICH CAUSES ME TO GIVE YOU A LIST OF WHAT YOU'RE CARRYING. USUALLY PEOPLE TRYING UNSUCCESSFULLY TO MANIPULATE AN OBJECT ARE ATTEMPTING SOMETHING BEYOND THEIR (OR MY!) CAPABILITIES AND SHOULD TRY A COMPLETELY DIFFERENT TACK. TO SEE HOW WELL YOU ARE DOING, SAY 'POINTS'. GOOD LUCK!"
  131. DATA "INVENTORY", "I", "YOU ARE CURRENTLY HOLDING THE FOLLOWING:"
  132. DATA "JUMP", "I", "YOU LANDED IN A PIT THEN CRAWLED A LONG WAY."
  133. DATA "KICK", "I", "THERE IS NOTHING HERE TO KICK."
  134. DATA "LOOK", "I", "SORRY, BUT I AM NOT ALLOWED TO GIVE MORE DETAIL. I WILL REPEAT THE LONG DESCRIPTION OF YOUR LOCATION."
  135. DATA "MAP", "I", "RUNES MAGICALLY APPEAR ON THE MAP AS YOU TRAVEL."
  136. DATA "NORTH", "I", "THERE IS NO WAY TO GO THAT DIRECTION."
  137. DATA "OPEN", "T", "IT CAN'T BE OPENED."
  138. DATA "POINTS", "I", "TO GET FULL CREDIT FOR A TREASURE, YOU MUST HAVE LEFT IT SAFELY IN THE ENTRANCE, THOUGH YOU GET PARTIAL CREDIT JUST FOR LOCATING IT. YOU LOSE POINTS FOR GETTING KILLED, OR FOR QUITTING, THOUGH THE FORMER COSTS YOU MORE. THERE ARE ALSO POINTS BASED ON HOW MUCH (IF ANY) OF THE CAVE YOU'VE MANAGED TO EXPLORE; IN PARTICULAR, THERE ARE BONUSES FOR WHETHER YOU'VE BEEN THROUGH SOME OF THE MORE HARROWING SECTIONS. IF YOU THINK YOU'VE FOUND ALL THE TREASURES, JUST KEEP EXPLORING FOR A WHILE. IF NOTHING INTERESTING HAPPENS, YOU HAVEN'T FOUND THEM ALL YET. IF SOMETHING INTERESTING *DOES* HAPPEN, IT MEANS YOU'RE GETTING A BONUS AND HAVE AN OPPORTUNITY TO GARNER MANY MORE POINTS IN THE MASTER'S SECTION. I MAY OCCASIONALLY OFFER HINTS IF YOU SEEM TO BE HAVING TROUBLE. IF I DO, I'LL WARN YOU IN ADVANCE HOW MUCH IT WILL AFFECT YOUR SCORE TO ACCEPT THE HINTS. FINALLY, TO SAVE PAPER, YOU MAY SPECIFY 'VERBOSE', WHICH TOGGLES BETWEEN ME BEING BRIEF AND VERBOSE AND WHICH TELLS ME NEVER TO REPEAT THE FULL DESCRIPTION OF A PLACE UNLESS YOU EXPLICITLY ASK ME TO."
  139. DATA "QUIT", "I", "DO YOU REALLY WANT TO QUIT NOW?"
  140. DATA "READ", "T", "NOTHING IS WRITTEN ON IT."
  141. DATA "SOUTH", "I", "THERE IS NO WAY TO GO THAT DIRECTION."
  142. DATA "TAKE", "T", "YOU CAN'T CARRY ANYTHING MORE. YOU'LL HAVE TO DROP SOMETHING FIRST."
  143. DATA "USE", "T", "THIS OBJECT IS NOT IMMEDIATELY USEFUL."
  144. DATA "VERBOSE", "I", "OKAY, FROM NOW ON I'LL ONLY DESCRIBE A PLACE IN FULL THE FIRST TIME. YOU COME TO IT. TO GET THE FULL DESCRIPTION, SAY 'LOOK'."
  145. DATA "WEST", "I", "THERE IS NO WAY TO GO THAT DIRECTION."
  146. DATA "XPLORE", "I", "YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP HERE:"
  147. DATA "YES", "I", "I COULDN'T AGREE MORE."
  148. DATA "ZZZ...", "I", "THAT WAS REFRESHING . EVEN THE KISSES OF THE DWARVES COULD NOT WAKE YOU."
  149. 'REM END OF ACTIONS
  150. DATA "["
  151.  
  152. OBJECTS:
  153. 'REM ABC ADVENTURE SUPPORTS UP TO 26 OBJECTS, EACH STARTING WITH A UNIQUE LETTER
  154. 'REM NAME, KIND, DESCRIPTION
  155. 'REM - NAME - ONE OR TWO WORDS DESCRIBING ITEM
  156. 'REM - KIND:
  157. 'REM -- "$" - TREASURE, WORTH 5 POINTS IF RETURNED TO ENTRANCE
  158. 'REM -- "+" - OPENED CONTAINER, CAN BE CLOSED
  159. 'REM -- "-" - CLOSED CONTAINER, CAN BE OPENED
  160. 'REM -- "!" - LAMP, NEEDED TO EXPLORE
  161. 'REM -- "%" - ANY OTHER OBJECT
  162. 'REM -- CAN USE ANY CHARACTER TO DEFINE DIFFERENT "CLASSES" OF OBJECTS FOR PATTERN MATCHING IN THE COMMANDS SECTION (E.G., COULD HAVE "/" FOR WEAPONS)
  163. DATA "AXE", "%", "A LITTLE DWARF AXE IS HERE."
  164. DATA "BIRDCAGE", "-", "A CHEERFUL LITTLE BIRD IS SITTING IN A CAGE SINGING."
  165. DATA "CHEST", "-", "A LARGE TREASURE CHEST IS HERE."
  166. DATA "DIAMONDS", "$", "THERE ARE DIAMONDS HERE!"
  167. DATA "EGGS", "$", "THERE IS A LARGE NEST HERE, FULL OF GOLDEN EGGS!"
  168. DATA "FOOD", "-", "THERE IS A PACKAGE OF FOOD HERE."
  169. DATA "GOBLET", "$", "THERE IS A JEWELED GOBLET HERE."
  170. DATA "HONEY", "-", "THERE IS A JAR OF HONEY HERE."
  171. DATA "ITEM", "$", "A NONDESCRIPT METAL ITEM GLINTS IN THE LAMPLIGHT."
  172. DATA "JEWELRY", "$", "THERE IS PRECIOUS JEWELRY HERE."
  173. DATA "KEYS", "%", "THERE ARE A SET OF KEYS ON THE GROUND HERE."
  174. DATA "LAMP", "!", "THERE IS A SHINY BRASS LAMP NEARBY."
  175. DATA "MIRROR", "%", "THERE IS AN ANTIQUE HAND MIRROR, GOOD WORKMANSHIP, BUT IT'S NOT VALUABLE."
  176. DATA "NUGGET", "$", "THERE IS A LARGE SPARKLING NUGGET OF GOLD HERE."
  177. DATA "OIL", "-", "THERE IS A SMALL VIAL OF OIL HERE."
  178. DATA "PERSIAN RUG", "$", "THERE IS A PERSIAN RUG SPREAD OUT ON THE FLOOR!"
  179. DATA "QUARTZ", "$", "A QUARTZ CRYSTAL AMONGST THE RUBBLE HERE REFRACTS THE LIGHT OF YOUR LAMP."
  180. DATA "ROD", "%", "A THREE FOOT BLACK ROD WITH A RUSTY STAR ON AN END LIES NEARBY."
  181. DATA "SPELLBOOK", "-", "THERE IS A SPELLBOOK HERE, WITH MYSTERIOUS, UNREADABLE RUNES ON ITS COVER."
  182. DATA "TRIDENT", "$", "THERE IS A JEWEL-ENCRUSTED TRIDENT HERE."
  183. DATA "UMBRELLA", "+", "AN UMBRELLA HAS BEEN LEFT OPEN TO DRY HERE."
  184. DATA "VASE", "$", "THERE IS A DELICATE, PRECIOUS, MING VASE HERE!"
  185. DATA "WATER BOTTLE", "-", "THERE IS A FULL WATER BOTTLE HERE."
  186. DATA "ZINE", "-", "HERE IS A RECENT ISSUE OF THE 'ZINE 'SPELUNKER TODAY'."
  187. 'REM END OF OBJECTS
  188. DATA "["
  189.  
  190. COMMANDS:
  191. 'REM THE HEART OF THE ADVENTURE IS IN THE INDIVIDUAL COMMANDS
  192. 'REM ACTION, OBJECT, LOCATION, TRANSFORMED OBJECT, TRANSFORMED LOCATION
  193. 'REM E.G., "USE", "JEWEL", "TRL", "A NOW PALE JEWEL LIES HERE.", "TRX: THERE IS A STATUE OF A TROLL HERE. PATHS LEAD IN ALL DIRECTIONS.", "THE JEWEL SHINES AS BRIGHT AS THE MORNING SUN. THE TROLL CRIES OUT IN FEAR, AND TURNS TO STONE."
  194. 'REM - ACTION: CAN WRITE JUST THE FIRST LETTER, THOUGH IT IS MORE READABLE TO INCLUDE THE WORD; MANDATORY
  195. 'REM - OBJECT: CAN WRITE JUST THE FIRST LETTER… IF THE OBJECT DOESN’T MATTER, USE "*"
  196. 'REM - LOCATION: THE 3-LETTER NAME OF A LOCATION; IF AN ACTION APPLIES ANYWHERE, USE "***"
  197. 'REM - TRANSFORMED OBJECT
  198. 'REM -- "DRO" TO DROP THE OBJECT, "TAK" TO TAKE IT, "RMV" TO REMOVE IT FROM THE GAME
  199. 'REM -- "XYZ:" TO MOVE THE OBJECT TO THE SPECIFIED LOCATION
  200. 'REM -- "XYZ: THE BOTTLE IS NOW EMPTY." TO MODIFY THE DESCRIPTION OF THE OBJECT
  201. 'REM - TRANSFORMED LOCATION
  202. 'REM -- THE FIRST THREE LETTERS EITHER GIVE A NEW NAME TO THE LOCATION (USEFUL FOR AVOIDING FIRING COMMANDS THAT NO LONGER APPLY) OR REUSE THE ORIGINAL NAME
  203. 'REM -- THE DESCRIPTION CAN BE REVISED TO SHOW THE IMPACT OF AN ACTION; A NEW PATH IS SET FROM KEYWORDS "NORTH", "SOUTH", "EAST", "WEST" OR "ALL DIRECTIONS"
  204. 'REM DEFINE THE NUMBER OF COMMANDS
  205. CMNDMAX = 99
  206. DATA "CLOSE", "CHEST", "***", "A CLOSED TREASURE CHEST IS HERE.", "", "IT CREAKS SHUT."
  207. DATA "CLOSE", "OIL", "***", "", "", "THE STENCH WAS MAKING ME LIGHTHEADED."
  208. DATA "CLOSE", "UMBRELLA", "***", "A CLOSED UMBRELLA LIES ON THE GROUND.", "", "IT WILL NEVER DRY OUT LIKE THAT."
  209. DATA "DROP", "FOOD", "MAZ", "RMV", "MAZ: YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL DIFFERENT THANKS TO YOUR TRAIL OF BREADCRUMBS.", "THE RATIONS CONTAIN SOME STALE BREAD, WHICH YOU TEAR OFF AND DROP TO CREATE A TRAIL OF BREADCRUMBS TO FIND YOUR WAY THROUGH THE MAZE."
  210. DATA "DROP", "MIRROR", "***", "THERE IS A CRACKED HAND MIRROR HERE.", "", "THE MIRROR CRACKED. THE WORKMANSHIP WASN'T AS GOOD AS I THOUGHT. I WAS RIGHT THAT IT'S NOT VALUABLE. IS THAT STILL SEVEN YEARS BAD LUCK?"
  211. DATA "DROP", "VASE", "SFT", "", "", "THE MING VASE DROPS GENTLY ONTO THE THICK PILE CARPET."
  212. DATA "DROP", "VASE", "***", "THE FLOOR IS LITTERED WITH LARGE WORTHLESS SHARDS OF POTTERY.", "", "THE MING VASE DROPS WITH A DELICATE CRASH."
  213. DATA "FIGHT", "*", "BEA", "", "", "WITH WHAT? YOUR BARE HANDS? AGAINST *HIS* BEAR HANDS??"
  214. DATA "FIGHT", "*", "CLM", "", "", "THE SHELL IS VERY STRONG AND IS IMPERVIOUS TO ATTACK."
  215. DATA "FIGHT", "*", "DOR", "", "", "YOU HURT YOUR HANDS. THE DOOR WINS THIS ROUND."
  216. DATA "FIGHT", "*", "DRG", "", "", "YOUR BLOWS BOUNCE HARMLESSLY OFF THE DRAGON'S THICK SCALES."
  217. DATA "FIGHT", "*", "DWA", "", "", "YOU ATTACK A LITTLE DWARF, BUT HE DODGES OUT OF THE WAY."
  218. DATA "FIGHT", "*", "DWF", "", "", "THE DWARF RETREATS, THEN PUNCHES YOU."
  219. DATA "FIGHT", "*", "DWR", "", "", "THE THREATENING LITTLE DWARF WON'T LET YOU STAY IN THIS ROOM."
  220. DATA "FIGHT", "*", "GIA", "", "", "FIGHT A GIANT? YOU DON'T KNOW JACK."
  221. DATA "FIGHT", "*", "GRT", "", "", "YOU LOSE, AFTER A GRATE FIGHT."
  222. DATA "FIGHT", "*", "PIR", "", "", "SHIVER ME TIMBERS!' HE CRIES, 'I'LL CUT OFF YOUR HAND UNLESS YOU GIVE ME WHAT I WANT!'"
  223. DATA "FIGHT", "*", "REP", "", "", "LET SLEEPING DWARVES LIE."
  224. DATA "FIGHT", "*", "SNK", "", "", "ATTACKING THE SNAKE BOTH DOESN'T WORK AND IS VERY DANGEROUS."
  225. DATA "FIGHT", "*", "TRL", "", "", "TROLLS ARE CLOSE RELATIVES WITH THE ROCKS AND HAVE SKIN AS TOUGH AS THAT OF A RHINOCEROS. THE TROLL FENDS OFF YOUR BLOWS EFFORTLESSLY."
  226. DATA "FIGHT", "*", "WIZ", "", "", "YOU ARE ENGULFED IN A CLOUD OF ORANGE SMOKE, COUGHING AND GASPING."
  227. DATA "GIVE", "*", "BEA", "", "", "THE BEAR IS CONFUSED; SHE ONLY WANTS TO BE YOUR FRIEND."
  228. DATA "GIVE", "*", "CLM", "DRO", "", "OK, BUT I IMAGINE THIS WILL JUST IRRITATE THE CLAM."
  229. DATA "GIVE", "*", "DWA", "RMV", "", "DWARVES ARE GREEDY. THEY'LL TAKE ANYTHING YOU GIVE THEM."
  230. DATA "GIVE", "*", "DWF", "RMV", "", "DWARVES ARE GREEDY. THEY'LL TAKE ANYTHING YOU GIVE THEM."
  231. DATA "GIVE", "*", "DWR", "RMV", "", "DWARVES ARE GREEDY. THEY'LL TAKE ANYTHING YOU GIVE THEM."
  232. DATA "GIVE", "*", "GTO", "DRO", "", "ONE-EYED WILLIE HAS BEEN EXPECTING YOU."
  233. DATA "GIVE", "LAMP", "***", "TAK", "", "I APPRECIATE YOUR ENLIGHTENED NATURE, BUT YOU CAN'T GET FAR WITHOUT IT."
  234. DATA "GIVE", "*", "PLT", "TAK", "", "EVEN TALKING PLANTS AREN'T MATERIALISTIC."
  235. DATA "GIVE", "*", "REP", "TAK", "", "ACTUALLY, IT SEEMS LIKE NOTHING WILL WAKE THEM."
  236. DATA "GIVE", "*", "REP", "", "", "YOU PROD THE NEAREST DWARF, WHO WAKES UP GRUMPILY, TAKES ONE LOOK AT YOU, CURSES, AND GRABS FOR HIS AXE."
  237. DATA "GIVE", "*", "SNK", "DRO", "", "THE SNAKE HISSES AT YOU."
  238. DATA "GIVE", "*", "WIZ", "TAK", "", "THE WIZARD IS NOT INTERESTED IN THE THINGS OF PETTY MORTALS. OR MUGGLES."
  239. DATA "GIVE", "%", "GIA", "TAK", "", "THE GIANT HAS NO USE FOR TINY OBJECTS MADE FOR TINY HANDS."
  240. DATA "GIVE", "$", "DRG", "RMV", "", "THE DRAGON'S HOARD CAN NEVER BE TOO FULL."
  241. DATA "GIVE", "$", "GIA", "RMV", "", "THE GIANT LOVES TREASURE."
  242. DATA "GIVE", "$", "PIR", "MAZ:", "", "THE PIRATE WILL GLADLY SHAKE YOUR BOOTY."
  243. DATA "GIVE", "$", "TRL", "RMV", "TRL: A RICKETY WOODEN BRIDGE EXTENDS ACROSS* A CHASM, VANISHING INTO THE MIST. A SIGN POSTED ON THE BRIDGE READS, 'STOP! PAY TROLL!' THE @TROLL STANDS BY THE BRIDGE AND INSISTS YOU THROW HIM *ANOTHER* TREASURE BEFORE YOU MAY CROSS.", "THE TROLL CATCHES YOUR TREASURE AND SCURRIES AWAY OUT OF SIGHT."
  244. DATA "GIVE", "AXE", "DWF", "RMV", "DWX: YOU ARE IN A LONG SLOPING NORTH/EAST CORRIDOR WITH RAGGED SHARP WALLS.", "THE DWARF TAKES THE AXE AND THROWS IT AT YOU FOR GOOD MEASURE. WHEN IT BOOMERANGS BACK TO HIM, HE SMILES AND LEAVES."
  245. DATA "GIVE", "AXE", "TRL", "TAK", "", "THE TROLL DEFTLY CATCHES THE AXE, EXAMINES IT CAREFULLY, AND TOSSES IT BACK, DECLARING, 'GOOD WORKMANSHIP, BUT IT'S NOT VALUABLE ENOUGH.'"
  246. DATA "GIVE", "BIRDCAGE", "SNK", "RMV", "", "THE SNAKE HAS NOW DEVOURED YOUR BIRD."
  247. DATA "GIVE", "CHEST", "PIR", "MAZ:", "MZE: A NARROW CRAWL LEADS DOWN INTO A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE. YOU CAN EXIT TO THE EAST.", "'I'D BEST HIE MESELF OFF TO THE MAZE TO HIDE ME TREASURE!' WITH THAT, HE VANISHES INTO THE GLOOM."
  248. DATA "GIVE", "EGGS", "GIA", "RMV", "GNT: YOU ARE IN THE GIANT ROOM. THE CEILING HERE IS TOO HIGH UP FOR YOUR LAMP TO SHOW IT. CAVERNOUS PASSAGES LEAD EAST, NORTH, AND SOUTH.", "'FEE-FIE-FOE-FATCH. I CANNOT WAIT UNTIL THESE EGGS HATCH.' HE GOES OFF IN SEARCH OF A NEST."
  249. DATA "GIVE", "FOOD", "BEA", "RMV", "", "THE FEROCIOUS CAVE BEAR EAGERLY WOLFS DOWN YOUR FOOD."
  250. DATA "GIVE", "FOOD", "DRG", "TAK", "", "THERE'S NOTHING HERE IT WANTS TO EAT (EXCEPT PERHAPS YOU)."
  251. DATA "GIVE", "FOOD", "DWA", "TAK", "", "YOU FOOL, DWARVES EAT ONLY COAL! NOW YOU'VE MADE HIM *REALLY* MAD!!"
  252. DATA "GIVE", "FOOD", "DWF", "TAK", "", "YOU FOOL, DWARVES EAT ONLY COAL! NOW YOU'VE MADE HIM *REALLY* MAD!!"
  253. DATA "GIVE", "FOOD", "DWR", "TAK", "", "YOU FOOL, DWARVES EAT ONLY COAL! NOW YOU'VE MADE HIM *REALLY* MAD!!"
  254. DATA "GIVE", "FOOD", "PLT", "TAK", "", "IT'S NOT PLANT FOOD."
  255. DATA "GIVE", "FOOD", "TRL", "TAK", "", "GLUTTONY IS NOT ONE OF THE TROLL'S VICES. AVARICE, HOWEVER, IS."
  256. DATA "GIVE", "GOBLET", "DRG", "RMV", "DCY: YOU ARE IN A SECRET CANYON WHICH EXITS TO THE NORTH AND EAST. YOU SEE IN THE DUST THE TRACES FROM THE HUGE GREEN DRAGON AS IT CRAWLED AWAY.", "THE GREEN GREAT DRAGON CLUTCHES THE JEWELED CUP CAREFULLY IN BOTH OF ITS CLAWS AND CRAWLS AWAY."
  257. DATA "GIVE", "HONEY", "BEA", "RMV", "BEA: YOU ARE STANDING AT THE ENTRANCE TO A LARGE, BARREN ROOM. A SIGN POSTED ABOVE THE ENTRANCE READS: 'CAUTION! BEAR IN ROOM!' THERE IS A TAME BEAR IN THE ROOM. YOU MAY EXIT WEST.", "THE BEAR EAGERLY WOLFS DOWN YOUR FOOD, AFTER WHICH HE SEEMS TO CALM DOWN CONSIDERABLY AND EVEN BECOMES RATHER SWEET."
  258. DATA "GIVE", "MIRROR", "DWR", "RMV", "DWM: YOU'RE IN A LONG EAST/WEST CORRIDOR.", "THE DWARF STOPS TO ADMIRE ITSELF, ALLOWING YOU TO PASS."
  259. DATA "GIVE", "OIL", "PLT", "TAK", "", "THE PLANT INDIGNANTLY SHAKES THE OIL OFF ITS LEAVES AND ASKS, 'WATER?'"
  260. DATA "GIVE", "ZINE", "DWA", "RMV", "DWZ: YOU ARE IN A LONG WINDING CORRIDOR SLOPING OUT OF SIGHT TO BOTH THE NORTH AND SOUTH.", "THE DWARF HAS NO ISSUE WITH THE GIFT, AND EXAMINES IT CLOSELY WHILE YOU PASS IT BY."
  261. DATA "HELP", "*", "MAZ", "", "", "YOU CAN MAKE THE PASSAGES LOOK LESS ALIKE BY DROPPING THINGS."
  262. DATA "OPEN", "BIRDCAGE", "SNK", "", "KNG: YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES OFF IN ALL DIRECTIONS.", "THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN ASTOUNDING FLURRY DRIVES THE SNAKE AWAY."
  263. DATA "OPEN", "BIRDCAGE", "DRG", "RMV", "", "THE LITTLE BIRD ATTACKS THE GREEN DRAGON, AND IN AN ASTOUNDING FLURRY GETS BURNT TO A CINDER. THE ASHES BLOW AWAY."
  264. DATA "OPEN", "CHEST", "***", "AN EMPTY TREASURE CHEST IS HERE.", "", "IT IS EMPTY, WHICH EXPLAINS WHY IT IS SO LIGHT."
  265. DATA "OPEN", "OIL", "***", "", "", "THE SMELL IS UNPLEASANT."
  266. DATA "OPEN", "SPELLBOOK", "***", "", "", "ORANGE SMOKE WAFTS FROM ITS PAGES."
  267. DATA "OPEN", "SPELLBOOK", "WIZ", "RND:", "EER: YOU'RE IN A SMALL CHAMBER LIT BY AN EERIE GREEN LIGHT. AN EXTREMELY NARROW TUNNEL EXITS TO THE WEST. A DARK CORRIDOR LEADS NORTH.", "HE FIXES YOU WITH A STEELY GLARE, TAKES THE BOOK, AND READS ALOUD FROM THE OPENED PAGE. HE THEN MAKES A SINGLE PASS OVER YOU WITH HIS HANDS. YOU FALL INTO AN ENCHANTED SLEEP. A LONG TIME PASSES. WHEN YOU WAKE, YOU ARE COLD AND STIFF."
  268. DATA "OPEN", "UMBRELLA", "***", "THE UMBRELLA HAS BEEN LEFT OPEN TO DRY HERE.", "", "MAYBE IT WILL DRY FASTER."
  269. DATA "OPEN", "WATER BOTTLE", "***", "", "", "YOU HAVE TAKEN A DRINK FROM THE WATER BOTTLE. THE WATER TASTES STRONGLY OF MINERALS, BUT IS NOT UNPLEASANT. IT IS EXTREMELY COLD."
  270. DATA "OPEN", "ZINE", "***", "", "", "I'M AFRAID THE MAGAZINE IS WRITTEN IN DWARVISH."
  271. DATA "READ", "AXE", "***", "", "", "I RECOGNIZE THESE RUNES. THEY'RE DWARVISH."
  272. DATA "READ", "BIRDCAGE", "***", "", "", "IT SAYS, 'I KNOW WHY THE CAGED BIRD SINGS.'"
  273. DATA "READ", "CHEST", "***", "", "", "LETTERS ARE SCRATCHED INTO THE WOOD: 'DEAD MEN TELL NO TALES.'"
  274. DATA "READ", "EGGS", "***", "", "", "A BOX WITHOUT HINGES, KEY, OR LID' IS THE OLD RIDDLE BUT I DON'T SEE ANYTHING WRITTEN ON THESE, AFTER TAKING A LONG GANDER."
  275. DATA "READ", "FOOD", "***", "", "", "IT SAYS, 'RATIONS.'"
  276. DATA "READ", "GOBLET", "***", "", "", "IT HAS OLD ENGLISH RUNES, LIKE SOMETHING OUT OF 'BEOWULF.'"
  277. DATA "READ", "HONEY", "***", "", "", "NOTHING IS WRITTEN ON IT. POOH! SOMEONE HAS BEEN EATING IT."
  278. DATA "READ", "ITEM", "***", "", "", "IT SAYS 'ACME' - COULD BE THE COMPANY OR IT COULD BE FROM THE HALLS OF THE MOUNTAIN KING, KING ACME."
  279. DATA "READ", "LAMP", "***", "", "", "'D CELL BATTERIES REQUIRED.' YOUR LAMP IS GETTING DIM, AND YOU'RE OUT OF SPARE BATTERIES. YOU'D BEST START WRAPPING THIS UP."
  280. DATA "READ", "ROD", "***", "", "", "SAYS 'MAGIC WORD XYZZY'."
  281. DATA "READ", "SPELLBOOK", "***", "", "", "THIS AT LEAST ISN'T WRITTEN IN DWARVISH. BUT IT IS SO BORING IT COULD PUT ANYONE TO SLEEP."
  282. DATA "READ", "SPELLBOOK", "REP", "", "WIN:", "AN ORANGE SMOKE RISES AND WAFTS AWAY THE GREEN VAPOR. THE DWARVES STIR AND WAKEN. YOU BROKE THE WIZARD'S SPELL! THE CHEERING BAND OF NOW FRIENDLY DWARVES CARRY YOU OFF INTO THE SUNSET. YOU WIN--HAIL THE CONQUERING ADVENTURER!"
  283. DATA "READ", "TRIDENT", "***", "", "", "'4 OUT OF 5 DENTISTS SURVEYED RECOMMEND SUGARLESS GUM FOR PEARLY WHITE TEETH.' ACTUALLY, NOTHING'S WRITTEN ON IT."
  284. DATA "READ", "ZINE", "***", "", "", "I'M AFRAID THE MAGAZINE IS WRITTEN IN DWARVISH. THE TITLE I CAN MAKE OUT: IT IS 'SPELUNKER TODAY'. OR MAYBE IT IS 'THE NEW ZORK TIMES'?"
  285. 'REM DATA "TAKE", "EGGS", "***", "THERE ARE GOLDEN EGGS HERE.", "", "OK, BUT NOW THE NEST THAT WAS HOLDING THE GOLDEN EGGS HAS VANISHED!"
  286. DATA "USE", "FOOD", "MAZ", "RMV", "MAZ: YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL DIFFERENT THANKS TO YOUR TRAIL OF BREADCRUMBS.", "THE RATIONS CONTAIN SOME STALE BREAD, WHICH YOU USE TO CREATE A TRAIL OF BREADCRUMBS TO FIND YOUR WAY THROUGH THE MAZE."
  287. DATA "USE", "FOOD", "***", "RMV", "", "THANK YOU, IT WAS DELICIOUS!"
  288. DATA "USE", "ITEM", "***", "", "", "USE IT FOR WHAT?! I HAVE NO IDEA WHAT IT IS. DO YOU?"
  289. DATA "USE", "KEY", "***", "", "", "I DON'T KNOW HOW TO LOCK OR UNLOCK SUCH A THING."
  290. DATA "USE", "KEY", "DOR", "", "", "EACH OF THE KEYS IS MUCH TOO SMALL FOR THIS LOCK. YOU CAN MOVE THE DOOR A BIT. ARE YOU EVEN SURE IT IS LOCKED?"
  291. DATA "USE", "KEY", "GRT", "", "GRT: THE OLD IRON GRATE HAS BEEN UNLOCKED. YOU CAN SHIMMY THROUGH AND THEN DOWN IN ALL DIRECTIONS.", "THE GRATE IS NOW UNLOCKED. YOU CAN SHIMMY THROUGH AND THEN DOWN IN ANY DIRECTION."
  292. DATA "USE", "LAMP", "***", "", "", "RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING. ANYWAY, NOTHING EXCITING HAPPENS."
  293. DATA "USE", "LAMP", "DRK", "", "", "CONGRATULATIONS ON BRINGING LIGHT INTO THE DARK-ROOM!"
  294. DATA "USE", "OIL", "DOR", "", "DOR: YOU ARE AT ONE END OF AN IMMENSE NORTH/SOUTH PASSAGE. A MASSIVE, RUSTY, IRON DOOR STANDS AJAR.", "THE OIL HAS FREED UP THE HINGES SO THAT THE DOOR WILL NOW MOVE, ALTHOUGH IT REQUIRES SOME EFFORT."
  295. DATA "USE", "PERSIAN RUG", "CHA", "RMV", "CHA: A WIDE CHASM YAWNS BEFORE YOU* WITH A PATH TRACING ITS EDGE, TO THE SOUTH AND WEST. THE PERSIAN RUG HOVERS NEARBY AND WILL SHUTTLE YOU ACROSS. AT LEAST, UNTIL IT DECIDES TO SEE A WHOLE NEW WORLD.", "IT EFFORTLESSLY FLIES YOU ACROSS THE CHASM, BEFORE PLAYFULLY FLYING AROUND, STAYING OUT OF YOUR REACH. WELL, IT WAS HEAVY TO CARRY ANYWAY."
  296. DATA "USE", "ROD", "***", "", "", "YOU SAY 'HOCUS POCUS', 'OPEN SESAME', 'ABRACADBRA', 'PLUGH', AND EVEN 'XYZZY', BUT NOTHING HAPPENS."
  297. DATA "USE", "ROD", "FSR", "REP: A THREE FOOT BLACK ROD WITH A RUSTY MARK ON AN END LIES NEARBY.", "FSR: A CRYSTAL BRIDGE NOW SPANS THE FISSURE*, PROVIDING A NORTH/SOUTH PASSAGE. THE MIST IS QUITE THICK HERE. ", "A CRYSTAL BRIDGE NOW SPANS THE FISSURE. THE ROD - ER, MAGIC WAND, I GUESS - VANISHES IN A CLOUD OF GREASY BLACK SMOKE."
  298. DATA "USE", "ROD", "REP", "RMV", "WIN:", "THERE IS A LOUD EXPLOSION, AND A TWENTY-FOOT HOLE APPEARS IN THE FAR WALL. YOU MARCH THROUGH THE HOLE AND FIND YOURSELF IN THE MAIN OFFICE, WHERE A CHEERING BAND OF FRIENDLY ELVES CARRY YOU OFF INTO THE SUNSET. YOU WIN--HAIL THE CONQUERING ADVENTURER!"
  299. DATA "USE", "SPELLBOOK", "***", "", "", "DON'T! PLEASE DON'T. DON'T TURN ME INTO ANYTHING UNNATURAL."
  300. DATA "USE", "TRIDENT", "CLM", "", "OYS: YOU'RE IN A TINY CHAMBER CARVED OUT OF SEDIMENTARY ROCK. THE FLOOR AND WALLS ARE LITTERED WITH BITS OF SHELLS IMBEDDED IN THE STONE. A SHALLOW PASSAGE PROCEEDS WEST, AND A SOMEWHAT STEEPER ONE LEADS EAST. A LOW HANDS AND KNEES PASSAGE ENTERS FROM THE SOUTH.", "A GLISTENING PEARL FALLS OUT OF THE CLAM AND ROLLS AWAY. GOODNESS, THIS MUST REALLY BE AN OYSTER. (I NEVER WAS VERY GOOD AT IDENTIFYING BIVALVES.) WHATEVER IT IS, IT IS NOW FOLLOWING THE PEARL. YOU CAN PASS."
  301. DATA "USE", "UMBRELLA", "***", "", "", "IT'S DAMP HERE, BUT IT IS NOT THAT DAMP. OR WERE YOU THINKING YOU'D FLOAT UP OUT OF THE CAVE?"
  302. DATA "USE", "UMBRELLA", "WFL", "", "WFL: THE TORRENTIAL WATERFALL BLOCKS A NARROW ARCHWAY*, POURING INTO AND ECHOING DOWN A DEEP CRACK.", "THE UMBRELLA PROTECTS YOU, BUT THE FOOTING IS SLIPPERY AND TREACHEROUS. YOU PASS THROUGH SAFELY."
  303. DATA "USE", "WATER BOTTLE", "***", "THERE IS AN ALMOST FULL WATER BOTTLE HERE.", "", "YOU HAVE TAKEN A SIP FROM THE WATER BOTTLE. THE WATER TASTES STRONGLY OF MINERALS, BUT IS NOT UNPLEASANT. IT IS EXTREMELY COLD."
  304. DATA "USE", "WATER", "PLT", "THERE IS AN EMPTY WATER BOTTLE HERE.", "PLT: THE FLOOR HERE IS LITTERED WITH THIN ROCK SLABS AROUND A LARGE PIT. THERE ARE HOLES ALL OVER, BUT TOO HIGH UP ABOVE THE PIT, WHERE YOU CAN'T GET TO THEM. THERE IS A HUGE BEANSTALK GROWING OUT OF THE PIT UP TO THE HOLES, PROVIDING EXITS IN ALL DIRECTIONS.", "THE PLANT SPURTS INTO FURIOUS GROWTH FOR A FEW SECONDS. THERE IS A 12-FOOT-TALL BEANSTALK STRETCHING UP OUT OF THE PIT, BELLOWING 'WATER! WATER!'"
  305. DATA "WEST", "*", "DED", "", "", "DON'T GO WEST, YOUNG MAN. DON'T GO WEST."
  306. DATA "["
  307.  
  308. 'REM NO NEED TO CUSTOMIZE BELOW UNLESS YOU WANT TO ADD NEW FUNCTIONALITY
  309.  
  310. __screenres 640,480
  311. __WindowTitle TITLE$
  312. color 11, 0 ' bright cyan
  313. CLS
  314. WIDTH 640\8, 480\16 '' Use 8*16 font
  315.  
  316. 'REM LOCN$    THE_NAME    PATH    DESC
  317. THE_NAME = 1
  318. PATH = 2
  319. DESC = 3
  320. DIM LOCN$(LOCNMAX, DESC)
  321. FOR L=1 TO LOCNMAX
  322.    READ LOCN$(L, THE_NAME), LOCN$(L, PATH), LOCN$(L, DESC)
  323. NEXT L
  324.  
  325. 'REM ACTN$    THE_NAME    TRNS    MSSG
  326. TRNS = 2
  327. MSSG = 3
  328. DIM ACTN$(90, MSSG)
  329. DO
  330.    READ S$
  331.    IF S$<>"[" THEN
  332.       A = ASC(S$)
  333.       ACTN$(A, THE_NAME) = S$
  334.       READ ACTN$(A, TRNS), ACTN$(A, MSSG)
  335.    END IF
  336. LOOP UNTIL S$="["
  337.  
  338. 'REM OBJT$    THE_NAME    KIND    DESC
  339. KIND = 2
  340. DIM OBJT$(90, DESC)
  341. 'REM OBJT    XSPOT YSPOT FOUND SOLVED
  342. XSPOT = 1
  343. YSPOT = 2
  344. FOUND = 3
  345. SOLVED = 4
  346. SOLUTION = 5
  347. DIM OBJT(90, SOLVED)
  348. DO
  349.    READ S$
  350.    J = ASC(S$)
  351.    IF S$<>"[" THEN
  352.       OBJT$(J, THE_NAME) = S$
  353.       READ OBJT$(J, KIND), OBJT$(J, DESC)
  354.       IF OBJT$(J, KIND)="!" THEN LAMP = J
  355.    END IF
  356. LOOP UNTIL S$="["
  357. 'REM XSPOT SPECIAL VALUES:
  358. ONYOU = -1
  359. REMOVED = -2
  360.  
  361. 'REM CMND$ XFRMOBJT XFRMLOCN MSSG
  362. XFRMOBJT=1
  363. XFRMLOCN=2
  364. DIM CMND$(CMNDMAX, MSSG)
  365. FOR K = 1 TO CMNDMAX
  366.     READ A$, O$, L$, CMND$(K, XFRMOBJT), CMND$(K, XFRMLOCN), CMND$(K, MSSG)
  367.     CMNDLIST$ = CMNDLIST$ + LEFT$(A$+"*",1) + LEFT$(O$+"*",1) + LEFT$(L$+"***",3) + " "
  368.     'REM NOTE IF THIS OBJECT WILL SOLVE A PUZZLE
  369.     IF LEN(CMND$(K, XFRMLOCN))>0 THEN OBJT(ASC(O$), SOLVED) = SOLUTION
  370. NEXT K
  371. 'REM PRINT "("+CMND$(CMNDMAX, MSSG)+")"
  372.  
  373. 'REM CREATE BACKGROUND MAP
  374. DIM MAP(XMAX, YMAX)
  375. 'REM NEGATIVE LOCATION INDICATES IT HASN'T BEEN VISITED YET
  376. FOR X = 1 TO XMAX
  377.    FOR Y = 1 TO YMAX
  378.       MAP(X, Y) = -1
  379.    NEXT Y
  380. NEXT X
  381. FOR X = 1 TO XMAX
  382.    MAP(X,1) = -2
  383.    MAP(X,YMAX) = -3
  384. NEXT X
  385. FOR Y=1 TO YMAX
  386.    MAP(1,Y) = -4
  387.    MAP(XMAX,Y) = -5
  388. NEXT Y
  389.  
  390. 'REM CREATE RANDOM MAP
  391. 'REM SHUFFLE LOCATIONS
  392. DIM LDECK(LOCNMAX), ODECK(26)
  393. FOR L=1 TO LOCNMAX
  394.    LDECK(L) = L
  395. NEXT L
  396. OBJTMAX = 0
  397. FOR J=65 TO 90
  398.    IF LEN(OBJT$(J, THE_NAME))>0 THEN
  399.       OBJTMAX = OBJTMAX+1
  400.       ODECK(OBJTMAX) = J
  401.    END IF
  402. NEXT J
  403. RANDOMIZE TIMER
  404. FOR L=1 TO LOCNMAX
  405.     K = INT(RND*LOCNMAX+1)
  406.     T = LDECK(L)
  407.     LDECK(L) = LDECK(K)
  408.     LDECK(K) = T
  409. NEXT L
  410. FOR J=1 TO OBJTMAX
  411.     K = INT(RND*OBJTMAX+1)
  412.     T = ODECK(J)
  413.     ODECK(J) = ODECK(K)
  414.     ODECK(K) = T
  415. NEXT J
  416. 'REM LOAD LOCATIONS AND PLACE OBJECTS
  417. L=1
  418. J=1
  419. FOR X=2 TO XMAX-1
  420.    FOR Y=2 TO YMAX-1
  421.       IF LDECK(L)<5 THEN
  422.          MAP(X,Y) = -1
  423.       ELSE
  424.          MAP(X,Y) = -LDECK(L)
  425.       END IF
  426.       IF J<=OBJTMAX THEN
  427.          OBJT(ODECK(L), XSPOT) = X
  428.          OBJT(ODECK(L), YSPOT) = Y
  429.          OBJT(ODECK(L), FOUND) = __FALSE
  430.       END IF
  431.       IF LOCN$(LDECK(L), THE_NAME)="ENT" THEN
  432.          ENTRX = X
  433.          ENTRY = Y
  434.          CRNTX = X
  435.          CRNTY = Y
  436.          CRNTLOCN = LDECK(L)
  437.       END IF
  438.       L = L+1
  439.       J = J+1
  440.       IF L>LOCNMAX THEN
  441.          X=XMAX
  442.          Y=YMAX
  443.       END IF
  444.    NEXT Y
  445. NEXT X  
  446. 'REM PUT THE LAMP IN THE ENTRANCE
  447. OBJT(LAMP,XSPOT) = ENTRX
  448. OBJT(LAMP,YSPOT) = ENTRY
  449. 'PRINT OBJT(ASC("S"),XSPOT) ; ", " ; OBJT(ASC("S"),YSPOT)
  450.  
  451. M$ = "WELCOME TO "+TITLE$+"!! SAY 'HELP' FOR INSTRUCTIONS."
  452. GOSUB MESSAGE
  453. PRINT
  454.  
  455. GOSUB DESCRIBE
  456. GOSUB MESSAGE
  457. DO
  458.   GOSUB GETCOMMAND
  459. LOOP
  460.  
  461. GETCOMMAND:
  462. 'REM GET ACTION AND, IF NEEDED, OBJECT
  463. LASTA$ = A$
  464. PRINT
  465. PRINT ">";
  466. DO
  467.   A$=UCASE$(INKEY$)
  468. LOOP UNTIL "A"<=A$ AND A$<="Z"
  469. A=ASC(A$)
  470. PRINT ACTN$(A, THE_NAME);
  471. PRINT " ";
  472. IF ACTN$(A, TRNS)="T" THEN
  473.    DO
  474.       DO
  475.          O$=UCASE$(INKEY$)
  476.       LOOP UNTIL "A"<=O$ AND O$<="Z" OR O$=CHR$(13) OR O$=CHR$(8)
  477.       O=ASC(O$)
  478.    LOOP UNTIL OBJT(O, FOUND) OR O<32
  479.    PRINT OBJT$(O,THE_NAME);
  480.    IF O<32 THEN
  481.       PRINT
  482.       PRINT "I DON'T UNDERSTAND."
  483.       RETURN
  484.    ELSEIF OBJT(O, XSPOT)<>CRNTX AND OBJT(O, YSPOT)<>CRNTY AND OBJT(O, XSPOT)<>ONYOU THEN
  485.       PRINT
  486.       PRINT "I SEE NO " ; OBJT$(O, THE_NAME) ; " HERE."
  487.       RETURN
  488.    END IF
  489. ELSE
  490.    O$="*"
  491.    O=0
  492. END IF
  493. PRINT
  494.  
  495. 'REM PRESET TO THE DEFAULT MESSAGE, IF NEEDED
  496. M$ = ACTN$(A, MSSG)
  497. OVERRIDE = __FALSE
  498.  
  499. 'REM ROUTE TO ACTION
  500. IF A$="A" THEN GOSUB ACTIONS
  501. IF A$="B" THEN GOSUB BACK
  502. IF A$="C" THEN GOSUB CLOSEOBJT
  503. IF A$="D" THEN GOSUB DROP
  504. IF A$="E" THEN GOSUB EAST
  505. IF A$="F" THEN GOSUB FIGHT
  506. IF A$="G" THEN GOSUB GIVE
  507. IF A$="H" THEN GOSUB HELP
  508. IF A$="I" THEN GOSUB INVENTORY
  509. IF A$="J" THEN GOSUB JUMP
  510. IF A$="K" THEN GOSUB KICK
  511. IF A$="L" THEN GOSUB LOOK
  512. IF A$="M" THEN GOSUB MAP
  513. IF A$="N" THEN GOSUB NORTH
  514. IF A$="O" THEN GOSUB OPENOBJT
  515. IF A$="P" THEN GOSUB POINTS
  516. IF A$="Q" THEN GOSUB QUIT
  517. IF A$="R" THEN GOSUB READOBJT
  518. IF A$="S" THEN GOSUB SOUTH
  519. IF A$="T" THEN GOSUB TAKE
  520. IF A$="U" THEN GOSUB USE
  521. IF A$="V" THEN GOSUB VERBOSE
  522. IF A$="W" THEN GOSUB WEST
  523. IF A$="X" THEN GOSUB XPLORE
  524. IF A$="Y" THEN GOSUB YES
  525. IF A$="Z" THEN GOSUB ZZZ
  526.  
  527. IF NOT OVERRIDE THEN GOSUB POSTPROCESS
  528. IF LEN(M$)>0 THEN GOSUB MESSAGE
  529. RETURN
  530.  
  531. ACTIONS:
  532. GOSUB MESSAGE
  533. FOR A = 65 TO 90
  534.      IF LEN(ACTN$(A, THE_NAME)) > 0 THEN M$ = M$ + LEFT$(ACTN$(A, THE_NAME)+"          ",10)
  535.      IF LEN(M$) = 60 THEN
  536.         PRINT M$
  537.         M$=""
  538.      END IF
  539. NEXT A
  540. A = ASC(A$)
  541. PRINT M$
  542. M$=""
  543. RETURN
  544.  
  545. BACK:
  546. IF LASTA$="J" OR LASTA$="X" THEN
  547.    M$ = "SORRY, BUT I NO LONGER SEEM TO REMEMBER HOW IT WAS YOU GOT HERE."
  548.    OVERRIDE=__TRUE
  549. ELSEIF OBJT(LAMP, XSPOT) <> ONYOU THEN
  550.   M$="IT IS NOW PITCH DARK. IF YOU PROCEED YOU WILL LIKELY FALL INTO A PIT."
  551.   OVERRIDE=__TRUE
  552. ELSE
  553.    NEXTX = LASTX
  554.    NEXTY = LASTY
  555.    GOSUB MOVE
  556. END IF
  557. RETURN
  558.  
  559. CLOSEOBJT:
  560. OVERRIDE=__TRUE
  561. IF OBJT$(O, KIND)="+" THEN
  562.    OBJT$(O, KIND)="-"
  563.    M$ = "IT IS NOW CLOSED."
  564.    OVERRIDE=__FALSE
  565. ELSEIF OBJT$(O, KIND)="-" THEN
  566.   M$ = "IT WAS ALREADY CLOSED."
  567. END IF
  568. RETURN
  569.  
  570. DROP:
  571. IF OBJT(O, XSPOT) <> ONYOU THEN
  572.    M$ = "YOU AREN’T CARRYING IT!"
  573.    OVERRIDE=__TRUE
  574. ELSE
  575.    M$ = "OK."
  576.    OBJT(O, XSPOT) = CRNTX
  577.    OBJT(O, YSPOT) = CRNTY
  578. END IF
  579. RETURN
  580.  
  581. EAST:
  582. NEXTX=CRNTX+1
  583. NEXTY=CRNTY
  584. GOSUB TRYTOMOVE
  585. RETURN
  586.  
  587. FIGHT:
  588. 'REM ALL HANDLED BY COMMANDS
  589. RETURN
  590.  
  591. GIVE:
  592. T = INSTR(LOCN$(CRNTLOCN, DESC), "@")
  593. IF OBJT(O, XSPOT) <> ONYOU THEN
  594.    M$ = "YOU AREN'T EVEN CARRYING IT!"
  595.    OVERRIDE=__TRUE
  596. ELSEIF T=0 THEN
  597.    M$ = "THERE’S NO ONE HERE TO GIVE ANYTHING TO."
  598.    OVERRIDE=__TRUE
  599. ELSE
  600.    M$ = "YOU GIVE THE " + OBJT$(O, THE_NAME) + " TO THE " + MID$(LOCN$(CRNTLOCN, DESC), T+1, INSTR (T, LOCN$(CRNTLOCN, DESC), " ")-T-1) + "."
  601.    OBJT(O, XSPOT) = REMOVED  
  602. END IF
  603. RETURN
  604.  
  605. HELP:
  606. 'REM ALL HANDLED BY COMMANDS
  607. RETURN
  608.  
  609. INVENTORY:
  610. GOSUB MESSAGE
  611. T=__FALSE
  612. FOR J = 65 TO 90
  613.    IF OBJT(J, XSPOT) = ONYOU THEN
  614.      PRINT CHR$(J)+MID$(OBJT$(J, THE_NAME),2,255)
  615.      T=__TRUE
  616.    END IF
  617. NEXT J
  618. IF NOT T THEN PRINT "NOTHING"
  619. RETURN
  620.  
  621. JUMP:
  622. GOSUB MESSAGE
  623. O=0
  624. FOR J = 65 TO 90
  625.    IF OBJT(J, XSPOT) = ONYOU AND J<> LAMP THEN
  626.        O=J
  627.     END IF
  628. NEXT J
  629. IF O>0 THEN
  630.    M$ = "AS YOU JUMPED I'M AFRAID THAT YOU DROPPED THE " + OBJT$(O, THE_NAME) + "!"
  631.    GOSUB MESSAGE
  632.    OBJT(O, XSPOT) = CRNTX
  633.    OBJT(O, YSPOT) = CRNTY  
  634. END IF
  635. O=0
  636. GOSUB XPLORE
  637. RETURN
  638.  
  639. KICK:
  640. A$ = "F"
  641. 'REM SYNONYM FOR FIGHT
  642. 'REM ALL HANDLED BY COMMANDS
  643. RETURN
  644.  
  645. LOOK:
  646. GOSUB MESSAGE
  647. GOSUB DESCRIBE
  648. RETURN
  649.  
  650. MAP:
  651. F=__FALSE
  652. D=36
  653. 'screen 12 ' multicolor 640x480
  654. '__WindowTitle "Map"
  655. CLS
  656. GOSUB message
  657. COLOR 15 'WHITE
  658. LINE (D,D)-(XMAX*D+D,YMAX*D+D), ,B ' BOX D,D TO XMAX*D+D,YMAX*D+D
  659. FOR Y = 1 TO YMAX
  660.    FOR X = 1 TO XMAX
  661.       IF MAP(X,Y)<0 THEN
  662.          'REM DON'T DISPLAY
  663.       ELSE
  664.             'COLOR 15 'WHITE
  665.             COLOR 12 'RED
  666.             L = ABS(MAP(X,Y))
  667.             'REM PRINT LOCN$(L, NAME);
  668.             'REM PRINT " ";
  669.             IF INSTR(LOCN$(L, PATH),"N")=0 THEN LINE (X*D,Y*D)-(X*D+D,Y*D) 'LINE X*D,Y*D TO X*D+D,Y*D
  670.             IF INSTR(LOCN$(L, PATH),"S")=0 THEN LINE (X*D,Y*D+D)-(X*D+D, Y*D+D) 'LINE X*D,Y*D+D TO X*D+D, Y*D+D
  671.             IF INSTR(LOCN$(L, PATH),"W")=0 THEN LINE (X*D,Y*D)-(X*D,Y*D+D) 'LINE X*D,Y*D TO X*D,Y*D+D
  672.             IF INSTR(LOCN$(L, PATH),"E")=0 THEN LINE (X*D+D,Y*D)-(X*D+D, Y*D+D) 'LINE X*D+D,Y*D TO X*D+D, Y*D+D
  673.       END IF
  674.       IF X = CRNTX AND Y = CRNTY THEN
  675.          COLOR 10 'GREEN
  676.          F=__TRUE
  677.       ELSEIF LOCN$(ABS(MAP(X,Y)), THE_NAME) = "ENT" THEN
  678.          COLOR 9 'BLUE
  679.       ELSEIF LEN(LOCN$(ABS(MAP(X,Y)), PATH)) >4 AND MAP(X,Y)>0 THEN
  680.          COLOR 12 'RED
  681.       ELSEIF MAP(X,Y)>0 THEN
  682.          COLOR 7' GRAY
  683.       END IF
  684.       IF MAP(X,Y)>0 THEN
  685.          LINE (X*D+1, Y*D+1)-(X*D+D-1, Y*D+D-1), , BF 'BAR X*D+1, Y*D+1 TO X*D+D-1, Y*D+D-1
  686.          IF LEN(LOCN$(ABS(MAP(X,Y)), PATH)) <=4 THEN
  687.             FOR J = 65 TO 90
  688.                IF OBJT(J, XSPOT) = X AND OBJT(J, YSPOT) = Y THEN
  689.                   COLOR 0 'BLACK
  690.                   DRAW STRING (X*D+3, Y*D+3), CHR$(J) 'TEXT X*D+3, Y*D+3, CHR$(J)
  691.                   J=91
  692.                END IF
  693.             NEXT J
  694.          ELSE
  695.             color 14 'bright yellow
  696.             'COLOR 0 'BLACK
  697.             DRAW STRING (X*D+3, Y*D+3), LEFT$(LOCN$(ABS(MAP(X,Y)), THE_NAME),1) 'TEXT X*D+3, Y*D+3, LEFT$(LOCN$(ABS(MAP(X,Y)), THE_NAME),1)
  698.          END IF
  699.       END IF
  700.    NEXT X
  701.    PRINT
  702. NEXT Y
  703. WHILE INKEY$=""
  704. WEND
  705. LOCATE 480\16
  706. COLOR 11 'CYAN
  707. GOSUB DESCRIBE
  708. RETURN
  709.  
  710. NORTH:
  711. NEXTX=CRNTX
  712. NEXTY=CRNTY-1
  713. GOSUB TRYTOMOVE
  714. RETURN
  715.  
  716. OPENOBJT:
  717. OVERRIDE=__TRUE
  718. IF OBJT$(O, KIND)="-" THEN
  719.    OBJT$(O, KIND)="+"
  720.    M$ = "IT IS NOW OPENED."
  721.    OVERRIDE=__FALSE
  722. ELSEIF OBJT$(O, KIND)="+" THEN
  723.   M$ = "IT WAS ALREADY OPENED."
  724. END IF
  725. RETURN
  726.  
  727. POINTS:
  728. 'REM PRINT LONG EXPLANATION THE FIRST TIME ONLY
  729. IF LEN(M$)>0 AND NOT EXPLAINPOINTS THEN
  730.    GOSUB MESSAGE
  731.    EXPLAINPOINTS = __TRUE
  732. END IF
  733. 'REM TALLY CURRENT AND FULL SCORE
  734. S = 0
  735. T = 0
  736. FOR J = 65 TO 90
  737.    IF OBJT(J, SOLVED)=SOLVED THEN
  738.        T = T + 5
  739.        S = S + 5
  740.    ELSEIF OBJT$(J, KIND) = "$" THEN
  741.        IF OBJT(J, XSPOT) = ONYOU THEN
  742.           T = T + 1
  743.        ELSEIF OBJT(J, XSPOT) = ENTRX AND OBJT(J, YSPOT) = ENTRY THEN
  744.           T = T + 4
  745.        END IF
  746.        IF OBJT(J, SOLVED) = 0 THEN S = S + 4
  747.     END IF
  748.     IF OBJT(J, SOLVED)=SOLUTION THEN
  749.        S = S + 5
  750.     END IF
  751. NEXT J
  752. M$ = "IF YOU WERE TO QUIT NOW, YOU WOULD SCORE A TOTAL OF" + STR$(T) + " POINTS, OUT OF A POSSIBLE MAXIMUM OF" + STR$(S) + " POINTS. IF YOU WANT TO END YOUR ADVENTURE EARLY, SAY 'QUIT'."
  753. RETURN
  754.  
  755. QUIT:
  756. RETURN
  757.  
  758. READOBJT:
  759. 'REM ALL HANDLED BY COMMANDS
  760. RETURN
  761.  
  762. SOUTH:
  763. NEXTX=CRNTX
  764. NEXTY=CRNTY+1
  765. GOSUB TRYTOMOVE
  766. RETURN
  767.  
  768. TAKE:
  769. OVERRIDE=__TRUE
  770. IF OBJT(O, XSPOT) = ONYOU THEN
  771.    M$ = "YOU ARE ALREADY CARRYING IT!"
  772. ELSE
  773.    REM TALLY NUMBER OF ITEMS CARRIED
  774.    T=0
  775.    FOR X= 65 TO 90
  776.       IF OBJT(X, XSPOT) = ONYOU THEN T=T+1
  777.    NEXT X
  778.    REM CAN'T CARRY MORE THAN 7 ITEMS
  779.    IF T<7 THEN
  780.       OBJT(O, XSPOT) = ONYOU
  781.       M$="OK."
  782.       OVERRIDE=__FALSE
  783.    END IF
  784. END IF
  785. RETURN
  786.  
  787. USE:
  788. 'REM ALL HANDLED BY COMMANDS
  789. RETURN
  790.  
  791. VERBOSE:
  792. VBSE = NOT VBSE
  793. IF VBSE THEN
  794.    M$ = "OKAY, FROM NOW ON I'LL ALWAYS DESCRIBE A PLACE IN FULL."
  795. END IF
  796. RETURN
  797.  
  798. WEST:
  799. NEXTX=CRNTX-1
  800. NEXTY=CRNTY
  801. GOSUB TRYTOMOVE
  802. RETURN
  803.  
  804. XPLORE:
  805. IF OBJT(LAMP, XSPOT) <> ONYOU THEN
  806.   M$="YOU CAN'T EXPLORE WITHOUT A LIGHT. SO LET'S JUST CALL IT A DAY."
  807.   OVERRIDE=__TRUE
  808. ELSE
  809.   GOSUB MESSAGE
  810.   IF A$="X" THEN
  811.     D=2
  812.   ELSE
  813.     D=4
  814.   END IF
  815.   T=0
  816.   DO
  817.     NEXTX = INT(RND*(XMAX-1)+1)
  818.     NEXTY = INT(RND*(YMAX-1)+1)
  819.     T = T+1
  820.   LOOP UNTIL NEXTX<>CRNTX AND NEXTY<>CRNTY AND LEN(LOCN$(ABS(MAP(NEXTX, NEXTY)), PATH)) <= D AND (MAP(NEXTX, NEXTY)<0 OR T>7)
  821.   LASTX = 0
  822.   GOSUB MOVE
  823. END IF
  824. RETURN
  825.  
  826. YES:
  827. IF LASTA$ = "Q" THEN
  828.    GOSUB POINTS
  829.    M$ = "YOU SCORE A TOTAL OF" + STR$(T) + " POINTS, OUT OF A POSSIBLE MAXIMUM OF" + STR$(S) + " POINTS."
  830.    PCT = T/S
  831.    FINALSCORE = T
  832.    GOSUB MESSAGE
  833.    'REM DEBUG: PRINT PCT
  834.    IF PCT<0.10 THEN
  835.       M$ = "YOU ARE OBVIOUSLY A RANK AMATEUR.  BETTER LUCK NEXT TIME."
  836.    ELSEIF PCT<0.29 THEN
  837.       M$ = "YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER."
  838.    ELSEIF PCT<0.37 THEN
  839.       M$ = "YOU HAVE ACHIEVED THE RATING: 'EXPERIENCED ADVENTURER'."
  840.    ELSEIF PCT<0.57 THEN
  841.       M$ = "YOU MAY NOW CONSIDER YOURSELF A 'SEASONED ADVENTURER'."
  842.    ELSEIF PCT<0.71 THEN
  843.       M$ = "YOU HAVE REACHED 'JUNIOR MASTER' STATUS."
  844.    ELSEIF PCT<0.85 THEN
  845.       M$ = "YOUR SCORE PUTS YOU IN MASTER ADVENTURER CLASS C."
  846.    ELSEIF PCT<0.95 THEN
  847.       M$ = "YOUR SCORE PUTS YOU IN MASTER ADVENTURER CLASS B."
  848.    ELSEIF PCT<1 THEN
  849.       M$ = "YOUR SCORE PUTS YOU IN MASTER ADVENTURER CLASS A."
  850.    ELSE
  851.       M$ = "ALL OF ADVENTUREDOM GIVES TRIBUTE TO YOU, ADVENTURER GRANDMASTER!"
  852.    END IF
  853.    IF FINALSCORE>HIGHSCORE THEN
  854.       HIGHSCORE = FINALSCORE
  855.       M$=M$+" A NEW HIGH SCORE!"
  856.    END IF
  857.    GOSUB MESSAGE
  858.    END
  859. ELSEIF RIGHT$(LASTM$,1)="?" THEN
  860.    M$ = "THAT WAS A RHETORICAL QUESTION."
  861. END IF
  862. RETURN
  863.  
  864. ZZZ:
  865. REM ALL HANDLED BY COMMANDS
  866. RETURN
  867.  
  868.  
  869. 'REM *****
  870. 'REM SUPPORT ROUTINES
  871.  
  872. DESCRIBE:
  873. 'REM DESCRIBE THE LOCATION, FOR THE 'LOOK' ACTION OR ANY MOVES
  874.  
  875. 'REM DESCRIBE THE LOCATION
  876. 'REM DEBUG: PRINT CRNTX
  877. 'REM DEBUG: PRINT CRNTY
  878. 'REM DEBUG: PRINT CRNTLOCN
  879. 'REM DEBUG: PRINT LOCN$(CRNTLOCN, NAME)
  880. M$ = LOCN$(CRNTLOCN, DESC)
  881. 'REM IF THE LOCATION WAS VISITED AND VERBOSE DESCRIPTIONS TURNED OFF AND NOT CALLED BY 'LOOK'
  882. IF MAP(CRNTX, CRNTY)>0 AND NOT VBSE AND A$<>"L" THEN
  883.    REM TRUNCATE AT THE ASTERISK (*) OR FIRST PERIOD
  884.    X = INSTR(M$, "*")
  885.    IF X=0 THEN X = INSTR(M$, ".")
  886.    IF X=0 THEN X = LEN(M$) - 1
  887.    M$ = LEFT$(M$,X-1) + "."
  888. ELSE
  889.    'REM DESCRIBE IN FULL
  890.    'REM BUT FIRST REMOVE ASTERISK INDICATING TRUNCATION
  891.    X = INSTR(M$, "*")
  892.    IF X THEN M$ = LEFT$(M$,X-1) + MID$(M$, X+1, LEN(M$))
  893. END IF
  894. X = INSTR(M$, "@")
  895. IF X THEN M$ = LEFT$(M$,X-1) + MID$(M$, X+1, LEN(M$))
  896. GOSUB MESSAGE
  897. 'REM THE LOCATION WAS VISITED
  898. MAP(CRNTX, CRNTY) = ABS(MAP(CRNTX, CRNTY))
  899. 'REM DESCRIBE THE OBJECTS FOUND HERE
  900. FOR J = 65 TO 90
  901.    IF OBJT(J, XSPOT) = CRNTX AND OBJT(J, YSPOT) = CRNTY THEN
  902.       OBJT(J, FOUND)=__TRUE
  903.       M$ = OBJT$(J, DESC)
  904.       GOSUB MESSAGE
  905.    END IF
  906. NEXT J
  907. RETURN
  908.  
  909. MESSAGE:
  910. 'REM PRINT MESSAGES ACROSS MULTIPLE LINES WITHOUT BREAKING UP WORDS
  911. LASTM$ = M$
  912. /'REM DECRYPT
  913. IF LEFT$(M$,1)="$" THEN
  914.    FOR J=2 TO LEN(M$)
  915.        MID$(M$,J,1) = CHR$(96-ASC(MID$(M$,J,1)))
  916.    NEXT J
  917.    M$ = MID$(M$,2,LEN(M$))
  918. END IF '/
  919. T=1
  920. DO
  921.     IF LEN(M$)<=79 THEN
  922.         PRINT M$
  923.         M$=""
  924.     ELSE
  925.         M=79
  926.         WHILE MID$(M$,M,1)<>" "
  927.             M=M-1
  928.         WEND
  929.         PRINT LEFT$(M$,M-1)
  930.         M$=MID$(M$,M+1,LEN(M$))
  931.         T=T+1
  932.      END IF
  933.      IF T=35 THEN
  934.         PRINT "(HIT ANY KEY TO CONTINUE)"
  935.         WHILE INKEY$=""
  936.         WEND
  937.         T=1
  938.      END IF
  939. LOOP UNTIL LEN(M$)=0
  940. RETURN
  941.  
  942. MOVE:
  943. 'REM MOVE TO NEXTX, NEXTY
  944. LASTX = CRNTX
  945. LASTY = CRNTY
  946. CRNTX = NEXTX
  947. CRNTY = NEXTY
  948. CRNTLOCN = ABS(MAP(CRNTX, CRNTY))
  949. 'REM UPDATE PATH
  950. P$=LOCN$(CRNTLOCN, PATH)
  951. IF LEN(P$) < 4 THEN
  952.    IF A$="N" AND INSTR(P$, "S")=0 THEN P$ = P$ + "S"
  953.    IF A$="S" AND INSTR(P$, "N")=0 THEN P$ = P$ + "N"
  954.    IF A$="W" AND INSTR(P$, "E")=0 THEN P$ = P$ + "E"
  955.    IF A$="E" AND INSTR(P$, "W")=0 THEN P$ = P$ + "W"
  956.    LOCN$(CRNTLOCN, PATH) = P$
  957. END IF
  958. GOSUB DESCRIBE
  959. RETURN
  960.  
  961. TRYTOMOVE:
  962. P$=LOCN$(CRNTLOCN, PATH)
  963. IF LEN(P$)>4 THEN
  964.    M$=P$
  965.    OVERRIDE = __TRUE
  966. ELSEIF OBJT(LAMP, XSPOT) <> ONYOU THEN
  967.    M$="IT IS PITCH BLACK. YOU ARE LIKELY TO BE EATEN BY A GRUE."
  968.    OVERRIDE = __TRUE
  969. ELSEIF INSTR(P$,A$)>0 AND 1<=NEXTX AND NEXTX<=XMAX AND 1<=NEXTY AND NEXTY<=YMAX THEN
  970.    GOSUB MOVE
  971. END IF
  972. RETURN
  973.  
  974. POSTPROCESS:
  975. 'REM NOTE THAT ROOM MAY HAVE CHANGED
  976. IF INSTR("BJNSEWX", A$)>0 THEN RETURN
  977. 'REM LOOK UP CUSTOM COMMANDS
  978. L$=LOCN$(ABS(MAP(CRNTX,CRNTY)), THE_NAME)
  979. 'O=ASC(O$)  <--- **MEGA PARSING BUG **  this is damaging!!
  980. 'REM IS THERE A COMMAND FOR THIS ACTION AND THIS OBJECT IN THIS LOCATION?
  981. C= INSTR(CMNDLIST$,A$+O$+L$+" ")
  982. 'REM IS THERE A COMMAND FOR THIS ACTION AND THIS KIND OF OBJECT IN THIS LOCATION?
  983. IF C=0 AND O > 0 THEN C= INSTR(CMNDLIST$,A$+OBJT$(O, KIND)+L$)   '<--- **MEGA PARSING BUG ** -- added check on O. If there's no object, there's no KIND to be searched for!
  984. 'REM IS THERE A COMMAND FOR THIS ACTION AND ANY OBJECT IN THIS LOCATION?
  985. IF C=0 THEN C= INSTR(CMNDLIST$,A$+"*"+L$)
  986. 'REM IS THERE A COMMAND FOR THIS ACTION AND THIS KIND OF OBJECT IN ANY LOCATION?
  987. IF C=0 THEN C= INSTR(CMNDLIST$,A$+O$+"***")
  988. IF C=0 THEN RETURN
  989. C = INT( (C-1)/6+1 )
  990. 'REM EXECUTE COMMAND
  991. M$=CMND$(C, MSSG)
  992. OBJTCMND$ = CMND$(C, XFRMOBJT)
  993. IF OBJTCMND$="DRO" THEN
  994.    OBJT(O, XSPOT) = CRNTX
  995.    OBJT(O, YSPOT) = CRNTY
  996. ELSEIF OBJTCMND$="RMV" THEN
  997.    OBJT(O, XSPOT) = REMOVED
  998. ELSEIF OBJTCMND$="TAK" THEN
  999.    OBJT(O, XSPOT) = ONYOU
  1000. ELSEIF LEFT$(OBJTCMND$,4)="RND:" THEN
  1001.    DO
  1002.       OBJT(O, XSPOT) = INT(RND*XMAX+1)
  1003.       OBJT(O, YSPOT) = INT(RND*YMAX+1)
  1004.    LOOP UNTIL OBJT(O, XSPOT) <> CRNTX
  1005.    IF LEN(OBJTCMND$)>5 THEN OBJT$(O, DESC) = MID$(OBJTCMND$, 6, LEN(OBJTCMND$))
  1006. ELSEIF MID$(OBJTCMND$, 4, 1)=":" THEN
  1007.    'REM FIND LOCATION NAME
  1008.    S$ = LEFT$(OBJTCMND$,3)
  1009.    FOR L = 1 TO LOCNMAX
  1010.       IF LOCN$(L, THE_NAME) = S$ THEN
  1011.          FOR X = 1 TO XMAX
  1012.               FOR Y = 1 TO YMAX
  1013.                   IF ABS(MAP(X, Y)) = L THEN
  1014.                      OBJT(O, XSPOT) = X
  1015.                      OBJT(O, YSPOT) = Y
  1016.                      X = XMAX+1
  1017.                      Y = YMAX+1
  1018.                   END IF
  1019.               NEXT Y
  1020.           NEXT X
  1021.           L = LOCNMAX + 1
  1022.       END IF
  1023.    NEXT L
  1024.    IF LEN(OBJTCMND$)>4 THEN OBJT$(O, DESC) = MID$(OBJTCMND$, 6, LEN(OBJTCMND$))
  1025. ELSEIF OBJTCMND$<>"" THEN
  1026.    OBJT$(O, DESC) = OBJTCMND$
  1027. END IF
  1028. 'REM REVISE LOCATION
  1029. LOCNCMND$ = CMND$(C, XFRMLOCN)
  1030. 'REM DEBUG: PRINT A$+O$+L$+" / "+OBJTCMND$+" / "+LOCNCMND$
  1031. IF LEFT$(LOCNCMND$, 3)="WIN" THEN
  1032.    GOSUB MESSAGE
  1033.    LASTA$="Q"
  1034.    GOSUB YES
  1035.    END
  1036. ELSEIF LEN(LOCNCMND$)>0 THEN
  1037.    OBJT(O, SOLVED)=SOLVED
  1038.    L = MAP(CRNTX, CRNTY)
  1039.    LOCN$(L, THE_NAME) = LEFT$(LOCNCMND$, 3)
  1040.    LOCNCMND$ = MID$(LOCNCMND$, 6, LEN(LOCNCMND$))
  1041.    LOCN$(L, DESC) = LOCNCMND$
  1042.    'REM UPDATE PATH
  1043.    IF INSTR(LOCNCMND$, "ALL DIRECTIONS") THEN
  1044.       P$ = "NSEW"
  1045.    ELSE
  1046.       P$ = ""
  1047.      IF INSTR(LOCNCMND$, "NORTH") THEN P$ = P$ + "N"
  1048.      IF INSTR(LOCNCMND$, "SOUTH") THEN P$ = P$ + "S"
  1049.      IF INSTR(LOCNCMND$, "EAST") THEN P$ = P$ + "E"
  1050.      IF INSTR(LOCNCMND$, "WEST") THEN P$ = P$ + "W"
  1051.      IF LEN(P$)=0 THEN P$ = "NSEW"
  1052.    END IF
  1053.    LOCN$(L, PATH) = P$
  1054. END IF
  1055. RETURN
  1056.  
Add Comment
Please, Sign In to add comment