home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / patch3c < prev    next >
Encoding:
Internet Message Format  |  1993-07-23  |  60.7 KB

  1. Path: uunet!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i036:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch3c/18
  5. Date: 20 Jul 1993 22:32:21 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 2159
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <22hrpl$9pq@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1836
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 18, Issue 36
  15. Archive-name: nethack31/patch3c
  16. Patch-To: nethack31: Volume 16, Issue 1-116
  17. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  18.  
  19.  
  20.  
  21. #! /bin/sh
  22. # This is a shell archive.  Remove anything before this line, then unpack
  23. # it by saving it into a file and typing "sh file".  To overwrite existing
  24. # files, type "sh file -c".  You can also feed this as standard input via
  25. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  26. # will see the following message at the end:
  27. #        "End of archive 3 (of 18)."
  28. # Contents:  UPDATE3 patches03b sys/share/lev_comp.h
  29. # Wrapped by billr@saab on Tue Jul 20 14:57:18 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'UPDATE3' -a "${1}" != "-c" ; then 
  32.   echo shar: Renaming existing file \"'UPDATE3'\" to \"'UPDATE3.orig'\"
  33.   mv -f 'UPDATE3' 'UPDATE3.orig'
  34. fi
  35. echo shar: Extracting \"'UPDATE3'\" \(658 characters\)
  36. sed "s/^X//" >'UPDATE3' <<'END_OF_FILE'
  37. XMac windowing was further revised, and the Macintosh code was ported to
  38. XThink C by Barton House.  Amiga windowing was also touched up.
  39. X
  40. XThe MSDOS black/gray/white intensities were changed again to avoid
  41. Xconfusing displays on some PC hardware.  New video options were added
  42. Xto allow configuration around any other oddities.
  43. X
  44. XBugs were fixed.  In particular, an elusive bug dealing with horns of
  45. Xplenty was finally found, along with a couple VMS-specific ones such as
  46. Xfetching some bones files.  A number of messages were revised and updated
  47. Xas well.
  48. X
  49. XBones files and saved NetHack 3.1.2 games will not work with NetHack 3.1.3.
  50. XDelete them, to avoid problems.
  51. END_OF_FILE
  52. if test 658 -ne `wc -c <'UPDATE3'`; then
  53.     echo shar: \"'UPDATE3'\" unpacked with wrong size!
  54. fi
  55. # end of 'UPDATE3'
  56. if test -f 'patches03b' -a "${1}" != "-c" ; then 
  57.   echo shar: Renaming existing file \"'patches03b'\" to \"'patches03b.orig'\"
  58.   mv -f 'patches03b' 'patches03b.orig'
  59. fi
  60. echo shar: Extracting \"'patches03b'\" \(54812 characters\)
  61. sed "s/^X//" >'patches03b' <<'END_OF_FILE'
  62. X*** /tmp/da21027    Mon Jul 12 17:32:31 1993
  63. X--- src/engrave.c    Fri Jul  2 15:24:48 1993
  64. X***************
  65. X*** 1,4 ****
  66. X! /*    SCCS Id: @(#)engrave.c    3.1    92/05/18    */
  67. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  68. X  /* NetHack may be freely redistributed.  See license for details. */
  69. X  
  70. X--- 1,4 ----
  71. X! /*    SCCS Id: @(#)engrave.c    3.1    92/06/16    */
  72. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  73. X  /* NetHack may be freely redistributed.  See license for details. */
  74. X  
  75. X***************
  76. X*** 61,66 ****
  77. X--- 61,68 ----
  78. X          return "ice";
  79. X      else if (is_lava(x,y))
  80. X          return "lava";
  81. X+     else if (lev->typ == DRAWBRIDGE_DOWN)
  82. X+         return "bridge";
  83. X      else if ((IS_ROOM(lev->typ) && !Is_earthlevel(&u.uz)) ||
  84. X           IS_WALL(lev->typ) || IS_DOOR(lev->typ) || lev->typ == SDOOR)
  85. X          return "floor";
  86. X***************
  87. X*** 441,447 ****
  88. X          case FOOD_CLASS:
  89. X          case SCROLL_CLASS:
  90. X          case SPBOOK_CLASS:
  91. X!         Your("%s would get too dirty.", xname(otmp));
  92. X          ptext = FALSE;
  93. X          break;
  94. X  
  95. X--- 443,450 ----
  96. X          case FOOD_CLASS:
  97. X          case SCROLL_CLASS:
  98. X          case SPBOOK_CLASS:
  99. X!         Your("%s would get %s.", xname(otmp),
  100. X!             is_ice(u.ux,u.uy) ? "all frosty" : "too dirty");
  101. X          ptext = FALSE;
  102. X          break;
  103. X  
  104. X***************
  105. X*** 647,659 ****
  106. X                  if (!Blind)
  107. X                      You("wipe out the message here.");
  108. X                  else
  109. X!                     Your("%s gets dusty.", xname(otmp));
  110. X                  dengr = TRUE;
  111. X                  } else
  112. X                  Your("%s can't wipe out this engraving.",
  113. X                       xname(otmp));
  114. X              else
  115. X!                 Your("%s gets dusty.", xname(otmp));
  116. X              break;
  117. X              default:
  118. X              break;
  119. X--- 650,665 ----
  120. X                  if (!Blind)
  121. X                      You("wipe out the message here.");
  122. X                  else
  123. X!                     Your("%s gets %s.", xname(otmp),
  124. X!                       is_ice(u.ux,u.uy) ?
  125. X!                       "frosty" : "dusty");
  126. X                  dengr = TRUE;
  127. X                  } else
  128. X                  Your("%s can't wipe out this engraving.",
  129. X                       xname(otmp));
  130. X              else
  131. X!                 Your("%s gets %s.", xname(otmp),
  132. X!                   is_ice(u.ux,u.uy) ? "frosty" : "dusty");
  133. X              break;
  134. X              default:
  135. X              break;
  136. X*** /tmp/da21035    Mon Jul 12 17:32:35 1993
  137. X--- src/exper.c    Wed Jul  7 16:24:25 1993
  138. X***************
  139. X*** 16,22 ****
  140. X  #else
  141. X      if(lev < 10) return (10L*(1L << lev));
  142. X      if(lev < 20) return (10000L*(1L << (lev-10)));
  143. X!     return (10000000L*(lev-19));
  144. X  #endif
  145. X  }
  146. X  
  147. X--- 16,22 ----
  148. X  #else
  149. X      if(lev < 10) return (10L*(1L << lev));
  150. X      if(lev < 20) return (10000L*(1L << (lev-10)));
  151. X!     return((long)(10000000L*(lev-19)));
  152. X  #endif
  153. X  }
  154. X  
  155. X*** /tmp/da21059    Mon Jul 12 17:32:40 1993
  156. X--- src/files.c    Wed Jul  7 16:24:27 1993
  157. X***************
  158. X*** 1,4 ****
  159. X! /*    SCCS Id: @(#)files.c    3.1    93/02/20    */
  160. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  161. X  /* NetHack may be freely redistributed.  See license for details. */
  162. X  
  163. X--- 1,4 ----
  164. X! /*    SCCS Id: @(#)files.c    3.1    93/06/27    */
  165. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  166. X  /* NetHack may be freely redistributed.  See license for details. */
  167. X  
  168. X***************
  169. X*** 927,936 ****
  170. X          /* monsyms[0] is unused */
  171. X          (void) get_uchars(fp, buf, bufp, &(monsyms[1]),
  172. X                      MAXMCLASSES-1, "MONSTERS");
  173. X  #ifdef AMIGA
  174. X      } else if (!strncmpi(buf, "FONT", 4)) {
  175. X          char *t;
  176. X-         int size;
  177. X          extern void amii_set_text_font( char *, int );
  178. X  
  179. X          if( t = strchr( buf+5, ':' ) )
  180. X--- 927,949 ----
  181. X          /* monsyms[0] is unused */
  182. X          (void) get_uchars(fp, buf, bufp, &(monsyms[1]),
  183. X                      MAXMCLASSES-1, "MONSTERS");
  184. X+ #ifdef VIDEOSHADES
  185. X+     } else if (!strncmpi(buf, "VIDEOCOLORS", 6)) {
  186. X+         uchar   transcolors[MAXCOLORS];
  187. X+         int   len;
  188. X+ 
  189. X+         len = get_uchars(fp, buf, bufp, transcolors,
  190. X+                     MAXCOLORS, "VIDEOCOLORS");
  191. X+         assign_videocolors(transcolors, len);
  192. X+     } else if (!strncmpi(buf, "VIDEOSHADES", 6)) {
  193. X+         int   len;
  194. X+ 
  195. X+         len = strlen(bufp);
  196. X+         assign_videoshades(bufp, len);
  197. X+ #endif
  198. X  #ifdef AMIGA
  199. X      } else if (!strncmpi(buf, "FONT", 4)) {
  200. X          char *t;
  201. X          extern void amii_set_text_font( char *, int );
  202. X  
  203. X          if( t = strchr( buf+5, ':' ) )
  204. X***************
  205. X*** 941,946 ****
  206. X--- 954,961 ----
  207. X          }
  208. X      } else if (!strncmpi(buf, "PATH", 4)) {
  209. X          (void) strncpy(PATH, bufp, PATHLEN);
  210. X+ #endif
  211. X+ #ifdef AMIGA
  212. X      } else if (!strncmpi(buf, "PENS", 3)) {
  213. X  # ifdef AMII_GRAPHICS
  214. X          int i;
  215. X*** /tmp/da21067    Mon Jul 12 17:32:43 1993
  216. X--- src/fountain.c    Mon Jul 12 13:45:10 1993
  217. X***************
  218. X*** 206,212 ****
  219. X              if (++i >= A_MAX) i = 0;
  220. X          }
  221. X          display_nhwindow(WIN_MESSAGE, FALSE);
  222. X!         pline("A wisp of vapor escapes the fountain....");
  223. X          exercise(A_WIS, TRUE);
  224. X          levl[u.ux][u.uy].blessedftn = 0;
  225. X          return;
  226. X--- 206,212 ----
  227. X              if (++i >= A_MAX) i = 0;
  228. X          }
  229. X          display_nhwindow(WIN_MESSAGE, FALSE);
  230. X!         pline("A wisp of vapor escapes the fountain...");
  231. X          exercise(A_WIS, TRUE);
  232. X          levl[u.ux][u.uy].blessedftn = 0;
  233. X          return;
  234. X***************
  235. X*** 222,228 ****
  236. X  
  237. X          case 19: /* Self-knowledge */
  238. X  
  239. X!             You("feel self-knowledgeable....");
  240. X              display_nhwindow(WIN_MESSAGE, FALSE);
  241. X              enlightenment(FALSE);
  242. X              exercise(A_WIS, TRUE);
  243. X--- 222,228 ----
  244. X  
  245. X          case 19: /* Self-knowledge */
  246. X  
  247. X!             You("feel self-knowledgeable...");
  248. X              display_nhwindow(WIN_MESSAGE, FALSE);
  249. X              enlightenment(FALSE);
  250. X              exercise(A_WIS, TRUE);
  251. X***************
  252. X*** 521,529 ****
  253. X  #endif
  254. X              break;
  255. X          /* more odd messages --JJB */
  256. X!         case 11: You("hear clanking from the pipes....");
  257. X              break;
  258. X!         case 12: You("hear snatches of song from among the sewers....");
  259. X              break;
  260. X          case 19: if (Hallucination) {
  261. X             pline("From the murky drain, a hand reaches up... --oops--");
  262. X--- 521,529 ----
  263. X  #endif
  264. X              break;
  265. X          /* more odd messages --JJB */
  266. X!         case 11: You("hear clanking from the pipes...");
  267. X              break;
  268. X!         case 12: You("hear snatches of song from among the sewers...");
  269. X              break;
  270. X          case 19: if (Hallucination) {
  271. X             pline("From the murky drain, a hand reaches up... --oops--");
  272. X*** /tmp/da21075    Mon Jul 12 17:32:45 1993
  273. X--- src/hack.c    Wed Jul  7 16:24:29 1993
  274. X***************
  275. X*** 1,4 ****
  276. X! /*    SCCS Id: @(#)hack.c    3.1    93/05/18    */
  277. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  278. X  /* NetHack may be freely redistributed.  See license for details. */
  279. X  
  280. X--- 1,4 ----
  281. X! /*    SCCS Id: @(#)hack.c    3.1    93/06/15    */
  282. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  283. X  /* NetHack may be freely redistributed.  See license for details. */
  284. X  
  285. X***************
  286. X*** 126,133 ****
  287. X              }
  288. X              continue;
  289. X          case TRAPDOOR:
  290. X!             pline("%s falls into and plugs a hole in the ground!",
  291. X!               The(xname(otmp)));
  292. X              deltrap(ttmp);
  293. X              delobj(otmp);
  294. X              bury_objs(rx, ry);
  295. X--- 126,133 ----
  296. X              }
  297. X              continue;
  298. X          case TRAPDOOR:
  299. X!             pline("%s falls into and plugs a hole in the %s!",
  300. X!               The(xname(otmp)), surface(rx, ry));
  301. X              deltrap(ttmp);
  302. X              delobj(otmp);
  303. X              bury_objs(rx, ry);
  304. X***************
  305. X*** 394,400 ****
  306. X  register xchar x,y;
  307. X  /* intended to be called only on ROCKs */
  308. X  {
  309. X! return (!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONDIGGABLE)));
  310. X  }
  311. X  
  312. X  boolean
  313. X--- 394,400 ----
  314. X  register xchar x,y;
  315. X  /* intended to be called only on ROCKs */
  316. X  {
  317. X! return((boolean)(!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONDIGGABLE))));
  318. X  }
  319. X  
  320. X  boolean
  321. X***************
  322. X*** 401,407 ****
  323. X  may_passwall(x,y)
  324. X  register xchar x,y;
  325. X  {
  326. X! return (!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONPASSWALL)));
  327. X  }
  328. X  
  329. X  #endif /* OVLB */
  330. X--- 401,407 ----
  331. X  may_passwall(x,y)
  332. X  register xchar x,y;
  333. X  {
  334. X! return((boolean)(!(IS_STWALL(levl[x][y].typ) && (levl[x][y].diggable & W_NONPASSWALL))));
  335. X  }
  336. X  
  337. X  #endif /* OVLB */
  338. X***************
  339. X*** 411,422 ****
  340. X  bad_rock(x,y)
  341. X  register xchar x,y;
  342. X  {
  343. X!     return(IS_ROCK(levl[x][y].typ)
  344. X  #ifdef POLYSELF
  345. X              && !(passes_walls(uasmon) && may_passwall(x,y))
  346. X              && (!tunnels(uasmon) || needspick(uasmon) || !may_dig(x,y))
  347. X  #endif
  348. X!     );
  349. X  }
  350. X  
  351. X  boolean
  352. X--- 411,422 ----
  353. X  bad_rock(x,y)
  354. X  register xchar x,y;
  355. X  {
  356. X!     return((boolean)(IS_ROCK(levl[x][y].typ)
  357. X  #ifdef POLYSELF
  358. X              && !(passes_walls(uasmon) && may_passwall(x,y))
  359. X              && (!tunnels(uasmon) || needspick(uasmon) || !may_dig(x,y))
  360. X  #endif
  361. X!     ));
  362. X  }
  363. X  
  364. X  boolean
  365. X***************
  366. X*** 423,429 ****
  367. X  invocation_pos(x, y)
  368. X  xchar x, y;
  369. X  {
  370. X!         return(Invocation_lev(&u.uz) && x == inv_pos.x && y == inv_pos.y);
  371. X  }
  372. X  
  373. X  #endif /* OVL1 */
  374. X--- 423,429 ----
  375. X  invocation_pos(x, y)
  376. X  xchar x, y;
  377. X  {
  378. X!         return((boolean)(Invocation_lev(&u.uz) && x == inv_pos.x && y == inv_pos.y));
  379. X  }
  380. X  
  381. X  #endif /* OVL1 */
  382. X***************
  383. X*** 954,961 ****
  384. X          if (!is_pool(u.ux,u.uy)) {
  385. X              if (Is_waterlevel(&u.uz))
  386. X                  You("pop into an air bubble.");
  387. X              else
  388. X!                 You("are on solid ground again.");
  389. X          }
  390. X          else if (Is_waterlevel(&u.uz))
  391. X              goto stillinwater;
  392. X--- 954,964 ----
  393. X          if (!is_pool(u.ux,u.uy)) {
  394. X              if (Is_waterlevel(&u.uz))
  395. X                  You("pop into an air bubble.");
  396. X+             else if (is_lava(u.ux, u.uy))
  397. X+                 You("leave the water...");    /* oops! */
  398. X              else
  399. X!                 You("are on solid %s again.",
  400. X!                     is_ice(u.ux, u.uy) ? "ice" : "land");
  401. X          }
  402. X          else if (Is_waterlevel(&u.uz))
  403. X              goto stillinwater;
  404. X***************
  405. X*** 1081,1087 ****
  406. X  
  407. X      min_x = x - 1;
  408. X      max_x = x + 1;
  409. X!     if (x < 0)
  410. X          min_x += step;
  411. X      else 
  412. X      if (x >= COLNO)
  413. X--- 1084,1090 ----
  414. X  
  415. X      min_x = x - 1;
  416. X      max_x = x + 1;
  417. X!     if (x < 1)
  418. X          min_x += step;
  419. X      else 
  420. X      if (x >= COLNO)
  421. X*** /tmp/da21083    Mon Jul 12 17:32:49 1993
  422. X--- src/hacklib.c    Wed Jul  7 16:24:32 1993
  423. X***************
  424. X*** 50,56 ****
  425. X  digit(c)        /* is 'c' a digit? */
  426. X      char c;
  427. X  {
  428. X!     return '0' <= c && c <= '9';
  429. X  }
  430. X  
  431. X  boolean
  432. X--- 50,56 ----
  433. X  digit(c)        /* is 'c' a digit? */
  434. X      char c;
  435. X  {
  436. X!     return((boolean)('0' <= c && c <= '9'));
  437. X  }
  438. X  
  439. X  boolean
  440. X***************
  441. X*** 57,63 ****
  442. X  letter(c)        /* is 'c' a letter?  note: '@' classed as letter */
  443. X      char c;
  444. X  {
  445. X!     return ('@' <= c && c <= 'Z') || ('a' <= c && c <= 'z');
  446. X  }
  447. X  #endif /* OVLB */
  448. X  
  449. X--- 57,63 ----
  450. X  letter(c)        /* is 'c' a letter?  note: '@' classed as letter */
  451. X      char c;
  452. X  {
  453. X!     return((boolean)(('@' <= c && c <= 'Z') || ('a' <= c && c <= 'z')));
  454. X  }
  455. X  #endif /* OVLB */
  456. X  
  457. X***************
  458. X*** 66,72 ****
  459. X  highc(c)            /* force 'c' into uppercase */
  460. X      char c;
  461. X  {
  462. X!     return ('a' <= c && c <= 'z') ? (c & ~040) : c;
  463. X  }
  464. X  
  465. X  char
  466. X--- 66,72 ----
  467. X  highc(c)            /* force 'c' into uppercase */
  468. X      char c;
  469. X  {
  470. X!     return((char)(('a' <= c && c <= 'z') ? (c & ~040) : c));
  471. X  }
  472. X  
  473. X  char
  474. X***************
  475. X*** 73,79 ****
  476. X  lowc(c)            /* force 'c' into lowercase */
  477. X      char c;
  478. X  {
  479. X!     return ('A' <= c && c <= 'Z') ? (c | 040) : c;
  480. X  }
  481. X  #endif /* OVL1 */
  482. X  
  483. X--- 73,79 ----
  484. X  lowc(c)            /* force 'c' into lowercase */
  485. X      char c;
  486. X  {
  487. X!     return((char)(('A' <= c && c <= 'Z') ? (c | 040) : c));
  488. X  }
  489. X  #endif /* OVL1 */
  490. X  
  491. X***************
  492. X*** 277,283 ****
  493. X    /*  If either delta is zero then they're on an orthogonal line,
  494. X     :  else if the deltas are equal (signs ignored) they're on a diagonal.
  495. X     */
  496. X!     return !dy || !dx || (dy == dx) || (dy + dx == 0);    /* (dy == -dx) */
  497. X  }
  498. X  
  499. X  #endif /* OVL0 */
  500. X--- 277,283 ----
  501. X    /*  If either delta is zero then they're on an orthogonal line,
  502. X     :  else if the deltas are equal (signs ignored) they're on a diagonal.
  503. X     */
  504. X!     return((boolean)(!dy || !dx || (dy == dx) || (dy + dx == 0)));    /* (dy == -dx) */
  505. X  }
  506. X  
  507. X  #endif /* OVL0 */
  508. X***************
  509. X*** 295,304 ****
  510. X  pmatch_top:
  511. X      s = *strng++;  p = *patrn++;    /* get next chars and pre-advance */
  512. X      if (!p)            /* end of pattern */
  513. X!     return (s == '\0');        /* matches iff end of string too */
  514. X      else if (p == '*')        /* wildcard reached */
  515. X!     return (!*patrn || pmatch(patrn, strng-1)) ? TRUE :
  516. X!         s ? pmatch(patrn-1, strng) : FALSE;
  517. X      else if (p != s && (p != '?' || !s))  /* check single character */
  518. X      return FALSE;        /* doesn't match */
  519. X      else                /* return pmatch(patrn, strng); */
  520. X--- 295,304 ----
  521. X  pmatch_top:
  522. X      s = *strng++;  p = *patrn++;    /* get next chars and pre-advance */
  523. X      if (!p)            /* end of pattern */
  524. X!     return((boolean)(s == '\0'));        /* matches iff end of string too */
  525. X      else if (p == '*')        /* wildcard reached */
  526. X!     return((boolean)((!*patrn || pmatch(patrn, strng-1)) ? TRUE :
  527. X!         s ? pmatch(patrn-1, strng) : FALSE));
  528. X      else if (p != s && (p != '?' || !s))  /* check single character */
  529. X      return FALSE;        /* doesn't match */
  530. X      else                /* return pmatch(patrn, strng); */
  531. X***************
  532. X*** 498,504 ****
  533. X  {
  534. X      register struct tm *lt = getlt();
  535. X  
  536. X!     return (lt->tm_wday == 5 /* friday */ && lt->tm_mday == 13);
  537. X  }
  538. X  
  539. X  int
  540. X--- 498,504 ----
  541. X  {
  542. X      register struct tm *lt = getlt();
  543. X  
  544. X!     return((boolean)(lt->tm_wday == 5 /* friday */ && lt->tm_mday == 13));
  545. X  }
  546. X  
  547. X  int
  548. X*** /tmp/da21091    Mon Jul 12 17:32:51 1993
  549. X--- src/invent.c    Wed Jul  7 16:24:34 1993
  550. X***************
  551. X*** 701,707 ****
  552. X              (otmp->oclass == TOOL_CLASS &&
  553. X               otmp->otyp != MAGIC_MARKER && otmp->otyp != TOWEL))
  554. X          || (!strcmp(word, "tin") &&
  555. X!             (otmp->otyp != CORPSE))
  556. X          || (!strcmp(word, "rub") &&
  557. X              (otmp->oclass == TOOL_CLASS &&
  558. X               otmp->otyp != OIL_LAMP && otmp->otyp != MAGIC_LAMP &&
  559. X--- 701,707 ----
  560. X              (otmp->oclass == TOOL_CLASS &&
  561. X               otmp->otyp != MAGIC_MARKER && otmp->otyp != TOWEL))
  562. X          || (!strcmp(word, "tin") &&
  563. X!             (otmp->otyp != CORPSE || !tinnable(otmp)))
  564. X          || (!strcmp(word, "rub") &&
  565. X              (otmp->oclass == TOOL_CLASS &&
  566. X               otmp->otyp != OIL_LAMP && otmp->otyp != MAGIC_LAMP &&
  567. X***************
  568. X*** 870,880 ****
  569. X  
  570. X  static boolean
  571. X  wearing_armor() {
  572. X!     return(uarm || uarmc || uarmf || uarmg || uarmh || uarms
  573. X  #ifdef TOURIST
  574. X          || uarmu
  575. X  #endif
  576. X!         );
  577. X  }
  578. X  
  579. X  static boolean
  580. X--- 870,880 ----
  581. X  
  582. X  static boolean
  583. X  wearing_armor() {
  584. X!     return((boolean)(uarm || uarmc || uarmf || uarmg || uarmh || uarms
  585. X  #ifdef TOURIST
  586. X          || uarmu
  587. X  #endif
  588. X!         ));
  589. X  }
  590. X  
  591. X  static boolean
  592. X***************
  593. X*** 881,887 ****
  594. X  is_worn(otmp)
  595. X  register struct obj *otmp;
  596. X  {
  597. X!     return(!!(otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL | W_WEP)));
  598. X  }
  599. X  
  600. X  static boolean
  601. X--- 881,887 ----
  602. X  is_worn(otmp)
  603. X  register struct obj *otmp;
  604. X  {
  605. X!     return((boolean)(!!(otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL | W_WEP))));
  606. X  }
  607. X  
  608. X  static boolean
  609. X***************
  610. X*** 888,895 ****
  611. X  is_fully_identified(otmp)
  612. X  register struct obj *otmp;
  613. X  {
  614. X!     return(otmp->known && otmp->dknown && otmp->bknown && otmp->rknown
  615. X!        && objects[otmp->otyp].oc_name_known);
  616. X  }
  617. X  
  618. X  static NEARDATA const char removeables[] =
  619. X--- 888,895 ----
  620. X  is_fully_identified(otmp)
  621. X  register struct obj *otmp;
  622. X  {
  623. X!     return((boolean)(otmp->known && otmp->dknown && otmp->bknown && otmp->rknown
  624. X!        && objects[otmp->otyp].oc_name_known));
  625. X  }
  626. X  
  627. X  static NEARDATA const char removeables[] =
  628. X***************
  629. X*** 1127,1133 ****
  630. X      ilet = 'a';
  631. X      for(otmp = invent; otmp && otmp != obj; otmp = otmp->nobj)
  632. X          if(++ilet > 'z') ilet = 'A';
  633. X!     return(otmp ? ilet : NOINVSYM);
  634. X  }
  635. X  
  636. X  /*
  637. X--- 1127,1133 ----
  638. X      ilet = 'a';
  639. X      for(otmp = invent; otmp && otmp != obj; otmp = otmp->nobj)
  640. X          if(++ilet > 'z') ilet = 'A';
  641. X!     return((char)(otmp ? ilet : NOINVSYM));
  642. X  }
  643. X  
  644. X  /*
  645. X***************
  646. X*** 1675,1681 ****
  647. X  
  648. X      if(obj->known == otmp->known ||
  649. X          !objects[otmp->otyp].oc_uses_known) {
  650. X!         return(objects[obj->otyp].oc_merge);
  651. X      } else return(FALSE);
  652. X  }
  653. X  
  654. X--- 1675,1681 ----
  655. X  
  656. X      if(obj->known == otmp->known ||
  657. X          !objects[otmp->otyp].oc_uses_known) {
  658. X!         return((boolean)(objects[obj->otyp].oc_merge));
  659. X      } else return(FALSE);
  660. X  }
  661. X  
  662. X*** /tmp/da21099    Mon Jul 12 17:32:54 1993
  663. X--- src/lock.c    Wed Jul  7 16:24:37 1993
  664. X***************
  665. X*** 1,4 ****
  666. X! /*    SCCS Id: @(#)lock.c    3.1    93/05/28    */
  667. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  668. X  /* NetHack may be freely redistributed.  See license for details. */
  669. X  
  670. X--- 1,4 ----
  671. X! /*    SCCS Id: @(#)lock.c    3.1    93/06/12    */
  672. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  673. X  /* NetHack may be freely redistributed.  See license for details. */
  674. X  
  675. X***************
  676. X*** 38,45 ****
  677. X  picking_at(x, y)
  678. X  int x, y;
  679. X  {
  680. X!     return((occupation == picklock) && 
  681. X!            xlock.door_or_box && (xlock.door == &levl[x][y])); 
  682. X  }
  683. X  
  684. X  /* produce an occupation string appropriate for the current activity */
  685. X--- 38,45 ----
  686. X  picking_at(x, y)
  687. X  int x, y;
  688. X  {
  689. X!     return((boolean)((occupation == picklock) && 
  690. X!            xlock.door_or_box && (xlock.door == &levl[x][y]))); 
  691. X  }
  692. X  
  693. X  /* produce an occupation string appropriate for the current activity */
  694. X***************
  695. X*** 154,160 ****
  696. X      if(xlock.picktyp) {    /* blade */
  697. X  
  698. X          if(rn2(1000-(int)uwep->spe) > (992-(int)uwep->oeroded*10) && 
  699. X!            !uwep->cursed) {
  700. X          /* for a +0 weapon, probability that it survives an unsuccessful
  701. X           * attempt to force the lock is (.992)^50 = .67
  702. X           */
  703. X--- 154,160 ----
  704. X      if(xlock.picktyp) {    /* blade */
  705. X  
  706. X          if(rn2(1000-(int)uwep->spe) > (992-(int)uwep->oeroded*10) && 
  707. X!            !uwep->cursed && !obj_resists(uwep, 0, 99)) {
  708. X          /* for a +0 weapon, probability that it survives an unsuccessful
  709. X           * attempt to force the lock is (.992)^50 = .67
  710. X           */
  711. X*** /tmp/da21115    Mon Jul 12 17:32:59 1993
  712. X--- src/makemon.c    Wed Jul  7 16:24:40 1993
  713. X***************
  714. X*** 1,4 ****
  715. X! /*    SCCS Id: @(#)makemon.c    3.1    93/05/10    */
  716. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  717. X  /* NetHack may be freely redistributed.  See license for details. */
  718. X  
  719. X--- 1,4 ----
  720. X! /*    SCCS Id: @(#)makemon.c    3.1    93/06/26    */
  721. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  722. X  /* NetHack may be freely redistributed.  See license for details. */
  723. X  
  724. X***************
  725. X*** 19,25 ****
  726. X  static boolean NDECL(cmavail);
  727. X  static int FDECL(align_shift, (struct permonst *));
  728. X  #endif /* OVL0 */
  729. X- STATIC_DCL boolean FDECL(is_home_elemental,(struct permonst *));
  730. X  STATIC_DCL boolean FDECL(wrong_elem_type, (struct permonst *));
  731. X  STATIC_DCL void FDECL(m_initgrp,(struct monst *,int,int,int));
  732. X  STATIC_DCL void FDECL(m_initthrow,(struct monst *,int,int));
  733. X--- 19,24 ----
  734. X***************
  735. X*** 36,54 ****
  736. X  #define tooweak(monindx, lev)    (monstr[monindx] < lev)
  737. X  
  738. X  #ifdef OVLB
  739. X! STATIC_OVL boolean
  740. X  is_home_elemental(ptr)
  741. X  register struct permonst *ptr;
  742. X  {
  743. X!     if (ptr->mlet != S_ELEMENTAL) return FALSE;
  744. X!     if (!In_endgame(&u.uz)) return FALSE;
  745. X!     switch(monsndx(ptr)) {
  746. X          case PM_AIR_ELEMENTAL: return Is_airlevel(&u.uz);
  747. X          case PM_FIRE_ELEMENTAL: return Is_firelevel(&u.uz);
  748. X          case PM_EARTH_ELEMENTAL: return Is_earthlevel(&u.uz);
  749. X          case PM_WATER_ELEMENTAL: return Is_waterlevel(&u.uz);
  750. X!     }
  751. X!     return FALSE;    /* shouldn't be reached */
  752. X  }
  753. X  
  754. X  /*
  755. X--- 35,52 ----
  756. X  #define tooweak(monindx, lev)    (monstr[monindx] < lev)
  757. X  
  758. X  #ifdef OVLB
  759. X! boolean
  760. X  is_home_elemental(ptr)
  761. X  register struct permonst *ptr;
  762. X  {
  763. X!     if (ptr->mlet == S_ELEMENTAL)
  764. X!         switch (monsndx(ptr)) {
  765. X          case PM_AIR_ELEMENTAL: return Is_airlevel(&u.uz);
  766. X          case PM_FIRE_ELEMENTAL: return Is_firelevel(&u.uz);
  767. X          case PM_EARTH_ELEMENTAL: return Is_earthlevel(&u.uz);
  768. X          case PM_WATER_ELEMENTAL: return Is_waterlevel(&u.uz);
  769. X!         }
  770. X!     return FALSE;
  771. X  }
  772. X  
  773. X  /*
  774. X***************
  775. X*** 58,64 ****
  776. X  wrong_elem_type(ptr)
  777. X      register struct permonst *ptr;
  778. X  {
  779. X!     if (Is_earthlevel(&u.uz)) {
  780. X      /* no restrictions? */
  781. X      } else if (Is_waterlevel(&u.uz)) {
  782. X      /* just monsters that can swim */
  783. X--- 56,64 ----
  784. X  wrong_elem_type(ptr)
  785. X      register struct permonst *ptr;
  786. X  {
  787. X!     if (ptr->mlet == S_ELEMENTAL) {
  788. X!     return((boolean)(!is_home_elemental(ptr)));
  789. X!     } else if (Is_earthlevel(&u.uz)) {
  790. X      /* no restrictions? */
  791. X      } else if (Is_waterlevel(&u.uz)) {
  792. X      /* just monsters that can swim */
  793. X***************
  794. X*** 1303,1314 ****
  795. X--- 1303,1321 ----
  796. X          otmp->oerodeproof = TRUE;
  797. X          } else if(is_mplayer(mtmp->data) && is_sword(otmp))
  798. X              otmp->spe = (3 + rn2(4));
  799. X+ 
  800. X          if(otmp->otyp == CANDELABRUM_OF_INVOCATION) {
  801. X          otmp->spe = 0;
  802. X          otmp->age = 0L;
  803. X          otmp->lamplit = FALSE;
  804. X          otmp->blessed = otmp->cursed = FALSE;
  805. X+         } else if (otmp->otyp == BELL_OF_OPENING) {
  806. X+         otmp->blessed = otmp->cursed = FALSE;
  807. X+         } else if (otmp->otyp == SPE_BOOK_OF_THE_DEAD) {
  808. X+         otmp->blessed = FALSE;
  809. X+         otmp->cursed = TRUE;
  810. X          }
  811. X+ 
  812. X          mpickobj(mtmp, otmp);
  813. X          return(otmp->spe);
  814. X      } else return(0);
  815. X***************
  816. X*** 1363,1376 ****
  817. X      if (mal < A_NEUTRAL && u.uhave.amulet) return FALSE;
  818. X  
  819. X      /* minions are hostile to players that have strayed at all */
  820. X!     if (is_minion(ptr)) return(u.ualign.record >= 0);
  821. X  
  822. X      /* Last case:  a chance of a co-aligned monster being
  823. X       * hostile.  This chance is greater if the player has strayed
  824. X       * (u.ualign.record negative) or the monster is not strongly aligned.
  825. X       */
  826. X!     return !!rn2(16 + (u.ualign.record < -15 ? -15 : u.ualign.record)) &&
  827. X!         !!rn2(2 + abs(mal));
  828. X  }
  829. X  
  830. X  /* Set malign to have the proper effect on player alignment if monster is
  831. X--- 1370,1383 ----
  832. X      if (mal < A_NEUTRAL && u.uhave.amulet) return FALSE;
  833. X  
  834. X      /* minions are hostile to players that have strayed at all */
  835. X!     if (is_minion(ptr)) return((boolean)(u.ualign.record >= 0));
  836. X  
  837. X      /* Last case:  a chance of a co-aligned monster being
  838. X       * hostile.  This chance is greater if the player has strayed
  839. X       * (u.ualign.record negative) or the monster is not strongly aligned.
  840. X       */
  841. X!     return((boolean)(!!rn2(16 + (u.ualign.record < -15 ? -15 : u.ualign.record)) &&
  842. X!         !!rn2(2 + abs(mal))));
  843. X  }
  844. X  
  845. X  /* Set malign to have the proper effect on player alignment if monster is
  846. X***************
  847. X*** 1414,1433 ****
  848. X          else
  849. X              mtmp->malign = 20;    /* really hostile */
  850. X      } else if (always_peaceful(mtmp->data)) {
  851. X          if (mtmp->mpeaceful)
  852. X!             mtmp->malign = -3*max(5,abs(mal));
  853. X          else
  854. X!             mtmp->malign = 3*max(5,abs(mal)); /* renegade */
  855. X      } else if (always_hostile(mtmp->data)) {
  856. X          if (coaligned)
  857. X              mtmp->malign = 0;
  858. X          else
  859. X!             mtmp->malign = max(5,abs(mal));
  860. X      } else if (coaligned) {
  861. X          if (mtmp->mpeaceful)
  862. X!             mtmp->malign = -3*max(3,abs(mal));
  863. X          else    /* renegade */
  864. X!             mtmp->malign = max(3,abs(mal));
  865. X      } else    /* not coaligned and therefore hostile */
  866. X          mtmp->malign = abs(mal);
  867. X  }
  868. X--- 1421,1443 ----
  869. X          else
  870. X              mtmp->malign = 20;    /* really hostile */
  871. X      } else if (always_peaceful(mtmp->data)) {
  872. X+         int absmal = abs(mal);
  873. X          if (mtmp->mpeaceful)
  874. X!             mtmp->malign = -3*max(5,absmal);
  875. X          else
  876. X!             mtmp->malign = 3*max(5,absmal); /* renegade */
  877. X      } else if (always_hostile(mtmp->data)) {
  878. X+         int absmal = abs(mal);
  879. X          if (coaligned)
  880. X              mtmp->malign = 0;
  881. X          else
  882. X!             mtmp->malign = max(5,absmal);
  883. X      } else if (coaligned) {
  884. X+         int absmal = abs(mal);
  885. X          if (mtmp->mpeaceful)
  886. X!             mtmp->malign = -3*max(3,absmal);
  887. X          else    /* renegade */
  888. X!             mtmp->malign = max(3,absmal);
  889. X      } else    /* not coaligned and therefore hostile */
  890. X          mtmp->malign = abs(mal);
  891. X  }
  892. X*** /tmp/da21123    Mon Jul 12 17:33:02 1993
  893. X--- src/mcastu.c    Mon Jul 12 13:45:12 1993
  894. X***************
  895. X*** 196,202 ****
  896. X                  if (Stunned)
  897. X                  You("struggle to keep your balance.");
  898. X                  else
  899. X!                 You("reel....");
  900. X                  dmg = d(ACURR(A_DEX) < 12 ? 6 : 4, 4);
  901. X                  if(Half_spell_damage) dmg = (dmg+1) / 2;
  902. X                  make_stunned(HStun + dmg, FALSE);
  903. X--- 196,202 ----
  904. X                  if (Stunned)
  905. X                  You("struggle to keep your balance.");
  906. X                  else
  907. X!                 You("reel...");
  908. X                  dmg = d(ACURR(A_DEX) < 12 ? 6 : 4, 4);
  909. X                  if(Half_spell_damage) dmg = (dmg+1) / 2;
  910. X                  make_stunned(HStun + dmg, FALSE);
  911. X*** /tmp/da21132    Mon Jul 12 17:33:05 1993
  912. X--- src/mhitm.c    Mon Jul 12 13:45:15 1993
  913. X***************
  914. X*** 1030,1036 ****
  915. X          if (!magr->mstun) {
  916. X              magr->mstun = 1;
  917. X              if (canseemon(magr))
  918. X!             pline("%s staggers....", Monnam(magr));
  919. X          }
  920. X          tmp = 0;
  921. X          break;
  922. X--- 1030,1036 ----
  923. X          if (!magr->mstun) {
  924. X              magr->mstun = 1;
  925. X              if (canseemon(magr))
  926. X!             pline("%s staggers...", Monnam(magr));
  927. X          }
  928. X          tmp = 0;
  929. X          break;
  930. X*** /tmp/da21141    Mon Jul 12 17:33:08 1993
  931. X--- src/mhitu.c    Mon Jul 12 13:45:20 1993
  932. X***************
  933. X*** 1065,1071 ****
  934. X                  !Is_medusa_level(&u.uz) &&
  935. X                  !Is_waterlevel(&u.uz);
  936. X  
  937. X!                 pline("%s drowns you....", Monnam(mtmp));
  938. X                  killer_format = KILLED_BY_AN;
  939. X                  Sprintf(buf, "%s by %s",
  940. X                      moat ? "moat" : "pool of water",
  941. X--- 1065,1071 ----
  942. X                  !Is_medusa_level(&u.uz) &&
  943. X                  !Is_waterlevel(&u.uz);
  944. X  
  945. X!                 pline("%s drowns you...", Monnam(mtmp));
  946. X                  killer_format = KILLED_BY_AN;
  947. X                  Sprintf(buf, "%s by %s",
  948. X                      moat ? "moat" : "pool of water",
  949. X*** /tmp/da21157    Mon Jul 12 17:33:14 1993
  950. X--- src/mklev.c    Wed Jul  7 16:24:42 1993
  951. X***************
  952. X*** 439,447 ****
  953. X      }
  954. X      *xx = dd.x;
  955. X      *yy = dd.y;
  956. X!     return((isok(*xx,*yy+*dy) && levl[*xx][*yy+*dy].typ == STONE)
  957. X          && (isok(*xx,*yy-*dy) && !IS_POOL(levl[*xx][*yy-*dy].typ)
  958. X!                   && !IS_FURNITURE(levl[*xx][*yy-*dy].typ)));
  959. X  }
  960. X  
  961. X  /* there should be one of these per trap, in the same order as trap.h */
  962. X--- 439,447 ----
  963. X      }
  964. X      *xx = dd.x;
  965. X      *yy = dd.y;
  966. X!     return((boolean)((isok(*xx,*yy+*dy) && levl[*xx][*yy+*dy].typ == STONE)
  967. X          && (isok(*xx,*yy-*dy) && !IS_POOL(levl[*xx][*yy-*dy].typ)
  968. X!                   && !IS_FURNITURE(levl[*xx][*yy-*dy].typ))));
  969. X  }
  970. X  
  971. X  /* there should be one of these per trap, in the same order as trap.h */
  972. X***************
  973. X*** 1057,1063 ****
  974. X  occupied(x, y)
  975. X  register xchar x, y;
  976. X  {
  977. X!     return(t_at(x, y) || levl[x][y].typ == STAIRS
  978. X          || IS_FOUNTAIN(levl[x][y].typ)
  979. X          || IS_THRONE(levl[x][y].typ)
  980. X  #ifdef SINKS
  981. X--- 1057,1063 ----
  982. X  occupied(x, y)
  983. X  register xchar x, y;
  984. X  {
  985. X!     return((boolean)(t_at(x, y) || levl[x][y].typ == STAIRS
  986. X          || IS_FOUNTAIN(levl[x][y].typ)
  987. X          || IS_THRONE(levl[x][y].typ)
  988. X  #ifdef SINKS
  989. X***************
  990. X*** 1067,1073 ****
  991. X          || is_lava(x,y)
  992. X          || is_pool(x,y)
  993. X          || invocation_pos(x,y)
  994. X!         );
  995. X  }
  996. X  
  997. X  /* make a trap somewhere (in croom if mazeflag = 0 && !tm) */
  998. X--- 1067,1073 ----
  999. X          || is_lava(x,y)
  1000. X          || is_pool(x,y)
  1001. X          || invocation_pos(x,y)
  1002. X!         ));
  1003. X  }
  1004. X  
  1005. X  /* make a trap somewhere (in croom if mazeflag = 0 && !tm) */
  1006. X*** /tmp/da21173    Mon Jul 12 17:33:19 1993
  1007. X--- src/mkmaze.c    Wed Jul  7 16:24:45 1993
  1008. X***************
  1009. X*** 129,138 ****
  1010. X      xchar x, y;
  1011. X      xchar lx, ly, hx, hy;
  1012. X  {
  1013. X!     return(occupied(x, y) ||
  1014. X         ((x >= lx) && (x <= hx) && (y >= ly) && (y <= hy)) ||
  1015. X         !((levl[x][y].typ == CORR && level.flags.is_maze_lev) ||
  1016. X!            levl[x][y].typ == ROOM || levl[x][y].typ == AIR));
  1017. X  }
  1018. X  
  1019. X  /* pick a location in area (lx, ly, hx, hy) but not in (nlx, nly, nhx, nhy) */
  1020. X--- 129,138 ----
  1021. X      xchar x, y;
  1022. X      xchar lx, ly, hx, hy;
  1023. X  {
  1024. X!     return((boolean)(occupied(x, y) ||
  1025. X         ((x >= lx) && (x <= hx) && (y >= ly) && (y <= hy)) ||
  1026. X         !((levl[x][y].typ == CORR && level.flags.is_maze_lev) ||
  1027. X!            levl[x][y].typ == ROOM || levl[x][y].typ == AIR)));
  1028. X  }
  1029. X  
  1030. X  /* pick a location in area (lx, ly, hx, hy) but not in (nlx, nly, nhx, nhy) */
  1031. X*** /tmp/da21181    Mon Jul 12 17:33:21 1993
  1032. X--- src/mkobj.c    Wed Jul  7 16:24:48 1993
  1033. X***************
  1034. X*** 591,597 ****
  1035. X      else if (obj->otyp == GOLD_PIECE)
  1036. X          return (int)((obj->quan + 50L) / 100L);
  1037. X      else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0)
  1038. X!         return obj->owt;    /* kludge for "very" heavy iron ball */
  1039. X      return(wt ? wt*(int)obj->quan : ((int)obj->quan + 1)>>1);
  1040. X  }
  1041. X  
  1042. X--- 591,597 ----
  1043. X      else if (obj->otyp == GOLD_PIECE)
  1044. X          return (int)((obj->quan + 50L) / 100L);
  1045. X      else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0)
  1046. X!         return((int)(obj->owt));    /* kludge for "very" heavy iron ball */
  1047. X      return(wt ? wt*(int)obj->quan : ((int)obj->quan + 1)>>1);
  1048. X  }
  1049. X  
  1050. X***************
  1051. X*** 681,687 ****
  1052. X  
  1053. X      if (objects[otyp].oc_oprop == FIRE_RES) return FALSE;
  1054. X  
  1055. X!     return((objects[otyp].oc_material <= WOOD &&
  1056. X              objects[otyp].oc_material != LIQUID));
  1057. X  }
  1058. X  
  1059. X--- 681,687 ----
  1060. X  
  1061. X      if (objects[otyp].oc_oprop == FIRE_RES) return FALSE;
  1062. X  
  1063. X!     return((boolean)(objects[otyp].oc_material <= WOOD &&
  1064. X              objects[otyp].oc_material != LIQUID));
  1065. X  }
  1066. X  
  1067. X*** /tmp/da21189    Mon Jul 12 17:33:24 1993
  1068. X--- src/mkroom.c    Wed Jul  7 16:24:50 1993
  1069. X***************
  1070. X*** 41,47 ****
  1071. X  {
  1072. X      register int area = (sroom->hx - sroom->lx + 1)
  1073. X                 * (sroom->hy - sroom->ly + 1);
  1074. X!     return( area > 20 );
  1075. X  }
  1076. X  
  1077. X  void
  1078. X--- 41,47 ----
  1079. X  {
  1080. X      register int area = (sroom->hx - sroom->lx + 1)
  1081. X                 * (sroom->hy - sroom->ly + 1);
  1082. X!     return((boolean)( area > 20 ));
  1083. X  }
  1084. X  
  1085. X  void
  1086. X***************
  1087. X*** 110,116 ****
  1088. X                  return;
  1089. X              }
  1090. X              for(i=0; shtypes[i].name; i++)
  1091. X!                 if(*ep == def_oc_syms[shtypes[i].symb])
  1092. X                      goto gottype;
  1093. X              if(*ep == 'g' || *ep == 'G')
  1094. X                  i = 0;
  1095. X--- 110,116 ----
  1096. X                  return;
  1097. X              }
  1098. X              for(i=0; shtypes[i].name; i++)
  1099. X!                 if(*ep == def_oc_syms[(int)shtypes[i].symb])
  1100. X                      goto gottype;
  1101. X              if(*ep == 'g' || *ep == 'G')
  1102. X                  i = 0;
  1103. X***************
  1104. X*** 296,302 ****
  1105. X          switch(type) {
  1106. X              case ZOO:
  1107. X              if(sroom->doorct)
  1108. X!                 i = sq(dist2(sx,sy,doors[sh].x,doors[sh].y));
  1109. X              else
  1110. X                  i = goldlim;
  1111. X              if(i >= goldlim) i = 5*level_difficulty();
  1112. X--- 296,305 ----
  1113. X          switch(type) {
  1114. X              case ZOO:
  1115. X              if(sroom->doorct)
  1116. X!             {
  1117. X!                 int distval = dist2(sx,sy,doors[sh].x,doors[sh].y);
  1118. X!                 i = sq(distval);
  1119. X!             }
  1120. X              else
  1121. X                  i = goldlim;
  1122. X              if(i >= goldlim) i = 5*level_difficulty();
  1123. X***************
  1124. X*** 474,480 ****
  1125. X      if (sroom == dnstairs_room)
  1126. X          return TRUE;
  1127. X      if (sstairs.sx && !sstairs.up)
  1128. X!         return sroom == sstairs_room;
  1129. X      return FALSE;
  1130. X  }
  1131. X  
  1132. X--- 477,483 ----
  1133. X      if (sroom == dnstairs_room)
  1134. X          return TRUE;
  1135. X      if (sstairs.sx && !sstairs.up)
  1136. X!         return((boolean)(sroom == sstairs_room));
  1137. X      return FALSE;
  1138. X  }
  1139. X  
  1140. X***************
  1141. X*** 485,491 ****
  1142. X      if (sroom == upstairs_room)
  1143. X          return TRUE;
  1144. X      if (sstairs.sx && sstairs.up)
  1145. X!         return sroom == sstairs_room;
  1146. X      return FALSE;
  1147. X  }
  1148. X  
  1149. X--- 488,494 ----
  1150. X      if (sroom == upstairs_room)
  1151. X          return TRUE;
  1152. X      if (sstairs.sx && sstairs.up)
  1153. X!         return((boolean)(sroom == sstairs_room));
  1154. X      return FALSE;
  1155. X  }
  1156. X  
  1157. X***************
  1158. X*** 511,518 ****
  1159. X  struct mkroom *croom;
  1160. X  xchar x, y;
  1161. X  {
  1162. X!     return (x >= croom->lx-1 && x <= croom->hx+1 &&
  1163. X!         y >= croom->ly-1 && y <= croom->hy+1);
  1164. X  }
  1165. X  
  1166. X  boolean
  1167. X--- 514,521 ----
  1168. X  struct mkroom *croom;
  1169. X  xchar x, y;
  1170. X  {
  1171. X!     return((boolean)(x >= croom->lx-1 && x <= croom->hx+1 &&
  1172. X!         y >= croom->ly-1 && y <= croom->hy+1));
  1173. X  }
  1174. X  
  1175. X  boolean
  1176. X*** /tmp/da21197    Mon Jul 12 17:33:26 1993
  1177. X--- src/mon.c    Mon Jul 12 13:45:22 1993
  1178. X***************
  1179. X*** 1,4 ****
  1180. X! /*    SCCS Id: @(#)mon.c    3.1    93/05/26    */
  1181. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1182. X  /* NetHack may be freely redistributed.  See license for details. */
  1183. X  
  1184. X--- 1,4 ----
  1185. X! /*    SCCS Id: @(#)mon.c    3.1    93/06/12    */
  1186. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1187. X  /* NetHack may be freely redistributed.  See license for details. */
  1188. X  
  1189. X***************
  1190. X*** 215,221 ****
  1191. X          break;
  1192. X          default:
  1193. X          if (Hallucination)
  1194. X!             Your("spider-sense is tingling....");
  1195. X          else
  1196. X              You("feel apprehensive as you sense a %s flash.",
  1197. X              warnings[warnlevel]);
  1198. X--- 215,221 ----
  1199. X          break;
  1200. X          default:
  1201. X          if (Hallucination)
  1202. X!             Your("spider-sense is tingling...");
  1203. X          else
  1204. X              You("feel apprehensive as you sense a %s flash.",
  1205. X              warnings[warnlevel]);
  1206. X***************
  1207. X*** 379,385 ****
  1208. X      /* Eats topmost metal object if it is there */
  1209. X      for (otmp = level.objects[mtmp->mx][mtmp->my];
  1210. X                              otmp; otmp = otmp->nexthere)
  1211. X!         if (is_metallic(otmp) && touch_artifact(otmp,mtmp)) {
  1212. X              if (cansee(mtmp->mx,mtmp->my) && flags.verbose)
  1213. X              pline("%s eats %s!", Monnam(mtmp),
  1214. X                  distant_name(otmp,doname));
  1215. X--- 379,386 ----
  1216. X      /* Eats topmost metal object if it is there */
  1217. X      for (otmp = level.objects[mtmp->mx][mtmp->my];
  1218. X                              otmp; otmp = otmp->nexthere)
  1219. X!         if (is_metallic(otmp) && !obj_resists(otmp, 5, 95) &&
  1220. X!         touch_artifact(otmp,mtmp)) {
  1221. X              if (cansee(mtmp->mx,mtmp->my) && flags.verbose)
  1222. X              pline("%s eats %s!", Monnam(mtmp),
  1223. X                  distant_name(otmp,doname));
  1224. X***************
  1225. X*** 418,424 ****
  1226. X      /* Engulfs others, except huge rocks and metal attached to player */
  1227. X      for (otmp = level.objects[mtmp->mx][mtmp->my]; otmp; otmp = otmp2) {
  1228. X          otmp2 = otmp->nexthere;
  1229. X!         if(is_organic(otmp) && touch_artifact(otmp,mtmp)) {
  1230. X          if (otmp->otyp == CORPSE && otmp->corpsenm == PM_COCKATRICE
  1231. X                          && !resists_ston(mtmp->data))
  1232. X              continue;
  1233. X--- 419,426 ----
  1234. X      /* Engulfs others, except huge rocks and metal attached to player */
  1235. X      for (otmp = level.objects[mtmp->mx][mtmp->my]; otmp; otmp = otmp2) {
  1236. X          otmp2 = otmp->nexthere;
  1237. X!         if (is_organic(otmp) && !obj_resists(otmp, 5, 95) &&
  1238. X!             touch_artifact(otmp,mtmp)) {
  1239. X          if (otmp->otyp == CORPSE && otmp->corpsenm == PM_COCKATRICE
  1240. X                          && !resists_ston(mtmp->data))
  1241. X              continue;
  1242. X***************
  1243. X*** 603,609 ****
  1244. X  
  1245. X      /* nymphs deal in stolen merchandise, but not boulders or statues */
  1246. X      if (mtmp->data->mlet == S_NYMPH)
  1247. X!         return !(otmp->oclass == ROCK_CLASS);
  1248. X  
  1249. X      if(curr_mon_load(mtmp) + newload > max_mon_load(mtmp)) return(FALSE);
  1250. X  
  1251. X--- 605,611 ----
  1252. X  
  1253. X      /* nymphs deal in stolen merchandise, but not boulders or statues */
  1254. X      if (mtmp->data->mlet == S_NYMPH)
  1255. X!         return((boolean)(!(otmp->oclass == ROCK_CLASS)));
  1256. X  
  1257. X      if(curr_mon_load(mtmp) + newload > max_mon_load(mtmp)) return(FALSE);
  1258. X  
  1259. X***************
  1260. X*** 778,784 ****
  1261. X  {
  1262. X      register int distance = dist2(mon->mx, mon->my, x, y);
  1263. X      if (distance==2 && mon->data==&mons[PM_GRID_BUG]) return 0;
  1264. X!     return (distance < 3);
  1265. X  }
  1266. X  
  1267. X  #endif /* OVL1 */
  1268. X--- 780,786 ----
  1269. X  {
  1270. X      register int distance = dist2(mon->mx, mon->my, x, y);
  1271. X      if (distance==2 && mon->data==&mons[PM_GRID_BUG]) return 0;
  1272. X!     return((boolean)(distance < 3));
  1273. X  }
  1274. X  
  1275. X  #endif /* OVL1 */
  1276. X***************
  1277. X*** 983,988 ****
  1278. X--- 985,993 ----
  1279. X  register struct monst *mdef;
  1280. X  {
  1281. X      mondead(mdef);
  1282. X+ #ifdef MUSE
  1283. X+     if(mdef->mhp > 0) return; /* lifesaved */
  1284. X+ #endif
  1285. X      if(rn2(3)
  1286. X  #ifdef REINCARNATION
  1287. X         && !Is_rogue_level(&u.uz)
  1288. X***************
  1289. X*** 1137,1143 ****
  1290. X      boolean wasinside = u.uswallow && (u.ustuck == mtmp);
  1291. X  
  1292. X      if (dest & 1) {
  1293. X!         if(!canseemon(mtmp) && !sensemon(mtmp)) You("destroy it!");
  1294. X          else {
  1295. X          You("destroy %s!",
  1296. X              mtmp->mtame ? x_monnam(mtmp, 0, "poor", 0)
  1297. X--- 1142,1149 ----
  1298. X      boolean wasinside = u.uswallow && (u.ustuck == mtmp);
  1299. X  
  1300. X      if (dest & 1) {
  1301. X!         if(!wasinside && !canseemon(mtmp) && !sensemon(mtmp))
  1302. X!         You("destroy it!");
  1303. X          else {
  1304. X          You("destroy %s!",
  1305. X              mtmp->mtame ? x_monnam(mtmp, 0, "poor", 0)
  1306. X*** /tmp/da21205    Mon Jul 12 17:33:29 1993
  1307. X--- src/mondata.c    Wed Jul  7 16:24:55 1993
  1308. X***************
  1309. X*** 30,37 ****
  1310. X  poly_when_stoned(ptr)
  1311. X      struct permonst *ptr;
  1312. X  {
  1313. X!     return (is_golem(ptr) && ptr != &mons[PM_STONE_GOLEM] &&
  1314. X!         !(mons[PM_STONE_GOLEM].geno & G_GENOD));    /* allow G_EXTINCT */
  1315. X  }
  1316. X  
  1317. X  boolean
  1318. X--- 30,37 ----
  1319. X  poly_when_stoned(ptr)
  1320. X      struct permonst *ptr;
  1321. X  {
  1322. X!     return((boolean)(is_golem(ptr) && ptr != &mons[PM_STONE_GOLEM] &&
  1323. X!         !(mons[PM_STONE_GOLEM].geno & G_GENOD)));    /* allow G_EXTINCT */
  1324. X  }
  1325. X  
  1326. X  boolean
  1327. X***************
  1328. X*** 39,45 ****
  1329. X  
  1330. X      register struct permonst *ptr;
  1331. X  {
  1332. X!     return(is_undead(ptr) || is_demon(ptr) || is_were(ptr));
  1333. X  }
  1334. X  
  1335. X  #endif /* OVLB */
  1336. X--- 39,45 ----
  1337. X  
  1338. X      register struct permonst *ptr;
  1339. X  {
  1340. X!     return((boolean)(is_undead(ptr) || is_demon(ptr) || is_were(ptr)));
  1341. X  }
  1342. X  
  1343. X  #endif /* OVLB */
  1344. X***************
  1345. X*** 70,78 ****
  1346. X  register struct permonst *ptr;
  1347. X  /* returns TRUE if monster is especially affected by silver weapons */
  1348. X  {
  1349. X!     return (is_were(ptr) || ptr->mlet==S_VAMPIRE || is_demon(ptr) ||
  1350. X          ptr == &mons[PM_SHADE] ||
  1351. X!         (ptr->mlet==S_IMP && ptr != &mons[PM_TENGU]));
  1352. X  }
  1353. X  
  1354. X  #endif /* OVL0 */
  1355. X--- 70,78 ----
  1356. X  register struct permonst *ptr;
  1357. X  /* returns TRUE if monster is especially affected by silver weapons */
  1358. X  {
  1359. X!     return((boolean)(is_were(ptr) || ptr->mlet==S_VAMPIRE || is_demon(ptr) ||
  1360. X          ptr == &mons[PM_SHADE] ||
  1361. X!         (ptr->mlet==S_IMP && ptr != &mons[PM_TENGU])));
  1362. X  }
  1363. X  
  1364. X  #endif /* OVL0 */
  1365. X***************
  1366. X*** 85,91 ****
  1367. X      if (uwep && uwep->oartifact == ART_EXCALIBUR)
  1368. X          return TRUE;
  1369. X      else
  1370. X!         return(haseyes(ptr));
  1371. X  }
  1372. X  
  1373. X  #endif /* OVL1 */
  1374. X--- 85,91 ----
  1375. X      if (uwep && uwep->oartifact == ART_EXCALIBUR)
  1376. X          return TRUE;
  1377. X      else
  1378. X!         return((boolean)haseyes(ptr));
  1379. X  }
  1380. X  
  1381. X  #endif /* OVL1 */
  1382. X***************
  1383. X*** 96,103 ****
  1384. X  sliparm(ptr)    /* creature will slide out of armor */
  1385. X      register struct permonst *ptr;
  1386. X  {
  1387. X!     return is_whirly(ptr) || ptr->msize <= MZ_SMALL ||
  1388. X!         ptr == &mons[PM_GHOST];
  1389. X  }
  1390. X  
  1391. X  boolean
  1392. X--- 96,103 ----
  1393. X  sliparm(ptr)    /* creature will slide out of armor */
  1394. X      register struct permonst *ptr;
  1395. X  {
  1396. X!     return((boolean)(is_whirly(ptr) || ptr->msize <= MZ_SMALL ||
  1397. X!         ptr == &mons[PM_GHOST]));
  1398. X  }
  1399. X  
  1400. X  boolean
  1401. X***************
  1402. X*** 104,111 ****
  1403. X  breakarm(ptr)    /* creature will break out of armor */
  1404. X      register struct permonst *ptr;
  1405. X  {
  1406. X!     return((bigmonst(ptr) || (ptr->msize > MZ_SMALL && !humanoid(ptr))
  1407. X!                     || ptr == &mons[PM_MARILITH]) && !sliparm(ptr));
  1408. X      /* Marilith is about the only case of a monster which is otherwise
  1409. X       * humanoid but cannot wear armor (too many arms).  Centaurs would
  1410. X       * be another except that they are already accounted for by
  1411. X--- 104,111 ----
  1412. X  breakarm(ptr)    /* creature will break out of armor */
  1413. X      register struct permonst *ptr;
  1414. X  {
  1415. X!     return((boolean)((bigmonst(ptr) || (ptr->msize > MZ_SMALL && !humanoid(ptr))
  1416. X!                     || ptr == &mons[PM_MARILITH]) && !sliparm(ptr)));
  1417. X      /* Marilith is about the only case of a monster which is otherwise
  1418. X       * humanoid but cannot wear armor (too many arms).  Centaurs would
  1419. X       * be another except that they are already accounted for by
  1420. X***************
  1421. X*** 120,127 ****
  1422. X  sticks(ptr)    /* creature sticks other creatures it hits */
  1423. X      register struct permonst *ptr;
  1424. X  {
  1425. X!     return(dmgtype(ptr,AD_STCK) || dmgtype(ptr,AD_WRAP) ||
  1426. X!         attacktype(ptr,AT_HUGS));
  1427. X  }
  1428. X  
  1429. X  boolean
  1430. X--- 120,127 ----
  1431. X  sticks(ptr)    /* creature sticks other creatures it hits */
  1432. X      register struct permonst *ptr;
  1433. X  {
  1434. X!     return((boolean)(dmgtype(ptr,AD_STCK) || dmgtype(ptr,AD_WRAP) ||
  1435. X!         attacktype(ptr,AT_HUGS)));
  1436. X  }
  1437. X  
  1438. X  boolean
  1439. X***************
  1440. X*** 270,276 ****
  1441. X  webmaker(ptr)   /* creature can spin a web */
  1442. X      register struct permonst *ptr;
  1443. X  {
  1444. X!     return (ptr->mlet == S_SPIDER && ptr != &mons[PM_SCORPION]);
  1445. X  }
  1446. X  #endif
  1447. X  
  1448. X--- 270,276 ----
  1449. X  webmaker(ptr)   /* creature can spin a web */
  1450. X      register struct permonst *ptr;
  1451. X  {
  1452. X!     return((boolean)(ptr->mlet == S_SPIDER && ptr != &mons[PM_SCORPION]));
  1453. X  }
  1454. X  #endif
  1455. X  
  1456. X***************
  1457. X*** 302,309 ****
  1458. X  levl_follower(mtmp)
  1459. X  register struct monst *mtmp;
  1460. X  {
  1461. X!     return (mtmp->mtame || (mtmp->data->mflags2 & M2_STALK) || is_fshk(mtmp)
  1462. X!         || (mtmp->iswiz && !mon_has_amulet(mtmp)));
  1463. X  }
  1464. X  
  1465. X  struct permonst *
  1466. X--- 302,309 ----
  1467. X  levl_follower(mtmp)
  1468. X  register struct monst *mtmp;
  1469. X  {
  1470. X!     return((boolean)(mtmp->mtame || (mtmp->data->mflags2 & M2_STALK) || is_fshk(mtmp)
  1471. X!         || (mtmp->iswiz && !mon_has_amulet(mtmp))));
  1472. X  }
  1473. X  
  1474. X  struct permonst *
  1475. X*** /tmp/da21213    Mon Jul 12 17:33:31 1993
  1476. X--- src/monmove.c    Wed Jul  7 16:24:58 1993
  1477. X***************
  1478. X*** 186,196 ****
  1479. X              mtmp->data->mlet == S_HUMAN || mtmp->mpeaceful ||
  1480. X              mtmp->data == &mons[PM_MINOTAUR])
  1481. X          return(FALSE);
  1482. X!     return(
  1483. X  #ifdef ELBERETH
  1484. X             sengr_at("Elbereth", x, y) ||
  1485. X  #endif
  1486. X!             sobj_at(SCR_SCARE_MONSTER, x, y) != (struct obj *)0);
  1487. X  }
  1488. X  
  1489. X  #endif /* OVL2 */
  1490. X--- 186,196 ----
  1491. X              mtmp->data->mlet == S_HUMAN || mtmp->mpeaceful ||
  1492. X              mtmp->data == &mons[PM_MINOTAUR])
  1493. X          return(FALSE);
  1494. X!     return((boolean)(
  1495. X  #ifdef ELBERETH
  1496. X             sengr_at("Elbereth", x, y) ||
  1497. X  #endif
  1498. X!             sobj_at(SCR_SCARE_MONSTER, x, y) != (struct obj *)0));
  1499. X  }
  1500. X  
  1501. X  #endif /* OVL2 */
  1502. X***************
  1503. X*** 1069,1076 ****
  1504. X  closed_door(x, y)
  1505. X  register int x, y;
  1506. X  {
  1507. X!     return(IS_DOOR(levl[x][y].typ) &&
  1508. X!             (levl[x][y].doormask & (D_LOCKED | D_CLOSED)));
  1509. X  }
  1510. X  
  1511. X  boolean
  1512. X--- 1069,1076 ----
  1513. X  closed_door(x, y)
  1514. X  register int x, y;
  1515. X  {
  1516. X!     return((boolean)(IS_DOOR(levl[x][y].typ) &&
  1517. X!             (levl[x][y].doormask & (D_LOCKED | D_CLOSED))));
  1518. X  }
  1519. X  
  1520. X  boolean
  1521. X***************
  1522. X*** 1077,1083 ****
  1523. X  accessible(x, y)
  1524. X  register int x, y;
  1525. X  {
  1526. X!     return(ACCESSIBLE(levl[x][y].typ) && !closed_door(x, y));
  1527. X  }
  1528. X  
  1529. X  #endif /* OVL2 */
  1530. X--- 1077,1083 ----
  1531. X  accessible(x, y)
  1532. X  register int x, y;
  1533. X  {
  1534. X!     return((boolean)(ACCESSIBLE(levl[x][y].typ) && !closed_door(x, y)));
  1535. X  }
  1536. X  
  1537. X  #endif /* OVL2 */
  1538. X*** /tmp/da21229    Mon Jul 12 17:33:39 1993
  1539. X--- src/mplayer.c    Fri Jul  9 15:36:18 1993
  1540. X***************
  1541. X*** 24,30 ****
  1542. X      /* Amiga team */
  1543. X      "Greg", "Gregg", "Keni", "Mike", "Olaf", "Richard",
  1544. X      /* Mac team */
  1545. X!     "David", "Johnny", "Jon", "Jonathan", "Michael", "Rob",
  1546. X      "Tim", "Wang",
  1547. X      /* Atari team */
  1548. X      "Eric",
  1549. X--- 24,30 ----
  1550. X      /* Amiga team */
  1551. X      "Greg", "Gregg", "Keni", "Mike", "Olaf", "Richard",
  1552. X      /* Mac team */
  1553. X!     "Barton", "David", "Johnny", "Jon", "Jonathan", "Michael", "Rob",
  1554. X      "Tim", "Wang",
  1555. X      /* Atari team */
  1556. X      "Eric",
  1557. X*** /tmp/da21237    Mon Jul 12 17:33:41 1993
  1558. X--- src/mthrowu.c    Mon Jul 12 14:14:07 1993
  1559. X***************
  1560. X*** 148,159 ****
  1561. X  #ifdef MUSE
  1562. X          /* not possibly_unwield, which checks the object's */
  1563. X          /* location, not its existence */
  1564. X!         if (MON_WEP(mon) == obj)
  1565. X              MON_NOWEP(mon);
  1566. X  #endif
  1567. X          m_useup(mon, obj);
  1568. X          }
  1569. X      }
  1570. X  
  1571. X      if (singleobj->cursed && (dx || dy) && !rn2(7)) {
  1572. X          if(canseemon(mon) && flags.verbose) {
  1573. X--- 148,164 ----
  1574. X  #ifdef MUSE
  1575. X          /* not possibly_unwield, which checks the object's */
  1576. X          /* location, not its existence */
  1577. X!         if (MON_WEP(mon) == obj) {
  1578. X!             obj->owornmask &= ~W_WEP;
  1579. X              MON_NOWEP(mon);
  1580. X+         }
  1581. X  #endif
  1582. X          m_useup(mon, obj);
  1583. X          }
  1584. X      }
  1585. X+ #ifdef MUSE
  1586. X+     singleobj->owornmask = 0; /* threw one of multiple weapons in hand? */
  1587. X+ #endif
  1588. X  
  1589. X      if (singleobj->cursed && (dx || dy) && !rn2(7)) {
  1590. X          if(canseemon(mon) && flags.verbose) {
  1591. X***************
  1592. X*** 550,556 ****
  1593. X      if((!tbx || !tby || abs(tbx) == abs(tby)) /* straight line or diagonal */
  1594. X         && distmin(tbx, tby, 0, 0) < BOLT_LIM) {
  1595. X  
  1596. X!         if(ax == u.ux && ay == u.uy) return couldsee(bx,by);
  1597. X          else if(clear_path(ax,ay,bx,by)) return TRUE;
  1598. X      }
  1599. X      return FALSE;
  1600. X--- 555,561 ----
  1601. X      if((!tbx || !tby || abs(tbx) == abs(tby)) /* straight line or diagonal */
  1602. X         && distmin(tbx, tby, 0, 0) < BOLT_LIM) {
  1603. X  
  1604. X!         if(ax == u.ux && ay == u.uy) return((boolean)(couldsee(bx,by)));
  1605. X          else if(clear_path(ax,ay,bx,by)) return TRUE;
  1606. X      }
  1607. X      return FALSE;
  1608. X*** /tmp/da21245    Mon Jul 12 17:33:44 1993
  1609. X--- src/muse.c    Wed Jul  7 16:25:05 1993
  1610. X***************
  1611. X*** 379,385 ****
  1612. X              m.has_defense = MUSE_SCR_CREATE_MONSTER;
  1613. X          }
  1614. X      }
  1615. X! botm:    return !!m.has_defense;
  1616. X  #undef nomore
  1617. X  }
  1618. X  
  1619. X--- 379,385 ----
  1620. X              m.has_defense = MUSE_SCR_CREATE_MONSTER;
  1621. X          }
  1622. X      }
  1623. X! botm:    return((boolean)(!!m.has_defense));
  1624. X  #undef nomore
  1625. X  }
  1626. X  
  1627. X***************
  1628. X*** 452,458 ****
  1629. X              }
  1630. X              if (Is_botlevel(&u.uz)) goto mon_tele;
  1631. X              else {
  1632. X!                 int nlev = max(depth(&u.uz), 0);
  1633. X                  d_level flev;
  1634. X  
  1635. X                  if (rn2(5)) nlev = rnd(nlev + 3);
  1636. X--- 452,459 ----
  1637. X              }
  1638. X              if (Is_botlevel(&u.uz)) goto mon_tele;
  1639. X              else {
  1640. X!                 int dpth = depth(&u.uz);
  1641. X!                 int nlev = max(dpth, 0);
  1642. X                  d_level flev;
  1643. X  
  1644. X                  if (rn2(5)) nlev = rnd(nlev + 3);
  1645. X***************
  1646. X*** 784,790 ****
  1647. X          }
  1648. X  #endif
  1649. X      }
  1650. X!     return !!m.has_offense;
  1651. X  #undef nomore
  1652. X  }
  1653. X  
  1654. X--- 785,791 ----
  1655. X          }
  1656. X  #endif
  1657. X      }
  1658. X!     return((boolean)(!!m.has_offense));
  1659. X  #undef nomore
  1660. X  }
  1661. X  
  1662. X***************
  1663. X*** 1161,1167 ****
  1664. X              m.has_misc = MUSE_WAN_POLYMORPH;
  1665. X          }
  1666. X      }
  1667. X!     return !!m.has_misc;
  1668. X  #undef nomore
  1669. X  }
  1670. X  
  1671. X--- 1162,1168 ----
  1672. X              m.has_misc = MUSE_WAN_POLYMORPH;
  1673. X          }
  1674. X      }
  1675. X!     return((boolean)(!!m.has_misc));
  1676. X  #undef nomore
  1677. X  }
  1678. X  
  1679. X***************
  1680. X*** 1346,1352 ****
  1681. X      int typ = obj->otyp;
  1682. X  
  1683. X      if (is_animal(mon->data) || mindless(mon->data)) return FALSE;
  1684. X!     return((obj->oclass == WAND_CLASS && objects[typ].oc_dir == RAY)
  1685. X          || typ == WAN_STRIKING
  1686. X          || (!mon->minvis &&
  1687. X              (typ == WAN_MAKE_INVISIBLE || typ == POT_INVISIBILITY))
  1688. X--- 1347,1353 ----
  1689. X      int typ = obj->otyp;
  1690. X  
  1691. X      if (is_animal(mon->data) || mindless(mon->data)) return FALSE;
  1692. X!     return((boolean)((obj->oclass == WAND_CLASS && objects[typ].oc_dir == RAY)
  1693. X          || typ == WAN_STRIKING
  1694. X          || (!mon->minvis &&
  1695. X              (typ == WAN_MAKE_INVISIBLE || typ == POT_INVISIBILITY))
  1696. X***************
  1697. X*** 1369,1375 ****
  1698. X          || typ == AMULET_OF_LIFE_SAVING
  1699. X          || ((mon->misc_worn_check & W_ARMG) && typ == CORPSE
  1700. X              && obj->corpsenm == PM_COCKATRICE)
  1701. X!     );
  1702. X  }
  1703. X  
  1704. X  boolean
  1705. X--- 1370,1376 ----
  1706. X          || typ == AMULET_OF_LIFE_SAVING
  1707. X          || ((mon->misc_worn_check & W_ARMG) && typ == CORPSE
  1708. X              && obj->corpsenm == PM_COCKATRICE)
  1709. X!     ));
  1710. X  }
  1711. X  
  1712. X  boolean
  1713. X*** /tmp/da21253    Mon Jul 12 17:33:47 1993
  1714. X--- src/music.c    Wed Jul  7 16:25:07 1993
  1715. X***************
  1716. X*** 47,52 ****
  1717. X--- 47,56 ----
  1718. X  static void FDECL(speaker,(struct obj *,char *));
  1719. X  #endif
  1720. X  
  1721. X+ #ifdef AMIGA
  1722. X+ void FDECL( amii_speaker, ( struct obj *, char *, int ) );
  1723. X+ #endif
  1724. X+ 
  1725. X  /*
  1726. X   * Wake every monster in range...
  1727. X   */
  1728. X***************
  1729. X*** 433,439 ****
  1730. X  do_play_instrument(instr)
  1731. X  struct obj *instr;
  1732. X  {
  1733. X!     char buf[BUFSZ], *s, c = 'y';
  1734. X      int x,y;
  1735. X      boolean ok;
  1736. X  
  1737. X--- 437,446 ----
  1738. X  do_play_instrument(instr)
  1739. X  struct obj *instr;
  1740. X  {
  1741. X!     char buf[BUFSZ], c = 'y';
  1742. X! #ifndef    AMIGA
  1743. X!     char *s;
  1744. X! #endif
  1745. X      int x,y;
  1746. X      boolean ok;
  1747. X  
  1748. X*** /tmp/da21261    Mon Jul 12 17:33:49 1993
  1749. X--- src/o_init.c    Wed Jul  7 16:25:10 1993
  1750. X***************
  1751. X*** 309,316 ****
  1752. X  interesting_to_discover(i)
  1753. X  register int i;
  1754. X  {
  1755. X!     return objects[i].oc_uname != NULL ||
  1756. X!         (objects[i].oc_name_known && OBJ_DESCR(objects[i]) != NULL);
  1757. X  }
  1758. X  
  1759. X  int
  1760. X--- 309,316 ----
  1761. X  interesting_to_discover(i)
  1762. X  register int i;
  1763. X  {
  1764. X!     return((boolean)(objects[i].oc_uname != NULL ||
  1765. X!         (objects[i].oc_name_known && OBJ_DESCR(objects[i]) != NULL)));
  1766. X  }
  1767. X  
  1768. X  int
  1769. X*** /tmp/da21277    Mon Jul 12 17:33:54 1993
  1770. X--- src/objnam.c    Thu Jul  8 13:49:50 1993
  1771. X***************
  1772. X*** 142,149 ****
  1773. X  obj_is_pname(obj)
  1774. X  register struct obj *obj;
  1775. X  {
  1776. X!     return (obj->dknown && obj->known && obj->onamelth && obj->oartifact &&
  1777. X!         !objects[obj->otyp].oc_unique);
  1778. X  }
  1779. X  
  1780. X  /* Give the name of an object seen at a distance.  Unlike xname/doname,
  1781. X--- 142,149 ----
  1782. X  obj_is_pname(obj)
  1783. X  register struct obj *obj;
  1784. X  {
  1785. X!     return((boolean)(obj->dknown && obj->known && obj->onamelth && obj->oartifact &&
  1786. X!         !objects[obj->otyp].oc_unique));
  1787. X  }
  1788. X  
  1789. X  /* Give the name of an object seen at a distance.  Unlike xname/doname,
  1790. X***************
  1791. X*** 441,446 ****
  1792. X--- 441,447 ----
  1793. X          Strcpy(prefix, "a ");
  1794. X  
  1795. X      if (obj->bknown && 
  1796. X+         obj->oclass != GOLD_CLASS &&
  1797. X          (obj->otyp != POT_WATER || !objects[POT_WATER].oc_name_known
  1798. X          || (!obj->cursed && !obj->blessed))) {
  1799. X          /* allow 'blessed clear potion' if we don't know it's holy water;
  1800. X***************
  1801. X*** 993,1000 ****
  1802. X  
  1803. X      /* Japanese words: plurals are the same as singlar */
  1804. X      if ((len == 2 && !strcmp(str, "ya")) ||
  1805. X!         (len > 2 && !strcmp(spot-2, " ya")))
  1806. X!         goto bottom;
  1807. X  
  1808. X      /* Default: append an 's' */
  1809. X      Strcpy(spot+1, "s");
  1810. X--- 994,1007 ----
  1811. X  
  1812. X      /* Japanese words: plurals are the same as singlar */
  1813. X      if ((len == 2 && !strcmp(str, "ya")) ||
  1814. X!         (len > 2 && !strcmp(spot-2, " ya")) ||
  1815. X!         (len >= 5 && (!strcmp(spot-4, "ninja") ||
  1816. X!             !strcmp(spot-4, "ronin") ||
  1817. X!             !strcmp(spot-4, "shito") ||
  1818. X!             !strcmp(spot-4, "tengu"))) ||
  1819. X!         (len >= 7 && (!strcmp(spot-6, "samurai") ||
  1820. X!             !strcmp(spot-6, "gunyoki"))))
  1821. X!         goto bottom;
  1822. X  
  1823. X      /* Default: append an 's' */
  1824. X      Strcpy(spot+1, "s");
  1825. X*** /tmp/da21285    Mon Jul 12 17:33:58 1993
  1826. X--- src/options.c    Fri Jul  2 14:16:55 1993
  1827. X***************
  1828. X*** 1,4 ****
  1829. X! /*    SCCS Id: @(#)options.c    3.1    93/05/29    */
  1830. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1831. X  /* NetHack may be freely redistributed.  See license for details. */
  1832. X  
  1833. X--- 1,4 ----
  1834. X! /*    SCCS Id: @(#)options.c    3.1    93/06/27    */
  1835. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1836. X  /* NetHack may be freely redistributed.  See license for details. */
  1837. X  
  1838. X***************
  1839. X*** 159,164 ****
  1840. X--- 159,168 ----
  1841. X      { "pettype",  "your preferred initial pet type," },
  1842. X      { "pickup_types", "types of objects to pick up automatically," },
  1843. X      { "scores",   "the parts of the score list you wish to see," },
  1844. X+ #ifdef VIDEOSHADES
  1845. X+     { "videocolors", "color mappings for internal screen routines," },
  1846. X+     { "videoshades", "gray shades to map to black/gray/white," },
  1847. X+ #endif
  1848. X      { "windowtype", "windowing system to use." },
  1849. X      { NULL, NULL }
  1850. X  };
  1851. X***************
  1852. X*** 171,176 ****
  1853. X--- 175,185 ----
  1854. X  extern boolean colors_changed;    /* in tos.c */
  1855. X  #endif
  1856. X  
  1857. X+ #ifdef VIDEOSHADES
  1858. X+ extern char *shade[3];          /* in sys/msdos/video.c */
  1859. X+ extern char ttycolors[MAXCOLORS]; /* in sys/msdos/video.c */
  1860. X+ #endif
  1861. X+ 
  1862. X  extern const char *roles[];    /* from u_init.c */
  1863. X  
  1864. X  static char def_inv_order[MAXOCLASSES] = {
  1865. X***************
  1866. X*** 838,843 ****
  1867. X--- 847,875 ----
  1868. X          return;
  1869. X      }
  1870. X  
  1871. X+ #ifdef VIDEOSHADES
  1872. X+     /* videocolors:string */
  1873. X+     if (!strncmpi(opts, "videocolors", 6)) {
  1874. X+         int length;
  1875. X+ 
  1876. X+         if (!(opts = string_for_env_opt("videocolors", opts, FALSE))) {
  1877. X+             return;
  1878. X+         }
  1879. X+         badoption(opts);
  1880. X+         return;
  1881. X+     }
  1882. X+     /* videoshades:string */
  1883. X+     if (!strncmpi(opts, "videoshades", 6)) {
  1884. X+         int length;
  1885. X+ 
  1886. X+         if (!(opts = string_for_env_opt("videoshades", opts, FALSE))) {
  1887. X+             return;
  1888. X+         }
  1889. X+         badoption(opts);
  1890. X+         return;
  1891. X+     }
  1892. X+ #endif /* VIDEOSHADES */
  1893. X+ 
  1894. X      if (!strncmpi(opts, "windowtype", 3)) {
  1895. X          if ((op = string_for_env_opt("windowtype", opts, FALSE)) != 0) {
  1896. X          char buf[16];
  1897. X***************
  1898. X*** 1057,1066 ****
  1899. X          oc_to_str(flags.pickup_types, ocl);
  1900. X          Sprintf(buf, " pickup_types: %s", (ocl[0]) ? ocl : "all");
  1901. X          putstr(tmpwin, 0, buf);
  1902. X!         Sprintf(buf, " scores: %utop/%uaround%s",
  1903. X                  flags.end_top, flags.end_around,
  1904. X                  (flags.end_own ? "/own" : ""));
  1905. X          putstr(tmpwin, 0, buf);
  1906. X          Sprintf(buf, " windowtype: %s", windowprocs.name);
  1907. X          putstr(tmpwin, 0, buf);
  1908. X          display_nhwindow(tmpwin, TRUE);
  1909. X--- 1089,1110 ----
  1910. X          oc_to_str(flags.pickup_types, ocl);
  1911. X          Sprintf(buf, " pickup_types: %s", (ocl[0]) ? ocl : "all");
  1912. X          putstr(tmpwin, 0, buf);
  1913. X!         Sprintf(buf, " scores: %u top/%u around%s",
  1914. X                  flags.end_top, flags.end_around,
  1915. X                  (flags.end_own ? "/own" : ""));
  1916. X          putstr(tmpwin, 0, buf);
  1917. X+ #ifdef VIDEOSHADES
  1918. X+             Sprintf(buf, " videoshades: %s %s %s",
  1919. X+                 shade[0],shade[1],shade[2]);
  1920. X+             putstr(tmpwin, 0, buf);
  1921. X+             Sprintf(buf, " videocolors: %d %d %d %d %d %d %d %d %d %d %d %d",
  1922. X+          ttycolors[RED],ttycolors[GREEN],ttycolors[BROWN],
  1923. X+                  ttycolors[BLUE],ttycolors[MAGENTA],ttycolors[CYAN],
  1924. X+                  ttycolors[ORANGE_COLORED],ttycolors[BRIGHT_GREEN],
  1925. X+          ttycolors[YELLOW],ttycolors[BRIGHT_BLUE],
  1926. X+                  ttycolors[BRIGHT_MAGENTA],ttycolors[BRIGHT_CYAN]);
  1927. X+             putstr(tmpwin, 0, buf);
  1928. X+ #endif /* VIDEOSHADES */
  1929. X          Sprintf(buf, " windowtype: %s", windowprocs.name);
  1930. X          putstr(tmpwin, 0, buf);
  1931. X          display_nhwindow(tmpwin, TRUE);
  1932. X*** /tmp/da21317    Mon Jul 12 17:34:07 1993
  1933. X--- src/polyself.c    Mon Jul 12 13:14:29 1993
  1934. X***************
  1935. X*** 1,4 ****
  1936. X! /*    SCCS Id: @(#)polyself.c 3.1    93/05/15    */
  1937. X  /*    Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
  1938. X  /* NetHack may be freely redistributed.  See license for details. */
  1939. X  
  1940. X--- 1,4 ----
  1941. X! /*    SCCS Id: @(#)polyself.c 3.1    93/06/24    */
  1942. X  /*    Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
  1943. X  /* NetHack may be freely redistributed.  See license for details. */
  1944. X  
  1945. X***************
  1946. X*** 118,124 ****
  1947. X  #ifdef POLYSELF
  1948. X      polyman();
  1949. X  #endif
  1950. X!     You("feel like a new %sman!", flags.female ? "wo" : "");
  1951. X      flags.botl = 1;
  1952. X      (void) encumber_msg();
  1953. X  }
  1954. X--- 118,125 ----
  1955. X  #ifdef POLYSELF
  1956. X      polyman();
  1957. X  #endif
  1958. X!     You("feel like a new %s!",
  1959. X!         pl_character[0] == 'E' ? "elf" : flags.female ? "woman" : "man");
  1960. X      flags.botl = 1;
  1961. X      (void) encumber_msg();
  1962. X  }
  1963. X***************
  1964. X*** 345,351 ****
  1965. X          if (u.usym == S_UNICORN)
  1966. X          pline(use_thec,monsterc,"use your horn");
  1967. X          if (u.umonnum == PM_MIND_FLAYER)
  1968. X!         pline(use_thec,monsterc,"for a mental blast");
  1969. X          if (uasmon->msound == MS_SHRIEK) /* worthless, actually */
  1970. X          pline(use_thec,monsterc,"shriek");
  1971. X          if ((lays_eggs(uasmon) || u.umonnum==PM_QUEEN_BEE) && flags.female)
  1972. X--- 346,352 ----
  1973. X          if (u.usym == S_UNICORN)
  1974. X          pline(use_thec,monsterc,"use your horn");
  1975. X          if (u.umonnum == PM_MIND_FLAYER)
  1976. X!         pline(use_thec,monsterc,"emit a mental blast");
  1977. X          if (uasmon->msound == MS_SHRIEK) /* worthless, actually */
  1978. X          pline(use_thec,monsterc,"shriek");
  1979. X          if ((lays_eggs(uasmon) || u.umonnum==PM_QUEEN_BEE) && flags.female)
  1980. X***************
  1981. X*** 442,448 ****
  1982. X      }
  1983. X      if ((otmp = uarmh) != 0) {
  1984. X          if (donning(otmp)) cancel_don();
  1985. X!         Your("helmet falls to the floor!");
  1986. X          (void) Helmet_off();
  1987. X          dropx(otmp);
  1988. X      }
  1989. X--- 443,449 ----
  1990. X      }
  1991. X      if ((otmp = uarmh) != 0) {
  1992. X          if (donning(otmp)) cancel_don();
  1993. X!         Your("helmet falls to the %s!", surface(u.ux, u.uy));
  1994. X          (void) Helmet_off();
  1995. X          dropx(otmp);
  1996. X      }
  1997. X*** /tmp/da21325    Mon Jul 12 17:34:11 1993
  1998. X--- src/potion.c    Mon Jul 12 13:45:25 1993
  1999. X***************
  2000. X*** 1,4 ****
  2001. X! /*    SCCS Id: @(#)potion.c    3.1    93/05/15    */
  2002. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  2003. X  /* NetHack may be freely redistributed.  See license for details. */
  2004. X  
  2005. X--- 1,4 ----
  2006. X! /*    SCCS Id: @(#)potion.c    3.1    93/07/07    */
  2007. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  2008. X  /* NetHack may be freely redistributed.  See license for details. */
  2009. X  
  2010. X***************
  2011. X*** 55,61 ****
  2012. X      }
  2013. X      if (xtime && !old) {
  2014. X          if (talk)
  2015. X!             You("stagger....");
  2016. X          flags.botl = 1;
  2017. X      }
  2018. X      HStun = xtime;
  2019. X--- 55,61 ----
  2020. X      }
  2021. X      if (xtime && !old) {
  2022. X          if (talk)
  2023. X!             You("stagger...");
  2024. X          flags.botl = 1;
  2025. X      }
  2026. X      HStun = xtime;
  2027. X***************
  2028. X*** 458,468 ****
  2029. X          newsym(u.ux,u.uy); /* see yourself! */
  2030. X          break;
  2031. X      case POT_PARALYSIS:
  2032. X!         if(Levitation || Is_waterlevel(&u.uz))
  2033. X!             You("are motionlessly suspended.");
  2034. X          else
  2035. X!             Your("%s are frozen to the floor!",
  2036. X!                 makeplural(body_part(FOOT)));
  2037. X          nomul(-(rn1(10, 25 - 12*bcsign(otmp))));
  2038. X          exercise(A_DEX, FALSE);
  2039. X          break;
  2040. X--- 458,468 ----
  2041. X          newsym(u.ux,u.uy); /* see yourself! */
  2042. X          break;
  2043. X      case POT_PARALYSIS:
  2044. X!         if (Levitation || Is_airlevel(&u.uz) || Is_waterlevel(&u.uz))
  2045. X!             You("are motionlessly suspended.");
  2046. X          else
  2047. X!             Your("%s are frozen to the %s!",
  2048. X!              makeplural(body_part(FOOT)), surface(u.ux, u.uy));
  2049. X          nomul(-(rn1(10, 25 - 12*bcsign(otmp))));
  2050. X          exercise(A_DEX, FALSE);
  2051. X          break;
  2052. X***************
  2053. X*** 643,649 ****
  2054. X              } while (lmoves < 1 || lmoves > 300);
  2055. X              HLevitation += lmoves;
  2056. X          } else HLevitation += rnd(150);
  2057. X-         u.uprops[LEVITATION].p_tofn = float_down;
  2058. X          break;
  2059. X      case POT_GAIN_ENERGY:            /* M. Stephenson */
  2060. X          {    register int     num;
  2061. X--- 643,648 ----
  2062. END_OF_FILE
  2063. if test 54812 -ne `wc -c <'patches03b'`; then
  2064.     echo shar: \"'patches03b'\" unpacked with wrong size!
  2065. fi
  2066. # end of 'patches03b'
  2067. if test -f 'sys/share/lev_comp.h' -a "${1}" != "-c" ; then 
  2068.   echo shar: Renaming existing file \"'sys/share/lev_comp.h'\" to \"'sys/share/lev_comp.h.orig'\"
  2069.   mv -f 'sys/share/lev_comp.h' 'sys/share/lev_comp.h.orig'
  2070. fi
  2071. echo shar: Extracting \"'sys/share/lev_comp.h'\" \(1610 characters\)
  2072. sed "s/^X//" >'sys/share/lev_comp.h' <<'END_OF_FILE'
  2073. X#define CHAR 257
  2074. X#define INTEGER 258
  2075. X#define BOOLEAN 259
  2076. X#define MESSAGE_ID 260
  2077. X#define MAZE_ID 261
  2078. X#define LEVEL_ID 262
  2079. X#define LEV_INIT_ID 263
  2080. X#define GEOMETRY_ID 264
  2081. X#define NOMAP_ID 265
  2082. X#define OBJECT_ID 266
  2083. X#define MONSTER_ID 267
  2084. X#define TRAP_ID 268
  2085. X#define DOOR_ID 269
  2086. X#define DRAWBRIDGE_ID 270
  2087. X#define MAZEWALK_ID 271
  2088. X#define WALLIFY_ID 272
  2089. X#define REGION_ID 273
  2090. X#define FILLING 274
  2091. X#define RANDOM_OBJECTS_ID 275
  2092. X#define RANDOM_MONSTERS_ID 276
  2093. X#define RANDOM_PLACES_ID 277
  2094. X#define ALTAR_ID 278
  2095. X#define LADDER_ID 279
  2096. X#define STAIR_ID 280
  2097. X#define NON_DIGGABLE_ID 281
  2098. X#define NON_PASSWALL_ID 282
  2099. X#define ROOM_ID 283
  2100. X#define PORTAL_ID 284
  2101. X#define TELEPRT_ID 285
  2102. X#define BRANCH_ID 286
  2103. X#define LEV 287
  2104. X#define CHANCE_ID 288
  2105. X#define CORRIDOR_ID 289
  2106. X#define GOLD_ID 290
  2107. X#define ENGRAVING_ID 291
  2108. X#define FOUNTAIN_ID 292
  2109. X#define POOL_ID 293
  2110. X#define SINK_ID 294
  2111. X#define NONE 295
  2112. X#define RAND_CORRIDOR_ID 296
  2113. X#define DOOR_STATE 297
  2114. X#define LIGHT_STATE 298
  2115. X#define CURSE_TYPE 299
  2116. X#define ENGRAVING_TYPE 300
  2117. X#define DIRECTION 301
  2118. X#define RANDOM_TYPE 302
  2119. X#define O_REGISTER 303
  2120. X#define M_REGISTER 304
  2121. X#define P_REGISTER 305
  2122. X#define A_REGISTER 306
  2123. X#define ALIGNMENT 307
  2124. X#define LEFT_OR_RIGHT 308
  2125. X#define CENTER 309
  2126. X#define TOP_OR_BOT 310
  2127. X#define ALTAR_TYPE 311
  2128. X#define UP_OR_DOWN 312
  2129. X#define SUBROOM_ID 313
  2130. X#define NAME_ID 314
  2131. X#define FLAGS_ID 315
  2132. X#define FLAG_TYPE 316
  2133. X#define MON_ATTITUDE 317
  2134. X#define MON_ALERTNESS 318
  2135. X#define MON_APPEARANCE 319
  2136. X#define STRING 320
  2137. X#define MAP_ID 321
  2138. Xtypedef union
  2139. X{
  2140. X    int    i;
  2141. X    char*    map;
  2142. X    struct {
  2143. X        xchar room;
  2144. X        xchar wall;
  2145. X        xchar door;
  2146. X    } corpos;
  2147. X} YYSTYPE;
  2148. Xextern YYSTYPE yylval;
  2149. END_OF_FILE
  2150. if test 1610 -ne `wc -c <'sys/share/lev_comp.h'`; then
  2151.     echo shar: \"'sys/share/lev_comp.h'\" unpacked with wrong size!
  2152. fi
  2153. # end of 'sys/share/lev_comp.h'
  2154. echo shar: End of archive 3 \(of 18\).
  2155. cp /dev/null ark3isdone
  2156. MISSING=""
  2157. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  2158.     if test ! -f ark${I}isdone ; then
  2159.     MISSING="${MISSING} ${I}"
  2160.     fi
  2161. done
  2162. if test "${MISSING}" = "" ; then
  2163.     echo You have unpacked all 18 archives.
  2164.     echo "Now execute ./patchit3.sh"
  2165.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2166. else
  2167.     echo You still need to unpack the following archives:
  2168.     echo "        " ${MISSING}
  2169. fi
  2170. ##  End of shell archive.
  2171. exit 0
  2172.