[comp.sources.games] v05i086: wanderer2 - mini rogue-like adventure game

games@tekred.TEK.COM (11/30/88)

Submitted by: Steven Shipway <maujp@cu.warwick.ac.uk>
Comp.sources.games: Volume 5, Issue 86
Archive-name: wanderer2/Patch1

	[This was previously posted in comp.sources.games.bugs and is posted
	 here so that it will be archived along with the original source.
	 I changed the original standard diffs to context diffs and made
	 sure that they patched and compiled with no errors.  -br]

  OK, here's the *official* diffs to update Wanderer V2.0(M) to V2.2(M).
(Please don't ask what happened to version 2.1 ...). The sharfile contains
a file of diffs for most of the source files, a new file encrypt.c, a few more
screens and a README file explaining all the alterations.

  Changes include a number of small -> large bugfixes, extra facilities -
eg refresh screen, swap between modes, center screen, more help - , a fix for
the 'stunned' baby monsters ( those moving in small circles ) and also the
addition of 'balloons' to the game ( see screen.23 ). All of the changes
are documented in the README file.

  -Steven Shipway

maujp@uk.ac.warwick.cu  ( in preference )
csupt@uk.ac.warwick.cu
...!mcvax!ukc!warwick!{maujp,csupt}

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  README2.2 credits encrypt.c patches01 screen.16 screen.21
#   screen.22 screen.23
# Wrapped by billr@saab on Tue Nov 29 17:01:57 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'README2.2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README2.2'\"
else
echo shar: Extracting \"'README2.2'\" \(1522 characters\)
sed "s/^X//" >'README2.2' <<'END_OF_FILE'
XOK, here are the major alterations:
X
X1)  Unless NO_ENCRYPTION has been #def'd then saved games are encrypted.
X    This means an extra source file.
X2)  Lots of cosmetic changes, tidying up messy displaying.
X3)  Extra keys:
X        In Game -   @ --- moves you to center of screen
X                    # --- toggle between normal and fullscreen
X                    W --- redraw screen
X        In Editor - x --- quit edit without saving
X4)  (BIG CHANGE) New object - balloons. These fall up, and are popped by
X   arrows. Also, they kill neither you nor the monster. I havent made any
X   screens involving these, though - maybe you can design a few?
X5)  Help file extended to include info about environment variables, new
X   keys and features.
X6)  Baby monsters can no longer be 'stunned' - trapped in tiny circles -
X   unless you try very hard to get them that way....
X    This cures a bug that Ive been thinking about for ages, and also makes
X   screen 18 a bit easier.
X7)  The -e flag (enter editor) can now take an optional argument. If given,
X   it will take this as the file to be edited. eg, 'wanderer -e screen.1'
X   will edit the file 'screen.1' instead of 'screen' (the default).
X8)  You can no longer sneak off the top of some screens (apparently this
X   is possible on some systems)
X9)  Bug in editor that caused the problem on one of the screens has been
X   fixed.
X
XAlso, there should be a few extra screens and a new credits file in here.
X
X-Steve
X{maujp,csupt}@uk.ac.warwick.cu
X...!mcvax!ukc!warwick!{maujp,csupt}
END_OF_FILE
if test 1522 -ne `wc -c <'README2.2'`; then
    echo shar: \"'README2.2'\" unpacked with wrong size!
fi
# end of 'README2.2'
fi
if test -f 'credits' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'credits'\"
else
echo shar: Extracting \"'credits'\" \(2686 characters\)
sed "s/^X//" >'credits' <<'END_OF_FILE'
X                            WANDERER CREDITS
X                           ==================
X
XThis file should always be available to all players of the game. Feel free to
Xadd anything necessary, eg, if you create some new screens, but don't *delete*
Xanything! -Steven Shipway
X
X-----------------------------------------------------------------------------
X
X        Wanderer was created by Steven Shipway, a first year mathematics
Xstudent at Warwick University, England.  The idea came from games such as
XBoulderdash, Xor, and especially Repton, from Superior Software. (plug, plug)
X
X        Later improvements came from play@nl.cwi, who designed the editor
Xand made countless bugfixes, of which there are too many to list here. He
Xalso improved many parts of the original code, and also designed some
Xscreens. Also Dave (david@ist.co.uk), who did most of the work towards the
Ximproved level jumping routine (sorry, I had to alter it a bit due to other
Xchanges). Jason (jason@uucp.aeras) is responsible for the help routine, for
Xwhich I am eternally grateful since it saved me a lot of work.
X
X        Assisting in the development were Rob McMahon (our systems manager)
Xand Mark Sunnarks. In screen development were the following:
X
XScreens 1,2,3,4,7,8,10,16,23  Steven Shipway (although some of them are AWFUL)
XScreens 5,6             csutg@uk.ac.warwick.cu (far more evil than mine)
XScreen  9               maukr@uk.ac.warwick.cu (also the old bugged screen 13)
XScreens 11,13,14,19,20  play@nl.cwi    (who wishes to remain nameless to avoid
X                                        the netherlands mafia :-)
XScreen  17              david@ist.co.uk  (sorry, I dont know your full name)
XScreen  15              bruce@au.oz.utas.tasis (from Down Under)
XScreen  18                   ''           (relation, age 10)
XScreens 21,22           jn@uk.ac.ukc   (who created the archimedes port)
X
XAny new screens you wish to have added to the list please mail to me for
Xrelease in a official update package. The address is
X{maujp,csupt}@uk.ac.warwick.cu or ...!mcvax!ukc!warwick!{maujp,csupt}.
X
XThe official PC Port for Wanderer was done by Greg Margo, who may be found at
Xgmago@uucp.netxcom or uunet!netxcom!gmargo.
X
XThe X-Windows port - which is pretty impressive - comes from Mike Cuddy.
XHis address is cuddy%convex@edu.umich.cc.umix or ihnp4!convex!cuddy. Although
XI haven't been able to see this one for myself a friend assures me that the
Xgraphics are fantastic.
X
XThe Acorn Archimedes port was done by Max Rockatansky, jn@uk.ac.ukc . Mail him
Xif you want a copy.
X
XAlso thanks to Paul Metcalf for thinking of a name for the game!
X
XIf you missed some of this, try again with 'wanderer -c | more' .
END_OF_FILE
if test 2686 -ne `wc -c <'credits'`; then
    echo shar: \"'credits'\" unpacked with wrong size!
