vignettes.txt 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495
  1. >>> import io
  2. >>> from itertools import cycle, islice
  3. This file tests the behavior of the Adventure game in all sorts of
  4. specific situations that would be very tedious to arrange in actual
  5. walkthroughs. As the basis for these tests, we will begin by starting a
  6. game, entering the building, and carrying the lamp.
  7. >>> import adventure
  8. >>> adventure.play(seed=3)
  9. WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS?
  10. <BLANKLINE>
  11. >>> no
  12. YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.
  13. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND
  14. DOWN A GULLY.
  15. <BLANKLINE>
  16. >>> brief
  17. OKAY, FROM NOW ON I'LL ONLY DESCRIBE A PLACE IN FULL THE FIRST TIME
  18. YOU COME TO IT. TO GET THE FULL DESCRIPTION, SAY "LOOK".
  19. <BLANKLINE>
  20. >>> enter
  21. YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING.
  22. <BLANKLINE>
  23. THERE ARE SOME KEYS ON THE GROUND HERE.
  24. <BLANKLINE>
  25. THERE IS A SHINY BRASS LAMP NEARBY.
  26. <BLANKLINE>
  27. THERE IS FOOD HERE.
  28. <BLANKLINE>
  29. THERE IS A BOTTLE OF WATER HERE.
  30. <BLANKLINE>
  31. >>> on
  32. YOUR LAMP IS NOW ON.
  33. <BLANKLINE>
  34. >>> get(lamp)
  35. OK
  36. <BLANKLINE>
  37. >>> for _room in adventure._game.rooms.values():
  38. ... _room.times_described = 1 # to avoid long descriptions
  39. Now we can save this game.
  40. >>> savefile = io.BytesIO()
  41. >>> save(savefile)
  42. GAME SAVED
  43. <BLANKLINE>
  44. Now, all of the tests below can begin by calling this restart() function
  45. to place them back at the beginning of the adventure in a known state.
  46. If a room is specified, note that restart() performs two turns in the
  47. room before handing back control: the first when it asks the game to
  48. move the caller into that room, and the second when it calls look().
  49. >>> def restart(room=None, dwarves=False, objects=(), randoms=None):
  50. ... """Restart the whole Adventure game from our stringio file."""
  51. ...
  52. ... global game
  53. ... savefile.seek(0)
  54. ... adventure.resume(savefile, quiet=True)
  55. ... game = adventure._game
  56. ... if room is not None:
  57. ... _go_to(room)
  58. ... room = game.loc
  59. ... if not dwarves:
  60. ... game.dwarf_stage = 2
  61. ... del game.dwarves[:]
  62. ... for obj in objects:
  63. ... if isinstance(obj, adventure.prompt.ReprTriggeredPhrase):
  64. ... obj = game.referent(game.vocabulary[obj.words[0]])
  65. ... obj.drop(room)
  66. ... if randoms is not None:
  67. ... game.random = list(randoms).pop
  68. >>> class go_to(object):
  69. ... """Special command that warps us directly to a location."""
  70. ...
  71. ... def __init__(self, room):
  72. ... self.room = room
  73. ... def __repr__(self):
  74. ... game.output = ''
  75. ... _go_to(self.room)
  76. ... return game.output.rstrip('\n') + '\n'
  77. >>> def _go_to(room):
  78. ... game.move_to(game.rooms[room] if isinstance(room, int) else room)
  79. >>> def quiet(*args):
  80. ... """Run one or more commands without printing their result."""
  81. ...
  82. ... for arg in args:
  83. ... repr(arg)
  84. ... return None
  85. With those definitions complete, we can proceed with the actual tests!
  86. ---------------------------------------
  87. You Won't Get It Down The Steps, Either
  88. ---------------------------------------
  89. >>> restart(room=18)
  90. >>> look
  91. THIS IS A LOW ROOM WITH A CRUDE NOTE ON THE WALL. THE NOTE SAYS,
  92. "YOU WON'T GET IT UP THE STEPS".
  93. <BLANKLINE>
  94. THERE IS A LARGE SPARKLING NUGGET OF GOLD HERE!
  95. <BLANKLINE>
  96. >>> get(gold)
  97. OK
  98. <BLANKLINE>
  99. >>> go_to(13)
  100. YOU'RE IN BIRD CHAMBER.
  101. <BLANKLINE>
  102. A CHEERFUL LITTLE BIRD IS SITTING HERE SINGING.
  103. <BLANKLINE>
  104. >>> w
  105. YOU'RE AT TOP OF SMALL PIT.
  106. <BLANKLINE>
  107. >>> d
  108. YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK.
  109. <BLANKLINE>
  110. OH DEAR, YOU SEEM TO HAVE GOTTEN YOURSELF KILLED. I MIGHT BE ABLE TO
  111. HELP YOU OUT, BUT I'VE NEVER REALLY DONE THIS BEFORE. DO YOU WANT ME
  112. TO TRY TO REINCARNATE YOU?
  113. <BLANKLINE>
  114. >>> n
  115. OK
  116. <BLANKLINE>
  117. <BLANKLINE>
  118. YOU SCORED 53 OUT OF A POSSIBLE 350 USING 9 TURNS.
  119. <BLANKLINE>
  120. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  121. <BLANKLINE>
  122. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 78 MORE POINTS
  123. <BLANKLINE>
  124. >>> look
  125. YOU HAVE GOTTEN YOURSELF KILLED.
  126. <BLANKLINE>
  127. -------------------
  128. Pirates and dwarves
  129. -------------------
  130. If the dwarves activate when we are standing in one of their starting
  131. rooms, then does the dwarf at our location get moved successfully to the
  132. gold nuggets room?
  133. >>> restart(room=41, dwarves=True, randoms=[None, .9, .9, .99])
  134. >>> [ _dwarf.room.n for _dwarf in game.dwarves ]
  135. [19, 27, 33, 44, 64]
  136. >>> e
  137. A LITTLE DWARF JUST WALKED AROUND A CORNER, SAW YOU, THREW A LITTLE
  138. AXE AT YOU WHICH MISSED, CURSED, AND RAN AWAY.
  139. <BLANKLINE>
  140. YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS.
  141. <BLANKLINE>
  142. THERE IS A LITTLE AXE HERE.
  143. <BLANKLINE>
  144. THERE ARE DIAMONDS HERE!
  145. <BLANKLINE>
  146. >>> [ _dwarf.room.n for _dwarf in game.dwarves ]
  147. [19, 18, 33, 44, 64]
  148. If the pirate encounters us in the plover room or dark room, does he
  149. leave the platinum pyramid since learning how to remove it from the room
  150. is one of the game's puzzles?
  151. >>> restart(room=100, objects=[pyramid])
  152. >>> look
  153. YOU'RE IN A SMALL CHAMBER LIT BY AN EERIE GREEN LIGHT. AN EXTREMELY
  154. NARROW TUNNEL EXITS TO THE WEST. A DARK CORRIDOR LEADS NE.
  155. <BLANKLINE>
  156. THERE IS AN EMERALD HERE THE SIZE OF A PLOVER'S EGG!
  157. <BLANKLINE>
  158. THERE IS A PLATINUM PYRAMID HERE, 8 INCHES ON A SIDE!
  159. <BLANKLINE>
  160. >>> get(pyramid)
  161. OK
  162. <BLANKLINE>
  163. >>> get(emerald)
  164. OK
  165. <BLANKLINE>
  166. >>> game.pirate.room = game.loc
  167. >>> look
  168. OUT FROM THE SHADOWS BEHIND YOU POUNCES A BEARDED PIRATE! "HAR, HAR,"
  169. HE CHORTLES, "I'LL JUST TAKE ALL THIS BOOTY AND HIDE IT AWAY WITH ME
  170. CHEST DEEP IN THE MAZE!" HE SNATCHES YOUR TREASURE AND VANISHES INTO
  171. THE GLOOM.
  172. <BLANKLINE>
  173. YOU'RE IN A SMALL CHAMBER LIT BY AN EERIE GREEN LIGHT. AN EXTREMELY
  174. NARROW TUNNEL EXITS TO THE WEST. A DARK CORRIDOR LEADS NE.
  175. <BLANKLINE>
  176. >>> inventory
  177. YOU ARE CURRENTLY HOLDING THE FOLLOWING:
  178. <BLANKLINE>
  179. BRASS LANTERN
  180. PLATINUM PYRAMID
  181. <BLANKLINE>
  182. If we manage to collect all of the treasures before the pirate spots us,
  183. then when we find him he goes to hide his treasure chest in the maze
  184. without any other treasures to accompany it.
  185. >>> restart()
  186. >>> for t in game.treasures:
  187. ... if t == 'chest': continue
  188. ... t.drop(game.loc)
  189. >>> quiet(look)
  190. >>> game.dwarf_stage = 2
  191. >>> game.loc = game.pirate.room = game.rooms[69]
  192. >>> look
  193. THERE ARE FAINT RUSTLING NOISES FROM THE DARKNESS BEHIND YOU. AS YOU
  194. TURN TOWARD THEM, THE BEAM OF YOUR LAMP FALLS ACROSS A BEARDED PIRATE.
  195. HE IS CARRYING A LARGE CHEST. "SHIVER ME TIMBERS!" HE CRIES, "I'VE
  196. BEEN SPOTTED! I'D BEST HIE MESELF OFF TO THE MAZE TO HIDE ME CHEST!"
  197. WITH THAT, HE VANISHES INTO THE GLOOM.
  198. <BLANKLINE>
  199. YOU ARE IN A SECRET N/S CANYON ABOVE A LARGE ROOM.
  200. <BLANKLINE>
  201. >>> go_to(game.chest_room)
  202. DEAD END
  203. <BLANKLINE>
  204. THE PIRATE'S TREASURE CHEST IS HERE!
  205. <BLANKLINE>
  206. If several dwarves throw knives that hit us, does a sensible message result?
  207. >>> restart(room=75, dwarves=True, randoms=(.05,.05,.05,.05,.05,.05))
  208. >>> game.dwarf_stage = 3
  209. >>> for _dwarf in game.dwarves:
  210. ... _dwarf.room = game.rooms[75]
  211. >>> look
  212. THERE ARE 5 THREATENING LITTLE DWARVES IN THE ROOM WITH YOU.
  213. <BLANKLINE>
  214. 5 OF THEM THROW KNIVES AT YOU!
  215. <BLANKLINE>
  216. 5 OF THEM GET YOU!
  217. <BLANKLINE>
  218. OH DEAR, YOU SEEM TO HAVE GOTTEN YOURSELF KILLED. I MIGHT BE ABLE TO
  219. HELP YOU OUT, BUT I'VE NEVER REALLY DONE THIS BEFORE. DO YOU WANT ME
  220. TO TRY TO REINCARNATE YOU?
  221. <BLANKLINE>
  222. If, when a treasure is found, the game figures out that all remaining
  223. treasures are impossible to acquire - like the jewelry in the south side
  224. chamber of the Hall of the Mountain King, if the bird dies before the
  225. snake is driven away - then the lamp should be reduced to only having 35
  226. turns left.
  227. >>> restart()
  228. >>> for t in game.treasures:
  229. ... if t == 'jewelry' or t == 'silver': continue
  230. ... t.drop(game.loc)
  231. >>> quiet(look)
  232. >>> game.bird.carry()
  233. >>> go_to(119)
  234. YOU ARE IN A SECRET CANYON WHICH EXITS TO THE NORTH AND EAST.
  235. <BLANKLINE>
  236. A HUGE GREEN FIERCE DRAGON BARS THE WAY!
  237. <BLANKLINE>
  238. >>> drop(bird)
  239. THE LITTLE BIRD ATTACKS THE GREEN DRAGON, AND IN AN ASTOUNDING FLURRY
  240. GETS BURNT TO A CINDER. THE ASHES BLOW AWAY.
  241. <BLANKLINE>
  242. >>> game.lamp_turns
  243. 326
  244. >>> go_to(28)
  245. YOU ARE IN A LOW N/S PASSAGE AT A HOLE IN THE FLOOR. THE HOLE GOES
  246. DOWN TO AN E/W PASSAGE.
  247. <BLANKLINE>
  248. THERE ARE BARS OF SILVER HERE!
  249. <BLANKLINE>
  250. >>> game.lamp_turns
  251. 35
  252. ----------------------------------
  253. Making sure that hints are offered
  254. ----------------------------------
  255. If you act confused, the game should offer you a hint. Here are quick
  256. (but certainly not thorough!) tests of whether the logic for each hint
  257. allows it to be offered.
  258. >>> restart(room=8)
  259. >>> quiet(look, look)
  260. >>> look
  261. YOU ARE IN A 20-FOOT DEPRESSION FLOORED WITH BARE DIRT. SET INTO THE
  262. DIRT IS A STRONG STEEL GRATE MOUNTED IN CONCRETE. A DRY STREAMBED
  263. LEADS INTO THE DEPRESSION.
  264. <BLANKLINE>
  265. THE GRATE IS LOCKED.
  266. <BLANKLINE>
  267. ARE YOU TRYING TO GET INTO THE CAVE?
  268. <BLANKLINE>
  269. >>> yes
  270. THE GRATE IS VERY SOLID AND HAS A HARDENED STEEL LOCK. YOU CANNOT
  271. ENTER WITHOUT A KEY, AND THERE ARE NO KEYS NEARBY. I WOULD RECOMMEND
  272. LOOKING ELSEWHERE FOR THE KEYS.
  273. <BLANKLINE>
  274. >>> restart(room=13, objects=[rod])
  275. >>> quiet(get(rod), look, look)
  276. >>> get(bird)
  277. THE BIRD WAS UNAFRAID WHEN YOU ENTERED, BUT AS YOU APPROACH IT BECOMES
  278. DISTURBED AND YOU CANNOT CATCH IT.
  279. <BLANKLINE>
  280. ARE YOU TRYING TO CATCH THE BIRD?
  281. <BLANKLINE>
  282. >>> no
  283. OK
  284. <BLANKLINE>
  285. >>> restart(room=19)
  286. >>> quiet(*[ look ] * 6)
  287. >>> look
  288. YOU ARE IN THE HALL OF THE MOUNTAIN KING, WITH PASSAGES OFF IN ALL
  289. DIRECTIONS.
  290. <BLANKLINE>
  291. A HUGE GREEN FIERCE SNAKE BARS THE WAY!
  292. <BLANKLINE>
  293. ARE YOU TRYING TO SOMEHOW DEAL WITH THE SNAKE?
  294. <BLANKLINE>
  295. >>> restart(room=42, objects=[food])
  296. >>> quiet(get(food), s, n)
  297. >>> quiet(*islice(cycle((w, s, n)), 75 - 5))
  298. >>> look
  299. YOU ARE IN A MAZE OF TWISTY LITTLE PASSAGES, ALL ALIKE.
  300. <BLANKLINE>
  301. DO YOU NEED HELP GETTING OUT OF THE MAZE?
  302. <BLANKLINE>
  303. >>> yes
  304. YOU CAN MAKE THE PASSAGES LOOK LESS ALIKE BY DROPPING THINGS.
  305. <BLANKLINE>
  306. >>> quiet(restart(room=99))
  307. >>> quiet([ look ] * (25 - 2))
  308. >>> look
  309. YOU ARE IN AN ALCOVE. A SMALL NW PATH SEEMS TO WIDEN AFTER A SHORT
  310. DISTANCE. AN EXTREMELY TIGHT TUNNEL LEADS EAST. IT LOOKS LIKE A VERY
  311. TIGHT SQUEEZE. AN EERIE LIGHT CAN BE SEEN AT THE OTHER END.
  312. <BLANKLINE>
  313. ARE YOU TRYING TO EXPLORE BEYOND THE PLOVER ROOM?
  314. <BLANKLINE>
  315. >>> quiet(restart(room=108), [ look ] * (20 - 2))
  316. >>> look
  317. YOU ARE AT WITT'S END. PASSAGES LEAD OFF IN *ALL* DIRECTIONS.
  318. <BLANKLINE>
  319. DO YOU NEED HELP GETTING OUT OF HERE?
  320. <BLANKLINE>
  321. ------------------------
  322. Your lamp is getting dim
  323. ------------------------
  324. There is an elaborate set of messages generated for the player as their
  325. lamp starts to grow dim. You can, of course, replentish the lamp using
  326. batteries from the vending machine in the maze.
  327. >>> quiet(restart(room=34))
  328. >>> game.chest.prop = 1
  329. >>> quiet([ look ] * (330 - 30 - 3))
  330. >>> look
  331. YOUR LAMP IS GETTING DIM. YOU'D BEST START WRAPPING THIS UP, UNLESS
  332. YOU CAN FIND SOME FRESH BATTERIES. I SEEM TO RECALL THERE'S A VENDING
  333. MACHINE IN THE MAZE. BRING SOME COINS WITH YOU.
  334. <BLANKLINE>
  335. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  336. <BLANKLINE>
  337. >>> quiet(go_to(30), get(coins))
  338. >>> go_to(140)
  339. DEAD END
  340. <BLANKLINE>
  341. THERE IS A MASSIVE VENDING MACHINE HERE. THE INSTRUCTIONS ON IT READ:
  342. "DROP COINS HERE TO RECEIVE FRESH BATTERIES."
  343. <BLANKLINE>
  344. >>> drop(coins)
  345. THERE ARE FRESH BATTERIES HERE.
  346. <BLANKLINE>
  347. >>> look
  348. YOUR LAMP IS GETTING DIM. I'M TAKING THE LIBERTY OF REPLACING THE
  349. BATTERIES.
  350. <BLANKLINE>
  351. DEAD END
  352. <BLANKLINE>
  353. THERE IS A MASSIVE VENDING MACHINE HERE. THE INSTRUCTIONS ON IT READ:
  354. "DROP COINS HERE TO RECEIVE FRESH BATTERIES."
  355. <BLANKLINE>
  356. SOME WORN-OUT BATTERIES HAVE BEEN DISCARDED NEARBY.
  357. <BLANKLINE>
  358. >>> game.lamp_turns = 31
  359. >>> n
  360. YOUR LAMP IS GETTING DIM, AND YOU'RE OUT OF SPARE BATTERIES. YOU'D
  361. BEST START WRAPPING THIS UP.
  362. <BLANKLINE>
  363. YOU ARE IN A LITTLE MAZE OF TWISTING PASSAGES, ALL DIFFERENT.
  364. <BLANKLINE>
  365. >>> game.lamp_turns = 1
  366. >>> n
  367. YOUR LAMP HAS RUN OUT OF POWER.
  368. <BLANKLINE>
  369. IT IS NOW PITCH DARK. IF YOU PROCEED YOU WILL LIKELY FALL INTO A PIT.
  370. <BLANKLINE>
  371. >>> go_to(5)
  372. YOU'RE IN FOREST.
  373. <BLANKLINE>
  374. >>> w
  375. THERE'S NOT MUCH POINT IN WANDERING AROUND OUT HERE, AND YOU CAN'T
  376. EXPLORE THE CAVE WITHOUT A LAMP. SO LET'S JUST CALL IT A DAY.
  377. <BLANKLINE>
  378. <BLANKLINE>
  379. YOU SCORED 61 OUT OF A POSSIBLE 350 USING 309 TURNS.
  380. <BLANKLINE>
  381. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  382. <BLANKLINE>
  383. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 70 MORE POINTS
  384. <BLANKLINE>
  385. If the batteries are in the user's inventory when replaced, then the old
  386. ones are tossed on the ground rather than remaining in the inventory.
  387. >>> restart(room=30)
  388. >>> quiet(get(coins), go_to(140), drop(coins))
  389. >>> get(batteries)
  390. OK
  391. <BLANKLINE>
  392. >>> game.chest.prop = 1
  393. >>> game.lamp_turns = 30
  394. >>> look
  395. YOUR LAMP IS GETTING DIM. I'M TAKING THE LIBERTY OF REPLACING THE
  396. BATTERIES.
  397. <BLANKLINE>
  398. DEAD END
  399. <BLANKLINE>
  400. THERE IS A MASSIVE VENDING MACHINE HERE. THE INSTRUCTIONS ON IT READ:
  401. "DROP COINS HERE TO RECEIVE FRESH BATTERIES."
  402. <BLANKLINE>
  403. SOME WORN-OUT BATTERIES HAVE BEEN DISCARDED NEARBY.
  404. <BLANKLINE>
  405. Finally, if you leave the batteries in the maze, you are warned to go
  406. back and get them.
  407. >>> quiet(restart(room=34), go_to(30), get(coins), go_to(140), drop(coins), n)
  408. >>> game.lamp_turns = 30
  409. >>> look
  410. YOUR LAMP IS GETTING DIM. YOU'D BEST GO BACK FOR THOSE BATTERIES.
  411. <BLANKLINE>
  412. YOU ARE IN A LITTLE MAZE OF TWISTING PASSAGES, ALL DIFFERENT.
  413. <BLANKLINE>
  414. ----------------------------------
  415. Basic and advanced command parsing
  416. ----------------------------------
  417. Various complaints are associated with poorly-chosen requests.
  418. >>> quiet(restart(room=34))
  419. >>> enter(water)
  420. WHERE?
  421. <BLANKLINE>
  422. >>> quiet(go_to(7))
  423. >>> enter(water)
  424. YOUR FEET ARE NOW WET.
  425. <BLANKLINE>
  426. You can try to enter the house with the 'enter' command instead of just
  427. naming the house.
  428. >>> quiet(restart(room=1))
  429. >>> enter(house)
  430. YOU'RE INSIDE BUILDING.
  431. <BLANKLINE>
  432. THERE ARE SOME KEYS ON THE GROUND HERE.
  433. <BLANKLINE>
  434. THERE IS FOOD HERE.
  435. <BLANKLINE>
  436. THERE IS A BOTTLE OF WATER HERE.
  437. <BLANKLINE>
  438. Both "oil" and "water" can be used as verbs, despite officially being
  439. treated as nouns in the game vocabulary.
  440. >>> restart(room=94)
  441. >>> look
  442. YOU ARE AT ONE END OF AN IMMENSE NORTH/SOUTH PASSAGE.
  443. <BLANKLINE>
  444. THE WAY NORTH IS BARRED BY A MASSIVE, RUSTY, IRON DOOR.
  445. <BLANKLINE>
  446. >>> oil(door)
  447. I SEE NO OIL HERE.
  448. <BLANKLINE>
  449. >>> go_to(25)
  450. YOU'RE IN WEST PIT.
  451. <BLANKLINE>
  452. THERE IS A TINY LITTLE PLANT IN THE PIT, MURMURING "WATER, WATER, ..."
  453. <BLANKLINE>
  454. >>> water(plant)
  455. I SEE NO WATER HERE.
  456. <BLANKLINE>
  457. Various combinations of words yield somewhat sensible retorts; and
  458. several nouns invoke small special cases in the code, like "grate" also
  459. being a movement noun.
  460. >>> restart(room=4, dwarves=True)
  461. >>> look
  462. YOU ARE IN A VALLEY IN THE FOREST BESIDE A STREAM TUMBLING ALONG A
  463. ROCKY BED.
  464. <BLANKLINE>
  465. >>> game.do_command(['eat', 'pray', 'love'])
  466. "I DON'T KNOW THAT WORD.\n\n"
  467. >>> grate
  468. YOU'RE OUTSIDE GRATE.
  469. <BLANKLINE>
  470. THE GRATE IS LOCKED.
  471. <BLANKLINE>
  472. >>> go_to(12)
  473. YOU ARE IN AN AWKWARD SLOPING EAST/WEST CANYON.
  474. <BLANKLINE>
  475. >>> grate
  476. YOU'RE BELOW THE GRATE.
  477. <BLANKLINE>
  478. THE GRATE IS LOCKED.
  479. <BLANKLINE>
  480. >>> carry(dwarf)
  481. I SEE NO DWARF HERE.
  482. <BLANKLINE>
  483. >>> quiet(go_to(3))
  484. >>> get(water)
  485. OK
  486. <BLANKLINE>
  487. >>> inventory
  488. YOU ARE CURRENTLY HOLDING THE FOLLOWING:
  489. <BLANKLINE>
  490. BRASS LANTERN
  491. SMALL BOTTLE
  492. WATER IN THE BOTTLE
  493. <BLANKLINE>
  494. >>> get(knife)
  495. I SEE NO KNIFE HERE.
  496. <BLANKLINE>
  497. >>> game.dwarf_stage = 2
  498. >>> go_to(27)
  499. THERE IS A THREATENING LITTLE DWARF IN THE ROOM WITH YOU!
  500. <BLANKLINE>
  501. ONE SHARP NASTY KNIFE IS THROWN AT YOU!
  502. <BLANKLINE>
  503. IT MISSES!
  504. <BLANKLINE>
  505. YOU ARE ON THE WEST SIDE OF THE FISSURE IN THE HALL OF MISTS.
  506. <BLANKLINE>
  507. THERE ARE DIAMONDS HERE!
  508. <BLANKLINE>
  509. >>> get(knife)
  510. THE DWARVES' KNIVES VANISH AS THEY STRIKE THE WALLS OF THE CAVE.
  511. <BLANKLINE>
  512. >>> get(knife)
  513. I SEE NO KNIFE HERE.
  514. <BLANKLINE>
  515. >>> find(jewelry)
  516. I CAN ONLY TELL YOU WHAT YOU SEE AS YOU MOVE ABOUT AND MANIPULATE
  517. THINGS. I CANNOT TELL YOU WHERE REMOTE THINGS ARE.
  518. <BLANKLINE>
  519. >>> lamp
  520. WHAT DO YOU WANT TO DO WITH THE LAMP?
  521. <BLANKLINE>
  522. >>> quiet(restart(randoms=(None, 0.1, None, 0.3, None, 0.9)))
  523. >>> carry(pour)
  524. I DON'T KNOW THAT WORD.
  525. <BLANKLINE>
  526. >>> jump(eat)
  527. I DON'T UNDERSTAND THAT!
  528. <BLANKLINE>
  529. >>> throw(drop)
  530. WHAT?
  531. <BLANKLINE>
  532. ---------------
  533. Special motions
  534. ---------------
  535. The "back" movement command has to handle several special cases, in case
  536. the previous location was an intermediate "forced" room, or if it simply
  537. cannot figure out how to return you to the previous location.
  538. >>> quiet(restart(room=65, randoms=(None, None, 0.001,)))
  539. >>> n
  540. YOU HAVE CRAWLED AROUND IN SOME LITTLE HOLES AND WOUND UP BACK IN THE
  541. MAIN PASSAGE.
  542. <BLANKLINE>
  543. YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE.
  544. TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN.
  545. <BLANKLINE>
  546. >>> back
  547. SORRY, BUT I NO LONGER SEEM TO REMEMBER HOW IT WAS YOU GOT HERE.
  548. <BLANKLINE>
  549. YOU ARE IN BEDQUILT, A LONG EAST/WEST PASSAGE WITH HOLES EVERYWHERE.
  550. TO EXPLORE AT RANDOM SELECT NORTH, SOUTH, UP, OR DOWN.
  551. <BLANKLINE>
  552. While testing "back" on the beanstalk, we also test for whether we can
  553. run a command like "get" on the plant as seen from outside the pits.
  554. >>> quiet(restart(), get(bottle), go_to(25), pour(water))
  555. >>> quiet(go_to(113), get(water), go_to(25), pour(water))
  556. >>> go_to(88)
  557. YOU'RE IN NARROW CORRIDOR.
  558. <BLANKLINE>
  559. >>> d
  560. YOU'RE IN WEST PIT.
  561. <BLANKLINE>
  562. THERE IS A GIGANTIC BEANSTALK STRETCHING ALL THE WAY UP TO THE HOLE.
  563. <BLANKLINE>
  564. >>> back
  565. YOU CLAMBER UP THE PLANT AND SCURRY THROUGH THE HOLE AT THE TOP.
  566. <BLANKLINE>
  567. YOU'RE IN NARROW CORRIDOR.
  568. <BLANKLINE>
  569. >>> go_to(23)
  570. YOU'RE AT WEST END OF TWOPIT ROOM.
  571. <BLANKLINE>
  572. THERE IS A HUGE BEANSTALK GROWING OUT OF THE WEST PIT UP TO THE HOLE.
  573. <BLANKLINE>
  574. >>> find(beanstalk)
  575. I BELIEVE WHAT YOU WANT IS RIGHT HERE WITH YOU.
  576. <BLANKLINE>
  577. >>> go_to(67)
  578. YOU'RE AT EAST END OF TWOPIT ROOM.
  579. <BLANKLINE>
  580. THERE IS A HUGE BEANSTALK GROWING OUT OF THE WEST PIT UP TO THE HOLE.
  581. <BLANKLINE>
  582. >>> go_to(91)
  583. YOU'RE AT STEEP INCLINE ABOVE LARGE ROOM.
  584. <BLANKLINE>
  585. >>> d
  586. YOU ARE IN A LARGE LOW ROOM. CRAWLS LEAD NORTH, SE, AND SW.
  587. <BLANKLINE>
  588. >>> back
  589. YOU CAN'T GET THERE FROM HERE.
  590. <BLANKLINE>
  591. YOU ARE IN A LARGE LOW ROOM. CRAWLS LEAD NORTH, SE, AND SW.
  592. <BLANKLINE>
  593. If the player tries walking back across the troll bridge while still
  594. carrying the bear, then disaster strikes: the bridge breaks beneath
  595. them, and both player and bear wind up dead at the bottom of the pit.
  596. But the game shows a bit of elegance, and refuses to strand the player's
  597. belongings out of reach, either at the pit bottom or where they were
  598. last standing on the far side of the troll bridge - since without the
  599. bridge, the items would be permanently lost! (We also try feeding the
  600. bear a few times, to test some special cases in the feed() logic while
  601. we are at it.)
  602. >>> quiet(restart(), get(keys), go_to(123))
  603. >>> game.bear.carry()
  604. >>> game.bear.prop = 2
  605. >>> game.bear.is_fixed = False
  606. >>> w
  607. YOU ARE BEING FOLLOWED BY A VERY LARGE, TAME BEAR.
  608. <BLANKLINE>
  609. YOU'RE ON NE SIDE OF CHASM.
  610. <BLANKLINE>
  611. A RICKETY WOODEN BRIDGE EXTENDS ACROSS THE CHASM, VANISHING INTO THE
  612. MIST. A SIGN POSTED ON THE BRIDGE READS, "STOP! PAY TROLL!"
  613. <BLANKLINE>
  614. A BURLY TROLL STANDS BY THE BRIDGE AND INSISTS YOU THROW HIM A
  615. TREASURE BEFORE YOU MAY CROSS.
  616. <BLANKLINE>
  617. >>> drop(bear)
  618. THE BEAR LUMBERS TOWARD THE TROLL, WHO LETS OUT A STARTLED SHRIEK AND
  619. SCURRIES AWAY. THE BEAR SOON GIVES UP THE PURSUIT AND WANDERS BACK.
  620. <BLANKLINE>
  621. >>> feed(bear)
  622. THERE IS NOTHING HERE TO EAT.
  623. <BLANKLINE>
  624. >>> get(bear)
  625. OK
  626. <BLANKLINE>
  627. >>> sw
  628. JUST AS YOU REACH THE OTHER SIDE, THE BRIDGE BUCKLES BENEATH THE
  629. WEIGHT OF THE BEAR, WHICH WAS STILL FOLLOWING YOU AROUND. YOU
  630. SCRABBLE DESPERATELY FOR SUPPORT, BUT AS THE BRIDGE COLLAPSES YOU
  631. STUMBLE BACK AND FALL INTO THE CHASM.
  632. <BLANKLINE>
  633. OH DEAR, YOU SEEM TO HAVE GOTTEN YOURSELF KILLED. I MIGHT BE ABLE TO
  634. HELP YOU OUT, BUT I'VE NEVER REALLY DONE THIS BEFORE. DO YOU WANT ME
  635. TO TRY TO REINCARNATE YOU?
  636. <BLANKLINE>
  637. >>> quiet(yes, leave, get(lamp), on)
  638. >>> go_to(117)
  639. YOU'RE ON SW SIDE OF CHASM.
  640. <BLANKLINE>
  641. THERE ARE SOME KEYS ON THE GROUND HERE.
  642. <BLANKLINE>
  643. THE WRECKAGE OF A BRIDGE (AND A DEAD BEAR) CAN BE SEEN AT THE BOTTOM
  644. OF THE CHASM.
  645. <BLANKLINE>
  646. THE TROLL IS NOWHERE TO BE SEEN.
  647. <BLANKLINE>
  648. >>> feed(bear)
  649. DON'T BE RIDICULOUS!
  650. <BLANKLINE>
  651. Several motion words elicit special messages when they do not apply.
  652. >>> quiet(restart(room=34))
  653. >>> onward
  654. I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR NEARBY OBJECTS.
  655. <BLANKLINE>
  656. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  657. <BLANKLINE>
  658. >>> left
  659. I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR NEARBY OBJECTS.
  660. <BLANKLINE>
  661. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  662. <BLANKLINE>
  663. >>> right
  664. I AM UNSURE HOW YOU ARE FACING. USE COMPASS POINTS OR NEARBY OBJECTS.
  665. <BLANKLINE>
  666. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  667. <BLANKLINE>
  668. >>> leave
  669. I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME SOMETHING
  670. IN THE GENERAL DIRECTION YOU WANT TO GO.
  671. <BLANKLINE>
  672. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  673. <BLANKLINE>
  674. >>> inward
  675. I DON'T KNOW IN FROM OUT HERE. USE COMPASS POINTS OR NAME SOMETHING
  676. IN THE GENERAL DIRECTION YOU WANT TO GO.
  677. <BLANKLINE>
  678. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  679. <BLANKLINE>
  680. >>> xyzzy
  681. NOTHING HAPPENS.
  682. <BLANKLINE>
  683. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  684. <BLANKLINE>
  685. >>> plugh
  686. NOTHING HAPPENS.
  687. <BLANKLINE>
  688. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  689. <BLANKLINE>
  690. >>> crawl
  691. WHICH WAY?
  692. <BLANKLINE>
  693. YOU ARE IN A JUMBLE OF ROCK, WITH CRACKS EVERYWHERE.
  694. <BLANKLINE>
  695. ---------------
  696. Verb edge cases
  697. ---------------
  698. And now, we exercise dozens of fiddly edge cases for verbs.
  699. >>> quiet(restart())
  700. >>> carry # ambiguous in the face of several objects
  701. CARRY WHAT?
  702. <BLANKLINE>
  703. >>> quiet(restart(room=25))
  704. >>> get(plant)
  705. THE PLANT HAS EXCEPTIONALLY DEEP ROOTS AND CANNOT BE PULLED FREE.
  706. <BLANKLINE>
  707. >>> quiet(restart(), go_to(24))
  708. >>> get(oil)
  709. YOU HAVE NOTHING IN WHICH TO CARRY IT.
  710. <BLANKLINE>
  711. >>> quiet(go_to(3), get(bottle), go_to(24))
  712. >>> get(oil)
  713. YOUR BOTTLE IS ALREADY FULL.
  714. <BLANKLINE>
  715. >>> get(bottle)
  716. YOU ARE ALREADY CARRYING IT!
  717. <BLANKLINE>
  718. >>> drop(oil)
  719. YOU AREN'T CARRYING IT!
  720. <BLANKLINE>
  721. >>> drop(water)
  722. OK
  723. <BLANKLINE>
  724. >>> look
  725. YOU ARE AT THE BOTTOM OF THE EASTERN PIT IN THE TWOPIT ROOM. THERE IS
  726. A SMALL POOL OF OIL IN ONE CORNER OF THE PIT.
  727. <BLANKLINE>
  728. THERE IS A BOTTLE OF WATER HERE.
  729. <BLANKLINE>
  730. >>> restart(room=94, objects=[clam])
  731. >>> look
  732. YOU ARE AT ONE END OF AN IMMENSE NORTH/SOUTH PASSAGE.
  733. <BLANKLINE>
  734. THE WAY NORTH IS BARRED BY A MASSIVE, RUSTY, IRON DOOR.
  735. <BLANKLINE>
  736. THERE IS AN ENORMOUS CLAM HERE WITH ITS SHELL TIGHTLY CLOSED.
  737. <BLANKLINE>
  738. >>> unlock # two unlockable objects are present
  739. UNLOCK WHAT?
  740. <BLANKLINE>
  741. >>> quiet(s)
  742. >>> unlock # no unlockable objects also cause a problem
  743. THERE IS NOTHING HERE WITH A LOCK!
  744. <BLANKLINE>
  745. >>> restart(room=103, objects=[trident])
  746. >>> lock(clam)
  747. WHAT?
  748. <BLANKLINE>
  749. >>> quiet(get(clam), get(trident))
  750. >>> unlock
  751. I ADVISE YOU TO PUT DOWN THE CLAM BEFORE OPENING IT. >STRAIN!<
  752. <BLANKLINE>
  753. >>> quiet(drop(clam))
  754. >>> unlock
  755. A GLISTENING PEARL FALLS OUT OF THE CLAM AND ROLLS AWAY. GOODNESS,
  756. THIS MUST REALLY BE AN OYSTER. (I NEVER WAS VERY GOOD AT IDENTIFYING
  757. BIVALVES.) WHATEVER IT IS, IT HAS NOW SNAPPED SHUT AGAIN.
  758. <BLANKLINE>
  759. >>> unlock
  760. THE OYSTER CREAKS OPEN, REVEALING NOTHING BUT OYSTER INSIDE. IT
  761. PROMPTLY SNAPS SHUT AGAIN.
  762. <BLANKLINE>
  763. >>> restart(room=94)
  764. >>> look
  765. YOU ARE AT ONE END OF AN IMMENSE NORTH/SOUTH PASSAGE.
  766. <BLANKLINE>
  767. THE WAY NORTH IS BARRED BY A MASSIVE, RUSTY, IRON DOOR.
  768. <BLANKLINE>
  769. >>> unlock
  770. THE DOOR IS EXTREMELY RUSTY AND REFUSES TO OPEN.
  771. <BLANKLINE>
  772. >>> restart()
  773. >>> unlock(keys)
  774. YOU CAN'T UNLOCK THE KEYS.
  775. <BLANKLINE>
  776. >>> quiet(get(keys), get(food), go_to(10))
  777. >>> unlock(cage)
  778. IT HAS NO LOCK.
  779. <BLANKLINE>
  780. >>> quiet(go_to(130))
  781. >>> lock(chain)
  782. IT WAS ALREADY LOCKED.
  783. <BLANKLINE>
  784. >>> unlock(chain)
  785. THERE IS NO WAY TO GET PAST THE BEAR TO UNLOCK THE CHAIN, WHICH IS
  786. PROBABLY JUST AS WELL.
  787. <BLANKLINE>
  788. >>> quiet(throw(food), unlock(chain))
  789. >>> unlock(chain)
  790. IT WAS ALREADY UNLOCKED.
  791. <BLANKLINE>
  792. >>> quiet(get(chain), w)
  793. >>> lock(chain)
  794. THERE IS NOTHING HERE TO WHICH THE CHAIN CAN BE LOCKED.
  795. <BLANKLINE>
  796. >>> quiet(e)
  797. >>> lock(chain)
  798. THE CHAIN IS NOW LOCKED.
  799. <BLANKLINE>
  800. >>> get(chain)
  801. THE CHAIN IS STILL LOCKED.
  802. <BLANKLINE>
  803. >>> lock(bear)
  804. I DON'T KNOW HOW TO LOCK OR UNLOCK SUCH A THING.
  805. <BLANKLINE>
  806. >>> restart()
  807. >>> off
  808. YOUR LAMP IS NOW OFF.
  809. <BLANKLINE>
  810. >>> quiet(drop(lamp), leave)
  811. >>> on
  812. YOU HAVE NO SOURCE OF LIGHT.
  813. <BLANKLINE>
  814. >>> off
  815. YOU HAVE NO SOURCE OF LIGHT.
  816. <BLANKLINE>
  817. >>> quiet(enter, get(lamp), on, plugh)
  818. >>> off
  819. YOUR LAMP IS NOW OFF.
  820. <BLANKLINE>
  821. IT IS NOW PITCH DARK. IF YOU PROCEED YOU WILL LIKELY FALL INTO A PIT.
  822. <BLANKLINE>
  823. >>> quiet(on)
  824. >>> game.lamp_turns = 2
  825. >>> quiet(look)
  826. >>> look
  827. YOUR LAMP HAS RUN OUT OF POWER.
  828. <BLANKLINE>
  829. IT IS NOW PITCH DARK. IF YOU PROCEED YOU WILL LIKELY FALL INTO A PIT.
  830. <BLANKLINE>
  831. >>> on
  832. YOUR LAMP HAS RUN OUT OF POWER.
  833. <BLANKLINE>
  834. >>> restart()
  835. >>> wave(lamp)
  836. NOTHING HAPPENS.
  837. <BLANKLINE>
  838. >>> wave(keys)
  839. YOU AREN'T CARRYING IT!
  840. <BLANKLINE>
  841. The "attack" verb is a particularly long test, because its intransitive
  842. form works hard to determine - in two stages, focusing first on real
  843. enemies and then on some harmless objects - what on earth you could
  844. possibly be designating as a target.
  845. >>> restart(dwarves=True)
  846. >>> attack
  847. THERE IS NOTHING HERE TO ATTACK.
  848. <BLANKLINE>
  849. >>> quiet(go_to(117))
  850. >>> attack
  851. TROLLS ARE CLOSE RELATIVES WITH THE ROCKS AND HAVE SKIN AS TOUGH AS
  852. THAT OF A RHINOCEROS. THE TROLL FENDS OFF YOUR BLOWS EFFORTLESSLY.
  853. <BLANKLINE>
  854. >>> game.dwarf_stage = 2
  855. >>> game.dwarves[0].room = game.loc
  856. >>> attack # now there are two choices: dwarf and troll
  857. ATTACK WHAT?
  858. <BLANKLINE>
  859. >>> attack(dwarf)
  860. WITH WHAT? YOUR BARE HANDS?
  861. <BLANKLINE>
  862. >>> quiet(go_to(103), get(clam), go_to(13))
  863. >>> attack # cannot decide between oyster and bird
  864. ATTACK WHAT?
  865. <BLANKLINE>
  866. >>> quiet(w, drop(clam), e)
  867. >>> attack
  868. THE LITTLE BIRD IS NOW DEAD. ITS BODY DISAPPEARS.
  869. <BLANKLINE>
  870. >>> look # make sure the bird is really gone
  871. YOU ARE IN A SPLENDID CHAMBER THIRTY FEET HIGH. THE WALLS ARE FROZEN
  872. RIVERS OF ORANGE STONE. AN AWKWARD CANYON AND A GOOD PASSAGE EXIT
  873. FROM EAST AND WEST SIDES OF THE CHAMBER.
  874. <BLANKLINE>
  875. >>> quiet(w)
  876. >>> attack
  877. THE SHELL IS VERY STRONG AND IS IMPERVIOUS TO ATTACK.
  878. <BLANKLINE>
  879. >>> quiet(go_to(119))
  880. >>> attack(dragon)
  881. WITH WHAT? YOUR BARE HANDS?
  882. <BLANKLINE>
  883. >>> quiet(yes)
  884. >>> attack(dragon)
  885. FOR CRYING OUT LOUD, THE POOR THING IS ALREADY DEAD!
  886. <BLANKLINE>
  887. >>> quiet(restart(), get(bottle))
  888. >>> pour
  889. YOUR BOTTLE IS EMPTY AND THE GROUND IS WET.
  890. <BLANKLINE>
  891. >>> pour
  892. POUR WHAT?
  893. <BLANKLINE>
  894. >>> quiet(go_to(24), get(oil), go_to(25))
  895. >>> pour(bottle)
  896. THE PLANT INDIGNANTLY SHAKES THE OIL OFF ITS LEAVES AND ASKS, "WATER?"
  897. <BLANKLINE>
  898. >>> quiet(go_to(24), get(oil))
  899. >>> pour
  900. YOUR BOTTLE IS EMPTY AND THE GROUND IS WET.
  901. <BLANKLINE>
  902. >>> pour(oil)
  903. YOU AREN'T CARRYING IT!
  904. <BLANKLINE>
  905. >>> pour(lamp)
  906. YOU CAN'T POUR THAT.
  907. <BLANKLINE>
  908. >>> restart()
  909. >>> eat
  910. THANK YOU, IT WAS DELICIOUS!
  911. <BLANKLINE>
  912. >>> eat
  913. EAT WHAT?
  914. <BLANKLINE>
  915. >>> quiet(go_to(13))
  916. >>> eat(bird)
  917. I THINK I JUST LOST MY APPETITE.
  918. <BLANKLINE>
  919. >>> quiet(e, e)
  920. >>> eat(rod)
  921. DON'T BE RIDICULOUS!
  922. <BLANKLINE>
  923. >>> quiet(restart(), get(bottle), leave, w)
  924. >>> drink
  925. THE BOTTLE OF WATER IS NOW EMPTY.
  926. <BLANKLINE>
  927. >>> drink
  928. DRINK WHAT?
  929. <BLANKLINE>
  930. >>> drink(lamp)
  931. DON'T BE RIDICULOUS!
  932. <BLANKLINE>
  933. >>> quiet(restart())
  934. >>> rub(lamp)
  935. RUBBING THE ELECTRIC LAMP IS NOT PARTICULARLY REWARDING. ANYWAY,
  936. NOTHING EXCITING HAPPENS.
  937. <BLANKLINE>
  938. >>> rub(bottle)
  939. I THINK I JUST LOST MY APPETITE.
  940. <BLANKLINE>
  941. >>> quiet(restart(objects=[axe]), get(axe))
  942. >>> throw(food)
  943. YOU AREN'T CARRYING IT!
  944. <BLANKLINE>
  945. >>> quiet(get(food), leave)
  946. >>> throw(lamp)
  947. OK
  948. <BLANKLINE>
  949. >>> look
  950. YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.
  951. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND
  952. DOWN A GULLY.
  953. <BLANKLINE>
  954. THERE IS A LAMP SHINING NEARBY.
  955. <BLANKLINE>
  956. >>> quiet(get(lamp), go_to(130))
  957. >>> throw(axe)
  958. THE AXE MISSES AND LANDS NEAR THE BEAR WHERE YOU CAN'T GET AT IT.
  959. <BLANKLINE>
  960. >>> get(axe)
  961. YOU CAN'T BE SERIOUS!
  962. <BLANKLINE>
  963. >>> throw(food)
  964. THE BEAR EAGERLY WOLFS DOWN YOUR FOOD, AFTER WHICH HE SEEMS TO CALM
  965. DOWN CONSIDERABLY AND EVEN BECOMES RATHER FRIENDLY.
  966. <BLANKLINE>
  967. >>> get(axe)
  968. OK
  969. <BLANKLINE>
  970. >>> quiet(leave)
  971. >>> throw(axe)
  972. THERE IS NOTHING HERE TO ATTACK.
  973. <BLANKLINE>
  974. >>> restart()
  975. >>> quit()
  976. DO YOU REALLY WANT TO QUIT NOW?
  977. <BLANKLINE>
  978. >>> no
  979. OK
  980. <BLANKLINE>
  981. >>> quit()
  982. DO YOU REALLY WANT TO QUIT NOW?
  983. <BLANKLINE>
  984. >>> yes
  985. OK
  986. <BLANKLINE>
  987. <BLANKLINE>
  988. YOU SCORED 61 OUT OF A POSSIBLE 350 USING 7 TURNS.
  989. <BLANKLINE>
  990. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  991. <BLANKLINE>
  992. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 70 MORE POINTS
  993. <BLANKLINE>
  994. >>> restart()
  995. >>> find(lamp)
  996. YOU ARE ALREADY CARRYING IT!
  997. <BLANKLINE>
  998. >>> find(keys)
  999. I BELIEVE WHAT YOU WANT IS RIGHT HERE WITH YOU.
  1000. <BLANKLINE>
  1001. >>> quiet(restart(), get(food), get(keys), go_to(130), throw(food), unlock)
  1002. >>> get(bear)
  1003. OK
  1004. <BLANKLINE>
  1005. >>> inventory
  1006. YOU ARE CURRENTLY HOLDING THE FOLLOWING:
  1007. <BLANKLINE>
  1008. SET OF KEYS
  1009. BRASS LANTERN
  1010. YOU ARE BEING FOLLOWED BY A VERY LARGE, TAME BEAR.
  1011. <BLANKLINE>
  1012. >>> quiet(restart(dwarves=True), go_to(10), get(cage), go_to(13))
  1013. >>> feed(bird)
  1014. IT'S NOT HUNGRY (IT'S MERELY PININ' FOR THE FJORDS). BESIDES, YOU
  1015. HAVE NO BIRD SEED.
  1016. <BLANKLINE>
  1017. >>> quiet(get(bird), go_to(117))
  1018. >>> feed(troll)
  1019. GLUTTONY IS NOT ONE OF THE TROLL'S VICES. AVARICE, HOWEVER, IS.
  1020. <BLANKLINE>
  1021. >>> quiet(go_to(119))
  1022. >>> feed(dragon)
  1023. THERE'S NOTHING HERE IT WANTS TO EAT (EXCEPT PERHAPS YOU).
  1024. <BLANKLINE>
  1025. >>> quiet(kill(dragon), yes)
  1026. >>> feed(dragon)
  1027. DON'T BE RIDICULOUS!
  1028. <BLANKLINE>
  1029. >>> quiet(go_to(19))
  1030. >>> feed(snake)
  1031. THE SNAKE HAS NOW DEVOURED YOUR BIRD.
  1032. <BLANKLINE>
  1033. >>> feed(snake)
  1034. THERE'S NOTHING HERE IT WANTS TO EAT (EXCEPT PERHAPS YOU).
  1035. <BLANKLINE>
  1036. >>> game.dwarf_stage = 2
  1037. >>> quiet(look)
  1038. >>> feed(dwarf)
  1039. THERE IS NOTHING HERE TO EAT.
  1040. <BLANKLINE>
  1041. >>> game.food.drop(game.loc)
  1042. >>> feed(dwarf)
  1043. YOU FOOL, DWARVES EAT ONLY COAL! NOW YOU'VE MADE HIM *REALLY* MAD!!
  1044. <BLANKLINE>
  1045. >>> quiet(go_to(129), drop(food), e)
  1046. >>> feed(bear)
  1047. THERE'S NOTHING HERE IT WANTS TO EAT (EXCEPT PERHAPS YOU).
  1048. <BLANKLINE>
  1049. >>> feed(chain)
  1050. I'M GAME. WOULD YOU CARE TO EXPLAIN HOW?
  1051. <BLANKLINE>
  1052. >>> quiet(restart(), get(bottle), drink)
  1053. >>> fill
  1054. YOUR BOTTLE IS NOW FULL OF WATER.
  1055. <BLANKLINE>
  1056. >>> fill
  1057. YOUR BOTTLE IS ALREADY FULL.
  1058. <BLANKLINE>
  1059. >>> quiet(drink, plugh)
  1060. >>> fill
  1061. THERE IS NOTHING HERE WITH WHICH TO FILL THE BOTTLE.
  1062. <BLANKLINE>
  1063. >>> quiet(drop(bottle), go_to(97))
  1064. >>> fill(vase)
  1065. YOU CAN'T FILL THAT.
  1066. <BLANKLINE>
  1067. >>> quiet(get(vase))
  1068. >>> fill(vase)
  1069. THERE IS NOTHING HERE WITH WHICH TO FILL THE VASE.
  1070. <BLANKLINE>
  1071. >>> quiet(go_to(38))
  1072. >>> fill(vase)
  1073. THE SUDDEN CHANGE IN TEMPERATURE HAS DELICATELY SHATTERED THE VASE.
  1074. <BLANKLINE>
  1075. >>> look
  1076. YOU ARE IN THE BOTTOM OF A SMALL PIT WITH A LITTLE STREAM, WHICH
  1077. ENTERS AND EXITS THROUGH TINY SLITS.
  1078. <BLANKLINE>
  1079. THE FLOOR IS LITTERED WITH WORTHLESS SHARDS OF POTTERY.
  1080. <BLANKLINE>
  1081. >>> get(vase)
  1082. YOU CAN'T BE SERIOUS!
  1083. <BLANKLINE>
  1084. >>> fill(lamp)
  1085. YOU CAN'T FILL THAT.
  1086. <BLANKLINE>
  1087. >>> fill
  1088. FILL WHAT?
  1089. <BLANKLINE>
  1090. >>> restart()
  1091. >>> blast
  1092. BLASTING REQUIRES DYNAMITE.
  1093. <BLANKLINE>
  1094. >>> restart()
  1095. >>> score
  1096. IF YOU WERE TO QUIT NOW, YOU WOULD SCORE 57 OUT OF A POSSIBLE 350.
  1097. <BLANKLINE>
  1098. DO YOU INDEED WISH TO QUIT NOW?
  1099. <BLANKLINE>
  1100. >>> yes
  1101. OK
  1102. <BLANKLINE>
  1103. <BLANKLINE>
  1104. YOU SCORED 61 OUT OF A POSSIBLE 350 USING 6 TURNS.
  1105. <BLANKLINE>
  1106. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1107. <BLANKLINE>
  1108. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 70 MORE POINTS
  1109. <BLANKLINE>
  1110. >>> quiet(restart(), go_to(92), fee, fie, foe)
  1111. >>> foo # does nothing obvious since the eggs are here
  1112. OK
  1113. <BLANKLINE>
  1114. >>> quiet(get(eggs), go_to(117))
  1115. >>> throw(eggs)
  1116. THE TROLL CATCHES YOUR TREASURE AND SCURRIES AWAY OUT OF SIGHT.
  1117. <BLANKLINE>
  1118. >>> quiet(fee, fie, foe)
  1119. >>> foo
  1120. DONE!
  1121. <BLANKLINE>
  1122. >>> cross # troll does not wait for us to cross!
  1123. THE TROLL STEPS OUT FROM BENEATH THE BRIDGE AND BLOCKS YOUR WAY.
  1124. <BLANKLINE>
  1125. YOU'RE ON SW SIDE OF CHASM.
  1126. <BLANKLINE>
  1127. A RICKETY WOODEN BRIDGE EXTENDS ACROSS THE CHASM, VANISHING INTO THE
  1128. MIST. A SIGN POSTED ON THE BRIDGE READS, "STOP! PAY TROLL!"
  1129. <BLANKLINE>
  1130. A BURLY TROLL STANDS BY THE BRIDGE AND INSISTS YOU THROW HIM A
  1131. TREASURE BEFORE YOU MAY CROSS.
  1132. <BLANKLINE>
  1133. >>> quiet(restart(), go_to(106))
  1134. >>> read
  1135. I'M AFRAID THE MAGAZINE IS WRITTEN IN DWARVISH.
  1136. <BLANKLINE>
  1137. >>> quiet(off)
  1138. >>> read(magazine)
  1139. I SEE NO MAGAZINE HERE.
  1140. <BLANKLINE>
  1141. >>> quiet(on, get(magazine), go_to(101))
  1142. >>> read # confused by two choices
  1143. READ WHAT?
  1144. <BLANKLINE>
  1145. >>> read(tablet)
  1146. "CONGRATULATIONS ON BRINGING LIGHT INTO THE DARK-ROOM!"
  1147. <BLANKLINE>
  1148. >>> quiet(go_to(95), get(trident), go_to(103), unlock(clam), get(oyster))
  1149. >>> read(oyster)
  1150. HMMM, THIS LOOKS LIKE A CLUE, WHICH MEANS IT'LL COST YOU 10 POINTS TO
  1151. READ IT. SHOULD I GO AHEAD AND READ IT ANYWAY?
  1152. <BLANKLINE>
  1153. >>> yes
  1154. IT SAYS, "THERE IS SOMETHING STRANGE ABOUT THIS PLACE, SUCH THAT ONE
  1155. OF THE WORDS I'VE ALWAYS KNOWN NOW HAS A NEW EFFECT."
  1156. <BLANKLINE>
  1157. >>> read(oyster)
  1158. IT SAYS THE SAME THING IT DID BEFORE.
  1159. <BLANKLINE>
  1160. >>> quiet(go_to(29), get(gold), go_to(112))
  1161. >>> game.pirate.room = game.rooms[112]
  1162. >>> look
  1163. OUT FROM THE SHADOWS BEHIND YOU POUNCES A BEARDED PIRATE! "HAR, HAR,"
  1164. HE CHORTLES, "I'LL JUST TAKE ALL THIS BOOTY AND HIDE IT AWAY WITH ME
  1165. CHEST DEEP IN THE MAZE!" HE SNATCHES YOUR TREASURE AND VANISHES INTO
  1166. THE GLOOM.
  1167. <BLANKLINE>
  1168. YOU ARE IN A LITTLE MAZE OF TWISTING PASSAGES, ALL DIFFERENT.
  1169. <BLANKLINE>
  1170. >>> s
  1171. DEAD END
  1172. <BLANKLINE>
  1173. THERE IS A MESSAGE SCRAWLED IN THE DUST IN A FLOWERY SCRIPT, READING:
  1174. "THIS IS NOT THE MAZE WHERE THE PIRATE LEAVES HIS TREASURE CHEST."
  1175. <BLANKLINE>
  1176. THERE IS A MASSIVE VENDING MACHINE HERE. THE INSTRUCTIONS ON IT READ:
  1177. "DROP COINS HERE TO RECEIVE FRESH BATTERIES."
  1178. <BLANKLINE>
  1179. >>> read(message)
  1180. "THIS IS NOT THE MAZE WHERE THE PIRATE LEAVES HIS TREASURE CHEST."
  1181. <BLANKLINE>
  1182. >>> read(lamp)
  1183. I'M AFRAID I DON'T UNDERSTAND.
  1184. <BLANKLINE>
  1185. >>> quiet(restart(), go_to(97))
  1186. >>> smash(vase)
  1187. YOU HAVE TAKEN THE VASE AND HURLED IT DELICATELY TO THE GROUND.
  1188. <BLANKLINE>
  1189. >>> get(vase)
  1190. YOU CAN'T BE SERIOUS!
  1191. <BLANKLINE>
  1192. >>> quiet(restart(), go_to(97))
  1193. >>> get(vase) # can we also break it while carrying it?
  1194. OK
  1195. <BLANKLINE>
  1196. >>> smash(vase)
  1197. YOU HAVE TAKEN THE VASE AND HURLED IT DELICATELY TO THE GROUND.
  1198. <BLANKLINE>
  1199. >>> inventory
  1200. YOU ARE CURRENTLY HOLDING THE FOLLOWING:
  1201. <BLANKLINE>
  1202. BRASS LANTERN
  1203. <BLANKLINE>
  1204. >>> look
  1205. THIS IS THE ORIENTAL ROOM. ANCIENT ORIENTAL CAVE DRAWINGS COVER THE
  1206. WALLS. A GENTLY SLOPING PASSAGE LEADS UPWARD TO THE NORTH, ANOTHER
  1207. PASSAGE LEADS SE, AND A HANDS AND KNEES CRAWL LEADS WEST.
  1208. <BLANKLINE>
  1209. THE FLOOR IS LITTERED WITH WORTHLESS SHARDS OF POTTERY.
  1210. <BLANKLINE>
  1211. >>> quiet(go_to(109))
  1212. >>> smash(mirror)
  1213. IT IS TOO FAR UP FOR YOU TO REACH.
  1214. <BLANKLINE>
  1215. >>> smash(lamp)
  1216. IT IS BEYOND YOUR POWER TO DO THAT.
  1217. <BLANKLINE>
  1218. >>> quiet(restart())
  1219. >>> wake(keys)
  1220. DON'T BE RIDICULOUS!
  1221. <BLANKLINE>
  1222. >>> quiet(restart())
  1223. >>> suspend
  1224. PROVIDE "SUSPEND" WITH A FILENAME OR OPEN FILE
  1225. <BLANKLINE>
  1226. ----------------
  1227. Closing the cave
  1228. ----------------
  1229. Finally, there are a few situations we need to test that relate
  1230. specifically to the end-game. For example, dying while the cave is
  1231. closing causes a very abrupt ending to the game.
  1232. >>> quiet(restart(), drop(lamp), go_to(13))
  1233. >>> game.is_closing = 1
  1234. >>> game.start_closing_cave()
  1235. >>> w
  1236. YOU FELL INTO A PIT AND BROKE EVERY BONE IN YOUR BODY!
  1237. <BLANKLINE>
  1238. IT LOOKS AS THOUGH YOU'RE DEAD. WELL, SEEING AS HOW IT'S SO CLOSE TO
  1239. CLOSING TIME ANYWAY, I THINK WE'LL JUST CALL IT A DAY.
  1240. <BLANKLINE>
  1241. <BLANKLINE>
  1242. YOU SCORED 78 OUT OF A POSSIBLE 350 USING 7 TURNS.
  1243. <BLANKLINE>
  1244. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1245. <BLANKLINE>
  1246. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 53 MORE POINTS
  1247. <BLANKLINE>
  1248. Now we reload our saved game one last time, take it through the ending,
  1249. and then save anew so that we can do several tests in the repository.
  1250. >>> quiet(restart(), get(keys), go_to(9))
  1251. >>> game.is_closing = 1
  1252. >>> game.start_closing_cave()
  1253. >>> unlock
  1254. A MYSTERIOUS RECORDED VOICE GROANS INTO LIFE AND ANNOUNCES:
  1255. "THIS EXIT IS CLOSED. PLEASE LEAVE VIA MAIN OFFICE."
  1256. <BLANKLINE>
  1257. >>> game.clock2 = 1
  1258. >>> w
  1259. THE SEPULCHRAL VOICE ENTONES, "THE CAVE IS NOW CLOSED." AS THE ECHOES
  1260. FADE, THERE IS A BLINDING FLASH OF LIGHT (AND A SMALL PUFF OF ORANGE
  1261. SMOKE). . . . AS YOUR EYES REFOCUS, YOU LOOK AROUND AND FIND...
  1262. <BLANKLINE>
  1263. YOU'RE AT NE END.
  1264. <BLANKLINE>
  1265. >>> quiet(savefile.truncate())
  1266. >>> savefile.seek(0)
  1267. 0
  1268. >>> save(savefile)
  1269. GAME SAVED
  1270. <BLANKLINE>
  1271. Most of the interesting end-game events are fatal, but not all.
  1272. >>> quiet(restart(), sw)
  1273. >>> get(cage)
  1274. OK
  1275. <BLANKLINE>
  1276. >>> attack(bird)
  1277. OH, LEAVE THE POOR UNHAPPY BIRD ALONE.
  1278. <BLANKLINE>
  1279. >>> drop(bird)
  1280. THE LITTLE BIRD ATTACKS THE GREEN SNAKE, AND IN AN ASTOUNDING FLURRY
  1281. DRIVES THE SNAKE AWAY.
  1282. <BLANKLINE>
  1283. THE RESULTING RUCKUS HAS AWAKENED THE DWARVES. THERE ARE NOW SEVERAL
  1284. THREATENING LITTLE DWARVES IN THE ROOM WITH YOU! MOST OF THEM THROW
  1285. KNIVES AT YOU! ALL OF THEM GET YOU!
  1286. <BLANKLINE>
  1287. <BLANKLINE>
  1288. YOU SCORED 98 OUT OF A POSSIBLE 350 USING 13 TURNS.
  1289. <BLANKLINE>
  1290. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1291. <BLANKLINE>
  1292. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 33 MORE POINTS
  1293. <BLANKLINE>
  1294. >>> quiet(restart())
  1295. >>> attack(dwarf)
  1296. THE RESULTING RUCKUS HAS AWAKENED THE DWARVES. THERE ARE NOW SEVERAL
  1297. THREATENING LITTLE DWARVES IN THE ROOM WITH YOU! MOST OF THEM THROW
  1298. KNIVES AT YOU! ALL OF THEM GET YOU!
  1299. <BLANKLINE>
  1300. <BLANKLINE>
  1301. YOU SCORED 98 OUT OF A POSSIBLE 350 USING 10 TURNS.
  1302. <BLANKLINE>
  1303. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1304. <BLANKLINE>
  1305. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 33 MORE POINTS
  1306. <BLANKLINE>
  1307. >>> quiet(restart(), sw)
  1308. >>> get(rod) # grab the rusty-mark rod
  1309. OK
  1310. <BLANKLINE>
  1311. >>> ne # move to where the rusty-star rods lie
  1312. YOU'RE AT NE END.
  1313. <BLANKLINE>
  1314. >>> throw(rod) # will the correct rod get dropped?
  1315. OK
  1316. <BLANKLINE>
  1317. >>> look
  1318. YOU ARE AT THE NORTHEAST END OF AN IMMENSE ROOM, EVEN LARGER THAN THE
  1319. GIANT ROOM. IT APPEARS TO BE A REPOSITORY FOR THE "ADVENTURE"
  1320. PROGRAM. MASSIVE TORCHES FAR OVERHEAD BATHE THE ROOM WITH SMOKY
  1321. YELLOW LIGHT. SCATTERED ABOUT YOU CAN BE SEEN A PILE OF BOTTLES (ALL
  1322. OF THEM EMPTY), A NURSERY OF YOUNG BEANSTALKS MURMURING QUIETLY, A BED
  1323. OF OYSTERS, A BUNDLE OF BLACK RODS WITH RUSTY STARS ON THEIR ENDS, AND
  1324. A COLLECTION OF BRASS LANTERNS. OFF TO ONE SIDE A GREAT MANY DWARVES
  1325. ARE SLEEPING ON THE FLOOR, SNORING LOUDLY. A SIGN NEARBY READS: "DO
  1326. NOT DISTURB THE DWARVES!" AN IMMENSE MIRROR IS HANGING AGAINST ONE
  1327. WALL, AND STRETCHES TO THE OTHER END OF THE ROOM, WHERE VARIOUS OTHER
  1328. SUNDRY OBJECTS CAN BE GLIMPSED DIMLY IN THE DISTANCE.
  1329. <BLANKLINE>
  1330. A THREE FOOT BLACK ROD WITH A RUSTY MARK ON AN END LIES NEARBY.
  1331. <BLANKLINE>
  1332. >>> restart()
  1333. >>> find(eggs)
  1334. I DARESAY WHATEVER YOU WANT IS AROUND HERE SOMEWHERE.
  1335. <BLANKLINE>
  1336. >>> sw
  1337. YOU'RE AT SW END.
  1338. <BLANKLINE>
  1339. >>> get(rod)
  1340. OK
  1341. <BLANKLINE>
  1342. >>> blast
  1343. THERE IS A LOUD EXPLOSION, AND YOU ARE SUDDENLY SPLASHED ACROSS THE
  1344. WALLS OF THE ROOM.
  1345. <BLANKLINE>
  1346. <BLANKLINE>
  1347. YOU SCORED 113 OUT OF A POSSIBLE 350 USING 13 TURNS.
  1348. <BLANKLINE>
  1349. YOU HAVE ACHIEVED THE RATING: "EXPERIENCED ADVENTURER".
  1350. <BLANKLINE>
  1351. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 88 MORE POINTS
  1352. <BLANKLINE>
  1353. >>> restart()
  1354. >>> shatter(mirror)
  1355. YOU STRIKE THE MIRROR A RESOUNDING BLOW, WHEREUPON IT SHATTERS INTO A
  1356. MYRIAD TINY FRAGMENTS.
  1357. <BLANKLINE>
  1358. THE RESULTING RUCKUS HAS AWAKENED THE DWARVES. THERE ARE NOW SEVERAL
  1359. THREATENING LITTLE DWARVES IN THE ROOM WITH YOU! MOST OF THEM THROW
  1360. KNIVES AT YOU! ALL OF THEM GET YOU!
  1361. <BLANKLINE>
  1362. <BLANKLINE>
  1363. YOU SCORED 98 OUT OF A POSSIBLE 350 USING 10 TURNS.
  1364. <BLANKLINE>
  1365. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1366. <BLANKLINE>
  1367. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 33 MORE POINTS
  1368. <BLANKLINE>
  1369. >>> restart()
  1370. >>> wake(dwarves)
  1371. YOU PROD THE NEAREST DWARF, WHO WAKES UP GRUMPILY, TAKES ONE LOOK AT
  1372. YOU, CURSES, AND GRABS FOR HIS AXE.
  1373. <BLANKLINE>
  1374. THE RESULTING RUCKUS HAS AWAKENED THE DWARVES. THERE ARE NOW SEVERAL
  1375. THREATENING LITTLE DWARVES IN THE ROOM WITH YOU! MOST OF THEM THROW
  1376. KNIVES AT YOU! ALL OF THEM GET YOU!
  1377. <BLANKLINE>
  1378. <BLANKLINE>
  1379. YOU SCORED 98 OUT OF A POSSIBLE 350 USING 10 TURNS.
  1380. <BLANKLINE>
  1381. YOUR SCORE QUALIFIES YOU AS A NOVICE CLASS ADVENTURER.
  1382. <BLANKLINE>
  1383. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 33 MORE POINTS
  1384. <BLANKLINE>