[comp.sources.games] v05i047: umoria2 - single player dungeon simulation

games@tekred.TEK.COM (07/29/88)

Submitted by: "James E. Wilson" <wilson@ji.berkeley.edu>
Comp.sources.games: Volume 5, Issue 47
Archive-name: umoria2/Part13



#! /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 archive 13 (of 18)."
# Contents:  Int16bit.patch treasure2.c
# Wrapped by billr@saab on Wed Jul 13 11:16:32 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Int16bit.patch' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Int16bit.patch'\"
else
echo shar: Extracting \"'Int16bit.patch'\" \(25036 characters\)
sed "s/^X//" >'Int16bit.patch' <<'END_OF_FILE'
X
XThis is a first attempt to eliminate all 32 bit integer dependencies in umoria.
XIt is not guaranteed to work, but should provide a good starting point for
X16 bit OSes such as Xenix.
X
XJim Wilson
Xwilson@ji.Berkeley.EDU
X
XFrom kneller@cgl.ucsf.EDU Sun Jun 26 18:46:23 1988
XReceived: from socrates.ucsf.EDU by ji.Berkeley.EDU (5.59/1.28)
X	id AA03277; Sun, 26 Jun 88 18:46:09 PDT
XReceived: by socrates.ucsf.EDU (5.59/GSC4.6)
X	id AA00847; Sun, 26 Jun 88 18:44:13 PDT
XDate: Sun, 26 Jun 88 18:44:13 PDT
XFrom: kneller@cgl.ucsf.EDU
XMessage-Id: <8806270144.AA00847@socrates.ucsf.EDU>
XTo: wilson@ji.Berkeley.EDU
XSubject: Oops, wrong diffs
XStatus: RO
X
X
XJim,
X
XThe diffs were the wrong sense.  They can be used with "patch -R", but
Xhere is a new set anyway.
X
X- don
X
X*** orig/config.h	Thu Jun  9 14:51:01 1988
X--- config.h	Sun Jun 26 18:16:58 1988
X***************
X*** 69,71 ****
X--- 69,82 ----
X  #define USG 
X  #endif
X  #endif
X+ 
X+ /* Detect 16-bit integers by wrapping of most positive int. */
X+ #if (32767 + 1) < 0
X+ /* # include "16.bit.integers" */
X+ #define INT16
X+ #define MAXINT	0x7FFF
X+ #else
X+ /* # include "32.bit.integers" */
X+ #define INT32
X+ #define MAXINT	10000000 /*0x7FFFFFFF*/
X+ #endif
X*** orig/externs.h	Thu May 26 18:51:44 1988
X--- externs.h	Wed Jun 22 10:28:38 1988
X***************
X*** 1,7 ****
X  extern int character_generated;  /* don't save score until char gen finished */
X  extern int character_saved;      /* prevents save on kill after save_char() */
X  extern int highscore_fd;	/* High score file descriptor */
X! extern int player_max_exp;	/* Max exp possible    */
X  extern char norm_state[STATE_SIZE];	/* Contains seed #     */
X  extern char randes_state[STATE_SIZE];
X  extern int randes_seed;	    /* For encoding colors */
X--- 1,7 ----
X  extern int character_generated;  /* don't save score until char gen finished */
X  extern int character_saved;      /* prevents save on kill after save_char() */
X  extern int highscore_fd;	/* High score file descriptor */
X! extern bigint_t player_max_exp;	/* Max exp possible    */
X  extern char norm_state[STATE_SIZE];	/* Contains seed #     */
X  extern char randes_state[STATE_SIZE];
X  extern int randes_seed;	    /* For encoding colors */
X***************
X*** 34,40 ****
X  extern int closing_flag;	/* Used for closing   */
X  
X  /* Bit testing array						*/
X! extern unsigned int bit_array[32];
X  
X  /*  Following are calculated from max dungeon sizes		*/
X  extern int max_panel_rows, max_panel_cols;
X--- 34,40 ----
X  extern int closing_flag;	/* Used for closing   */
X  
X  /* Bit testing array						*/
X! extern bitset_t bit_array[32];
X  
X  /*  Following are calculated from max dungeon sizes		*/
X  extern int max_panel_rows, max_panel_cols;
X***************
X*** 60,66 ****
X  /* Following are player variables				*/
X  extern player_type py;
X  extern btype player_title[MAX_CLASS][MAX_PLAYER_LEVEL];
X! extern int player_exp[MAX_PLAYER_LEVEL];
X  extern double acc_exp;	                  /* Accumulator for fractional exp*/
X  extern dtype bare_hands;
X  extern int char_row;
X--- 60,66 ----
X  /* Following are player variables				*/
X  extern player_type py;
X  extern btype player_title[MAX_CLASS][MAX_PLAYER_LEVEL];
X! extern bigint_t player_exp[MAX_PLAYER_LEVEL];
X  extern double acc_exp;	                  /* Accumulator for fractional exp*/
X  extern dtype bare_hands;
X  extern int char_row;
X*** orig/types.h	Wed Jun  1 19:50:19 1988
X--- types.h	Wed Jun 22 11:28:34 1988
X***************
X*** 1,3 ****
X--- 1,5 ----
X+ typedef unsigned long bitset_t;
X+ typedef long bigint_t;
X  typedef unsigned char byteint;
X  #ifdef NO_SIGNED_CHARS
X  typedef short bytlint;
X***************
X*** 19,26 ****
X  typedef struct creature_type
X  {
X    ctype name;           /* Descrip of creature	*/
X!   unsigned int cmove;	/* Bit field		*/
X!   unsigned int spells;  /* Creature spells	*/
X    wordint cdefense;	/* Bit field		*/
X    worlint sleep;	/* Inactive counter	*/
X    wordint mexp; 	/* Exp value for kill	*/
X--- 21,28 ----
X  typedef struct creature_type
X  {
X    ctype name;           /* Descrip of creature	*/
X!   bitset_t cmove;	/* Bit field		*/
X!   bitset_t spells;  /* Creature spells	*/
X    wordint cdefense;	/* Bit field		*/
X    worlint sleep;	/* Inactive counter	*/
X    wordint mexp; 	/* Exp value for kill	*/
X***************
X*** 54,60 ****
X    ttype name;	        /* Object name		*/
X    byteint tval;	        /* Category number	*/
X    char tchar;		/* Character representation*/
X!   unsigned int flags;	/* Special flags		*/
X    int p1;	        /* Misc. use variable	*/
X    int cost;	        /* Cost of item		*/
X    int subval;	        /* Sub-category number	*/
X--- 56,62 ----
X    ttype name;	        /* Object name		*/
X    byteint tval;	        /* Category number	*/
X    char tchar;		/* Character representation*/
X!   bitset_t flags;	/* Special flags		*/
X    int p1;	        /* Misc. use variable	*/
X    int cost;	        /* Cost of item		*/
X    int subval;	        /* Sub-category number	*/
X***************
X*** 77,84 ****
X        vtype sex;	/* Sex of character	*/
X        vtype title;	/* Character's title	*/
X        vtype tclass;	/* Character's class	*/
X!       int max_exp;	/* Max experience*/
X!       int exp;	        /* Cur experience	*/
X        int au;	        /* Gold		*/
X        wordint age;	/* Characters age*/
X        wordint ht;	/* Height	*/
X--- 79,86 ----
X        vtype sex;	/* Sex of character	*/
X        vtype title;	/* Character's title	*/
X        vtype tclass;	/* Character's class	*/
X!       bigint_t max_exp;	/* Max experience*/
X!       bigint_t exp;	        /* Cur experience	*/
X        int au;	        /* Gold		*/
X        wordint age;	/* Characters age*/
X        wordint ht;	/* Height	*/
X***************
X*** 128,134 ****
X      } stats;
X    struct flags
X      {
X!       unsigned int status;	/* Status of player    */
X        int rest;	                /* Rest counter	      */
X        int blind;	        /* Blindness counter   */
X        int paralysis;	        /* Paralysis counter   */
X--- 130,136 ----
X      } stats;
X    struct flags
X      {
X!       bitset_t status;	/* Status of player    */
X        int rest;	                /* Rest counter	      */
X        int blind;	        /* Blindness counter   */
X        int paralysis;	        /* Paralysis counter   */
X***************
X*** 221,227 ****
X    bytlint bsav;         /* Race base for saving throw	*/
X    bytlint bhitdie;      /* Base hit points for race	*/
X    bytlint infra;        /* See infra-red		*/
X!   unsigned int tclass;  /* Bit field for class types	*/
X  } race_type;
X  
X  typedef struct class_type
X--- 223,229 ----
X    bytlint bsav;         /* Race base for saving throw	*/
X    bytlint bhitdie;      /* Base hit points for race	*/
X    bytlint infra;        /* See infra-red		*/
X!   bitset_t tclass;  /* Bit field for class types	*/
X  } race_type;
X  
X  typedef struct class_type
X*** orig/creature.c	Sat May 28 22:09:02 1988
X--- creature.c	Sun Jun 26 17:37:30 1988
X***************
X*** 275,280 ****
X--- 275,283 ----
X    register struct flags *f_ptr;
X    register treasure_type *i_ptr;
X    char *string;
X+ #ifdef INT16
X+   bigint_t m;
X+ #endif
X  
X    m_ptr = &m_list[monptr];
X    c_ptr = &c_list[m_ptr->mptr];
X***************
X*** 676,683 ****
X--- 679,691 ----
X  	      break;
X  	    case 19:    /*Lose experience  */
X  	      msg_print("You feel your life draining away!");
X+ #ifdef INT16
X+ 	      m = damroll(damstr) + (py.misc.exp / 100)*MON_DRAIN_LIFE;
X+ 	      lose_exp(m);
X+ #else
X  	      i = damroll(damstr) + (py.misc.exp / 100)*MON_DRAIN_LIFE;
X  	      lose_exp(i);
X+ #endif
X  	      break;
X  	    case 20:    /*Aggravate monster*/
X  	      (void) aggravate_monster(5);
X***************
X*** 765,771 ****
X  int *mm;
X  {
X    int i, j, newy, newx;
X!   unsigned int movebits;
X    int flag, tflag;
X    int res;
X    register cave_type *c_ptr;
X--- 773,779 ----
X  int *mm;
X  {
X    int i, j, newy, newx;
X!   bitset_t movebits;
X    int flag, tflag;
X    int res;
X    register cave_type *c_ptr;
X***************
X*** 980,986 ****
X  int monptr;
X  int *took_turn;
X  {
X!   unsigned int i;
X    int y, x;
X    register int k;
X    int chance, thrown_spell;
X--- 988,994 ----
X  int monptr;
X  int *took_turn;
X  {
X!   bitset_t i;
X    int y, x;
X    register int k;
X    int chance, thrown_spell;
X*** orig/death.c	Sat May 28 21:13:14 1988
X--- death.c	Fri Jun 24 11:27:49 1988
X***************
X*** 174,180 ****
X--- 174,184 ----
X    (void) strcpy(str3, fill_str(py.misc.tclass));
X    (void) sprintf(str4, "Level : %d", (int)py.misc.lev);
X    (void) strcpy(str4, fill_str(str4));
X+ #ifdef INT16
X+   (void) sprintf(str5, "%ld Exp", (long)py.misc.exp);
X+ #else
X    (void) sprintf(str5, "%d Exp", py.misc.exp);
X+ #endif
X    (void) strcpy(str5, fill_str(str5));
X    (void) sprintf(str6, "%d Au", py.misc.au);
X    (void) strcpy(str6, fill_str(str6));
X***************
X*** 248,254 ****
X  
X  
X  /* Calculates the total number of points earned		-JWT-	 */
X! int total_points()
X  {
X    return (py.misc.max_exp + (100 * py.misc.max_lev));
X  }
X--- 252,258 ----
X  
X  
X  /* Calculates the total number of points earned		-JWT-	 */
X! long total_points()
X  {
X    return (py.misc.max_exp + (100 * py.misc.max_lev));
X  }
X***************
X*** 275,281 ****
X        exit_game();
X      }
X  
X!   myscore.points = (long)total_points();
X    myscore.dun_level = dun_level;
X    myscore.lev = py.misc.lev;
X    myscore.max_lev = py.misc.max_lev;
X--- 279,285 ----
X        exit_game();
X      }
X  
X!   myscore.points = total_points();
X    myscore.dun_level = dun_level;
X    myscore.lev = py.misc.lev;
X    myscore.max_lev = py.misc.max_lev;
X*** orig/eat.c	Sat May 28 21:10:44 1988
X--- eat.c	Tue Jun 21 16:54:53 1988
X***************
X*** 7,13 ****
X  /* Eat some food...					-RAK-	*/
X  eat()
X  {
X!   unsigned int i;
X    int j, k, item_val;
X    int redraw, ident;
X    register struct flags *f_ptr;
X--- 7,13 ----
X  /* Eat some food...					-RAK-	*/
X  eat()
X  {
X!   bitset_t i;
X    int j, k, item_val;
X    int redraw, ident;
X    register struct flags *f_ptr;
X*** orig/files.c	Sat May 28 21:13:53 1988
X--- files.c	Sun Jun 26 17:22:19 1988
X***************
X*** 313,320 ****
X--- 313,325 ----
X  	      (void) strcpy(out_val, c_ptr->name);
X  	      (void) strcat(out_val, "                              ");
X  	      (void) fprintf(file1, "%d  %s     (%c)\n", i, out_val, c_ptr->cchar);
X+ #ifdef INT16
X+ 	      (void) fprintf(file1,"     Speed ==%d  Level     ==%d  Exp ==%ld\n",
X+ 		      c_ptr->speed, c_ptr->level, (long) c_ptr->mexp);
X+ #else
X  	      (void) fprintf(file1, "     Speed ==%d  Level     ==%d  Exp ==%d\n",
X  		      c_ptr->speed, c_ptr->level, (int)c_ptr->mexp);
X+ #endif
X  	      (void) fprintf(file1, "     AC    ==%d  Eye-sight ==%d  HD  ==%s\n",
X  		      c_ptr->ac, c_ptr->aaf, c_ptr->hd);
X  	      if (0x80000000 & c_ptr->cmove)
X***************
X*** 674,680 ****
X--- 679,689 ----
X  	  (void) fprintf(file1, "     Level      :%6d", (int)py.misc.lev);
X  	  (void) fprintf(file1, "     Max Hit Points :%6d\n", py.misc.mhp);
X  	  (void) fprintf(file1, "  + To Damage :%6d", py.misc.dis_td);
X+ #ifdef INT16
X+ 	  (void) fprintf(file1, "     Experience :%6ld", py.misc.exp);
X+ #else
X  	  (void) fprintf(file1, "     Experience :%6d", py.misc.exp);
X+ #endif
X  	  (void) fprintf(file1, "     Cur Hit Points :%6d\n", (int) (py.misc.chp));
X  	  (void) fprintf(file1, "  + To AC     :%6d", py.misc.dis_tac);
X  	  (void) fprintf(file1, "     Gold       :%6d", py.misc.au);
X*** orig/misc1.c	Tue Jun 14 18:14:27 1988
X--- misc1.c	Sun Jun 26 17:05:38 1988
X***************
X*** 207,214 ****
X  int mean;
X  int stand;
X  {
X!   return ((int)((sqrt(-2.0*log(randint((int)9999999)/10000000.0))*
X! 		 cos(6.283*(randint((int)9999999)/10000000.0))*stand) + mean));
X  }
X  
X  
X--- 207,215 ----
X  int mean;
X  int stand;
X  {
X!   return (int) ((sqrt(-2.0 * log(randint(MAXINT - 1) / (double) MAXINT))
X! 		* cos(6.283 * (randint(MAXINT - 1) / (double) MAXINT)) * stand)
X! 		+ mean);
X  }
X  
X  
X***************
X*** 215,226 ****
X  /* Returns position of first set bit			-RAK-	*/
X  /*     and clears that bit */
X  int bit_pos(test)
X! unsigned int *test;
X  {
X    register int i;
X    register int mask = 0x1;
X  
X!   for (i = 0; i < sizeof(int)*8; i++) {
X      if (*test & mask) {
X        *test &= ~mask;
X        return(i);
X--- 216,227 ----
X  /* Returns position of first set bit			-RAK-	*/
X  /*     and clears that bit */
X  int bit_pos(test)
X! bitset_t *test;
X  {
X    register int i;
X    register int mask = 0x1;
X  
X!   for (i = 0; i < sizeof(*test)*8; i++) {
X      if (*test & mask) {
X        *test &= ~mask;
X        return(i);
X*** orig/misc2.c	Mon Jun  6 16:28:36 1988
X--- misc2.c	Sun Jun 26 18:18:43 1988
X***************
X*** 461,466 ****
X--- 461,479 ----
X    put_buffer(pad(info, " ", 13), row, column);
X  }
X  
X+ #ifdef INT16
X+ /* Print long number with header at given row, column 	-RAK-	*/
X+ static void
X+ prt_lnum(header, num, row, column)
X+ vtype header;
X+ long num;
X+ int row, column;
X+ {
X+   vtype out_val;
X+   (void) sprintf(out_val, "%s%6ld ", header, num);
X+   put_buffer(out_val, row, column);
X+ }
X+ #endif
X  
X  /* Print number with header at given row, column 	-RAK-	*/
X  prt_num(header, num, row, column)
X***************
X*** 954,960 ****
X--- 967,977 ----
X    prt_stat("CON : ", s_ptr->ccon,        10, stat_column);
X    prt_stat("CHR : ", s_ptr->cchr,        11, stat_column);
X    prt_num( "LEV : ", (int)m_ptr->lev,    13, stat_column);
X+ #ifdef INT16
X+   prt_lnum( "EXP : ", m_ptr->exp,         14, stat_column);
X+ #else
X    prt_num( "EXP : ", m_ptr->exp,         14, stat_column);
X+ #endif
X    prt_num( "MANA: ", (int)(m_ptr->cmana), 15, stat_column);
X    prt_num( "MHP : ", m_ptr->mhp,         16, stat_column);
X    prt_num( "CHP : ", (int)(m_ptr->chp),  17, stat_column);
X***************
X*** 1063,1069 ****
X--- 1080,1090 ----
X  
X    m_ptr = &py.misc;
X    prt_num("Level      : ", (int)m_ptr->lev, 9, 30);
X+ #ifdef INT16
X+   prt_lnum("Experience : ", m_ptr->exp, 10, 30);
X+ #else
X    prt_num("Experience : ", m_ptr->exp, 10, 30);
X+ #endif
X    prt_num("Gold       : ", m_ptr->au, 11, 30);
X    prt_num("Max Hit Points : ", m_ptr->mhp, 9, 53);
X    prt_num("Cur Hit Points : ", (int)m_ptr->chp, 10, 53);
X***************
X*** 1440,1449 ****
X  int learn_spell(redraw)
X  int *redraw;
X  {
X!   unsigned int j;
X    register int i, k, new_spells;
X    int sn, sc;
X!   unsigned int spell_flag;
X    spl_type spell;
X    int learn;
X    register spell_type *s_ptr;
X--- 1461,1470 ----
X  int learn_spell(redraw)
X  int *redraw;
X  {
X!   bitset_t j;
X    register int i, k, new_spells;
X    int sn, sc;
X!   bitset_t spell_flag;
X    spl_type spell;
X    int learn;
X    register spell_type *s_ptr;
X***************
X*** 1515,1521 ****
X    register int i, j, k, l;
X    int new_spell;
X    int test_array[32];
X!   unsigned int spell_flag;
X    int learn;
X    register spell_type *s_ptr;
X  
X--- 1536,1542 ----
X    register int i, j, k, l;
X    int new_spell;
X    int test_array[32];
X!   bitset_t int spell_flag;
X    int learn;
X    register spell_type *s_ptr;
X  
X***************
X*** 1631,1637 ****
X  /* Increases hit points and level			-RAK-	*/
X  gain_level()
X  {
X!   int nhp, dif_exp, need_exp;
X    int redraw;
X    vtype out_val;
X    register struct misc *p_ptr;
X--- 1652,1659 ----
X  /* Increases hit points and level			-RAK-	*/
X  gain_level()
X  {
X!   int nhp;
X!   bigint_t dif_exp, need_exp;
X    int redraw;
X    vtype out_val;
X    register struct misc *p_ptr;
X***************
X*** 1691,1697 ****
X--- 1713,1723 ----
X        if (p_ptr->exp > p_ptr->max_exp)
X  	p_ptr->max_exp = p_ptr->exp;
X      }
X+ #ifdef INT16
X+   prt_lnum("", py.misc.exp, 14, stat_column+6);
X+ #else
X    prt_num("", py.misc.exp, 14, stat_column+6);
X+ #endif
X  }
X  
X  
X*** orig/moria1.c	Tue Jun 14 17:49:33 1988
X--- moria1.c	Wed Jun 22 10:42:52 1988
X***************
X*** 73,79 ****
X  treasure_type tobj;
X  int factor;
X  {
X!   register unsigned int item_flags;
X    int old_dis_ac;
X    register struct flags *p_ptr;
X    register struct misc *m_ptr;
X--- 73,79 ----
X  treasure_type tobj;
X  int factor;
X  {
X!   register bitset_t item_flags;
X    int old_dis_ac;
X    register struct flags *p_ptr;
X    register struct misc *m_ptr;
X*** orig/moria2.c	Tue Jun 14 17:49:31 1988
X--- moria2.c	Wed Jun 22 10:46:25 1988
X***************
X*** 266,272 ****
X  int *sn, *sc;
X  int *redraw;
X  {
X!   unsigned int j;
X    register int i, k;
X    spl_type spell;
X    int cast;
X--- 266,272 ----
X  int *sn, *sc;
X  int *redraw;
X  {
X!   bitset_t j;
X    register int i, k;
X    spl_type spell;
X    int cast;
X***************
X*** 336,342 ****
X  /* Examine a Book					-RAK-	*/
X  examine_book()
X  {
X!   unsigned int j;
X    int i, k, item_val;
X    int redraw, flag;
X    char dummy;
X--- 336,342 ----
X  /* Examine a Book					-RAK-	*/
X  examine_book()
X  {
X!   bitset_t j;
X    int i, k, item_val;
X    int redraw, flag;
X    char dummy;
X***************
X*** 678,684 ****
X  /* based on flags set in the main creature record                */
X  monster_death(y, x, flags)
X  int y, x;
X! register unsigned int flags;
X  {
X    register int i;
X  
X--- 678,684 ----
X  /* based on flags set in the main creature record                */
X  monster_death(y, x, flags)
X  int y, x;
X! register bitset_t flags;
X  {
X    register int i;
X  
X*** orig/potions.c	Sat May 28 21:10:33 1988
X--- potions.c	Sun Jun 26 17:38:44 1988
X***************
X*** 7,14 ****
X  /* Potions for the quaffing				-RAK-	*/
X  quaff()
X  {
X!   unsigned int i;
X!   int j, k, l, item_val;
X    int redraw, ident;
X    register treasure_type *i_ptr;
X    register struct misc *m_ptr;
X--- 7,16 ----
X  /* Potions for the quaffing				-RAK-	*/
X  quaff()
X  {
X!   bitset_t i;
X!   int j, k;
X!   bigint_t l;
X!   int item_val;
X    int redraw, ident;
X    register treasure_type *i_ptr;
X    register struct misc *m_ptr;
X***************
X*** 254,262 ****
X  		      /* avoid randint(0) call */
X  		      l = (py.misc.exp/5.0);
X  		      if (l == 0)
X! 			lose_exp(1);
X  		      else
X! 			lose_exp(randint(l)+l);
X  		      ident = TRUE;
X  		      break;
X  		    case 34:
X--- 256,264 ----
X  		      /* avoid randint(0) call */
X  		      l = (py.misc.exp/5.0);
X  		      if (l == 0)
X! 			lose_exp((bigint_t) 1);
X  		      else
X! 			lose_exp((bigint_t) randint((int) l)+l);
X  		      ident = TRUE;
X  		      break;
X  		    case 34:
X***************
X*** 359,365 ****
X  	      if (i_ptr->flags != 0)
X  		{
X  		  m_ptr = &py.misc;
X! 		  m_ptr->exp += (int)(i_ptr->level/m_ptr->lev + 0.5);
X  		  prt_experience();
X  		}
X  	      add_food(i_ptr->p1);
X--- 361,367 ----
X  	      if (i_ptr->flags != 0)
X  		{
X  		  m_ptr = &py.misc;
X! 		  m_ptr->exp += (bigint_t)(i_ptr->level/m_ptr->lev + 0.5);
X  		  prt_experience();
X  		}
X  	      add_food(i_ptr->p1);
X*** orig/scrolls.c	Sat May 28 21:10:31 1988
X--- scrolls.c	Tue Jun 21 16:55:03 1988
X***************
X*** 15,21 ****
X  /* Scrolls for the reading				-RAK-	*/
X  read_scroll()
X  {
X!   unsigned int i;
X    int j, k, l, item_val;
X    int y, x;
X    int tmp[6];
X--- 15,21 ----
X  /* Scrolls for the reading				-RAK-	*/
X  read_scroll()
X  {
X!   bitset_t i;
X    int j, k, l, item_val;
X    int y, x;
X    int tmp[6];
X*** orig/spells.c	Tue Jun 14 17:49:28 1988
X--- spells.c	Tue Jun 21 16:55:06 1988
X***************
X*** 687,693 ****
X  /* Return flags for given type area affect		-RAK-	*/
X  get_flags(typ, weapon_type, harm_type, destroy)
X  int typ;
X! int *weapon_type, *harm_type;
X  int (**destroy)();
X  {
X    int set_null(), set_fire_destroy(), set_frost_destroy();
X--- 687,694 ----
X  /* Return flags for given type area affect		-RAK-	*/
X  get_flags(typ, weapon_type, harm_type, destroy)
X  int typ;
X! bitset_t *weapon_type;
X! int *harm_type;
X  int (**destroy)();
X  {
X    int set_null(), set_fire_destroy(), set_frost_destroy();
X***************
X*** 739,745 ****
X  ctype bolt_typ;
X  {
X    int i, oldy, oldx, dist;
X!   int weapon_type, harm_type;
X    int flag;
X    int (*dummy)();
X    register cave_type *c_ptr;
X--- 740,747 ----
X  ctype bolt_typ;
X  {
X    int i, oldy, oldx, dist;
X!   bitset_t weapon_type;
X!   int harm_type;
X    int flag;
X    int (*dummy)();
X    register cave_type *c_ptr;
X***************
X*** 834,840 ****
X    register int i, j;
X    int dam, max_dis, thit, tkill, k;
X    int oldy, oldx, dist;
X!   int weapon_type, harm_type;
X    int flag;
X    int (*destroy)();
X    register cave_type *c_ptr;
X--- 836,843 ----
X    register int i, j;
X    int dam, max_dis, thit, tkill, k;
X    int oldy, oldx, dist;
X!   bitset_t weapon_type;
X!   int harm_type;
X    int flag;
X    int (*destroy)();
X    register cave_type *c_ptr;
X***************
X*** 979,985 ****
X  {
X    register int i, j;
X    int dam, max_dis;
X!   int weapon_type, harm_type;
X    int (*destroy)();
X    register cave_type *c_ptr;
X    register monster_type *m_ptr;
X--- 982,989 ----
X  {
X    register int i, j;
X    int dam, max_dis;
X!   bitset_t weapon_type;
X!   int harm_type;
X    int (*destroy)();
X    register cave_type *c_ptr;
X    register monster_type *m_ptr;
X***************
X*** 2338,2344 ****
X  
X  /* Lose experience					-RAK-	*/
X  lose_exp(amount)
X! int amount;
X  {
X    register int i, j;
X    int av_hp, lose_hp;
X--- 2342,2348 ----
X  
X  /* Lose experience					-RAK-	*/
X  lose_exp(amount)
X! bigint_t amount;
X  {
X    register int i, j;
X    int av_hp, lose_hp;
X*** orig/staffs.c	Tue Jun 14 17:49:26 1988
X--- staffs.c	Tue Jun 21 16:55:06 1988
X***************
X*** 7,13 ****
X  /* Use a staff...					-RAK-	*/
X  use()
X  {
X!   unsigned int i;
X    int j, k, item_val, chance;
X    int y, x;
X    int redraw, ident;
X--- 7,13 ----
X  /* Use a staff...					-RAK-	*/
X  use()
X  {
X!   bitset_t i;
X    int j, k, item_val, chance;
X    int y, x;
X    int redraw, ident;
X*** orig/store2.c	Tue Jun 14 17:49:38 1988
X--- store2.c	Tue Jun 21 16:55:07 1988
X***************
X*** 959,965 ****
X        msg_print(out_val);
X        /* make sure player sees the message */
X        msg_print(" ");
X!       if ((store_buy[store_num])(inventory[INVEN_MAX].tval))
X  	if (store_check_num(store_num))
X  	  switch(sell_haggle(store_num, &price, inventory[INVEN_MAX]))
X  	    {
X--- 959,965 ----
X        msg_print(out_val);
X        /* make sure player sees the message */
X        msg_print(" ");
X!       if ((*store_buy[store_num])(inventory[INVEN_MAX].tval))
X  	if (store_check_num(store_num))
X  	  switch(sell_haggle(store_num, &price, inventory[INVEN_MAX]))
X  	    {
X*** orig/variables.c	Sat May 28 21:10:24 1988
X--- variables.c	Wed Jun 22 11:02:36 1988
X***************
X*** 5,11 ****
X  int character_generated = 0;    /* don't save score until char gen finished */
X  int character_saved = 0;        /* prevents save on kill after save_char() */
X  int highscore_fd;	        /* File descriptor to high score file */
X! int player_max_exp;	        /* Max exp possible    */
X  char norm_state[STATE_SIZE];	/* normal seed */
X  char randes_state[STATE_SIZE];	/* For encoding colors */
X  int randes_seed;                /* for restarting randes_state */
X--- 5,11 ----
X  int character_generated = 0;    /* don't save score until char gen finished */
X  int character_saved = 0;        /* prevents save on kill after save_char() */
X  int highscore_fd;	        /* File descriptor to high score file */
X! bigint_t player_max_exp;	        /* Max exp possible    */
X  char norm_state[STATE_SIZE];	/* normal seed */
X  char randes_state[STATE_SIZE];	/* For encoding colors */
X  int randes_seed;                /* for restarting randes_state */
X***************
X*** 51,57 ****
X  int closing_flag = 0;	         /* Used for closing   */
X  
X  /* Bit testing array						*/
X! unsigned int bit_array[32] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
X  				0x00000010, 0x00000020, 0x00000040, 0x00000080,
X  				0x00000100, 0x00000200, 0x00000400, 0x00000800,
X  				0x00001000, 0x00002000, 0x00004000, 0x00008000,
X--- 51,57 ----
X  int closing_flag = 0;	         /* Used for closing   */
X  
X  /* Bit testing array						*/
X! bitset_t bit_array[32] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
X  				0x00000010, 0x00000020, 0x00000040, 0x00000080,
X  				0x00000100, 0x00000200, 0x00000400, 0x00000800,
X  				0x00001000, 0x00002000, 0x00004000, 0x00008000,
X***************
X*** 157,163 ****
X  };
X  
X  /* Base experience levels, may be adjusted up for race and/or class*/
X! int player_exp[MAX_PLAYER_LEVEL] = {
X       10,     25,     45,     70,    100,    140,    200,    280,    380,   500,
X      650,    850,   1100,   1400,   1800,   2300,   2900,   3600,   4400,  5400,
X     6800,   8400,  10200,  12500,  17500,  25000,  35000,  50000,  75000,100000,
X--- 157,163 ----
X  };
X  
X  /* Base experience levels, may be adjusted up for race and/or class*/
X! bigint_t player_exp[MAX_PLAYER_LEVEL] = {
X       10,     25,     45,     70,    100,    140,    200,    280,    380,   500,
X      650,    850,   1100,   1400,   1800,   2300,   2900,   3600,   4400,  5400,
X     6800,   8400,  10200,  12500,  17500,  25000,  35000,  50000,  75000,100000,
X*** orig/wands.c	Tue Jun 14 17:49:25 1988
X--- wands.c	Tue Jun 21 16:55:10 1988
X***************
X*** 7,13 ****
X  /* Wands for the aiming...				*/
X  aim()
X  {
X!   unsigned int i;
X    int j, k, l, chance;
X    int dir, item_val;
X    int dumy, y_dumy, x_dumy;
X--- 7,13 ----
X  /* Wands for the aiming...				*/
X  aim()
X  {
X!   bitset_t i;
X    int j, k, l, chance;
X    int dir, item_val;
X    int dumy, y_dumy, x_dumy;
X
END_OF_FILE
if test 25036 -ne `wc -c <'Int16bit.patch'`; then
    echo shar: \"'Int16bit.patch'\" unpacked with wrong size!
fi
# end of 'Int16bit.patch'
fi
if test -f 'treasure2.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'treasure2.c'\"
else
echo shar: Extracting \"'treasure2.c'\" \(28070 characters\)
sed "s/^X//" >'treasure2.c' <<'END_OF_FILE'
X#include "constants.h"
X#include "config.h"
X#include "types.h"
X
X/* Identified objects flags					*/
Xint object_ident[MAX_OBJECTS] = {
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
X  FALSE, FALSE, FALSE, FALSE
X};
X
Xint t_level[MAX_OBJ_LEVEL+1];
X
X/* Gold list (All types of gold and gems are defined here)	*/
Xtreasure_type gold_list[MAX_GOLD] = {
X{"copper"                                          , 100, '$',0x00000000,
X    0,      3,   1,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"copper"                                          , 100, '$',0x00000000,
X    0,      4,   2,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"copper"                                          , 100, '$',0x00000000,
X    0,      5,   3,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"silver"                                          , 100, '$',0x00000000,
X    0,      6,   4,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"silver"                                          , 100, '$',0x00000000,
X    0,      7,   5,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"silver"                                          , 100, '$',0x00000000,
X    0,      8,   6,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"garnets"                                         , 100, '*',0x00000000,
X    0,      9,   7,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"garnets"                                         , 100, '*',0x00000000,
X    0,     10,   8,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"gold"                                            , 100, '$',0x00000000,
X    0,     12,   9,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"gold"                                            , 100, '$',0x00000000,
X    0,     14,  10,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"gold"                                            , 100, '$',0x00000000,
X    0,     16,  11,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"opals"                                           , 100, '*',0x00000000,
X    0,     18,  12,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"sapphires"                                       , 100, '*',0x00000000,
X    0,     20,  13,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"gold"                                            , 100, '$',0x00000000,
X    0,     24,  14,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"rubies"                                          , 100, '*',0x00000000,
X    0,     28,  15,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"diamonds"                                        , 100, '*',0x00000000,
X    0,     32,  16,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"emeralds"                                        , 100, '*',0x00000000,
X    0,     40,  17,   0,   1,   0,   0,   0,   0, "0d0"    ,  1},
X{"mithril"                                         , 100, '$',0x00000000,
X    0,     80,  18,   0,   1,   0,   0,   0,   0, "0d0"    ,  1}
X};
X
Xtreasure_type t_list[MAX_TALLOC];
Xtreasure_type inventory[INVEN_ARRAY_SIZE];
X
X/* Items which are sold in the stores are different from dungeon */
X/* items so that identify works properly.  Note that the players */
X/* receive their initial items from this list, so position is    */
X/* very important...                                             */
Xtreasure_type inventory_init[INVEN_INIT_MAX] = {
X{"& Ration~ of Food"                               ,  80, ',',0x00000000,
X 5000,      3, 307,  10,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  1*/
X{"& Hard Biscuit~"                                 ,  80, ',',0x00000000,
X  500,      1, 309,   2,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  2*/
X{"& Strip~ of Beef Jerky"                          ,  80, ',',0x00000000,
X 1750,      2, 310,   2,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  3*/
X{"& Pint of Fine Ale"                              ,  80, ',',0x00000000,
X  500,      1, 311,  10,   3,   0,   0,   0,   0, "0d0"  ,  0}, /*  4*/
X{"& Pint of Fine Wine"                             ,  80, ',',0x00000000,
X  400,      2, 312,  10,   1,   0,   0,   0,   0, "0d0"  ,  0}, /*  5*/
X{"& Dagger (Misericorde) (%P2,%P3)"                ,  23, '|',0x00000000,
X    0,     10,   2,  15,   1,   0,   0,   0,   0, "1d4"  ,  0}, /*  6*/
X{"& Dagger (Stiletto) (%P2,%P3)"                   ,  23, '|',0x00000000,
X    0,     10,   3,  12,   1,   0,   0,   0,   0, "1d4"  ,  0}, /*  7*/
X{"& Bastard Sword (%P2,%P3)"                       ,  23, '|',0x00000000,
X    0,    350,   7, 140,   1,   0,   0,   0,   0, "3d4"  ,  0}, /*  8*/
X{"& Broadsword (%P2,%P3)"                          ,  23, '|',0x00000000,
X    0,    255,  10, 150,   1,   0,   0,   0,   0, "2d5"  ,  0}, /*  9*/
X{"& Longsword (%P2,%P3)"                           ,  23, '|',0x00000000,
X    0,    300,  18, 130,   1,   0,   0,   0,   0, "1d10" ,  0}, /* 10*/
X{"& Small Sword (%P2,%P3)"                         ,  23, '|',0x00000000,
X    0,     48,  22,  75,   1,   0,   0,   0,   0, "1d6"  ,  0}, /* 11*/
X{"& Broad Axe (%P2,%P3)"                          ,  21, '\\',0x00000000,
X    0,    304,   4, 160,   1,   0,   0,   0,   0, "2d5"  ,  0}, /* 12*/
X{"& Morningstar (%P2,%P3)"                        ,  21, '\\',0x00000000,
X    0,    396,   9, 150,   1,   0,   0,   0,   0, "2d6"  ,  0}, /* 13*/
X{"& Mace (%P2,%P3)"                               ,  21, '\\',0x00000000,
X    0,    130,  10, 120,   1,   0,   0,   0,   0, "2d4"  ,  0}, /* 14*/
X{"& War Hammer (%P2,%P3)"                         ,  21, '\\',0x00000000,
X    0,    225,  11, 120,   1,   0,   0,   0,   0, "3d3"  ,  0}, /* 15*/
X{"& Halberd (%P2,%P3)"                             ,  22, '/',0x00000000,
X    0,    430,   5, 190,   1,   0,   0,   0,   0, "3d4"  ,  0}, /* 16*/
X{"& Pike (%P2,%P3)"                                ,  22, '/',0x00000000,
X    0,    358,   7, 160,   1,   0,   0,   0,   0, "2d5"  ,  0}, /* 17*/
X{"& Spear (%P2,%P3)"                               ,  22, '/',0x00000000,
X    0,     36,   8,  50,   1,   0,   0,   0,   0, "1d6"  ,  0}, /* 18*/
X{"& Short Bow (%P2)"                               ,  20, '}',0x00000000,
X    2,     50,   1,  30,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 19*/
X{"& Long Bow (%P2)"                                ,  20, '}',0x00000000,
X    3,    120,   2,  40,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 20*/
X{"& Light Crossbow (%P2)"                          ,  20, '}',0x00000000,
X    5,    160,  10, 110,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 21*/
X{"& Sling (%P2)"                                   ,  20, '}',0x00000000,
X    1,      5,  20,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 22*/
X{"& Arrow~ (%P2,%P3)"                              ,  12, '{',0x00000000,
X    0,      1,   1,   2,   1,   0,   0,   0,   0, "1d4"  ,  0}, /* 23*/
X{"& Bolt~ (%P2,%P3)"                               ,  11, '{',0x00000000,
X    0,      2,   1,   3,   1,   0,   0,   0,   0, "1d5"  ,  0}, /* 24*/
X{"& Iron Shot~ (%P2,%P3)"                          ,  10, '{',0x00000000,
X    0,      2,   1,   5,   1,   0,   0,   0,   0, "1d3"  ,  0}, /* 25*/
X{"& Pick (%P1) (%P2,%P3)"                         ,  25, '\\',0x20000000,
X    1,     50,   1, 150,   1,   0,   0,   0,   0, "1d3"  ,  0}, /* 26*/
X{"& Shovel (%P1) (%P2,%P3)"                       ,  25, '\\',0x20000000,
X    0,     15,   2,  60,   1,   0,   0,   0,   0, "1d2"  ,  0}, /* 27*/
X{"& Pair of Soft Leather Boots [%P6,%P4]"          ,  30, ']',0x00000000,
X    0,      7,   2,  30,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 28*/
X{"& Pair of Hard Leather Boots [%P6,%P4]"          ,  30, ']',0x00000000,
X    0,     12,   3,  40,   1,   0,   0,   3,   0, "1d1"  ,  0}, /* 29*/
X{"& Hard Leather Cap [%P6,%P4]"                    ,  33, ']',0x00000000,
X    0,     12,   2,  15,   1,   0,   0,   2,   0, "0d0"  ,  0}, /* 30*/
X{"& Metal Cap [%P6,%P4]"                           ,  33, ']',0x00000000,
X    0,     30,   3,  20,   1,   0,   0,   3,   0, "1d1"  ,  0}, /* 31*/
X{"& Iron Helm [%P6,%P4]"                           ,  33, ']',0x00000000,
X    0,     75,   4,  75,   1,   0,   0,   5,   0, "1d3"  ,  0}, /* 32*/
X{"Soft Leather Armor [%P6,%P4]"                    ,  36, '(',0x00000000,
X    0,     18,   2,  80,   1,   0,   0,   4,   0, "0d0"  ,  0}, /* 33*/
X{"Soft Studded Leather [%P6,%P4]"                  ,  36, '(',0x00000000,
X    0,     35,   3,  90,   1,   0,   0,   5,   0, "1d1"  ,  0}, /* 34*/
X{"Hard Leather Armor [%P6,%P4]"                    ,  36, '(',0x00000000,
X    0,     55,   4, 100,   1,  -1,   0,   6,   0, "1d1"  ,  0}, /* 35*/
X{"Hard Studded Leather [%P6,%P4]"                  ,  36, '(',0x00000000,
X    0,    100,   5, 110,   1,  -1,   0,   7,   0, "1d2"  ,  0}, /* 36*/
X{"Leather Scale Mail [%P6,%P4]"                    ,  36, '(',0x00000000,
X    0,    330,   9, 140,   1,  -1,   0,  11,   0, "1d1"  ,  0}, /* 37*/
X{"Metal Scale Mail [%P6,%P4]"                      ,  35, '[',0x00000000,
X    0,    430,   1, 250,   1,  -2,   0,  13,   0, "1d4"  ,  0}, /* 38*/
X{"Chain Mail [%P6,%P4]"                            ,  35, '[',0x00000000,
X    0,    530,   2, 220,   1,  -2,   0,  14,   0, "1d4"  ,  0}, /* 39*/
X{"Partial Plate Armor [%P6,%P4]"                   ,  35, '[',0x00000000,
X    0,    900,   9, 260,   1,  -3,   0,  22,   0, "1d6"  ,  0}, /* 40*/
X{"Full Plate Armor [%P6,%P4]"                      ,  35, '[',0x00000000,
X    0,   1050,  11, 380,   1,  -3,   0,  25,   0, "2d4"  ,  0}, /* 41*/
X{"& Cloak [%P6,%P4]"                               ,  32, '(',0x00000000,
X    0,      3,   1,  10,   1,   0,   0,   1,   0, "0d0"  ,  0}, /* 42*/
X{"& Set of Leather Gloves [%P6,%P4]"               ,  31, ']',0x00000000,
X    0,      3,   1,   5,   1,   0,   0,   1,   0, "0d0"  ,  0}, /* 43*/
X{"& Set of Gauntlets [%P6,%P4]"                    ,  31, ']',0x00000000,
X    0,     35,   2,  25,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 44*/
X{"& Small Leather Shield [%P6,%P4]"                ,  34, ')',0x00000000,
X    0,     30,   1,  50,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 45*/
X{"& Medium Leather Shield [%P6,%P4]"               ,  34, ')',0x00000000,
X    0,     60,   2,  75,   1,   0,   0,   3,   0, "1d2"  ,  0}, /* 46*/
X{"& Small Metal Shield [%P6,%P4]"                  ,  34, ')',0x00000000,
X    0,     50,   4,  65,   1,   0,   0,   3,   0, "1d3"  ,  0}, /* 47*/
X{"& Ring of Resist Fire"                           ,  45, '=',0x00080000,
X    0,    250,  11,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 48*/
X{"& Ring of Resist Cold"                           ,  45, '=',0x00200000,
X    0,    250,  12,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 49*/
X{"& Ring of Feather Falling"                       ,  45, '=',0x04000000,
X    0,    250,  13,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 50*/
X{"& Ring of Protection [%P4]"                      ,  45, '=',0x00000000,
X    0,    100,  24,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 51*/
X{"& Amulet of Charisma (%P1)"                      ,  40, '"',0x00000020,
X    0,    250,   6,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 52*/
X{"& Amulet of Slow Digestion"                      ,  40, '"',0x00000080,
X    0,    200,   9,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 53*/
X{"& Amulet of Resist Acid"                         ,  40, '"',0x00100000,
X    0,    300,  10,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 54*/
X{"& Scroll~ of Enchant Weapon To-Hit"              ,  70, '?',0x00000001,
X    0,    125, 300,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 55*/
X{"& Scroll~ of Enchant Weapon To-Dam"              ,  70, '?',0x00000002,
X    0,    125, 301,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 56*/
X{"& Scroll~ of Enchant Armor"                      ,  70, '?',0x00000004,
X    0,    125, 302,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 57*/
X{"& Scroll~ of Identify"                           ,  70, '?',0x00000008,
X    0,     50, 303,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 58*/
X{"& Scroll~ of Remove Curse"                       ,  70, '?',0x00000010,
X    0,    100, 304,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 59*/
X{"& Scroll~ of Light"                              ,  70, '?',0x00000020,
X    0,     15, 305,   5,   3,   0,   0,   0,   0, "0d0"  ,  0}, /* 60*/
X{"& Scroll~ of Phase Door"                         ,  70, '?',0x00000080,
X    0,     15, 306,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 61*/
X{"& Scroll~ of Magic Mapping"                      ,  70, '?',0x00000800,
X    0,     40, 307,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 62*/
X{"& Scroll~ of Treasure Detection"                 ,  70, '?',0x00004000,
X    0,     15, 308,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 63*/
X{"& Scroll~ of Object Detection"                   ,  70, '?',0x00008000,
X    0,     15, 309,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 64*/
X{"& Scroll~ of Detect Invisible"                   ,  70, '?',0x00080000,
X    0,     15, 310,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 65*/
X{"& Scroll~ of Recharging"                         ,  70, '?',0x01000000,
X    0,    200, 311,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 66*/
X{"& Book of Magic Spells [Beginners-Magik]"        ,  90, '?',0x0000007F,
X    0,     25, 257,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 67*/
X{"& Book of Magic Spells [Magik I]"                ,  90, '?',0x0000FF80,
X    0,    100, 258,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 68*/
X{"& Book of Magic Spells [Magik II]"               ,  90, '?',0x00FF0000,
X    0,    400, 259,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 69*/
X{"& Book of Magic Spells [The Mage's Guide to Power]",  90, '?',0x7F000000,
X    0,    800, 261,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 70*/
X{"& Holy Book of Prayers [Beginners Handbook]"     ,  91, '?',0x000000FF,
X    0,     25, 258,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 71*/
X{"& Holy Book of Prayers [Words of Wisdom]"        ,  91, '?',0x0000FF00,
X    0,    100, 259,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 72*/
X{"& Holy Book of Prayers [Chants and Blessings]"   ,  91, '?',0x01FF0000,
X    0,    300, 260,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 73*/
X{"& Holy Book of Prayers [Exorcism and Dispelling]",  91, '?',0x7E000000,
X    0,    900, 261,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 74*/
X{"& Potion~ of Restore Strength"                   ,  75, '!',0x00000004,
X    0,    300, 310,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 75*/
X{"& Potion~ of Restore Intelligence"               ,  75, '!',0x00000020,
X    0,    300, 311,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 76*/
X{"& Potion~ of Restore Wisdom"                     ,  75, '!',0x00000100,
X    0,    300, 312,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 77*/
X{"& Potion~ of Restore Charisma"                   ,  75, '!',0x00000800,
X    0,    300, 313,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 78*/
X{"& Potion~ of Cure Light Wounds"                  ,  75, '!',0x10001000,
X   50,     15, 314,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 79*/
X{"& Potion~ of Cure Serious Wounds"                ,  75, '!',0x30002000,
X  100,     40, 315,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 80*/
X{"& Potion~ of Cure Critical Wounds"               ,  75, '!',0x70004000,
X  100,    100, 316,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 81*/
X{"& Potion~ of Restore Dexterity"                  ,  75, '!',0x04000000,
X    0,    300, 317,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 82*/
X{"& Potion~ of Restore Constitution"               ,  75, '!',0x68000000,
X    0,    300, 318,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 83*/
X{"& Potion~ of Heroism"                            ,  76, '!',0x00000010,
X    0,     35, 319,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 84*/
X{"& Potion~ of Boldness"                           ,  76, '!',0x00000040,
X    0,     10, 320,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 85*/
X{"& Wand of Light (%P1 charges)"                   ,  65, '-',0x00000001,
X    0,    200,   1,  10,   1,   0,   0,   0,   0, "1d1"  ,  2}, /* 86*/
X{"& Wand of Lightning Bolts (%P1 charges)"         ,  65, '-',0x00000002,
X    0,    600,   2,  10,   1,   0,   0,   0,   0, "1d1"  ,  6}, /* 87*/
X{"& Wand of Magic Missile (%P1 charges)"           ,  65, '-',0x00002000,
X    0,    200,  14,  10,   1,   0,   0,   0,   0, "1d1"  ,  2}, /* 88*/
X{"& Wand of Disarming (%P1 charges)"               ,  65, '-',0x00020000,
X    0,    700,  18,  10,   1,   0,   0,   0,   0, "1d1"  , 12}, /* 89*/
X{"& Wand of Lightning Balls (%P1 charges)"         ,  65, '-',0x00040000,
X    0,   1200,  19,  10,   1,   0,   0,   0,   0, "1d1"  , 20}, /* 90*/
X{"& Wand of Wonder (%P1 charges)"                  ,  65, '-',0x00800000,
X    0,    250,  24,  10,   1,   0,   0,   0,   0, "1d1"  , 10}, /* 91*/
X{"& Staff of Light (%P1 charges)"                  ,  55, '_',0x00000001,
X    0,    250,   1,  50,   1,   0,   0,   0,   0, "1d2"  ,  3}, /* 92*/
X{"& Staff of Door/Stair Location (%P1 charges)"    ,  55, '_',0x00000002,
X    0,    350,   2,  50,   1,   0,   0,   0,   0, "1d2"  ,  7}, /* 93*/
X{"& Staff of Trap Location (%P1 charges)"          ,  55, '_',0x00000004,
X    0,    350,   3,  50,   1,   0,   0,   0,   0, "1d2"  ,  7}, /* 94*/
X{"& Staff of Detect Invisible (%P1 charges)"       ,  55, '_',0x00008000,
X    0,    200,  16,  50,   1,   0,   0,   0,   0, "1d2"  ,  3}, /* 95*/
X{"& Potion~ of Restore Life Levels"                ,  76, '!',0x00000080,
X    0,    400, 321,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 96*/
X{"& Scroll~ of Blessing"                           ,  71, '?',0x00000020,
X    0,     15, 312,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 97*/
X{"& Scroll~ of Word-of-Recall"                     ,  71, '?',0x00000100,
X    0,    150, 313,   5,   3,   0,   0,   0,   0, "0d0"  ,  0}, /* 98*/
X{"& Potion~ of Slow Poison"                        ,  76, '!',0x00000800,
X    0,     25, 322,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 99*/
X{"& Potion~ of Neutralize Poison"                  ,  76, '!',0x00001000,
X    0,     75, 323,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /*100*/
X{"& Wand of Stinking Cloud (%P1 charges)"          ,  65, '-',0x00200000,
X    0,    400,  22,  10,   1,   0,   0,   0,   0, "1d1"  ,  5}, /*101*/
X{"& Iron Spike~"                                   ,  13, '~',0x00000000,
X    0,      1,   1,  10,   1,   0,   0,   0,   0, "1d1"  ,  1}, /*102*/
X{"& Brass Lantern~ with %P5 turns of light"        ,  15, '~',0x00000000,
X 7500,     35,   2,  50,   1,   0,   0,   0,   0, "1d1"  ,  1}, /*103*/
X{"& Wooden Torch~ with %P5 turns of light"         ,  15, '~',0x00000000,
X 4000,      2, 270,  30,   5,   0,   0,   0,   0, "1d1"  ,  1}, /*104*/
X{"& Flask~ of oil"                                 ,  77, '!',0x00040000,
X 7500,      3, 257,  10,   5,   0,   0,   0,   0, "2d6"  ,  1}  /*105*/
X};
X
Xtreasure_type blank_treasure = {"nothing", 0, ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0,
X  0, "0d0", 0};
X
X/* Treasure related values					*/
Xint inven_ctr = 0;	        /* Total different obj's	*/
Xint inven_weight = 0;   	/* Cur carried weight	*/
Xint equip_ctr = 0;  	        /* Cur equipment ctr	*/
Xint tcptr;              	/* Cur treasure heap ptr	*/
X
X/* Following are feature objects defined for dungeon		*/
X
X/* Traps are just Nasty treasures...				*/
Xtreasure_type trap_lista[MAX_TRAPA] = {
X{"an open pit"                                     , 102, ' ',0x00000000,
X    0,      0,   1,   0,   1,   0,   0,   0,   0, "2d6"  ,-50},
X{"an arrow trap"                                   , 101, '.',0x00000000,
X    0,      0,   2,   0,   1,   0,   0,   0,   0, "1d8"  ,  0},
X{"a covered pit"                                   , 101, '.',0x00000000,
X    0,      0,   3,   0,   1,   0,   0,   0,   0, "2d6"  ,  0},
X{"a trap door"                                     , 101, '.',0x00000000,
X    0,      0,   4,   0,   1,   0,   0,   0,   0, "2d8"  ,  0},
X{"a gas trap"                                      , 101, '.',0x00000000,
X    0,      0,   5,   0,   1,   0,   0,   0,   0, "1d4"  ,  0},
X{"a loose rock"                                    , 101, '.',0x00000000,
X    0,      0,   6,   0,   1,   0,   0,   0,   0, "0d0"  ,  0},
X{"a dart trap"                                     , 101, '.',0x00000000,
X    0,      0,   7,   0,   1,   0,   0,   0,   0, "1d4"  ,  0},
X{"a strange rune"                                  , 101, '.',0x00000000,
X    0,      0,   8,   0,   1,   0,   0,   0,   0, "0d0"  ,  0},
X{"some loose rock"                                 , 101, '.',0x00000000,
X    0,      0,   9,   0,   1,   0,   0,   0,   0, "2d6"  ,  0},
X{"a gas trap"                                      , 101, '.',0x00000000,
X    0,      0,  10,   0,   1,   0,   0,   0,   0, "1d4"  ,  0},
X{"a strange rune"                                  , 101, '.',0x00000000,
X    0,      0,  11,   0,   1,   0,   0,   0,   0, "0d0"  ,  0},
X{"a blackened spot"                                , 101, '.',0x00000000,
X    0,      0,  12,   0,   1,   0,   0,   0,   0, "4d6"  ,  0},
X{"some corroded rock"                              , 101, '.',0x00000000,
X    0,      0,  13,   0,   1,   0,   0,   0,   0, "4d6"  ,  0},
X{"a gas trap"                                      , 101, '.',0x00000000,
X    0,      0,  14,   0,   1,   0,   0,   0,   0, "2d6"  ,  0},
X{"a gas trap"                                      , 101, '.',0x00000000,
X    5,      0,  15,   0,   1,   0,   0,   0,   0, "1d4"  , 10},
X{"a gas trap"                                      , 101, '.',0x00000000,
X    5,      0,  16,   0,   1,   0,   0,   0,   0, "1d8"  ,  5},
X{"a dart trap"                                     , 101, '.',0x00000000,
X    5,      0,  17,   0,   1,   0,   0,   0,   0, "1d8"  , 10},
X{"a dart trap"                                     , 101, '.',0x00000000,
X    5,      0,  18,   0,   1,   0,   0,   0,   0, "1d8"  , 10}
X};
X
X/* Traps: Level represents the difficulty of disarming;	*/
X/* and P1 represents the experienced gained when disarmed*/
Xtreasure_type trap_listb[MAX_TRAPB] = {
X{"an open pit"                                     , 102, ' ',0x00000000,
X    1,      0,   1,   0,   1,   0,   0,   0,   0, "2d6"  ,-50},
X{"an arrow trap"                                   , 102, '^',0x00000000,
X    3,      0,   2,   0,   1,   0,   0,   0,   0, "1d8"  ,-10},
X{"a covered pit"                                   , 102, '^',0x00000000,
X    2,      0,   3,   0,   1,   0,   0,   0,   0, "2d6"  ,-40},
X{"a trap door"                                     , 102, '^',0x00000000,
X    5,      0,   4,   0,   1,   0,   0,   0,   0, "2d8"  ,-25},
X{"a gas trap"                                      , 102, '^',0x00000000,
X    3,      0,   5,   0,   1,   0,   0,   0,   0, "1d4"  ,  5},
X{"a loose rock"                                    , 102, ';',0x00000000,
X    0,      0,   6,   0,   1,   0,   0,   0,   0, "0d0"  ,-90},
X{"a dart trap"                                     , 102, '^',0x00000000,
X    5,      0,   7,   0,   1,   0,   0,   0,   0, "1d4"  , 10},
X{"a strange rune"                                  , 102, '^',0x00000000,
X    5,      0,   8,   0,   1,   0,   0,   0,   0, "0d0"  ,-10},
X{"some loose rock"                                 , 102, '^',0x00000000,
X    5,      0,   9,   0,   1,   0,   0,   0,   0, "2d6"  ,-10},
X{"a gas trap"                                      , 102, '^',0x00000000,
X   10,      0,  10,   0,   1,   0,   0,   0,   0, "1d4"  ,  5},
X{"a strange rune"                                  , 102, '^',0x00000000,
X    5,      0,  11,   0,   1,   0,   0,   0,   0, "0d0"  ,-10},
X{"a blackened spot"                                , 102, '^',0x00000000,
X   10,      0,  12,   0,   1,   0,   0,   0,   0, "4d6"  , 10},
X{"some corroded rock"                              , 102, '^',0x00000000,
X   10,      0,  13,   0,   1,   0,   0,   0,   0, "4d6"  , 10},
X{"a gas trap"                                      , 102, '^',0x00000000,
X    5,      0,  14,   0,   1,   0,   0,   0,   0, "2d6"  ,  5},
X{"a gas trap"                                      , 102, '^',0x00000000,
X    5,      0,  15,   0,   1,   0,   0,   0,   0, "1d4"  , 10},
X{"a gas trap"                                      , 102, '^',0x00000000,
X    5,      0,  16,   0,   1,   0,   0,   0,   0, "1d8"  ,  5},
X{"a dart trap"                                     , 102, '^',0x00000000,
X    5,      0,  17,   0,   1,   0,   0,   0,   0, "1d8"  , 10},
X{"a dart trap"                                     , 102, '^',0x00000000,
X    5,      0,  18,   0,   1,   0,   0,   0,   0, "1d8"  , 10},
X	/* Special case, see DOOR_LIST below (subvals must agree)        */
X{"a closed door"                                   , 105, '+',0x00000000,
X    0,      0,  19,   0,   1,   0,   0,   0,   0, "1d1"  ,  0}
X};
X
X/* Special trap	*/
Xtreasure_type scare_monster =
X{"a strange rune"                                  , 102, '^',0x00000000,
X    0,      0,  99,   0,   1,   0,   0,   0,   0, "0d0"  ,-90};
X
Xtreasure_type rubble =
X{"some rubble"                                     , 103, ':',0x00000000,
X    0,      0,   1,   0,   1,   0,   0,   0,   0, "0d0"  ,  0};
X
X/* Secret door must have same subval as closed door in	*/
X/* TRAP_LISTB.  See CHANGE_TRAP                          */
Xtreasure_type door_list[3] = {
X{"an open door"                                    , 104,'\'',0x00000000,
X    0,      0,   1,   0,   1,   0,   0,   0,   0, "1d1"  ,  0},
X{"a closed door"                                   , 105, '+',0x00000000,
X    0,      0,  19,   0,   1,   0,   0,   0,   0, "1d1"  ,  0},
X{"a secret door"                                   , 109, '#',0x00000000,
X    0,      0,  19,   0,   1,   0,   0,   0,   0, "1d1"  ,  0}
X};
X
Xtreasure_type up_stair =
X{"an up staircase "                                , 107, '<',0x00000000,
X    0,      0,   1,   0,   1,   0,   0,   0,   0, "1d1"  ,  0};
X
Xtreasure_type down_stair =
X{"a down staircase"                                , 108, '>',0x00000000,
X    0,      0,   1,   0,   1,   0,   0,   0,   0, "1d1"  ,  0};
X
END_OF_FILE
if test 28070 -ne `wc -c <'treasure2.c'`; then
    echo shar: \"'treasure2.c'\" unpacked with wrong size!
fi
# end of 'treasure2.c'
fi
echo shar: End of archive 13 \(of 18\).
cp /dev/null ark13isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 18 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0