home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume7 / nethack3 / patch5a < prev    next >
Text File  |  1989-11-08  |  38KB  |  1,233 lines

  1. Subject:  v08i048:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch5a
  2. Newsgroups: comp.sources.games
  3. Approved: billr@saab.CNA.TEK.COM
  4.  
  5. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  6. Posting-number: Volume 8, Issue 48
  7. Archive-name: NetHack3/Patch5a
  8. Patch-To: NetHack3: Volume 7, Issue 56-93
  9.  
  10.     [It's mentioned in the UPDATE5 file, but I'll repeat it here:
  11.      these patches should be applied to unmodified patchlevel 4
  12.      source files. If you applied the temporary fix posted in the
  13.      nethack newsgroup, it should be backed out (or you'll get
  14.      rejects from patch(1).  -br]
  15.         
  16. [From the development team...
  17. Old bones and save files should at least be syntactically correct this time,
  18. but you should still throw them out if you don't want to be confronted with
  19. monsters permanently masquerading as different monsters (since some of the
  20. monsters' letters have changed).
  21.  
  22. Note that the posted shop fix was a stopgap patch, not an official patch, so
  23. it should be reversed before applying these patches.  If you do not reverse 
  24. it, probably nothing worse than a failure of one shk.c band will happen this
  25. time.  In general, however, you will have to do considerable hand-patching if
  26. you leave intermediate patches in.
  27.  
  28. The major bug fix in Patch 5 is moving the color definitions to color.h, thus
  29. breaking the annoying dependency loop when bootstrapping NetHack.
  30.  
  31. Patch 5 contains Johnny Lee's provision of a port to the Macintosh.  The 
  32. Macintosh files live in a new subdirectory, 'mac'.  We know that many of you
  33. were waiting for a Mac port, and for you we are happy to have it.
  34.  
  35. Basic support for several new other compilers or machines (see README), but 
  36. these probably need some more tweaking.
  37.  
  38. A major new feature in Patch 5 is timed-out eating, i.e., being able to be
  39. interrupted while eating by monsters attack.  Mike Stephenson provided the 
  40. basic structure for dealing with partially eaten food.  We believe that the
  41. only remaining flaws in this code are occasional non-optimal messages which
  42. are generated by it (we are working on correcting this).
  43.  
  44. Incorrect iron ball behavior and bugs in the iron ball code were 
  45. systematically corrected by Kevin Darcy who communicated with us about it
  46. and mailed us his patches.  (Yes, Kevin, as you can see, it went in, and 
  47. with only one minor change.)  
  48.  
  49. There were other, smaller, patches which were mailed to us and which were
  50. implemented.  To repeat:  we are very happy to receive bug-fixing patches
  51. and code-enhancement patches.  But please do as Kevin did, namely, tell us
  52. about it in advance.
  53.  
  54. Difficulties with dropping objects in shops, burning to death in hell, 
  55. wielding amulets, pets eating corpses were fixed.  So were scores of other
  56. small but annoying bugs.
  57.  
  58. MICROPORT_BUG was added to cater to compilers that don't like large 
  59. structures.]
  60.  
  61. #! /bin/sh
  62. # This is a shell archive.  Remove anything before this line, then unpack
  63. # it by saving it into a file and typing "sh file".  To overwrite existing
  64. # files, type "sh file -c".  You can also feed this as standard input via
  65. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  66. # will see the following message at the end:
  67. #        "End of archive 1 (of 6)."
  68. # Contents:  do_patch5.sh patches05a UPDATE5
  69. # Wrapped by billr@saab on Tue Oct 17 13:15:48 1989
  70. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  71. if test -f 'do_patch5.sh' -a "${1}" != "-c" ; then 
  72.   echo shar: Will not clobber existing file \"'do_patch5.sh'\"
  73. else
  74. echo shar: Extracting \"'do_patch5.sh'\" \(482 characters\)
  75. sed "s/^X//" >'do_patch5.sh' <<'END_OF_FILE'
  76. X#! /bin/sh
  77. X# script to call patch to apply diff files
  78. X# make sure all of the patch files (and this file) are in your top level
  79. X# NetHack directory
  80. X#
  81. Xecho "applying patch5a"
  82. Xpatch -p <patches05a
  83. Xecho "applying patch5b"
  84. Xpatch -p <patches05b
  85. Xecho "applying patch5c"
  86. Xpatch -p <patches05c
  87. Xecho "applying patch5d"
  88. Xpatch -p <patches05d
  89. Xecho "applying patch5e"
  90. Xpatch -p <patches05e
  91. Xecho "applying patch5f"
  92. Xpatch -p <patches05f
  93. Xrm -f mac/*.orig
  94. Xecho "all patches applied, check for rejects"
  95. END_OF_FILE
  96. if test 482 -ne `wc -c <'do_patch5.sh'`; then
  97.     echo shar: \"'do_patch5.sh'\" unpacked with wrong size!
  98. fi
  99. chmod +x 'do_patch5.sh'
  100. # end of 'do_patch5.sh'
  101. fi
  102. if test -f 'patches05a' -a "${1}" != "-c" ; then 
  103.   echo shar: Will not clobber existing file \"'patches05a'\"
  104. else
  105. echo shar: Extracting \"'patches05a'\" \(29761 characters\)
  106. sed "s/^X//" >'patches05a' <<'END_OF_FILE'
  107. X*** ./Old/Install.unix    Sun Oct 15 18:02:26 1989
  108. X--- ./Install.unix    Sun Oct 15 16:58:56 1989
  109. X***************
  110. X*** 79,81 ****
  111. X--- 79,85 ----
  112. X      to "#define yyleng (int)(yy_cp - yy_bp)" in flex.skel.
  113. X      Flex is not needed with Xenix/386, as its lex generates a proper lexical
  114. X      analyser.  [Xenix instructions by J.T. Conklin]
  115. X+ 
  116. X+ 6.  If you get unexplained deaths by trickery, you are probably running
  117. X+     NetHack on a bunch of workstations, but you have overlooked the NETWORK
  118. X+     definition in unixconf.h that is necessary in that configuration.
  119. X*** ./Old/README    Thu Sep 28 00:28:47 1989
  120. X--- ./README    Mon Oct 16 22:35:02 1989
  121. X***************
  122. X*** 37,43
  123. X      directory as the 'Top' directory.  It makes no difference what you
  124. X      call it.
  125. X  
  126. X! 2.  If there is no flaw in the packaging, SIX sub-directories will be
  127. X      automatically created, and files will be deposited in them: 
  128. X  
  129. X      a.  A 'src' directory, which will contain general *.c files.
  130. X
  131. X--- 37,43 -----
  132. X      directory as the 'Top' directory.  It makes no difference what you
  133. X      call it.
  134. X  
  135. X! 2.  If there is no flaw in the packaging, SEVEN sub-directories will be
  136. X      automatically created, and files will be deposited in them: 
  137. X  
  138. X      a.  A 'src' directory, which will contain general *.c files.
  139. X***************
  140. X*** 46,51
  141. X      d.  An 'amiga' directory, which will contain the Amiga-specific files.
  142. X      e.  An 'others' directory, which will contain MSDOS and TOS files.
  143. X      f.  A 'vms' directory, which will contain VMS files.
  144. X  
  145. X      The names of these directories should not be changed, unless you are
  146. X      ready to go through the makefiles and the makedefs program and change
  147. X
  148. X--- 46,52 -----
  149. X      d.  An 'amiga' directory, which will contain the Amiga-specific files.
  150. X      e.  An 'others' directory, which will contain MSDOS and TOS files.
  151. X      f.  A 'vms' directory, which will contain VMS files.
  152. X+     g.  A 'mac' directory, which will contain Macintosh files.
  153. X  
  154. X      The names of these directories should not be changed, unless you are
  155. X      ready to go through the makefiles and the makedefs program and change
  156. X***************
  157. X*** 80,85
  158. X      Sun-3s running SunOS 4.0
  159. X      Encore Multimax running UMAX 4.2
  160. X      Bull XPS100 running System V R2.2 or R3.1
  161. X      AT&T 3B4000 running System V
  162. X      AT&T 3B1 running System V (3.51)
  163. X      286 box running Microport SysV/AT (not extensively tested)
  164. X
  165. X--- 81,87 -----
  166. X      Sun-3s running SunOS 4.0
  167. X      Encore Multimax running UMAX 4.2
  168. X      Bull XPS100 running System V R2.2 or R3.1
  169. X+     Bull DPX/2 100 running System V R3.1
  170. X      AT&T 3B4000 running System V
  171. X      AT&T 3B1 running System V (3.51)
  172. X      286 box running Microport SysV/AT (not extensively tested)
  173. X***************
  174. X*** 89,94
  175. X      Atari 1040ST under TOS
  176. X      DEC vaxen running VMS (probably still requires tweaking) 
  177. X      Data General AViiON systems under DG/UX
  178. X  
  179. X              - - - - - - - - - - -
  180. X  
  181. X
  182. X--- 91,98 -----
  183. X      Atari 1040ST under TOS
  184. X      DEC vaxen running VMS (probably still requires tweaking) 
  185. X      Data General AViiON systems under DG/UX
  186. X+         Valid Logic Systems SCALD-System
  187. X+         Macintosh (still requires testing)
  188. X  
  189. X              - - - - - - - - - - -
  190. X  
  191. X*** ./Old/Files    Sun Oct 15 18:02:04 1989
  192. X--- ./Files    Sun Oct 15 11:38:35 1989
  193. X***************
  194. X*** 43,57 ****
  195. X  
  196. X  include:
  197. X  (files for all versions)
  198. X! amiconf.h       artifact.h      attrib.h        config.h        coord.h
  199. X! decl.h          def_os2.h       edog.h          epri.h          eshk.h
  200. X! extern.h        flag.h          func_tab.h      global.h        gold.h
  201. X! hack.h          lev.h           mfndpos.h       mkroom.h        monattk.h
  202. X! mondata.h       monflag.h       monst.h         monsym.h        msdos.h
  203. X! obj.h           objclass.h      patchlevel.h    pcconf.h        permonst.h
  204. X! prop.h          rm.h            sp_lev.h        spell.h         system.h
  205. X! tosconf.h       tradstdc.h      trap.h          trapname.h      unixconf.h
  206. X! vault.h         vmsconf.h       wseg.h          you.h           youprop.h
  207. X  (file for special level compiler (STRONGHOLD option))
  208. X  lev_comp.h
  209. X  
  210. X--- 43,58 ----
  211. X  
  212. X  include:
  213. X  (files for all versions)
  214. X! amiconf.h       artifact.h      attrib.h        color.h         config.h
  215. X! coord.h         decl.h          def_os2.h       edog.h          epri.h
  216. X! eshk.h          extern.h        flag.h          func_tab.h      global.h
  217. X! gold.h          hack.h          lev.h           macconf.h       mfndpos.h
  218. X! mkroom.h        monattk.h       mondata.h       monflag.h       monst.h
  219. X! monsym.h        msdos.h         obj.h           objclass.h      patchlevel.h
  220. X! pcconf.h        permonst.h      prop.h          rm.h            sp_lev.h
  221. X! spell.h         system.h        tosconf.h       tradstdc.h      trap.h
  222. X! trapname.h      unixconf.h      vault.h         vmsconf.h       wseg.h
  223. X! you.h           youprop.h
  224. X  (file for special level compiler (STRONGHOLD option))
  225. X  lev_comp.h
  226. X  
  227. X***************
  228. X*** 86,88 ****
  229. X--- 87,94 ----
  230. X  vmstty.c        vmsunix.c
  231. X  (GNU termcap files that support VMS version)
  232. X  vmstermcap.c    vmstparam.c
  233. X+ 
  234. X+ mac:
  235. X+ (files for Macintosh version)
  236. X+ Install.mac     Segments.mac    mac.c           macfile.c       macinit.c
  237. X+ makedefs.r      nethack.r
  238. X*** auxil/Old/history    Sun Oct 15 18:09:08 1989
  239. X--- auxil/history    Sun Oct 15 11:38:44 1989
  240. X***************
  241. X*** 31,36 ****
  242. X--- 31,38 ----
  243. X  
  244. X  David Gentzel ported NetHack 3.0 to VMS.
  245. X   
  246. X+ Johnny Lee ported NetHack 3.0 to Macintosh.
  247. X+ 
  248. X  From time to time, some depraved individual out there in netland sends a
  249. X  particularly intriguing modification to help out with the game.  The Gods of
  250. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  251. X*** vms/Old/vmsbuild.com    Sun Oct 15 18:17:46 1989
  252. X--- vms/vmsbuild.com    Wed Oct 11 19:08:53 1989
  253. X***************
  254. X*** 1,7 ****
  255. X  $ makedefs := $sys$disk:[]makedefs
  256. X  $ cc = "CC/NOLIST/OPT=NOINLINE/DEB/INCL=[-.INCLUDE]/DEFI=(""WIZARD=""""GENTZEL"""""")"
  257. X! $ link := link/nomap
  258. X  $ if p1 .eqs. "LINK" then goto link
  259. X  $ cc alloc.c
  260. X  $ cc makedefs.c
  261. X  $ cc monst.c
  262. X--- 1,8 ----
  263. X  $ makedefs := $sys$disk:[]makedefs
  264. X  $ cc = "CC/NOLIST/OPT=NOINLINE/DEB/INCL=[-.INCLUDE]/DEFI=(""WIZARD=""""GENTZEL"""""")"
  265. X! $ link := link/nomap'p2'
  266. X  $ if p1 .eqs. "LINK" then goto link
  267. X+ $ define sys sys$library:
  268. X  $ cc alloc.c
  269. X  $ cc makedefs.c
  270. X  $ cc monst.c
  271. X*** vms/Old/vmsmain.c    Sun Oct 15 18:17:58 1989
  272. X--- vms/vmsmain.c    Wed Oct 11 19:09:07 1989
  273. X***************
  274. X*** 83,89 ****
  275. X          chdirx(dir,0);
  276. X  #endif
  277. X          prscore(argc, argv);
  278. X!         getret();
  279. X          settty(NULL);
  280. X          exit(0);
  281. X          }
  282. X--- 83,89 ----
  283. X          chdirx(dir,0);
  284. X  #endif
  285. X          prscore(argc, argv);
  286. X!         if(isatty(1)) getret();
  287. X          settty(NULL);
  288. X          exit(0);
  289. X          }
  290. X***************
  291. X*** 125,131 ****
  292. X  # endif
  293. X          case 'D':
  294. X  # ifdef WIZARD
  295. X!             if(!strcmp(getenv("USER"), WIZARD))
  296. X                  wizard = TRUE;
  297. X                  break;
  298. X              }
  299. X--- 125,131 ----
  300. X  # endif
  301. X          case 'D':
  302. X  # ifdef WIZARD
  303. X!             if(!strcmp(getenv("USER"), WIZARD)) {
  304. X                  wizard = TRUE;
  305. X                  break;
  306. X              }
  307. X***************
  308. X*** 354,360 ****
  309. X       * The resulting name is overridden by command line options.
  310. X       * If everything fails, or if the resulting name is some generic
  311. X       * account like "games" then eventually we'll ask him.
  312. X!      * Note that we trust him here; it is possible to play under
  313. X       * somebody else's name.
  314. X       */
  315. X      register char *s;
  316. X--- 354,360 ----
  317. X       * The resulting name is overridden by command line options.
  318. X       * If everything fails, or if the resulting name is some generic
  319. X       * account like "games" then eventually we'll ask him.
  320. X!      * Note that we trust the user here; it is possible to play under
  321. X       * somebody else's name.
  322. X       */
  323. X      register char *s;
  324. X*** vms/Old/vmstty.c    Sun Oct 15 18:18:52 1989
  325. X--- vms/vmstty.c    Wed Oct 11 19:09:30 1989
  326. X***************
  327. X*** 155,160 ****
  328. X--- 155,169 ----
  329. X  }
  330. X  
  331. X  
  332. X+ void
  333. X+ intron() {        /* enable kbd interupts if enabled when game started */
  334. X+ }
  335. X+ 
  336. X+ void
  337. X+ introff() {        /* disable kbd interrupts if required*/
  338. X+ }
  339. X+ 
  340. X+ 
  341. X  /* fatal error */
  342. X  /*VARARGS1*/
  343. X  void
  344. X*** /dev/null    Sun Oct 15 18:10:58 1989
  345. X--- mac/Install.mac    Sat Oct 14 11:25:52 1989
  346. X***************
  347. X*** 0 ****
  348. X--- 1,120 ----
  349. X+ Instructions for installing NetHack 3.0 on a Macintosh system
  350. X+ ==============================================================
  351. X+ 
  352. X+ 1.  Make sure all the NetHack files are in the appropriate directory structure.
  353. X+     You should have a main directory with subdirectories src, include, auxil,
  354. X+     mac, and others.  If you do not follow this structure, the Makefile
  355. X+     will not function properly.  All the UNIX .c files and the source Makefile
  356. X+     belong in src; all the PC .c files and Makefiles belong in others; all the
  357. X+     .h files belong in include; other assorted files belong in auxil.  The Mac
  358. X+     .c files belong in mac.
  359. X+ 
  360. X+ 2.  Move the .c files from the mac directory to your src directory, and the
  361. X+     pc*.c files from the others directory to your src directory.  Also move
  362. X+     random.c from others to src if you want to use the Berkeley random number
  363. X+     routines.
  364. X+ 
  365. X+ 3.  If you are using Aztec C, you'll need the Makefile.src.  You'll have 
  366. X+     to make minor modifications to make it work.  If you use Lightspeed/THINK
  367. X+     C the warning concerning the Makefile not functioning properly is a mute
  368. X+     point.
  369. X+ 
  370. X+ 4.  Go to the include subdirectory and edit config.h according to the comments
  371. X+     to match your system and desired set of features.  Similarly edit
  372. X+     macconf.h.  COMPRESS and ZEROCOMP were undefined since I used the
  373. X+     built-in Mac routines PackBits and UnpackBits.  All the options except
  374. X+     for STRONGHOLD were defined.  BITFIELDS was defined in order to come in
  375. X+     under the 32K global data limit.
  376. X+ 
  377. X+     For compilers, you can select from LSC or THINKC4 (or AZTEC if you want to
  378. X+     do some work).  If you select AZTEC or LSC (not THINKC4) you'll have to
  379. X+     define KR1ED and SMALLDATA (AZTEC users might be able to get around it).
  380. X+     This sets up a macro which allows older preprocessors to make use of the
  381. X+     defined() construct.  (The options in part 4 of config.h have a 1
  382. X+     following them to allow the defined() macro to work.)
  383. X+     
  384. X+     If you use precompiled headers in Lightspeed/THINK C v.3 or Think C v.4
  385. X+     you'll have to rename "hack.h" to something else.  Precompile the renamed
  386. X+     hack.h file and save this as "hack.h".  In order for the precompiled
  387. X+     headers to work, they must be the first #include/#define statement in
  388. X+     every source file.  Certain source files contain "#define MONATTK_H" or an
  389. X+     "#include xxx.h" before the first "#include hack.h"; the #defines can just
  390. X+     be commented out while the #includes will have to move after the
  391. X+     "#include hack.h".
  392. X+ 
  393. X+     Under the "Set Project Type..." menu, select Application, File type 'APPL',
  394. X+     Creator 'nh30', Partition 700K, Separate STRS, and select Background Null
  395. X+     Events and Suspend & Resume Events from the Multifinder Popup menu.
  396. X+ 
  397. X+     An executable with all features set, except for STRONGHOLD, will be around
  398. X+     600K in size.
  399. X+ 
  400. X+ 5.  If you want to, look through system.h.  This file attempts to match the
  401. X+     types for system calls and library routines with various flavors of
  402. X+     operating systems.  Leaving this file alone is unlikely to cause problems,
  403. X+     but if you're using a different compiler and get compile errors with
  404. X+     any functions in the standard library, it's worth checking the
  405. X+     declarations there.
  406. X+ 
  407. X+ 6.  If you want to change the high score list behavior, go to the src
  408. X+     subdirectory and look at the top of topten.c.  You may want to change the
  409. X+     definitions of PERSMAX, POINTSMIN, and ENTRYMAX.  I set POINTSMIN of
  410. X+     51 and ENTRYMAX of 50 to keep the size of the score list down.
  411. X+ 
  412. X+ 7.  Build the resource files for Nethack and makedefs with Rez.
  413. X+     It should be easy to derive an RMaker file from the Rez file, if you need
  414. X+     to.
  415. X+ 
  416. X+ 8.  Compile and run the makedefs application.  The source files needed for
  417. X+     makedefs are:
  418. X+     alloc.c, macfile.c, makedefs.c, monst.c, objects.c, and panic.c
  419. X+     
  420. X+     You'll have to uncomment the #define's in monst.c, panic.c, makedefs.c,
  421. X+     and macfile.c. These are used especially to construct the monst
  422. X+     resource for the nethack app.
  423. X+     
  424. X+     Link in the necessary libraries (you can get this list from the routines
  425. X+     that your linker complains aren't there).
  426. X+ 
  427. X+     Run makedefs and select all the options [ Note you'll have to run makedefs
  428. X+     several times to do this].  This will build the necessary include and
  429. X+     auxiliary files.
  430. X+ 
  431. X+     N.B.  Lightspeed/Think C users:  you really can't use precompiled headers
  432. X+     here since there is no ONE header file.  It is such a small app
  433. X+     that the benefit of a precompiled header is small.
  434. X+ 
  435. X+     The makedefs application doesn't use the custom display routines, just
  436. X+     the default console routines that come with your compiler.
  437. X+ 
  438. X+     For ease of use make sure the support files data, rumors, cmdhelp, opthelp,
  439. X+     help, hh, history, and license (and oracles, if you compiled in that
  440. X+     feature) got copied to the game directory.  If not, move them there from
  441. X+     the auxil directory yourself.  rumors can be created manually by selecting
  442. X+     'rumors' from makedefs; data by selecting 'data' from makedefs.
  443. X+ 
  444. X+     If you're industrious you might try working on the special files.
  445. X+     If you compiled in the special levels, make sure castle, tower?, and
  446. X+     perhaps endgame are there, too.  The lev_comp file will create these.
  447. X+ 
  448. X+ Notes:
  449. X+ 
  450. X+ 1.  No, your old save files and bones files will not work with NetHack 3.0.
  451. X+     Don't bother trying to keep them.  The old score list will work fine,
  452. X+     but I recommend you delete it and create a new, empty one ('type record
  453. X+     >record' will do this nicely).  It is a good deal harder to achieve the
  454. X+     same scores in this version.
  455. X+ 
  456. X+ 2.  For Aztec C:
  457. X+     To install an update of this version of NetHack after changing something,
  458. X+     type 'make' from the src directory.  If you created the new version
  459. X+     yourself, it should be safe to use 'make update' as long as you did not
  460. X+     add, delete, or reorder monsters or objects and you did not change 
  461. X+     the format of saved level files.  If you did any of these things, you
  462. X+     should also delete any saved games and bones levels.  (Trying to use such
  463. X+     files often produces amusing but useless confusions on the game's part.)
  464. X+ 
  465. X+ 3.  If you have any problems with Think/Lightspeed C you might try these
  466. X+     two suggestions:
  467. X+            a) Increase the Partition Size for NetHack to >700K.
  468. X+     and/or b) Remove all the objects from the Project and do a full build.
  469. X*** /dev/null    Sun Oct 15 18:11:11 1989
  470. X--- mac/Segments.mac    Sat Oct 14 16:59:03 1989
  471. X***************
  472. X*** 0 ****
  473. X--- 1,148 ----
  474. X+ Segments.mac
  475. X+ ============
  476. X+ 
  477. X+ For THINK C users (v.3.01p4 and 4), you have to construct a project.
  478. X+ The mods I made in allmain.c make use of the placement of the
  479. X+ source files in each segment.  Except for Segment 1 below, changing
  480. X+ the contents of any of the other segments is fine as long as you
  481. X+ make sure the UnloadSeg's still refer to a routine in all segments
  482. X+ except for Segment 1.
  483. X+ This is just an example of the layout of a project. It takes time
  484. X+ to do this.  Probably the slowest part of THINK C!
  485. X+ For THINK C 4 users, the 5 or so different libraries are replaced
  486. X+ by the ANSI and unix libraries of v.4. - JL
  487. X+ For other compilers, you can still follow the same format, though
  488. X+ I haven't done it myself yet.
  489. X+ 
  490. X+ ===== Seg 1 =====
  491. X+ allmain.c
  492. X+ alloc.c
  493. X+ cmd.c
  494. X+ getline.c
  495. X+ mac.c
  496. X+ macfile.c
  497. X+ pcmain.c
  498. X+ prisym.c
  499. X+ random.c
  500. X+ rnd.c
  501. X+ termcap.c
  502. X+ 
  503. X+ ===== Seg 2 =====
  504. X+ apply.c
  505. X+ attrib.c
  506. X+ do.c
  507. X+ hack.c
  508. X+ 
  509. X+ ===== Seg 3 =====
  510. X+ dog.c
  511. X+ dogmove.c
  512. X+ dokick.c
  513. X+ dothrow.c
  514. X+ do_name.c
  515. X+ 
  516. X+ ===== Seg 4 =====
  517. X+ do_wear.c
  518. X+ eat.c
  519. X+ shk.c
  520. X+ shknam.c
  521. X+ 
  522. X+ ===== Seg 5 =====
  523. X+ engrave.c
  524. X+ exper.c
  525. X+ extralev.c
  526. X+ fountain.c
  527. X+ invent.c
  528. X+ vault.c
  529. X+ 
  530. X+ ===== Seg 6 =====
  531. X+ lock.c
  532. X+ makemon.c
  533. X+ mcastu.c
  534. X+ mhitm.c
  535. X+ 
  536. X+ ===== Seg 7 =====
  537. X+ mhitu.c
  538. X+ uhitm.c
  539. X+ 
  540. X+ ===== Seg 8 =====
  541. X+ mklev.c
  542. X+ mkobj.c
  543. X+ mkroom.c
  544. X+ mon.c
  545. X+ 
  546. X+ ===== Seg 9 =====
  547. X+ mondata.c
  548. X+ monmove.c
  549. X+ mthrowu.c
  550. X+ music.c
  551. X+ objnam.c
  552. X+ 
  553. X+ ===== Seg 10 =====
  554. X+ pager.c
  555. X+ pickup.c
  556. X+ polyself.c
  557. X+ potion.c
  558. X+ 
  559. X+ ===== Seg 11 =====
  560. X+ pray.c
  561. X+ pri.c
  562. X+ priest.c
  563. X+ read.c
  564. X+ 
  565. X+ ===== Seg 12 =====
  566. X+ restore.c
  567. X+ rumors.c
  568. X+ save.c
  569. X+ search.c
  570. X+ sit.c
  571. X+ sounds.c
  572. X+ spell.c
  573. X+ steal.c
  574. X+ 
  575. X+ ===== Seg 13 =====
  576. X+ timeout.c
  577. X+ topl.c
  578. X+ track.c
  579. X+ trap.c
  580. X+ weapon.c
  581. X+ were.c
  582. X+ wield.c
  583. X+ 
  584. X+ ===== Seg 14 =====
  585. X+ Math [LIB]
  586. X+ unix [LIB]
  587. X+ worn.c
  588. X+ write.c
  589. X+ zap.c
  590. X+ 
  591. X+ ===== Seg 15 =====
  592. X+ MacTraps
  593. X+ stdio [LIB]
  594. X+ storage [LIB]
  595. X+ strings [LIB]
  596. X+ 
  597. X+ ===== Seg 16 =====
  598. X+ decl.c
  599. X+ macinit.c
  600. X+ monst.c
  601. X+ objects.c
  602. X+ options.c
  603. X+ o_init.c
  604. X+ u_init.c
  605. X+ version.c
  606. X+ 
  607. X+ ===== Seg 17 =====
  608. X+ end.c
  609. X+ pctty.c
  610. X+ pcunix.c
  611. X+ rip.c
  612. X+ topten.c
  613. X+ 
  614. X+ ===== Seg 18 =====
  615. X+ artifact.c
  616. X+ bones.c
  617. X+ dbridge.c
  618. X+ demon.c
  619. X+ mkmaze.c
  620. X+ wizard.c
  621. X+ worm.c
  622. X*** /dev/null    Sun Oct 15 18:11:40 1989
  623. X--- mac/macfile.c    Sat Oct 14 12:10:13 1989
  624. X***************
  625. X*** 0 ****
  626. X--- 1,107 ----
  627. X+ /*    SCCS Id: @(#)macfile.c    3.0    88/08/05
  628. X+ /*      Copyright (c) Johnny Lee, 1989.         */
  629. X+ /* NetHack may be freely redistributed.  See license for details. */
  630. X+ 
  631. X+ /*    Common routines to locate files using mac dialog boxes */
  632. X+ 
  633. X+ /*#define MAKEDEFS_C    1    /* define when using makedefs */
  634. X+ #include "config.h"
  635. X+ #ifdef MACOS
  636. X+ 
  637. X+ short
  638. X+ findNamedFile(filename,type,reply)
  639. X+ char    *filename;
  640. X+ short    type;    /* if 0 - don't care if name matches selected file */
  641. X+ SFReply    *reply;
  642. X+ {
  643. X+     DialogPtr    dialog;
  644. X+     short    numTypes;
  645. X+     SFTypeList    types;    
  646. X+     Str255    prompt, name;
  647. X+     Point    where;
  648. X+     short    ok;
  649. X+     DialogRecord    storage;
  650. X+     
  651. X+     name[0] = (char)strlen(filename);
  652. X+     Strcpy((char *)&name[1], filename);
  653. X+     dialog = GetNewDialog(128,&storage,(WindowPtr)-1);
  654. X+     
  655. X+     if (type == 1)
  656. X+         ParamText("\005 save","\004 for",name,"");
  657. X+     else
  658. X+         ParamText("","",name,"");
  659. X+     
  660. X+     where.h = 80;
  661. X+     where.v = 111;
  662. X+     ok = FALSE;
  663. X+     
  664. X+     switch (type) {
  665. X+       case 0:    /* don't care what file gets loaded */
  666. X+           numTypes = -1;
  667. X+           break;
  668. X+       case 1:    /* limit what types of files can be selected */
  669. X+           numTypes = 2;
  670. X+         types[0] = SAVE_TYPE;
  671. X+         types[1] = EXPLORE_TYPE;
  672. X+         break;
  673. X+       case 2:    /* unlimited types of files but names have to match*/
  674. X+           numTypes = -1;
  675. X+           break;
  676. X+     }
  677. X+     reply->good = TRUE;
  678. X+     do {
  679. X+         BringToFront((WindowPtr)dialog);
  680. X+         ShowWindow((WindowPtr)dialog);
  681. X+         DrawDialog(dialog);
  682. X+         SFGetFile(where,prompt,0L,numTypes,types,0L,reply);
  683. X+         HideWindow((WindowPtr)dialog);
  684. X+         if (reply->good) {
  685. X+             if ((type == 2 && 
  686. X+                 !strncmp((char *)&name[1],
  687. X+                     (char *)&(reply->fName[1]), (short)name[0]))
  688. X+                  || (type<2)) {
  689. X+                 SetVol(0L,reply->vRefNum);
  690. X+                 ok = TRUE;
  691. X+             }
  692. X+         }
  693. X+     } while (!ok && reply->good);
  694. X+     CloseDialog(dialog);
  695. X+     return ok;
  696. X+ }
  697. X+ 
  698. X+ #ifndef MAKEDEFS_C
  699. X+ extern WindowPtr HackWindow;
  700. X+ 
  701. X+ /*    this function also gets called by topten() in topten.c to
  702. X+  *    locate the record file, but it doesn't matter at this point
  703. X+  *    since the game is over by now. If nethack ever restarts,
  704. X+  *    this will have to change.
  705. X+  */
  706. X+ 
  707. X+ FILE *
  708. X+ openFile(fileName)
  709. X+ char    *fileName;
  710. X+ {
  711. X+     term_info *t;
  712. X+     SFReply    reply;
  713. X+     FILE    *fp;
  714. X+         
  715. X+     t = (term_info *)GetWRefCon(HackWindow);
  716. X+     if (t->auxFileVRefNum) {
  717. X+         SetVol(0L,t->auxFileVRefNum);
  718. X+     }
  719. X+     fp = fopen(fileName,"r");
  720. X+     if (!fp && findNamedFile(fileName,2,&reply)) {
  721. X+         if (reply.good) {
  722. X+             t->auxFileVRefNum = reply.vRefNum;
  723. X+         }
  724. X+     }
  725. X+     if (!fp)
  726. X+         fp = fopen(fileName,"r");
  727. X+     else if (!t->auxFileVRefNum) {
  728. X+         (void)GetVol((StringPtr)&reply.fName,&t->auxFileVRefNum);
  729. X+     }
  730. X+     return fp;
  731. X+ }
  732. X+ #endif
  733. X+ #endif
  734. X*** /dev/null    Sun Oct 15 18:11:51 1989
  735. X--- mac/macinit.c    Sun Oct 15 12:05:22 1989
  736. X***************
  737. X*** 0 ****
  738. X--- 1,304 ----
  739. X+ /*    SCCS Id: @(#)macinit.c    3.0    88/08/05
  740. X+ /* Copyright (c) Johnny Lee, 1989.         */
  741. X+ /* NetHack may be freely redistributed.  See license for details. */
  742. X+ 
  743. X+ /*    Initialization routine for the Macintosh */
  744. X+ 
  745. X+ #include    "hack.h"
  746. X+ 
  747. X+ #ifdef MACOS
  748. X+ 
  749. X+ /* Global variables */
  750. X+ extern WindowPtr    HackWindow;    /* points to NetHack's window */
  751. X+ char    *keys[8];
  752. X+ short macflags;
  753. X+ typedef struct defaultData {
  754. X+     long    defaultFlags;
  755. X+     long    fontSize;
  756. X+     Str255    fontName;
  757. X+ } defaultData;
  758. X+ #define    fDFZoomWindow    0x02L
  759. X+ #define    fDFUseDefaultFont    0x01L
  760. X+ 
  761. X+ 
  762. X+ int
  763. X+ initterm(row, col)
  764. X+ short    row, col;
  765. X+ {
  766. X+     register short    i, j;
  767. X+     short        tempFont, tempSize, fontNum, size;
  768. X+     char    *l;
  769. X+     EventRecord    theEvent;
  770. X+     FontInfo    fInfo;
  771. X+     Handle    temp;
  772. X+     MenuHandle    theMenu;
  773. X+     OSErr    error;
  774. X+     Rect        boundsRect;
  775. X+     Str255    appName, font;
  776. X+     defaultData    *dD;
  777. X+     term_info    *t;
  778. X+     
  779. X+     /* standard Mac initialization */
  780. X+     MaxApplZone();
  781. X+     MoreMasters();
  782. X+     MoreMasters();
  783. X+     MoreMasters();
  784. X+     MoreMasters();
  785. X+     InitGraf(&MAINGRAFPORT);
  786. X+     
  787. X+     InitFonts();
  788. X+     InitWindows();
  789. X+     InitMenus();
  790. X+     InitCursor();
  791. X+     FlushEvents(everyEvent, 0);
  792. X+     if (error = GetVol((StringPtr)&appName, &tempSize))
  793. X+         SysBeep(1);
  794. X+     
  795. X+     /* Application-specific startup code */
  796. X+     theMenu = NewMenu(appleMenu, "\001\024");    /*  apple menu  */
  797. X+     AppendMenu(theMenu,"\030About NetHack 3.0g\311;(-");
  798. X+     AddResMenu(theMenu, 'DRVR');
  799. X+     InsertMenu(theMenu, 0);
  800. X+     DisableItem(theMenu,0);
  801. X+ 
  802. X+     t = (term_info *)malloc(sizeof(term_info));
  803. X+     t->recordVRefNum = tempSize;
  804. X+     
  805. X+     for (i = fileMenu; i <= extendMenu; i++) {
  806. X+         theMenu = GetMenu(i);
  807. X+         if (theMenu) {
  808. X+             InsertMenu(theMenu, 0);
  809. X+             DisableItem(theMenu, 0);
  810. X+         }
  811. X+         if (i == editMenu) {
  812. X+             t->shortMBarHandle = GetMenuBar();
  813. X+         }
  814. X+     }
  815. X+     t->fullMBarHandle = GetMenuBar();
  816. X+     
  817. X+     DrawMenuBar();
  818. X+     HiliteMenu(0);
  819. X+     for (i = 0;i <= 7;i++) {
  820. X+         temp = GetResource(HACK_DATA,(i + 100 + appleMenu));
  821. X+         if (!temp) {
  822. X+             SysBeep(1);
  823. X+             panic("Can't get MENU_DATA resource");
  824. X+         }
  825. X+         MoveHHi(temp);
  826. X+         HLock(temp);
  827. X+         DetachResource(temp);
  828. X+         keys[i] = *temp;
  829. X+     }
  830. X+ 
  831. X+     macflags = (fToggleNumPad | fDoNonKeyEvt);
  832. X+     
  833. X+     /* Set font to monaco, user-defined font or to Hackfont if available */
  834. X+     size = 9;
  835. X+     strcpy((char *)&font[0], "\006Monaco");
  836. X+     
  837. X+     temp = GetResource(HACK_DATA, DEFAULT_DATA);
  838. X+     if (temp) {
  839. X+         HLock(temp);
  840. X+         dD = (defaultData *)(*temp);
  841. X+         size = (short)dD->fontSize;
  842. X+         strncpy((char *)&font[0], (char *)&dD->fontName[0],
  843. X+                     (short)dD->fontName[0] + 1);
  844. X+         if (dD->defaultFlags & fDFZoomWindow)
  845. X+             macflags |= fZoomOnContextSwitch;
  846. X+         HUnlock(temp);
  847. X+         ReleaseResource(temp);
  848. X+     }
  849. X+             
  850. X+     tempFont = MAINGRAFPORT->txFont;
  851. X+     tempSize = MAINGRAFPORT->txSize;
  852. X+     GetFNum(font, &fontNum);
  853. X+     TextFont(fontNum);
  854. X+     TextSize(size);
  855. X+     GetFontInfo(&fInfo);
  856. X+     TextFont(tempFont);
  857. X+     TextSize(tempSize);
  858. X+     
  859. X+     if (!(dD->defaultFlags & fDFUseDefaultFont)) {
  860. X+         Strcpy((char *)&appName[0], "\010HackFont");
  861. X+         GetFNum(appName,&tempFont);
  862. X+         if (tempFont) {
  863. X+             fontNum = tempFont;
  864. X+             tempFont = MAINGRAFPORT->txFont;
  865. X+             TextFont(fontNum);
  866. X+             TextSize(size);
  867. X+             GetFontInfo(&fInfo);
  868. X+             TextFont(tempFont);
  869. X+             TextSize(tempSize);
  870. X+             macflags |= fUseCustomFont;
  871. X+         }
  872. X+     }
  873. X+     
  874. X+     i = fInfo.ascent + fInfo.descent + fInfo.leading;
  875. X+     j = fInfo.widMax;
  876. X+     if ((row * i + 2 * Screen_Border) >
  877. X+          (SCREEN_BITS.bounds.bottom - SCREEN_BITS.bounds.top)
  878. X+          ||
  879. X+          (col * j + 2 * Screen_Border) >
  880. X+              (SCREEN_BITS.bounds.right - SCREEN_BITS.bounds.left)) {
  881. X+         size = 9;
  882. X+         Strcpy((char *)&font[0], "\006Monaco");
  883. X+         tempFont = MAINGRAFPORT->txFont;
  884. X+         tempSize = MAINGRAFPORT->txSize;
  885. X+         GetFNum(font, &fontNum);
  886. X+         TextFont(fontNum);
  887. X+         TextSize(size);
  888. X+         GetFontInfo(&fInfo);
  889. X+         TextFont(tempFont);
  890. X+         TextSize(tempSize);
  891. X+         i = fInfo.ascent + fInfo.descent + fInfo.leading;
  892. X+         j = fInfo.widMax;
  893. X+         macflags &= ~fUseCustomFont;
  894. X+     }        
  895. X+          
  896. X+     t->ascent = fInfo.ascent;
  897. X+     t->descent = fInfo.descent;
  898. X+     t->height = i;
  899. X+     t->charWidth = j;
  900. X+     
  901. X+     t->fontNum = fontNum;
  902. X+     t->fontSize = size;
  903. X+     t->maxRow = row;
  904. X+     t->maxCol = col;
  905. X+     t->tcur_x = 0;
  906. X+     t->tcur_y = 0;
  907. X+     t->auxFileVRefNum = 0;
  908. X+     if (error = SysEnvirons(1, &(t->system))) {
  909. X+         SysBeep(1);
  910. X+     }
  911. X+ 
  912. X+ #define    KEY_MAP    103
  913. X+     temp = GetResource(HACK_DATA, KEY_MAP);
  914. X+     if (temp) {
  915. X+         MoveHHi(temp);
  916. X+         HLock(temp);
  917. X+         DetachResource(temp);
  918. X+         t->keyMap = (char *)(*temp);
  919. X+     } else
  920. X+         panic("Can't get keymap resource");
  921. X+ 
  922. X+     SetRect(&boundsRect, LEFT_OFFSET, TOP_OFFSET + 10,
  923. X+         (col * fInfo.widMax) + LEFT_OFFSET + 2 * Screen_Border,
  924. X+         TOP_OFFSET + (row * t->height) + 2 * Screen_Border + 10);
  925. X+     
  926. X+     t->screen = (char **)malloc(row * sizeof(char *));
  927. X+     l = malloc(row * col * sizeof(char));
  928. X+     for (i = 0;i < row;i++) {
  929. X+         t->screen[i] = (char *)(l + (i * col * sizeof(char)));
  930. X+     }
  931. X+     for (i = 0; i < row; i++) {
  932. X+         for (j = 0; j < col; j++) {
  933. X+             t->screen[i][j] = ' ';
  934. X+         }
  935. X+     }
  936. X+ 
  937. X+     /* give time for Multifinder to bring NetHack window to front */
  938. X+     for(tempFont = 0; tempFont<10; tempFont++) {
  939. X+         (void)GetNextEvent(everyEvent,&theEvent);
  940. X+     }
  941. X+ 
  942. X+     HackWindow = NewWindow(0L, &boundsRect, "\015NetHack [MOV]",
  943. X+             TRUE, noGrowDocProc, (WindowPtr)-1, FALSE, (long)t);
  944. X+ 
  945. X+     t->inColor = 0;
  946. X+ #ifdef TEXTCOLOR
  947. X+     t->color[0] = blackColor;
  948. X+     t->color[1] = redColor;
  949. X+     t->color[2] = greenColor;
  950. X+     t->color[3] = yellowColor;
  951. X+     t->color[4] = blueColor;
  952. X+     t->color[5] = magentaColor;
  953. X+     t->color[6] = cyanColor;
  954. X+     t->color[7] = whiteColor;
  955. X+ 
  956. X+     if (t->system.hasColorQD) {
  957. X+         Rect    r;
  958. X+         GDHandle    gd;
  959. X+         
  960. X+         r = (**(*(WindowPeek)HackWindow).contRgn).rgnBBox;
  961. X+         LocalToGlobal(&r.top);
  962. X+         LocalToGlobal(&r.bottom);
  963. X+         gd = GetMaxDevice(&r);
  964. X+         t->inColor = (**(**gd).gdPMap).pixelSize > 1;
  965. X+     }
  966. X+ #endif
  967. X+         
  968. X+     temp = GetResource(HACK_DATA, MONST_DATA);
  969. X+     if (temp) {
  970. X+         DetachResource(temp);
  971. X+         MoveHHi(temp);
  972. X+         HLock(temp);
  973. X+         i = GetHandleSize(temp);
  974. X+         mons = (struct permonst *)(*temp);
  975. X+     } else {
  976. X+         panic("Can't get MONST resource data.");
  977. X+     }
  978. X+     
  979. X+     (void)aboutBox(0);    
  980. X+     return 0;
  981. X+ }
  982. X+ 
  983. X+ /* not really even needed. NH never gets to the end of main(), */
  984. X+ /* so this never gets called */
  985. X+ int
  986. X+ freeterm()
  987. X+ {
  988. X+     return 0;
  989. X+ }
  990. X+ 
  991. X+ #ifdef SMALLDATA
  992. X+ /* SOME [:-( ] Mac compilers have a 32K global & static data limit */
  993. X+ /* these routines help the HANDICAPPED things */
  994. X+ void
  995. X+ init_decl()
  996. X+ {
  997. X+     short    i;
  998. X+     char    *l;
  999. X+     
  1000. X+     l = calloc(COLNO , sizeof(struct rm **));
  1001. X+     level.locations = (struct rm **)l;
  1002. X+     l = calloc(ROWNO * COLNO , sizeof(struct rm));
  1003. X+     for (i = 0; i < COLNO; i++) {
  1004. X+         level.locations[i] = 
  1005. X+         (struct rm *)(l + (i * ROWNO * sizeof(struct rm)));
  1006. X+     }
  1007. X+     
  1008. X+     l = calloc(COLNO , sizeof(struct obj ***));
  1009. X+     level.objects = (struct obj ***)l;
  1010. X+     l = calloc(ROWNO * COLNO , sizeof(struct obj *));
  1011. X+     for (i = 0; i < COLNO; i++) {
  1012. X+         level.objects[i] = 
  1013. X+         (struct obj **)(l + (i * ROWNO * sizeof(struct obj *)));
  1014. X+     }
  1015. X+     
  1016. X+     l = calloc(COLNO , sizeof(struct monst ***));
  1017. X+     level.monsters = (struct monst ***)l;
  1018. X+     l = calloc(ROWNO * COLNO , sizeof(struct monst *));
  1019. X+     for (i = 0; i < COLNO; i++) {
  1020. X+         level.monsters[i] = 
  1021. X+         (struct monst **)(l + (i * ROWNO * sizeof(struct monst *)));
  1022. X+     }
  1023. X+     level.objlist = (struct obj *)0L;
  1024. X+     level.monlist = (struct monst *)0L;
  1025. X+     
  1026. X+ }
  1027. X+ 
  1028. X+ /* Since NetHack usually exits before reaching end of main()    */
  1029. X+ /* this routine could probably left out.    - J.L.        */
  1030. X+ void
  1031. X+ free_decl()
  1032. X+ {
  1033. X+ 
  1034. X+     free((char *)level.locations[0]);
  1035. X+     free((char *)level.locations);
  1036. X+     free((char *)level.objects[0]);
  1037. X+     free((char *)level.objects);
  1038. X+     free((char *)level.monsters[0]);
  1039. X+     free((char *)level.monsters);
  1040. X+ }
  1041. X+ #endif /* SMALLDATA */
  1042. X+ #endif /* MACOS */
  1043. X*** /dev/null    Sun Oct 15 18:12:02 1989
  1044. X--- mac/makedefs.r    Fri Oct 13 23:58:48 1989
  1045. X***************
  1046. X*** 0 ****
  1047. X--- 1,104 ----
  1048. X+ /******************************************************
  1049. X+  *                                                    *
  1050. X+  *        makedefs.r                                  *
  1051. X+  *                                                    *
  1052. X+  *        Resource file for makedefs application      *
  1053. X+  *                                                    *
  1054. X+  *        Copyright 1989 by Johnny Lee                *
  1055. X+  *        NetHack may be freely redistributed.        *
  1056. X+  *      See license for details.               *
  1057. X+  *                                                    *
  1058. X+  ******************************************************/
  1059. X+ 
  1060. X+ #include    "Types.r"
  1061. X+ 
  1062. X+ resource 'DLOG' (200) {
  1063. X+     {40, 40, 200, 320},
  1064. X+     dBoxProc,
  1065. X+     visible,
  1066. X+     noGoAway,
  1067. X+     0x0,
  1068. X+     200,
  1069. X+     "Which option?"
  1070. X+ };
  1071. X+ 
  1072. X+ resource 'DLOG' (128, "FindFile") {
  1073. X+     {40, 80, 100, 300},
  1074. X+     dBoxProc,
  1075. X+     invisible,
  1076. X+     noGoAway,
  1077. X+     0x0,
  1078. X+     128,
  1079. X+     "FindFile"
  1080. X+ };
  1081. X+ 
  1082. X+ resource 'DITL' (200) {
  1083. X+     { /* array DITLarray: 9 elements */
  1084. X+         /* [1] */
  1085. X+         {116, 51, 136, 111},
  1086. X+         Button {
  1087. X+             enabled,
  1088. X+             "OK"
  1089. X+         },
  1090. X+         /* [2] */
  1091. X+         {116, 158, 136, 218},
  1092. X+         Button {
  1093. X+             enabled,
  1094. X+             "Cancel"
  1095. X+         },
  1096. X+         /* [3] */
  1097. X+         {15, 15, 35, 75},
  1098. X+         RadioButton {
  1099. X+             enabled,
  1100. X+             "data"
  1101. X+         },
  1102. X+         /* [4] */
  1103. X+         {15, 95, 35, 155},
  1104. X+         RadioButton {
  1105. X+             enabled,
  1106. X+             "date"
  1107. X+         },
  1108. X+         /* [5] */
  1109. X+         {40, 95, 60, 180},
  1110. X+         RadioButton {
  1111. X+             enabled,
  1112. X+             "permonst"
  1113. X+         },
  1114. X+         /* [6] */
  1115. X+         {15, 180, 35, 250},
  1116. X+         RadioButton {
  1117. X+             enabled,
  1118. X+             "rumors"
  1119. X+         },
  1120. X+         /* [7] */
  1121. X+         {40, 15, 60, 75},
  1122. X+         RadioButton {
  1123. X+             enabled,
  1124. X+             "traps"
  1125. X+         },
  1126. X+         /* [8] */
  1127. X+         {65, 15, 85, 125},
  1128. X+         RadioButton {
  1129. X+             enabled,
  1130. X+             "object names"
  1131. X+         },
  1132. X+         /* [9] */
  1133. X+         {65, 145, 85, 270},
  1134. X+         RadioButton {
  1135. X+             enabled,
  1136. X+             "monst resource"
  1137. X+         }
  1138. X+     }
  1139. X+ };
  1140. X+ 
  1141. X+ resource 'DITL' (128) {
  1142. X+     { /* array DITLarray: 1 elements */
  1143. X+         /* [1] */
  1144. X+         {4, 8, 80, 212},
  1145. X+         StaticText {
  1146. X+             disabled,
  1147. X+             "Please locate^0 file^1 ^2\nor press Cance"
  1148. X+             "l to abort."
  1149. X+         }
  1150. X+     }
  1151. X+ };
  1152. X
  1153. END_OF_FILE
  1154. if test 29761 -ne `wc -c <'patches05a'`; then
  1155.     echo shar: \"'patches05a'\" unpacked with wrong size!
  1156. fi
  1157. # end of 'patches05a'
  1158. fi
  1159. if test -f 'UPDATE5' -a "${1}" != "-c" ; then 
  1160.   echo shar: Will not clobber existing file \"'UPDATE5'\"
  1161. else
  1162. echo shar: Extracting \"'UPDATE5'\" \(2197 characters\)
  1163. sed "s/^X//" >'UPDATE5' <<'END_OF_FILE'
  1164. XOld bones and save files should at least be syntactically correct this time,
  1165. Xbut you should still throw them out if you don't want to be confronted with
  1166. Xmonsters permanently masquerading as different monsters (since some of the
  1167. Xmonsters' letters have changed).
  1168. X
  1169. X
  1170. XNote that the posted shop fix was a stopgap patch, not an official patch, so
  1171. Xit should be reversed before applying these patches.  If you do not reverse 
  1172. Xit, probably nothing worse than a failure of one shk.c band will happen this
  1173. Xtime.  In general, however, you will have to do considerable hand-patching if
  1174. Xyou leave intermediate patches in.
  1175. X
  1176. X
  1177. XThe major bug fix in Patch 5 is moving the color definitions to color.h, thus
  1178. Xbreaking the annoying dependency loop when bootstrapping NetHack.
  1179. X
  1180. XPatch 5 contains Johnny Lee's provision of a port to the Macintosh.  The 
  1181. XMacintosh files live in a new subdirectory, 'mac'.  We know that many of you
  1182. Xwere waiting for a Mac port, and for you we are happy to have it.
  1183. X
  1184. XBasic support for several new other compilers or machines (see README), but 
  1185. Xthese probably need some more tweaking.
  1186. X
  1187. XA major new feature in Patch 5 is timed-out eating, i.e., being able to be
  1188. Xinterrupted while eating by monsters attack.  Mike Stephenson provided the 
  1189. Xbasic structure for dealing with partially eaten food.  We believe that the
  1190. Xonly remaining flaws in this code are occasional non-optimal messages which
  1191. Xare generated by it (we are working on correcting this).
  1192. X
  1193. XIncorrect iron ball behavior and bugs in the iron ball code were 
  1194. Xsystematically corrected by Kevin Darcy who communicated with us about it
  1195. Xand mailed us his patches.  (Yes, Kevin, as you can see, it went in, and 
  1196. Xwith only one minor change.)  
  1197. X
  1198. XThere were other, smaller, patches which were mailed to us and which were
  1199. Ximplemented.  To repeat:  we are very happy to receive bug-fixing patches
  1200. Xand code-enhancement patches.  But please do as Kevin did, namely, tell us
  1201. Xabout it in advance.
  1202. X
  1203. XDifficulties with dropping objects in shops, burning to death in hell, 
  1204. Xwielding amulets, pets eating corpses were fixed.  So were scores of other
  1205. Xsmall but annoying bugs.
  1206. X
  1207. XMICROPORT_BUG was added to cater to compilers that don't like large 
  1208. Xstructures.
  1209. X
  1210. END_OF_FILE
  1211. if test 2197 -ne `wc -c <'UPDATE5'`; then
  1212.     echo shar: \"'UPDATE5'\" unpacked with wrong size!
  1213. fi
  1214. # end of 'UPDATE5'
  1215. fi
  1216. echo shar: End of archive 1 \(of 6\).
  1217. cp /dev/null ark1isdone
  1218. MISSING=""
  1219. for I in 1 2 3 4 5 6 ; do
  1220.     if test ! -f ark${I}isdone ; then
  1221.     MISSING="${MISSING} ${I}"
  1222.     fi
  1223. done
  1224. if test "${MISSING}" = "" ; then
  1225.     echo You have unpacked all 6 archives.
  1226.     rm -f ark[1-9]isdone
  1227. else
  1228.     echo You still need to unpack the following archives:
  1229.     echo "        " ${MISSING}
  1230. fi
  1231. ##  End of shell archive.
  1232. exit 0
  1233.