view arogue7/arogue77.html @ 144:708bb2dea17c

arogue7, xrogue: prevent potential NULL dereferencing. It is possible for getpwuid() to fail and return NULL. Various md_get* functions now check for this.
author John "Elwin" Edwards
date Mon, 18 May 2015 10:53:22 -0400
parents adfa37e67084
children
line wrap: on
line source

<!-- Advanced Rogue                                                         -->
<!-- Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T      -->
<!-- All rights reserved.                                                   -->
<!--                                                                        -->
<!-- Based on "Rogue: Exploring the Dungeons of Doom"                       -->
<!-- Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman     -->
<!-- All rights reserved.                                                   -->
<!--                                                                        -->
<!-- See the file LICENSE.TXT for full copyright and licensing information. -->

<!-- Creator     : groff version 1.18.1 -->
<!-- CreationDate: Sat Jan 21 09:55:23 2006 -->

<h1 align="center"><a href="http://roguelike.sourceforge.net/arogue77">The Dungeons of Doom</a></h1>
<br>
<h2 align="center">Toolchest</h2>
<h3 align="center">http://roguelike.sourceforge.net/arogue77</h3>
<br>
<table border="0" cellpadding="3" cellspacing="3" style="border-collapse: collapse" id="table1" align=center>
<tr>
	<td nowrap>
		Advanced Rogue<br>
		Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&amp;T<br>
		All rights reserved.
	</td>
</tr>
<tr>
	<td nowrap>
		Based on &quot;Rogue: Exploring the Dungeons of Doom&quot;<br>
		Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman<br>
		All rights reserved.
	</td>
</tr>
</table>

<p align="center">See the file LICENSE.TXT for full copyright and licensing information.</p>

<h2 align="justify">1. Introduction</h2>

<p align="justify">
       Rogue  is  a  screen-oriented  fantasy  game set in the
       ever-changing Dungeons of Doom.   The  game  comes  complete
       with  monsters,  spells,  weapons, armor, potions, and other
       magical items.  The dungeon's geography changes  with  every
       game,   and   although   many  magical  items  have  certain
       identifiable  properties,  such  as   turning   the   player
       invisible,  the  physical manifestation of the magic changes
       each game.  A red potion, for example, will cause  the  same
       reaction throughout a given game, but it may be a completely
       different potion in a new game.
</p>

<p align=justify>
       Entering the dungeon with only a  little  food,  armor,
       and  a  weapon,  the  player must develop a good strategy of
       when to fight, when to run, and how to best use any  magical
       items found in the dungeon.  To make things interesting, the
       player  has  a  quest  to  return  one  of  several   unique
       artifacts,  rumored  to  lie  deep  in the dungeon's bowels.
       Returning with this artifact  brings  great  glory  and  the
       title  of  Complete  Winner.   But  even  after  finding the
       artifact, the player may wish to continue further  to  match
       wits with an arch-devil, demon prince, or even a deity found
       far down in the dungeon.  Defeating  such  a  creature  will
       gain  the  player  many  experience  points,  the  basis for
       scoring in Rogue.
</p>

<p align=justify>
       It is very difficult to return  from  the  Dungeons  of
       Doom.   Few  people  ever  make  it  out alive.  Should this
       unlikely event occur,  the  player  would  be  proclaimed  a
       complete  winner  and  handsomely  rewarded  for  any  booty
       removed from the dungeon.
</p>

<h3 align="justify">2. Character Classes</h3>

<p align="justify">
       Before placing the player  in  the  dungeon,  the  game
       requests  the  player  to select what type of character they
       would like to be:  a fighter, a  magic  user,  a  cleric,  a
       druid, a thief, a paladin, a ranger, a monk, or an assassin.
</p>

<p align="justify"><span style="font-variant: small-caps"><strong>2.1 The Fighter</strong></span></p>

<p align="justify">
       A fighter is very strong and will have a high  strength
       rating.   This  great strength gives a fighter the best odds
       of winning a battle with  a  monster.   At  high  experience
       levels  the  fighter also gets to attack multiple times in a
       single turn.  This obviously further increases  his  chances
       at  winning  battles.   Intrinsic  to the fighter class is a
       robustness which results in 1 to 12  extra  hit  points  for
       every new experience level.