fi
# end of 'credits'
fi
if test -f 'encrypt.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'encrypt.c'\"
else
echo shar: Extracting \"'encrypt.c'\" \(1173 characters\)
sed "s/^X//" >'encrypt.c' <<'END_OF_FILE'
X#include "wand_head.h"
X
X/* Uses seeded random xor to encrypt because setkey doesnt work on our
X   system. 								*/
X
X/* this is the randon number seed */
X#define BLURFL 32451    /* the word blurfl is used for historical reasons */
X                        /* but it can be any nuber */
Xcrypt_file(name)
Xchar *name;
X{
Xchar buffer[1024];
Xint fd,length,loop;
X
Xif((fd = open(name,O_RDONLY)) == -1) {
X	endwin();
X	sprintf(buffer,"Wanderer: cannot open %s",name);
X	perror(buffer);
X	exit(1);
X}
Xif((length = read(fd,buffer,1024)) < 1) {
X	endwin();
X	sprintf(buffer,"Wanderer: read error on %s",name);
X	perror(buffer);
X	exit(1);
X}
Xclose(fd);
X
X/* Right, got it in here, now to encrypt the stuff */
X
Xaddstr("Running crypt routine...\n");
Xrefresh();
X
Xsrand(BLURFL);
Xfor(loop=0;loop<length;loop++)
X	buffer[loop]^=rand();
X
Xif((fd = open(name,O_WRONLY|O_TRUNC))== -1) {
X	endwin();
X	sprintf(buffer,"Wanderer: cannot write to %s",name);
X	perror(buffer);
X	exit(1);
X}
Xif(write(fd,buffer,length)!=length) {
X	endwin();
X	sprintf(buffer,"Wanderer: write error on %s",name);
X	perror(buffer);
X	exit(1);
X}
Xclose(fd);
X
X/* ok, file now contains encrypted/decrypted game. */
X/* lets go back home... */
X}
END_OF_FILE
if test 1173 -ne `wc -c <'encrypt.c'`; then
    echo shar: \"'encrypt.c'\" unpacked with wrong size!
