tims@zeus.UUCP (Tim Stoehr) (12/15/86)
From the responses I've gotten from the distribution of my rogue 5.3 clone,
I thought the following notes would be of general interest to those working
with the source I posted.
^A command:
This command prints out your Hp raise avererage, like
R-Hp: 6.00, E-Hp: 6.66 (!: 3, V: 1)
This gives your real (R) Hp raise average, and your effective (E)
Hp raise average. The (R)eal one is calculated simply from the raises
themselves. The (E)ffective one has Hp raises from potions and Hp
losses from vampires factored in. These totals are listed between
the parentesis. (1 and 3 in the line above)
Inventorying items:
Whenever the game asks you something like:
Inventory what?
Throw what?
Drop what?
etc.
You may type in one of the following characters: *)]:!?=
'*' will inventory all logical choices, like weapons when throwing.
'?' will inventory only scrolls
'!' for potions
etc.
This is a convenient way to filter out unnecessary inventory searching.
For example, if you want to drop one of your rings, you type 'd' followed
by '=' to get a list of your rings to select from.
One definite bug was found, line 235 in message.c, in the routine
print_stats(), should read:
if (rogue.armor && (rogue.armor->damage_enchantment > MAX_ARMOR)) {
Previously, it was missing the first condition of this 'if' statement, which
is necessary to prevent accessing a NULL pointer. Apparently, referencing
a NULL pointer is OK on the two machines that I tested the program on.
I would appreciate notification of any bugs anyone might find.
If you run into an infinite loop in get_rand_row_col(), called from
put_player(), this is because you got an updated part 4 without an
updated part 1. This may have happened to someone to whom I resent
part 4. If this has happened, the game will hang immediately, send
mail to me for new part 1.
I have received numerous requests for one or more parts of the source.
I have responded at least once to all such requests. Some of them,
however, keep coming back because of an incorrect net path. If you
have such a request, perhaps you could send along the net path that
would reach you from the node 'tektronix' Otherwise, I just let the
mail-reply program figure out what the path is, and this often fails.
Porting issues/notes:
Required libraries:
curses: screen update optimization package
termlib: terminal library
stdio: standard I/O, stdio.h must be available, as well
as fopen(), fclose(), fread(), fwrite(), getchar().
It is assumed all persons putting this program on non-BSD and/or
non-UNIX machines will have to do some amount of porting work.
Remove the contents of the routine edchars() in init.c if you are
on a non-BSD OS Even if you are on a BSD OS, you may not need
this routine. Its purpose is to allow CBREAK mode, but to disallow
the device driver from intercepting characters like ^Z,^Y,^O etc.
Remove any references to the routine tstp() if your version of UNIX
doesn't support SIGTSTP (stopped processes), or your O.S. is not
UNIX at all.
You may want to change the fields of 'struct object' in object.h from
'char' and 'boolean' to 'short'. Some machines apparently don't
handle arithmetic of 'char' very well.
Gettimeofday() and stat(), are used in save.c to identify a save-file's
creation time and file descriptor. Equivalent logic must replace this
for an alternate OS.
Signals SIGINT, SIGQUIT, and SIGHUP are used along with the library
routine signal(). These can easily be replaced by alternate
exception handling routines.