home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume7 / nethack3 / patch3a < prev    next >
Internet Message Format  |  1989-09-11  |  61KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i016:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch3a
  5. Message-ID: <4535@tekred.CNA.TEK.COM>
  6. Date: 7 Sep 89 21:47:38 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 2000
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 16
  13. Archive-name: NetHack3/Patch3a
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.     [Here is the 3rd patch to NetHack3, in 6 parts (3a-3f). This
  17.      should be unpacked in the top level NetHack source directory,
  18.      then run the do_patch3.sh shell script (if you're on Unix). -br]
  19. [[The main changes included in patch kit 3 are as follows:
  20.  
  21. A few new objects were added to objects.c, so old save/bones files 
  22. should be thrown out.
  23.  
  24. Prototypes were adapted to satisfy ANSI C.  Hopefully, we will not see
  25. anymore postings which helpfully fix prototypes for ANSI, while breaking
  26. them for the MSDOS compilers they were, originally, set up for.
  27.  
  28. Use of $(MAKE), and a better use of $PAGER, in scripts.
  29.  
  30. Improvements to OS/2 and TOS code, including their Makefiles.
  31.  
  32. Graphics setting was centralized.
  33.  
  34. Alignment was added to artifacts, and their suitability was improved.
  35.  
  36. Discover mode games no longer use up bones files.
  37.  
  38. Some excess 'register's that were giving Xenix trouble were removed.
  39.  
  40. We settled an (amusing) argument over "rights" to available bits which
  41. was responsible (unintentionally) for ring-wielding bestowing
  42. long-lasting intrinsic attributes.  
  43.  
  44. In addition, many bugs were fixed.  Among those were the problems
  45. with polymorphing creatures that swallowed you, finishing with
  46. containers, having chains eaten, external pagers, statue weights, wishing
  47. loopholes, parsing endgame options, and monsters growing up.
  48.  
  49. In other words, this is a nuts and bolts patch, nothing dramatic but
  50. lots of cleanup.]]
  51.  
  52. #! /bin/sh
  53. # This is a shell archive.  Remove anything before this line, then unpack
  54. # it by saving it into a file and typing "sh file".  To overwrite existing
  55. # files, type "sh file -c".  You can also feed this as standard input via
  56. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  57. # will see the following message at the end:
  58. #        "End of archive 1 (of 6)."
  59. # Contents:  do_patch3.sh patch03a
  60. # Wrapped by billr@saab on Thu Sep  7 14:37:49 1989
  61. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  62. if test -f 'do_patch3.sh' -a "${1}" != "-c" ; then 
  63.   echo shar: Will not clobber existing file \"'do_patch3.sh'\"
  64. else
  65. echo shar: Extracting \"'do_patch3.sh'\" \(453 characters\)
  66. sed "s/^X//" >'do_patch3.sh' <<'END_OF_FILE'
  67. X#! /bin/sh
  68. X# script to call patch to apply diff files
  69. X# make sure all of the patch files (and this file) are in your top level
  70. X# NetHack directory
  71. X#
  72. Xecho "applying patch3a"
  73. Xpatch -p <patch03a
  74. Xecho "applying patch3b"
  75. Xpatch -p <patch03b
  76. Xecho "applying patch3c"
  77. Xpatch -p <patch03c
  78. Xecho "applying patch3d"
  79. Xpatch -p <patch03d
  80. Xecho "applying patch3e"
  81. Xpatch -p <patch03e
  82. Xecho "applying patch3f"
  83. Xpatch -p <patch03f
  84. Xecho "all patches applied, check for rejects"
  85. END_OF_FILE
  86. if test 453 -ne `wc -c <'do_patch3.sh'`; then
  87.     echo shar: \"'do_patch3.sh'\" unpacked with wrong size!
  88. fi
  89. chmod +x 'do_patch3.sh'
  90. # end of 'do_patch3.sh'
  91. fi
  92. if test -f 'patch03a' -a "${1}" != "-c" ; then 
  93.   echo shar: Will not clobber existing file \"'patch03a'\"
  94. else
  95. echo shar: Extracting \"'patch03a'\" \(55369 characters\)
  96. sed "s/^X//" >'patch03a' <<'END_OF_FILE'
  97. X*** ./Old/Install.dos    Wed Sep  6 15:20:30 1989
  98. X--- ./Install.dos    Mon Sep  4 23:42:21 1989
  99. X***************
  100. X*** 1,5 ****
  101. X! Instructions for installing NetHack 3.0 on an MS-DOS system
  102. X! ===========================================================
  103. X  
  104. X  1.  Make sure all the NetHack files are in the appropriate directory structure.
  105. X      You should have a main directory with subdirectories src, include, auxil,
  106. X--- 1,5 ----
  107. X! Instructions for installing NetHack 3.0 on an MS-DOS or TOS system
  108. X! ==================================================================
  109. X  
  110. X  1.  Make sure all the NetHack files are in the appropriate directory structure.
  111. X      You should have a main directory with subdirectories src, include, auxil,
  112. X***************
  113. X*** 15,29 ****
  114. X      have to run a program such as Rahul Dhesi's 'flip' to convert them.
  115. X  
  116. X  2.  Move everything from the others directory to your src directory; you'll
  117. X!     be needing it, especially pc*.c.  PC NetHack needs msdos.c, ST NetHack
  118. X!     needs tos.c.
  119. X  
  120. X  3.  You should have several Makefiles in your src directory now.  If you are
  121. X      using Microsoft C, rename Makefile.pc to Makefile; if Turbo C, rename
  122. X      Makefile.tcc to Makefile, and also rename Maketcc.ini to Make.ini.
  123. X      NDMake can find Make.ini anywhere on your PATH, so you may relocate it
  124. X!     if you wish.  If you are using another compiler, you will have to adapt
  125. X!     one of the Makefiles and the Make.ini file to your needs.  Good luck.
  126. X  
  127. X      As for the other Makefiles, I would delete them to make space, but you may
  128. X      want to keep them around for comparison in case something goes wrong.  Two
  129. X--- 15,31 ----
  130. X      have to run a program such as Rahul Dhesi's 'flip' to convert them.
  131. X  
  132. X  2.  Move everything from the others directory to your src directory; you'll
  133. X!     be needing it, especially pc*.c.  PC NetHack needs msdos.c, as does
  134. X!     ST NetHack.
  135. X  
  136. X  3.  You should have several Makefiles in your src directory now.  If you are
  137. X      using Microsoft C, rename Makefile.pc to Makefile; if Turbo C, rename
  138. X      Makefile.tcc to Makefile, and also rename Maketcc.ini to Make.ini.
  139. X      NDMake can find Make.ini anywhere on your PATH, so you may relocate it
  140. X!     if you wish.  If you're using the GCC on an Atari ST system, rename
  141. X!     Makefile.st to Makefile.  If you are using another compiler, you will
  142. X!     have to adapt one of the Makefiles (and the Make.ini file, if you're
  143. X!     using NDMake) to your needs.  Good luck.
  144. X  
  145. X      As for the other Makefiles, I would delete them to make space, but you may
  146. X      want to keep them around for comparison in case something goes wrong.  Two
  147. X***************
  148. X*** 32,39 ****
  149. X  
  150. X  4.  Go to the include subdirectory and edit config.h according to the comments
  151. X      to match your system and desired set of features.  Similarly edit
  152. X!     pcconf.h.
  153. X  
  154. X      The base size of the executable, with no extra features, will be around
  155. X      520K in size.  Anything over 540K is likely not to work.  With MicroSoft
  156. X      C, here is an incomplete list of the costs of various additional features
  157. X--- 34,47 ----
  158. X  
  159. X  4.  Go to the include subdirectory and edit config.h according to the comments
  160. X      to match your system and desired set of features.  Similarly edit
  161. X!     pcconf.h.  For Atari ST users, edit tosconf.h.  If you're an ST owner
  162. X!     using something other than the GCC, it's possible that you might
  163. X!     want to define the symbol OLD_TOS and use oldtos.c instead of msdos.c.
  164. X!     This is *not* guaranteed to work, so be prepared to make some changes
  165. X!     either way.
  166. X  
  167. X+     (ST owners can also skip this section, since the complete game will fit
  168. X+      in <1 megabyte, and nothing you do is likely to make it work on a 520).
  169. X      The base size of the executable, with no extra features, will be around
  170. X      520K in size.  Anything over 540K is likely not to work.  With MicroSoft
  171. X      C, here is an incomplete list of the costs of various additional features
  172. X***************
  173. X*** 97,102 ****
  174. X--- 105,114 ----
  175. X      occupied for a long time.  If all goes well, you will get an executable.
  176. X      If you tried to compile in too many features, you probably will not get
  177. X      a working one, and have to start over.
  178. X+ 
  179. X+     TOS users: if you're short on memory (and GCC users will be short on
  180. X+     memory if they only have 2 megabytes) you might want to type
  181. X+     'make -n all >script' and then use the Gulam command 'source script'.
  182. X  
  183. X  8.  Edit NetHack.cnf to reflect your particular setup, following the comments.
  184. X      Then move the file to your game directory, along with the termcap file.
  185. X*** ./Old/Makefile.top    Wed Sep  6 15:20:53 1989
  186. X--- ./Makefile.top    Sun Sep  3 17:28:31 1989
  187. X***************
  188. X*** 31,53 ****
  189. X  AUX = $(AUXHELP) $(VARAUX) $(SPEC_LEVS) license
  190. X  
  191. X  $(GAME):
  192. X!     ( cd src ; make )
  193. X  
  194. X  all:    $(GAME) Guidebook data rumors spec_levs
  195. X      @echo "Done."
  196. X  
  197. X  Guidebook:
  198. X!     ( cd auxil ; make Guidebook )
  199. X  
  200. X  data:
  201. X!     ( cd auxil ; make data )
  202. X  
  203. X  rumors:
  204. X!     ( cd auxil ; make rumors )
  205. X  
  206. X  spec_levs:
  207. X!     ( cd src ; make lev_comp )
  208. X!     ( cd auxil ; make spec_levs )
  209. X      
  210. X  update: $(GAME) data rumors spec_levs
  211. X  # copy over new versions of the game files
  212. X--- 31,53 ----
  213. X  AUX = $(AUXHELP) $(VARAUX) $(SPEC_LEVS) license
  214. X  
  215. X  $(GAME):
  216. X!     ( cd src ; $(MAKE) )
  217. X  
  218. X  all:    $(GAME) Guidebook data rumors spec_levs
  219. X      @echo "Done."
  220. X  
  221. X  Guidebook:
  222. X!     ( cd auxil ; $(MAKE) Guidebook )
  223. X  
  224. X  data:
  225. X!     ( cd auxil ; $(MAKE) data )
  226. X  
  227. X  rumors:
  228. X!     ( cd auxil ; $(MAKE) rumors )
  229. X  
  230. X  spec_levs:
  231. X!     ( cd src ; $(MAKE) lev_comp )
  232. X!     ( cd auxil ; $(MAKE) spec_levs )
  233. X      
  234. X  update: $(GAME) data rumors spec_levs
  235. X  # copy over new versions of the game files
  236. X***************
  237. X*** 56,61 ****
  238. X--- 56,62 ----
  239. X      mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
  240. X      cp src/$(GAME) $(GAMEDIR)
  241. X      sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
  242. X+         -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
  243. X          < auxil/nethack.sh \
  244. X          > $(SHELLDIR)/$(GAME)
  245. X  # correct the permissions on the new versions
  246. X***************
  247. X*** 82,87 ****
  248. X--- 83,89 ----
  249. X      ( cd auxil ; cp $(AUX) $(GAMEDIR) )
  250. X      cp src/$(GAME) $(GAMEDIR)
  251. X      sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
  252. X+         -e 's;HACKDIR/nethack;HACKDIR/$(GAME);' \
  253. X          < auxil/nethack.sh \
  254. X          > $(SHELLDIR)/$(GAME)
  255. X  # set up the permissions
  256. X***************
  257. X*** 98,107 ****
  258. X  # 'make clean' removes all the .o files, but leaves around all the executables
  259. X  # and compiled data files
  260. X  clean:
  261. X!     ( cd src ; make clean )
  262. X  
  263. X  # 'make spotless' returns the source tree to near-distribution condition.
  264. X  # it removes .o files, executables, and compiled data files
  265. X  spotless:
  266. X!     ( cd src ; make spotless )
  267. X!     ( cd auxil ; make spotless )
  268. X--- 100,109 ----
  269. X  # 'make clean' removes all the .o files, but leaves around all the executables
  270. X  # and compiled data files
  271. X  clean:
  272. X!     ( cd src ; $(MAKE) clean )
  273. X  
  274. X  # 'make spotless' returns the source tree to near-distribution condition.
  275. X  # it removes .o files, executables, and compiled data files
  276. X  spotless:
  277. X!     ( cd src ; $(MAKE) spotless )
  278. X!     ( cd auxil ; $(MAKE) spotless )
  279. X*** ./Old/README    Wed Sep  6 15:21:16 1989
  280. X--- ./README    Sat Sep  2 15:01:34 1989
  281. X***************
  282. X*** 85,94 ****
  283. X      IBM PC compatibles running MicroSoft C or Turbo C under MS-DOS
  284. X      Commodore Amiga (probably -- there have been some changes since
  285. X          the Amiga port was done, but we believe it should still work)
  286. X! 
  287. X!     There are also many hooks for an Atari TOS port, but we have not had a
  288. X!     chance to test the 3.0 code on an Atari.  Undoubtedly, some tweaks will 
  289. X!     have to be made.
  290. X  
  291. X              - - - - - - - - - - -
  292. X  
  293. X--- 85,91 ----
  294. X      IBM PC compatibles running MicroSoft C or Turbo C under MS-DOS
  295. X      Commodore Amiga (probably -- there have been some changes since
  296. X          the Amiga port was done, but we believe it should still work)
  297. X!     Atari 1040ST under TOS
  298. X  
  299. X              - - - - - - - - - - -
  300. X  
  301. X*** amiga/Old/amidos.c    Wed Sep  6 15:22:09 1989
  302. X--- amiga/amidos.c    Thu Aug 31 20:28:51 1989
  303. X***************
  304. X*** 485,493 ****
  305. X          append_slash(SAVEF);
  306. X      } else if (!strncmp(buf, "GRAPHICS", 4)) {
  307. X          unsigned int translate[MAXPCHARS+1]; /* for safety */
  308. X!         int  i;
  309. X  
  310. X!         if ((i = sscanf(bufp,
  311. X           "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
  312. X                  &translate[0], &translate[1], &translate[2],
  313. X                  &translate[3], &translate[4], &translate[5],
  314. X--- 485,493 ----
  315. X          append_slash(SAVEF);
  316. X      } else if (!strncmp(buf, "GRAPHICS", 4)) {
  317. X          unsigned int translate[MAXPCHARS+1]; /* for safety */
  318. X!         int  lth;
  319. X  
  320. X!         if ((lth = sscanf(bufp,
  321. X           "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
  322. X                  &translate[0], &translate[1], &translate[2],
  323. X                  &translate[3], &translate[4], &translate[5],
  324. X***************
  325. X*** 502,551 ****
  326. X              msmsg ("Syntax error in GRAPHICS\n");
  327. X              getreturn("to continue");
  328. X          } /* Yuck! Worked only with low-byte first!!! */
  329. X! #define SETPCHAR(f, n)    showsyms.f = (i > n) ? translate[n] : defsyms.f
  330. X!             SETPCHAR(stone, 0);
  331. X!             SETPCHAR(vwall, 1);
  332. X!             SETPCHAR(hwall, 2);
  333. X!             SETPCHAR(tlcorn, 3);
  334. X!             SETPCHAR(trcorn, 4);
  335. X!             SETPCHAR(blcorn, 5);
  336. X!             SETPCHAR(brcorn, 6);
  337. X!             SETPCHAR(crwall, 7);
  338. X!             SETPCHAR(tuwall, 8);
  339. X!             SETPCHAR(tdwall, 9);
  340. X!             SETPCHAR(tlwall, 10);
  341. X!             SETPCHAR(trwall, 11);
  342. X!             SETPCHAR(vbeam, 12);
  343. X!             SETPCHAR(hbeam, 13);
  344. X!             SETPCHAR(lslant, 14);
  345. X!             SETPCHAR(rslant, 15);
  346. X!             SETPCHAR(door, 16);
  347. X!             SETPCHAR(room, 17);
  348. X!             SETPCHAR(corr, 18);
  349. X!             SETPCHAR(upstair, 19);
  350. X!             SETPCHAR(dnstair, 20);
  351. X!             SETPCHAR(trap, 21);
  352. X!             SETPCHAR(web, 22);
  353. X!             SETPCHAR(pool, 23);
  354. X! #ifdef FOUNTAINS
  355. X!             SETPCHAR(fountain, 24);
  356. X! #endif
  357. X! #ifdef SINKS
  358. X!             SETPCHAR(sink, 25);
  359. X! #endif
  360. X! #ifdef THRONES
  361. X!             SETPCHAR(throne, 26);
  362. X! #endif
  363. X! #ifdef ALTARS
  364. X!             SETPCHAR(altar, 27);
  365. X! #endif
  366. X! #ifdef STRONGHOLD
  367. X!             SETPCHAR(upladder, 28);
  368. X!             SETPCHAR(dnladder, 29);
  369. X!             SETPCHAR(dbvwall, 30);
  370. X!             SETPCHAR(dbhwall, 31);
  371. X! #endif
  372. X! #undef SETPCHAR
  373. X      } else if (!strncmp(buf, "PATH", 4)) {
  374. X          strncpy(PATH, bufp, PATHLEN);
  375. X  
  376. X--- 502,508 ----
  377. X              msmsg ("Syntax error in GRAPHICS\n");
  378. X              getreturn("to continue");
  379. X          } /* Yuck! Worked only with low-byte first!!! */
  380. X!         assign_graphics(translate, lth);
  381. X      } else if (!strncmp(buf, "PATH", 4)) {
  382. X          strncpy(PATH, bufp, PATHLEN);
  383. X  
  384. X*** auxil/Old/cmdhelp    Wed Sep  6 15:25:23 1989
  385. X--- auxil/cmdhelp    Mon Aug 28 16:40:55 1989
  386. X***************
  387. X*** 79,85 ****
  388. X  !    Do a shell escape (only if defined)
  389. X  \    Show what object types have been discovered
  390. X  .    Rest one move while doing nothing
  391. X!      Rest one move while doing nothing (if option restonspace set)
  392. X  :    Look at what is on the floor
  393. X  @    Toggle the pickup option on/off
  394. X  )    Show the weapon currently wielded
  395. X--- 79,85 ----
  396. X  !    Do a shell escape (only if defined)
  397. X  \    Show what object types have been discovered
  398. X  .    Rest one move while doing nothing
  399. X!      Rest one move while doing nothing (if rest_on_space option is on)
  400. X  :    Look at what is on the floor
  401. X  @    Toggle the pickup option on/off
  402. X  )    Show the weapon currently wielded
  403. X***************
  404. X*** 90,92 ****
  405. X--- 90,106 ----
  406. X  $    Count your gold
  407. X  +    List known spells (only if defined)
  408. X  #    Perform an extended command
  409. X+ M-c    Talk to someone
  410. X+ M-d    Dip an object into something
  411. X+ M-f    Force a lock
  412. X+ M-j    Jump to another location
  413. X+ M-l    Loot a box on the floor
  414. X+ M-m    Use a monster's special ability (only if defined)
  415. X+ M-N    Name an item or type of object
  416. X+ M-o    Offer a sacrifice to the gods (only if defined)
  417. X+ M-p    Pray to the gods for help (only if defined)
  418. X+ M-r    Rub a lamp
  419. X+ M-s    Sit down
  420. X+ M-t    Turn undead
  421. X+ M-u    Untrap something (usually a trapped object)
  422. X+ M-w    Wipe off your face
  423. X*** auxil/Old/data.base    Wed Sep  6 15:25:37 1989
  424. X--- auxil/data.base    Wed Aug 30 18:39:53 1989
  425. X***************
  426. X*** 11,17 ****
  427. X  |    a wall
  428. X  +    a door
  429. X  .    the floor of a room
  430. X!     a dark part of a room
  431. X  #    a corridor
  432. X  <    a way to the previous level
  433. X  >    a way to the next level
  434. X--- 11,17 ----
  435. X  |    a wall
  436. X  +    a door
  437. X  .    the floor of a room
  438. X!      a dark part of a room (or a ghost)
  439. X  #    a corridor
  440. X  <    a way to the previous level
  441. X  >    a way to the next level
  442. X*** auxil/Old/nethack.sh    Wed Sep  6 15:27:08 1989
  443. X--- auxil/nethack.sh    Tue Sep  5 21:10:12 1989
  444. X***************
  445. X*** 6,31 ****
  446. X  MAXNROFPLAYERS=4
  447. X  
  448. X  # see if we can find the full path name of PAGER, so help files work properly
  449. X  # ideas from brian@radio.astro.utoronto.ca
  450. X! if test $PAGER
  451. X  then
  452. X!     if test ! -x $PAGER
  453. X      then
  454. X          IFS=:
  455. X          for i in $PATH
  456. X          do
  457. X!             if test -x $i/$PAGER
  458. X              then
  459. X!                 PAGER=$i/$PAGER
  460. X!                 export PAGER
  461. X                  break
  462. X              fi
  463. X          done
  464. X          IFS='     '
  465. X      fi
  466. X!     if test ! -x $PAGER
  467. X      then
  468. X          echo Cannot find $PAGER -- unsetting PAGER.
  469. X          unset PAGER
  470. X      fi
  471. X  fi
  472. X--- 6,47 ----
  473. X  MAXNROFPLAYERS=4
  474. X  
  475. X  # see if we can find the full path name of PAGER, so help files work properly
  476. X+ # assume that if someone sets up a special variable (HACKPAGER) for NetHack,
  477. X+ # it will already be in a form acceptable to NetHack
  478. X  # ideas from brian@radio.astro.utoronto.ca
  479. X! if test \( "xxx$PAGER" != xxx \) -a \( "xxx$HACKPAGER" = xxx \)
  480. X  then
  481. X! 
  482. X!     HACKPAGER=$PAGER
  483. X! 
  484. X! #    use only the first word of the pager variable
  485. X! #    this prevents problems when looking for file names with trailing
  486. X! #    options, but also makes the options unavailable for later use from
  487. X! #    NetHack
  488. X!     for i in $HACKPAGER
  489. X!     do
  490. X!         HACKPAGER=$i
  491. X!         break
  492. X!     done
  493. X! 
  494. X!     if test ! -f $HACKPAGER
  495. X      then
  496. X          IFS=:
  497. X          for i in $PATH
  498. X          do
  499. X!             if test -f $i/$HACKPAGER
  500. X              then
  501. X!                 HACKPAGER=$i/$HACKPAGER
  502. X!                 export HACKPAGER
  503. X                  break
  504. X              fi
  505. X          done
  506. X          IFS='     '
  507. X      fi
  508. X!     if test ! -f $HACKPAGER
  509. X      then
  510. X          echo Cannot find $PAGER -- unsetting PAGER.
  511. X+         unset HACKPAGER
  512. X          unset PAGER
  513. X      fi
  514. X  fi
  515. X*** auxil/Old/oracles    Wed Sep  6 15:27:29 1989
  516. X--- auxil/oracles    Thu Aug 31 15:17:16 1989
  517. X***************
  518. X*** 72,74 ****
  519. X--- 72,82 ----
  520. X  Eat a floating eye, blind thyself, and use a mirror in thine own direction,
  521. X  and provided thou art lucky, thou shalt know the approximate locations of
  522. X  thine enemies.
  523. X+ -----
  524. X+ In the nethermost recesses of the dungeon, there standeth a castle, wherein
  525. X+ layeth a wand of wishes.  If thou wouldst gain entry, bear with thee an
  526. X+ instrument of music, for the drawbridge may be charmed down with the proper
  527. X+ melody.  What notes comprise it only the gods know, but a musical mastermind
  528. X+ may yet succeed by witful improvization.  However, the less perspicacious are
  529. X+ not without recourse, should they be prepared to circumambulate the castle to
  530. X+ the postern.
  531. X*** include/Old/config.h    Wed Sep  6 16:56:24 1989
  532. X--- include/config.h    Tue Sep  5 14:05:18 1989
  533. X***************
  534. X*** 19,25 ****
  535. X  #else
  536. X  /* #define MSDOS    /* define for MS-DOS and most other micros */
  537. X  /* #define AMIGA    /* define for Commodore-Amiga */
  538. X! /* #define TOS        /* for Atari 520/1040 */
  539. X  
  540. X  /* #define STUPID    /* avoid some complicated expressions if
  541. X                 your C compiler chokes on them */
  542. X--- 19,25 ----
  543. X  #else
  544. X  /* #define MSDOS    /* define for MS-DOS and most other micros */
  545. X  /* #define AMIGA    /* define for Commodore-Amiga */
  546. X! /* #define TOS        /* define for Atari 1040ST */
  547. X  
  548. X  /* #define STUPID    /* avoid some complicated expressions if
  549. X                 your C compiler chokes on them */
  550. X*** include/Old/extern.h    Wed Sep  6 16:57:47 1989
  551. X--- include/extern.h    Wed Sep  6 15:10:37 1989
  552. X***************
  553. X*** 18,23 ****
  554. X--- 18,24 ----
  555. X  E long *alloc P((unsigned int));
  556. X  #endif
  557. X  
  558. X+ #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
  559. X  /* ### apply.c ### */
  560. X  
  561. X  E int doapply();
  562. X***************
  563. X*** 32,40 ****
  564. X  E void unleash_all();
  565. X  E boolean next_to_u();
  566. X  E struct obj *get_mleash P((struct monst *));
  567. X! E void check_leash P((xchar,xchar));
  568. X  #endif
  569. X! E boolean um_dist P((xchar,xchar,xchar));
  570. X  
  571. X  /* ### artifact.c ### */
  572. X  
  573. X--- 33,41 ----
  574. X  E void unleash_all();
  575. X  E boolean next_to_u();
  576. X  E struct obj *get_mleash P((struct monst *));
  577. X! E void check_leash P((XCHAR_P,XCHAR_P));
  578. X  #endif
  579. X! E boolean um_dist P((XCHAR_P,XCHAR_P,XCHAR_P));
  580. X  
  581. X  /* ### artifact.c ### */
  582. X  
  583. X***************
  584. X*** 44,50 ****
  585. X  E boolean spec_ability P((struct obj *,unsigned));
  586. X  E int restr_name P((struct obj *,char *));
  587. X  # if defined(THEOLOGY) && defined(ALTARS)
  588. X! E struct obj *mk_aligned_artifact P((int));
  589. X  # endif
  590. X  E int defends P((int,struct obj *));
  591. X  E int spec_abon P((struct obj *,struct permonst *));
  592. X--- 45,51 ----
  593. X  E boolean spec_ability P((struct obj *,unsigned));
  594. X  E int restr_name P((struct obj *,char *));
  595. X  # if defined(THEOLOGY) && defined(ALTARS)
  596. X! E struct obj *mk_aligned_artifact P((unsigned));
  597. X  # endif
  598. X  E int defends P((int,struct obj *));
  599. X  E int spec_abon P((struct obj *,struct permonst *));
  600. X***************
  601. X*** 53,68 ****
  602. X  
  603. X  /* ### attrib.c ### */
  604. X  
  605. X! E void adjattrib P((int,int,boolean));
  606. X! E void change_luck P((schar));
  607. X! E int stone_luck P((boolean));
  608. X  E void gainstr P((struct obj *,int));
  609. X  E void losestr P((int));
  610. X  E void restore_attrib();
  611. X  E void init_attr P((int));
  612. X- #ifdef POLYSELF
  613. X  E void redist_attr();
  614. X- #endif
  615. X  E void adjabil P((int));
  616. X  E int newhp();
  617. X  E schar acurr();
  618. X--- 54,67 ----
  619. X  
  620. X  /* ### attrib.c ### */
  621. X  
  622. X! E void adjattrib P((int,int,BOOLEAN_P));
  623. X! E void change_luck P((SCHAR_P));
  624. X! E int stone_luck P((BOOLEAN_P));
  625. X  E void gainstr P((struct obj *,int));
  626. X  E void losestr P((int));
  627. X  E void restore_attrib();
  628. X  E void init_attr P((int));
  629. X  E void redist_attr();
  630. X  E void adjabil P((int));
  631. X  E int newhp();
  632. X  E schar acurr();
  633. X***************
  634. X*** 80,96 ****
  635. X  E void set_occupation P((int(*)(),char *,int));
  636. X  #ifdef REDO
  637. X  E char pgetchar();
  638. X! E void pushch P((char));
  639. X! E void savech P((char));
  640. X  #endif
  641. X- E char unctrl P((char));
  642. X  E void rhack P((char *));
  643. X! E char lowc P((char));
  644. X  E void enlightenment();
  645. X! E int xytod P((schar,schar));
  646. X  E void dtoxy P((coord *,int));
  647. X! E int movecmd P((char));
  648. X! E int getdir P((boolean));
  649. X  E void confdir();
  650. X  E int isok P((int,int));
  651. X  E int doextlist();
  652. X--- 79,94 ----
  653. X  E void set_occupation P((int(*)(),char *,int));
  654. X  #ifdef REDO
  655. X  E char pgetchar();
  656. X! E void pushch P((CHAR_P));
  657. X! E void savech P((CHAR_P));
  658. X  #endif
  659. X  E void rhack P((char *));
  660. X! E char lowc P((CHAR_P));
  661. X  E void enlightenment();
  662. X! E int xytod P((SCHAR_P,SCHAR_P));
  663. X  E void dtoxy P((coord *,int));
  664. X! E int movecmd P((CHAR_P));
  665. X! E int getdir P((BOOLEAN_P));
  666. X  E void confdir();
  667. X  E int isok P((int,int));
  668. X  E int doextlist();
  669. X***************
  670. X*** 103,109 ****
  671. X  E int is_drawbridge_wall P((int, int));
  672. X  E boolean is_db_wall P((int, int));
  673. X  E boolean find_drawbridge P((int *, int*));
  674. X! E boolean create_drawbridge P((int, int, int, boolean));
  675. X  E void open_drawbridge P((int, int));
  676. X  E void close_drawbridge P((int, int));
  677. X  E void destroy_drawbridge P((int, int));
  678. X--- 101,107 ----
  679. X  E int is_drawbridge_wall P((int, int));
  680. X  E boolean is_db_wall P((int, int));
  681. X  E boolean find_drawbridge P((int *, int*));
  682. X! E boolean create_drawbridge P((int, int, int, BOOLEAN_P));
  683. X  E void open_drawbridge P((int, int));
  684. X  E void close_drawbridge P((int, int));
  685. X  E void destroy_drawbridge P((int, int));
  686. X***************
  687. X*** 131,137 ****
  688. X  E int doddrop();
  689. X  E int dodown();
  690. X  E int doup();
  691. X! E void goto_level P((int,boolean));
  692. X  E int donull();
  693. X  E int dowipe();
  694. X  E struct obj *splitobj P((struct obj *,int));
  695. X--- 129,135 ----
  696. X  E int doddrop();
  697. X  E int dodown();
  698. X  E int doup();
  699. X! E void goto_level P((int,BOOLEAN_P));
  700. X  E int donull();
  701. X  E int dowipe();
  702. X  E struct obj *splitobj P((struct obj *,int));
  703. X***************
  704. X*** 193,199 ****
  705. X  E void reset_remarm();
  706. X  E int doddoremarm();
  707. X  E int destroy_arm P((struct obj *));
  708. X! E void adj_abon P((struct obj *,schar));
  709. X  
  710. X  /* ### dog.c ### */
  711. X  
  712. X--- 191,197 ----
  713. X  E void reset_remarm();
  714. X  E int doddoremarm();
  715. X  E int destroy_arm P((struct obj *));
  716. X! E void adj_abon P((struct obj *,SCHAR_P));
  717. X  
  718. X  /* ### dog.c ### */
  719. X  
  720. X***************
  721. X*** 204,210 ****
  722. X  E void keepdogs();
  723. X  E void fall_down P((struct monst *,int));
  724. X  E int dogfood P((struct monst *,struct obj *));
  725. X! E int inroom P((xchar,xchar));
  726. X  E int tamedog P((struct monst *,struct obj *));
  727. X  
  728. X  /* ### dogmove.c ### */
  729. X--- 202,208 ----
  730. X  E void keepdogs();
  731. X  E void fall_down P((struct monst *,int));
  732. X  E int dogfood P((struct monst *,struct obj *));
  733. X! E int inroom P((XCHAR_P,XCHAR_P));
  734. X  E int tamedog P((struct monst *,struct obj *));
  735. X  
  736. X  /* ### dogmove.c ### */
  737. X***************
  738. X*** 214,220 ****
  739. X  /* ### dokick.c ### */
  740. X  
  741. X  E boolean ghitm P((struct monst *,long));
  742. X! E boolean bad_kick_throw_pos P((xchar,xchar));
  743. X  E struct monst *ghit P((int,int,int));
  744. X  E int dokick();
  745. X  
  746. X--- 212,218 ----
  747. X  /* ### dokick.c ### */
  748. X  
  749. X  E boolean ghitm P((struct monst *,long));
  750. X! E boolean bad_kick_throw_pos P((XCHAR_P,XCHAR_P));
  751. X  E struct monst *ghit P((int,int,int));
  752. X  E int dokick();
  753. X  
  754. X***************
  755. X*** 223,229 ****
  756. X  E int dothrow();
  757. X  E int throwit P((struct obj *));
  758. X  E int thitmonst P((struct monst *,struct obj *));
  759. X! E int breaks P((struct obj *,boolean));
  760. X  
  761. X  /* ### eat.c ### */
  762. X  
  763. X--- 221,227 ----
  764. X  E int dothrow();
  765. X  E int throwit P((struct obj *));
  766. X  E int thitmonst P((struct monst *,struct obj *));
  767. X! E int breaks P((struct obj *,BOOLEAN_P));
  768. X  
  769. X  /* ### eat.c ### */
  770. X  
  771. X***************
  772. X*** 233,241 ****
  773. X  E void gethungry();
  774. X  E void morehungry P((int));
  775. X  E void lesshungry P((int));
  776. X! E void newuhs P((boolean));
  777. X  E void vomit();
  778. X! E struct obj *floorfood P((char *,int));
  779. X  
  780. X  /* ### end.c ### */
  781. X  
  782. X--- 231,239 ----
  783. X  E void gethungry();
  784. X  E void morehungry P((int));
  785. X  E void lesshungry P((int));
  786. X! E void newuhs P((BOOLEAN_P));
  787. X  E void vomit();
  788. X! E struct obj *floorfood P((char *,BOOLEAN_P));
  789. X  
  790. X  /* ### end.c ### */
  791. X  
  792. X***************
  793. X*** 242,248 ****
  794. X  E int done1();
  795. X  E int done2();
  796. X  E void done_in_by P((struct monst *));
  797. X! E void panic P((char *,...));
  798. X  E void done P((int));
  799. X  E void clearlocks();
  800. X  #ifdef NOSAVEONHANGUP
  801. X--- 240,246 ----
  802. X  E int done1();
  803. X  E int done2();
  804. X  E void done_in_by P((struct monst *));
  805. X! E void panic V((char *,...));
  806. X  E void done P((int));
  807. X  E void clearlocks();
  808. X  #ifdef NOSAVEONHANGUP
  809. X***************
  810. X*** 252,261 ****
  811. X  /* ### engrave.c ### */
  812. X  
  813. X  #ifdef ELBERETH
  814. X! E int sengr_at P((char *,xchar,xchar));
  815. X  #endif
  816. X  E void u_wipe_engr P((int));
  817. X! E void wipe_engr_at P((xchar,xchar,xchar));
  818. X  E void read_engr_at P((int,int));
  819. X  E void make_engr_at P((int,int,char *));
  820. X  E int freehand();
  821. X--- 250,259 ----
  822. X  /* ### engrave.c ### */
  823. X  
  824. X  #ifdef ELBERETH
  825. X! E int sengr_at P((char *,XCHAR_P,XCHAR_P));
  826. X  #endif
  827. X  E void u_wipe_engr P((int));
  828. X! E void wipe_engr_at P((XCHAR_P,XCHAR_P,XCHAR_P));
  829. X  E void read_engr_at P((int,int));
  830. X  E void make_engr_at P((int,int,char *));
  831. X  E int freehand();
  832. X***************
  833. X*** 308,321 ****
  834. X  
  835. X  E void unsee();
  836. X  E void seeoff P((int));
  837. X! E void movobj P((struct obj *,xchar,xchar));
  838. X! E boolean may_dig P((xchar,xchar));
  839. X  E void domove();
  840. X  E void spoteffects();
  841. X  E int dopickup();
  842. X  E void lookaround();
  843. X  E int monster_nearby();
  844. X! E int cansee P((xchar,xchar));
  845. X  E int sgn P((int));
  846. X  E void getcorners
  847. X      P((xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *));
  848. X--- 306,319 ----
  849. X  
  850. X  E void unsee();
  851. X  E void seeoff P((int));
  852. X! E void movobj P((struct obj *,XCHAR_P,XCHAR_P));
  853. X! E boolean may_dig P((XCHAR_P,XCHAR_P));
  854. X  E void domove();
  855. X  E void spoteffects();
  856. X  E int dopickup();
  857. X  E void lookaround();
  858. X  E int monster_nearby();
  859. X! E int cansee P((XCHAR_P,XCHAR_P));
  860. X  E int sgn P((int));
  861. X  E void getcorners
  862. X      P((xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *,xchar *));
  863. X***************
  864. X*** 365,373 ****
  865. X  E int doprring();
  866. X  E int dopramulet();
  867. X  E int doprtool();
  868. X! E int digit P((char));
  869. X  E void useupf P((struct obj *));
  870. X! E char *let_to_name P((char));
  871. X  E void reassign();
  872. X  
  873. X  /* ### ioctl.c ### */
  874. X--- 363,371 ----
  875. X  E int doprring();
  876. X  E int dopramulet();
  877. X  E int doprtool();
  878. X! E int digit P((CHAR_P));
  879. X  E void useupf P((struct obj *));
  880. X! E char *let_to_name P((CHAR_P));
  881. X  E void reassign();
  882. X  
  883. X  /* ### ioctl.c ### */
  884. X***************
  885. X*** 403,415 ****
  886. X  /* ### makemon.c ### */
  887. X  
  888. X  E struct monst *makemon P((struct permonst *,int,int));
  889. X! E void enexto P((coord *,xchar,xchar,struct permonst *));
  890. X  E int goodpos P((int,int, struct permonst *));
  891. X  E void rloc P((struct monst *));
  892. X  E struct monst *mkmon_at P((char *,int,int));
  893. X  E void init_monstr();
  894. X  E struct permonst *rndmonst();
  895. X! E struct permonst *mkclass P((char));
  896. X  E int adj_lev P((struct permonst *));
  897. X  E struct permonst *grow_up P((struct monst *));
  898. X  E int mongets P((struct monst *,int));
  899. X--- 401,413 ----
  900. X  /* ### makemon.c ### */
  901. X  
  902. X  E struct monst *makemon P((struct permonst *,int,int));
  903. X! E void enexto P((coord *,XCHAR_P,XCHAR_P,struct permonst *));
  904. X  E int goodpos P((int,int, struct permonst *));
  905. X  E void rloc P((struct monst *));
  906. X  E struct monst *mkmon_at P((char *,int,int));
  907. X  E void init_monstr();
  908. X  E struct permonst *rndmonst();
  909. X! E struct permonst *mkclass P((CHAR_P));
  910. X  E int adj_lev P((struct permonst *));
  911. X  E struct permonst *grow_up P((struct monst *));
  912. X  E int mongets P((struct monst *,int));
  913. X***************
  914. X*** 439,444 ****
  915. X--- 437,443 ----
  916. X  #ifdef POLYSELF
  917. X  E struct monst *cloneu();
  918. X  #endif
  919. X+ E void regurgitates P((struct monst *));
  920. X  E int mattacku P((struct monst *));
  921. X  E void mdamageu P((struct monst *,int));
  922. X  E int could_seduce P((struct monst *,struct monst *,struct attack *));
  923. X***************
  924. X*** 454,460 ****
  925. X  E boolean place_oracle P((struct mkroom *,int *,int *,int *));
  926. X  #endif
  927. X  E void mklev();
  928. X! E int okdoor P((xchar,xchar));
  929. X  E void dodoor P((int,int,struct mkroom *));
  930. X  E void mktrap P((int,int,struct mkroom *));
  931. X  E void mkfount P((int,struct mkroom *));
  932. X--- 453,459 ----
  933. X  E boolean place_oracle P((struct mkroom *,int *,int *,int *));
  934. X  #endif
  935. X  E void mklev();
  936. X! E int okdoor P((XCHAR_P,XCHAR_P));
  937. X  E void dodoor P((int,int,struct mkroom *));
  938. X  E void mktrap P((int,int,struct mkroom *));
  939. X  E void mkfount P((int,struct mkroom *));
  940. X***************
  941. X*** 462,468 ****
  942. X  /* ### mkmaze.c ### */
  943. X  
  944. X  #if defined(WALLIFIED_MAZE) || defined(STRONGHOLD)
  945. X! E void wallification P((int,int,int,int,boolean));
  946. X  #endif
  947. X  E void walkfrom P((int,int));
  948. X  E void makemaz();
  949. X--- 461,467 ----
  950. X  /* ### mkmaze.c ### */
  951. X  
  952. X  #if defined(WALLIFIED_MAZE) || defined(STRONGHOLD)
  953. X! E void wallification P((int,int,int,int,BOOLEAN_P));
  954. X  #endif
  955. X  E void walkfrom P((int,int));
  956. X  E void makemaz();
  957. X***************
  958. X*** 472,498 ****
  959. X  
  960. X  /* ### mkobj.c ### */
  961. X  
  962. X! E struct obj *mkobj_at P((char,int,int));
  963. X  E struct obj *mksobj_at P((int,int,int));
  964. X! E struct obj *mkobj P((char,boolean));
  965. X  E int rndmonnum();
  966. X! E struct obj *mksobj P((int,boolean));
  967. X  E int letter P((int));
  968. X  E int weight P((struct obj *));
  969. X  E void mkgold P((long,int,int));
  970. X! E struct obj *mkcorpse_at P((struct permonst *,int,int));
  971. X! E struct obj *mk_tt_corpse P((int,int));
  972. X! E struct obj *mkstatue P((struct permonst *,int,int));
  973. X! E struct obj *mk_named_object P((int, struct permonst *,int,int,char *,int));
  974. X! #ifdef MEDUSA
  975. X! E struct obj *mk_tt_statue P((int,int));
  976. X! #endif
  977. X  E void bless P((struct obj *));
  978. X  E void curse P((struct obj *));
  979. X  E void blessorcurse P((struct obj *,int));
  980. X  E boolean is_flammable P((struct obj *));
  981. X  E boolean is_rustprone P((struct obj *));
  982. X! E void set_omask P((xchar,xchar));
  983. X  
  984. X  /* ### mkroom.c ### */
  985. X  
  986. X--- 471,499 ----
  987. X  
  988. X  /* ### mkobj.c ### */
  989. X  
  990. X! E struct obj *mkobj_at P((CHAR_P,int,int));
  991. X  E struct obj *mksobj_at P((int,int,int));
  992. X! E struct obj *mkobj P((CHAR_P,BOOLEAN_P));
  993. X  E int rndmonnum();
  994. X! E struct obj *mksobj P((int,BOOLEAN_P));
  995. X  E int letter P((int));
  996. X  E int weight P((struct obj *));
  997. X  E void mkgold P((long,int,int));
  998. X! E struct obj *mkcorpstat P((int,struct permonst *,int,int));
  999. X! E struct obj *mk_tt_object P((int,int,int));
  1000. X! E struct obj *mk_named_object P((int,struct permonst *,int,int,char *,int));
  1001. X  E void bless P((struct obj *));
  1002. X  E void curse P((struct obj *));
  1003. X  E void blessorcurse P((struct obj *,int));
  1004. X+ #ifdef STUPID_CPP
  1005. X  E boolean is_flammable P((struct obj *));
  1006. X  E boolean is_rustprone P((struct obj *));
  1007. X! E boolean is_corrodeable P((struct obj *));
  1008. X! #endif
  1009. X! E boolean OBJ_AT P((int,int));
  1010. X! E void place_object P((struct obj *,int,int));
  1011. X! E void move_object P((struct obj *,int,int));
  1012. X! E void remove_object P((struct obj *));
  1013. X  
  1014. X  /* ### mkroom.c ### */
  1015. X  
  1016. X***************
  1017. X*** 527,538 ****
  1018. X  E void unstuck P((struct monst *));
  1019. X  E void killed P((struct monst *));
  1020. X  E void xkilled P((struct monst *,int));
  1021. X! E void kludge P((char *,char *,...));
  1022. X  E void rescham();
  1023. X  E void restartcham();
  1024. X  E int newcham P((struct monst *,struct permonst *));
  1025. X  E void mnexto P((struct monst *));
  1026. X! E void mnearto P((struct monst *, xchar, xchar, boolean));
  1027. X  E void setmangry P((struct monst *));
  1028. X  E int disturb P((struct monst *));
  1029. X  E void mondied P((struct monst *));
  1030. X--- 528,539 ----
  1031. X  E void unstuck P((struct monst *));
  1032. X  E void killed P((struct monst *));
  1033. X  E void xkilled P((struct monst *,int));
  1034. X! E void kludge V((char *,char *,...));
  1035. X  E void rescham();
  1036. X  E void restartcham();
  1037. X  E int newcham P((struct monst *,struct permonst *));
  1038. X  E void mnexto P((struct monst *));
  1039. X! E void mnearto P((struct monst *, XCHAR_P, XCHAR_P, BOOLEAN_P));
  1040. X  E void setmangry P((struct monst *));
  1041. X  E int disturb P((struct monst *));
  1042. X  E void mondied P((struct monst *));
  1043. X***************
  1044. X*** 599,605 ****
  1045. X  E void set_lock_and_bones();
  1046. X  E void append_slash P((char *));
  1047. X  E void getreturn P((char *));
  1048. X! E void msmsg P((char *,...));
  1049. X  E void chdrive P((char *));
  1050. X  # ifndef TOS
  1051. X  E void disable_ctrlP();
  1052. X--- 600,606 ----
  1053. X  E void set_lock_and_bones();
  1054. X  E void append_slash P((char *));
  1055. X  E void getreturn P((char *));
  1056. X! E void msmsg V((char *,...));
  1057. X  E void chdrive P((char *));
  1058. X  # ifndef TOS
  1059. X  E void disable_ctrlP();
  1060. X***************
  1061. X*** 614,620 ****
  1062. X  # endif
  1063. X  #endif /* MSDOS */
  1064. X  #ifdef TOS
  1065. X! E int _copyfile P((int, int));
  1066. X  E int kbhit();
  1067. X  #endif /* TOS */
  1068. X  
  1069. X--- 615,621 ----
  1070. X  # endif
  1071. X  #endif /* MSDOS */
  1072. X  #ifdef TOS
  1073. X! E int _copyfile P((char *, char *));
  1074. X  E int kbhit();
  1075. X  #endif /* TOS */
  1076. X  
  1077. X***************
  1078. X*** 624,630 ****
  1079. X  E int thrwmu P((struct monst *));
  1080. X  E int spitmu P((struct monst *));
  1081. X  E int breamu P((struct monst *,struct attack *));
  1082. X! E boolean linedup P((xchar,xchar,xchar,xchar));
  1083. X  E boolean lined_up P((struct monst *));
  1084. X  E struct obj *m_carrying P((struct monst *,int));
  1085. X  E void m_useup P((struct monst *,struct obj *));
  1086. X--- 625,631 ----
  1087. X  E int thrwmu P((struct monst *));
  1088. X  E int spitmu P((struct monst *));
  1089. X  E int breamu P((struct monst *,struct attack *));
  1090. X! E boolean linedup P((XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
  1091. X  E boolean lined_up P((struct monst *));
  1092. X  E struct obj *m_carrying P((struct monst *,int));
  1093. X  E void m_useup P((struct monst *,struct obj *));
  1094. X***************
  1095. X*** 637,643 ****
  1096. X  
  1097. X  /* ### o_init.c ### */
  1098. X  
  1099. X! E int letindex P((char));
  1100. X  E void init_objects();
  1101. X  E void oinit();
  1102. X  E void savenames P((int));
  1103. X--- 638,644 ----
  1104. X  
  1105. X  /* ### o_init.c ### */
  1106. X  
  1107. X! E int letindex P((CHAR_P));
  1108. X  E void init_objects();
  1109. X  E void oinit();
  1110. X  E void savenames P((int));
  1111. X***************
  1112. X*** 661,667 ****
  1113. X  /* ### options.c ### */
  1114. X  
  1115. X  E void initoptions();
  1116. X! E void parseoptions P((char *,boolean));
  1117. X  E int doset();
  1118. X  E int dotogglepickup();
  1119. X  E void option_help();
  1120. X--- 662,669 ----
  1121. X  /* ### options.c ### */
  1122. X  
  1123. X  E void initoptions();
  1124. X! E void assign_graphics P((unsigned int *, int));
  1125. X! E void parseoptions P((char *,BOOLEAN_P));
  1126. X  E int doset();
  1127. X  E int dotogglepickup();
  1128. X  E void option_help();
  1129. X***************
  1130. X*** 682,688 ****
  1131. X  E void cornline P((int,char *));
  1132. X  E int dohelp();
  1133. X  E int dohistory();
  1134. X! E int page_file P((char *,boolean));
  1135. X  #ifdef UNIX
  1136. X  #ifdef SHELL
  1137. X  E int dosh();
  1138. X--- 684,690 ----
  1139. X  E void cornline P((int,char *));
  1140. X  E int dohelp();
  1141. X  E int dohistory();
  1142. X! E int page_file P((char *,BOOLEAN_P));
  1143. X  #ifdef UNIX
  1144. X  #ifdef SHELL
  1145. X  E int dosh();
  1146. X***************
  1147. X*** 696,704 ****
  1148. X  E int (*occupation)();
  1149. X  E int (*afternmv)();
  1150. X  E void askname();
  1151. X! E void impossible P((char *,...));
  1152. X  #ifdef CHDIR
  1153. X! E void chdirx P((char *,boolean));
  1154. X  #endif /* CHDIR */
  1155. X  E void stop_occupation();
  1156. X  #endif /* MSDOS */
  1157. X--- 698,706 ----
  1158. X  E int (*occupation)();
  1159. X  E int (*afternmv)();
  1160. X  E void askname();
  1161. X! E void impossible V((char *,...));
  1162. X  #ifdef CHDIR
  1163. X! E void chdirx P((char *,BOOLEAN_P));
  1164. X  #endif /* CHDIR */
  1165. X  E void stop_occupation();
  1166. X  #endif /* MSDOS */
  1167. X***************
  1168. X*** 708,714 ****
  1169. X  #ifdef MSDOS
  1170. X  E void gettty();
  1171. X  E void settty P((char *));
  1172. X! E void error P((char *,...));
  1173. X  #endif /* MSDOS */
  1174. X  
  1175. X  /* ### pcunix.c ### */
  1176. X--- 710,716 ----
  1177. X  #ifdef MSDOS
  1178. X  E void gettty();
  1179. X  E void settty P((char *));
  1180. X! E void error V((char *,...));
  1181. X  #endif /* MSDOS */
  1182. X  
  1183. X  /* ### pcunix.c ### */
  1184. X***************
  1185. X*** 739,744 ****
  1186. X--- 741,747 ----
  1187. X  
  1188. X  /* ### polyself.c ### */
  1189. X  
  1190. X+ E void newman();
  1191. X  #ifdef POLYSELF
  1192. X  E void polyself();
  1193. X  E int polymon P((int));
  1194. X***************
  1195. X*** 761,775 ****
  1196. X  
  1197. X  /* ### potion.c ### */
  1198. X  
  1199. X! E void make_confused P((long,boolean));
  1200. X! E void make_stunned P((long,boolean));
  1201. X! E void make_blinded P((long,boolean));
  1202. X! E void make_sick P((long,boolean));
  1203. X! E void make_hallucinated P((long,boolean));
  1204. X  E int dodrink();
  1205. X  E int dopotion P((struct obj *));
  1206. X  E int peffects P((struct obj *));
  1207. X! E void healup P((int,int,boolean,boolean));
  1208. X  E void strange_feeling P((struct obj *,char *));
  1209. X  E void potionhit P((struct monst *,struct obj *));
  1210. X  E void potionbreathe P((struct obj *));
  1211. X--- 764,778 ----
  1212. X  
  1213. X  /* ### potion.c ### */
  1214. X  
  1215. X! E void make_confused P((long,BOOLEAN_P));
  1216. X! E void make_stunned P((long,BOOLEAN_P));
  1217. X! E void make_blinded P((long,BOOLEAN_P));
  1218. X! E void make_sick P((long,BOOLEAN_P));
  1219. X! E void make_hallucinated P((long,BOOLEAN_P));
  1220. X  E int dodrink();
  1221. X  E int dopotion P((struct obj *));
  1222. X  E int peffects P((struct obj *));
  1223. X! E void healup P((int,int,BOOLEAN_P,BOOLEAN_P));
  1224. X  E void strange_feeling P((struct obj *,char *));
  1225. X  E void potionhit P((struct monst *,struct obj *));
  1226. X  E void potionbreathe P((struct obj *));
  1227. X***************
  1228. X*** 789,795 ****
  1229. X  E int doturn();
  1230. X  #ifdef ALTARS
  1231. X  E char *a_gname();
  1232. X! E char *a_gname_at P((xchar,xchar));
  1233. X  # ifdef THEOLOGY
  1234. X  E void altar_wrath P((int,int));
  1235. X  # endif
  1236. X--- 792,798 ----
  1237. X  E int doturn();
  1238. X  #ifdef ALTARS
  1239. X  E char *a_gname();
  1240. X! E char *a_gname_at P((XCHAR_P,XCHAR_P));
  1241. X  # ifdef THEOLOGY
  1242. X  E void altar_wrath P((int,int));
  1243. X  # endif
  1244. X***************
  1245. X*** 799,807 ****
  1246. X  
  1247. X  E void swallowed();
  1248. X  E void setclipped();
  1249. X! E void at P((xchar,xchar,uchar,uchar));
  1250. X  E void prme();
  1251. X! E void shieldeff P((xchar,xchar));
  1252. X  E int doredraw();
  1253. X  E void docrt();
  1254. X  E void docorner P((int,int));
  1255. X--- 802,810 ----
  1256. X  
  1257. X  E void swallowed();
  1258. X  E void setclipped();
  1259. X! E void at P((XCHAR_P,XCHAR_P,UCHAR_P,UCHAR_P));
  1260. X  E void prme();
  1261. X! E void shieldeff P((XCHAR_P,XCHAR_P));
  1262. X  E int doredraw();
  1263. X  E void docrt();
  1264. X  E void docorner P((int,int));
  1265. X***************
  1266. X*** 822,829 ****
  1267. X  
  1268. X  /* ### priest.c ### */
  1269. X  
  1270. X! E int move_special P((struct monst *,schar,schar,boolean,boolean,
  1271. X!             xchar,xchar,xchar,xchar));
  1272. X  #if defined(ALTARS) && defined(THEOLOGY)
  1273. X  E struct mkroom *in_temple P((int,int));
  1274. X  E int pri_move P((struct monst *));
  1275. X--- 825,832 ----
  1276. X  
  1277. X  /* ### priest.c ### */
  1278. X  
  1279. X! E int move_special P((struct monst *,SCHAR_P,SCHAR_P,BOOLEAN_P,BOOLEAN_P,
  1280. X!             XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
  1281. X  #if defined(ALTARS) && defined(THEOLOGY)
  1282. X  E struct mkroom *in_temple P((int,int));
  1283. X  E int pri_move P((struct monst *));
  1284. X***************
  1285. X*** 839,845 ****
  1286. X  
  1287. X  /* ### prisym.c ### */
  1288. X  
  1289. X! E void atl P((int,int,char));
  1290. X  E void on_scr P((int,int));
  1291. X  E void tmp_at P((int,int));
  1292. X  E void Tmp_at2 P((int,int));
  1293. X--- 842,848 ----
  1294. X  
  1295. X  /* ### prisym.c ### */
  1296. X  
  1297. X! E void atl P((int,int,CHAR_P));
  1298. X  E void on_scr P((int,int));
  1299. X  E void tmp_at P((int,int));
  1300. X  E void Tmp_at2 P((int,int));
  1301. X***************
  1302. X*** 846,852 ****
  1303. X  E void curs_on_u();
  1304. X  E void pru();
  1305. X  E void prl P((int,int));
  1306. X! E uchar news0 P((xchar,xchar));
  1307. X  E void newsym P((int,int));
  1308. X  E void mnewsym P((int,int));
  1309. X  E void nosee P((int,int));
  1310. X--- 849,855 ----
  1311. X  E void curs_on_u();
  1312. X  E void pru();
  1313. X  E void prl P((int,int));
  1314. X! E uchar news0 P((XCHAR_P,XCHAR_P));
  1315. X  E void newsym P((int,int));
  1316. X  E void mnewsym P((int,int));
  1317. X  E void nosee P((int,int));
  1318. X***************
  1319. X*** 862,868 ****
  1320. X  
  1321. X  E int doread();
  1322. X  E int seffects P((struct obj *));
  1323. X! E void litroom P((boolean));
  1324. X  E void do_genocide P((int));
  1325. X  E void do_mapping();
  1326. X  E void do_vicinity_map();
  1327. X--- 865,871 ----
  1328. X  
  1329. X  E int doread();
  1330. X  E int seffects P((struct obj *));
  1331. X! E void litroom P((BOOLEAN_P));
  1332. X  E void do_genocide P((int));
  1333. X  E void do_mapping();
  1334. X  E void do_vicinity_map();
  1335. X***************
  1336. X*** 878,884 ****
  1337. X  /* ### restore.c ### */
  1338. X  
  1339. X  E int dorecover P((int));
  1340. X! E void getlev P((int,int,xchar,boolean));
  1341. X  #ifdef ZEROCOMP
  1342. X  E void minit();
  1343. X  E int mread P((int,genericptr_t,unsigned int));
  1344. X--- 881,887 ----
  1345. X  /* ### restore.c ### */
  1346. X  
  1347. X  E int dorecover P((int));
  1348. X! E void getlev P((int,int,XCHAR_P,BOOLEAN_P));
  1349. X  #ifdef ZEROCOMP
  1350. X  E void minit();
  1351. X  E int mread P((int,genericptr_t,unsigned int));
  1352. X***************
  1353. X*** 904,910 ****
  1354. X  
  1355. X  /* ### rumors.c ### */
  1356. X  
  1357. X! E void outrumor P((int,boolean));
  1358. X  #ifdef ORACLE
  1359. X  E int doconsult P((struct monst *));
  1360. X  #endif
  1361. X--- 907,913 ----
  1362. X  
  1363. X  /* ### rumors.c ### */
  1364. X  
  1365. X! E void outrumor P((int,BOOLEAN_P));
  1366. X  #ifdef ORACLE
  1367. X  E int doconsult P((struct monst *));
  1368. X  #endif
  1369. X***************
  1370. X*** 917,926 ****
  1371. X  #endif /* NOSAVEONHANGUP */
  1372. X  E int dosave0();
  1373. X  #if defined(DGK) && !defined(OLD_TOS)
  1374. X! E boolean savelev P((int,xchar,int));
  1375. X  E boolean swapin_file P((int));
  1376. X  #else /* DGK && !OLD_TOS */
  1377. X! E void savelev P((int, xchar));
  1378. X  #endif /* DGK && !OLD_TOS */
  1379. X  #ifdef ZEROCOMP
  1380. X  E void bflush P((int));
  1381. X--- 920,929 ----
  1382. X  #endif /* NOSAVEONHANGUP */
  1383. X  E int dosave0();
  1384. X  #if defined(DGK) && !defined(OLD_TOS)
  1385. X! E boolean savelev P((int,XCHAR_P,int));
  1386. X  E boolean swapin_file P((int));
  1387. X  #else /* DGK && !OLD_TOS */
  1388. X! E void savelev P((int, XCHAR_P));
  1389. X  #endif /* DGK && !OLD_TOS */
  1390. X  #ifdef ZEROCOMP
  1391. X  E void bflush P((int));
  1392. X***************
  1393. X*** 952,964 ****
  1394. X  E void make_happy_shk P((struct monst *));
  1395. X  E boolean paybill();
  1396. X  E void pay_for_door P((int,int,char *));
  1397. X! E void addtobill P((struct obj *,boolean));
  1398. X  E void splitbill P((struct obj *,struct obj *));
  1399. X  E void subfrombill P((struct obj *));
  1400. X  E int doinvbill P((int));
  1401. X  E int shkcatch P((struct obj *));
  1402. X  E int shk_move P((struct monst *));
  1403. X! E int online P((xchar,xchar));
  1404. X  E boolean is_fshk P((struct monst *));
  1405. X  E void shopdig P((int));
  1406. X  E boolean in_shop P((int,int));
  1407. X--- 955,967 ----
  1408. X  E void make_happy_shk P((struct monst *));
  1409. X  E boolean paybill();
  1410. X  E void pay_for_door P((int,int,char *));
  1411. X! E void addtobill P((struct obj *,BOOLEAN_P));
  1412. X  E void splitbill P((struct obj *,struct obj *));
  1413. X  E void subfrombill P((struct obj *));
  1414. X  E int doinvbill P((int));
  1415. X  E int shkcatch P((struct obj *));
  1416. X  E int shk_move P((struct monst *));
  1417. X! E int online P((XCHAR_P,XCHAR_P));
  1418. X  E boolean is_fshk P((struct monst *));
  1419. X  E void shopdig P((int));
  1420. X  E boolean in_shop P((int,int));
  1421. X***************
  1422. X*** 1002,1008 ****
  1423. X  #ifdef SPELLS
  1424. X  E int study_book P((struct obj *));
  1425. X  E int docast();
  1426. X! E int spelleffects P((int, boolean));
  1427. X  E void losespells();
  1428. X  E int dovspell();
  1429. X  #endif /* SPELLS */
  1430. X--- 1005,1011 ----
  1431. X  #ifdef SPELLS
  1432. X  E int study_book P((struct obj *));
  1433. X  E int docast();
  1434. X! E int spelleffects P((int, BOOLEAN_P));
  1435. X  E void losespells();
  1436. X  E int dovspell();
  1437. X  #endif /* SPELLS */
  1438. X***************
  1439. X*** 1023,1029 ****
  1440. X  E void end_screen();
  1441. X  E void curs P((int,int));
  1442. X  E void cmov P((int,int));
  1443. X! E void xputc P((char));
  1444. X  E void xputs P((char *));
  1445. X  E void cl_end();
  1446. X  E void clear_screen();
  1447. X--- 1026,1032 ----
  1448. X  E void end_screen();
  1449. X  E void curs P((int,int));
  1450. X  E void cmov P((int,int));
  1451. X! E void xputc P((CHAR_P));
  1452. X  E void xputs P((char *));
  1453. X  E void cl_end();
  1454. X  E void clear_screen();
  1455. X***************
  1456. X*** 1057,1069 ****
  1457. X  E void more();
  1458. X  E void cmore P((char *));
  1459. X  E void clrlin();
  1460. X! E void pline P((const char *,...));
  1461. X! E void Norep P((const char *,...));
  1462. X! E void You P((const char *,...));
  1463. X! E void Your P((const char *,...));
  1464. X! E void putsym P((char));
  1465. X  E void putstr P((char *));
  1466. X! E char yn_function P((char *,char));
  1467. X  
  1468. X  /* ### topten.c ### */
  1469. X  
  1470. X--- 1060,1072 ----
  1471. X  E void more();
  1472. X  E void cmore P((char *));
  1473. X  E void clrlin();
  1474. X! E void pline V((const char *,...));
  1475. X! E void Norep V((const char *,...));
  1476. X! E void You V((const char *,...));
  1477. X! E void Your V((const char *,...));
  1478. X! E void putsym P((CHAR_P));
  1479. X  E void putstr P((char *));
  1480. X! E char yn_function P((char *,CHAR_P));
  1481. X  
  1482. X  /* ### topten.c ### */
  1483. X  
  1484. X***************
  1485. X*** 1080,1086 ****
  1486. X  
  1487. X  /* ### trap.c ### */
  1488. X  
  1489. X! E boolean rust_dmg P((struct obj *,char *,int,boolean));
  1490. X  E struct trap *maketrap P((int,int,int));
  1491. X  E int teleok P((int,int));
  1492. X  E void dotrap P((struct trap *));
  1493. X--- 1083,1089 ----
  1494. X  
  1495. X  /* ### trap.c ### */
  1496. X  
  1497. X! E boolean rust_dmg P((struct obj *,char *,int,BOOLEAN_P));
  1498. X  E struct trap *maketrap P((int,int,int));
  1499. X  E int teleok P((int,int));
  1500. X  E void dotrap P((struct trap *));
  1501. X***************
  1502. X*** 1120,1126 ****
  1503. X  E boolean hmon P((struct monst *,struct obj *,int));
  1504. X  E int damageum P((struct monst *, struct attack *));
  1505. X  E void missum P((struct monst *, struct attack *));
  1506. X! E int passive P((struct monst *,boolean,int,boolean));
  1507. X  E void stumble_onto_mimic P((struct monst *));
  1508. X  
  1509. X  /* ### unixmain.c ### */
  1510. X--- 1123,1129 ----
  1511. X  E boolean hmon P((struct monst *,struct obj *,int));
  1512. X  E int damageum P((struct monst *, struct attack *));
  1513. X  E void missum P((struct monst *, struct attack *));
  1514. X! E int passive P((struct monst *,BOOLEAN_P,int,BOOLEAN_P));
  1515. X  E void stumble_onto_mimic P((struct monst *));
  1516. X  
  1517. X  /* ### unixmain.c ### */
  1518. X***************
  1519. X*** 1130,1136 ****
  1520. X  E int (*afternmv)();
  1521. X  E void glo P((int));
  1522. X  E void askname();
  1523. X! E void impossible P((char *,...));
  1524. X  E void stop_occupation();
  1525. X  #endif /* UNIX */
  1526. X  
  1527. X--- 1133,1139 ----
  1528. X  E int (*afternmv)();
  1529. X  E void glo P((int));
  1530. X  E void askname();
  1531. X! E void impossible V((char *,...));
  1532. X  E void stop_occupation();
  1533. X  #endif /* UNIX */
  1534. X  
  1535. X***************
  1536. X*** 1142,1148 ****
  1537. X  E void setftty();
  1538. X  E void intron();
  1539. X  E void introff();
  1540. X! E void error P((char *, char *, char *));
  1541. X  #endif /* UNIX */
  1542. X  
  1543. X  /* ### unixunix.c ### */
  1544. X--- 1145,1151 ----
  1545. X  E void setftty();
  1546. X  E void intron();
  1547. X  E void introff();
  1548. X! E void error V((char *,...));
  1549. X  #endif /* UNIX */
  1550. X  
  1551. X  /* ### unixunix.c ### */
  1552. X***************
  1553. X*** 1187,1193 ****
  1554. X  
  1555. X  E void were_change P((struct monst *));
  1556. X  E void new_were P((struct monst *));
  1557. X! E boolean were_summon P((struct permonst *,boolean));
  1558. X  #ifdef POLYSELF
  1559. X  E void you_were();
  1560. X  #endif /* POLYSELF */
  1561. X--- 1190,1196 ----
  1562. X  
  1563. X  E void were_change P((struct monst *));
  1564. X  E void new_were P((struct monst *));
  1565. X! E boolean were_summon P((struct permonst *,BOOLEAN_P));
  1566. X  #ifdef POLYSELF
  1567. X  E void you_were();
  1568. X  #endif /* POLYSELF */
  1569. X***************
  1570. X*** 1200,1206 ****
  1571. X  E void corrode_weapon();
  1572. X  E int chwepon P((struct obj *,int));
  1573. X  E int welded P((struct obj *));
  1574. X! E void weldmsg P((struct obj *,boolean));
  1575. X  
  1576. X  /* ### wizard.c ### */
  1577. X  
  1578. X--- 1203,1209 ----
  1579. X  E void corrode_weapon();
  1580. X  E int chwepon P((struct obj *,int));
  1581. X  E int welded P((struct obj *));
  1582. X! E void weldmsg P((struct obj *,BOOLEAN_P));
  1583. X  
  1584. X  /* ### wizard.c ### */
  1585. X  
  1586. X***************
  1587. X*** 1227,1233 ****
  1588. X  E void wormdead P((struct monst *));
  1589. X  E void wormhit P((struct monst *));
  1590. X  E void wormsee P((unsigned int));
  1591. X! E void cutworm P((struct monst *,xchar,xchar,unsigned));
  1592. X  #endif /* WORM */
  1593. X  
  1594. X  /* ### worn.c ### */
  1595. X--- 1230,1236 ----
  1596. X  E void wormdead P((struct monst *));
  1597. X  E void wormhit P((struct monst *));
  1598. X  E void wormsee P((unsigned int));
  1599. X! E void cutworm P((struct monst *,XCHAR_P,XCHAR_P,unsigned));
  1600. X  #endif /* WORM */
  1601. X  
  1602. X  /* ### worn.c ### */
  1603. X***************
  1604. X*** 1241,1247 ****
  1605. X  
  1606. X  /* ### zap.c ### */
  1607. X  
  1608. X! E struct monst *revive P((struct obj *,boolean));
  1609. X  E int zappable P((struct obj *));
  1610. X  E void zapnodir P((struct obj *));
  1611. X  E int dozap();
  1612. X--- 1244,1250 ----
  1613. X  
  1614. X  /* ### zap.c ### */
  1615. X  
  1616. X! E struct monst *revive P((struct obj *,BOOLEAN_P));
  1617. X  E int zappable P((struct obj *));
  1618. X  E void zapnodir P((struct obj *));
  1619. X  E int dozap();
  1620. X***************
  1621. X*** 1250,1265 ****
  1622. X  E char *exclam P((int));
  1623. X  E void hit P((char *,struct monst *,char *));
  1624. X  E void miss P((char *,struct monst *));
  1625. X! E struct monst *bhit P((int,int,int,char,int(*)(),int(*)(),struct obj *));
  1626. X  E struct monst *boomhit P((int,int));
  1627. X! E void buzz P((int,int,xchar,xchar,int,int));
  1628. X  E void rloco P((struct obj *));
  1629. X  E void fracture_rock P((struct obj *));
  1630. X  E boolean break_statue P((struct obj *));
  1631. X  E void destroy_item P((int,int));
  1632. X  E int destroy_mitem P((struct monst *,int,int));
  1633. X! E int resist P((struct monst *,char,int,int));
  1634. X  E void makewish();
  1635. X  
  1636. X  #undef E
  1637. X  
  1638. X--- 1253,1270 ----
  1639. X  E char *exclam P((int));
  1640. X  E void hit P((char *,struct monst *,char *));
  1641. X  E void miss P((char *,struct monst *));
  1642. X! E struct monst *bhit P((int,int,int,CHAR_P,int(*)(),int(*)(),struct obj *));
  1643. X  E struct monst *boomhit P((int,int));
  1644. X! E void buzz P((int,int,XCHAR_P,XCHAR_P,int,int));
  1645. X  E void rloco P((struct obj *));
  1646. X  E void fracture_rock P((struct obj *));
  1647. X  E boolean break_statue P((struct obj *));
  1648. X  E void destroy_item P((int,int));
  1649. X  E int destroy_mitem P((struct monst *,int,int));
  1650. X! E int resist P((struct monst *,CHAR_P,int,int));
  1651. X  E void makewish();
  1652. X+ 
  1653. X+ #endif /* !MAKEDEFS_C && !LEV_LEX_C */
  1654. X  
  1655. X  #undef E
  1656. X  
  1657. X*** include/Old/global.h    Wed Sep  6 16:59:13 1989
  1658. X--- include/global.h    Tue Sep  5 14:04:42 1989
  1659. X***************
  1660. X*** 64,69 ****
  1661. X--- 64,93 ----
  1662. X  #define    Bitfield(x,n)    uchar x
  1663. X  #endif
  1664. X  
  1665. X+ /*
  1666. X+  * According to ANSI, prototypes for old-style declarations must widen the
  1667. X+  * arguments to int.  However, the MSDOS compilers accept shorter arguments
  1668. X+  * (char, short, etc.) in prototypes and do typechecking with them.  Therefore
  1669. X+  * this mess to allow the better typechecking while also allowing some
  1670. X+  * prototypes for the ANSI compilers so people quit trying to fix the prototypes
  1671. X+  * to match the standard and thus lose the typechecking.
  1672. X+  */
  1673. X+ #if defined(MSDOS) && !(defined(AMIGA) || defined(TOS))
  1674. X+ # define CHAR_P char
  1675. X+ # define SCHAR_P schar
  1676. X+ # define UCHAR_P uchar
  1677. X+ # define XCHAR_P xchar
  1678. X+ # define BOOLEAN_P boolean
  1679. X+ #else
  1680. X+ # ifdef __STDC__
  1681. X+ #  define CHAR_P int
  1682. X+ #  define SCHAR_P int
  1683. X+ #  define UCHAR_P int
  1684. X+ #  define XCHAR_P int
  1685. X+ #  define BOOLEAN_P int
  1686. X+ # endif
  1687. X+ #endif
  1688. X+ 
  1689. X  
  1690. X  #define    SIZE(x)    (int)(sizeof(x) / sizeof(x[0]))
  1691. X  
  1692. X*** include/Old/hack.h    Wed Sep  6 16:59:45 1989
  1693. X--- include/hack.h    Wed Sep  6 16:42:01 1989
  1694. X***************
  1695. X*** 75,80 ****
  1696. X--- 75,84 ----
  1697. X  #include    "rm.h"
  1698. X  #endif
  1699. X  
  1700. X+ #ifndef EXTERN_H
  1701. X+ #include    "extern.h"
  1702. X+ #endif
  1703. X+ 
  1704. X  #ifdef STRONGHOLD
  1705. X  # define Inhell        (dlevel > stronghold_level && dlevel <= MAXLEVEL)
  1706. X  #else
  1707. X*** include/Old/msdos.h    Wed Sep  6 17:01:19 1989
  1708. X--- include/msdos.h    Sat Aug 26 14:13:12 1989
  1709. X***************
  1710. X*** 15,22 ****
  1711. X  extern int count_only;
  1712. X  #endif
  1713. X  
  1714. X! #define CTRL(ch) (ch & 0x37)
  1715. X! #define ABORT CTRL('A')
  1716. X  #define COUNT 0x1
  1717. X  #define WRITE 0x2
  1718. X  
  1719. X--- 15,23 ----
  1720. X  extern int count_only;
  1721. X  #endif
  1722. X  
  1723. X! #define C(c)  (0x1f & (c))
  1724. X! #define M(c)  (0x80 | (c))
  1725. X! #define ABORT C('a')
  1726. X  #define COUNT 0x1
  1727. X  #define WRITE 0x2
  1728. X  
  1729. X*** include/Old/obj.h    Wed Sep  6 17:01:30 1989
  1730. X--- include/obj.h    Sat Sep  2 15:05:43 1989
  1731. X***************
  1732. X*** 45,50 ****
  1733. X--- 45,61 ----
  1734. X      Bitfield(onamelth,6);
  1735. X      long age;        /* creation date */
  1736. X      long owornmask;
  1737. X+ 
  1738. X+ /* note that TIMEOUT in you.h is defined as 07777L; no bits for items that
  1739. X+  * confer properties may overlap that mask, or timeout.c will happily rearrange
  1740. X+  * the bits behind the back of the property code
  1741. X+  * shirts, balls, and chains are currently safe
  1742. X+  */
  1743. X+ #define    W_BALL    02000L
  1744. X+ #define    W_CHAIN    04000L
  1745. X+ #define    W_RINGL    010000L    /* make W_RINGL = RING_LEFT (see uprop) */
  1746. X+ #define    W_RINGR    020000L
  1747. X+ #define    W_RING    (W_RINGL | W_RINGR)
  1748. X  #define    W_ARM    040000L
  1749. X  #define    W_ARMC    0100000L
  1750. X  #define    W_ARMH    0200000L
  1751. X***************
  1752. X*** 53,70 ****
  1753. X  #define    W_ARMF    02000000L
  1754. X  #define    W_AMUL    04000000L
  1755. X  #define    W_TOOL    010000000L    /* wearing another tool (see uprop) */
  1756. X  #ifdef SHIRT
  1757. X! #define    W_ARMU    020000000L
  1758. X  #define    W_ARMOR    (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU)
  1759. X  #else
  1760. X  #define    W_ARMOR    (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF)
  1761. X  #endif
  1762. X- #define    W_RINGL    010000L    /* make W_RINGL = RING_LEFT (see uprop) */
  1763. X- #define    W_RINGR    020000L
  1764. X- #define    W_RING    (W_RINGL | W_RINGR)
  1765. X- #define    W_WEP    01000L
  1766. X- #define    W_BALL    02000L
  1767. X- #define    W_CHAIN    04000L
  1768. X      long oextra[1];        /* used for name of ordinary objects - length
  1769. X                     is flexible; amount for tmp gold objects */
  1770. X  };
  1771. X--- 64,76 ----
  1772. X  #define    W_ARMF    02000000L
  1773. X  #define    W_AMUL    04000000L
  1774. X  #define    W_TOOL    010000000L    /* wearing another tool (see uprop) */
  1775. X+ #define    W_WEP    020000000L
  1776. X  #ifdef SHIRT
  1777. X! #define    W_ARMU    01000L
  1778. X  #define    W_ARMOR    (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU)
  1779. X  #else
  1780. X  #define    W_ARMOR    (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF)
  1781. X  #endif
  1782. X      long oextra[1];        /* used for name of ordinary objects - length
  1783. X                     is flexible; amount for tmp gold objects */
  1784. X  };
  1785. X***************
  1786. X*** 75,81 ****
  1787. X  #define    ONAME(otmp)    ((char *) otmp->oextra)
  1788. X  #define    OGOLD(otmp)    (otmp->oextra[0])
  1789. X  
  1790. X! # ifndef STUPID_CPP    /* otherwise these macros are functions in lock.c */
  1791. X  #define Is_container(otmp)    (otmp->otyp >= ICE_BOX && otmp->otyp <= BAG_OF_TRICKS)
  1792. X  #define Is_box(otmp)    (otmp->otyp == LARGE_BOX || otmp->otyp == CHEST)
  1793. X  #define Is_mbag(otmp)    (otmp->otyp == BAG_OF_HOLDING || otmp->otyp == BAG_OF_TRICKS)
  1794. X--- 81,89 ----
  1795. X  #define    ONAME(otmp)    ((char *) otmp->oextra)
  1796. X  #define    OGOLD(otmp)    (otmp->oextra[0])
  1797. X  
  1798. X! # ifndef STUPID_CPP    /* otherwise these macros are functions */
  1799. X! /* #define OBJ_AT(x,y)    (levl[x][y].omask) */
  1800. X! 
  1801. X  #define Is_container(otmp)    (otmp->otyp >= ICE_BOX && otmp->otyp <= BAG_OF_TRICKS)
  1802. X  #define Is_box(otmp)    (otmp->otyp == LARGE_BOX || otmp->otyp == CHEST)
  1803. X  #define Is_mbag(otmp)    (otmp->otyp == BAG_OF_HOLDING || otmp->otyp == BAG_OF_TRICKS)
  1804. X***************
  1805. X*** 82,87 ****
  1806. X--- 90,99 ----
  1807. X  
  1808. X  #define is_sword(otmp)    (otmp->otyp >= SHORT_SWORD && otmp->otyp <= KATANA)
  1809. X  #define bimanual(otmp)    (otmp->olet == WEAPON_SYM && objects[otmp->otyp].oc_bimanual)
  1810. X+ 
  1811. X+ #define is_flammable(otmp)    (objects[otmp->otyp].oc_material == WOOD || objects[otmp->otyp].oc_material == 0)
  1812. X+ #define is_rustprone(otmp)    (objects[otmp->otyp].oc_material == METAL)
  1813. X+ #define is_corrodeable(otmp)    (objects[otmp->otyp].oc_material == COPPER)
  1814. X  # endif /* STUPID_CPP */
  1815. X  
  1816. X  #endif /* OBJ_H /**/
  1817. X*** include/Old/objclass.h    Wed Sep  6 17:01:42 1989
  1818. X--- include/objclass.h    Wed Aug 30 18:20:41 1989
  1819. X***************
  1820. X*** 18,27 ****
  1821. X  #define oc_bulky    oc_bool    /* for armor */
  1822. X  #define oc_charged    oc_bool    /* for rings & tools: allow +n or (n) */
  1823. X      Bitfield(oc_material,4);
  1824. X! #define GLASS    1
  1825. X! #define WOOD    2
  1826. X! #define METAL    4
  1827. X! #define MINERAL    8
  1828. X      uchar oc_oprop;     /* property (invis, &c.) conveyed */
  1829. X      char oc_olet;
  1830. X      int oc_prob;        /* probability for mkobj() */
  1831. X--- 18,32 ----
  1832. X  #define oc_bulky    oc_bool    /* for armor */
  1833. X  #define oc_charged    oc_bool    /* for rings & tools: allow +n or (n) */
  1834. X      Bitfield(oc_material,4);
  1835. X! #define GLASS        1
  1836. X! #define WOOD        2
  1837. X! #define COPPER        3 /* Cu */
  1838. X! #define METAL        4 /* Fe */
  1839. X! #define SILVER        5 /* Ag */
  1840. X! #define GOLD        6 /* Au */
  1841. X! #define PLATINUM    7 /* Pt */
  1842. X! #define MITHRIL        8
  1843. X! #define MINERAL        15
  1844. X      uchar oc_oprop;     /* property (invis, &c.) conveyed */
  1845. X      char oc_olet;
  1846. X      int oc_prob;        /* probability for mkobj() */
  1847. X*** include/Old/patchlevel.h    Wed Sep  6 17:01:53 1989
  1848. X--- include/patchlevel.h    Wed Sep  6 16:55:29 1989
  1849. X***************
  1850. X*** 20,23 ****
  1851. X   *  fix various minor bugs, and do further code cleaning
  1852. X   */
  1853. X  
  1854. X! #define PATCHLEVEL    2
  1855. X--- 20,32 ----
  1856. X   *  fix various minor bugs, and do further code cleaning
  1857. X   */
  1858. X  
  1859. X! /*
  1860. X!  *  Patch 3, September 6, 1989
  1861. X!  *  extend prototypes to ANSI compilers in addition to the previous MSDOS ones
  1862. X!  *  move object-on-floor references into functions in preparation for planned
  1863. X!  *    data structures to allow faster access and better colors
  1864. X!  *  fix some more bugs, and extend the portability of things added in earlier
  1865. X!  *    patches
  1866. X!  */
  1867. X! 
  1868. X! #define PATCHLEVEL    3
  1869. X*** include/Old/pcconf.h    Wed Sep  6 17:02:06 1989
  1870. X--- include/pcconf.h    Fri Sep  1 14:06:41 1989
  1871. X***************
  1872. X*** 103,110 ****
  1873. X  #  define HI_ZAP    BLUE    /* blue zaps! */
  1874. X  #endif
  1875. X  
  1876. X- #ifndef EXTERN_H
  1877. X- #include "extern.h"
  1878. X  #endif
  1879. X- 
  1880. X- #endif /* PCCONF_H /* */
  1881. X--- 103,106 ----
  1882. X*** include/Old/system.h    Wed Sep  6 17:03:05 1989
  1883. X--- include/system.h    Fri Sep  1 14:10:08 1989
  1884. X***************
  1885. X*** 109,117 ****
  1886. X--- 109,123 ----
  1887. X  E char *memcpy();
  1888. X  #endif
  1889. X  #ifdef MSDOS
  1890. X+ # if defined(TOS) && defined(__GNUC__)
  1891. X+ E int memcmp P((const char *,const char *,size_t));
  1892. X+ E char *memcpy P((char *,const char *,size_t));
  1893. X+ E char *memset P((char*,int,size_t));
  1894. X+ # else
  1895. X  E int memcmp P((char *,char *,unsigned int));
  1896. X  E char *memcpy P((char *,char *,unsigned int));
  1897. X  E char *memset P((char*,int,int));
  1898. X+ # endif /* TOS */
  1899. X  #endif
  1900. X  
  1901. X  #if defined(BSD) && defined(ultrix)    /* i.e., old versions of Ultrix */
  1902. X*** include/Old/tradstdc.h    Wed Sep  6 17:03:26 1989
  1903. X--- include/tradstdc.h    Fri Sep  1 13:53:24 1989
  1904. X***************
  1905. X*** 19,37 ****
  1906. X  
  1907. X  /* Used for robust ANSI parameter forward declarations:
  1908. X   * int sprintf P((char *, const char *, ...));
  1909. X   */
  1910. X  
  1911. X- /* However, if you do use a prototype in declaring a function but define
  1912. X-  * the function in an old-style manner, the compiler might (justifiably) barf.
  1913. X-  * Since we have to define functions in the old-style manner to accommodate
  1914. X-  * traditional compilers, we don't want to use prototypes if the ANSI-standard
  1915. X-  * compiler barfs on these.
  1916. X-  */
  1917. X- #ifdef __GNUC__ /* add other compilers as the need arises */
  1918. X- # define P(s)        ()
  1919. X- #else
  1920. X  # define P(s)        s
  1921. X! #endif
  1922. X  
  1923. X  # ifdef __TURBOC__    /* Cover for stupid Turbo C */
  1924. X  #  define genericptr_t    void *
  1925. X--- 19,37 ----
  1926. X  
  1927. X  /* Used for robust ANSI parameter forward declarations:
  1928. X   * int sprintf P((char *, const char *, ...));
  1929. X+  *
  1930. X+  * P() is used to surround parameter list for functions with a fixed number
  1931. X+  * of arguments; V() is used for varying numbers of arguments.  Separate
  1932. X+  * macros are needed because ANSI will mix old-style declarations with
  1933. X+  * prototypes, except in the case of varargs.
  1934. X   */
  1935. X  
  1936. X  # define P(s)        s
  1937. X! # ifdef MSDOS
  1938. X! #  define V(s)        s
  1939. X! # else
  1940. X! #  define V(s)        ()
  1941. X! # endif
  1942. X  
  1943. X  # ifdef __TURBOC__    /* Cover for stupid Turbo C */
  1944. X  #  define genericptr_t    void *
  1945. X***************
  1946. X*** 47,52 ****
  1947. X--- 47,53 ----
  1948. X  #else /* __STDC__ */    /* a "traditional" C  compiler */
  1949. X  
  1950. X  # define P(s)        ()
  1951. X+ # define V(s)        ()
  1952. X  
  1953. X  # ifndef genericptr_t
  1954. X  #  ifdef AMIGA
  1955. X*** include/Old/unixconf.h    Wed Sep  6 17:03:54 1989
  1956. X--- include/unixconf.h    Mon Sep  4 13:28:23 1989
  1957. X***************
  1958. X*** 156,163 ****
  1959. X  #  define HI_ZAP    BLUE    /* blue zaps! */
  1960. X  #endif
  1961. X  
  1962. X- #ifndef EXTERN_H
  1963. X- #include "extern.h"
  1964. X  #endif
  1965. X- 
  1966. X- #endif /* UNIXCONF_H /* */
  1967. X--- 156,159 ----
  1968. X*** include/Old/you.h    Wed Sep  6 17:04:25 1989
  1969. X--- include/you.h    Wed Sep  6 16:42:00 1989
  1970. X***************
  1971. X*** 34,40 ****
  1972. X  #define    WORN_AMUL    W_AMUL    /* 04000000L */
  1973. X  #define    WORN_BLINDF    W_TOOL    /* 010000000L */
  1974. X  #ifdef SHIRT
  1975. X! #define    WORN_SHIRT    W_ARMU    /* 020000000L */
  1976. X  #endif
  1977. X  #define    INTRINSIC    040000000L
  1978. X  
  1979. X--- 34,40 ----
  1980. X  #define    WORN_AMUL    W_AMUL    /* 04000000L */
  1981. X  #define    WORN_BLINDF    W_TOOL    /* 010000000L */
  1982. X  #ifdef SHIRT
  1983. X! #define    WORN_SHIRT    W_ARMU    /* 01000L */
  1984. X  #endif
  1985. X  #define    INTRINSIC    040000000L
  1986. X  
  1987. X
  1988. END_OF_FILE
  1989. if test 55369 -ne `wc -c <'patch03a'`; then
  1990.     echo shar: \"'patch03a'\" unpacked with wrong size!
  1991. fi
  1992. # end of 'patch03a'
  1993. fi
  1994. echo shar: End of archive 1 \(of 6\).
  1995. cp /dev/null ark1isdone
  1996. MISSING=""
  1997. for I in 1 2 3 4 5 6 ; do
  1998.     if test ! -f ark${I}isdone ; then
  1999.     MISSING="${MISSING} ${I}"
  2000.     fi
  2001. done
  2002. if test "${MISSING}" = "" ; then
  2003.     echo You have unpacked all 6 archives.
  2004.     rm -f ark[1-9]isdone
  2005. else
  2006.     echo You still need to unpack the following archives:
  2007.     echo "        " ${MISSING}
  2008. fi
  2009. ##  End of shell archive.
  2010. exit 0
  2011.