home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / patch2g < prev    next >
Encoding:
Internet Message Format  |  1993-06-15  |  61.9 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: v17i082:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch2g/33
  5. Date: 11 Jun 1993 00:07:56 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 2212
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <1v8ics$irk@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1770
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 17, Issue 82
  15. Archive-name: nethack31/Patch2g
  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 7 (of 33)."
  28. # Contents:  patches02b patchit.sh sys/amiga/colors.uu
  29. # Wrapped by billr@saab on Thu Jun 10 16:55:01 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'patches02b' -a "${1}" != "-c" ; then 
  32.   echo shar: Renaming existing file \"'patches02b'\" to \"'patches02b.orig'\"
  33.   mv -f 'patches02b' 'patches02b.orig'
  34. fi
  35. echo shar: Extracting \"'patches02b'\" \(55636 characters\)
  36. sed "s/^X//" >'patches02b' <<'END_OF_FILE'
  37. X*** /tmp/da10810    Tue Jun  1 16:12:41 1993
  38. X--- src/attrib.c    Tue Apr  6 15:58:07 1993
  39. X***************
  40. X*** 469,474 ****
  41. X--- 469,481 ----
  42. X      }
  43. X  }
  44. X  
  45. X+ /* next_check will otherwise have its initial 600L after a game restore */
  46. X+ void
  47. X+ reset_attribute_clock()
  48. X+ {
  49. X+     if (moves > 600L) next_check = moves + rn1(50,800);
  50. X+ }
  51. X+ 
  52. X  static const struct    clattr *
  53. X  clx()  {
  54. X  
  55. X***************
  56. X*** 677,683 ****
  57. X--- 684,694 ----
  58. X  
  59. X      if (x == A_STR) {
  60. X          if (uarmg && uarmg->otyp == GAUNTLETS_OF_POWER) return(125);
  61. X+ #ifdef WIN32_BUG
  62. X+         else return(x=((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
  63. X+ #else
  64. X          else return((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp);
  65. X+ #endif
  66. X      } 
  67. X  #ifdef POLYSELF
  68. X      else if(x == A_CHA) {
  69. X***************
  70. X*** 686,692 ****
  71. X--- 697,707 ----
  72. X              return 18;
  73. X      }
  74. X  #endif
  75. X+ #ifdef WIN32_BUG
  76. X+     return(x=((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
  77. X+ #else
  78. X      return((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp);
  79. X+ #endif
  80. X  }
  81. X  
  82. X  schar
  83. X*** /tmp/da10826    Tue Jun  1 16:12:47 1993
  84. X--- src/bones.c    Mon May 24 12:00:16 1993
  85. X***************
  86. X*** 1,4 ****
  87. X! /*    SCCS Id: @(#)bones.c    3.1    93/01/07    */
  88. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
  89. X  /* NetHack may be freely redistributed.  See license for details. */
  90. X  
  91. X--- 1,4 ----
  92. X! /*    SCCS Id: @(#)bones.c    3.1    93/05/22    */
  93. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
  94. X  /* NetHack may be freely redistributed.  See license for details. */
  95. X  
  96. X***************
  97. X*** 83,118 ****
  98. X              otmp->invlet = 0;
  99. X  #ifdef TUTTI_FRUTTI
  100. X              if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
  101. X  #endif
  102. X  #ifdef MAIL
  103. X              if (otmp->otyp == SCR_MAIL) otmp->spe = 1;
  104. X  #endif
  105. X  #ifdef POLYSELF
  106. X              if (otmp->otyp == EGG) otmp->spe = 0;
  107. X  #endif
  108. X!             if(otmp->otyp == AMULET_OF_YENDOR) {
  109. X!                 /* no longer the actual amulet */
  110. X!                 otmp->otyp = FAKE_AMULET_OF_YENDOR;
  111. X!                 curse(otmp);
  112. X!             }
  113. X!             if(otmp->otyp == CANDELABRUM_OF_INVOCATION) {
  114. X!                 if(otmp->spe > 0) { /* leave candles, if any */
  115. X!                     otmp->otyp = WAX_CANDLE;
  116. X!                 otmp->age = 50L;  /* assume used */
  117. X                  otmp->quan = (long)otmp->spe;
  118. X!                 otmp->lamplit = 0;
  119. X!                 otmp->spe = 0;
  120. X!                 } else obfree(otmp, (struct obj *)0);
  121. X!             }
  122. X!             if(otmp->otyp == BELL_OF_OPENING) otmp->otyp = BELL;
  123. X!             if(otmp->otyp == SPE_BOOK_OF_THE_DEAD) {
  124. X!                 otmp->otyp = SPE_MAGIC_MISSILE +
  125. X!                                 rn2(SPE_BLANK_PAPER -
  126. X!                           SPE_MAGIC_MISSILE + 1);
  127. X                  curse(otmp);
  128. X              }
  129. X          }
  130. X!     }            
  131. X  }
  132. X  
  133. X  static void
  134. X--- 83,129 ----
  135. X              otmp->invlet = 0;
  136. X  #ifdef TUTTI_FRUTTI
  137. X              if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
  138. X+             else
  139. X  #endif
  140. X  #ifdef MAIL
  141. X              if (otmp->otyp == SCR_MAIL) otmp->spe = 1;
  142. X+             else
  143. X  #endif
  144. X  #ifdef POLYSELF
  145. X              if (otmp->otyp == EGG) otmp->spe = 0;
  146. X+             else
  147. X  #endif
  148. X!             if (otmp->otyp == AMULET_OF_YENDOR) {
  149. X!                 /* no longer the real Amulet */
  150. X!                 otmp->otyp = FAKE_AMULET_OF_YENDOR;
  151. X!                 curse(otmp);
  152. X!             } else if (otmp->otyp == CANDELABRUM_OF_INVOCATION) {
  153. X!                 otmp->otyp = WAX_CANDLE;
  154. X!                 otmp->age = 50L;  /* assume used */
  155. X!                 if (otmp->spe > 0)
  156. X                  otmp->quan = (long)otmp->spe;
  157. X!                 otmp->lamplit = 0;
  158. X!                 otmp->spe = 0;
  159. X!                 otmp->owt = weight(otmp);
  160. X!             } else if (otmp->otyp == BELL_OF_OPENING) {
  161. X!                 otmp->otyp = BELL;
  162. X                  curse(otmp);
  163. X+             } else if (otmp->otyp == SPE_BOOK_OF_THE_DEAD) {
  164. X+                 otmp->otyp = SPE_BLANK_PAPER;
  165. X+                 curse(otmp);
  166. X+ #ifdef MULDGN
  167. X+             } else if (is_quest_artifact(otmp)) {
  168. X+                 /*
  169. X+                  * never leave our own quest artifact among the
  170. X+                  * bones; others (via wishing) might remain though
  171. X+                  */
  172. X+              /* artifact_unexist(otmp); */
  173. X+                 otmp->oartifact = 0;
  174. X+                 ONAME(otmp)[0] = '\0';
  175. X+ #endif
  176. X              }
  177. X          }
  178. X!     }
  179. X  }
  180. X  
  181. X  static void
  182. X***************
  183. X*** 172,182 ****
  184. X      }
  185. X  
  186. X      if(depth(&u.uz) <= 0 ||        /* bulletproofing for endgame */
  187. X!        !rn2(1 + (depth(&u.uz)>>2)) /* fewer ghosts on low levels */
  188. X  #ifdef WIZARD
  189. X          && !wizard
  190. X  #endif
  191. X!         ) return;
  192. X  #ifdef EXPLORE_MODE
  193. X      /* don't let multiple restarts generate multiple copies of objects
  194. X       * in bones files */
  195. X--- 183,193 ----
  196. X      }
  197. X  
  198. X      if(depth(&u.uz) <= 0 ||        /* bulletproofing for endgame */
  199. X!        (!rn2(1 + (depth(&u.uz)>>2)) /* fewer ghosts on low levels */
  200. X  #ifdef WIZARD
  201. X          && !wizard
  202. X  #endif
  203. X!         )) return;
  204. X  #ifdef EXPLORE_MODE
  205. X      /* don't let multiple restarts generate multiple copies of objects
  206. X       * in bones files */
  207. X***************
  208. X*** 269,274 ****
  209. X--- 280,286 ----
  210. X          ttmp->tseen = 0;
  211. X      }
  212. X      resetobjs(fobj,FALSE);
  213. X+     resetobjs(level.buriedobjlist, FALSE);
  214. X  
  215. X      /* Clear all memory from the level. */
  216. X      for(x=0; x<COLNO; x++) for(y=0; y<ROWNO; y++) {
  217. X***************
  218. X*** 369,374 ****
  219. X--- 381,387 ----
  220. X              for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
  221. X                  resetobjs(mtmp->minvent,TRUE);
  222. X              resetobjs(fobj,TRUE);
  223. X+             resetobjs(level.buriedobjlist,TRUE);
  224. X          }
  225. X      }
  226. X      (void) close(fd);
  227. X*** /tmp/da10834    Tue Jun  1 16:12:49 1993
  228. X--- src/botl.c    Tue May 11 16:41:43 1993
  229. X***************
  230. X*** 20,28 ****
  231. X  static void NDECL(bot2);
  232. X  #endif /* OVL0 */
  233. X  
  234. X! /* 100 suffices for bot(); must be larger than COLNO */
  235. X! #if COLNO <= 80
  236. X! #define MAXCO 100
  237. X  #else
  238. X  #define MAXCO (COLNO+20)
  239. X  #endif
  240. X--- 20,35 ----
  241. X  static void NDECL(bot2);
  242. X  #endif /* OVL0 */
  243. X  
  244. X! /* MAXCO must hold longest uncompressed status line, and must be larger
  245. X!  * than COLNO
  246. X!  *
  247. X!  * longest practical second status line at the moment is
  248. X!  *    Astral Plane $:12345 HP:700(700) Pw:111(111) AC:-127 Xp:30/123456789
  249. X!  *    T:123456 Satiated Conf Sick Blind Stun Hallu Overloaded
  250. X!  * -- or somewhat over 120 characters
  251. X!  */
  252. X! #if COLNO <= 130
  253. X! #define MAXCO 150
  254. X  #else
  255. X  #define MAXCO (COLNO+20)
  256. X  #endif
  257. X*** /tmp/da10842    Tue Jun  1 16:12:51 1993
  258. X--- src/cmd.c    Thu May  6 11:31:50 1993
  259. X***************
  260. X*** 1,4 ****
  261. X! /*    SCCS Id: @(#)cmd.c    3.1    93/02/16    */
  262. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  263. X  /* NetHack may be freely redistributed.  See license for details. */
  264. X  
  265. X--- 1,4 ----
  266. X! /*    SCCS Id: @(#)cmd.c    3.1    93/04/24    */
  267. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  268. X  /* NetHack may be freely redistributed.  See license for details. */
  269. X  
  270. X***************
  271. X*** 339,348 ****
  272. X  enter_explore_mode()
  273. X  {
  274. X      if(!discover && !wizard) {
  275. X!         pline("Beware!  From discovery mode there will be no return to normal game.");
  276. X!         if (yn("Do you want to enter discovery mode?") == 'y') {
  277. X              clear_nhwindow(WIN_MESSAGE);
  278. X!             You("are now in non-scoring discovery mode.");
  279. X              discover = TRUE;
  280. X          }
  281. X          else {
  282. X--- 339,348 ----
  283. X  enter_explore_mode()
  284. X  {
  285. X      if(!discover && !wizard) {
  286. X!         pline("Beware!  From explore mode there will be no return to normal game.");
  287. X!         if (yn("Do you want to enter explore mode?") == 'y') {
  288. X              clear_nhwindow(WIN_MESSAGE);
  289. X!             You("are now in non-scoring explore mode.");
  290. X              discover = TRUE;
  291. X          }
  292. X          else {
  293. X***************
  294. X*** 376,382 ****
  295. X      else {
  296. X          for (obj = invent; obj; obj = obj->nobj)
  297. X              if (!objects[obj->otyp].oc_name_known || !obj->known
  298. X!                         || !obj->dknown || !obj->bknown)
  299. X                  (void) identify(obj);
  300. X      }
  301. X      return 0;
  302. X--- 376,382 ----
  303. X      else {
  304. X          for (obj = invent; obj; obj = obj->nobj)
  305. X              if (!objects[obj->otyp].oc_name_known || !obj->known
  306. X!                 || !obj->dknown || !obj->bknown || !obj->rknown)
  307. X                  (void) identify(obj);
  308. X      }
  309. X      return 0;
  310. X***************
  311. X*** 459,464 ****
  312. X--- 459,475 ----
  313. X      putstr(en_win, 0, final ? "Final Attributes:" : "Current Attributes:");
  314. X      putstr(en_win, 0, "");
  315. X  
  316. X+ #ifdef ELBERETH
  317. X+     if (u.uevent.uhand_of_elbereth) {
  318. X+         static const char *hofe_titles[3] = {
  319. X+                 "the Hand of Elbereth",
  320. X+                 "the Envoy of Balance",
  321. X+                 "the Glory of Arioch"
  322. X+         };
  323. X+         you_are(hofe_titles[u.uevent.uhand_of_elbereth - 1]);
  324. X+     }
  325. X+ #endif
  326. X+ 
  327. X      /* note: piousness 20 matches MIN_QUEST_ALIGN (quest.h) */
  328. X      if (u.ualign.record >= 20)    you_are("piously aligned");
  329. X      else if (u.ualign.record > 13)    you_are("devoutly aligned");
  330. X***************
  331. X*** 487,493 ****
  332. X      if (Fast) you_are((Fast & ~INTRINSIC) ? "very fast" : "fast");
  333. X      if (Stealth) you_are("stealthy");
  334. X      if (Regeneration) enl_msg("You regenerate", "", "d", "");
  335. X!     if (Hunger) you_have("hunger");
  336. X      if (Conflict) enl_msg("You cause", "", "d", " conflict");
  337. X      if (Aggravate_monster) enl_msg("You aggravate", "", "d", " monsters");
  338. X      if (Poison_resistance) you_are("poison resistant");
  339. X--- 498,504 ----
  340. X      if (Fast) you_are((Fast & ~INTRINSIC) ? "very fast" : "fast");
  341. X      if (Stealth) you_are("stealthy");
  342. X      if (Regeneration) enl_msg("You regenerate", "", "d", "");
  343. X!     if (Hunger) enl_msg("You hunger", "", "ed", " rapidly");
  344. X      if (Conflict) enl_msg("You cause", "", "d", " conflict");
  345. X      if (Aggravate_monster) enl_msg("You aggravate", "", "d", " monsters");
  346. X      if (Poison_resistance) you_are("poison resistant");
  347. X***************
  348. X*** 528,537 ****
  349. X      if (Protection) you_are("protected");
  350. X      if (Reflecting) you_have("reflection");
  351. X      if (Levitation) you_are("levitating");
  352. X      if (Fumbling) enl_msg("You fumble", "", "d", "");
  353. X      if (Jumping) you_can("jump");
  354. X      if (Wwalking) you_can("walk on water");
  355. X!     if (Magical_breathing) you_can("survive without air");
  356. X      if (Antimagic) you_are("magic-protected");
  357. X      if (Displaced) you_are("displaced");
  358. X      if (Clairvoyant) you_are("clairvoyant");
  359. X--- 539,555 ----
  360. X      if (Protection) you_are("protected");
  361. X      if (Reflecting) you_have("reflection");
  362. X      if (Levitation) you_are("levitating");
  363. X+ #ifdef POLYSELF
  364. X+     else if (is_flyer(uasmon)) you_can("fly");
  365. X+ #endif
  366. X      if (Fumbling) enl_msg("You fumble", "", "d", "");
  367. X      if (Jumping) you_can("jump");
  368. X      if (Wwalking) you_can("walk on water");
  369. X! #ifdef POLYSELF
  370. X!     if (passes_walls(uasmon)) you_can("walk through walls");
  371. X! #endif
  372. X!     if (Breathless) you_can("survive without air");
  373. X!     else if (Amphibious) you_can("breathe water");
  374. X      if (Antimagic) you_are("magic-protected");
  375. X      if (Displaced) you_are("displaced");
  376. X      if (Clairvoyant) you_are("clairvoyant");
  377. X***************
  378. X*** 738,746 ****
  379. X      {"untrap", "untrap something", dountrap},
  380. X      {"version", "list compile time options for this version of NetHack",
  381. X          doextversion},
  382. X- #ifdef MAC
  383. X-     {"window", "clean up windows", SanePositions},
  384. X- #endif
  385. X      {"wipe", "wipe off your face", dowipe},
  386. X      {"?", "get this list of extended commands", doextlist},
  387. X      {NULL, NULL, donull}
  388. X--- 756,761 ----
  389. X*** /tmp/da10850    Tue Jun  1 16:12:54 1993
  390. X--- src/dbridge.c    Mon May 17 14:04:09 1993
  391. X***************
  392. X*** 1,5 ****
  393. X! /*    SCCS Id: @(#)dbridge.c    3.1    92/10/24    */
  394. X! /*    Copyright (c) 1989 by Jean-Christophe Collet */
  395. X  /* NetHack may be freely redistributed.  See license for details. */
  396. X  
  397. X  /*
  398. X--- 1,5 ----
  399. X! /*    SCCS Id: @(#)dbridge.c    3.1    93/05/15    */
  400. X! /*    Copyright (c) 1989 by Jean-Christophe Collet          */
  401. X  /* NetHack may be freely redistributed.  See license for details. */
  402. X  
  403. X  /*
  404. X***************
  405. X*** 18,28 ****
  406. X  static void FDECL(m_to_e, (struct monst *, XCHAR_P, XCHAR_P, struct entity *));
  407. X  static void FDECL(u_to_e, (struct entity *));
  408. X  static void FDECL(set_entity, (int, int, struct entity *));
  409. X! static char *FDECL(e_nam, (struct entity *));
  410. X  #ifdef D_DEBUG
  411. X! static char *FDECL(Enam, (struct entity *)); /* unused */
  412. X  #endif
  413. X! static char *FDECL(E_phrase, (struct entity *, const char *));
  414. X  static boolean FDECL(e_survives_at, (struct entity *, int, int));
  415. X  static void FDECL(e_died, (struct entity *, int, int));
  416. X  static boolean FDECL(automiss, (struct entity *));
  417. X--- 18,28 ----
  418. X  static void FDECL(m_to_e, (struct monst *, XCHAR_P, XCHAR_P, struct entity *));
  419. X  static void FDECL(u_to_e, (struct entity *));
  420. X  static void FDECL(set_entity, (int, int, struct entity *));
  421. X! static const char *FDECL(e_nam, (struct entity *));
  422. X  #ifdef D_DEBUG
  423. X! static const char *FDECL(Enam, (struct entity *)); /* unused */
  424. X  #endif
  425. X! static const char *FDECL(E_phrase, (struct entity *, const char *));
  426. X  static boolean FDECL(e_survives_at, (struct entity *, int, int));
  427. X  static void FDECL(e_died, (struct entity *, int, int));
  428. X  static boolean FDECL(automiss, (struct entity *));
  429. X***************
  430. X*** 297,303 ****
  431. X  
  432. X  /* #define e_strg(etmp, func) (is_u(etmp)? (char *)0 : func(etmp->emon)) */
  433. X  
  434. X! static char *
  435. X  e_nam(etmp)
  436. X  struct entity *etmp;
  437. X  {
  438. X--- 297,303 ----
  439. X  
  440. X  /* #define e_strg(etmp, func) (is_u(etmp)? (char *)0 : func(etmp->emon)) */
  441. X  
  442. X! static const char *
  443. X  e_nam(etmp)
  444. X  struct entity *etmp;
  445. X  {
  446. X***************
  447. X*** 309,315 ****
  448. X   * Enam is another unused utility routine:  E_phrase is preferable.
  449. X   */
  450. X  
  451. X! static char *
  452. X  Enam(etmp)
  453. X  struct entity *etmp;
  454. X  {
  455. X--- 309,315 ----
  456. X   * Enam is another unused utility routine:  E_phrase is preferable.
  457. X   */
  458. X  
  459. X! static const char *
  460. X  Enam(etmp)
  461. X  struct entity *etmp;
  462. X  {
  463. X***************
  464. X*** 322,328 ****
  465. X   * verb, where necessary.
  466. X   */
  467. X  
  468. X! static char *
  469. X  E_phrase(etmp, verb)
  470. X  struct entity *etmp;
  471. X  const char *verb;
  472. X--- 322,328 ----
  473. X   * verb, where necessary.
  474. X   */
  475. X  
  476. X! static const char *
  477. X  E_phrase(etmp, verb)
  478. X  struct entity *etmp;
  479. X  const char *verb;
  480. X***************
  481. X*** 379,385 ****
  482. X      if (noncorporeal(etmp->edata))
  483. X          return(TRUE);
  484. X      if (is_pool(x, y))
  485. X!         return((is_u(etmp) && (Wwalking || Magical_breathing || Levitation)) ||
  486. X                 is_swimmer(etmp->edata) || is_flyer(etmp->edata) ||
  487. X                 is_floater(etmp->edata));
  488. X      /* must force call to lava_effects in e_died if is_u */
  489. X--- 379,385 ----
  490. X      if (noncorporeal(etmp->edata))
  491. X          return(TRUE);
  492. X      if (is_pool(x, y))
  493. X!         return((is_u(etmp) && (Wwalking || Amphibious || Levitation)) ||
  494. X                 is_swimmer(etmp->edata) || is_flyer(etmp->edata) ||
  495. X                 is_floater(etmp->edata));
  496. X      /* must force call to lava_effects in e_died if is_u */
  497. X***************
  498. X*** 539,549 ****
  499. X                      (crm->typ == DRAWBRIDGE_UP))
  500. X                  Strcpy(edifice, "drawbridge");
  501. X              else
  502. X!                      if (at_portcullis) 
  503. X                      Strcpy(edifice, "portcullis");
  504. X              if (*edifice)
  505. X                  pline("The %s passes through %s!", edifice, 
  506. X!                             e_nam(etmp));            
  507. X          }
  508. X          return;
  509. X      }
  510. X--- 539,549 ----
  511. X                      (crm->typ == DRAWBRIDGE_UP))
  512. X                  Strcpy(edifice, "drawbridge");
  513. X              else
  514. X!                 if (at_portcullis) 
  515. X                      Strcpy(edifice, "portcullis");
  516. X              if (*edifice)
  517. X                  pline("The %s passes through %s!", edifice, 
  518. X!                       e_nam(etmp));
  519. X          }
  520. X          return;
  521. X      }
  522. X***************
  523. X*** 570,579 ****
  524. X      } else {
  525. X          if (crm->typ == DRAWBRIDGE_DOWN) {
  526. X              pline("%s crushed underneath the drawbridge.",
  527. X!                         E_phrase(etmp, "are"));             /* no jump */
  528. X              e_died(etmp, e_inview? 3 : 2, CRUSHING);/* no corpse */
  529. X              return;   /* Note: Beyond this point, we know we're  */
  530. X!         }                 /* not at an opened drawbridge, since all  */
  531. X          must_jump = TRUE; /* *missable* creatures survive on the     */
  532. X      }              /* square, and all the unmissed ones die.  */
  533. X      if (must_jump) {
  534. X--- 570,579 ----
  535. X      } else {
  536. X          if (crm->typ == DRAWBRIDGE_DOWN) {
  537. X              pline("%s crushed underneath the drawbridge.",
  538. X!                   E_phrase(etmp, "are"));          /* no jump */
  539. X              e_died(etmp, e_inview? 3 : 2, CRUSHING);/* no corpse */
  540. X              return;   /* Note: Beyond this point, we know we're  */
  541. X!         }          /* not at an opened drawbridge, since all  */
  542. X          must_jump = TRUE; /* *missable* creatures survive on the     */
  543. X      }              /* square, and all the unmissed ones die.  */
  544. X      if (must_jump) {
  545. X***************
  546. X*** 691,697 ****
  547. X                      pline("The drawbridge closes in...");
  548. X              } else
  549. X                  pline("%s behind the drawbridge.",
  550. X!                                   E_phrase(etmp, "disappear"));
  551. X          }
  552. X          if (!e_survives_at(etmp, etmp->ex, etmp->ey)) {
  553. X              killer_format = KILLED_BY_AN;
  554. X--- 691,697 ----
  555. X                      pline("The drawbridge closes in...");
  556. X              } else
  557. X                  pline("%s behind the drawbridge.",
  558. X!                       E_phrase(etmp, "disappear"));
  559. X          }
  560. X          if (!e_survives_at(etmp, etmp->ex, etmp->ey)) {
  561. X              killer_format = KILLED_BY_AN;
  562. X***************
  563. X*** 713,720 ****
  564. X              if (e_inview && !is_flyer(etmp->edata) &&
  565. X                  !is_floater(etmp->edata))
  566. X                  pline("%s from the bridge.",
  567. X!                                   E_phrase(etmp, "fall"));    
  568. X!             return;    
  569. X          }
  570. X  #ifdef D_DEBUG
  571. X          pline("%s cannot survive on the drawbridge square",Enam(etmp));
  572. X--- 713,720 ----
  573. X              if (e_inview && !is_flyer(etmp->edata) &&
  574. X                  !is_floater(etmp->edata))
  575. X                  pline("%s from the bridge.",
  576. X!                       E_phrase(etmp, "fall"));
  577. X!             return;
  578. X          }
  579. X  #ifdef D_DEBUG
  580. X          pline("%s cannot survive on the drawbridge square",Enam(etmp));
  581. X***************
  582. X*** 865,871 ****
  583. X          }
  584. X          lev1->typ = lava ? LAVAPOOL : MOAT;
  585. X          lev1->drawbridgemask = 0;
  586. X!         if(otmp = sobj_at(BOULDER,x,y)) {
  587. X              freeobj(otmp);
  588. X              (void) flooreffects(otmp,x,y,"fall");
  589. X          }
  590. X--- 865,871 ----
  591. X          }
  592. X          lev1->typ = lava ? LAVAPOOL : MOAT;
  593. X          lev1->drawbridgemask = 0;
  594. X!         if ((otmp = sobj_at(BOULDER,x,y)) != 0) {
  595. X              freeobj(otmp);
  596. X              (void) flooreffects(otmp,x,y,"fall");
  597. X          }
  598. X***************
  599. X*** 893,899 ****
  600. X          if (!automiss(etmp2)) {
  601. X              if (e_inview)
  602. X                  pline("%s blown apart by flying debris.",
  603. X!                             E_phrase(etmp2, "are"));
  604. X              killer_format = KILLED_BY_AN;
  605. X              killer = "exploding drawbridge";
  606. X              e_died(etmp2, e_inview? 3 : 2, CRUSHING); /*no corpse*/
  607. X--- 893,899 ----
  608. X          if (!automiss(etmp2)) {
  609. X              if (e_inview)
  610. X                  pline("%s blown apart by flying debris.",
  611. X!                       E_phrase(etmp2, "are"));
  612. X              killer_format = KILLED_BY_AN;
  613. X              killer = "exploding drawbridge";
  614. X              e_died(etmp2, e_inview? 3 : 2, CRUSHING); /*no corpse*/
  615. X*** /tmp/da10858    Tue Jun  1 16:12:57 1993
  616. X--- src/decl.c    Fri Mar 19 17:37:20 1993
  617. X***************
  618. X*** 1,4 ****
  619. X! /*    SCCS Id: @(#)decl.c    3.1    92/12/11    */
  620. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  621. X  /* NetHack may be freely redistributed.  See license for details. */
  622. X  
  623. X--- 1,4 ----
  624. X! /*    SCCS Id: @(#)decl.c    3.1    93/03/18    */
  625. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  626. X  /* NetHack may be freely redistributed.  See license for details. */
  627. X  
  628. X***************
  629. X*** 165,171 ****
  630. X      WHITE,        /* 2 - frost */
  631. X      HI_ZAP,        /* 3 - sleep */
  632. X      BLACK,        /* 4 - death */
  633. X!     HI_ZAP,        /* 5 - lightning */
  634. X      YELLOW,        /* 6 - poison gas */
  635. X      GREEN,        /* 7 - acid */
  636. X  };
  637. X--- 165,171 ----
  638. X      WHITE,        /* 2 - frost */
  639. X      HI_ZAP,        /* 3 - sleep */
  640. X      BLACK,        /* 4 - death */
  641. X!     WHITE,        /* 5 - lightning */
  642. X      YELLOW,        /* 6 - poison gas */
  643. X      GREEN,        /* 7 - acid */
  644. X  };
  645. X*** /tmp/da10866    Tue Jun  1 16:12:59 1993
  646. X--- src/detect.c    Fri Apr 23 12:21:05 1993
  647. X***************
  648. X*** 1,4 ****
  649. X! /*    SCCS Id: @(#)detect.c    3.1    92/12/16    */
  650. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  651. X  /* NetHack may be freely redistributed.  See license for details. */
  652. X  
  653. X--- 1,4 ----
  654. X! /*    SCCS Id: @(#)detect.c    3.1    93/03/30    */
  655. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  656. X  /* NetHack may be freely redistributed.  See license for details. */
  657. X  
  658. X***************
  659. X*** 30,39 ****
  660. X  
  661. X      if (obj->oclass == oclass) return obj;
  662. X  
  663. X!     if (Is_container(obj)) {
  664. X      for (otmp = obj->cobj; otmp; otmp = otmp->nobj)
  665. X          if (otmp->oclass == oclass) return otmp;
  666. X!         else if (Is_container(otmp) && (temp = o_in(otmp, oclass)))
  667. X          return temp;
  668. X      }
  669. X      return (struct obj *) 0;
  670. X--- 30,39 ----
  671. X  
  672. X      if (obj->oclass == oclass) return obj;
  673. X  
  674. X!     if (Has_contents(obj)) {
  675. X      for (otmp = obj->cobj; otmp; otmp = otmp->nobj)
  676. X          if (otmp->oclass == oclass) return otmp;
  677. X!         else if (Has_contents(otmp) && (temp = o_in(otmp, oclass)))
  678. X          return temp;
  679. X      }
  680. X      return (struct obj *) 0;
  681. X***************
  682. X*** 209,215 ****
  683. X      known = stale && !confused;
  684. X      if (stale) {
  685. X          docrt();
  686. X!         You("sense lack of %s nearby.", what);
  687. X      } else if (sobj)
  688. X          strange_feeling(sobj, "Your nose twitches.");
  689. X      return !stale;
  690. X--- 209,215 ----
  691. X      known = stale && !confused;
  692. X      if (stale) {
  693. X          docrt();
  694. X!         You("sense a lack of %s nearby.", what);
  695. X      } else if (sobj)
  696. X          strange_feeling(sobj, "Your nose twitches.");
  697. X      return !stale;
  698. X***************
  699. X*** 605,610 ****
  700. X--- 605,611 ----
  701. X          break;
  702. X      }
  703. X      obj->spe--;
  704. X+     check_unpaid(obj);
  705. X      return;
  706. X      }
  707. X  
  708. X***************
  709. X*** 628,633 ****
  710. X--- 629,635 ----
  711. X          break;
  712. X          }
  713. X          obj->spe--;
  714. X+         check_unpaid(obj);
  715. X      }
  716. X      return;
  717. X      }
  718. X***************
  719. X*** 650,655 ****
  720. X--- 652,658 ----
  721. X  
  722. X      makeknown(CRYSTAL_BALL);
  723. X      obj->spe--;
  724. X+     check_unpaid(obj);
  725. X  
  726. X      if ((class = def_char_to_objclass(ch)) != MAXOCLASSES)
  727. X          ret = object_detect((struct obj *)0, class);
  728. X***************
  729. X*** 807,813 ****
  730. X          if(levl[zx][zy].typ == SDOOR)
  731. X              levl[zx][zy].typ = DOOR;
  732. X          if(levl[zx][zy].doormask & D_TRAPPED) {
  733. X!             if(distu(zx, zy) < 3) b_trapped("door");
  734. X              else Norep("You %s an explosion!",
  735. X                  cansee(zx, zy) ? "see" :
  736. X                     (flags.soundok ? "hear" :
  737. X--- 810,816 ----
  738. X          if(levl[zx][zy].typ == SDOOR)
  739. X              levl[zx][zy].typ = DOOR;
  740. X          if(levl[zx][zy].doormask & D_TRAPPED) {
  741. X!             if(distu(zx, zy) < 3) b_trapped("door", 0);
  742. X              else Norep("You %s an explosion!",
  743. X                  cansee(zx, zy) ? "see" :
  744. X                     (flags.soundok ? "hear" :
  745. X*** /tmp/da10874    Tue Jun  1 16:13:01 1993
  746. X--- src/display.c    Tue Jun  1 12:12:43 1993
  747. X***************
  748. X*** 1,4 ****
  749. X! /*    SCCS Id: @(#)display.c    3.1    92/10/25    */
  750. X  /* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
  751. X  /* and Dave Cohrs, 1990.                      */
  752. X  /* NetHack may be freely redistributed.  See license for details. */
  753. X--- 1,4 ----
  754. X! /*    SCCS Id: @(#)display.c    3.1    93/05/15    */
  755. X  /* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
  756. X  /* and Dave Cohrs, 1990.                      */
  757. X  /* NetHack may be freely redistributed.  See license for details. */
  758. X***************
  759. X*** 250,257 ****
  760. X   *
  761. X   * Make whatever at this location show up.  This is only for non-living
  762. X   * things.  This will not handle feeling invisible objects correctly.
  763. X   */
  764. X! #define map_location(x,y,show)                        \
  765. X  {                                    \
  766. X      register struct obj   *obj;                        \
  767. X      register struct trap  *trap;                    \
  768. X--- 250,259 ----
  769. X   *
  770. X   * Make whatever at this location show up.  This is only for non-living
  771. X   * things.  This will not handle feeling invisible objects correctly.
  772. X+  *
  773. X+  * Internal to display.c, this is a #define for speed.
  774. X   */
  775. X! #define _map_location(x,y,show)                        \
  776. X  {                                    \
  777. X      register struct obj   *obj;                        \
  778. X      register struct trap  *trap;                    \
  779. X***************
  780. X*** 264,270 ****
  781. X--- 266,278 ----
  782. X      map_background(x,y,show);                    \
  783. X  }
  784. X  
  785. X+ void map_location(x,y,show)
  786. X+     int x, y, show;
  787. X+ {
  788. X+     _map_location(x,y,show);
  789. X+ }
  790. X  
  791. X+ 
  792. X  /*
  793. X   * display_monster()
  794. X   *
  795. X***************
  796. X*** 397,403 ****
  797. X      if (IS_ROCK(lev->typ) || (IS_DOOR(lev->typ) &&
  798. X                  (lev->doormask & (D_LOCKED | D_CLOSED)))) {
  799. X          map_background(x, y, 1);
  800. X!     } else if (boulder = sobj_at(BOULDER,x,y)) {
  801. X          map_object(boulder, 1);
  802. X      } else if (IS_DOOR(lev->typ)) {
  803. X          map_background(x, y, 1);
  804. X--- 405,411 ----
  805. X      if (IS_ROCK(lev->typ) || (IS_DOOR(lev->typ) &&
  806. X                  (lev->doormask & (D_LOCKED | D_CLOSED)))) {
  807. X          map_background(x, y, 1);
  808. X!     } else if ((boulder = sobj_at(BOULDER,x,y)) != 0) {
  809. X          map_object(boulder, 1);
  810. X      } else if (IS_DOOR(lev->typ)) {
  811. X          map_background(x, y, 1);
  812. X***************
  813. X*** 438,444 ****
  814. X          show_glyph(x, y, lev->glyph = cmap_to_glyph(S_corr));
  815. X      }
  816. X      } else {
  817. X!     map_location(x, y, 1);
  818. X  
  819. X      if (Punished) {
  820. X          /*
  821. X--- 446,452 ----
  822. X          show_glyph(x, y, lev->glyph = cmap_to_glyph(S_corr));
  823. X      }
  824. X      } else {
  825. X!     _map_location(x, y, 1);
  826. X  
  827. X      if (Punished) {
  828. X          /*
  829. X***************
  830. X*** 509,528 ****
  831. X  
  832. X      if (x == u.ux && y == u.uy) {
  833. X          if (canseeself()) {
  834. X!         map_location(x,y,0);    /* map *under* self */
  835. X          display_self();
  836. X          } else
  837. X          /* we can see what is there */
  838. X!         map_location(x,y,1);
  839. X      }
  840. X      else if ((mon = m_at(x,y)) &&
  841. X           ((see_it = mon_visible(mon)) || sensemon(mon))) {
  842. X!         map_location(x,y,0);     /* map under the monster */
  843. X              worm_tail = ((x != mon->mx)  || (y != mon->my));
  844. X          display_monster(x,y,mon,see_it,worm_tail);
  845. X      }
  846. X      else
  847. X!         map_location(x,y,1);    /* map the location */
  848. X      }
  849. X  
  850. X      /* Can't see the location. */
  851. X--- 517,536 ----
  852. X  
  853. X      if (x == u.ux && y == u.uy) {
  854. X          if (canseeself()) {
  855. X!         _map_location(x,y,0);    /* map *under* self */
  856. X          display_self();
  857. X          } else
  858. X          /* we can see what is there */
  859. X!         _map_location(x,y,1);
  860. X      }
  861. X      else if ((mon = m_at(x,y)) &&
  862. X           ((see_it = mon_visible(mon)) || sensemon(mon))) {
  863. X!         _map_location(x,y,0);     /* map under the monster */
  864. X              worm_tail = ((x != mon->mx)  || (y != mon->my));
  865. X          display_monster(x,y,mon,see_it,worm_tail);
  866. X      }
  867. X      else
  868. X!         _map_location(x,y,1);    /* map the location */
  869. X      }
  870. X  
  871. X      /* Can't see the location. */
  872. X*** /tmp/da10882    Tue Jun  1 16:13:04 1993
  873. X--- src/do.c    Tue May 11 13:46:35 1993
  874. X***************
  875. X*** 1,4 ****
  876. X! /*    SCCS Id: @(#)do.c    3.1    93/02/20    */
  877. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  878. X  /* NetHack may be freely redistributed.  See license for details. */
  879. X  
  880. X--- 1,4 ----
  881. X! /*    SCCS Id: @(#)do.c    3.1    93/03/30    */
  882. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  883. X  /* NetHack may be freely redistributed.  See license for details. */
  884. X  
  885. X***************
  886. X*** 85,91 ****
  887. X          } else
  888. X              levl[rx][ry].typ = ROOM;
  889. X  
  890. X!         delallobj(rx, ry);
  891. X          newsym(rx,ry);
  892. X          if (pushing) {
  893. X              You("push %s into the %s.", the(xname(otmp)), what);
  894. X--- 85,91 ----
  895. X          } else
  896. X              levl[rx][ry].typ = ROOM;
  897. X  
  898. X!         bury_objs(rx, ry);
  899. X          newsym(rx,ry);
  900. X          if (pushing) {
  901. X              You("push %s into the %s.", the(xname(otmp)), what);
  902. X***************
  903. X*** 153,159 ****
  904. X           (t->ttyp==PIT || t->ttyp==SPIKED_PIT || t->ttyp==TRAPDOOR)) {
  905. X          struct monst *mtmp;
  906. X  
  907. X!         delallobj(x, y);
  908. X          if(!Can_fall_thru(&u.uz) && t->ttyp == TRAPDOOR)
  909. X              return FALSE;
  910. X          if (((mtmp = m_at(x, y)) && mtmp->mtrapped) ||
  911. X--- 153,159 ----
  912. X           (t->ttyp==PIT || t->ttyp==SPIKED_PIT || t->ttyp==TRAPDOOR)) {
  913. X          struct monst *mtmp;
  914. X  
  915. X!         bury_objs(x, y);
  916. X          if(!Can_fall_thru(&u.uz) && t->ttyp == TRAPDOOR)
  917. X              return FALSE;
  918. X          if (((mtmp = m_at(x, y)) && mtmp->mtrapped) ||
  919. X***************
  920. X*** 165,173 ****
  921. X              if (mtmp) {
  922. X              if (!passes_walls(mtmp->data) && !throws_rocks(mtmp->data))
  923. X                  if (hmon(mtmp, obj, TRUE))
  924. X!                     return FALSE;      /* still alive */
  925. X                  else
  926. X!                     delallobj(x, y);  /* treasure, corpse */
  927. X              } else
  928. X  #ifdef POLYSELF
  929. X              if (!passes_walls(uasmon) && !throws_rocks(uasmon))
  930. X--- 165,173 ----
  931. X              if (mtmp) {
  932. X              if (!passes_walls(mtmp->data) && !throws_rocks(mtmp->data))
  933. X                  if (hmon(mtmp, obj, TRUE))
  934. X!                     return FALSE;    /* still alive */
  935. X                  else
  936. X!                     bury_objs(x, y);    /* treasure, corpse */
  937. X              } else
  938. X  #ifdef POLYSELF
  939. X              if (!passes_walls(uasmon) && !throws_rocks(uasmon))
  940. X***************
  941. X*** 470,486 ****
  942. X      if (!u.uswallow && flooreffects(obj,u.ux,u.uy,"drop")) return;
  943. X      if(obj->otyp == CRYSKNIFE)
  944. X          obj->otyp = WORM_TOOTH;
  945. X      /* uswallow check done by GAN 01/29/87 */
  946. X      if(u.uswallow) {
  947. X!         if (obj->otyp == GOLD_PIECE) {
  948. X!             u.ustuck->mgold += obj->quan;
  949. X!             delobj(obj);
  950. X!         } else if (obj != uball) {    /* mon doesn't pick up ball */
  951. X!             (void) snuff_candle(obj);   /* security. it's never lit */
  952. X              mpickobj(u.ustuck,obj);
  953. X          }
  954. X      } else  {
  955. X-         (void) snuff_candle(obj);
  956. X          obj->nobj = fobj;
  957. X          fobj = obj;
  958. X          place_object(obj, u.ux, u.uy);
  959. X--- 470,482 ----
  960. X      if (!u.uswallow && flooreffects(obj,u.ux,u.uy,"drop")) return;
  961. X      if(obj->otyp == CRYSKNIFE)
  962. X          obj->otyp = WORM_TOOTH;
  963. X+     (void) snuff_candle(obj);
  964. X      /* uswallow check done by GAN 01/29/87 */
  965. X      if(u.uswallow) {
  966. X!         if (obj != uball) {        /* mon doesn't pick up ball */
  967. X              mpickobj(u.ustuck,obj);
  968. X          }
  969. X      } else  {
  970. X          obj->nobj = fobj;
  971. X          fobj = obj;
  972. X          place_object(obj, u.ux, u.uy);
  973. X***************
  974. X*** 790,798 ****
  975. X              pline("Probably someone removed it.");
  976. X              done(TRICKED);
  977. X          }
  978. X! #ifdef ZEROCOMP
  979. X!         minit();
  980. X! #endif
  981. X          getlev(fd, hackpid, ledger_no(&u.uz), FALSE);
  982. X          (void) close(fd);
  983. X      }
  984. X--- 786,792 ----
  985. X              pline("Probably someone removed it.");
  986. X              done(TRICKED);
  987. X          }
  988. X!         minit();    /* ZEROCOMP */
  989. X          getlev(fd, hackpid, ledger_no(&u.uz), FALSE);
  990. X          (void) close(fd);
  991. X      }
  992. X***************
  993. X*** 929,938 ****
  994. X      if (newdungeon && In_tower(&u.uz))
  995. X          pline("The heat and smoke are gone.");
  996. X  #ifdef MULDGN
  997. X!     if(!In_quest(&u.uz0) && at_dgn_entrance("The Quest") &&
  998. X!         !(u.uevent.qexpelled || u.uevent.qcompleted || leaderless()))
  999. X!         com_pager(2);    /* the message from the leader */
  1000. X  
  1001. X      if(Is_knox(&u.uz)) {
  1002. X          register struct monst *mtmp;
  1003. X  
  1004. X--- 923,940 ----
  1005. X      if (newdungeon && In_tower(&u.uz))
  1006. X          pline("The heat and smoke are gone.");
  1007. X  #ifdef MULDGN
  1008. X!     /* the message from your quest leader */
  1009. X!     if (!In_quest(&u.uz0) && at_dgn_entrance("The Quest") &&
  1010. X!         !(u.uevent.qexpelled || u.uevent.qcompleted || leaderless())) {
  1011. X  
  1012. X+         if (u.uevent.qcalled) {
  1013. X+             com_pager(3);
  1014. X+         } else {
  1015. X+             com_pager(2);
  1016. X+             u.uevent.qcalled = TRUE;
  1017. X+         }
  1018. X+     }
  1019. X+ 
  1020. X      if(Is_knox(&u.uz)) {
  1021. X          register struct monst *mtmp;
  1022. X  
  1023. X***************
  1024. X*** 1007,1016 ****
  1025. X      save_currentstate();
  1026. X  #endif
  1027. X  
  1028. X!     if(!flags.nopick && OBJ_AT(u.ux, u.uy) &&
  1029. X!        (!is_pool(u.ux,u.uy) || Underwater))
  1030. X!         pickup(1);
  1031. X!     else read_engr_at(u.ux,u.uy);
  1032. X  }
  1033. X  
  1034. X  /* handle something like portal ejection */
  1035. X--- 1009,1015 ----
  1036. X      save_currentstate();
  1037. X  #endif
  1038. X  
  1039. X!     pickup(1);
  1040. X  }
  1041. X  
  1042. X  /* handle something like portal ejection */
  1043. X***************
  1044. X*** 1078,1083 ****
  1045. X--- 1077,1083 ----
  1046. X      register long corpse_age;
  1047. X      boolean ininv = (*chain == invent);
  1048. X      boolean onfloor = (*chain == fobj);
  1049. X+     boolean buried = (*chain == level.buriedobjlist);
  1050. X  
  1051. X      for (obj = *chain; obj; obj = nobj) {
  1052. X      nobj = obj->nobj;
  1053. X***************
  1054. X*** 1088,1096 ****
  1055. X          rn2(3) && is_ice(obj->ox, obj->oy)) obj->age++;
  1056. X          corpse_age = monstermoves - obj->age;
  1057. X  
  1058. X!         if (is_rider(&mons[obj->corpsenm]) && corpse_age >= 12) {
  1059. X          /* these always come back eventually */
  1060. X!         /* riders can't be picked up, so no need to check onfloor */
  1061. X          revive_corpse(obj, 3, FALSE);
  1062. X          } else if (mons[obj->corpsenm].mlet == S_TROLL && !obj->oldcorpse
  1063. X                 && !(mons[obj->corpsenm].geno & (G_GENOD | G_EXTINCT))
  1064. X--- 1088,1098 ----
  1065. X          rn2(3) && is_ice(obj->ox, obj->oy)) obj->age++;
  1066. X          corpse_age = monstermoves - obj->age;
  1067. X  
  1068. X!         if (is_rider(&mons[obj->corpsenm]) && corpse_age >= 12 && onfloor) {
  1069. X          /* these always come back eventually */
  1070. X!         /* riders can't be picked up, but can be buried, but
  1071. X!          * the astral level seems to rule out that possibility
  1072. X!          */
  1073. X          revive_corpse(obj, 3, FALSE);
  1074. X          } else if (mons[obj->corpsenm].mlet == S_TROLL && !obj->oldcorpse
  1075. X                 && !(mons[obj->corpsenm].geno & (G_GENOD | G_EXTINCT))
  1076. X***************
  1077. X*** 1113,1118 ****
  1078. X--- 1115,1122 ----
  1079. X              useup(obj);
  1080. X          else if(onfloor)
  1081. X              delobj(obj);
  1082. X+         else if(buried)
  1083. X+             delburiedobj(obj);
  1084. X          else { /* in a container */
  1085. X              if(pobj) pobj->nobj = nobj;
  1086. X              else *chain = nobj;
  1087. X***************
  1088. X*** 1120,1127 ****
  1089. X              obj = 0;
  1090. X          }
  1091. X          }
  1092. X!     } else if(obj->cobj && Is_container(obj) && obj->otyp != ICE_BOX)
  1093. X          remove_cadavers(&obj->cobj);
  1094. X      /* pobj is only used for containers, which don't allow revive() -dlc */
  1095. X      /* and for monster inventory (special cases only) under MUSE */
  1096. X      if (obj) pobj = obj;
  1097. X--- 1124,1132 ----
  1098. X              obj = 0;
  1099. X          }
  1100. X          }
  1101. X!     } else if (Has_contents(obj) && obj->otyp != ICE_BOX) {
  1102. X          remove_cadavers(&obj->cobj);
  1103. X+     }
  1104. X      /* pobj is only used for containers, which don't allow revive() -dlc */
  1105. X      /* and for monster inventory (special cases only) under MUSE */
  1106. X      if (obj) pobj = obj;
  1107. X***************
  1108. X*** 1129,1135 ****
  1109. X  }
  1110. X  
  1111. X  int
  1112. X! donull() {
  1113. X      return(1);    /* Do nothing, but let other things happen */
  1114. X  }
  1115. X  
  1116. X--- 1134,1141 ----
  1117. X  }
  1118. X  
  1119. X  int
  1120. X! donull()
  1121. X! {
  1122. X      return(1);    /* Do nothing, but let other things happen */
  1123. X  }
  1124. X  
  1125. X***************
  1126. X*** 1137,1143 ****
  1127. X  #ifdef OVLB
  1128. X  
  1129. X  STATIC_PTR int
  1130. X! wipeoff() {
  1131. X      if(u.ucreamed < 4)    u.ucreamed = 0;
  1132. X      else            u.ucreamed -= 4;
  1133. X      if (Blinded < 4)    Blinded = 0;
  1134. X--- 1143,1150 ----
  1135. X  #ifdef OVLB
  1136. X  
  1137. X  STATIC_PTR int
  1138. X! wipeoff()
  1139. X! {
  1140. X      if(u.ucreamed < 4)    u.ucreamed = 0;
  1141. X      else            u.ucreamed -= 4;
  1142. X      if (Blinded < 4)    Blinded = 0;
  1143. X*** /tmp/da10890    Tue Jun  1 16:13:07 1993
  1144. X--- src/do_name.c    Mon May 17 14:04:22 1993
  1145. X***************
  1146. X*** 1,4 ****
  1147. X! /*    SCCS Id: @(#)do_name.c    3.1    93/02/22    */
  1148. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1149. X  /* NetHack may be freely redistributed.  See license for details. */
  1150. X  
  1151. X--- 1,4 ----
  1152. X! /*    SCCS Id: @(#)do_name.c    3.1    93/05/15    */
  1153. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1154. X  /* NetHack may be freely redistributed.  See license for details. */
  1155. X  
  1156. X***************
  1157. X*** 581,587 ****
  1158. X      return(bp);
  1159. X  }
  1160. X  
  1161. X! static NEARDATA const char *bogusmons[] = {
  1162. X      "jumbo shrimp", "giant pigmy", "gnu", "killer penguin", 
  1163. X      "giant cockroach", "giant slug", "maggot", "pterodactyl",
  1164. X      "tyrannosaurus rex", "basilisk", "beholder", "nightmare",
  1165. X--- 581,587 ----
  1166. X      return(bp);
  1167. X  }
  1168. X  
  1169. X! static const char *bogusmons[] = {
  1170. X      "jumbo shrimp", "giant pigmy", "gnu", "killer penguin", 
  1171. X      "giant cockroach", "giant slug", "maggot", "pterodactyl",
  1172. X      "tyrannosaurus rex", "basilisk", "beholder", "nightmare",
  1173. X***************
  1174. X*** 623,630 ****
  1175. X      "samurai rabbit",            /* Usagi Yojimbo */
  1176. X      "aardvark",                /* Cerebus */
  1177. X      "Audrey II",                /* Little Shop of Horrors */
  1178. X!     "witch doctor", "one-eyed one-horned flying purple people eater"
  1179. X                          /* 50's rock 'n' roll */
  1180. X  };
  1181. X  
  1182. X  const char *
  1183. X--- 623,631 ----
  1184. X      "samurai rabbit",            /* Usagi Yojimbo */
  1185. X      "aardvark",                /* Cerebus */
  1186. X      "Audrey II",                /* Little Shop of Horrors */
  1187. X!     "witch doctor", "one-eyed one-horned flying purple people eater",
  1188. X                          /* 50's rock 'n' roll */
  1189. X+     "Barney the dinosaur"            /* saccharine kiddy TV */
  1190. X  };
  1191. X  
  1192. X  const char *
  1193. X***************
  1194. X*** 692,702 ****
  1195. X  {
  1196. X      char *i, *opts;
  1197. X  
  1198. X!     if(opts = getenv("ROGUEOPTS")) {
  1199. X!         for(i=opts; *i; i++)
  1200. X              if (!strncmp("name=",i,5)) {
  1201. X                  char *j;
  1202. X!                 if (j=index(i+5,','))
  1203. X                      *j = (char)0;
  1204. X                  return i+5;
  1205. X              }
  1206. X--- 693,703 ----
  1207. X  {
  1208. X      char *i, *opts;
  1209. X  
  1210. X!     if ((opts = getenv("ROGUEOPTS")) != 0) {
  1211. X!         for (i = opts; *i; i++)
  1212. X              if (!strncmp("name=",i,5)) {
  1213. X                  char *j;
  1214. X!                 if ((j = index(i+5,',')) != 0)
  1215. X                      *j = (char)0;
  1216. X                  return i+5;
  1217. X              }
  1218. X*** /tmp/da10898    Tue Jun  1 16:13:10 1993
  1219. X--- src/do_wear.c    Wed May 26 11:55:34 1993
  1220. X***************
  1221. X*** 1,4 ****
  1222. X! /*    SCCS Id: @(#)do_wear.c    3.1    92/12/13    */
  1223. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1224. X  /* NetHack may be freely redistributed.  See license for details. */
  1225. X  
  1226. X--- 1,4 ----
  1227. X! /*    SCCS Id: @(#)do_wear.c    3.1    93/05/25    */
  1228. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1229. X  /* NetHack may be freely redistributed.  See license for details. */
  1230. X  
  1231. X***************
  1232. X*** 40,46 ****
  1233. X  static void FDECL(already_wearing, (const char*));
  1234. X  
  1235. X  void
  1236. X! off_msg(otmp) register struct obj *otmp; {
  1237. X      if(flags.verbose)
  1238. X          You("were wearing %s.", doname(otmp));
  1239. X  }
  1240. X--- 40,48 ----
  1241. X  static void FDECL(already_wearing, (const char*));
  1242. X  
  1243. X  void
  1244. X! off_msg(otmp)
  1245. X! register struct obj *otmp;
  1246. X! {
  1247. X      if(flags.verbose)
  1248. X          You("were wearing %s.", doname(otmp));
  1249. X  }
  1250. X***************
  1251. X*** 59,71 ****
  1252. X  #ifdef OVL2
  1253. X  
  1254. X  boolean
  1255. X! is_boots(otmp) register struct obj *otmp; {
  1256. X      return(otmp->otyp >= LOW_BOOTS &&
  1257. X          otmp->otyp <= LEVITATION_BOOTS);
  1258. X  }
  1259. X  
  1260. X  boolean
  1261. X! is_helmet(otmp) register struct obj *otmp; {
  1262. X      return(otmp->otyp >= ELVEN_LEATHER_HELM &&
  1263. X          otmp->otyp <= HELM_OF_TELEPATHY);
  1264. X  }
  1265. X--- 61,77 ----
  1266. X  #ifdef OVL2
  1267. X  
  1268. X  boolean
  1269. X! is_boots(otmp)
  1270. X! register struct obj *otmp;
  1271. X! {
  1272. X      return(otmp->otyp >= LOW_BOOTS &&
  1273. X          otmp->otyp <= LEVITATION_BOOTS);
  1274. X  }
  1275. X  
  1276. X  boolean
  1277. X! is_helmet(otmp)
  1278. X! register struct obj *otmp;
  1279. X! {
  1280. X      return(otmp->otyp >= ELVEN_LEATHER_HELM &&
  1281. X          otmp->otyp <= HELM_OF_TELEPATHY);
  1282. X  }
  1283. X***************
  1284. X*** 74,80 ****
  1285. X  #ifdef OVL2
  1286. X  
  1287. X  boolean
  1288. X! is_gloves(otmp) register struct obj *otmp; {
  1289. X      return(otmp->otyp >= LEATHER_GLOVES &&
  1290. X          otmp->otyp <= GAUNTLETS_OF_DEXTERITY);
  1291. X  }
  1292. X--- 80,88 ----
  1293. X  #ifdef OVL2
  1294. X  
  1295. X  boolean
  1296. X! is_gloves(otmp)
  1297. X! register struct obj *otmp;
  1298. X! {
  1299. X      return(otmp->otyp >= LEATHER_GLOVES &&
  1300. X          otmp->otyp <= GAUNTLETS_OF_DEXTERITY);
  1301. X  }
  1302. X***************
  1303. X*** 83,95 ****
  1304. X  #ifdef OVLB
  1305. X  
  1306. X  boolean
  1307. X! is_cloak(otmp) register struct obj *otmp; {
  1308. X      return(otmp->otyp >= MUMMY_WRAPPING &&
  1309. X          otmp->otyp <= CLOAK_OF_DISPLACEMENT);
  1310. X  }
  1311. X  
  1312. X  boolean
  1313. X! is_shield(otmp) register struct obj *otmp; {
  1314. X      return(otmp->otyp >= SMALL_SHIELD &&
  1315. X          otmp->otyp <= SHIELD_OF_REFLECTION);
  1316. X  }
  1317. X--- 91,107 ----
  1318. X  #ifdef OVLB
  1319. X  
  1320. X  boolean
  1321. X! is_cloak(otmp)
  1322. X! register struct obj *otmp;
  1323. X! {
  1324. X      return(otmp->otyp >= MUMMY_WRAPPING &&
  1325. X          otmp->otyp <= CLOAK_OF_DISPLACEMENT);
  1326. X  }
  1327. X  
  1328. X  boolean
  1329. X! is_shield(otmp)
  1330. X! register struct obj *otmp;
  1331. X! {
  1332. X      return(otmp->otyp >= SMALL_SHIELD &&
  1333. X          otmp->otyp <= SHIELD_OF_REFLECTION);
  1334. X  }
  1335. X***************
  1336. X*** 101,107 ****
  1337. X  
  1338. X  STATIC_PTR
  1339. X  int
  1340. X! Boots_on() {
  1341. X      long oldprop = u.uprops[objects[uarmf->otyp].oc_oprop].p_flgs & ~WORN_BOOTS;
  1342. X  
  1343. X      switch(uarmf->otyp) {
  1344. X--- 113,120 ----
  1345. X  
  1346. X  STATIC_PTR
  1347. X  int
  1348. X! Boots_on()
  1349. X! {
  1350. X      long oldprop = u.uprops[objects[uarmf->otyp].oc_oprop].p_flgs & ~WORN_BOOTS;
  1351. X  
  1352. X      switch(uarmf->otyp) {
  1353. X***************
  1354. X*** 144,150 ****
  1355. X  }
  1356. X  
  1357. X  int
  1358. X! Boots_off() {
  1359. X      register struct obj *obj = uarmf;
  1360. X      /* For levitation, float_down() returns if Levitation, so we
  1361. X       * must do a setworn() _before_ the levitation case.
  1362. X--- 157,164 ----
  1363. X  }
  1364. X  
  1365. X  int
  1366. X! Boots_off()
  1367. X! {
  1368. X      register struct obj *obj = uarmf;
  1369. X      /* For levitation, float_down() returns if Levitation, so we
  1370. X       * must do a setworn() _before_ the levitation case.
  1371. X***************
  1372. X*** 198,204 ****
  1373. X  }
  1374. X  
  1375. X  static int
  1376. X! Cloak_on() {
  1377. X      long oldprop = u.uprops[objects[uarmc->otyp].oc_oprop].p_flgs & ~WORN_CLOAK;
  1378. X  
  1379. X      switch(uarmc->otyp) {
  1380. X--- 212,219 ----
  1381. X  }
  1382. X  
  1383. X  static int
  1384. X! Cloak_on()
  1385. X! {
  1386. X      long oldprop = u.uprops[objects[uarmc->otyp].oc_oprop].p_flgs & ~WORN_CLOAK;
  1387. X  
  1388. X      switch(uarmc->otyp) {
  1389. X***************
  1390. X*** 228,234 ****
  1391. X  }
  1392. X  
  1393. X  int
  1394. X! Cloak_off() {
  1395. X      long oldprop = u.uprops[objects[uarmc->otyp].oc_oprop].p_flgs & ~WORN_CLOAK;
  1396. X  
  1397. X      switch(uarmc->otyp) {
  1398. X--- 243,250 ----
  1399. X  }
  1400. X  
  1401. X  int
  1402. X! Cloak_off()
  1403. X! {
  1404. X      long oldprop = u.uprops[objects[uarmc->otyp].oc_oprop].p_flgs & ~WORN_CLOAK;
  1405. X  
  1406. X      switch(uarmc->otyp) {
  1407. X***************
  1408. X*** 324,330 ****
  1409. X  
  1410. X  STATIC_PTR
  1411. X  int
  1412. X! Gloves_on() {
  1413. X      long oldprop =
  1414. X      u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
  1415. X  
  1416. X--- 340,347 ----
  1417. X  
  1418. X  STATIC_PTR
  1419. X  int
  1420. X! Gloves_on()
  1421. X! {
  1422. X      long oldprop =
  1423. X      u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
  1424. X  
  1425. X***************
  1426. X*** 350,356 ****
  1427. X  }
  1428. X  
  1429. X  int
  1430. X! Gloves_off() {
  1431. X      long oldprop =
  1432. X      u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
  1433. X  
  1434. X--- 367,374 ----
  1435. X  }
  1436. X  
  1437. X  int
  1438. X! Gloves_off()
  1439. X! {
  1440. X      long oldprop =
  1441. X      u.uprops[objects[uarmg->otyp].oc_oprop].p_flgs & ~(WORN_GLOVES | TIMEOUT);
  1442. X  
  1443. X***************
  1444. X*** 391,397 ****
  1445. X  
  1446. X  /*
  1447. X  static int
  1448. X! Shield_on() {
  1449. X      switch(uarms->otyp) {
  1450. X      case SMALL_SHIELD:
  1451. X      case ELVEN_SHIELD:
  1452. X--- 409,416 ----
  1453. X  
  1454. X  /*
  1455. X  static int
  1456. X! Shield_on()
  1457. X! {
  1458. X      switch(uarms->otyp) {
  1459. X      case SMALL_SHIELD:
  1460. X      case ELVEN_SHIELD:
  1461. X***************
  1462. X*** 408,414 ****
  1463. X  */
  1464. X  
  1465. X  int
  1466. X! Shield_off() {
  1467. X  /*
  1468. X      switch(uarms->otyp) {
  1469. X      case SMALL_SHIELD:
  1470. X--- 427,434 ----
  1471. X  */
  1472. X  
  1473. X  int
  1474. X! Shield_off()
  1475. X! {
  1476. X  /*
  1477. X      switch(uarms->otyp) {
  1478. X      case SMALL_SHIELD:
  1479. X***************
  1480. X*** 504,512 ****
  1481. X          break;
  1482. X      case AMULET_OF_MAGICAL_BREATHING:
  1483. X          if (Underwater) {
  1484. X              You("suddenly inhale an unhealthy amount of water!");
  1485. X!             /* Magical_breathing has to be set
  1486. X!                off before calling drown() */
  1487. X              setworn((struct obj *)0, W_AMUL);
  1488. X              (void) drown();
  1489. X              return;
  1490. X--- 524,536 ----
  1491. X          break;
  1492. X      case AMULET_OF_MAGICAL_BREATHING:
  1493. X          if (Underwater) {
  1494. X+ #ifdef POLYSELF
  1495. X+             if (!breathless(uasmon) && !amphibious(uasmon)
  1496. X+                 && !is_swimmer(uasmon))
  1497. X+ #endif
  1498. X              You("suddenly inhale an unhealthy amount of water!");
  1499. X!             /* HMagical_breathing must be set off
  1500. X!                before calling drown() */
  1501. X              setworn((struct obj *)0, W_AMUL);
  1502. X              (void) drown();
  1503. X              return;
  1504. X***************
  1505. X*** 743,749 ****
  1506. X  
  1507. X  /* called in main to set intrinsics of worn start-up items */
  1508. X  void
  1509. X! set_wear() {
  1510. X      if (uarm)  (void) Armor_on();
  1511. X      if (uarmc) (void) Cloak_on();
  1512. X      if (uarmf) (void) Boots_on();
  1513. X--- 767,774 ----
  1514. X  
  1515. X  /* called in main to set intrinsics of worn start-up items */
  1516. X  void
  1517. X! set_wear()
  1518. X! {
  1519. X      if (uarm)  (void) Armor_on();
  1520. X      if (uarmc) (void) Cloak_on();
  1521. X      if (uarmf) (void) Boots_on();
  1522. X***************
  1523. X*** 850,856 ****
  1524. X  }
  1525. X  
  1526. X  int
  1527. X! doremring() {
  1528. X  #ifdef GCC_WARN
  1529. X      register struct obj *otmp = (struct obj *)0;
  1530. X          /* suppress "may be used uninitialized" warning */
  1531. X--- 875,882 ----
  1532. X  }
  1533. X  
  1534. X  int
  1535. X! doremring()
  1536. X! {
  1537. X  #ifdef GCC_WARN
  1538. X      register struct obj *otmp = (struct obj *)0;
  1539. X          /* suppress "may be used uninitialized" warning */
  1540. X***************
  1541. X*** 916,922 ****
  1542. X  }
  1543. X  
  1544. X  int
  1545. X! cursed(otmp) register struct obj *otmp; {
  1546. X      /* Curses, like chickens, come home to roost. */
  1547. X      if(otmp->cursed){
  1548. X          You("can't.  %s to be cursed.",
  1549. X--- 942,950 ----
  1550. X  }
  1551. X  
  1552. X  int
  1553. X! cursed(otmp)
  1554. X! register struct obj *otmp;
  1555. X! {
  1556. X      /* Curses, like chickens, come home to roost. */
  1557. X      if(otmp->cursed){
  1558. X          You("can't.  %s to be cursed.",
  1559. X***************
  1560. X*** 929,935 ****
  1561. X  }
  1562. X  
  1563. X  int
  1564. X! armoroff(otmp) register struct obj *otmp; {
  1565. X      register int delay = -objects[otmp->otyp].oc_delay;
  1566. X  
  1567. X      if(cursed(otmp)) return(0);
  1568. X--- 957,965 ----
  1569. X  }
  1570. X  
  1571. X  int
  1572. X! armoroff(otmp)
  1573. X! register struct obj *otmp;
  1574. X! {
  1575. X      register int delay = -objects[otmp->otyp].oc_delay;
  1576. X  
  1577. X      if(cursed(otmp)) return(0);
  1578. X***************
  1579. X*** 1244,1250 ****
  1580. X  #ifdef OVL0
  1581. X  
  1582. X  void
  1583. X! find_ac() {
  1584. X      register int uac = 10;
  1585. X  #ifdef POLYSELF
  1586. X      if (u.mtimedone) uac = mons[u.umonnum].ac;
  1587. X--- 1274,1281 ----
  1588. X  #ifdef OVL0
  1589. X  
  1590. X  void
  1591. X! find_ac()
  1592. X! {
  1593. X      register int uac = 10;
  1594. X  #ifdef POLYSELF
  1595. X      if (u.mtimedone) uac = mons[u.umonnum].ac;
  1596. X***************
  1597. X*** 1315,1322 ****
  1598. X  }
  1599. X  
  1600. X  struct obj *
  1601. X! some_armor(){
  1602. X! register struct obj *otmph = (uarmc ? uarmc : uarm);
  1603. X      if(uarmh && (!otmph || !rn2(4))) otmph = uarmh;
  1604. X      if(uarmg && (!otmph || !rn2(4))) otmph = uarmg;
  1605. X      if(uarmf && (!otmph || !rn2(4))) otmph = uarmf;
  1606. X--- 1346,1354 ----
  1607. X  }
  1608. X  
  1609. X  struct obj *
  1610. X! some_armor()
  1611. X! {
  1612. X!     register struct obj *otmph = (uarmc ? uarmc : uarm);
  1613. X      if(uarmh && (!otmph || !rn2(4))) otmph = uarmh;
  1614. X      if(uarmg && (!otmph || !rn2(4))) otmph = uarmg;
  1615. X      if(uarmf && (!otmph || !rn2(4))) otmph = uarmf;
  1616. X***************
  1617. X*** 1331,1337 ****
  1618. X  erode_armor(acid_dmg)
  1619. X  boolean acid_dmg;
  1620. X  {
  1621. X! register struct obj *otmph = some_armor();
  1622. X  
  1623. X      if (otmph && otmph != uarmf) {
  1624. X          if (otmph->greased) {
  1625. X--- 1363,1369 ----
  1626. X  erode_armor(acid_dmg)
  1627. X  boolean acid_dmg;
  1628. X  {
  1629. X!     register struct obj *otmph = some_armor();
  1630. X  
  1631. X      if (otmph && otmph != uarmf) {
  1632. X          if (otmph->greased) {
  1633. X***************
  1634. X*** 1416,1423 ****
  1635. X  }
  1636. X  
  1637. X  static struct obj *
  1638. X! do_takeoff() {
  1639. X! 
  1640. X      register struct obj *otmp = (struct obj *)0;
  1641. X  
  1642. X      if (taking_off == 1L) { /* weapon */
  1643. X--- 1448,1455 ----
  1644. X  }
  1645. X  
  1646. X  static struct obj *
  1647. X! do_takeoff()
  1648. X! {
  1649. X      register struct obj *otmp = (struct obj *)0;
  1650. X  
  1651. X      if (taking_off == 1L) { /* weapon */
  1652. X***************
  1653. X*** 1471,1478 ****
  1654. X  
  1655. X  STATIC_PTR
  1656. X  int
  1657. X! take_off() {
  1658. X! 
  1659. X      register int i;
  1660. X      register struct obj *otmp;
  1661. X  
  1662. X--- 1503,1510 ----
  1663. X  
  1664. X  STATIC_PTR
  1665. X  int
  1666. X! take_off()
  1667. X! {
  1668. X      register int i;
  1669. X      register struct obj *otmp;
  1670. X  
  1671. X***************
  1672. X*** 1489,1500 ****
  1673. X  
  1674. X      for(i = 0; takeoff_order[i]; i++)
  1675. X          if(takeoff_mask & takeoff_order[i]) {
  1676. X- 
  1677. X          taking_off = takeoff_order[i];
  1678. X          break;
  1679. X          }
  1680. X  
  1681. X      otmp = (struct obj *) 0;
  1682. X  
  1683. X      if (taking_off == 0L) {
  1684. X        You("finish disrobing.");
  1685. X--- 1521,1532 ----
  1686. X  
  1687. X      for(i = 0; takeoff_order[i]; i++)
  1688. X          if(takeoff_mask & takeoff_order[i]) {
  1689. X          taking_off = takeoff_order[i];
  1690. X          break;
  1691. X          }
  1692. X  
  1693. X      otmp = (struct obj *) 0;
  1694. X+     todelay = 0;
  1695. X  
  1696. X      if (taking_off == 0L) {
  1697. X        You("finish disrobing.");
  1698. X***************
  1699. X*** 1503,1508 ****
  1700. X--- 1535,1545 ----
  1701. X        todelay = 1;
  1702. X      } else if (taking_off == WORN_ARMOR) {
  1703. X        otmp = uarm;
  1704. X+       /* If a cloak is being worn, add the time to take it off and put
  1705. X+        * it back on again.  Kludge alert! since that time is 0 for all
  1706. X+        * known cloaks, add 1 so that it actually matters...
  1707. X+        */
  1708. X+       if (uarmc) todelay += 2 * objects[uarmc->otyp].oc_delay + 1;
  1709. X      } else if (taking_off == WORN_CLOAK) {
  1710. X        otmp = uarmc;
  1711. X      } else if (taking_off == WORN_BOOTS) {
  1712. X***************
  1713. X*** 1516,1521 ****
  1714. X--- 1553,1561 ----
  1715. X  #ifdef TOURIST
  1716. X      } else if (taking_off == WORN_SHIRT) {
  1717. X        otmp = uarmu;
  1718. X+       /* add the time to take off and put back on armor and/or cloak */
  1719. X+       if (uarm)  todelay += 2 * objects[uarm->otyp].oc_delay;
  1720. X+       if (uarmc) todelay += 2 * objects[uarmc->otyp].oc_delay + 1;
  1721. X  #endif
  1722. X      } else if (taking_off == WORN_AMUL) {
  1723. X        todelay = 1;
  1724. X***************
  1725. X*** 1530,1536 ****
  1726. X        return 0;    /* force done */
  1727. X      }
  1728. X  
  1729. X!     if(otmp) todelay = objects[otmp->otyp].oc_delay;
  1730. X      set_occupation(take_off, "disrobing", 0);
  1731. X      return(1);        /* get busy */
  1732. X  }
  1733. X--- 1570,1576 ----
  1734. X        return 0;    /* force done */
  1735. X      }
  1736. X  
  1737. X!     if (otmp) todelay += objects[otmp->otyp].oc_delay;
  1738. X      set_occupation(take_off, "disrobing", 0);
  1739. X      return(1);        /* get busy */
  1740. X  }
  1741. X***************
  1742. X*** 1539,1554 ****
  1743. X  #ifdef OVL1
  1744. X  
  1745. X  void
  1746. X! reset_remarm() { taking_off = takeoff_mask =0L; }
  1747. X  
  1748. X  #endif /* OVL1 */
  1749. X  #ifdef OVLB
  1750. X  
  1751. X  int
  1752. X! doddoremarm() {
  1753. X! 
  1754. X      if(taking_off || takeoff_mask) {
  1755. X- 
  1756. X          You("continue disrobing.");
  1757. X          set_occupation(take_off, "disrobing", 0);
  1758. X          return(take_off());
  1759. X--- 1579,1596 ----
  1760. X  #ifdef OVL1
  1761. X  
  1762. X  void
  1763. X! reset_remarm()
  1764. X! {
  1765. X!     taking_off = takeoff_mask =0L;
  1766. X! }
  1767. X  
  1768. X  #endif /* OVL1 */
  1769. X  #ifdef OVLB
  1770. X  
  1771. X  int
  1772. X! doddoremarm()
  1773. X! {
  1774. X      if(taking_off || takeoff_mask) {
  1775. X          You("continue disrobing.");
  1776. X          set_occupation(take_off, "disrobing", 0);
  1777. X          return(take_off());
  1778. X*** /tmp/da10906    Tue Jun  1 16:13:13 1993
  1779. X--- src/dog.c    Wed Mar 31 17:29:08 1993
  1780. X***************
  1781. X*** 1,4 ****
  1782. X! /*    SCCS Id: @(#)dog.c    3.1    92/10/18    */
  1783. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1784. X  /* NetHack may be freely redistributed.  See license for details. */
  1785. X  
  1786. X--- 1,4 ----
  1787. X! /*    SCCS Id: @(#)dog.c    3.1    93/03/30    */
  1788. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1789. X  /* NetHack may be freely redistributed.  See license for details. */
  1790. X  
  1791. X***************
  1792. X*** 94,99 ****
  1793. X--- 94,106 ----
  1794. X          newsym(mtmp->mx, mtmp->my);
  1795. X      }
  1796. X      set_malign(mtmp); /* more alignment changes */
  1797. X+ #ifdef MUSE
  1798. X+     /* must wield weapon immediately since pets will otherwise drop it */
  1799. X+     if (mtmp->mtame && attacktype(mtmp->data, AT_WEAP)) {
  1800. X+         mtmp->weapon_check = NEED_HTH_WEAPON;
  1801. X+         (void) mon_wield_item(mtmp);
  1802. X+     }
  1803. X+ #endif
  1804. X  }
  1805. X  
  1806. X  struct monst *
  1807. X***************
  1808. X*** 126,135 ****
  1809. X  void
  1810. X  losedogs()
  1811. X  {
  1812. X!     register struct monst *mtmp,*mtmp0,*mtmp2;
  1813. X      int num_segs;
  1814. X  
  1815. X!     while(mtmp = mydogs){
  1816. X          mydogs = mtmp->nmon;
  1817. X          mtmp->nmon = fmon;
  1818. X          fmon = mtmp;
  1819. X--- 133,142 ----
  1820. X  void
  1821. X  losedogs()
  1822. X  {
  1823. X!     register struct monst *mtmp, *mtmp0 = 0, *mtmp2;
  1824. X      int num_segs;
  1825. X  
  1826. X!     while ((mtmp = mydogs) != 0) {
  1827. X          mydogs = mtmp->nmon;
  1828. X          mtmp->nmon = fmon;
  1829. X          fmon = mtmp;
  1830. X***************
  1831. X*** 146,154 ****
  1832. X          mnexto(mtmp);
  1833. X      }
  1834. X  
  1835. X- #if defined(LINT) || defined(GCC_WARN)
  1836. X-     mtmp0 = (struct monst *)0;
  1837. X- #endif
  1838. X      for(mtmp = migrating_mons; mtmp; mtmp = mtmp2) {
  1839. X          mtmp2 = mtmp->nmon;
  1840. X          if(mtmp->mx == u.uz.dnum && mtmp->mux == u.uz.dlevel) {
  1841. X--- 153,158 ----
  1842. X***************
  1843. X*** 312,319 ****
  1844. X  
  1845. X          /* set minvent's obj->no_charge to 0 */
  1846. X          for(obj = mtmp->minvent; obj; obj = obj->nobj) {
  1847. X!             if(Is_container(obj))
  1848. X!                 picked_container(obj); /* does the right thing */
  1849. X              obj->no_charge = 0;
  1850. X          }
  1851. X  
  1852. X--- 316,323 ----
  1853. X  
  1854. X          /* set minvent's obj->no_charge to 0 */
  1855. X          for(obj = mtmp->minvent; obj; obj = obj->nobj) {
  1856. X!             if (Has_contents(obj))
  1857. X!             picked_container(obj);    /* does the right thing */
  1858. X              obj->no_charge = 0;
  1859. X          }
  1860. X  
  1861. X***************
  1862. X*** 358,365 ****
  1863. X  
  1864. X      /* set minvent's obj->no_charge to 0 */
  1865. X      for(obj = mtmp->minvent; obj; obj = obj->nobj) {
  1866. X!         if(Is_container(obj))
  1867. X!             picked_container(obj); /* does the right thing */
  1868. X          obj->no_charge = 0;
  1869. X      }
  1870. X  
  1871. X--- 362,369 ----
  1872. X  
  1873. X      /* set minvent's obj->no_charge to 0 */
  1874. X      for(obj = mtmp->minvent; obj; obj = obj->nobj) {
  1875. X!         if (Has_contents(obj))
  1876. X!         picked_container(obj);    /* does the right thing */
  1877. X          obj->no_charge = 0;
  1878. X      }
  1879. X  
  1880. X***************
  1881. X*** 534,539 ****
  1882. X--- 538,549 ----
  1883. X      initedog(mtmp2);
  1884. X      replmon(mtmp,mtmp2);
  1885. X      newsym(mtmp2->mx, mtmp2->my);
  1886. X+ #ifdef MUSE
  1887. X+     if (attacktype(mtmp2->data, AT_WEAP)) {
  1888. X+         mtmp2->weapon_check = NEED_HTH_WEAPON;
  1889. X+         (void) mon_wield_item(mtmp2);
  1890. X+     }
  1891. X+ #endif
  1892. X      return(mtmp2);
  1893. X  }
  1894. X  
  1895. X*** /tmp/da10914    Tue Jun  1 16:13:16 1993
  1896. X--- src/dogmove.c    Tue Jun  1 12:13:16 1993
  1897. X***************
  1898. X*** 1,4 ****
  1899. X! /*    SCCS Id: @(#)dogmove.c    3.1    93/02/09    */
  1900. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1901. X  /* NetHack may be freely redistributed.  See license for details. */
  1902. X  
  1903. X--- 1,4 ----
  1904. X! /*    SCCS Id: @(#)dogmove.c    3.1    93/05/15    */
  1905. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  1906. X  /* NetHack may be freely redistributed.  See license for details. */
  1907. X  
  1908. X***************
  1909. X*** 125,142 ****
  1910. X  register struct monst *mtmp;
  1911. X  register struct edog *edog;
  1912. X  {
  1913. X!     if(moves > edog->hungrytime + 500) {
  1914. X!         if(!carnivorous(mtmp->data) && !herbivorous(mtmp->data)) {
  1915. X          edog->hungrytime = moves + 500;
  1916. X          /* but not too high; it might polymorph */
  1917. X          } else if (!mtmp->mconf) {
  1918. X          mtmp->mconf = 1;
  1919. X          mtmp->mhpmax /= 3;
  1920. X!         if(mtmp->mhp > mtmp->mhpmax)
  1921. X              mtmp->mhp = mtmp->mhpmax;
  1922. X!         if(mtmp->mhp < 1) goto dog_died;
  1923. X!         if(cansee(mtmp->mx, mtmp->my))
  1924. X              pline("%s is confused from hunger.", Monnam(mtmp));
  1925. X          else {
  1926. X              char buf[BUFSZ];
  1927. X  
  1928. X--- 125,146 ----
  1929. X  register struct monst *mtmp;
  1930. X  register struct edog *edog;
  1931. X  {
  1932. X!     if (moves > edog->hungrytime + 500) {
  1933. X!         if (!carnivorous(mtmp->data) && !herbivorous(mtmp->data)) {
  1934. X          edog->hungrytime = moves + 500;
  1935. X          /* but not too high; it might polymorph */
  1936. X          } else if (!mtmp->mconf) {
  1937. X          mtmp->mconf = 1;
  1938. X          mtmp->mhpmax /= 3;
  1939. X!         if (mtmp->mhp > mtmp->mhpmax)
  1940. X              mtmp->mhp = mtmp->mhpmax;
  1941. X!         if (mtmp->mhp < 1) goto dog_died;
  1942. X!         if (cansee(mtmp->mx, mtmp->my))
  1943. X              pline("%s is confused from hunger.", Monnam(mtmp));
  1944. X+ #ifdef SOUNDS
  1945. X+         else if (couldsee(mtmp->mx, mtmp->my))
  1946. X+             beg(mtmp);
  1947. X+ #endif
  1948. X          else {
  1949. X              char buf[BUFSZ];
  1950. X  
  1951. X***************
  1952. X*** 145,161 ****
  1953. X              NAME(mtmp) : strcat(buf, Hallucination
  1954. X              ? rndmonnam() : mtmp->data->mname));
  1955. X          }
  1956. X!         } else if(moves > edog->hungrytime + 750 || mtmp->mhp < 1) {
  1957. X          dog_died:
  1958. X  #ifdef WALKIES
  1959. X!         if(mtmp->mleashed)
  1960. X              Your("leash goes slack.");
  1961. X  #endif
  1962. X!         if(cansee(mtmp->mx, mtmp->my))
  1963. X              pline("%s dies%s.", Monnam(mtmp),
  1964. X                  (mtmp->mhp >= 1) ? "" : " from hunger");
  1965. X          else
  1966. X!             You("have a sad feeling for a moment, then it passes.");
  1967. X          mondied(mtmp);
  1968. X          return(TRUE);
  1969. X          }
  1970. X--- 149,167 ----
  1971. X              NAME(mtmp) : strcat(buf, Hallucination
  1972. X              ? rndmonnam() : mtmp->data->mname));
  1973. X          }
  1974. X!         } else if (moves > edog->hungrytime + 750 || mtmp->mhp < 1) {
  1975. X          dog_died:
  1976. X  #ifdef WALKIES
  1977. X!         if (mtmp->mleashed)
  1978. X              Your("leash goes slack.");
  1979. X+         else
  1980. X  #endif
  1981. X!         if (cansee(mtmp->mx, mtmp->my))
  1982. X              pline("%s dies%s.", Monnam(mtmp),
  1983. X                  (mtmp->mhp >= 1) ? "" : " from hunger");
  1984. X          else
  1985. X!             You("feel %s for a moment.",
  1986. X!             Hallucination ? "bummed" : "sad");
  1987. X          mondied(mtmp);
  1988. X          return(TRUE);
  1989. X          }
  1990. X***************
  1991. X*** 207,212 ****
  1992. X--- 213,224 ----
  1993. X                  freeobj(obj);
  1994. X                  newsym(omx,omy);
  1995. X                  mpickobj(mtmp,obj);
  1996. X+ #ifdef MUSE
  1997. X+                 if (attacktype(mtmp->data, AT_WEAP)) {
  1998. X+                 mtmp->weapon_check = NEED_HTH_WEAPON;
  1999. X+                 (void) mon_wield_item(mtmp);
  2000. X+                 }
  2001. X+ #endif
  2002. X              }
  2003. X          }
  2004. X      }
  2005. X***************
  2006. X*** 470,476 ****
  2007. X              (j = distu(nx, ny)) > 16 && j >= udist) continue;
  2008. X  
  2009. X          if ((info[i] & ALLOW_M) && MON_AT(nx, ny)) {
  2010. X!             int stat;
  2011. X              register struct monst *mtmp2 = m_at(nx,ny);
  2012. X  
  2013. X              if ((int)mtmp2->m_lev >= (int)mtmp->m_lev+2 ||
  2014. X--- 482,488 ----
  2015. X              (j = distu(nx, ny)) > 16 && j >= udist) continue;
  2016. X  
  2017. X          if ((info[i] & ALLOW_M) && MON_AT(nx, ny)) {
  2018. X!             int mstatus;
  2019. X              register struct monst *mtmp2 = m_at(nx,ny);
  2020. X  
  2021. X              if ((int)mtmp2->m_lev >= (int)mtmp->m_lev+2 ||
  2022. X***************
  2023. X*** 479,490 ****
  2024. X               && (perceives(mtmp->data) || !mtmp2->minvis)) ||
  2025. X              (mtmp2->data==&mons[PM_GELATINOUS_CUBE] && rn2(10)) ||
  2026. X              (max_passive_dmg(mtmp2, mtmp) >= mtmp->mhp) ||
  2027. X!             ((mtmp->mhp*4 < mtmp->mhpmax ||
  2028. X  #ifdef MULDGN
  2029. X!               mtmp2->data->msound == MS_GUARDIAN ||
  2030. X!               mtmp2->data->msound == MS_LEADER
  2031. X  #endif
  2032. X- 
  2033. X                ) &&
  2034. X               mtmp2->mpeaceful && !Conflict) ||
  2035. X                 (mtmp2->data->mlet == S_COCKATRICE &&
  2036. X--- 491,501 ----
  2037. X               && (perceives(mtmp->data) || !mtmp2->minvis)) ||
  2038. X              (mtmp2->data==&mons[PM_GELATINOUS_CUBE] && rn2(10)) ||
  2039. X              (max_passive_dmg(mtmp2, mtmp) >= mtmp->mhp) ||
  2040. X!             ((mtmp->mhp*4 < mtmp->mhpmax
  2041. X  #ifdef MULDGN
  2042. X!               || mtmp2->data->msound == MS_GUARDIAN
  2043. X!               || mtmp2->data->msound == MS_LEADER
  2044. X  #endif
  2045. X                ) &&
  2046. X               mtmp2->mpeaceful && !Conflict) ||
  2047. X                 (mtmp2->data->mlet == S_COCKATRICE &&
  2048. X***************
  2049. X*** 493,508 ****
  2050. X  
  2051. X              if (after) return(0); /* hit only once each move */
  2052. X  
  2053. X!             stat = mattackm(mtmp, mtmp2);
  2054. X  
  2055. X              /* aggressor (pet) died */
  2056. X!             if (stat & MM_AGR_DIED) return 2;
  2057. X  
  2058. X!             if ((stat & MM_HIT) && !(stat & MM_DEF_DIED) &&
  2059. X              rn2(4) && mtmp2->mlstmv != monstermoves &&
  2060. X              !onscary(mtmp->mx, mtmp->my, mtmp2)) {
  2061. X!             stat = mattackm(mtmp2, mtmp);    /* return attack */
  2062. X!             if (stat & MM_DEF_DIED) return 2;
  2063. X              }
  2064. X  
  2065. X              return 0;
  2066. X--- 504,519 ----
  2067. X  
  2068. X              if (after) return(0); /* hit only once each move */
  2069. X  
  2070. X!             mstatus = mattackm(mtmp, mtmp2);
  2071. X  
  2072. X              /* aggressor (pet) died */
  2073. X!             if (mstatus & MM_AGR_DIED) return 2;
  2074. X  
  2075. X!             if ((mstatus & MM_HIT) && !(mstatus & MM_DEF_DIED) &&
  2076. X              rn2(4) && mtmp2->mlstmv != monstermoves &&
  2077. X              !onscary(mtmp->mx, mtmp->my, mtmp2)) {
  2078. X!             mstatus = mattackm(mtmp2, mtmp);    /* return attack */
  2079. X!             if (mstatus & MM_DEF_DIED) return 2;
  2080. X              }
  2081. X  
  2082. X              return 0;
  2083. X***************
  2084. X*** 524,531 ****
  2085. X                      && (is_flyer(mtmp->data) ||
  2086. X                      is_clinger(mtmp->data)))
  2087. X                  || (trap->ttyp == SLP_GAS_TRAP &&
  2088. X!                     resists_sleep(mtmp->data)))
  2089. X!                 if(!trap->tseen || rn2(3)) continue;
  2090. X  #ifdef WALKIES
  2091. X              if (!mtmp->mleashed) {
  2092. X  #endif
  2093. X--- 535,543 ----
  2094. X                      && (is_flyer(mtmp->data) ||
  2095. X                      is_clinger(mtmp->data)))
  2096. X                  || (trap->ttyp == SLP_GAS_TRAP &&
  2097. X!                     resists_sleep(mtmp->data))) {
  2098. X!                 if (!trap->tseen || rn2(3)) continue;
  2099. X!             } else
  2100. X  #ifdef WALKIES
  2101. X              if (!mtmp->mleashed) {
  2102. X  #endif
  2103. X***************
  2104. X*** 532,542 ****
  2105. X                  if (!trap->tseen && rn2(40)) continue;
  2106. X                  if (rn2(10)) continue;
  2107. X  #ifdef WALKIES
  2108. X-             }
  2109. X  # ifdef SOUNDS
  2110. X!             else if (flags.soundok)
  2111. X                  whimper(mtmp);
  2112. X  # endif
  2113. X  #endif
  2114. X              }
  2115. X          }
  2116. X--- 544,554 ----
  2117. X                  if (!trap->tseen && rn2(40)) continue;
  2118. X                  if (rn2(10)) continue;
  2119. X  #ifdef WALKIES
  2120. X  # ifdef SOUNDS
  2121. X!             } else if (flags.soundok) {
  2122. X                  whimper(mtmp);
  2123. X  # endif
  2124. X+             }
  2125. X  #endif
  2126. X              }
  2127. X          }
  2128. END_OF_FILE
  2129. if test 55636 -ne `wc -c <'patches02b'`; then
  2130.     echo shar: \"'patches02b'\" unpacked with wrong size!
  2131. fi
  2132. # end of 'patches02b'
  2133. if test -f 'patchit.sh' -a "${1}" != "-c" ; then 
  2134.   echo shar: Renaming existing file \"'patchit.sh'\" to \"'patchit.sh.orig'\"
  2135.   mv -f 'patchit.sh' 'patchit.sh.orig'
  2136. fi
  2137. echo shar: Extracting \"'patchit.sh'\" \(356 characters\)
  2138. sed "s/^X//" >'patchit.sh' <<'END_OF_FILE'
  2139. X#!/bin/sh
  2140. Xecho building file patches02p
  2141. Xcat patches02p.1 patches02p.2 > patches02p
  2142. Xrm patches02p.1 patches02p.2
  2143. Xecho building file patches02t
  2144. Xcat patches02t.uu1 patches02t.uu2 | uudecode
  2145. Xrm patches02t.uu1 patches02t.uu2
  2146. Xecho applying patches
  2147. Xfor pfile in patches02[a-u]
  2148. Xdo patch -p < $pfile
  2149. Xdone
  2150. X(cd sys/mac; uudecode macmenu.c.uu; rm macmenu.c.uu)
  2151. Xexit 0
  2152. END_OF_FILE
  2153. if test 356 -ne `wc -c <'patchit.sh'`; then
  2154.     echo shar: \"'patchit.sh'\" unpacked with wrong size!
  2155. fi
  2156. chmod +x 'patchit.sh'
  2157. # end of 'patchit.sh'
  2158. if test -f 'sys/amiga/colors.uu' -a "${1}" != "-c" ; then 
  2159.   echo shar: Renaming existing file \"'sys/amiga/colors.uu'\" to \"'sys/amiga/colors.uu.orig'\"
  2160.   mv -f 'sys/amiga/colors.uu' 'sys/amiga/colors.uu.orig'
  2161. fi
  2162. echo shar: Extracting \"'sys/amiga/colors.uu'\" \(2140 characters\)
  2163. sed "s/^X//" >'sys/amiga/colors.uu' <<'END_OF_FILE'
  2164. Xbegin 664 colors.pw
  2165. XM4&]W97)7:6YD;W=S('8R+C5C(*DQ.3@W+"`Q.3@X(&)Y($E.3U9!5%)/3DE#
  2166. XM4RP@24Y#+B`@("`@("`@("`@("`@("`@("`@("`@```"[`````E```#\````
  2167. XM`0`````!`````!%A;6EG83IC;VQO<G=I;BYC``?2=4```````H``R``#``&`
  2168. XM```/``````?(V?@```````````````(````!``````$``````0`````8````
  2169. XM\/#P8"``4(#`$'`0P`!@(##@P````````0`"$`X`8`)X``4`!?____\`````
  2170. XM!]*!D```````````````````````!@?/-;@```````5#;VQ?```!`*\`+0$X
  2171. XM`%T`!0`%_____P```!-%9&ET(%-C<F5E;B!#;VQO<G,`!])YX``@`"0!#P`+
  2172. XM`````P`#!](I(`````````````````?2.A@`!0?2>1#_____`P``!0?2>/0`
  2173. XM``````````$0```!$``,````#````````````0<`!P``````````````````
  2174. XM```!`P````#_____````"@````L'SSI8!\\]$`?//:`'ST#X!\]+>`?/5!@`
  2175. XM```(0FQU95!E;@`````!``````$`````"T=!1$),545014X``````0`````!
  2176. XM``?2>H``(``8`0\`"P````,``P?22U@````````````````'TGHX``8'TGI8
  2177. XM_____P,```4'TGH<```````````!$````1``#`````P```````````$'``<`
  2178. XM`````````````````````0,`````_____P````H````+!\]6@`?/5;@'SU\8
  2179. XM!\]B\`?/;$`'SWHX````"4=R965N4&5N``````$``````0`````,1T%$1U)%
  2180. XM14Y014X``````0`````!``?2?8``(``,`0\`"P````,``P?2>M@`````````
  2181. XM```````'TGKX``<'TGL8_____P,```4'TGJ\```````````!$````1``#```
  2182. XM``P```````````$'``<``````````````````````0,`````_____P````H`
  2183. XM```+!\^"$`?2<'@'TGDX!])]6`?2>T`'TGUP````!U)E9%!E;@`````!````
  2184. XM``$`````"D=!1%)%1%!%3@`````!``````$`!])^F`#T`$T`.@`+`````P`!
  2185. XM!])]K``````'TGW8````````````!@?2?@C_____`P``!0?2?;P`````````
  2186. XM```[````.P`,````#```````````!P`!```&``$`````!])]^``````````'
  2187. XM0V%N8V5L``````H````!!])^,`?2?D`'TGY0!])^8`?2?G@'TGZ(````!T-A
  2188. XM;F-E;``````!``````$`````#4=!1$-/3$-!3D-%3``````!``````$`!]*`
  2189. XM>`"``$T`.@`+`````P`!!])^Q``````'TG[P````````````!P?2?YC_____
  2190. XM`P``!0?2?M0````````````[````.P`,````#```````````!P`!```1``$`
  2191. XM````!])_$``````````$57-E``````H````!!])_P`?2?]`'TG_@!])_\`?2
  2192. XM@`@'TH`8````!4]K87D``````0`````!``````M'041#3TQ/2T%9``````$`
  2193. XM`````0````````D`30`Z``L````#``$'TH"D``````?2@-`````````````*
  2194. XM!]*!`/____\#```%!]*`M````````````#L````[``P````,```````````'
  2195. XM``$```T``0`````'TH#P``````````53879E``````H````!!]*!*`?2@3@'
  2196. XMTH%(!]*!6`?2@7`'TH&`````!5-A=F4``````0`````!``````M'041#3TQ3
  2197. XM059%``````$``````0`'``$``!``#@`````'TH&P!]*!P`````)2``0``0``
  2198. XM$``:``````?2@>`'TH'P`````D<``P`!```1`"8`````!]*"$``````````"
  2199. X"0@`:
  2200. X`
  2201. Xend
  2202. END_OF_FILE
  2203. if test 2140 -ne `wc -c <'sys/amiga/colors.uu'`; then
  2204.     echo shar: \"'sys/amiga/colors.uu'\" unpacked with wrong size!
  2205. fi
  2206. # end of 'sys/amiga/colors.uu'
  2207. echo shar: End of archive 7 \(of 33\).
  2208. cp /dev/null ark7isdone
  2209. MISSING=""
  2210. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  2211.     if test ! -f ark${I}isdone ; then
  2212.     MISSING="${MISSING} ${I}"
  2213.     fi
  2214. done
  2215. if test "${MISSING}" = "" ; then
  2216.     echo You have unpacked all 33 archives.
  2217.     echo "Now execute ./patchit.sh"
  2218.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2219. else
  2220.     echo You still need to unpack the following archives:
  2221.     echo "        " ${MISSING}
  2222. fi
  2223. ##  End of shell archive.
  2224. exit 0
  2225.