home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / patch3e < prev    next >
Encoding:
Internet Message Format  |  1993-07-23  |  60.2 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: v18i038:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch3e/18
  5. Date: 20 Jul 1993 22:32:34 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 2185
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <22hrq2$9ps@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1838
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 18, Issue 38
  15. Archive-name: nethack31/patch3e
  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 5 (of 18)."
  28. # Contents:  patches03a sys/amiga/amifont8.uu
  29. # Wrapped by billr@saab on Tue Jul 20 14:57:19 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'patches03a' -a "${1}" != "-c" ; then 
  32.   echo shar: Renaming existing file \"'patches03a'\" to \"'patches03a.orig'\"
  33.   mv -f 'patches03a' 'patches03a.orig'
  34. fi
  35. echo shar: Extracting \"'patches03a'\" \(53393 characters\)
  36. sed "s/^X//" >'patches03a' <<'END_OF_FILE'
  37. X*** /tmp/da20824    Mon Jul 12 17:31:22 1993
  38. X--- src/allmain.c    Thu Jul  1 14:42:14 1993
  39. X***************
  40. X*** 1,4 ****
  41. X! /*    SCCS Id: @(#)allmain.c    3.1    93/05/23    */
  42. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  43. X  /* NetHack may be freely redistributed.  See license for details. */
  44. X  
  45. X--- 1,4 ----
  46. X! /*    SCCS Id: @(#)allmain.c    3.1    93/06/16    */
  47. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  48. X  /* NetHack may be freely redistributed.  See license for details. */
  49. X  
  50. X***************
  51. X*** 163,169 ****
  52. X              }
  53. X  
  54. X              if(!u.uinvulnerable) {
  55. X!             if(Teleportation && !rn2(85)) tele();
  56. X  #ifdef POLYSELF
  57. X              if(Polymorph && !rn2(100)) {
  58. X                  if (multi >= 0) {
  59. X--- 163,175 ----
  60. X              }
  61. X  
  62. X              if(!u.uinvulnerable) {
  63. X!             if(Teleportation && !rn2(85)) {
  64. X! #ifdef REDO            /* clear doagain keystrokes */
  65. X!                 pushch(0);
  66. X!                 savech(0);
  67. X! #endif
  68. X!                 tele();
  69. X!             }
  70. X  #ifdef POLYSELF
  71. X              if(Polymorph && !rn2(100)) {
  72. X                  if (multi >= 0) {
  73. X*** /tmp/da20840    Mon Jul 12 17:31:27 1993
  74. X--- src/apply.c    Wed Jul  7 16:23:53 1993
  75. X***************
  76. X*** 1,4 ****
  77. X! /*    SCCS Id: @(#)apply.c    3.1    93/05/25    */
  78. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  79. X  /* NetHack may be freely redistributed.  See license for details. */
  80. X  
  81. X--- 1,4 ----
  82. X! /*    SCCS Id: @(#)apply.c    3.1    93/06/24    */
  83. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  84. X  /* NetHack may be freely redistributed.  See license for details. */
  85. X  
  86. X***************
  87. X*** 40,45 ****
  88. X--- 40,49 ----
  89. X  static void FDECL(mkcavearea, (BOOLEAN_P));
  90. X  static void FDECL(digactualhole, (int));
  91. X  
  92. X+ #ifdef    AMIGA
  93. X+ void FDECL( amii_speaker, ( struct obj *, char *, int ) );
  94. X+ #endif
  95. X+ 
  96. X  #ifdef TOURIST
  97. X  static int
  98. X  use_camera(obj)
  99. X***************
  100. X*** 270,276 ****
  101. X  um_dist(x,y,n)
  102. X  register xchar x, y, n;
  103. X  {
  104. X!     return(abs(u.ux - x) > n  || abs(u.uy - y) > n);
  105. X  }
  106. X  
  107. X  #endif /* OVLB */
  108. X--- 274,280 ----
  109. X  um_dist(x,y,n)
  110. X  register xchar x, y, n;
  111. X  {
  112. X!     return((boolean)(abs(u.ux - x) > n  || abs(u.uy - y) > n));
  113. X  }
  114. X  
  115. X  #endif /* OVLB */
  116. X***************
  117. X*** 674,680 ****
  118. X          register struct trap *ttmp;
  119. X  
  120. X          if(dig_effort > 250) {
  121. X!             dighole();
  122. X              dig_level.dnum = 0;
  123. X              dig_level.dlevel = -1;
  124. X              return(0);    /* done with digging */
  125. X--- 678,684 ----
  126. X          register struct trap *ttmp;
  127. X  
  128. X          if(dig_effort > 250) {
  129. X!             (void) dighole(FALSE);
  130. X              dig_level.dnum = 0;
  131. X              dig_level.dlevel = -1;
  132. X              return(0);    /* done with digging */
  133. X***************
  134. X*** 693,701 ****
  135. X              angry_priest();
  136. X          }
  137. X  
  138. X!         digactualhole(PIT);    /* at u.ux, u.uy */
  139. X!         dig_level.dnum = 0;
  140. X!         dig_level.dlevel = -1;
  141. X          return(0);
  142. X      }
  143. X      if(dig_effort > 100) {
  144. X--- 697,706 ----
  145. X              angry_priest();
  146. X          }
  147. X  
  148. X!         if (dighole(TRUE)) {    /* make pit at <u.ux,u.uy> */
  149. X!             dig_level.dnum = 0;
  150. X!             dig_level.dlevel = -1;
  151. X!         }
  152. X          return(0);
  153. X      }
  154. X      if(dig_effort > 100) {
  155. X***************
  156. X*** 824,836 ****
  157. X      register int x1, y1;
  158. X      int lo_x = max(1,x-1), hi_x = min(x+1,COLNO-1),
  159. X      lo_y = max(0,y-1), hi_y = min(y+1,ROWNO-1);
  160. X  
  161. X      for (x1 = lo_x; x1 <= hi_x; x1++)
  162. X      for (y1 = lo_y; y1 <= hi_y; y1++)
  163. X!         if(levl[x1][y1].typ == MOAT || levl[x1][y1].typ == LAVAPOOL)
  164. X!         return levl[x1][y1].typ;
  165. X  
  166. X!     return ROOM;
  167. X  }
  168. X  
  169. X  static void
  170. X--- 829,858 ----
  171. X      register int x1, y1;
  172. X      int lo_x = max(1,x-1), hi_x = min(x+1,COLNO-1),
  173. X      lo_y = max(0,y-1), hi_y = min(y+1,ROWNO-1);
  174. X+     int pool_cnt = 0, moat_cnt = 0, lava_cnt = 0;
  175. X  
  176. X      for (x1 = lo_x; x1 <= hi_x; x1++)
  177. X      for (y1 = lo_y; y1 <= hi_y; y1++)
  178. X!         if (levl[x1][y1].typ == POOL)
  179. X!         pool_cnt++;
  180. X!         else if (levl[x1][y1].typ == MOAT ||
  181. X!             (levl[x1][y1].typ == DRAWBRIDGE_UP &&
  182. X!             (levl[x1][y1].drawbridgemask & DB_UNDER) == DB_MOAT))
  183. X!         moat_cnt++;
  184. X!         else if (levl[x1][y1].typ == LAVAPOOL ||
  185. X!             (levl[x1][y1].typ == DRAWBRIDGE_UP &&
  186. X!             (levl[x1][y1].drawbridgemask & DB_UNDER) == DB_LAVA))
  187. X!         lava_cnt++;
  188. X!     pool_cnt /= 3;        /* not as much liquid as the others */
  189. X  
  190. X!     if (lava_cnt > moat_cnt + pool_cnt && rn2(lava_cnt + 1))
  191. X!     return LAVAPOOL;
  192. X!     else if (moat_cnt > 0 && rn2(moat_cnt + 1))
  193. X!     return MOAT;
  194. X!     else if (pool_cnt > 0 && rn2(pool_cnt + 1))
  195. X!     return POOL;
  196. X!     else
  197. X!     return ROOM;
  198. X  }
  199. X  
  200. X  static void
  201. X***************
  202. X*** 861,867 ****
  203. X          if (oldobjs != newobjs)    /* something unearthed */
  204. X              pickup(1);    /* detects pit */
  205. X          else
  206. X!             You("dig a pit.");
  207. X  
  208. X      } else {    /* TRAPDOOR */
  209. X          pline("You dig a hole through the %s.", surface(u.ux,u.uy));
  210. X--- 883,889 ----
  211. X          if (oldobjs != newobjs)    /* something unearthed */
  212. X              pickup(1);    /* detects pit */
  213. X          else
  214. X!             You("dig a pit in the %s.", surface(u.ux, u.uy));
  215. X  
  216. X      } else {    /* TRAPDOOR */
  217. X          pline("You dig a hole through the %s.", surface(u.ux,u.uy));
  218. X***************
  219. X*** 909,916 ****
  220. X      }
  221. X  }
  222. X  
  223. X! void
  224. X! dighole()
  225. X  {
  226. X      register struct trap *ttmp = t_at(u.ux, u.uy);
  227. X      struct rm *lev = &levl[u.ux][u.uy];
  228. X--- 931,940 ----
  229. X      }
  230. X  }
  231. X  
  232. X! /* return TRUE if digging succeeded, FALSE otherwise */
  233. X! boolean
  234. X! dighole(pit_only)
  235. X! boolean pit_only;
  236. X  {
  237. X      register struct trap *ttmp = t_at(u.ux, u.uy);
  238. X      struct rm *lev = &levl[u.ux][u.uy];
  239. X***************
  240. X*** 927,933 ****
  241. X          wake_nearby();    /* splashing */
  242. X  
  243. X      } else if (lev->typ == DRAWBRIDGE_DOWN) {
  244. X!         destroy_drawbridge(u.ux,u.uy);
  245. X  
  246. X      } else if ((boulder_here = sobj_at(BOULDER, u.ux, u.uy)) != 0) {
  247. X          if (ttmp && (ttmp->ttyp == PIT || ttmp->ttyp == SPIKED_PIT)) {
  248. X--- 951,963 ----
  249. X          wake_nearby();    /* splashing */
  250. X  
  251. X      } else if (lev->typ == DRAWBRIDGE_DOWN) {
  252. X!         if (pit_only) {
  253. X!             pline("The drawbridge seems too hard to dig through.");
  254. X!             return FALSE;
  255. X!         } else {
  256. X!             destroy_drawbridge(u.ux, u.uy);
  257. X!             return TRUE;
  258. X!         }
  259. X  
  260. X      } else if ((boulder_here = sobj_at(BOULDER, u.ux, u.uy)) != 0) {
  261. X          if (ttmp && (ttmp->ttyp == PIT || ttmp->ttyp == SPIKED_PIT)) {
  262. X***************
  263. X*** 958,963 ****
  264. X--- 988,994 ----
  265. X              }
  266. X          }
  267. X          delobj(boulder_here);
  268. X+         return TRUE;
  269. X  
  270. X      } else if (lev->typ == DRAWBRIDGE_UP) {
  271. X          /* must be floor or ice, other cases handled above */
  272. X***************
  273. X*** 965,985 ****
  274. X          typ = fillholetyp(u.ux,u.uy);
  275. X  
  276. X          if (typ == ROOM) {
  277. X-             if (lev->drawbridgemask & DB_ICE)
  278. X-             typ = MOAT;
  279. X-             else {
  280. X              /*
  281. X!              * We can't dig a pit here since that will destroy
  282. X               * the drawbridge.  The following is a cop-out. --dlc
  283. X               */
  284. X!             pline("The floor here is too hard to dig in.");
  285. X!             return;
  286. X!             }
  287. X          }
  288. X  
  289. X!         lev->drawbridgemask &= DB_DIR;
  290. X!         if (typ == LAVAPOOL) lev->drawbridgemask |= DB_LAVA;
  291. X!         liquid_flow:
  292. X          newsym(u.ux,u.uy);
  293. X  
  294. X          pline("As you dig a pit, it fills with %s!",
  295. X--- 996,1014 ----
  296. X          typ = fillholetyp(u.ux,u.uy);
  297. X  
  298. X          if (typ == ROOM) {
  299. X              /*
  300. X!              * We can't dig a hole here since that will destroy
  301. X               * the drawbridge.  The following is a cop-out. --dlc
  302. X               */
  303. X!             pline("The %s here is too hard to dig in.",
  304. X!                   surface(u.ux, u.uy));
  305. X!             return FALSE;
  306. X          }
  307. X  
  308. X!         lev->drawbridgemask &= ~DB_UNDER;
  309. X!         lev->drawbridgemask |= (typ == LAVAPOOL) ? DB_LAVA : DB_MOAT;
  310. X! 
  311. X!  liquid_flow:
  312. X          newsym(u.ux,u.uy);
  313. X  
  314. X          pline("As you dig a pit, it fills with %s!",
  315. X***************
  316. X*** 994,1006 ****
  317. X--- 1023,1038 ----
  318. X              else if (!Wwalking)
  319. X              (void) drown();
  320. X          }
  321. X+         return TRUE;
  322. X  
  323. X      } else if (IS_FOUNTAIN(lev->typ)) {
  324. X          dogushforth(FALSE);
  325. X          dryup(u.ux,u.uy);
  326. X+         return TRUE;
  327. X  #ifdef SINKS
  328. X      } else if (IS_SINK(lev->typ)) {
  329. X          breaksink(u.ux, u.uy);
  330. X+         return TRUE;
  331. X  #endif
  332. X      /* the following two are here for the wand of digging */
  333. X      } else if (IS_THRONE(lev->typ)) {
  334. X***************
  335. X*** 1010,1030 ****
  336. X          pline("The altar is too hard to break apart.");
  337. X  
  338. X      } else {
  339. X!         if (lev->typ == ICE) {
  340. X!             typ = fillholetyp(u.ux,u.uy);
  341. X  
  342. X!             if (typ != ROOM) {
  343. X!                 lev->typ = typ;
  344. X!                 goto liquid_flow;
  345. X!             }
  346. X          }
  347. X  
  348. X          /* finally we get to make a hole */
  349. X!         if (nohole) {    /* can't make a trapdoor, so make a pit */
  350. X              digactualhole(PIT);
  351. X!         } else
  352. X              digactualhole(TRAPDOOR);
  353. X      }
  354. X  }
  355. X  
  356. X  static boolean
  357. X--- 1042,1064 ----
  358. X          pline("The altar is too hard to break apart.");
  359. X  
  360. X      } else {
  361. X!         typ = fillholetyp(u.ux,u.uy);
  362. X  
  363. X!         if (typ != ROOM) {
  364. X!             lev->typ = typ;
  365. X!             goto liquid_flow;
  366. X          }
  367. X  
  368. X          /* finally we get to make a hole */
  369. X!         if (nohole || pit_only)
  370. X              digactualhole(PIT);
  371. X!         else
  372. X              digactualhole(TRAPDOOR);
  373. X+ 
  374. X+         return TRUE;
  375. X      }
  376. X+ 
  377. X+     return FALSE;
  378. X  }
  379. X  
  380. X  static boolean
  381. X***************
  382. X*** 1168,1178 ****
  383. X              dig_pos.y = u.uy;
  384. X              assign_level(&dig_level, &u.uz);
  385. X              dig_effort = 0;
  386. X!             You("start digging in the %s.", surface(u.ux,u.uy));
  387. X              if(*u.ushops)
  388. X                  shopdig(0);
  389. X          } else
  390. X!             You("continue digging in the %s.", surface(u.ux,u.uy));
  391. X          did_dig_msg = FALSE;
  392. X          set_occupation(dig, "digging", 0);
  393. X      }
  394. X--- 1202,1212 ----
  395. X              dig_pos.y = u.uy;
  396. X              assign_level(&dig_level, &u.uz);
  397. X              dig_effort = 0;
  398. X!             You("start digging downward.");
  399. X              if(*u.ushops)
  400. X                  shopdig(0);
  401. X          } else
  402. X!             You("continue digging downward.");
  403. X          did_dig_msg = FALSE;
  404. X          set_occupation(dig, "digging", 0);
  405. X      }
  406. X***************
  407. X*** 1327,1333 ****
  408. X  
  409. X      if(Underwater) {
  410. X  #ifdef    AMIGA
  411. X!         amii_speaker( obj, "AwDwGwEwDhEhAqDqFwGw", AMII_MUFFLED_VOLUME );
  412. X  #endif
  413. X          pline("But the sound is muffled.");
  414. X          return;
  415. X--- 1361,1367 ----
  416. X  
  417. X      if(Underwater) {
  418. X  #ifdef    AMIGA
  419. X!         amii_speaker( obj, "AhDhGqEqDhEhAqDqFhGw", AMII_MUFFLED_VOLUME );
  420. X  #endif
  421. X          pline("But the sound is muffled.");
  422. X          return;
  423. X***************
  424. X*** 1338,1344 ****
  425. X          return;
  426. X          }
  427. X  #ifdef    AMIGA
  428. X!         amii_speaker( obj, "awdwgwewdhehaqdqfwgw", AMII_MUFFLED_VOLUME );
  429. X  #endif
  430. X          if(obj->cursed && !rn2(3)) {
  431. X          register struct monst *mtmp;
  432. X--- 1372,1378 ----
  433. X          return;
  434. X          }
  435. X  #ifdef    AMIGA
  436. X!         amii_speaker( obj, "ahdhgqeqdhehaqdqfhgw", AMII_MUFFLED_VOLUME );
  437. X  #endif
  438. X          if(obj->cursed && !rn2(3)) {
  439. X          register struct monst *mtmp;
  440. X***************
  441. X*** 1382,1388 ****
  442. X          register int cnt = openit();
  443. X          if(cnt == -1) return; /* was swallowed */
  444. X  #ifdef    AMIGA
  445. X!         amii_speaker( obj, "awawawDwEwCw", AMII_SOFT_VOLUME );
  446. X  #endif
  447. X          switch(cnt) {
  448. X            case 0:  pline(nothing_happens); break;
  449. X--- 1416,1422 ----
  450. X          register int cnt = openit();
  451. X          if(cnt == -1) return; /* was swallowed */
  452. X  #ifdef    AMIGA
  453. X!         amii_speaker( obj, "ahahahDhEhCw", AMII_SOFT_VOLUME );
  454. X  #endif
  455. X          switch(cnt) {
  456. X            case 0:  pline(nothing_happens); break;
  457. X***************
  458. X*** 1394,1400 ****
  459. X          } else pline(nothing_happens);
  460. X      } else {  /* uncursed */
  461. X  #ifdef    AMIGA
  462. X!         amii_speaker( obj, "AeFeaeFeAefegW", AMII_OKAY_VOLUME );
  463. X  #endif
  464. X          if(obj->spe > 0) {
  465. X          register int cnt = findit();
  466. X--- 1428,1434 ----
  467. X          } else pline(nothing_happens);
  468. X      } else {  /* uncursed */
  469. X  #ifdef    AMIGA
  470. X!         amii_speaker( obj, "AeFeaeFeAefegw", AMII_OKAY_VOLUME );
  471. X  #endif
  472. X          if(obj->spe > 0) {
  473. X          register int cnt = findit();
  474. X***************
  475. X*** 1770,1775 ****
  476. X--- 1804,1818 ----
  477. X      }
  478. X  }
  479. X  
  480. X+ boolean
  481. X+ tinnable(corpse)
  482. X+ struct obj *corpse;
  483. X+ {
  484. X+     if (corpse->oeaten) return 0;
  485. X+     if (!mons[corpse->corpsenm].cnutrit) return 0;
  486. X+     return 1;
  487. X+ }
  488. X+ 
  489. X  static void
  490. X  use_tinning_kit(obj)
  491. X  register struct obj *obj;
  492. X***************
  493. X*** 1779,1785 ****
  494. X      /* This takes only 1 move.  If this is to be changed to take many
  495. X       * moves, we've got to deal with decaying corpses...
  496. X       */
  497. X!     if (!(corpse = floorfood("tin", 1))) return;
  498. X      if (corpse->oeaten) {
  499. X          You("cannot tin something which is partly eaten.");
  500. X          return;
  501. X--- 1822,1828 ----
  502. X      /* This takes only 1 move.  If this is to be changed to take many
  503. X       * moves, we've got to deal with decaying corpses...
  504. X       */
  505. X!     if (!(corpse = floorfood("tin", 2))) return;
  506. X      if (corpse->oeaten) {
  507. X          You("cannot tin something which is partly eaten.");
  508. X          return;
  509. X*** /tmp/da20850    Mon Jul 12 17:31:33 1993
  510. X--- src/artifact.c    Wed Jul  7 16:23:58 1993
  511. X***************
  512. X*** 235,241 ****
  513. X  {
  514. X      const struct artifact *arti = get_artifact(otmp);
  515. X  
  516. X!     return(arti && (arti->spfx & abil));
  517. X  }
  518. X  
  519. X  #endif /* OVL0 */
  520. X--- 235,241 ----
  521. X  {
  522. X      const struct artifact *arti = get_artifact(otmp);
  523. X  
  524. X!     return((boolean)(arti && (arti->spfx & abil)));
  525. X  }
  526. X  
  527. X  #endif /* OVL0 */
  528. X***************
  529. X*** 256,263 ****
  530. X           */
  531. X      for (a = artilist+1; a->otyp; a++)
  532. X          if (a->otyp == otmp->otyp && !strcmp(a->name, name))
  533. X!         return ((a->spfx & (SPFX_NOGEN|SPFX_RESTR)) != 0 ||
  534. X!             otmp->quan > 1L);
  535. X  
  536. X      return FALSE;
  537. X  }
  538. X--- 256,263 ----
  539. X           */
  540. X      for (a = artilist+1; a->otyp; a++)
  541. X          if (a->otyp == otmp->otyp && !strcmp(a->name, name))
  542. X!         return ((boolean)((a->spfx & (SPFX_NOGEN|SPFX_RESTR)) != 0 ||
  543. X!             otmp->quan > 1L));
  544. X  
  545. X      return FALSE;
  546. X  }
  547. X***************
  548. X*** 270,276 ****
  549. X      register const struct artifact *weap;
  550. X  
  551. X      if ((weap = get_artifact(otmp)) != 0)
  552. X!         return(weap->attk.adtyp == adtyp);
  553. X      return(0);
  554. X  }
  555. X  
  556. X--- 270,276 ----
  557. X      register const struct artifact *weap;
  558. X  
  559. X      if ((weap = get_artifact(otmp)) != 0)
  560. X!         return((boolean)(weap->attk.adtyp == adtyp));
  561. X      return(0);
  562. X  }
  563. X  
  564. X***************
  565. X*** 282,288 ****
  566. X      register const struct artifact *weap;
  567. X  
  568. X      if ((weap = get_artifact(otmp)) != 0)
  569. X!         return(weap->defn.adtyp == adtyp);
  570. X      return(0);
  571. X  }
  572. X  
  573. X--- 282,288 ----
  574. X      register const struct artifact *weap;
  575. X  
  576. X      if ((weap = get_artifact(otmp)) != 0)
  577. X!         return((boolean)(weap->defn.adtyp == adtyp));
  578. X      return(0);
  579. X  }
  580. X  
  581. X***************
  582. X*** 844,856 ****
  583. X                      pline("Somehow, %s misses wildly.",
  584. X                          mon_nam(magr));
  585. X                  *dmgptr = 0;
  586. X!                 return (youattack || vis);
  587. X              }
  588. X              if (noncorporeal(mdef->data) || amorphous(mdef->data)) {
  589. X                  pline("%s slices through %s neck.",
  590. X                        artilist[ART_VORPAL_BLADE].name,
  591. X                        s_suffix(mon_nam(mdef)));
  592. X!                 return (youattack || vis);
  593. X              }
  594. X              *dmgptr = mdef->mhp;
  595. X              pline(behead_msg[rn2(SIZE(behead_msg))],
  596. X--- 844,856 ----
  597. X                      pline("Somehow, %s misses wildly.",
  598. X                          mon_nam(magr));
  599. X                  *dmgptr = 0;
  600. X!                 return ((boolean)(youattack || vis));
  601. X              }
  602. X              if (noncorporeal(mdef->data) || amorphous(mdef->data)) {
  603. X                  pline("%s slices through %s neck.",
  604. X                        artilist[ART_VORPAL_BLADE].name,
  605. X                        s_suffix(mon_nam(mdef)));
  606. X!                 return ((boolean)(youattack || vis));
  607. X              }
  608. X              *dmgptr = mdef->mhp;
  609. X              pline(behead_msg[rn2(SIZE(behead_msg))],
  610. X*** /tmp/da20858    Mon Jul 12 17:31:35 1993
  611. X--- src/attrib.c    Wed Jul  7 16:24:00 1993
  612. X***************
  613. X*** 687,693 ****
  614. X  #ifdef WIN32_BUG
  615. X          else return(x=((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
  616. X  #else
  617. X!         else return((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp);
  618. X  #endif
  619. X      } 
  620. X  #ifdef POLYSELF
  621. X--- 687,693 ----
  622. X  #ifdef WIN32_BUG
  623. X          else return(x=((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
  624. X  #else
  625. X!         else return((schar)((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
  626. X  #endif
  627. X      } 
  628. X  #ifdef POLYSELF
  629. X***************
  630. X*** 700,706 ****
  631. X  #ifdef WIN32_BUG
  632. X      return(x=((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
  633. X  #else
  634. X!     return((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp);
  635. X  #endif
  636. X  }
  637. X  
  638. X--- 700,706 ----
  639. X  #ifdef WIN32_BUG
  640. X      return(x=((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
  641. X  #else
  642. X!     return((schar)((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
  643. X  #endif
  644. X  }
  645. X  
  646. X***************
  647. X*** 711,719 ****
  648. X  {
  649. X      register int str = ACURR(A_STR);
  650. X  
  651. X!     if (str <= 18) return str;
  652. X!     if (str <= 121) return (19 + str / 50); /* map to 19-21 */
  653. X!     else return str - 100;
  654. X  }
  655. X  
  656. X  #endif /* OVL0 */
  657. X--- 711,719 ----
  658. X  {
  659. X      register int str = ACURR(A_STR);
  660. X  
  661. X!     if (str <= 18) return((schar)str);
  662. X!     if (str <= 121) return((schar)(19 + str / 50)); /* map to 19-21 */
  663. X!     else return((schar)(str - 100));
  664. X  }
  665. X  
  666. X  #endif /* OVL0 */
  667. X*** /tmp/da20875    Mon Jul 12 17:31:40 1993
  668. X--- src/bones.c    Wed Jul  7 16:59:00 1993
  669. X***************
  670. X*** 1,4 ****
  671. X! /*    SCCS Id: @(#)bones.c    3.1    93/05/22    */
  672. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
  673. X  /* NetHack may be freely redistributed.  See license for details. */
  674. X  
  675. X--- 1,4 ----
  676. X! /*    SCCS Id: @(#)bones.c    3.1    93/06/05    */
  677. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
  678. X  /* NetHack may be freely redistributed.  See license for details. */
  679. X  
  680. X***************
  681. X*** 26,32 ****
  682. X  
  683. X      if (ledger_no(&save_dlevel)) assign_level(lev, &save_dlevel);
  684. X  
  685. X!     return (((sptr = Is_special(lev)) && !sptr->boneid)
  686. X          || !dungeons[lev->dnum].boneid
  687. X             /* no bones on the last or multiway branch levels */
  688. X             /* in any dungeon (level 1 isn't multiway).       */
  689. X--- 26,32 ----
  690. X  
  691. X      if (ledger_no(&save_dlevel)) assign_level(lev, &save_dlevel);
  692. X  
  693. X!     return (boolean)(((sptr = Is_special(lev)) && !sptr->boneid)
  694. X          || !dungeons[lev->dnum].boneid
  695. X             /* no bones on the last or multiway branch levels */
  696. X             /* in any dungeon (level 1 isn't multiway).       */
  697. X***************
  698. X*** 172,178 ****
  699. X  #ifdef TUTTI_FRUTTI
  700. X      struct fruit *f;
  701. X  #endif
  702. X!     char *bonesid;
  703. X  
  704. X      if(ledger_no(&u.uz) <= 0 || ledger_no(&u.uz) > maxledgerno()) return;
  705. X      if(no_bones_level(&u.uz)) return; /* no bones for specific levels */
  706. X--- 172,178 ----
  707. X  #ifdef TUTTI_FRUTTI
  708. X      struct fruit *f;
  709. X  #endif
  710. X!     char c, *bonesid;
  711. X  
  712. X      if(ledger_no(&u.uz) <= 0 || ledger_no(&u.uz) > maxledgerno()) return;
  713. X      if(no_bones_level(&u.uz)) return; /* no bones for specific levels */
  714. X***************
  715. X*** 321,327 ****
  716. X      co_false();    /* make sure bonesid and savefruitchn get written */
  717. X  #endif /* MFLOPPY */
  718. X  
  719. X!     bwrite(fd, (genericptr_t) bonesid, 7);    /* DD.nnn */
  720. X  #ifdef TUTTI_FRUTTI
  721. X      savefruitchn(fd, WRITE_SAVE | FREE_SAVE);
  722. X  #endif
  723. X--- 321,329 ----
  724. X      co_false();    /* make sure bonesid and savefruitchn get written */
  725. X  #endif /* MFLOPPY */
  726. X  
  727. X!     c = (char) (strlen(bonesid) + 1);
  728. X!     bwrite(fd, (genericptr_t) &c, sizeof c);
  729. X!     bwrite(fd, (genericptr_t) bonesid, (unsigned) c);    /* DD.nnn */
  730. X  #ifdef TUTTI_FRUTTI
  731. X      savefruitchn(fd, WRITE_SAVE | FREE_SAVE);
  732. X  #endif
  733. X***************
  734. X*** 335,341 ****
  735. X  {
  736. X      register int fd;
  737. X      register int ok;
  738. X!     char *bonesid, oldbonesid[7];
  739. X  
  740. X  #ifdef EXPLORE_MODE
  741. X      if(discover)        /* save bones files for real games */
  742. X--- 337,343 ----
  743. X  {
  744. X      register int fd;
  745. X      register int ok;
  746. X!     char c, *bonesid, oldbonesid[10];
  747. X  
  748. X  #ifdef EXPLORE_MODE
  749. X      if(discover)        /* save bones files for real games */
  750. X***************
  751. X*** 362,368 ****
  752. X          }
  753. X  #endif
  754. X          minit();    /* ZEROCOMP */
  755. X!         mread(fd, (genericptr_t) oldbonesid, 7);    /* DD.nnn */
  756. X          if (strcmp(bonesid, oldbonesid)) {
  757. X  #ifdef WIZARD
  758. X              if (wizard) {
  759. X--- 364,371 ----
  760. X          }
  761. X  #endif
  762. X          minit();    /* ZEROCOMP */
  763. X!         mread(fd, (genericptr_t) &c, sizeof c);    /* length incl. '\0' */
  764. X!         mread(fd, (genericptr_t) oldbonesid, (unsigned) c); /* DD.nnn */
  765. X          if (strcmp(bonesid, oldbonesid)) {
  766. X  #ifdef WIZARD
  767. X              if (wizard) {
  768. X*** /tmp/da20893    Mon Jul 12 17:31:45 1993
  769. X--- src/cmd.c    Thu Jul  8 13:53:33 1993
  770. X***************
  771. X*** 1,4 ****
  772. X! /*    SCCS Id: @(#)cmd.c    3.1    93/04/24    */
  773. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  774. X  /* NetHack may be freely redistributed.  See license for details. */
  775. X  
  776. X--- 1,4 ----
  777. X! /*    SCCS Id: @(#)cmd.c    3.1    93/06/18    */
  778. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  779. X  /* NetHack may be freely redistributed.  See license for details. */
  780. X  
  781. X***************
  782. X*** 201,208 ****
  783. X       * pushed back on the pushq.
  784. X       */
  785. X      if (occupation) return '\0';
  786. X!     if (in_doagain) return (shead != stail) ? saveq[stail++] : '\0';
  787. X!     else        return (phead != ptail) ? pushq[ptail++] : '\0';
  788. X  }
  789. X  
  790. X  char
  791. X--- 201,208 ----
  792. X       * pushed back on the pushq.
  793. X       */
  794. X      if (occupation) return '\0';
  795. X!     if (in_doagain) return(char)((shead != stail) ? saveq[stail++] : '\0');
  796. X!     else        return(char)((phead != ptail) ? pushq[ptail++] : '\0');
  797. X  }
  798. X  
  799. X  char
  800. X***************
  801. X*** 211,217 ****
  802. X  
  803. X      if(!(ch = popch()))
  804. X          ch = nhgetch();
  805. X!     return(ch);
  806. X  }
  807. X  
  808. X  /* A ch == 0 resets the pushq */
  809. X--- 211,217 ----
  810. X  
  811. X      if(!(ch = popch()))
  812. X          ch = nhgetch();
  813. X!     return((char)ch);
  814. X  }
  815. X  
  816. X  /* A ch == 0 resets the pushq */
  817. X***************
  818. X*** 581,586 ****
  819. X--- 581,594 ----
  820. X          enl_msg("Bad luck ", "does", "did", " not time out for you");
  821. X          if (ltmp >= 0)
  822. X          enl_msg("Good luck ", "does", "did", " not time out for you");
  823. X+     }
  824. X+ 
  825. X+     if (u.umortality) {
  826. X+         if (u.umortality == 1)
  827. X+         Sprintf(buf, "once");
  828. X+         else
  829. X+         Sprintf(buf, "%d times", u.umortality);
  830. X+         enl_msg("You ", "have been killed ", "died ", buf);
  831. X      }
  832. X  
  833. X      display_nhwindow(en_win, TRUE);
  834. X*** /tmp/da20901    Mon Jul 12 17:31:47 1993
  835. X--- src/dbridge.c    Wed Jul  7 16:24:08 1993
  836. X***************
  837. X*** 112,118 ****
  838. X  is_db_wall(x,y)
  839. X  int x,y;
  840. X  {
  841. X!     return( levl[x][y].typ == DBWALL );
  842. X  }
  843. X  
  844. X  
  845. X--- 112,118 ----
  846. X  is_db_wall(x,y)
  847. X  int x,y;
  848. X  {
  849. X!     return((boolean)( levl[x][y].typ == DBWALL ));
  850. X  }
  851. X  
  852. X  
  853. X***************
  854. X*** 379,392 ****
  855. X      if (noncorporeal(etmp->edata))
  856. X          return(TRUE);
  857. X      if (is_pool(x, y))
  858. X!         return((is_u(etmp) && (Wwalking || Amphibious || Levitation)) ||
  859. X                 is_swimmer(etmp->edata) || is_flyer(etmp->edata) ||
  860. X!                is_floater(etmp->edata));
  861. X      /* must force call to lava_effects in e_died if is_u */
  862. X      if (is_lava(x, y))
  863. X!         return(is_u(etmp) ? !!Levitation : resists_fire(etmp->edata));
  864. X      if (is_db_wall(x, y))
  865. X!         return(passes_walls(etmp->edata));
  866. X      return(TRUE);
  867. X  }
  868. X  
  869. X--- 379,392 ----
  870. X      if (noncorporeal(etmp->edata))
  871. X          return(TRUE);
  872. X      if (is_pool(x, y))
  873. X!         return((boolean)((is_u(etmp) && (Wwalking || Amphibious || Levitation)) ||
  874. X                 is_swimmer(etmp->edata) || is_flyer(etmp->edata) ||
  875. X!                is_floater(etmp->edata)));
  876. X      /* must force call to lava_effects in e_died if is_u */
  877. X      if (is_lava(x, y))
  878. X!         return((boolean)(is_u(etmp) ? !!Levitation : resists_fire(etmp->edata)));
  879. X      if (is_db_wall(x, y))
  880. X!         return((boolean)(passes_walls(etmp->edata)));
  881. X      return(TRUE);
  882. X  }
  883. X  
  884. X***************
  885. X*** 434,440 ****
  886. X  automiss(etmp)
  887. X  struct entity *etmp;
  888. X  {
  889. X!     return(passes_walls(etmp->edata) || noncorporeal(etmp->edata));
  890. X  }
  891. X  
  892. X  /*
  893. X--- 434,440 ----
  894. X  automiss(etmp)
  895. X  struct entity *etmp;
  896. X  {
  897. X!     return((boolean)(passes_walls(etmp->edata) || noncorporeal(etmp->edata)));
  898. X  }
  899. X  
  900. X  /*
  901. X***************
  902. X*** 477,483 ****
  903. X      pline("Miss chance = %d (out of 8)", misses);
  904. X  #endif
  905. X  
  906. X!     return((misses >= rnd(8))? TRUE : FALSE);
  907. X  }
  908. X  
  909. X  /*
  910. X--- 477,483 ----
  911. X      pline("Miss chance = %d (out of 8)", misses);
  912. X  #endif
  913. X  
  914. X!     return((boolean)((misses >= rnd(8))? TRUE : FALSE));
  915. X  }
  916. X  
  917. X  /*
  918. X***************
  919. X*** 507,513 ****
  920. X  #ifdef D_DEBUG
  921. X      pline("%s to jump (%d chances in 10)", E_phrase(etmp, "try"), tmp);
  922. X  #endif
  923. X!     return((tmp >= rnd(10))? TRUE : FALSE);
  924. X  }
  925. X  
  926. X  static void
  927. X--- 507,513 ----
  928. X  #ifdef D_DEBUG
  929. X      pline("%s to jump (%d chances in 10)", E_phrase(etmp, "try"), tmp);
  930. X  #endif
  931. X!     return((boolean)((tmp >= rnd(10))? TRUE : FALSE));
  932. X  }
  933. X  
  934. X  static void
  935. X*** /tmp/da20917    Mon Jul 12 17:31:52 1993
  936. X--- src/detect.c    Wed Jul  7 16:24:11 1993
  937. X***************
  938. X*** 1,4 ****
  939. X! /*    SCCS Id: @(#)detect.c    3.1    93/03/30    */
  940. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  941. X  /* NetHack may be freely redistributed.  See license for details. */
  942. X  
  943. X--- 1,4 ----
  944. X! /*    SCCS Id: @(#)detect.c    3.1    93/06/15    */
  945. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  946. X  /* NetHack may be freely redistributed.  See license for details. */
  947. X  
  948. X***************
  949. X*** 53,61 ****
  950. X      if (glyph_is_object(lev->glyph)) {
  951. X          /* there's some object shown here */
  952. X          if (oclass == ALL_CLASSES) {
  953. X!         return !(level.objects[x][y] ||     /* stale if nothing here */
  954. X                  ((mtmp = m_at(x,y)) != 0 &&
  955. X!                 (mtmp->mgold || mtmp->minvent)));
  956. X          } else if (objects[glyph_to_obj(lev->glyph)].oc_class == oclass) {
  957. X          /* the object shown here is of interest */
  958. X          for (otmp = level.objects[x][y]; otmp; otmp = otmp->nexthere)
  959. X--- 53,61 ----
  960. X      if (glyph_is_object(lev->glyph)) {
  961. X          /* there's some object shown here */
  962. X          if (oclass == ALL_CLASSES) {
  963. X!         return((boolean)( !(level.objects[x][y] ||     /* stale if nothing here */
  964. X                  ((mtmp = m_at(x,y)) != 0 &&
  965. X!                 (mtmp->mgold || mtmp->minvent)))));
  966. X          } else if (objects[glyph_to_obj(lev->glyph)].oc_class == oclass) {
  967. X          /* the object shown here is of interest */
  968. X          for (otmp = level.objects[x][y]; otmp; otmp = otmp->nexthere)
  969. X***************
  970. X*** 587,593 ****
  971. X      }
  972. X      oops = (rnd(20) > ACURR(A_INT) || obj->cursed);
  973. X      if (oops && (obj->spe > 0)) {
  974. X!     switch(rnd(5)) {
  975. X      case 1 : pline("%s is too much to comprehend!", The(bname));
  976. X          break;
  977. X      case 2 : pline("%s confuses you!", The(bname));
  978. X--- 587,593 ----
  979. X      }
  980. X      oops = (rnd(20) > ACURR(A_INT) || obj->cursed);
  981. X      if (oops && (obj->spe > 0)) {
  982. X!     switch (rnd(obj->oartifact ? 4 : 5)) {
  983. X      case 1 : pline("%s is too much to comprehend!", The(bname));
  984. X          break;
  985. X      case 2 : pline("%s confuses you!", The(bname));
  986. X*** /tmp/da20933    Mon Jul 12 17:31:57 1993
  987. X--- src/do.c    Thu Jul  8 17:04:53 1993
  988. X***************
  989. X*** 1,4 ****
  990. X! /*    SCCS Id: @(#)do.c    3.1    93/03/30    */
  991. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  992. X  /* NetHack may be freely redistributed.  See license for details. */
  993. X  
  994. X--- 1,4 ----
  995. X! /*    SCCS Id: @(#)do.c    3.1    93/06/26    */
  996. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  997. X  /* NetHack may be freely redistributed.  See license for details. */
  998. X  
  999. X***************
  1000. X*** 153,159 ****
  1001. X           (t->ttyp==PIT || t->ttyp==SPIKED_PIT || t->ttyp==TRAPDOOR)) {
  1002. X          struct monst *mtmp;
  1003. X  
  1004. X-         bury_objs(x, y);
  1005. X          if(!Can_fall_thru(&u.uz) && t->ttyp == TRAPDOOR)
  1006. X              return FALSE;
  1007. X          if (((mtmp = m_at(x, y)) && mtmp->mtrapped) ||
  1008. X--- 153,158 ----
  1009. X***************
  1010. X*** 166,173 ****
  1011. X              if (!passes_walls(mtmp->data) && !throws_rocks(mtmp->data))
  1012. X                  if (hmon(mtmp, obj, TRUE))
  1013. X                      return FALSE;    /* still alive */
  1014. X-                 else
  1015. X-                     bury_objs(x, y);    /* treasure, corpse */
  1016. X              } else
  1017. X  #ifdef POLYSELF
  1018. X              if (!passes_walls(uasmon) && !throws_rocks(uasmon))
  1019. X--- 165,170 ----
  1020. X***************
  1021. X*** 193,198 ****
  1022. X--- 190,196 ----
  1023. X          }
  1024. X          deltrap(t);
  1025. X          obfree(obj, (struct obj *)0);
  1026. X+         bury_objs(x, y);
  1027. X          newsym(x,y);
  1028. X          return TRUE;
  1029. X      } else if (is_pool(x, y)) {
  1030. X***************
  1031. X*** 219,226 ****
  1032. X      } else {
  1033. X          pline("%s land%s on the altar.", Doname2(obj),
  1034. X              (obj->quan == 1L) ? "s" : "");
  1035. X!         if (obj->otyp != GOLD_PIECE)
  1036. X!             obj->bknown = 1;
  1037. X      }
  1038. X  }
  1039. X  
  1040. X--- 217,223 ----
  1041. X      } else {
  1042. X          pline("%s land%s on the altar.", Doname2(obj),
  1043. X              (obj->quan == 1L) ? "s" : "");
  1044. X!         obj->bknown = 1;
  1045. X      }
  1046. X  }
  1047. X  
  1048. X***************
  1049. X*** 976,983 ****
  1050. X              if (enexto(&mm, mm.x, mm.y, &mons[PM_ANGEL])) {
  1051. X              if ((mtmp = mk_roamer(&mons[PM_ANGEL], u.ualign.type,
  1052. X                         mm.x, mm.y, TRUE)) != 0) {
  1053. X!                 register struct obj *otmp =
  1054. X!                        mksobj(SILVER_SABER, FALSE, FALSE);
  1055. X  
  1056. X                  if (!Blind)
  1057. X                  pline("An angel appears near you.");
  1058. X--- 973,979 ----
  1059. X              if (enexto(&mm, mm.x, mm.y, &mons[PM_ANGEL])) {
  1060. X              if ((mtmp = mk_roamer(&mons[PM_ANGEL], u.ualign.type,
  1061. X                         mm.x, mm.y, TRUE)) != 0) {
  1062. X!                 register struct obj *otmp;
  1063. X  
  1064. X                  if (!Blind)
  1065. X                  pline("An angel appears near you.");
  1066. X***************
  1067. X*** 992,1000 ****
  1068. X                  mtmp->m_lev = rn1(8,15);
  1069. X                  mtmp->mhp = mtmp->mhpmax =
  1070. X                      d((int)mtmp->m_lev,10) + 30 + rnd(30);
  1071. X                  bless(otmp);
  1072. X!                 otmp->spe = 7;
  1073. X!                 mpickobj(mtmp, otmp);
  1074. X              }
  1075. X              }
  1076. X          }
  1077. X--- 988,1006 ----
  1078. X                  mtmp->m_lev = rn1(8,15);
  1079. X                  mtmp->mhp = mtmp->mhpmax =
  1080. X                      d((int)mtmp->m_lev,10) + 30 + rnd(30);
  1081. X+                 if ((otmp = select_hwep(mtmp)) == 0) {
  1082. X+                 otmp = mksobj(SILVER_SABER, FALSE, FALSE);
  1083. X+                 mpickobj(mtmp, otmp);
  1084. X+                 }
  1085. X                  bless(otmp);
  1086. X!                 if (otmp->spe < 4) otmp->spe += rnd(4);
  1087. X! #ifdef MUSE
  1088. X!                 if ((otmp = which_armor(mtmp, W_ARMS)) == 0
  1089. X!                   || otmp->otyp != SHIELD_OF_REFLECTION) {
  1090. X!                 (void) mongets(mtmp, AMULET_OF_REFLECTION);
  1091. X!                 m_dowear(mtmp, TRUE);
  1092. X!                 }
  1093. X! #endif
  1094. X              }
  1095. X              }
  1096. X          }
  1097. X*** /tmp/da20951    Mon Jul 12 17:32:04 1993
  1098. X--- src/do_wear.c    Wed Jul  7 16:24:13 1993
  1099. X***************
  1100. X*** 1,4 ****
  1101. X! /*    SCCS Id: @(#)do_wear.c    3.1    93/05/25    */
  1102. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1103. X  /* NetHack may be freely redistributed.  See license for details. */
  1104. X  
  1105. X--- 1,4 ----
  1106. X! /*    SCCS Id: @(#)do_wear.c    3.1    93/06/24    */
  1107. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1108. X  /* NetHack may be freely redistributed.  See license for details. */
  1109. X  
  1110. X***************
  1111. X*** 64,71 ****
  1112. X  is_boots(otmp)
  1113. X  register struct obj *otmp;
  1114. X  {
  1115. X!     return(otmp->otyp >= LOW_BOOTS &&
  1116. X!         otmp->otyp <= LEVITATION_BOOTS);
  1117. X  }
  1118. X  
  1119. X  boolean
  1120. X--- 64,71 ----
  1121. X  is_boots(otmp)
  1122. X  register struct obj *otmp;
  1123. X  {
  1124. X!     return((boolean)(otmp->otyp >= LOW_BOOTS &&
  1125. X!         otmp->otyp <= LEVITATION_BOOTS));
  1126. X  }
  1127. X  
  1128. X  boolean
  1129. X***************
  1130. X*** 72,79 ****
  1131. X  is_helmet(otmp)
  1132. X  register struct obj *otmp;
  1133. X  {
  1134. X!     return(otmp->otyp >= ELVEN_LEATHER_HELM &&
  1135. X!         otmp->otyp <= HELM_OF_TELEPATHY);
  1136. X  }
  1137. X  
  1138. X  #endif /* OVLB */
  1139. X--- 72,79 ----
  1140. X  is_helmet(otmp)
  1141. X  register struct obj *otmp;
  1142. X  {
  1143. X!     return((boolean)(otmp->otyp >= ELVEN_LEATHER_HELM &&
  1144. X!         otmp->otyp <= HELM_OF_TELEPATHY));
  1145. X  }
  1146. X  
  1147. X  #endif /* OVLB */
  1148. X***************
  1149. X*** 83,90 ****
  1150. X  is_gloves(otmp)
  1151. X  register struct obj *otmp;
  1152. X  {
  1153. X!     return(otmp->otyp >= LEATHER_GLOVES &&
  1154. X!         otmp->otyp <= GAUNTLETS_OF_DEXTERITY);
  1155. X  }
  1156. X  
  1157. X  #endif /* OVL2 */
  1158. X--- 83,90 ----
  1159. X  is_gloves(otmp)
  1160. X  register struct obj *otmp;
  1161. X  {
  1162. X!     return((boolean)(otmp->otyp >= LEATHER_GLOVES &&
  1163. X!         otmp->otyp <= GAUNTLETS_OF_DEXTERITY));
  1164. X  }
  1165. X  
  1166. X  #endif /* OVL2 */
  1167. X***************
  1168. X*** 94,101 ****
  1169. X  is_cloak(otmp)
  1170. X  register struct obj *otmp;
  1171. X  {
  1172. X!     return(otmp->otyp >= MUMMY_WRAPPING &&
  1173. X!         otmp->otyp <= CLOAK_OF_DISPLACEMENT);
  1174. X  }
  1175. X  
  1176. X  boolean
  1177. X--- 94,101 ----
  1178. X  is_cloak(otmp)
  1179. X  register struct obj *otmp;
  1180. X  {
  1181. X!     return((boolean)(otmp->otyp >= MUMMY_WRAPPING &&
  1182. X!         otmp->otyp <= CLOAK_OF_DISPLACEMENT));
  1183. X  }
  1184. X  
  1185. X  boolean
  1186. X***************
  1187. X*** 102,109 ****
  1188. X  is_shield(otmp)
  1189. X  register struct obj *otmp;
  1190. X  {
  1191. X!     return(otmp->otyp >= SMALL_SHIELD &&
  1192. X!         otmp->otyp <= SHIELD_OF_REFLECTION);
  1193. X  }
  1194. X  
  1195. X  /*
  1196. X--- 102,109 ----
  1197. X  is_shield(otmp)
  1198. X  register struct obj *otmp;
  1199. X  {
  1200. X!     return((boolean)(otmp->otyp >= SMALL_SHIELD &&
  1201. X!         otmp->otyp <= SHIELD_OF_REFLECTION));
  1202. X  }
  1203. X  
  1204. X  /*
  1205. X***************
  1206. X*** 781,790 ****
  1207. X  donning(otmp)
  1208. X  register struct obj *otmp;
  1209. X  {
  1210. X!     return (otmp == uarmf && (afternmv == Boots_on || afternmv == Boots_off))
  1211. X      || (otmp == uarmh && (afternmv == Helmet_on || afternmv == Helmet_off))
  1212. X      || (otmp == uarmg && (afternmv == Gloves_on || afternmv == Gloves_off))
  1213. X!     || (otmp == uarm && (afternmv == Armor_on || afternmv == Armor_off));
  1214. X  }
  1215. X  
  1216. X  void
  1217. X--- 781,790 ----
  1218. X  donning(otmp)
  1219. X  register struct obj *otmp;
  1220. X  {
  1221. X!     return((boolean)((otmp == uarmf && (afternmv == Boots_on || afternmv == Boots_off))
  1222. X      || (otmp == uarmh && (afternmv == Helmet_on || afternmv == Helmet_off))
  1223. X      || (otmp == uarmg && (afternmv == Gloves_on || afternmv == Gloves_off))
  1224. X!     || (otmp == uarm && (afternmv == Armor_on || afternmv == Armor_off))));
  1225. X  }
  1226. X  
  1227. X  void
  1228. X***************
  1229. X*** 865,872 ****
  1230. X          pline("The bear trap prevents you from pulling your %s out.",
  1231. X                body_part(FOOT));
  1232. X          else
  1233. X!         You("are stuck in the floor, and cannot pull your %s out.",
  1234. X!              makeplural(body_part(FOOT)));
  1235. X          return(0);
  1236. X      }
  1237. X      reset_remarm();            /* since you may change ordering */
  1238. X--- 865,872 ----
  1239. X          pline("The bear trap prevents you from pulling your %s out.",
  1240. X                body_part(FOOT));
  1241. X          else
  1242. X!         You("are stuck in the %s, and cannot pull your %s out.",
  1243. X!             surface(u.ux, u.uy), makeplural(body_part(FOOT)));
  1244. X          return(0);
  1245. X      }
  1246. X      reset_remarm();            /* since you may change ordering */
  1247. X***************
  1248. X*** 1067,1084 ****
  1249. X          }
  1250. X          if(!err) mask = W_ARMS;
  1251. X      } else if(is_boots(otmp)) {
  1252. X!            if(uarmf) {
  1253. X              already_wearing("boots.");
  1254. X              err++;
  1255. X!            } if (u.utrap && (u.utraptype == TT_BEARTRAP ||
  1256. X!                      u.utraptype == TT_INFLOOR)) {
  1257. X!                if (u.utraptype == TT_BEARTRAP)
  1258. X!                Your("%s is trapped!", body_part(FOOT));
  1259. X!                else
  1260. X!                Your("%s are stuck in the floor!",
  1261. X!                 makeplural(body_part(FOOT)));
  1262. X!                err++;
  1263. X!            } else
  1264. X              mask = W_ARMF;
  1265. X      } else if(is_gloves(otmp)) {
  1266. X          if(uarmg) {
  1267. X--- 1067,1085 ----
  1268. X          }
  1269. X          if(!err) mask = W_ARMS;
  1270. X      } else if(is_boots(otmp)) {
  1271. X!         if (uarmf) {
  1272. X              already_wearing("boots.");
  1273. X              err++;
  1274. X!         } if (u.utrap && (u.utraptype == TT_BEARTRAP ||
  1275. X!                   u.utraptype == TT_INFLOOR)) {
  1276. X!             if (u.utraptype == TT_BEARTRAP)
  1277. X!                 Your("%s is trapped!", body_part(FOOT));
  1278. X!             else
  1279. X!                 Your("%s are stuck in the %s!",
  1280. X!                  makeplural(body_part(FOOT)),
  1281. X!                  surface(u.ux, u.uy));
  1282. X!             err++;
  1283. X!         } else
  1284. X              mask = W_ARMF;
  1285. X      } else if(is_gloves(otmp)) {
  1286. X          if(uarmg) {
  1287. X***************
  1288. X*** 1337,1343 ****
  1289. X          /* changed so cursed weapons don't fall, GAN 10/30/86 */
  1290. X          Your("%s %sslips from your %s.",
  1291. X              is_sword(otmp) ? "sword" :
  1292. X!                 makesingular(oclass_names[otmp->oclass]),
  1293. X              xfl ? "also " : "",
  1294. X              makeplural(body_part(HAND)));
  1295. X          setuwep((struct obj *)0);
  1296. X--- 1338,1344 ----
  1297. X          /* changed so cursed weapons don't fall, GAN 10/30/86 */
  1298. X          Your("%s %sslips from your %s.",
  1299. X              is_sword(otmp) ? "sword" :
  1300. X!                 makesingular(oclass_names[(int)otmp->oclass]),
  1301. X              xfl ? "also " : "",
  1302. X              makeplural(body_part(HAND)));
  1303. X          setuwep((struct obj *)0);
  1304. X***************
  1305. X*** 1614,1620 ****
  1306. X      } else if((otmp = uarm) && (!atmp || atmp == uarm)) {
  1307. X          /* may be disintegrated by spell or dragon breath... */
  1308. X          if (donning(otmp)) cancel_don();
  1309. X!         Your("armor turns to dust and falls to the floor!");
  1310. X          (void) Armor_gone();
  1311. X          useup(otmp);
  1312. X  #ifdef TOURIST
  1313. X--- 1615,1622 ----
  1314. X      } else if((otmp = uarm) && (!atmp || atmp == uarm)) {
  1315. X          /* may be disintegrated by spell or dragon breath... */
  1316. X          if (donning(otmp)) cancel_don();
  1317. X!         Your("armor turns to dust and falls to the %s!",
  1318. X!             surface(u.ux,u.uy));
  1319. X          (void) Armor_gone();
  1320. X          useup(otmp);
  1321. X  #ifdef TOURIST
  1322. X*** /tmp/da20959    Mon Jul 12 17:32:07 1993
  1323. X--- src/dog.c    Wed Jul  7 16:55:05 1993
  1324. X***************
  1325. X*** 1,4 ****
  1326. X! /*    SCCS Id: @(#)dog.c    3.1    93/03/30    */
  1327. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1328. X  /* NetHack may be freely redistributed.  See license for details. */
  1329. X  
  1330. X--- 1,4 ----
  1331. X! /*    SCCS Id: @(#)dog.c    3.1    93/06/19    */
  1332. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1333. X  /* NetHack may be freely redistributed.  See license for details. */
  1334. X  
  1335. X***************
  1336. X*** 195,200 ****
  1337. X--- 195,208 ----
  1338. X              /* let monster move a bit on the new level */
  1339. X              /* see placement code below */
  1340. X              mtmp->mx = min(nmv, 8);
  1341. X+ #ifdef MULDGN
  1342. X+             /*    temporary hack...
  1343. X+              * Ft.Ludios' entry chamber isn't classified as a
  1344. X+              * room by lev_comp and any movement greater than
  1345. X+              * 1 can result in placement beyond solid walls.
  1346. X+              */
  1347. X+             if (Is_knox(&u.uz)) mtmp->mx = 1;
  1348. X+ #endif
  1349. X  
  1350. X              if(!regenerates(mtmp->data)) nmv /= 20;
  1351. X              if((long)mtmp->mhp + nmv >= (long)mtmp->mhpmax)
  1352. X***************
  1353. X*** 215,220 ****
  1354. X--- 223,229 ----
  1355. X              home_shk(mtmp, TRUE);
  1356. X              else switch(mtmp->my) {
  1357. X              xchar xlocale, ylocale;
  1358. X+             register struct trap *t;
  1359. X  
  1360. X              case 1: xlocale = xupstair; ylocale = yupstair;
  1361. X                  goto common;
  1362. X***************
  1363. X*** 226,256 ****
  1364. X                  goto common;
  1365. X              case 5: xlocale = sstairs.sx; ylocale = sstairs.sy;
  1366. X                  goto common;
  1367. X  common:
  1368. X!                 if (xlocale) {
  1369. X!                     if(mtmp->mx) {
  1370. X!                     /* monster moved a bit */
  1371. X!                     /* pick a nearby location */
  1372. X!                     /* mnearto() deals w/stone, et al */
  1373. X                      int i, j;
  1374. X!                     char *rmlist = in_rooms(xlocale,
  1375. X!                                 ylocale, 0);
  1376. X! 
  1377. X!                     if (rmlist) {
  1378. X!                         xlocale = somex(
  1379. X!                         &rooms[*rmlist - ROOMOFFSET]);
  1380. X!                         ylocale = somey(
  1381. X!                         &rooms[*rmlist - ROOMOFFSET]);
  1382. X!                     } else {
  1383. X!                         i = max(1, xlocale - mtmp->mx);
  1384. X!                         j = min(COLNO-1, xlocale+mtmp->mx);
  1385. X!                         xlocale = rn1(j-i,i);
  1386. X! 
  1387. X!                         i = max(0, ylocale - mtmp->mx);
  1388. X!                         j = min(ROWNO-1, ylocale+mtmp->mx);
  1389. X!                         ylocale = rn1(j-i,i);
  1390. X!                     }
  1391. X                      }
  1392. X                      (void) mnearto(mtmp,
  1393. X                             xlocale, ylocale, FALSE);
  1394. X                      break;
  1395. X--- 235,276 ----
  1396. X                  goto common;
  1397. X              case 5: xlocale = sstairs.sx; ylocale = sstairs.sy;
  1398. X                  goto common;
  1399. X+             case 6:        /* portal */
  1400. X+                 for (t = ftrap; t; t = t->ntrap)
  1401. X+                     if (t->ttyp == MAGIC_PORTAL) break;
  1402. X+                 if (t) {
  1403. X+                     xlocale = t->tx;
  1404. X+                     ylocale = t->ty;
  1405. X+                 } else {
  1406. X+                     if (!In_endgame(&u.uz))
  1407. X+                   impossible("losedogs: no corresponding portal?");
  1408. X+                     xlocale = ylocale = 0;
  1409. X+                 }
  1410. X+                 goto common;
  1411. X  common:
  1412. X!                 if (xlocale && mtmp->mx) {
  1413. X!                     /* monster moved a bit */
  1414. X!                     /* pick a nearby location */
  1415. X!                     /* mnearto() deals w/stone, et al */
  1416. X!                     char *r = in_rooms(xlocale, ylocale, 0);
  1417. X!                     if (r && *r) {
  1418. X!                     coord c;
  1419. X!                     /* somexy() handles irregular rooms */
  1420. X!                     if (somexy(&rooms[*r - ROOMOFFSET], &c))
  1421. X!                         xlocale = c.x,  ylocale = c.y;
  1422. X!                     else
  1423. X!                         xlocale = ylocale = 0;
  1424. X!                     } else {
  1425. X                      int i, j;
  1426. X!                     i = max(1, xlocale - mtmp->mx);
  1427. X!                     j = min(COLNO-1, xlocale + mtmp->mx);
  1428. X!                     xlocale = rn1(j - i, i);
  1429. X!                     i = max(0, ylocale - mtmp->mx);
  1430. X!                     j = min(ROWNO-1, ylocale + mtmp->mx);
  1431. X!                     ylocale = rn1(j - i, i);
  1432. X                      }
  1433. X+                 }
  1434. X+                 if (xlocale) {
  1435. X                      (void) mnearto(mtmp,
  1436. X                             xlocale, ylocale, FALSE);
  1437. X                      break;
  1438. X***************
  1439. X*** 309,316 ****
  1440. X              set_residency(mtmp, TRUE);
  1441. X  
  1442. X          if (mtmp->wormno) {
  1443. X              /* NOTE: worm is truncated to # segs = max wormno size */
  1444. X!             num_segs = min(count_wsegs(mtmp), MAX_NUM_WORMS - 1);
  1445. X              wormgone(mtmp);
  1446. X          }
  1447. X  
  1448. X--- 329,338 ----
  1449. X              set_residency(mtmp, TRUE);
  1450. X  
  1451. X          if (mtmp->wormno) {
  1452. X+             register int cnt;
  1453. X              /* NOTE: worm is truncated to # segs = max wormno size */
  1454. X!             cnt = count_wsegs(mtmp);
  1455. X!             num_segs = min(cnt, MAX_NUM_WORMS - 1);
  1456. X              wormgone(mtmp);
  1457. X          }
  1458. X  
  1459. X***************
  1460. X*** 346,351 ****
  1461. X--- 368,374 ----
  1462. X               *    3: < ladder,
  1463. X               *    4: > ladder,
  1464. X               *    5: sstairs
  1465. X+              *    6: portal
  1466. X               */ 
  1467. X  {
  1468. X          register struct obj *obj;
  1469. X***************
  1470. X*** 355,362 ****
  1471. X          set_residency(mtmp, TRUE);
  1472. X  
  1473. X      if (mtmp->wormno) {
  1474. X        /* **** NOTE: worm is truncated to # segs = max wormno size **** */
  1475. X!         num_segs = min(count_wsegs(mtmp), MAX_NUM_WORMS - 1);
  1476. X          wormgone(mtmp);
  1477. X      }
  1478. X  
  1479. X--- 378,387 ----
  1480. X          set_residency(mtmp, TRUE);
  1481. X  
  1482. X      if (mtmp->wormno) {
  1483. X+         register int cnt;
  1484. X        /* **** NOTE: worm is truncated to # segs = max wormno size **** */
  1485. X!         cnt = count_wsegs(mtmp);
  1486. X!         num_segs = min(cnt, MAX_NUM_WORMS - 1);
  1487. X          wormgone(mtmp);
  1488. X      }
  1489. X  
  1490. X*** /tmp/da20975    Mon Jul 12 17:32:12 1993
  1491. X--- src/dokick.c    Thu Jul  1 14:06:55 1993
  1492. X***************
  1493. X*** 1,4 ****
  1494. X! /*    SCCS Id: @(#)dokick.c    3.1    93/05/14    */
  1495. X  /* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
  1496. X  /* NetHack may be freely redistributed.  See license for details. */
  1497. X  
  1498. X--- 1,4 ----
  1499. X! /*    SCCS Id: @(#)dokick.c    3.1    93/06/15    */
  1500. X  /* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
  1501. X  /* NetHack may be freely redistributed.  See license for details. */
  1502. X  
  1503. X***************
  1504. X*** 344,350 ****
  1505. X          for(otmp = kickobj->cobj; otmp; otmp = otmp2) {
  1506. X              otmp2 = otmp->nobj;
  1507. X              if (objects[otmp->otyp].oc_material == GLASS
  1508. X!                                 && !rn2(3)) {
  1509. X                  You("hear a muffled shatter.");
  1510. X                  if(costly) loss += stolen_value(otmp, x, y, 
  1511. X                          (boolean)shkp->mpeaceful, TRUE);
  1512. X--- 344,350 ----
  1513. X          for(otmp = kickobj->cobj; otmp; otmp = otmp2) {
  1514. X              otmp2 = otmp->nobj;
  1515. X              if (objects[otmp->otyp].oc_material == GLASS
  1516. X!                 && !obj_resists(otmp, 33, 100)) {
  1517. X                  You("hear a muffled shatter.");
  1518. X                  if(costly) loss += stolen_value(otmp, x, y, 
  1519. X                          (boolean)shkp->mpeaceful, TRUE);
  1520. X*** /tmp/da20984    Mon Jul 12 17:32:15 1993
  1521. X--- src/dothrow.c    Tue Jul  6 15:53:45 1993
  1522. X***************
  1523. X*** 1,4 ****
  1524. X! /*    SCCS Id: @(#)dothrow.c    3.1    93/05/15    */
  1525. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1526. X  /* NetHack may be freely redistributed.  See license for details. */
  1527. X  
  1528. X--- 1,4 ----
  1529. X! /*    SCCS Id: @(#)dothrow.c    3.1    93/06/15    */
  1530. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1531. X  /* NetHack may be freely redistributed.  See license for details. */
  1532. X  
  1533. X***************
  1534. X*** 539,544 ****
  1535. X--- 539,553 ----
  1536. X              return(gem_accept(mon, obj));
  1537. X          }
  1538. X      }
  1539. X+ #ifdef MULDGN
  1540. X+     /* don't make game unwinnable if naive player throws artifact
  1541. X+        at leader.... */
  1542. X+     if (mon->data->msound == MS_LEADER && is_quest_artifact(obj)) {
  1543. X+         if (mon->mcanmove)
  1544. X+             pline("%s ignores %s.", Monnam(mon), the(xname(obj)));
  1545. X+         return(0);
  1546. X+     }
  1547. X+ #endif
  1548. X      if(obj->oclass == WEAPON_CLASS || obj->otyp == PICK_AXE ||
  1549. X         obj->otyp == UNICORN_HORN || obj->oclass == GEM_CLASS) {
  1550. X          if(obj->otyp < DART || obj->oclass == GEM_CLASS) {
  1551. X***************
  1552. X*** 695,700 ****
  1553. X--- 704,711 ----
  1554. X  register struct obj   *obj;
  1555. X  register boolean loose;        /* if not loose, obj is in fobj chain */
  1556. X  {
  1557. X+     if (obj_resists(obj, 1, 100)) return 0;
  1558. X+ 
  1559. X      switch(obj->otyp) {
  1560. X          case MIRROR:
  1561. X              change_luck(-2);    /* and fall through */
  1562. X*** /tmp/da21001    Mon Jul 12 17:32:20 1993
  1563. X--- src/dungeon.c    Wed Jul  7 16:24:18 1993
  1564. X***************
  1565. X*** 1,4 ****
  1566. X! /*    SCCS Id: @(#)dungeon.c    3.1    93/01/17    */
  1567. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1568. X  /* NetHack may be freely redistributed.  See license for details. */
  1569. X  
  1570. X--- 1,4 ----
  1571. X! /*    SCCS Id: @(#)dungeon.c    3.1    93/06/26    */
  1572. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1573. X  /* NetHack may be freely redistributed.  See license for details. */
  1574. X  
  1575. X***************
  1576. X*** 8,14 ****
  1577. X  #ifdef OVL1
  1578. X  
  1579. X  #define    DUNGEON_FILE    "dungeon"
  1580. X! #if defined(MICRO) && !defined(AMIGA)
  1581. X  # define RDMODE "rb"
  1582. X  #else
  1583. X  # define RDMODE "r"
  1584. X--- 8,14 ----
  1585. X  #ifdef OVL1
  1586. X  
  1587. X  #define    DUNGEON_FILE    "dungeon"
  1588. X! #if (defined(MICRO) && !defined(AMIGA)) || defined(THINK_C)
  1589. X  # define RDMODE "rb"
  1590. X  #else
  1591. X  # define RDMODE "r"
  1592. X***************
  1593. X*** 182,190 ****
  1594. X          if (!strcmp(dungeons[i].dname, s)) return i;
  1595. X  
  1596. X      panic("Couldn't resolve dungeon number for name \"%s\".", s);
  1597. X! #if defined(LINT) || defined(GCC_WARN)
  1598. X      return (xchar)0;
  1599. X- #endif
  1600. X  }
  1601. X  
  1602. X  s_level *
  1603. X--- 182,189 ----
  1604. X          if (!strcmp(dungeons[i].dname, s)) return i;
  1605. X  
  1606. X      panic("Couldn't resolve dungeon number for name \"%s\".", s);
  1607. X!     /*NOT REACHED*/
  1608. X      return (xchar)0;
  1609. X  }
  1610. X  
  1611. X  s_level *
  1612. X***************
  1613. X*** 233,241 ****
  1614. X          return(pdnum);
  1615. X  
  1616. X      panic("parent_dnum: couldn't resolve branch.");
  1617. X! #if defined(LINT) || defined(GCC_WARN)
  1618. X      return (xchar)0;
  1619. X- #endif
  1620. X  }
  1621. X  
  1622. X  /*
  1623. X--- 232,239 ----
  1624. X          return(pdnum);
  1625. X  
  1626. X      panic("parent_dnum: couldn't resolve branch.");
  1627. X!     /*NOT REACHED*/
  1628. X      return (xchar)0;
  1629. X  }
  1630. X  
  1631. X  /*
  1632. X***************
  1633. X*** 856,862 ****
  1634. X  ledger_no(lev)
  1635. X  d_level    *lev;
  1636. X  {
  1637. X!     return(lev->dlevel + dungeons[lev->dnum].ledger_start);
  1638. X  }
  1639. X  
  1640. X  /*
  1641. X--- 854,860 ----
  1642. X  ledger_no(lev)
  1643. X  d_level    *lev;
  1644. X  {
  1645. X!     return((xchar)(lev->dlevel + dungeons[lev->dnum].ledger_start));
  1646. X  }
  1647. X  
  1648. X  /*
  1649. X***************
  1650. X*** 881,892 ****
  1651. X  ledger_to_dnum(ledgerno)
  1652. X  xchar    ledgerno;
  1653. X  {
  1654. X!     xchar    i;
  1655. X  
  1656. X!     for(i = 0; i < n_dgns; i++)
  1657. X!         if(dungeons[i].ledger_start >= ledgerno) return(i-1);
  1658. X  
  1659. X!     return(MAXDUNGEON);
  1660. X  }
  1661. X  
  1662. X  /* return the level of the dungeon this ledgerno exists in */
  1663. X--- 879,895 ----
  1664. X  ledger_to_dnum(ledgerno)
  1665. X  xchar    ledgerno;
  1666. X  {
  1667. X!     register int i;
  1668. X  
  1669. X!     /* find i such that (i->base + 1) <= ledgerno <= (i->base + i->count) */
  1670. X!     for (i = 0; i < n_dgns; i++)
  1671. X!         if (dungeons[i].ledger_start < ledgerno &&
  1672. X!         ledgerno <= dungeons[i].ledger_start + dungeons[i].num_dunlevs)
  1673. X!         return (xchar)i;
  1674. X  
  1675. X!     panic("level number out of range [ledger_to_dnum(%d)]", (int)ledgerno);
  1676. X!     /*NOT REACHED*/
  1677. X!     return (xchar)0;
  1678. X  }
  1679. X  
  1680. X  /* return the level of the dungeon this ledgerno exists in */
  1681. X***************
  1682. X*** 894,900 ****
  1683. X  ledger_to_dlev(ledgerno)
  1684. X  xchar    ledgerno;
  1685. X  {
  1686. X!     return(ledgerno - dungeons[ledger_to_dnum(ledgerno)].ledger_start);
  1687. X  }
  1688. X  
  1689. X  #endif /* OVL1 */
  1690. X--- 897,903 ----
  1691. X  ledger_to_dlev(ledgerno)
  1692. X  xchar    ledgerno;
  1693. X  {
  1694. X!     return((xchar)(ledgerno - dungeons[ledger_to_dnum(ledgerno)].ledger_start));
  1695. X  }
  1696. X  
  1697. X  #endif /* OVL1 */
  1698. X***************
  1699. X*** 906,912 ****
  1700. X  depth(lev)
  1701. X  d_level    *lev;
  1702. X  {
  1703. X!     return dungeons[lev->dnum].depth_start + lev->dlevel - 1;
  1704. X  }
  1705. X  
  1706. X  boolean
  1707. X--- 909,915 ----
  1708. X  depth(lev)
  1709. X  d_level    *lev;
  1710. X  {
  1711. X!     return((schar)( dungeons[lev->dnum].depth_start + lev->dlevel - 1));
  1712. X  }
  1713. X  
  1714. X  boolean
  1715. X***************
  1716. X*** 913,919 ****
  1717. X  on_level(lev1, lev2)    /* are "lev1" and "lev2" actually the same? */
  1718. X  d_level    *lev1, *lev2;
  1719. X  {
  1720. X!     return((lev1->dnum == lev2->dnum) && (lev1->dlevel == lev2->dlevel));
  1721. X  }
  1722. X  
  1723. X  #endif /* OVL0 */
  1724. X--- 916,922 ----
  1725. X  on_level(lev1, lev2)    /* are "lev1" and "lev2" actually the same? */
  1726. X  d_level    *lev1, *lev2;
  1727. X  {
  1728. X!     return((boolean)((lev1->dnum == lev2->dnum) && (lev1->dlevel == lev2->dlevel)));
  1729. X  }
  1730. X  
  1731. X  #endif /* OVL0 */
  1732. X***************
  1733. X*** 1034,1044 ****
  1734. X  On_stairs(x, y)
  1735. X  xchar x, y;
  1736. X  {
  1737. X!     return((x == xupstair && y == yupstair) ||
  1738. X             (x == xdnstair && y == ydnstair) ||
  1739. X             (x == xdnladder && y == ydnladder) ||
  1740. X             (x == xupladder && y == yupladder) ||
  1741. X!            (x == sstairs.sx && y == sstairs.sy));
  1742. X  }
  1743. X  
  1744. X  boolean
  1745. X--- 1037,1047 ----
  1746. X  On_stairs(x, y)
  1747. X  xchar x, y;
  1748. X  {
  1749. X!     return((boolean)((x == xupstair && y == yupstair) ||
  1750. X             (x == xdnstair && y == ydnstair) ||
  1751. X             (x == xdnladder && y == ydnladder) ||
  1752. X             (x == xupladder && y == yupladder) ||
  1753. X!            (x == sstairs.sx && y == sstairs.sy)));
  1754. X  }
  1755. X  
  1756. X  boolean
  1757. X***************
  1758. X*** 1045,1051 ****
  1759. X  Is_botlevel(lev)
  1760. X  d_level *lev;
  1761. X  {
  1762. X!     return lev->dlevel == dungeons[lev->dnum].num_dunlevs;
  1763. X  }
  1764. X  
  1765. X  boolean
  1766. X--- 1048,1054 ----
  1767. X  Is_botlevel(lev)
  1768. X  d_level *lev;
  1769. X  {
  1770. X!     return((boolean)(lev->dlevel == dungeons[lev->dnum].num_dunlevs));
  1771. X  }
  1772. X  
  1773. X  boolean
  1774. X***************
  1775. X*** 1052,1059 ****
  1776. X  Can_dig_down(lev)
  1777. X  d_level *lev;
  1778. X  {
  1779. X!     return !level.flags.hardfloor
  1780. X!         && !Is_botlevel(lev) && !Invocation_lev(lev);
  1781. X  }
  1782. X  
  1783. X  /*
  1784. X--- 1055,1062 ----
  1785. X  Can_dig_down(lev)
  1786. X  d_level *lev;
  1787. X  {
  1788. X!     return((boolean)(!level.flags.hardfloor
  1789. X!         && !Is_botlevel(lev) && !Invocation_lev(lev)));
  1790. X  }
  1791. X  
  1792. X  /*
  1793. X***************
  1794. X*** 1065,1071 ****
  1795. X  Can_fall_thru(lev)
  1796. X  d_level *lev;
  1797. X  {
  1798. X!     return Can_dig_down(lev) || Is_stronghold(lev);
  1799. X  }
  1800. X  
  1801. X  /*
  1802. X--- 1068,1074 ----
  1803. X  Can_fall_thru(lev)
  1804. X  d_level *lev;
  1805. X  {
  1806. X!     return((boolean)(Can_dig_down(lev) || Is_stronghold(lev)));
  1807. X  }
  1808. X  
  1809. X  /*
  1810. X***************
  1811. X*** 1078,1087 ****
  1812. X  Can_rise_up(lev)
  1813. X  d_level *lev;
  1814. X  {
  1815. X!     return !In_endgame(lev) &&
  1816. X      (lev->dlevel > 1 ||
  1817. X       (dungeons[lev->dnum].entry_lev == 1 && ledger_no(lev) != 1 &&
  1818. X!       sstairs.sx && sstairs.up));
  1819. X  }
  1820. X  
  1821. X  /*
  1822. X--- 1081,1090 ----
  1823. X  Can_rise_up(lev)
  1824. X  d_level *lev;
  1825. X  {
  1826. X!     return((boolean)(!In_endgame(lev) &&
  1827. X      (lev->dlevel > 1 ||
  1828. X       (dungeons[lev->dnum].entry_lev == 1 && ledger_no(lev) != 1 &&
  1829. X!       sstairs.sx && sstairs.up))));
  1830. X  }
  1831. X  
  1832. X  /*
  1833. X***************
  1834. X*** 1151,1157 ****
  1835. X  In_quest(lev)    /* are you in the quest dungeon? */
  1836. X  d_level *lev;
  1837. X  {
  1838. X!     return(lev->dnum == quest_dnum);
  1839. X  }
  1840. X  #endif /* MULDGN */
  1841. X  
  1842. X--- 1154,1160 ----
  1843. X  In_quest(lev)    /* are you in the quest dungeon? */
  1844. X  d_level *lev;
  1845. X  {
  1846. X!     return((boolean)(lev->dnum == quest_dnum));
  1847. X  }
  1848. X  #endif /* MULDGN */
  1849. X  
  1850. X***************
  1851. X*** 1163,1169 ****
  1852. X  In_mines(lev)    /* are you in the mines dungeon? */
  1853. X  d_level    *lev;
  1854. X  {
  1855. X!     return(lev->dnum == mines_dnum);
  1856. X  }
  1857. X  
  1858. X  /*
  1859. X--- 1166,1172 ----
  1860. X  In_mines(lev)    /* are you in the mines dungeon? */
  1861. X  d_level    *lev;
  1862. X  {
  1863. X!     return((boolean)(lev->dnum == mines_dnum));
  1864. X  }
  1865. X  
  1866. X  /*
  1867. X***************
  1868. X*** 1207,1213 ****
  1869. X      branch *br;
  1870. X  
  1871. X      br = dungeon_branch(s);
  1872. X!     return on_level(&u.uz, &br->end1) ? TRUE : FALSE;
  1873. X  }
  1874. X  #endif /* MULDGN */
  1875. X  
  1876. X--- 1210,1216 ----
  1877. X      branch *br;
  1878. X  
  1879. X      br = dungeon_branch(s);
  1880. X!     return((boolean)(on_level(&u.uz, &br->end1) ? TRUE : FALSE));
  1881. X  }
  1882. X  #endif /* MULDGN */
  1883. X  
  1884. X***************
  1885. X*** 1215,1221 ****
  1886. X  In_tower(lev)    /* are you inside the tower? */
  1887. X  d_level    *lev;
  1888. X  {
  1889. X!     return(lev->dnum == tower_dnum);
  1890. X  }
  1891. X  
  1892. X  #endif /* OVL1 */
  1893. X--- 1218,1224 ----
  1894. X  In_tower(lev)    /* are you inside the tower? */
  1895. X  d_level    *lev;
  1896. X  {
  1897. X!     return((boolean)(lev->dnum == tower_dnum));
  1898. X  }
  1899. X  
  1900. X  #endif /* OVL1 */
  1901. X***************
  1902. X*** 1225,1231 ****
  1903. X  In_hell(lev)    /* are you in one of the Hell levels? */
  1904. X  d_level    *lev;
  1905. X  {
  1906. X!     return(dungeons[lev->dnum].flags.hellish);
  1907. X  }
  1908. X  
  1909. X  #endif /* OVL0 */
  1910. X--- 1228,1234 ----
  1911. X  In_hell(lev)    /* are you in one of the Hell levels? */
  1912. X  d_level    *lev;
  1913. X  {
  1914. X!     return((boolean)(dungeons[lev->dnum].flags.hellish));
  1915. X  }
  1916. X  
  1917. X  #endif /* OVL0 */
  1918. X***************
  1919. X*** 1291,1298 ****
  1920. X  Invocation_lev(lev)
  1921. X  d_level *lev;
  1922. X  {
  1923. X!     return(In_hell(lev) &&
  1924. X!         lev->dlevel == (dungeons[lev->dnum].num_dunlevs - 1));
  1925. X  }
  1926. X  
  1927. X  /* use instead of depth() wherever a degree of difficulty is made
  1928. X--- 1294,1301 ----
  1929. X  Invocation_lev(lev)
  1930. X  d_level *lev;
  1931. X  {
  1932. X!     return((boolean)(In_hell(lev) &&
  1933. X!         lev->dlevel == (dungeons[lev->dnum].num_dunlevs - 1)));
  1934. X  }
  1935. X  
  1936. X  /* use instead of depth() wherever a degree of difficulty is made
  1937. X***************
  1938. X*** 1302,1308 ****
  1939. X  level_difficulty()
  1940. X  {
  1941. X      if (In_endgame(&u.uz))
  1942. X!         return((xchar) depth(&sanctum_level) + u.ulevel/2);
  1943. X      else
  1944. X          if (u.uhave.amulet)
  1945. X              return(deepest_lev_reached(FALSE));
  1946. X--- 1305,1311 ----
  1947. X  level_difficulty()
  1948. X  {
  1949. X      if (In_endgame(&u.uz))
  1950. X!         return((xchar)(depth(&sanctum_level) + u.ulevel/2));
  1951. X      else
  1952. X          if (u.uhave.amulet)
  1953. X              return(deepest_lev_reached(FALSE));
  1954. X*** /tmp/da21010    Mon Jul 12 17:32:24 1993
  1955. X--- src/eat.c    Mon Jul 12 13:45:04 1993
  1956. X***************
  1957. X*** 103,109 ****
  1958. X          return TRUE;
  1959. X      if (u.umonnum == PM_GELATINOUS_CUBE && is_organic(obj))
  1960. X          return TRUE;
  1961. X!     return !!index(comestibles, obj->oclass);
  1962. X  }
  1963. X  # endif /* POLYSELF */
  1964. X  #endif /* OVL1 */
  1965. X--- 103,109 ----
  1966. X          return TRUE;
  1967. X      if (u.umonnum == PM_GELATINOUS_CUBE && is_organic(obj))
  1968. X          return TRUE;
  1969. X!     return((boolean)(!!index(comestibles, obj->oclass)));
  1970. X  }
  1971. X  # endif /* POLYSELF */
  1972. X  #endif /* OVL1 */
  1973. X***************
  1974. X*** 956,963 ****
  1975. X  
  1976. X  #ifdef POLYSELF
  1977. X      if (metallivorous(uasmon)) {
  1978. X!         You("bite right into the metal tin....");
  1979. X          tmp = 1;
  1980. X      } else
  1981. X  #endif
  1982. X      if (otmp->blessed) {
  1983. X--- 956,966 ----
  1984. X  
  1985. X  #ifdef POLYSELF
  1986. X      if (metallivorous(uasmon)) {
  1987. X!         You("bite right into the metal tin...");
  1988. X          tmp = 1;
  1989. X+     } else if (nolimbs(uasmon)) {
  1990. X+         You("cannot handle the tin properly to open it.");
  1991. X+         return;
  1992. X      } else
  1993. X  #endif
  1994. X      if (otmp->blessed) {
  1995. X***************
  1996. X*** 1718,1724 ****
  1997. X  boolean
  1998. X  is_fainted()
  1999. X  {
  2000. X!     return(u.uhs == FAINTED);
  2001. X  }
  2002. X  
  2003. X  void
  2004. X--- 1721,1727 ----
  2005. X  boolean
  2006. X  is_fainted()
  2007. X  {
  2008. X!     return((boolean)(u.uhs == FAINTED));
  2009. X  }
  2010. X  
  2011. X  void
  2012. X***************
  2013. X*** 1832,1840 ****
  2014. X   * in inventory.
  2015. X   */
  2016. X  struct obj *
  2017. X! floorfood(verb,corpseonly)    /* get food from floor or pack */
  2018. X      const char *verb;
  2019. X!     boolean corpseonly;
  2020. X  {
  2021. X      register struct obj *otmp;
  2022. X      char qbuf[QBUFSZ];
  2023. X--- 1835,1843 ----
  2024. X   * in inventory.
  2025. X   */
  2026. X  struct obj *
  2027. X! floorfood(verb,corpsecheck)    /* get food from floor or pack */
  2028. X      const char *verb;
  2029. X!     int corpsecheck; /* 0, no check, 1, corpses, 2, tinnable corpses */
  2030. X  {
  2031. X      register struct obj *otmp;
  2032. X      char qbuf[QBUFSZ];
  2033. X***************
  2034. X*** 1859,1865 ****
  2035. X      if (!(Levitation && !Is_airlevel(&u.uz)  && !Is_waterlevel(&u.uz))
  2036. X          && !u.uswallow) {
  2037. X          for(otmp = level.objects[u.ux][u.uy]; otmp; otmp = otmp->nexthere) {
  2038. X!         if(corpseonly ? otmp->otyp==CORPSE :
  2039. X  #ifdef POLYSELF
  2040. X              feeding ? (otmp->oclass != GOLD_CLASS && is_edible(otmp)) :
  2041. X  #endif
  2042. X--- 1862,1869 ----
  2043. X      if (!(Levitation && !Is_airlevel(&u.uz)  && !Is_waterlevel(&u.uz))
  2044. X          && !u.uswallow) {
  2045. X          for(otmp = level.objects[u.ux][u.uy]; otmp; otmp = otmp->nexthere) {
  2046. X!         if(corpsecheck ?
  2047. X!         (otmp->otyp==CORPSE && (corpsecheck == 1 || tinnable(otmp))) :
  2048. X  #ifdef POLYSELF
  2049. X              feeding ? (otmp->oclass != GOLD_CLASS && is_edible(otmp)) :
  2050. X  #endif
  2051. X*** /tmp/da21019    Mon Jul 12 17:32:28 1993
  2052. X--- src/end.c    Thu Jul  8 13:53:35 1993
  2053. X***************
  2054. X*** 1,4 ****
  2055. X! /*    SCCS Id: @(#)end.c    3.1    93/05/29    */
  2056. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  2057. X  /* NetHack may be freely redistributed.  See license for details. */
  2058. X  
  2059. X--- 1,4 ----
  2060. X! /*    SCCS Id: @(#)end.c    3.1    93/06/30    */
  2061. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  2062. X  /* NetHack may be freely redistributed.  See license for details. */
  2063. X  
  2064. X***************
  2065. X*** 18,23 ****
  2066. X--- 18,27 ----
  2067. X  static void NDECL(list_vanquished);
  2068. X  static void NDECL(list_genocided);
  2069. X  
  2070. X+ #ifdef AMIGA
  2071. X+ void NDECL(clear_icon);
  2072. X+ #endif
  2073. X+ 
  2074. X  /*
  2075. X   * The order of these needs to match the macros in hack.h.
  2076. X   */
  2077. X***************
  2078. X*** 382,387 ****
  2079. X--- 386,392 ----
  2080. X          return;
  2081. X      }
  2082. X  #endif
  2083. X+     if (how < PANICKED) u.umortality++;
  2084. X      if (Lifesaved && how <= GENOCIDED) {
  2085. X          pline("But wait...");
  2086. X          makeknown(AMULET_OF_LIFE_SAVING);
  2087. X***************
  2088. X*** 684,690 ****
  2089. X              for (obj = box->cobj; obj; obj = obj->nobj) {
  2090. X              if (identified) {
  2091. X                  makeknown(obj->otyp);
  2092. X!                 obj->known = obj->bknown = obj->dknown = 1;
  2093. X              }
  2094. X              putstr(tmpwin, 0, doname(obj));
  2095. X              }
  2096. X--- 689,696 ----
  2097. X              for (obj = box->cobj; obj; obj = obj->nobj) {
  2098. X              if (identified) {
  2099. X                  makeknown(obj->otyp);
  2100. X!                 obj->known = obj->bknown =
  2101. X!                 obj->dknown = obj->rknown = 1;
  2102. X              }
  2103. X              putstr(tmpwin, 0, doname(obj));
  2104. X              }
  2105. END_OF_FILE
  2106. if test 53393 -ne `wc -c <'patches03a'`; then
  2107.     echo shar: \"'patches03a'\" unpacked with wrong size!
  2108. fi
  2109. # end of 'patches03a'
  2110. if test -f 'sys/amiga/amifont8.uu' -a "${1}" != "-c" ; then 
  2111.   echo shar: Renaming existing file \"'sys/amiga/amifont8.uu'\" to \"'sys/amiga/amifont8.uu.orig'\"
  2112.   mv -f 'sys/amiga/amifont8.uu' 'sys/amiga/amifont8.uu.orig'
  2113. fi
  2114. echo shar: Extracting \"'sys/amiga/amifont8.uu'\" \(3490 characters\)
  2115. sed "s/^X//" >'sys/amiga/amifont8.uu' <<'END_OF_FILE'
  2116. Xbegin 644 8
  2117. XM```#\P`````````!``````````````)E```#Z0```F5P_TYU```````````,
  2118. XM`````!H/@``!``````````````````````````````````````````!&140`
  2119. XM```````````,`````!H`````"20`"`!```@`!@`!```@_P```&X`M```!@X`
  2120. XM```````````8;&P8`#@8##````````,\&#P\''X<?CP\```,`#`\?!C\//C^
  2121. XM_CQF?@[F\(+&./PX_#Q^9L/&P\/^/,`\$``8`.``#@`<`.`8!N`X````````
  2122. XM``@````````.&'!RS.?BY^?EY^?GY^?GY.?AY^?__\,8`&;GY^?GY^3GX>?G
  2123. XMYVH```!J:A@````8&!@``!@88L!6`%96```8`!@8`*@5P8.BP:@5YP/_[W_^
  2124. XM````P,```P`\;&P^QFP8&!AF&`````9F.&9F/&`P9F9F&!@8`!AFQCQF9FQF
  2125. XM9F9F&`9F8,;F;&9L9F9:9L/&9L/&,&`,.``8`&``!@`V`&```&`8````````
  2126. XM`!@````````8&!B<,Z6BH:&EI*2AI:6EI*2AI*3__\,8`&:DH:6EI:2DH:2D
  2127. XMI58```!65CP````8&!@``!@\96-J`&IJ```8`!@8UB/$`\`C+"O4A`/_]Y_Y
  2128. XM````P,```P`\`/Y@S&@P,`P\&`````QN&`8&;'Q@!F9F&!@P?@P&WCQFP&9@
  2129. XM8,!F&`9L8.[VQF;&9G`89F;&/&:,,#`,;``,/&P\-CPP.VPX!F889GP\W#WL
  2130. XM/CYF9F-C9GX8&!@`S.7BY^?GY^?AY^?GY^3GY^?_`.<8`,/GX>?GY^?DY^?G
  2131. XMY6K_#_!KZCP````8&!@``!AF8#97_];7`&8<`#@\;&I6)F1I/&F6YP./]]_[
  2132. XM#__PP,```P`8`&P\&'8`,`S_?@!^`!A^&!P<S`9\##P^``!@``8,WF9\P&9X
  2133. XM>,Y^&`9X8/[>QGS&?#@89F;6&#P8,!@,Q@``!G9F;F9X9G88!FP8=V9F9F9V
  2134. XM8!AF9FLV9DQP&`X`,Z6BI*&AH:6AI:&EI:2EI*3_`.<8_P`E(24A)24D)20D
  2135. XMI595/5Q55F;_#_`/\/\``-O#?AMJ5:JJ```?__C_JIPY:];X*]I;A`-F[\_S
  2136. XM.``<P&``!@`8`/X&,-P`,`P\&````#!V&#`&_@9F&&8&```P``P8WGYFP&9@
  2137. XM8,9F&&9L8M;.QF#&;`X89CS^/!@R,`P,````'F9@9GXP9F88!G@8:V9F9F9F
  2138. XM/!AF9FL<9A@8&!@`S.?BY^?AY^?AY^'EY^?GY^3_`.<8_P`G(2<A)2<G)R<D
  2139. XMIVJJ:JHZK&8`&!@``!@``,/;9NQ5JE95&``</#@`;&O6G#DK^#?LYP/Q[_//
  2140. XM8``&P#@`'````&Q\9LP`&!AF&!@`&&!F&&9F#&9F&&8,&!@8?A@`P,-F9FQF
  2141. XM8&9F&&9F9L;&;&!L9F889CSN9AAF,`8,````9F9F9F`P/&88!FP88V9F?#Y@
  2142. XM!AIF/#8V/#(8&!@`,P````````````````````#_`.<8`,,`````````````
  2143. XM`%;_5=8/\,,`&!@``!AS`&889C9KU^K_```8&!@`UB9D:E8\:;0M``/_W_O?
  2144. XMP``#P`__\``8`&P8QG8`##```!@`&,`\?GX\'CP\&#PX&!@,`#`8>,/\//C^
  2145. XM\#YF?CSF_L;&./`\XSP\/AC&PSS^/`,\````.SP\.SQXQN8\9N8\8V8\8`;P
  2146. XM?`P[ C&'X.&'``S`````````````````````#__\,8`&8`````````````
  2147. XM`&H`:VH``,,`&!@``!B<&#P89F-6:E8``&88&!@`K`/`(\0L(T&"``/_W_F?
  2148. XMP``#P````````````````````#```````````````````#``````````````
  2149. XM```````````````&`````````````````/X`````````?```/```````\`<`
  2150. XM````````<```````,P````````````````````#__\,8`&8`````````````
  2151. XM`%8`5E8`````&!@``!@``!@8`,!J5FH````8&!@``,&#J!7!HL&#``/_[_Y_
  2152. XMP``#P`````````@`"``(`!``"``8``@`(``(`"@`"``P``@`.``(`$``"`!(
  2153. XM``@`4``(`%@`"`!@``@`:``(`'``"`!X``@`@``(`(@`"`"0``@`F``(`*``
  2154. XM"`"H``@`L``(`+@`"`#```@`R``(`-``"`#8``@`X``(`.@`"`#P``@`^``(
  2155. XM`0``"`$(``@!$``(`1@`"`$@``@!*``(`3``"`$X``@!0``(`4@`"`%0``@!
  2156. XM6``(`6``"`%H``@!<``(`7@`"`&```@!B``(`9``"`&8``@!H``(`:@`"`&P
  2157. XM``@!N``(`<``"`'(``@!T``(`=@`"`'@``@!Z``(`?``"`'X``@"```(`@@`
  2158. XM"`(0``@"&``(`B``"`(H``@",``(`C@`"`)```@"2``(`E``"`)8``@"8``(
  2159. XM`F@`"`)P``@">``(`H``"`*(``@"D``(`I@`"`*@``@"J``(`K``"`*X``@"
  2160. XMP``(`L@`"`+0``@"V``(`N``"`+H``@"\``(`O@`"`,```@#"``(`Q``"`,8
  2161. XM``@#(``(`R@`"`,P``@#.``(`T``"`-(``@#4``(`U@`"`-@``@#:``(`W``
  2162. XM"`-X``@#@``(`X@`"`.0``@#F``(`Z``"`.H``@#L``(`[@`"`/```@#R``(
  2163. XM`]``"`/8``@#X``(`^@`"`/P``@#^``(!```"``(``@`$``(`!@`"``@``@`
  2164. XM*``(`#``"``X``@`0``(`$@`"`!0``@`6``(`&``"`!H``@`<``(`'@`"`"`
  2165. XM``@`B``(`)``"`"8``@`H``(`*@`"`"P``@`N``(`,``"`#(``@`T``(`-@`
  2166. XM"`#@``@`Z``(`/``"`#X``@$"``(!!``"`08``@$(``(!"@`"`0P``@#J``(
  2167. XM!#@`"`.8``@$0``(!$@`"`10``@$6``(!&``"`1H``@$<``(!'@`"`2```@$
  2168. XMB``(!)``"`28``@$H``(!*@`"`2P``@$N``(!,``"`3(``@!V``(`>``"`'H
  2169. XM``@!\``(`?@`"`(```@$T``(!-@`"`3@``@$Z``(!/``"`3X``@%```(!0@`
  2170. XM"`40``@%&``(!2``"`4H``@%,``(!3@`"`5```@%2``(!5``"`58``@%8``(
  2171. XM!6@`"`5P``@%>``(!8``"`6(``@%D``(!9@`"`+8``@"X``(`N@`"`+P``@"
  2172. XM^``(````"``````#[`````0`````````#@```$0```!<````8@````````/R
  2173. X`
  2174. Xend
  2175. END_OF_FILE
  2176. if test 3490 -ne `wc -c <'sys/amiga/amifont8.uu'`; then
  2177.     echo shar: \"'sys/amiga/amifont8.uu'\" unpacked with wrong size!
  2178. fi
  2179. # end of 'sys/amiga/amifont8.uu'
  2180. echo shar: End of archive 5 \(of 18\).
  2181. cp /dev/null ark5isdone
  2182. MISSING=""
  2183. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  2184.     if test ! -f ark${I}isdone ; then
  2185.     MISSING="${MISSING} ${I}"
  2186.     fi
  2187. done
  2188. if test "${MISSING}" = "" ; then
  2189.     echo You have unpacked all 18 archives.
  2190.     echo "Now execute ./patchit3.sh"
  2191.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2192. else
  2193.     echo You still need to unpack the following archives:
  2194.     echo "        " ${MISSING}
  2195. fi
  2196. ##  End of shell archive.
  2197. exit 0
  2198.