</p>

<p align="justify"><span style="font-variant: small-caps"><strong>2.2 The Magician</strong></span></p>

<p align="justify">
       A  Magician  is  able to "cast" spells.  The number and
       variety of spells increases as the magician gains experience
       and   intelligence.   Magic  users  are  not  as  hearty  as
       fighters; they receive 1 to 6 extra hit points for every new
       experience level.</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.3 The Cleric</span></strong></p>

<p align="justify">
       A  cleric  is  able to "pray" to his god for help.  The
       number and variety of prayers which the gods are willing  to
       grant  to  a  cleric increase as the cleric gains experience
       and wisdom.
       </p>
       
<p align=justify>
       Because of their religious  nature,  clerics  can  also
       affect  the  "undead" beings, like zombies and ghouls, which
       became monsters after they died.  If an "undead" creature is
       next to a cleric, the cleric may try to turn it and cause it
       to flee.  If the cleric is sufficiently powerful relative to
       the  monster,  the  cleric  will  destroy  it.  This ability
       increases as the character gains experience levels.
</p>

<p align=justify>
       Clerics can gain from  1  to  8  extra  hit  points  on
       reaching a new experience level.</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.4 The Druid</span></strong></p>

<p align="justify"> 
       The  druid  is  a  cleric  of sorts but worships nature
       rather than a god.  The druid is able to "chant" and thereby
       recieve  certain  types  of  spells.  Most of the chants are
       targeted more towards the elements and nature.
</p>

<p align=justify>            
       Druids gain from 1 to 8 hit points when  they  gain  an
       experience level.
</p>
       
<p align="justify"><strong><span style="font-variant: small-caps">2.5 The Thief</span></strong></p>

<p align="justify">
       A thief is exceptionally dextrous and has a good chance
       to set a trap or rob a monster.
</p>

<p align=justify>
       By their nature, thieves can automatically  detect  all
       the gold on the current level of the dungeon.  They are also
       good at  detecting  hidden  traps.   Because  thieves  slink
       along,  they  are  not as likely as other characters to wake
       sleeping monsters.  If a thief manages  to  sneak  up  on  a
       creature without waking it, he will get a chance to backstab
       the monster. When this is done, the damage done by the thief
       greatly increases based on his experience level.
</p>

<p align=justify>
       Thieves  gain  from  1 to 6 extra hit points from a new
       experience level.
</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.6 The Paladin</span></strong></p>

<p align="justify">
       The paladin is a type of holy warrior.  Somewhat  of  a
       cross between a fighter and a cleric. He is able to pray and
       turn undead as a cleric, (but to a lesser degree) but fights
       as  a  fighter.  He  is  on the side of all that is good and
       righteous. Therefore he would never attack a  creature  that
       would  not  attack  him first. If he does kill a non-violent
       creature inadvertantly he will feel "uneasy" and his god may
       retaliate by making him a mere fighter.
</p>

<p align=justify>
            Paladins  gain 1 to 10 hit points per experience level.
</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.7 The Ranger</span></strong></p>

<p align="justify">
       The ranger is somewhat of a cross between a druid and a
       fighter.  He  too  is on the side of righteousness and good.
       Therefore, the same same restrictions apply to his  as  they
       do  to a paladin. The ranger can "chant" and "cast" but to a
       lesser degree than the druid and magician.
</p>

<p align=justify>
       Rangers gain 1 to 8 hit points per experience level.
</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.8 The Monk</span></strong></p>

<p align="justify">
       The Monk is a martial arts expert. He  wears  no  armor
       but  has  an  effective  armor class based on his ability to
       dodge attacks.  He does not need a weapon in combat for  his
       hands and feet are a formidable weapon. His ability to dodge
       and use his hands as weapons increases as he gains in level.
</p>

<p align=justify>
       Monks gain 1 to 6 hit points per experience level.
