Rogue 3.6 reconstruction from
[rogue-pphs.git] / rogue36.html
1 <html>
2 <head>
3 <title></title>
4 </head>
5 <body>
7 <h1 align=center><b>A Guide to the Dungeons of Doom</b></h1>
9 <h2 align=center><i>Michael C. Toy</i></h2>
11 <h3 align=center>
12 Computer Systems Research Group<br>
13 Department of Electrical Engineering and Computer Science<br>
14 University of California<br>
15 Berkeley, California 94720</h3>
17 <h2 align=center><i>ABSTRACT</i></h2>
19 <blockquote>
20 <blockquote>
21 <p align="justify"><font size="2">Rogue is a visual CRT based fantasy game which runs under the
22 UNIX timesharing system. This paper describes how to play rogue, and gives a few hints for
23 those who might otherwise get
24 lost in the Dungeons of Doom.</font></p>
25 </blockquote>
26 </blockquote>
28 <h2 align="justify"><b>1. Introduction</b></h2>
30 <p align="justify">You have just finished your years as a
31 student at the local fighter&rsquo;s guild. After much
32 practice and sweat you have finally completed your training
33 and are ready to embark upon a perilous adventure. As a test
34 of your skills, the local guildmasters have sent you into
35 the Dungeons of Doom. Your task is to return with the Amulet
36 of Yendor. Your reward for the completion of this task will
37 be a full membership in the local guild. In addition, you
38 are allowed to keep all the loot you bring back from the
39 dungeons.</p>
41 <p align="justify">In preparation for your journey, you are
42 given an enchanted sword, taken
43 from a dragon&rsquo;s hoard in the far off Dark Mountains.
44 You are also outfitted with elf-crafted armor and given
45 enough food to reach the dungeons. You say goodbye to family
46 and friends for what may be the last time and head up the
47 road.</p>
49 <p align="justify">You set out on your way to the dungeons and
50 after several days of uneventful travel, you see the
51 ancient ruins that mark the entrance to the Dungeons of
52 Doom. It is late at night so you make camp at the entrance
53 and spend the night sleeping under the open skies. In the
54 morning you gather your sword, put on your armor, eat what
55 is almost your last food and enter the
56 dungeons.</p>
58 <h2 align="justify"><b>2. What is going on here?</b></h2>
60 <p align="justify">You have just begun a game of rogue. Your
61 goal is to grab as much treasure as you can, find the Amulet
62 of Yendor, and get out of the Dungeons of Doom alive. On the
63 screen, a map of where you have been and what you have seen
64 on the current dungeon level is kept. As you explore more of
65 the level, it appears on the screen in front of
66 you.</p>
68 <p align="justify">Rogue differs from most computer fantasy
69 games in that it is screen oriented. Commands are all one or
70 two keystrokes<sup>1 </sup>and the
71 results of your commands are displayed graphically on the
72 screen rather than being explained in words<sup>2</sup>.</p>
74 <p align="justify">Another major difference between rogue and
75 other computer fantasy games is that once you have solved
76 all the puzzles in a standard fantasy game, it has lost most
77 of its excitement and it ceases to be fun. Rogue on the
78 other hand generates a new dungeon every time you play it
79 and even the author finds it an entertaining and exciting
80 game.</p>
82 <h2 align="justify"><b>3. What do all those things on the screen mean?</b></h2>
84 <p align="justify">In order to understand what is going on in
85 rogue you have to first get some grasp of what rogue is
86 doing with the screen. The rogue screen is intended to
87 replace the &ldquo;You can see ...&rdquo; descriptions of
88 standard fantasy games. Here is a sample of what a
89 rogue screen might look like.</p>
91 <div align="center"><pre>
92 ---------------------
93 |...................+
94 |...@...........[...|
95 |........B..........|
96 |...................|
97 --------+------------
99 Level: 1 Gold: 0 Hp: 12(12) Str: 16 Ac: 6 Exp: 1/0
100 </pre></div>
102 <h3 align="justify"><b>3.1. The bottom line</b></h3>
104 <p align="justify">At the bottom line of the screen is a few
105 pieces of cryptic information describing your current
106 status. Here is an explanation of what these things
107 mean:</p>
109 <table border="0" width="100%" id="table1" cellspacing="3" cellpadding="3">
110 <tr>
111 <td><p align="justify">Level&nbsp;&nbsp;</p></td>
112 <td><p align="justify">This number indicates how deep you have gone in the
113 dungeon. It starts at one and goes up forever<sup>2</sup>.</p></td>
114 </tr>
115 <tr>
116 <td><p align="justify">Gold</p></td>
117 <td><p align="justify">The number of gold pieces you have managed to find
118 and keep with you so far.</td>
119 </tr>
120 <tr>
121 <td><p align="justify">Hp</p></td>
122 <td><p align="justify">Your current and maximum hit points.
123 Health points indicate how much damage you can take before
124 you die. The more you get hit in a fight, the lower they
125 get. You can regain health points by resting. The number in
126 parentheses is the maximum number your hit points can
127 reach.</p></td>
128 </tr>
129 <tr>
130 <td><p align="justify">Str</p></td>
131 <td><p align="justify">Your current strength. This can be any
132 integer less than or equal to eighteen. The higher the number,
133 the stronger you are.</td>
134 </tr>
135 <tr>
136 <td><p align="justify">Ac</p></td>
137 <td><p align="justify">Your current armor class. This number
138 indicates how effective your armor is in stopping blows from
139 unfriendly creatures. The lower this number is, the more
140 effective the armor.</p></td>
141 </tr>
142 <tr>
143 <td><p align="justify">Exp</p></td>
144 <td><p align="justify">These two numbers give your current experience
145 level and experience points. As you do things, you gain experience
146 points. At certain experience point totals, you gain an
147 experience level. The more experienced you are, the better
148 you are able to fight and to withstand magical attacks.</p></td>
149 </tr>
150 </table>
152 <h3 align="justify"><b>3.2. The top line</b></h3>
154 <p align="justify">The top line of the screen is reserved for
155 printing messages that describe things that are impossible
156 to represent visually. If you see a &ldquo;--More--&rdquo;
157 on the top line, this means that rogue wants to print
158 another message on the screen, but it wants to make certain
159 that you have read the one that is there first. To read the
160 next message, just type a space.</p>
162 <h3 align="justify"><b>3.3. The rest of the screen</b></h3>
164 <p align="justify">The rest of the screen is the map of the
165 level as you have explored it so far. Each symbol on the
166 screen represents something. Here is a list of what the
167 various symbols mean:</p>
169 <table border="0" width="100%" id="table2" cellspacing="3" cellpadding="3">
170 <tr>
171 <td>@</td>
172 <td><p align="justify">This symbol represents you, the adventurer.</p></td>
173 </tr>
174 <tr>
175 <td>- |</td>
176 <td><p align="justify">These symbols represent the walls of rooms.</p></td>
177 </tr>
178 <tr>
179 <td>+</td>
180 <td>
181 <p align="justify">A door to/from a room.</p></td>
182 </tr>
183 <tr>
184 <td>.</td>
185 <td><p align="justify">The floor of a room.</p></td>
186 </tr>
187 <tr>
188 <td>#</td>
189 <td><p align="justify">The floor of a passage between rooms.</p></td>
190 </tr>
191 <tr>
192 <td>*</td>
193 <td><p align="justify">A pile or pot of gold.</p></td>
194 </tr>
195 <tr>
196 <td>)</td>
197 <td><p align="justify">A weapon of some sort.</p></td>
198 </tr>
199 <tr>
200 <td>]</td>
201 <td><p align="justify">A piece of armor.</p></td>
202 </tr>
203 <tr>
204 <td>!</td>
205 <td><p align="justify">A flask containing a magic potion.</p></td>
206 </tr>
207 <tr>
208 <td>?</td>
209 <td><p align="justify">A piece of paper, usually a magic scroll.</p></td>
210 </tr>
211 <tr>
212 <td>^</td>
213 <td><p align="justify">A trap, watch out for these.</p></td>
214 </tr>
215 <tr>
216 <td>%</td>
217 <td><p align="justify">The passage leading down to the next level.</p></td>
218 </tr>
219 <tr>
220 <td>:</td>
221 <td><p align="justify">A piece of food.</p></td>
222 </tr>
223 <tr>
224 <td>A-Z&nbsp;&nbsp;</td>
225 <td><p align="justify">The uppercase letters represent the various
226 inhabitants of the Dungeons of Doom. Watch out, they can be mean.</p></td>
227 </tr>
228 </table>
230 <h2 align="justify"><b>4. Commands</b></h2>
232 <p align="justify">Commands are given to rogue by pressing single letters.
233 Most commands can be preceded by a count to repeat them
234 (e.g. typing &quot;10s&quot; will do ten searches) The list
235 of commands is rather long, but it can be read at any time
236 during the game with the ? command. Here it is for
237 reference, with a short explanation of each command.</p>
239 <div align="center">
240 <table border="0" cellspacing="3" cellpadding="3" id="table3">
241 <tr>
242 <td>?</td>
243 <td><p align="justify">The help command. Asks for a character to give help
244 on. If you type a &quot;*&quot;, it will list all the commands,
245 otherwise it will explain what the character you typed
246 does.</p></td>
247 </tr>
248 <tr>
249 <td>/</td>
250 <td align="justify"><p>This is the &quot;What is that on the screen?&quot;
251 command. A &quot;/&quot; followed by any character that you
252 see on the level, will tell you what that character is. For
253 instance, typing &quot;/@&quot; will tell you that the @
254 symbol represents you, the player.</p></td>
255 </tr>
256 <tr>
257 <td colspan="2">h, H</td>
258 </tr>
259 <tr>
260 <td>&nbsp;</td>
261 <td><p align="justify">Move left. You move one space to the left. If you use
262 upper case h, you will continue to move left until you run into something.
263 This works for all movement commands (e.g. &quot;L&quot; means run in direction
264 &quot;l&quot;)</p></td>
265 </tr>
266 <tr>
267 <td>j</td>
268 <td><p align="justify">Move down.</p></td>
269 </tr>
270 <tr>
271 <td>k</td>
272 <td><p align="justify">Move up.</p></td>
273 </tr>
274 <tr>
275 <td>l</td>
276 <td><p align="justify">Move right.</p></td>
277 </tr>
278 <tr>
279 <td>y</td>
280 <td><p align="justify">Move diagonally up and left.</p></td>
281 </tr>
282 <tr>
283 <td>u</td>
284 <td><p align="justify">Move diagonally up and right.</p></td>
285 </tr>
286 <tr>
287 <td>b</td>
288 <td><p align="justify">Move diagonally down and left.</p></td>
289 </tr>
290 <tr>
291 <td>n</td>
292 <td><p align="justify">Move diagonally down and right.</p></td>
293 </tr>
294 <tr>
295 <td>t</td>
296 <td><p align="justify">Throw an object. This is a prefix command. When
297 followed with a direction it throws an object in the specified direction.
298 (e.g. type &ldquo;th&rdquo; to throw something to the left.)</p></td>
299 </tr>
300 <tr>
301 <td>f</td>
302 <td><p align="justify">Find prefix. When followed by a direction it means to
303 continue moving in the specified direction until you pass
304 something interesting or run into a wall.</p></td>
305 </tr>
306 <tr>
307 <td>t</td>
308 <td><p align="justify">Throw an object. This is a prefix command. Follow it
309 with a direction and you throw an object in the specified
310 direction. (e.g. type &quot;th&quot; to throw something
311 left.)</p></td>
312 </tr>
313 <tr>
314 <td>&gt;</td>
315 <td><p align="justify">If you are standing over the passage down to the next
316 level, this command means to climb down.</p></td>
317 </tr>
318 <tr>
319 <td>s</td>
320 <td><p align="justify">Search for traps and secret doors. Examine each space
321 immediately adjacent to you for the existence of a trap or
322 secret door. There is a large chance that even if there is
323 something there, you won&rsquo;t find it so you might have
324 to search a while before you find something.</p></td>
325 </tr>
326 <tr>
327 <td>&nbsp;</td>
328 <td><p align="justify">(space) Rest. This is the &quot;do nothing&quot;
329 command. This is good for waiting and healing.</p></td>
330 </tr>
331 <tr>
332 <td align="left" valign="top">
333 <p>i</td>
334 <td align="justify">
335 <p>Inventory. List what you are carrying in your pack.</td>
336 </tr>
337 <tr>
338 <td>I</td>
339 <td><p align="justify">Selective inventory. Tells you what a single item in
340 your pack is.</p></td>
341 </tr>
342 <tr>
343 <td>q</td>
344 <td><p align="justify">Quaff. Drink one of the potions you are
345 carrying.</p></td>
346 </tr>
347 <tr>
348 <td>r</td>
349 <td><p align="justify">Read. Read one of the scrolls in your pack.</p></td>
350 </tr>
351 <tr>
352 <td>e</td>
353 <td><p align="justify">Eat food. Take some food out of your pack and eat
354 it.</p></td>
355 </tr>
356 <tr>
357 <td>w</td>
358 <td><p align="justify">Wield a weapon. Take a weapon out of your pack and
359 carry it. You must be wielding weapon to use it (except to throw
360 things). To fire an arrow, you must wield the bow. You can
361 only wield one weapon at a time.</p></td>
362 </tr>
363 <tr>
364 <td>W</td>
365 <td><p align="justify">Wear armor. Take a piece of armor out of your pack
366 and put it on. You can only wear one suit of armor at a time.</td>
367 </tr>
368 <tr>
369 <td>T</td>
370 <td><p align="justify">Take armor off. You can&rsquo;t remove armor that is
371 cursed. This takes extra time.</p></td>
372 </tr>
373 <tr>
374 <td>d</td>
375 <td><p align="justify">Drop an object. Take something out of your pack and
376 leave it lying on the floor. Only one object can occupy each
377 space.</p></td>
378 </tr>
379 <tr>
380 <td>o</td>
381 <td><p align="justify">Examine and set options. This command is further
382 explained in the section on options.</p></td>
383 </tr>
384 <tr>
385 <td>^L</td>
386 <td><p align="justify">Redraws the screen. Useful if spurious messages or
387 transmission errors have messed up the display.</p></td>
388 </tr>
389 <tr>
390 <td>v</td>
391 <td><p align="justify">Prints the program version number.</p></td>
392 </tr>
393 <tr>
394 <td>Q</td>
395 <td><p align="justify">Quit. Leave the game.</p></td>
396 </tr>
397 <tr>
398 <td>R</td>
399 <td><p align="justify">Repeat last message. Useful when a message disappears
400 before you can read it.</p></td>
401 </tr>
402 <tr>
403 <td>S</td>
404 <td><p align="justify">Save the current game in a file. Caveat: Rogue
405 won&rsquo;t let you start up a copy of a saved game, and it
406 removes the save file as soon as you start up a restored
407 game. This is to prevent people from saving a game just
408 before a dangerous position and then restarting it if they
409 die. To restore a saved game, give the file name as an
410 argument to rogue. As in % rogue36 save_file</p></td>
411 </tr>
412 </table>
413 </div>
415 <h2 align="justify"><b>5. Dealing with objects</b></h2>
417 <p align="justify">When you find something in the dungeon, it is common to
418 want to pick the object up. This is accomplished in rogue by
419 walking over the object. If you are carrying too many
420 things, the program will tell you and it won&rsquo;t pick up
421 the object, otherwise it will add it to your pack and if the
422 notify option is set, tell you what you just picked up.</p>
424 <p align="justify">Many of the commands that operate on objects must prompt
425 you to find out which object you want to use. If you change
426 your mind and don&rsquo;t want to do that command after all,
427 just press an escape and the command will be aborted.</p>
429 <h2 align="justify"><b>6. Light</b></h2>
431 <p align="justify">Rooms in the dungeons are either lit or dark. If you
432 walk into a lit room, the entire room will be drawn on the
433 screen as soon as you enter. If you walk into a dark room,
434 it will only be displayed as you explore it. Upon leaving a
435 dark room, all objects inside the room which might move are
436 removed from the screen. In the darkness you can only see
437 one space in all directions around you.</p>
439 <h2 align="justify"><b>7. Fighting</b></h2>
440 <p align="justify">If you see a monster and you wish to fight it, just
441 attempt to run into it. Many times a monster you find will
442 mind its own business unless you attack it. It is often the
443 case that discretion is the better part of valor.</p>
445 <h2 align="justify">8<b>. Armor</b></h2>
447 <p align="justify">There are various sorts of armor lying around in the
448 dungeon. Some of it is enchanted, some is cursed and some is
449 just normal. Different armor types have different armor
450 classes. The lower the armor class, the more protection the
451 armor affords against the blows of monsters. If a piece of
452 armor is enchanted or cursed, its armor class will be higher
453 or lower than normal. Here is a list of the various armor
454 types and their normal armor class.</p>
456 <div align="center">
457 <table border="1" cellspacing="3" cellpadding="3" id="table4" style="border-collapse: collapse">
458 <tr>
459 <th><i>Type</i></th>
460 <th><i>Class</i></th>
461 </tr>
462 <tr>
463 <td>Leather armor</td>
464 <td align="center">8</td>
465 </tr>
466 <tr>
467 <td>Studded leather / Ring mail</td>
468 <td align="center">7</td>
469 </tr>
470 <tr>
471 <td>Scale mail </td>
472 <td align="center">6</td>
473 </tr>
474 <tr>
475 <td>Chain mail&nbsp; </td>
476 <td align="center">5</td>
477 </tr>
478 <tr>
479 <td>Banded mail / Splint mail</td>
480 <td align="center">4</td>
481 </tr>
482 <tr>
483 <td>Plate mail</td>
484 <td align="center">3</td>
485 </tr>
486 </table>
487 </div>
489 <h2 align="justify">9<b>. Options</b></h2>
491 <p align="justify">Due to variations in personal tastes and conceptions of
492 the way rogue should do things, there are a set of options
493 you can set that cause rogue to behave in various different
494 ways.</p>
496 <h3 align="justify"><b>9.1 Setting the options</b></h3>
498 <p align="justify">There are basically two ways to set the options. The
499 first is with the &quot;o&quot; command of rogue, the second
500 is with the ROGUEOPTS environment variable. On Version 6
501 systems, there is no equivalent of the ROGUEOPTS
502 feature.</p>
504 <h3 align="justify"><b>9.1.1. Using the &quot;o&quot; command</b></h3>
506 <p align="justify">When you press &quot;o&quot; in rogue, it clears the
507 screen and displays the current settings for all the
508 options. It then places the cursor by the value of the first
509 option and waits for you to type. You can type a RETURN
510 which means to go to the next option, a &quot;&minus;&quot;
511 which means to go to the previous option, an escape which
512 means to return to the game, or you can give the option a
513 value. For boolean options this merely involves pressing
514 &quot;t&quot; for true or &quot;f&quot; for false. For
515 string options, type the new value followed by a return.</p>
517 <h3 align="justify">9<b>.1.2. Using the ROGUEOPTS variable</b></h3>
519 <p align="justify">The ROGUEOPTS variable is a string containing a comma
520 separated list of initial values for the various options.
521 Boolean variables can be turned on by listing their name and
522 turned off by putting a &quot;no&quot; in front of the name.
523 Thus to set up an environment variable so that jump is on,
524 terse is off, the name is set to &quot;Conan the
525 Barbarian&quot; and the fruit is &quot;mango&quot;, use the
526 command</p>
528 <div align="justify"><pre>
529 % setenv ROGUEOPTS &quot;jump,noterse,name=Conan the Barbarian,fruit=mango&quot;<sup>3</sup>
530 </pre></div>
532 <h3 align="justify"><b>9.2. Option list</b></h3>
534 <p align="justify">Here is a list of the options and an explanation of what
535 each one is for. The default value for each is enclosed in
536 square brackets.</p>
538 <p align="justify"><b>terse</b>[<i>noterse</i>]</p>
539 <blockquote>
540 <p align="justify">
541 Useful for those who are tired of the sometimes lengthy
542 messages of rogue. This is a useful option for those on slow
543 terminals. This option defaults to on if your are on a slow
544 (under 1200 baud) terminal.</p>
545 </blockquote>
547 <p align="justify"><b>jump</b>[<i>nojump</i>]</p>
548 <blockquote>
549 <p align="justify">If this option is set, running moves will not be
550 displayed until you reach the end of the move. This saves
551 considerable cpu time and display time. This option defaults
552 to on if you are using a slow terminal.</p>
553 </blockquote>
555 <p align="justify"><b>step</b>[<i>nostep</i>]</p>
556 <blockquote>
557 <p align="justify">When step is set, lists of things, like inventories or
558 &quot;*&quot; responses to &quot;Which item do you wish to
559 xxxx? &quot; questions, are displayed one item at a time on
560 the top of the screen, rather than clearing the screen,
561 displaying the list, then re-displaying the dungeon
562 level.</p>
563 </blockquote>
565 <p align="justify"><b>flush</b>[<i>noflush</i>]</p>
566 <blockquote>
567 <p align="justify">If flush is set, all typeahead is thrown away after each
568 round of battle. This is useful for those who type way ahead
569 and watch to their dismay as a Kobold kills them.</p>
570 </blockquote>
572 <p align="justify"><b>askme</b>[<i>noaskme</i>]</p>
573 <blockquote>
574 <p align="justify">Upon reading a scroll or quaffing a potion which does
575 not automatically identify it upon use, rogue will ask you
576 what to name it so you can recognize it in the future.</p>
577 </blockquote>
579 <p align="justify"><b>name</b> [account name]</p>
580 <blockquote>
581 <p align="justify">This is the name of your character. It is used if you
582 get on the top ten scorer&rsquo;s list. It should be less
583 than eighty characters long.</p>
584 </blockquote>
586 <p align="justify"><b>fruit</b>[<i>slime-mold</i>]</p>
587 <blockquote>
588 <p align="justify">This should hold the name of a fruit that you enjoy
589 eating. It is basically a whimsy that the program uses in a
590 couple of places.</p>
591 </blockquote>
593 <p align="justify"><b>file</b>[<i></i>]</p>
594 <blockquote>
595 <p align="justify">The default file name for saving the game. If your phone
596 is hung up by accident, rogue will automatically save the
597 game in this file. The file name may contain the special
598 character &quot;~&quot; which expands to be your home
599 directory.</p>
600 </blockquote>
602 <h2 align="justify"><br>
604 <b>10. Acknowledgements</b></h2>
606 <p align="justify">Rogue was originally conceived of by Glenn Wichman and
607 Michael Toy. The help of Ken Arnold in making the program
608 easier to use and putting the finishing touches on is
609 greatly appreciated. I would also like to thank Marty
610 McNary, Scott Nelson, Daniel Jensen, Kipp Hickman, Joe
611 Kalash, Steve Maurer, Bill Joy, Mark Horton and Jan Miller
612 for their ideas and assistance.</p>
614 <table border="0" width="100%" cellspacing="3" cellpadding="0" id="table5">
615 <tr>
616 <td align="center"><sup>1</sup></td>
617 <td>As opposed to pseudo English sentences.</td>
618 </tr>
619 <tr>
620 <td align="center"><sup>2</sup></td>
621 <td>Or until you get killed or decide to quit.</td>
622 </tr>
623 <tr>
624 <td align="center"><sup>3</sup>&nbsp;&nbsp;</td>
625 <td><p>For those of you who use the Bourne shell, the commands would be</p>
626 <pre> $ ROGUEOPTS=&quot;jump,noterse,name=Conan the Barbarian,fruit=mango&quot;
627 $ export ROGUEOPTS</pre>
628 </td>
629 </tr>
630 </table>
632 </body>
633 </html>