fi
# end of 'encrypt.c'
fi
if test -f 'patches01' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches01'\"
else
echo shar: Extracting \"'patches01'\" \(30930 characters\)
sed "s/^X//" >'patches01' <<'END_OF_FILE'
X*** Makefile.orig	Tue Nov 29 16:43:18 1988
X--- Makefile	Tue Nov 29 16:44:07 1988
X***************
X*** 2,8 ****
X  # modified again by play@cwi.nl
X  # and again by me.. maujp@uk.ac.warwick.cu
X  
X! OBJ = m.o save.o jump.o display.o icon.o game.o read.o help.o fall.o scores.o edit.o
X  
X  CFLAGS = -O
X  LIBS = -lcurses -ltermcap
X--- 2,8 ----
X  # modified again by play@cwi.nl
X  # and again by me.. maujp@uk.ac.warwick.cu
X  
X! OBJ = m.o save.o jump.o display.o icon.o game.o read.o help.o fall.o scores.o edit.o encrypt.o
X  
X  CFLAGS = -O
X  LIBS = -lcurses -ltermcap
X*** display.c.orig	Tue Nov 29 16:43:20 1988
X--- display.c	Tue Nov 29 16:44:16 1988
X***************
X*** 26,35 ****
X  	    addch(ch);
X  	    }
X  	else
X! 	    if(ch==' '||ch=='#'||ch=='<'||ch=='>'||ch=='O'||ch==':'||
X  	       ch=='/'||ch=='\\'||ch=='*'||ch=='='||ch=='@'||ch=='T'||
X  	       ch=='X'||ch=='!'||ch=='M'||ch=='S'||ch=='C'||ch=='+'||
X! 	       ch=='A')
X  		addch(ch);
X  	    else
X  		addch('"');
X--- 26,35 ----
X  	    addch(ch);
X  	    }
X  	else
X!             if(ch==' '||ch=='#'||ch=='<'||ch=='>'||ch=='O'||ch==':'||
X  	       ch=='/'||ch=='\\'||ch=='*'||ch=='='||ch=='@'||ch=='T'||
X  	       ch=='X'||ch=='!'||ch=='M'||ch=='S'||ch=='C'||ch=='+'||
X!                ch=='A'||ch=='^')
X  		addch(ch);
X  	    else
X  		addch('"');
X***************
X*** 114,117 ****
X--- 114,151 ----
X      }                       /* end y loop */
X      move(16,0);
X      refresh();
X+ }
X+ void redraw_screen(maxmoves,num,score,nf,diamonds,mx,sx,sy,frow)
X+ int maxmoves,num,score,nf,diamonds,mx,sx,sy;
X+ char **frow;
X+ {
X+ char buffer[50];
X+ clear();
X+ move(0,48);
X+ (void) addstr("Score\t   Diamonds");
X+ move(1,48);
X+ (void) addstr("\tFound\tTotal");
X+ move(3,48);
X+ (void) sprintf(buffer,"%d\t %d\t %d  ",score,nf,diamonds);
X+ (void) addstr(buffer);
X+ move(6,48);
X+ (void) sprintf(buffer,"Current screen %d",num);
X+ (void) addstr(buffer);
X+ if(maxmoves != 0)
X+ (void) sprintf(buffer,"Moves remaining = %d   ",maxmoves);
X+ else
X+ {
X+     (void) strcpy(buffer,"     Unlimited moves     ");
X+     maxmoves = -1;
X+ };
X+ move(15,48);
X+ (void) addstr(buffer);
X+ if(mx != -1)                            /* tell player if monster exists */
X+     draw_symbol(48,10,'M');
X+ else
X+     draw_symbol(48,10,' ');
X+ if(!debug_disp)
X+     display(sx,sy,frow,score);
X+ else
X+     map(frow);
X  }
X*** edit.c.orig	Tue Nov 29 16:43:08 1988
X--- edit.c	Tue Nov 29 16:44:20 1988
X***************
X*** 3,15 ****
X  extern char *playscreen();
X  
X  extern int debug_disp;
X  extern char screen[NOOFROWS][ROWLEN+1];
X  
X- /* Print instructions around the screen */
X- void instruct()
X- {
X  static char *inst[] = { "O   Boulder",
X  			"< > Arrows",
X  			":   Earth",
X  			"!   Landmine",
X  			"*   Treasure",
X--- 3,14 ----
X  extern char *playscreen();
X  
X  extern int debug_disp;
X+ extern char *edit_screen;
X  extern char screen[NOOFROWS][ROWLEN+1];
X  
X  static char *inst[] = { "O   Boulder",
X  			"< > Arrows",
X+ 			"^   Balloon",
X  			":   Earth",
X  			"!   Landmine",
X  			"*   Treasure",
X***************
X*** 16,22 ****
X  			"/ \\ Deflectors",
X  			"+   Cage",
X  			"= # Rock",
X! 			"T   Teleport (1 max)",
X  			"A   Arrival (1 max)",
X  			"X   Exit (always 1)",
X  			"@   Start (always 1)",
X--- 15,21 ----
X  			"/ \\ Deflectors",
X  			"+   Cage",
X  			"= # Rock",
X! 			"T   Teleport",
X  			"A   Arrival (1 max)",
X  			"X   Exit (always 1)",
X  			"@   Start (always 1)",
X***************
X*** 23,48 ****
X  			"M   Big Monster (1 max)",
X  			"S   Baby Monster",
X  			"-   Alternative space",
X! 			"C   Time Capsule" };
X  int loop;
X! for(loop = 1;loop < 17; loop++)
X      {
X!     move(loop,55);
X!     addstr(inst[loop-1]);
X      }
X! move(21,0);
X! addstr("Use wanderer keys to move. q = quit, p/n = play, m = change no. of moves.");
X  }
X  
X  void noins()
X  {
X  int loop;
X! for(loop =1;loop < 17; loop++)
X      {
X!     move(loop,55);
X      addstr("                       ");
X      }
X! move(21,0);
X  addstr("                                                                            ");
X  }
X  
X--- 22,53 ----
X  			"M   Big Monster (1 max)",
X  			"S   Baby Monster",
X  			"-   Alternative space",
X! 			"C   Time Capsule",
X! 			NULL };
X! /* Print instructions around the screen */
X! void instruct()
X! {
X  int loop;
X! for(loop = 0; inst[loop] ; loop++)
X      {
X!     move(loop+1,55);
X!     addstr(inst[loop]);
X      }
X! move(20,0);
X! addstr("Use wanderer keys to move. m = change no. of moves, p = play game\n");
X! addstr("n = play game with full screen, q = quit, x = quit without save.");
X  }
X  
X  void noins()
X  {
X  int loop;
X! for(loop =0; inst[loop] ; loop++)
X      {
X!     move(loop+1,55);
X      addstr("                       ");
X      }
X! move(20,0);
X! addstr("                                                                            \n");
X  addstr("                                                                            ");
X  }
X  
X***************
X*** 54,60 ****
X       *score;
X  char keys[10];
X  {
X! int  x,y,sx=0,sy=0,quit=0,nx,ny;
X  char (*frow)[ROWLEN+1] = screen,
X       ch;
X  char buffer[50];
X--- 59,65 ----
X       *score;
X  char keys[10];
X  {
X! int  x,y,sx=0,sy=0,quit=0,nx,ny,nosave =0;
X  char (*frow)[ROWLEN+1] = screen,
X       ch;
X  char buffer[50];
X***************
X*** 107,116 ****
X      }
X  else if(ch == 'q')
X      {
X!     move(19,0);
X!     addstr("                                                                          ");
X      break;
X      }
X  else if(ch == 'm')              /* change to number of moves for the screen */
X      {
X      move(19,0);
X--- 112,141 ----
X      }
X  else if(ch == 'q')
X      {
X!     noins();
X      break;
X      }
X+ else if(ch == 'x')
X+     {
X+     noins();
X+     move(20,0);
X+     addstr("You will lose any changes made this session - sre you sure? (y/n)");
X+     refresh();
X+     ch = getch();
X+     if(ch != 'y')
X+ 	{
X+ 	noins();
X+ 	instruct();
X+ 	refresh();
X+     	}
X+     else
X+ 	{
X+ 	nosave = 1;
X+ 	addstr("\n");
X+ 	refresh();
X+ 	break;
X+     	}
X+     }
X  else if(ch == 'm')              /* change to number of moves for the screen */
X      {
X      move(19,0);
X***************
X*** 132,138 ****
X  else if(ch == 'p' || ch == 'n')       /* play the game (test) */
X      {
X  	noins();
X! 	wscreen(num,maxmoves);
X  	if(ch == 'p')
X  	    {
X  	    debug_disp = 0;
X--- 157,163 ----
X  else if(ch == 'p' || ch == 'n')       /* play the game (test) */
X      {
X  	noins();
X!         wscreen(num,maxmoves);
X  	if(ch == 'p')
X  	    {
X  	    debug_disp = 0;
X***************
X*** 181,192 ****
X  y=ny;
X  }
X  
X! for(y = 0; y<NOOFROWS;y++)       /* certain editors - eg ded - have a */
X! 			         /* habit of truncating trailing spaces*/
X! 		                 /* so this should stop them! */
X!     if(screen[y][ROWLEN-1] == ' ')
X! 	screen[y][ROWLEN-1] = '-';
X! wscreen(num,maxmoves);
X  move(20,0);
X  refresh();
X  }
X--- 206,221 ----
X  y=ny;
X  }
X  
X! if(! nosave)
X!     {
X!     for(y = 0; y<=NOOFROWS;y++) /* certain editors - eg ded - have a */
X!                                 /* habit of truncating trailing spaces*/
X!             	    		/* so this should stop them! */
X!         if(screen[y][ROWLEN-1] == ' ')
X! 	    screen[y][ROWLEN-1] = '-';
X!     wscreen(num,maxmoves);
X!     }
X! noins();
X  move(20,0);
X  refresh();
X  }
X*** fall.c.orig	Tue Nov 29 16:43:09 1988
X--- fall.c	Tue Nov 29 16:44:26 1988
X***************
X*** 26,36 ****
X  int  x,y,sx,sy, *mx, *my;
X  char howdead[25];
X  {
X! int nx = x,nyl = y,nyr = y,retval = 0;
X  if ((y>(NOOFROWS-1))||(y<0)||(x<0)||(x>(ROWLEN-1)))
X      return(0);
X  if((screen[y][x] != 'O') && (screen[y][x] != ' ') && (screen[y][x] != 'M') &&
X!    (screen[y][x] !='\\') && (screen[y][x] != '/') && (screen[y][x] != '@'))
X      return(0);
X  if(screen[y][x] == 'O')
X      {
X--- 26,37 ----
X  int  x,y,sx,sy, *mx, *my;
X  char howdead[25];
X  {
X! int nx = x,nxu = x,nyl = y,nyr = y,retval = 0;
X  if ((y>(NOOFROWS-1))||(y<0)||(x<0)||(x>(ROWLEN-1)))
X      return(0);
X  if((screen[y][x] != 'O') && (screen[y][x] != ' ') && (screen[y][x] != 'M') &&
X!    (screen[y][x] !='\\') && (screen[y][x] != '/') && (screen[y][x] != '@') &&
X!    (screen[y][x] != '^'))
X      return(0);
X  if(screen[y][x] == 'O')
X      {
X***************
X*** 43,48 ****
X--- 44,58 ----
X  	else
X  	    nx = -1;
X  	}
X+     if((screen[y][x-1] == ' ') && (screen[y+1][x-1] == ' '))
X+         nxu--;
X+     else
X+ 	{
X+         if((screen[y][x+1] == ' ') && (screen[y+1][x+1] == ' '))
X+             nxu++;
X+ 	else
X+ 	    nxu = -1;
X+ 	}
X      if((screen[y-1][x] == ' ') && (screen[y-1][x+1] == ' '))
X          nyr--;
X      else
X***************
X*** 66,71 ****
X--- 76,83 ----
X      {
X      if(screen[y-1][++nx] != ' ')
X  	nx = -1;
X+     if(screen[y+1][--nxu] != ' ')
X+         nxu = -1;
X      if(screen[--nyr][x+1] != ' ')
X          nyr = -1;
X      if(screen[++nyl][x-1] != ' ')
X***************
X*** 75,80 ****
X--- 87,94 ----
X      {
X      if(screen[y-1][--nx] != ' ')
X  	nx = -1;
X+     if(screen[y+1][++nxu] != ' ')
X+         nxu = -1;
X      if(screen[++nyr][x+1] != ' ')
X  	nyr = -1;
X      if(screen[--nyl][x-1] != ' ')
X***************
X*** 82,88 ****
X      }
X  if((screen[y][nx] != ' ') && (screen[y][nx] != 'M'))
X      nx = -1;
X! if((screen[y-1][x] == 'O') && (nx >= 0) && (y > 0)) /* boulder falls ? */
X      {
X      screen[y-1][x] = ' ';
X      if(screen[y][nx] == '@')
X--- 96,103 ----
X      }
X  if((screen[y][nx] != ' ') && (screen[y][nx] != 'M'))
X      nx = -1;
X! if((screen[y-1][x] == 'O') && (nx >= 0) && (y > 0) &&
X!    (screen[y][nx] != '^')) /* boulder falls ? */
X      {
X      screen[y-1][x] = ' ';
X      if(screen[y][nx] == '@')
X***************
X*** 124,130 ****
X  	screen[y+1][nx] = ' ';
X      	}
X      }
X! if((screen[nyr][x] != ' ')&&(screen[nyr][x] != 'M'))
X      nyr = -1;
X  if((screen[y][x+1] == '<')&&(nyr>=0)&&(x+1<ROWLEN)) /* arrow moves ( < ) ? */
X      {
X--- 139,145 ----
X  	screen[y+1][nx] = ' ';
X      	}
X      }
X! if((screen[nyr][x] != '^')&&(screen[nyr][x] != ' ')&&(screen[nyr][x] != 'M'))
X      nyr = -1;
X  if((screen[y][x+1] == '<')&&(nyr>=0)&&(x+1<ROWLEN)) /* arrow moves ( < ) ? */
X      {
X***************
X*** 168,174 ****
X  	screen[nyr][x-1] = ' ';
X      	}
X      }
X! if((screen[nyl][x] != ' ')&&(screen[nyl][x] != 'M'))
X      nyl = -1;
X  if((screen[y][x-1] == '>')&&(nyl>=0)&&(x>0))       /* arrow moves ( > ) ? */
X      {
X--- 183,189 ----
X  	screen[nyr][x-1] = ' ';
X      	}
X      }
X! if((screen[nyl][x] != ' ')&&(screen[nyl][x] != '^')&&(screen[nyl][x] != 'M'))
X      nyl = -1;
X  if((screen[y][x-1] == '>')&&(nyl>=0)&&(x>0))       /* arrow moves ( > ) ? */
X      {
X***************
X*** 211,216 ****
X--- 226,256 ----
X      	*mx = *my = -2;
X  	screen[nyl][x+1] = ' ';
X      	}
X+     }
X+ if(screen[y][nxu] != ' ')
X+     nxu = -1;
X+ if((screen[y+1][x] == '^') && (nxu >= 0) && (y < NOOFROWS) &&
X+    (screen[y][x] != '^')) /* balloon rises? */
X+     {
X+     screen[y+1][x] = ' ';
X+     screen[y][nxu] = '^';
X+     if(!debug_disp)
X+ 	{
X+         if((y<(sy+3)) && (y>(sy-5)) && (x>(sx-6)) && (x<(sx+6)))
X+             draw_symbol((x-sx+5)*3,(y-sy+4)*2,' ');
X+         if((y<(sy+4)) && (y>(sy-4)) && (nxu>(sx-6)) && (nxu<(sx+6)))
X+             draw_symbol((nxu-sx+5)*3,(y-sy+3)*2,'^');
X+ 	}
X+     else
X+ 	{
X+ 	move(y+2,x+1);
X+ 	addch(' ');
X+ 	move(y+1,nxu+1);
X+ 	addch('^');
X+     }
X+     refresh();
X+     retval+=fall(mx,my,nxu ,y-1,sx,sy,howdead);
X+     retval+=check(mx,my,x,y+1,0,-1,sx,sy,howdead);
X      }
X  if(retval>0)
X      return(1);
X*** game.c.orig	Tue Nov 29 16:43:11 1988
X--- game.c	Tue Nov 29 16:44:31 1988
X***************
X*** 1,7 ****
X  #include "wand_head.h"
X  
X  #define viable(x,y) (((screen[y][x] == ' ') || (screen[y][x] == ':') ||\
X! 	(screen[y][x] == '@') || (screen[y][x] == '+')) && (y >= 0) &&\
X  	(x >= 0) && (y < NOOFROWS) && (x < ROWLEN))
X  
X  /* typedef struct mon_rec		*//* M002 struct mon_rec moved	*/
X--- 1,8 ----
X  #include "wand_head.h"
X  
X  #define viable(x,y) (((screen[y][x] == ' ') || (screen[y][x] == ':') ||\
X! 	(screen[y][x] == '@') || (screen[y][x] == '+') ||\
X! 	(screen[y][x] == 'S')) && (y >= 0) &&\
X  	(x >= 0) && (y < NOOFROWS) && (x < ROWLEN))
X  
X  /* typedef struct mon_rec		*//* M002 struct mon_rec moved	*/
X***************
X*** 33,38 ****
X--- 34,40 ----
X  
X  extern void map();
X  
X+ extern void redraw_screen();
X  extern int debug_disp;
X  extern int edit_mode;
X  extern int saved_game;
X***************
X*** 131,137 ****
X  {
X  int  x,y,nx,ny,deadyet =0,
X       sx = -1,sy = -1,tx = -1,ty = -1,lx = 0,ly = 0,mx = -1,my = -1,
X!      bx, by, nbx, nby,
X       newnum,
X       max_score = 250,
X       diamonds = 0, nf = 0,hd ,vd ,xdirection,ydirection;
X--- 133,139 ----
X  {
X  int  x,y,nx,ny,deadyet =0,
X       sx = -1,sy = -1,tx = -1,ty = -1,lx = 0,ly = 0,mx = -1,my = -1,
X!      bx, by, nbx, nby, tmpx,tmpy,
X       newnum,
X       max_score = 250,
X       diamonds = 0, nf = 0,hd ,vd ,xdirection,ydirection;
X***************
X*** 249,261 ****
X  nx=x;
X  ny=y;
X  
X! if(ch == keys[3])              /* move about - but thats obvious */
X  	nx++;
X! if(ch == keys[2])
X  	nx--;
X! if((ch == keys[1]) && (y<(NOOFROWS-1)))
X  	ny++;
X! if(ch == keys[0])
X          ny--;
X  if(ch == '1')                  /* Add or get rid of that awful sound */
X  	{
X--- 251,263 ----
X  nx=x;
X  ny=y;
X  
X! if((ch == keys[3]) && (x <(ROWLEN-1)))  /* move about - but thats obvious */
X  	nx++;
X! if((ch == keys[2]) && (x > 0))
X  	nx--;
X! if((ch == keys[1]) && (y <(NOOFROWS-1)))
X  	ny++;
X! if((ch == keys[0]) && (y > 0))
X          ny--;
X  if(ch == '1')                  /* Add or get rid of that awful sound */
X  	{
X***************
X*** 305,313 ****
X--- 307,348 ----
X  if(ch == '?')
X  	{
X  	helpme();
X+ 	if(debug_disp)
X+ 	    map(frow);
X+         else
X+ 	    display(sx,sy,frow,*score);
X+ 	continue;
X+ 	}
X+ if((ch == '@')&&(!debug_disp))
X+ 	{
X+ 	sx = x;
X+ 	sy = y;
X  	display(sx,sy,frow,*score);
X  	continue;
X  	}
X+ if(ch == '#')
X+ 	{
X+ 	debug_disp = 1 - debug_disp;
X+ 	if(debug_disp)
X+ 		map(frow);
X+ 	else
X+ 		{
X+  		for(tmpy=0;tmpy<=(NOOFROWS+1);tmpy++)
X+         		{
X+         		move(tmpy,0);
X+         		for(tmpx=0;tmpx<=(ROWLEN+2);tmpx++)
X+ 	    			addch(' ');
X+ 			}
X+ 		sx = x; sy = y;
X+ 		display(sx,sy,frow,*score);
X+ 		}
X+ 	continue;
X+ 	}
X+ if(ch == 'W')
X+ 	{
X+         redraw_screen(maxmoves,*num,*score,nf,diamonds,mx,sx,sy,frow);
X+ 	continue;
X+ 	}
X  
X  /* M002  Added save/restore game feature.  Gregory H. Margo	*/
X  if(ch == 'S')           /* save game */
X***************
X*** 463,468 ****
X--- 498,536 ----
X  	    x = nx;
X  	    }
X  	break;
X+     case '^':
X+ 	if(screen[y][nx*2-x] == ' ')
X+ 	    {
X+ 	    screen[y][nx*2-x] = '^';
X+ 	    screen[y][x] = ' ';
X+             screen[ny][nx] = '@';
X+ 	    if(!debug_disp)
X+ 		{
X+                 draw_symbol((x-sx+5)*3,(y-sy+3)*2,' ');
X+                 draw_symbol((nx-sx+5)*3,(ny-sy+3)*2,'@');
X+ 		if(nx*2-x>sx-6&&nx*2-x<sx+6)
X+                     draw_symbol((nx*2-x-sx+5)*3,(y-sy+3)*2,'^');
X+ 		}
X+ 	    else
X+ 		{
X+ 		move(y+1,x+1);
X+ 		addch(' ');
X+ 		move(ny+1,nx+1);
X+ 		addch('@');
X+ 		move(y+1,nx*2-x+1);
X+ 		addch('^');
X+ 		}
X+             deadyet += fall(&mx,&my,nx*2-x,y-1,sx,sy,howdead);
X+             deadyet += fall(&mx,&my,x*2-nx,y,sx,sy,howdead);
X+             deadyet += fall(&mx,&my,x,y,sx,sy,howdead);
X+             deadyet += fall(&mx,&my,x,y+1,sx,sy,howdead);
X+             deadyet += fall(&mx,&my,x,y-1,sx,sy,howdead);
X+             move(16,0);
X+             refresh();
X+ 	    y = ny;
X+ 	    x = nx;
X+ 	    }
X+ 	break;
X      case '<':
X      case '>':
X  	if(screen[ny*2-y][x] == 'M')
X***************
X*** 718,730 ****
X      refresh();
X      }
X  
X! current = &start_of_list;
X  while((current != tail_of_list)&&(!deadyet))
X      /* deal with those little monsters */
X      {
X      monster = current->next;
X      new_disp = new_direction( monster->x, monster->y, monster->mx, monster->my );
X!     if(monster->under!='S')
X  	{
X          screen[monster->y][monster->x] = monster->under;
X          if(!debug_disp)
X--- 786,798 ----
X      refresh();
X      }
X  
X! current = &start_of_list;                         /* baby monsters now */
X  while((current != tail_of_list)&&(!deadyet))
X      /* deal with those little monsters */
X      {
X      monster = current->next;
X      new_disp = new_direction( monster->x, monster->y, monster->mx, monster->my );
X!     if(monster->under!='S')             /* if on top of another baby */
X  	{
X          screen[monster->y][monster->x] = monster->under;
X          if(!debug_disp)
X*** help.c.orig	Tue Nov 29 16:43:21 1988
X--- help.c	Tue Nov 29 16:44:35 1988
X***************
X*** 10,24 ****
X  " Collect all the treasure:    /$\\  ", /* 4 */
X  "                              \\$/  ", /* 5 */
X  " Then go through the exit:    Way  ", /* 6 */
X! " Default keys are:            out  ", /* 7 */
X  "  h  Left       j  Down            ", /* 8 */
X  "  k  Up         l  Right           ", /* 9 */
X  "  1  Loud       q  Quit game       ", /* 10 */
X  "  0  Quiet      !  Look at map     ", /* 11 */
X  "  S  Save game  R  Restore Game    ", /* 12 */
X! "  ?  Enter help mode               ", /* 13 */
X! "  ~  Jump to next level            ", /* 14 */
X! "     (does not receive level bonus)", /* 15 */
X  
X  "This is you:  You are a spider.    ", /* 0 */
X  "      o       (At least, that's    ", /* 1 */
X--- 10,24 ----
X  " Collect all the treasure:    /$\\  ", /* 4 */
X  "                              \\$/  ", /* 5 */
X  " Then go through the exit:    Way  ", /* 6 */
X! "                              out  ", /* 7 */
X  "  h  Left       j  Down            ", /* 8 */
X  "  k  Up         l  Right           ", /* 9 */
X  "  1  Loud       q  Quit game       ", /* 10 */
X  "  0  Quiet      !  Look at map     ", /* 11 */
X  "  S  Save game  R  Restore Game    ", /* 12 */
X! "  ?  Help mode  @  Center screen   ", /* 13 */
X! "  ~  Jump level #  Switch mode     ", /* 14 */
X! " nb: No level bonus for jumping.   ", /* 15 */
X  
X  "This is you:  You are a spider.    ", /* 0 */
X  "      o       (At least, that's    ", /* 1 */
X***************
X*** 58,65 ****
X  "is captured and you get 50 points. ", /* 1 */
X  "The cage also becomes a diamond.   ", /* 2 */
X  "                                   ", /* 3 */
X! " !!! and  I  Instant annihilation  ", /* 4 */
X! " !!!      o                        ", /* 5 */
X  "                                   ", /* 6 */
X  " \\_       _/   Slopes (boulders    ", /* 7 */
X  "   \\ and /     and etc slide off)  ", /* 8 */
X--- 58,65 ----
X  "is captured and you get 50 points. ", /* 1 */
X  "The cage also becomes a diamond.   ", /* 2 */
X  "                                   ", /* 3 */
X! "  I   Instant annihilation         ", /* 4 */
X! "  o                                ", /* 5 */
X  "                                   ", /* 6 */
X  " \\_       _/   Slopes (boulders    ", /* 7 */
X  "   \\ and /     and etc slide off)  ", /* 8 */
X***************
X*** 70,75 ****
X--- 70,91 ----
X  "                                   ", /* 3 */
X  " Way  Exit -- Must Collect all the ", /* 4 */
X  " out  treasure first. (250 bonus)  ", /* 5 */
X+ " /~\\  A new addition for version   ", /* 0 */
X+ " \\_X  2.2M . The balloon rises,    ", /* 1 */
X+ "      and is popped by arrows. It  ", /* 2 */
X+ "      does *not* kill you.         ", /* 3 */
X+ "                                   ", /* 4 */
X+ " OOO  Unrecognised symbol in map.  ", /* 5 */
X+ " OOO  This is probably a **bug** ! ", /* 6 */
X+ "                                   ", /* 7 */
X+ " ENVIRONMENT VARIABLES:            ", /* 8 */
X+ "                                   ", /* 9 */
X+ "   NEWNAME,NAME : Checked in that  ", /* 0 */
X+ "       order for the hiscore table ", /* 1 */
X+ "   NEWKEYS : Redefine movement keys", /* 2 */
X+ "       eg- 'hlkj' for default      ", /* 3 */
X+ "   SAVENAME : File used for saved  ", /* 4 */
X+ "       games.                      ", /* 5 */
X  };
X  
X  
X***************
X*** 81,87 ****
X  	char *ptr;  /* pointer in array.. */
X  	char ch;
X  
X! 	for(i1 = 0; i1 < 4; i1++)  /* times to show loop. */
X  	{
X  		for(i = 0; i < 16; i++)	/* show one menu. */
X  		{
X--- 97,103 ----
X  	char *ptr;  /* pointer in array.. */
X  	char ch;
X  
X! 	for(i1 = 0; i1 < 5; i1++)  /* times to show loop. */
X  	{
X  		for(i = 0; i < 16; i++)	/* show one menu. */
X  		{
X*** icon.c.orig	Tue Nov 29 16:43:22 1988
X--- icon.c	Tue Nov 29 16:44:40 1988
X***************
X*** 9,83 ****
X           (*iconrow)[4] = icon;
X      switch(ch)
X      {
X!     case ' ':
X!         strcpy((*iconrow++),"   ");
X!         strcpy((*iconrow),"   ");
X          break;
X!     case '#':
X          strcpy(*iconrow++,"###");
X!         strcpy(*iconrow,"###");
X          break;
X!     case '<':
X          strcpy(*iconrow++,"<--");
X!         strcpy(*iconrow,"<--");
X          break;
X      case '>':
X          strcpy(*iconrow++,"-->");
X!         strcpy(*iconrow,"-->");
X          break;
X!     case 'O':
X          strcpy(*iconrow++,"/^\\");
X!         strcpy(*iconrow,"\\_/");
X          break;
X!     case ':':
X          strcpy(*iconrow++,". .");
X!         strcpy(*iconrow," . ");
X          break;
X!     case '/':
X          strcpy(*iconrow++," _/");
X!         strcpy(*iconrow,"/  ");
X          break;
X      case '\\':
X          strcpy(*iconrow++,"\\_ ");
X!         strcpy(*iconrow,"  \\");
X          break;
X!     case '*':
X          strcpy(*iconrow++,"/$\\");
X!         strcpy(*iconrow, "\\$/");
X          break;
X!     case '=':
X          strcpy(*iconrow++,"=-=");
X          strcpy(*iconrow,  "-=-");
X          break;
X!     case '@':
X          strcpy(*iconrow++," o ");
X          strcpy(*iconrow,  "<|>");
X          break;
X!     case 'T':
X          strcpy(*iconrow++,"(*)");
X          strcpy(*iconrow,  "(*)");
X          break;
X!     case 'X':
X          strcpy(*iconrow++,"Way");
X          strcpy(*iconrow,  "Out");
X          break;
X!     case '!':
X          strcpy(*iconrow++," I ");
X          strcpy(*iconrow,  " o ");
X          break;
X!     case 'M':
X          strcpy(*iconrow++,"}o{");
X          strcpy(*iconrow,  "/^\\");
X          break;
X!     case 'S':
X          strcpy(*iconrow++,"-o-");
X          strcpy(*iconrow,  "/*\\");
X          break;
X!     case 'C':
X          strcpy(*iconrow++,"   ");
X          strcpy(*iconrow,  "<O>");
X          break;
X!     case '+':
X          strcpy(*iconrow++,"TTT");
X          strcpy(*iconrow,  "III");
X          break;
X--- 9,87 ----
X           (*iconrow)[4] = icon;
X      switch(ch)
X      {
X!     case ' ':                    /*  space  */
X!         strcpy(*iconrow++,"   ");
X!         strcpy(*iconrow,  "   ");
X          break;
X!     case '#':                   /*  rock  */
X          strcpy(*iconrow++,"###");
X!         strcpy(*iconrow,  "###");
X          break;
X!     case '<':                   /*  arrows  */
X          strcpy(*iconrow++,"<--");
X!         strcpy(*iconrow,  "<--");
X          break;
X      case '>':
X          strcpy(*iconrow++,"-->");
X!         strcpy(*iconrow,  "-->");
X          break;
X!     case 'O':                    /* boulder  */
X          strcpy(*iconrow++,"/^\\");
X!         strcpy(*iconrow,  "\\_/");
X          break;
X!     case ':':                    /*  earth  */
X          strcpy(*iconrow++,". .");
X!         strcpy(*iconrow,  " . ");
X          break;
X!     case '/':                    /*  slopes */
X          strcpy(*iconrow++," _/");
X!         strcpy(*iconrow,  "/  ");
X          break;
X      case '\\':
X          strcpy(*iconrow++,"\\_ ");
X!         strcpy(*iconrow,  "  \\");
X          break;
X!     case '*':                     /*  diamond  */
X          strcpy(*iconrow++,"/$\\");
X!         strcpy(*iconrow,  "\\$/");
X          break;
X!     case '=':                     /*  rock  */
X          strcpy(*iconrow++,"=-=");
X          strcpy(*iconrow,  "-=-");
X          break;
X!     case '@':                     /*  YOU!!! */
X          strcpy(*iconrow++," o ");
X          strcpy(*iconrow,  "<|>");
X          break;
X!     case 'T':                   /*  teleport  */
X          strcpy(*iconrow++,"(*)");
X          strcpy(*iconrow,  "(*)");
X          break;
X!     case 'X':                    /*  exits  */
X          strcpy(*iconrow++,"Way");
X          strcpy(*iconrow,  "Out");
X          break;
X!     case '!':                    /*  landmine  */
X          strcpy(*iconrow++," I ");
X          strcpy(*iconrow,  " o ");
X          break;
X!     case 'M':                     /* big monster  */
X          strcpy(*iconrow++,"}o{");
X          strcpy(*iconrow,  "/^\\");
X          break;
X!     case 'S':                     /* baby monster */
X          strcpy(*iconrow++,"-o-");
X          strcpy(*iconrow,  "/*\\");
X          break;
X!     case '^':			 /* balloon */
X!         strcpy(*iconrow++,"/~\\");
X!         strcpy(*iconrow,  "\\_X");
X!         break;
X!     case 'C':                    /* time capsule */
X          strcpy(*iconrow++,"   ");
X          strcpy(*iconrow,  "<O>");
X          break;
X!     case '+':                    /* cage */
X          strcpy(*iconrow++,"TTT");
X          strcpy(*iconrow,  "III");
X          break;
X*** m.c.orig	Tue Nov 29 16:43:23 1988
X--- m.c	Tue Nov 29 16:44:52 1988
X***************
X*** 12,17 ****
X--- 12,18 ----
X  char screen[NOOFROWS][ROWLEN+1];
X  int edit_mode = 0;
X  int saved_game = 0;
X+ char *edit_screen;
X  
X  main(argc,argv)
X  int  argc;
X***************
X*** 28,33 ****
X--- 29,35 ----
X      if(!strcmp(argv[1], "-e"))
X  	{
X  	edit_mode = 1;
X+ 	edit_screen = NULL;
X  	}
X      else if(!strcmp(argv[1], "-m"))
X  	{
X***************
X*** 58,71 ****
X  	}
X      else
X  	{
X! 	fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
X  	exit(1);
X          }
X      }
X  if(argc > 2)
X      {
X!     fprintf(stderr,"Usage: %s [ -e | -m | -c | -s | -f ]\n",argv[0]);
X!     exit(1);
X      }
X  
X  /* check for passwords - if file no_pws is in screen dir no pws! */
X--- 60,81 ----
X  	}
X      else
X  	{
X! 	fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
X  	exit(1);
X          }
X      }
X  if(argc > 2)
X      {
X!     if(!strcmp(argv[1],"-e"))
X! 	{
X! 	edit_mode = 1;
X! 	edit_screen = argv[2];
X! 	}
X!     else
X! 	{
X!         fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
X!         exit(1);
X! 	}
X      }
X  
X  /* check for passwords - if file no_pws is in screen dir no pws! */
X*** read.c.orig	Tue Nov 29 16:43:13 1988
X--- read.c	Tue Nov 29 16:44:55 1988
X***************
X*** 1,6 ****
X--- 1,7 ----
X  #include "wand_head.h"
X  
X  extern int edit_mode;
X+ extern char *edit_screen;
X  extern char screen[NOOFROWS][ROWLEN+1];
X  
X  int rscreen(num,maxmoves)
X***************
X*** 13,22 ****
X  if(!edit_mode)
X      sprintf(name,"%s/screen.%d",SCREENPATH,num);
X  else
X!     sprintf(name,"./screen");
X  fp = fopen(name,"r");
X  if(fp == NULL)
X!     printf("\nFile for screen %d unavailable.\n\n",num) ;
X  else
X      {
X      for(y = 0;y<NOOFROWS;y++)
X--- 14,33 ----
X  if(!edit_mode)
X      sprintf(name,"%s/screen.%d",SCREENPATH,num);
X  else
X!     {
X!     if(!edit_screen)
X!         sprintf(name,"./screen");
X!     else
X! 	sprintf(name,"%s",edit_screen);
X!     }
X  fp = fopen(name,"r");
X  if(fp == NULL)
X!     {
X!     if(edit_mode)
X! 	printf("\nCannot find file %s.\n\n",name);
X!     else
X!         printf("\nFile for screen %d unavailable.\n\n",num) ;
X!     }
X  else
X      {
X      for(y = 0;y<NOOFROWS;y++)
X***************
X*** 36,43 ****
X  {
X  int  y,x;
X  FILE *fp;
X  char (*row_ptr)[ROWLEN+1] = screen;
X! fp = fopen("./screen","w");
X  if(fp == NULL)
X      printf("\nFile for screen cannot be written.\n\n") ;
X  else
X--- 47,68 ----
X  {
X  int  y,x;
X  FILE *fp;
X+ char name[50];
X  char (*row_ptr)[ROWLEN+1] = screen;
X! if(!edit_screen)
X!     sprintf(name,"./screen");
X! else
X!     sprintf(name,"%s",edit_screen);
X! fp = fopen(name,"w");
X! if(fp == NULL)
X!     {
X!     sprintf(name,"/tmp/screen.%d",getpid());
X!     fp = fopen(name,"w");
X!     move(21,0);
X!     addstr("Written file is ");
X!     addstr(name);
X!     refresh();
X!     }
X  if(fp == NULL)
X      printf("\nFile for screen cannot be written.\n\n") ;
X  else
X*** save.c.orig	Tue Nov 29 16:43:25 1988
X--- save.c	Tue Nov 29 16:45:02 1988
X***************
X*** 1,8 ****
X--- 1,10 ----
X  #include "wand_head.h"
X+ #include <errno.h>
X  
X  extern char screen[NOOFROWS][ROWLEN+1];
X  extern int saved_game;
X  
X+ extern void crypt_file();
X  struct	saved_game	{
X  	short	num;
X  	short	score;
X***************
X*** 37,43 ****
X  		gets(fp);
X  	}
X  	if ((FILE *)NULL == (fo = fopen(fp, W_BIN))) {
X! 		printf("Open error on '%s'n", fp);
X  		exit(1);
X  	}
X  
X--- 39,45 ----
X  		gets(fp);
X  	}
X  	if ((FILE *)NULL == (fo = fopen(fp, W_BIN))) {
X! 		perror(fp);
X  		exit(1);
X  	}
X  
X***************
X*** 76,82 ****
X  	}
X  
X  	fclose(fo);
X! 
X  	exit(0);
X  }
X  
X--- 78,86 ----
X  	}
X  
X  	fclose(fo);
X! #ifndef NO_ENCRYPTION
X! 	crypt_file(fp,0);   /* encrpyt the saved game */
X! #endif
X  	exit(0);
X  }
X  
X***************
X*** 103,112 ****
X  	}
X  	clear();
X  	refresh();
X! 
X  	if ((FILE *)NULL == (fi = fopen(fp, R_BIN))) {
X  		endwin();
X! 		printf("Open error on '%s'n", fp);
X  		exit(1);
X  	}
X  	if ( (1 != fread((char *)&s, sizeof(s), 1, fi)) ||
X--- 107,119 ----
X  	}
X  	clear();
X  	refresh();
X! #ifndef NO_ENCRYPTION
X!  	crypt_file(fp,1);   /*decrypt it*/
X! #endif
X  	if ((FILE *)NULL == (fi = fopen(fp, R_BIN))) {
X  		endwin();
X! 		printf("Open error on '%s'\n", fp);
X! 		printf("Cannot restore game --- sorry.\n");
X  		exit(1);
X  	}
X  	if ( (1 != fread((char *)&s, sizeof(s), 1, fi)) ||
X***************
X*** 114,119 ****
X--- 121,127 ----
X  	     (1 != fread((char *)&zz, sizeof(zz), 1, fi)) ) {
X  		endwin();
X  		printf("Read error on '%s'n", fp);
X+ 		printf("Cannot restore game --- sorry.\n");
X  		fclose(fi);
X  		exit(1);
X  	}
X***************
X*** 150,155 ****
X--- 158,164 ----
X  		if ((struct mon_rec *)NULL == (mp = make_monster(0, 0))) {
X  			endwin();
X  			printf("Monster alloc error on '%s'n", fp);
X+                         printf("Try again - it might work.\nBut then,pigs might fly...\n");
X  			fclose(fi);
X  			exit(1);
X  		}
X***************
X*** 156,161 ****
X--- 165,171 ----
X  		if (1 != fread((char *)&tmp_monst, sizeof(struct mon_rec), 1, fi)) {
X  			endwin();
X  			printf("Monster read error on '%s'n", fp);
X+ 			printf("Cannot restore game --- sorry.\n");
X  			fclose(fi);
X  			exit(1);
X  		}
X*** wand_head.h.orig	Tue Nov 29 16:43:17 1988
X--- wand_head.h	Tue Nov 29 16:45:09 1988
X***************
X*** 19,24 ****
X--- 19,29 ----
X  /* change the numbers in this as well, but keep it in the same form */
X  #define PASSWD (num * num * 4373 + num * 16927 + 39)
X  
X+ /* To disable the recording of hiscores from games restored from saves */
X+ /* #define NO_RESTORED_GAME_HISCORES  */
X+ /* #define COMPARE_BY_NAME  define this to compare by name, not uid */
X+ #define GUESTUID 0    /* guestuid always compared by name */
X+ /* #define NO_ENCRYPTION define this to disable the savefile encryptor */
X  /* cbreak switching via curses package. */
X  /* on some Ultrix systems you may need to use crmode() and nocrmode() */
X  /* if so, just change the #defs to the necessary. I also know that Xenix */
X***************
X*** 31,38 ****
X  #define CBOFF nocbreak()
X  #endif
X  
X- /* To disable the recording of hiscores from games restored from saves */
X- /* #define NO_RESTORED_GAME_HISCORES  */
X  
X  /* MSDOS modifications (M001) by Gregory H. Margo	*/
X  #ifdef	MSDOS
X--- 36,41 ----
END_OF_FILE
if test 30930 -ne `wc -c <'patches01'`; then
    echo shar: \"'patches01'\" unpacked with wrong size!
fi
# end of 'patches01'
fi
if test -f 'screen.16' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'screen.16'\"
else
echo shar: Extracting \"'screen.16'\" \(700 characters\)
sed "s/^X//" >'screen.16' <<'END_OF_FILE'
XX!   !!                       O OO    O-
X  *! !   O                  + =*==*=*==*
X!!!  !   *O     ! >>*              *   -
X          :\   >>>/              *     -
X    \           >/           /         -
X  :   :  :    * /    !<<    /S         -
X>>O*   :    :     /O><<<<           *  -
X##*              /*O*                  -
X    *      #*####  O*      !###        -
X*          #    # \*      !##O#        -
X        \O ###\<<<<\     !##O<##       -
X *<      \:::  #*##     !#*#O          -
X ====     ####  ##     !#CC#*        ===
X =  =  C   : ###      !#CCC#/       *<=M
X  = =  *  @:   :     !#CC        /=====-
X+ S *      :   :    !*CC    /    *     -
X########################################
X50
END_OF_FILE
if test 700 -ne `wc -c <'screen.16'`; then
    echo shar: \"'screen.16'\" unpacked with wrong size!
fi
# end of 'screen.16'
fi
if test -f 'screen.21' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'screen.21'\"
else
echo shar: Extracting \"'screen.21'\" \(697 characters\)
sed "s/^X//" >'screen.21' <<'END_OF_FILE'
X*!>>O           \*OOOOO />O   \#T#X#O#O*
X  O ::!:::::::O  \OOOOO/:#*    #   ::::<
X#>: ::::::!#>#:   \OOO/::# # # *## ###O#
X####::#>*  \:      \O/  =# # #===# ## :#
X*             \    :<#  #  ::      #O :<
X###O/###########    /#     ##! ==###: A#
X#O#>>>>>>>>>: *#      >>:   #  #:::::#*#
X>*        *= O##   \    ## ## !#:######*
X#    ##### ! :<#         # !#  #    / :<
X== =O   !>:  :=#    /   *< =# ><  O  @ #
XO<#O:        =*          # !# =#= ======
X*::   #!!!!!  =#   \       =#  O#     :<
X############# =#O          !#! ::==== !*
X >:             :   / #     ##        !-
X## #         ####     #  #   =========!-
X*  #!!!!!!!!!*::::#*# # #*>:           -
X########################################
END_OF_FILE
if test 697 -ne `wc -c <'screen.21'`; then
    echo shar: \"'screen.21'\" unpacked with wrong size!
fi
# end of 'screen.21'
fi
if test -f 'screen.22' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'screen.22'\"
else
echo shar: Extracting \"'screen.22'\" \(697 characters\)
sed "s/^X//" >'screen.22' <<'END_OF_FILE'
X*    O    <*  \OOOOOO*/      #O*   <<<<<
X####:####=== O \OOOOO/       #*:    <<<<
X#            :  \OOO/        # #*    <<<
X##OO    @  ##/  <*O/         #  #*    <<
X*A::  =======     :  ###     *:  *#    <
X#####             \  #*>    /          *
X          =O  =:===# ###  \    /       -
X   /     <>*     X #       \  /OO  !!! -
X*         =O  O!===#        =*=*>   *! -
X>       \ ::::::            === *  !!! -
X>>       \               \      \      -
X>>>         \                    \  ###-
X>>>>   OOOO    *                  \ **#-
X>>>>>           \  # \  /  ====   ==###-
X::*:*           *# # # #             ===
X*  *  *=**=*>   *#*#*#T#>*  *  <*!!!   *
X########################################
END_OF_FILE
if test 697 -ne `wc -c <'screen.22'`; then
    echo shar: \"'screen.22'\" unpacked with wrong size!
fi
# end of 'screen.22'
fi
if test -f 'screen.23' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'screen.23'\"
else
echo shar: Extracting \"'screen.23'\" \(697 characters\)
sed "s/^X//" >'screen.23' <<'END_OF_FILE'
X/ *=                         #*   ^O</T<
X  == :O O O O  O O O O       ###+\^^  :^
X      ^*::**:  **:**:*   OO          /^#
X>*            /          */            -
X^/          \      OO        #         -
X*\           *  / ##:*<<\    S         -
X:=>:           O\ ^^:*<</              -
X*/             *<X  @< /               -
X/  O/\         ^/ \#^#/    / +         -
X  */ A\        /S  #*#    /            -
X O/    \      /*  *\#/:                -
X*/      \    /  **    :                -
X/        \  /      :::                ==
X==       =====*==*:                 ==S-
X*        ^ ^ ^ ^ ^               ====* -
X+=\            ^                *<<<<<<<
X########################################
END_OF_FILE
if test 697 -ne `wc -c <'screen.23'`; then
    echo shar: \"'screen.23'\" unpacked with wrong size!
fi
# end of 'screen.23'
fi
echo shar: End of shell archive.
exit 0