</p>

<p align="justify"><strong><span style="font-variant: small-caps">2.9 The Assassin</span></strong></p>

<p align="justify">
       The  assassin is a person trained in the art of killing
       people by surprise. He has most  of  the  abilities  of  the
       thief  except  the "backstab". Instead, the assassin has the
       chance to kill an opponent outright with one strike.  He  is
       also  a ruthless character and trained in the use of poison.
       He can recognize poison on sight and  can  coat  his  weapon
       with  it  thereby  making  his  next attack an exceptionally
       lethal one.
</p>

<p align=justify>
       Assassins gain 1 to 6 hit points per experience  level.
</p>

<h3 align="justify">3. ATTRIBUTES</h3>

<p align="justify"><strong><span style="font-variant: small-caps">3.1 Intelligence</span></strong></p>

<p align="justify">Intelligence  is  the primary attribute associated with
       casting spells. With higher intelligence comes the knowledge
       of  more spells, the ability to cast more spells, and faster
       recovery of spells that have been cast.

</p>

<p align="justify"><strong><span style="font-variant: small-caps">3.2 Strength</span></strong></p>
<p align="justify">This is,  of  course,  the  measure  of  a  character's
       physical  strength.   With  higher  strength a character can
       carry more, cause more damage when striking, have  a  better
       chance  to  strike  an opponent, and move about more quickly
       when carrying a load.

       </p>
<p align="justify"><strong><span style="font-variant: small-caps">3.3 Wisdom</span></strong></p>
<p align="justify">Wisdom is the primary attribute associated with Praying
       to  a  god.  With  higher wisdom comes the knowledge of more
       prayers, the ability to pray more often, and faster recovery
       of prayer ability.

       </p>
<p align="justify"><strong><span style="font-variant: small-caps">3.4 Dexterity</span></strong></p>
<p align="justify">Dexterity  is  a measure of a character's agility. With
       higher dexterity a character is harder to  hit,  can  hit  a
       opponent  more  easily, and can move about more quickly when
       carrying a load.

       </p>
<p align="justify"><strong><span style="font-variant: small-caps">3.5 Constitution</span></strong></p>
<p align="justify">Every character has a constitution rating.  A character
       with  an exceptionally good constitution will gain more than
       the  normal  amount  of  hit  points  associated  with   the
       character's   class   when   the  character  reaches  a  new
       experience level.  Exceptional  constitution  also  provides
       better  protection versus poison-based attacks and diseases.

       </p>
<p align="justify"><strong><span style="font-variant: small-caps">3.6 Charisma</span></strong></p>
<p align="justify">Charisma is a measure of a characters looks and general
       likeableness.    It  effects  transactions  when  trying  to
       purchase things. </p>

<p align="justify"><strong><span style="font-variant: small-caps">3.7 Experience Levels</span></strong></p>

<p align="justify">
Characters  gain  experience  for   killing   monsters,
stealing   from   monsters,   and  turning  monsters.   Each
character class has a set of thresholds associated with  it.
When  a character reaches a threshold, the character attains
the next experience level.  This new level brings extra  hit
points  and  a  greater  chance of success in performing the
abilities  associated  with  the  character's  class.    For
example,  magicians  receive new spells, and clerics receive
new prayers.
</p>

<p align="justify">

<strong><span style="font-variant: small-caps">3.8 Allocating Attributes</span></strong>
</p>
<p align="justify">
The player starts with 72 "attribute points" to  create
a  character and can distribute them in any manner among the
six attributes described above.  When prompting  the  player
for  each  attribute,  the  game  displays  the  minimum and
maximum allowable values for that attribute.  The player can
type  a backspace (control-H) to go back and change a value;
typing an escape (ESC) sets the remaining attributes to  the
maximum value possible given the remaining attribute points.
</p>

<h3 align="justify">
4.0
THE SCREEN</h3>
<p align="justify">
During the normal course of play, the  screen  consists
of  three  separate sections:  the top line of the terminal,
the bottom two lines of  the  terminal,  and  the  remaining
middle  lines.   The  top  line  reports actions which occur
during the game, the middle section depicts the dungeon, and
the bottom lines describe the player's current condition.
</p>

