[net.sources.games] Notes on rogue 5.3 clone.

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.