<p align="justify"><strong><span style="font-variant: small-caps">4.1 The Top Line</span></strong>

<p align="justify">
Whenever  anything  happens  to  the  player,  such  as
finding a scroll or hitting or being hit  by  a  monster,  a
short  report  of  the occurrence appears on the top line of
the screen.  When such  reports  occur  quickly,  one  right
after  another, the game displays the notice followed by the
prompt '--More--.'  After reading this  notice,  the  player
can  press  a  space to display the next message.  At such a
point, the  game  ignores  all  commands  until  the  player
presses a space.
</p> 
      
<p align="justify">
<strong><span style="font-variant: small-caps">4.2 The Dungeon Section</span></strong><p align="justify">
The  large  middle  section  of the screen displays the
player's surroundings using the following symbols:
</p>

<p>
<table border="0" cellpadding="3" style="border-collapse: collapse" id="table3" cellspacing="3">
	<tr>
		<td align="center">|</td>
		<td>&nbsp;&nbsp;&nbsp;&nbsp; </td>
		<td>A wall of a room.</td>
	</tr>
	<tr>
		<td align="center">-</td>
		<td>&nbsp;</td>
		<td>A wall of a room.</td>
	</tr>
	<tr>
		<td align="center">*</td>
		<td>&nbsp;</td>
		<td>A pile of gold.</td>
	</tr>
	<tr>
		<td align="center">%</td>
		<td>&nbsp;</td>
		<td>A way to another level.</td>
	</tr>
	<tr>
		<td align="center">+</td>
		<td>&nbsp;</td>
		<td>A doorway.</td>
	</tr>
	<tr>
		<td align="center">.</td>
		<td>&nbsp;</td>
		<td>The floor in a room</td>
	</tr>
	<tr>
		<td align="center">@</td>
		<td>&nbsp;</td>
		<td>The player.</td>
	</tr>
	<tr>
		<td align="center">_</td>
		<td>&nbsp;</td>
		<td>The player, when invisible.</td>
	</tr>
	<tr>
		<td align="center">#</td>
		<td>&nbsp;</td>
		<td>The floor in a passageway</td>
	</tr>
	<tr>
		<td align="center">!</td>
		<td>&nbsp;</td>
		<td>A flask containing a potion.</td>
	</tr>
	<tr>
		<td align="center">?</td>
		<td>&nbsp;</td>
		<td>A sealed scroll.</td>
	</tr>
	<tr>
		<td align="center">:</td>
		<td>&nbsp;</td>
		<td>Some food.</td>
	</tr>
	<tr>
		<td align="center">)</td>
		<td>&nbsp;</td>
		<td>A weapon.</td>
	</tr>
	<tr>
		<td align="center">&nbsp;</td>
		<td nowrap>&nbsp;</td>
		<td nowrap>Solid rock (denoted by a space)</td>
	</tr>
	<tr>
		<td align="center">]</td>
		<td>&nbsp;</td>
		<td>Some armor.</td>
	</tr>
	<tr>
		<td align="center">;</td>
		<td>&nbsp;</td>
		<td>A miscellaneous magic item.</td>
	</tr>
	<tr>
		<td align="center">,</td>
		<td>&nbsp;</td>
		<td>An artifact.</td>
	</tr>
	<tr>
		<td align="center">=</td>
		<td>&nbsp;</td>
		<td>A ring.</td>
	</tr>
	<tr>
		<td align="center">/</td>
		<td>&nbsp;</td>
		<td>A wand or a staff.</td>
	</tr>
	<tr>
		<td align="center">^</td>
		<td>&nbsp;</td>
		<td>The entrance to a trading post.</td>
	</tr>
	<tr>
		<td align="center">&gt;</td>
		<td>&nbsp;</td>
		<td>A trapdoor leading to the next level.</td>
	</tr>
	<tr>
		<td align="center">{</td>
		<td>&nbsp;</td>
		<td>An arrow trap.</td>
	</tr>
	<tr>
		<td align="center">$</td>
		<td>&nbsp;</td>
		<td>A sleeping gas trap.</td>
	</tr>
	<tr>
		<td align="center">}</td>
		<td>&nbsp;</td>
		<td>A beartrap.</td>
	</tr>
	<tr>
		<td align="center">~</td>
		<td>&nbsp;</td>
		<td>A trap that teleports you somewhere else.</td>
	</tr>
	<tr>
		<td align="center">`</td>
		<td>&nbsp;</td>
		<td>A poison dart trap.</td>
	</tr>
	<tr>
		<td align="center">&quot;</td>
		<td>&nbsp;</td>
		<td>a shimmering magic pool.</td>
	</tr>
	<tr>
		<td align="center">'</td>
		<td>&nbsp;</td>
		<td>An entrance to a maze.</td>
	</tr>
	<tr>
		<td align="center">$</td>
		<td>&nbsp;</td>
		<td>Any magical item. (During magic detection)</td>
	</tr>
	<tr>
		<td align="center">&gt;</td>
		<td nowrap>&nbsp;</td>
		<td nowrap>A blessed magical item. (Duriing magic detection)</td>
	</tr>
	<tr>
		<td align="center">&lt;</td>
		<td>&nbsp;</td>
		<td>A cursed magical item. (During magic detection)</td>
	</tr>
	<tr>
		<td align="center">A letter</td>
		<td>&nbsp;</td>
		<td>A monster. Note that a given letter may signify<br>
		multiple monsters, depending on the level of the<br>
		dungeon. The player can always identify a current<br>
		monster by using the identify command ('/').</td>
	</tr>
</table>
</p>

<p align="justify"><strong><span style="font-variant: small-caps">4.3 The Status Section</span></strong></p>

<p align="justify">
The  bottom  two  lines  of  the  screen  describe  the
player's current status.  The first line gives the  player's
characteristics:
</p>

<ul>
<li>
<p align="justify">Intelligence (Int)</li>
<li>
<p align="justify">Strength (Str)</li>
<li>
<p align="justify">Wisdom (Wis)</li>
<li>
<p align="justify">Dexterity (Dxt)</li>
<li>
<p align="justify">Constitution (Const)</li>
<li>
<p align="justify">Charisma (Char)</li>
<li>
<p align="justify">Encumberance (Carry)</li>
</ul>

<p align=justify>
Intelligence,  strength,  wisdom,  dexterity, charisma,
and constitution have a normal maximum of  25,  but  can  be
higher   when  augmented  by  a  ring.   Encumberance  is  a
measurement of how much the player can carry versus how much
he  is  currently  carrying.  The more you carry relative to
your maximum causes you to use more food.
</p>

<p align=justify>
The  second  status   line   provides   the   following
information:
</p>

<ul>
<li>
<p align="justify">The  current  level  (Lvl) in the dungeon.  This number
increases as the player goes further down.
</li>
<li>
<p align="justify">The  player's  current  number  of  hit  points   (Hp),
followed in parentheses by the player's current maximum
number of hit points.  Hit points express the  player's
health.   As  a  player  heals by resting, the player's
current hit points gradually  increase  until  reaching
the  current maximum.  This maximum increases each time
a player  attains  a  new  experience  level.   If  the
player's current hit points reach 0, the player dies.
</li>
<li>
<p align="justify">The  player's  armor class (Ac).  This number describes
the amount of protection provided by the armor, cloaks,
and/or  rings currently worn by the player.  It is also
affected by high or low dexterity.  Wearing no armor is
equivalent  to  an  armor  class of 10.  The protection
level increases as the armor class decreases.
</li>
<li>
<p align="justify">The player's current experience level (Exp) followed by
the  player's  experience  points.  The player can gain
experience points  by  killing  monsters,  successfully
stealing  from  monsters, and turning monsters.  When a
player gains enough  experience  points  to  surpass  a
threshold  that depends on the player's character type,
the player reaches  a  new  experience  level.   A  new
experience  level  brings extra hit points and possibly
added abilities, such as a new spell for a magician  or
a new prayer for a cleric.
</li>
<li>
<p align="justify">A   description   of   the  player's  character.   This
description depends on the player's character type  and
experience level.
</li>
</ul>

<h3 align="justify">5.0 COMMANDS</h3>

<p align="justify">     
A  player  can  invoke  most Rogue commands by typing a
single  character.   Some  commands,  however,   require   a
direction,  in  which  case  the  player  types  the command
character followed by a directional command.  Many  commands
can  be  prefaced by a number, indicating how many times the
command should be executed.
</p>

<p align=justify>
When the player invokes a command referring to an  item
in  the  player's  pack (such as reading a scroll), the game
prompts for the item.   The  player  should  then  type  the
letter  associated  with  the  item,  as  displayed  by  the
inventory command.  Typing a '*' at this  point  produces  a
list of the eligible items.
</p>

<p align=center><b><i>Rogue understands the following commands:</i></b></p>

<p>
<table border="0" cellpadding="3" style="border-collapse: collapse" id="table4" cellspacing="3">
	<tr>
		<td align="center" valign="top">?</td>
		<td>&nbsp;&nbsp;&nbsp;</td>
		<td>Preceding a command by a '?' produces a brief explanation of the 
		command. The command '?*' gives an explanation of all the commands.</td>
	</tr>
	<tr>
		<td align="center" valign="top">/</td>
		<td>&nbsp;</td>
		<td>Preceding a symbol by a '/' identifies the symbol.</td>
	</tr>
	<tr>
		<td align="center" valign="top">=</td>
		<td>&nbsp;</td>
		<td>Clarify. After typing an '=' sign, the player can use the movement 
		keys to position the cursor anywhere on the current level. As long as 
		the player can normally see the selected position, Rogue will identify 
		whatever is at that space. Examples include a sleeping giant rat, a blue 
		potion, and a food ration.</td>
	</tr>
	<tr>
		<td align="center" valign="top">h</td>
		<td>&nbsp;</td>
		<td>Move one position to the left.</td>
	</tr>
	<tr>
		<td align="center" valign="top">j</td>
		<td>&nbsp;</td>
		<td>Move one position down.</td>
	</tr>
	<tr>
		<td align="center" valign="top">k</td>
		<td>&nbsp;</td>
		<td>Move one position up.</td>
	</tr>
	<tr>
		<td align="center" valign="top">l</td>
		<td>&nbsp;</td>
		<td>Move one position to the right.</td>
	</tr>
	<tr>
		<td align="center" valign="top">y</td>
		<td height="21">&nbsp;</td>
		<td height="21">Move one position to the top left.</td>
	</tr>
	<tr>
		<td align="center" valign="top">u</td>
		<td>&nbsp;</td>
		<td>Move one position to the top right.</td>
	</tr>
	<tr>
		<td align="center" valign="top">b</td>
		<td>&nbsp;</td>
		<td>Move one position to the bottom left.</td>
	</tr>
	<tr>
		<td align="center" valign="top">n</td>
		<td>&nbsp;</td>
		<td>Move one position to the bottom right</td>
	</tr>
	<tr>
		<td align="center" valign="top">H</td>
		<td>&nbsp;</td>
		<td>Run to the left until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">J</td>
		<td>&nbsp;</td>
		<td>Run down until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">K</td>
		<td>&nbsp;</td>
		<td>Run up until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">L</td>
		<td>&nbsp;</td>
		<td>Run to the right until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">Y</td>
		<td>&nbsp;</td>
		<td>Run to the top left until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">U</td>
		<td>&nbsp;</td>
		<td>Run to the top right until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">B</td>
		<td>&nbsp;</td>
		<td>Run to the bottom left until reaching something interesting.</td>
	</tr>
	<tr>
		<td align="center" valign="top">N</td>
		<td>&nbsp;</td>
		<td>Run to the bottom right until reaching something interesting</td>