home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch3a / patches03d < prev   
Text File  |  1993-07-22  |  53KB  |  1,632 lines

  1. *** /tmp/da20422    Mon Jul 12 17:29:30 1993
  2. --- ./Files    Fri Jul  9 15:44:08 1993
  3. ***************
  4. *** 94,101 ****
  5.   
  6.   sys/mac:
  7.   (files for Macintosh versions)
  8. ! Install.mpw     MacHelp         NHDeflts        NHmake.hqx      NHrez.hqx
  9. ! NHrsrc.hqx      NHsound.hqx     News            dprintf.c       hack.h
  10.   maccurs.c       macerrs.c       macfile.c       macmain.c       macmenu.c
  11.   macsnd.c        mactopl.c       mactty.c        macunix.c       macwin.c
  12.   mgetline.c      mhdump.c        mmodal.c        mrecover.c      mrecover.hqx
  13. --- 94,102 ----
  14.   
  15.   sys/mac:
  16.   (files for Macintosh versions)
  17. ! DCproj.hqx      Install.mpw     Install.thk     MacHelp         LCproj.hqx
  18. ! MDproj.hqx      NHDeflts        NHmake.hqx      NHproj.hqx      NHrsrc.hqx
  19. ! NHsound.hqx     NetHack.r       News            dprintf.c       hack.h
  20.   maccurs.c       macerrs.c       macfile.c       macmain.c       macmenu.c
  21.   macsnd.c        mactopl.c       mactty.c        macunix.c       macwin.c
  22.   mgetline.c      mhdump.c        mmodal.c        mrecover.c      mrecover.hqx
  23. ***************
  24. *** 105,112 ****
  25.   (files for MSDOS version)
  26.   Install.dos     MakeGCC.src     MakeGCC.utl     MakeMSC.src     MakeMSC.utl
  27.   Makefile.dat    exesmurf.c      exesmurf.doc    maintovl.doc    msdos.c
  28. ! ovlmgr.asm      ovlmgr.doc      ovlmgr.uu       setup.bat       trampoli.c
  29. ! video.c
  30.   (files for running MSDOS binary under Windows)
  31.   nhico.uu        nhpif.uu
  32.   
  33. --- 106,113 ----
  34.   (files for MSDOS version)
  35.   Install.dos     MakeGCC.src     MakeGCC.utl     MakeMSC.src     MakeMSC.utl
  36.   Makefile.dat    exesmurf.c      exesmurf.doc    maintovl.doc    msdos.c
  37. ! msdos.hlp       ovlmgr.asm      ovlmgr.doc      ovlmgr.uu       setup.bat
  38. ! trampoli.c      video.c
  39.   (files for running MSDOS binary under Windows)
  40.   nhico.uu        nhpif.uu
  41.   
  42. *** /tmp/da20638    Mon Jul 12 17:30:24 1993
  43. --- dat/history    Mon Jul 12 13:14:37 1993
  44. ***************
  45. *** 52,64 ****
  46.   Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen
  47.   Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC.
  48.   
  49. ! Jon W{tte, with help from Ross Brown, Mike Engber, David Hairston, Michael
  50. ! Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke, Andy Swanson, and
  51. ! especially from Hao-yang Wang, developed NetHack 3.1 for the Macintosh.
  52.   
  53.   Timo Hakulinen ported NetHack 3.1 to OS/2.  Eric Smith ported NetHack 3.1
  54.   to the Atari.  Pat Rankin, with help from Joshua Delahunty, is responsible
  55. ! for the VMS version of NetHack 3.1.
  56.   
  57.   Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11.
  58.   
  59. --- 52,66 ----
  60.   Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen
  61.   Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC.
  62.   
  63. ! Jon W{tte and Hao-yang Wang, with help from Ross Brown, Mike Engber, David
  64. ! Hairston, Michael Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke,
  65. ! and Andy Swanson developed NetHack 3.1 for the Macintosh, porting it for
  66. ! MPW.  Building on their development, Barton House added a Think C port.  
  67.   
  68.   Timo Hakulinen ported NetHack 3.1 to OS/2.  Eric Smith ported NetHack 3.1
  69.   to the Atari.  Pat Rankin, with help from Joshua Delahunty, is responsible
  70. ! for the VMS version of NetHack 3.1.  Michael Allison ported NetHack 3.1 to
  71. ! Windows NT.
  72.   
  73.   Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11.
  74.   
  75. ***************
  76. *** 70,94 ****
  77.   in this, the list of Dungeoneers:
  78.   
  79.       Richard Addison           Eric Hendrickson       Mike Passaretti
  80. !     Tom Almy                  Bruce Holloway         Pat Rankin
  81. !     Ken Arromdee              Richard P. Hughey      Eric S. Raymond
  82. !     Eric Backus               Ari Huttunen           Frederick Roeber
  83. !     John S. Bien              John Kallen            John Rupley
  84. !     Ralf Brown                Del Lamb               Carl Schelin
  85. !     Ross Brown                Greg Laskin            Olaf Seibert
  86. !     David Cohrs               Johnny Lee             Kevin Sitze
  87. !     Jean-Christophe Collet    Tim Lennan             Eric R. Smith
  88. !     Steve Creps               Merlyn LeRoy           Kevin Smolkowski
  89. !     Kevin Darcy               Steve Linhart          Michael Sokolov
  90. !     Matthew Day               Ken Lorber             Stephen Spackman
  91. !     Joshua Delahunty          Dean Luick             Andy Swanson
  92. !     Bill Dyer                 Benson I. Margulies    Kevin Sweet
  93. !     Mike Engber               Pierre Martineau       Scott R. Turner
  94. !     Jochen Erwied             Roland McGrath         Steve VanDevender
  95. !     Mike Gallop               Norm Meluch            Janet Walz   
  96. !     David Gentzel             Rob Menke              Hao-yang Wang
  97. !     Mark Gooderum             Deron Meranda          Jon W{tte
  98. !     David Hairston            Bruce Mewborne         Tom West
  99. !     Timo Hakulinen            Izchak Miller          Paul Winner
  100. !     Michael Hamel             Gil Neiger             Gregg Wonderly
  101.       Jonathan Handler          Greg Olson
  102. --- 72,97 ----
  103.   in this, the list of Dungeoneers:
  104.   
  105.       Richard Addison           Eric Hendrickson       Mike Passaretti
  106. !     Michael Allison           Bruce Holloway         Pat Rankin
  107. !     Tom Almy                  Barton House           Eric S. Raymond
  108. !     Ken Arromdee              Richard P. Hughey      Frederick Roeber
  109. !     Eric Backus               Ari Huttunen           John Rupley
  110. !     John S. Bien              John Kallen            Carl Schelin
  111. !     Ralf Brown                Del Lamb               Olaf Seibert
  112. !     Ross Brown                Greg Laskin            Kevin Sitze
  113. !     David Cohrs               Johnny Lee             Eric R. Smith
  114. !     Jean-Christophe Collet    Tim Lennan             Kevin Smolkowski
  115. !     Steve Creps               Merlyn LeRoy           Michael Sokolov
  116. !     Kevin Darcy               Steve Linhart          Stephen Spackman
  117. !     Matthew Day               Ken Lorber             Andy Swanson
  118. !     Joshua Delahunty          Dean Luick             Kevin Sweet
  119. !     Bill Dyer                 Benson I. Margulies    Scott R. Turner
  120. !     Mike Engber               Pierre Martineau       Steve VanDevender
  121. !     Jochen Erwied             Roland McGrath         Janet Walz
  122. !     Mike Gallop               Norm Meluch            Hao-yang Wang
  123. !     David Gentzel             Rob Menke              Jon W{tte
  124. !     Mark Gooderum             Deron Meranda          Tom West
  125. !     David Hairston            Bruce Mewborne         Paul Winner
  126. !     Timo Hakulinen            Izchak Miller          Gregg Wonderly
  127. !     Michael Hamel             Gil Neiger
  128.       Jonathan Handler          Greg Olson
  129. *** /tmp/da20711    Mon Jul 12 17:30:48 1993
  130. --- dat/rumors.fal    Fri Jul  2 13:19:26 1993
  131. ***************
  132. *** 256,262 ****
  133.   They say that minotaurs get lost outside of the mazes.
  134.   They say that most trolls are born again.
  135.   They say that naming your cat Garfield will make you more attractive.
  136. - They say that no one has ever walked to hell.
  137.   They say that no one knows everything about everything in the dungeon.
  138.   They say that no one plays NetHack just for the fun of it.
  139.   They say that no one really subscribes to rec.games.hack.
  140. --- 256,261 ----
  141. ***************
  142. *** 275,281 ****
  143.   They say that queen bees get that way by eating royal jelly.
  144.   They say that reading a scare monster scroll is the same as saying Elbereth.
  145.   They say that real hackers always are controlled.
  146. - They say that real hackers never burn in hell.
  147.   They say that real hackers never sleep.
  148.   They say that shopkeepers never carry more than 20 gold pieces, at night.
  149.   They say that shopkeepers never sell blessed potions of invisibility.
  150. --- 274,279 ----
  151. ***************
  152. *** 326,332 ****
  153.   They say that you should always store your tools in the cellar.
  154.   They say that you should be careful while climbing the ladder to success.
  155.   They say that you should call your armor `rustproof'.
  156. - They say that you should keep your hands in your pockets around the gypsies.
  157.   They say that you should name your dog Spuds to have a cool pet.
  158.   They say that you should name your weapon after your first monster kill.
  159.   They say that you should never introduce a rope golem to a succubus.
  160. --- 324,329 ----
  161. ***************
  162. *** 351,357 ****
  163.   When in a maze follow the right wall and you will never get lost.
  164.   When you have a key, you don't have to wait for the guard.
  165.   Why are you wasting time reading fortunes?
  166. - Why bother casting fireballs in hell?
  167.   Wish for a master key and open the Magic Memory Vault!
  168.   Wizard expects every monster to do its duty.
  169.   Wow!  You could've had a potion of fruit juice!
  170. --- 348,353 ----
  171. *** /tmp/da20719    Mon Jul 12 17:30:50 1993
  172. --- dat/rumors.tru    Wed Jul  7 16:01:08 1993
  173. ***************
  174. *** 6,12 ****
  175.   A nymph knows how to unlock chains.
  176.   A potion of blindness lets you see invisible things.
  177.   A priest can get the gods to listen easily.
  178. - A priest can go to hell just like the rest of us.
  179.   A priestess and a virgin you might be, but that unicorn won't care.
  180.   A ring of conflict is a bad thing if there is a nurse in the room.
  181.   A short sword is not as good as a long sword.
  182. --- 6,11 ----
  183. ***************
  184. *** 209,215 ****
  185.   They say that grid bugs only exist in a strictly Cartesian sense.
  186.   They say that hackers often feel jumpy about eating nymphs.
  187.   They say that having polymorph control won't shock you.
  188. - They say that hell hath no fury like Medusa scorned.
  189.   They say that if it's hard getting your food down another bite could kill.
  190.   They say that if you don't wear glasses why bother with carrots?
  191.   They say that if you notice a loose board beneath you, don't step on it.
  192. --- 208,213 ----
  193. ***************
  194. *** 276,283 ****
  195.   They say that the local shopkeeper frowns upon the rude tourist.
  196.   They say that the only door to the vampire's tower is on its lowest level.
  197.   They say that the only good djinni is a grateful djinni.
  198. - They say that the road through hell is a one-way street.
  199. - They say that the road to hell begins with Medusa.
  200.   They say that the thing about genocide is that it works both ways.
  201.   They say that the unicorn horn rule is if it ain't broke then don't fix it.
  202.   They say that the view from a fog cloud is really very moving.
  203. --- 274,279 ----
  204. ***************
  205. *** 319,330 ****
  206.   Vampires hate garlic.
  207.   Vault guards never disturb their Lords.
  208.   Visitors are requested not to apply genocide to shopkeepers.
  209. - Warning:  people who eat red dragons can go to hell!
  210.   Watch out, the Wizard might come back.
  211.   Water traps have no effect on dragons.
  212.   What is a cockatrice going to eat when it gets hungry?
  213. - Where do you think all those demons come from?  From hell, of course.
  214. - Where do you think hell is located?  It must be deep, deep down.
  215.   Why do you suppose they call them MAGIC markers?
  216.   Why would anybody in his sane mind engrave "Elbereth"?
  217.   Wishing too much may bring you too little.
  218. --- 315,323 ----
  219. *** /tmp/da21642    Mon Jul 12 17:37:04 1993
  220. --- sys/amiga/Install.ami    Mon Jul 12 14:14:17 1993
  221. ***************
  222. *** 2,11 ****
  223.         Using, Compiling, and Installing Amiga NetHack 3.1
  224.         (or Everything You Never Wanted to Know Before NetHacking)
  225.   
  226. !          Last Revision: 12 May 1993 for NetHack 3.1.2
  227.   
  228.   
  229. ! 0. Pre-intro for NetHack 3.1.2.
  230.      New for 3.1.2:
  231.        Addition of asksavedisk option to eliminate need for savedir;n syntax
  232.        Scrolling message window if screen is tall enough.
  233. --- 2,16 ----
  234.         Using, Compiling, and Installing Amiga NetHack 3.1
  235.         (or Everything You Never Wanted to Know Before NetHacking)
  236.   
  237. !          Last Revision: 18 June 1993 for NetHack 3.1.3
  238.   
  239.   
  240. ! 0. Pre-intro for NetHack 3.1.3.
  241. !    New for 3.1.3:
  242. !      Updated this file: new binary release organization and missing options.
  243. !      Fixed PAL screen calculation error.
  244. !      Improved font characters for walls, floor, wands, doors, and swallowed.
  245. !      Support for individual icons per character type.
  246.      New for 3.1.2:
  247.        Addition of asksavedisk option to eliminate need for savedir;n syntax
  248.        Scrolling message window if screen is tall enough.
  249. ***************
  250. *** 51,57 ****
  251.       you are playing the Amiga version.  Finally, if you are having trouble
  252.       compiling NetHack, you may use the same address, or, for compiler
  253.       specific problems, send mail to:
  254. !         Greg Olson (golson@sundown.sun.com)  for Manx
  255.           Richard Addison (addison@pollux.usc.edu) for SAS/C.
  256.       We do not currently have a contact for the DICE port.
  257.   
  258. --- 56,62 ----
  259.       you are playing the Amiga version.  Finally, if you are having trouble
  260.       compiling NetHack, you may use the same address, or, for compiler
  261.       specific problems, send mail to:
  262. !         Greg Olson (golson@sundown.sun.com) for Manx.
  263.           Richard Addison (addison@pollux.usc.edu) for SAS/C.
  264.       We do not currently have a contact for the DICE port.
  265.   
  266. ***************
  267. *** 103,108 ****
  268. --- 108,118 ----
  269.       * SCORE <options> - Display the record of scores.  Options as
  270.         available on the CLI command line after a -s flag.
  271.   
  272. +     * FONT=name.font:size - Set font used for text on screens which are
  273. +       tall enough (>250 lines).
  274. +     * PENS=col0/col1/.../col7 - Set palette colors.
  275.       Note that the NetHack.cnf file is read first, then the ToolTypes.  This
  276.       means that the options specified in the NetHack.cnf act as defaults
  277.       which can be overridden by an individual's personal icon's ToolTypes.
  278. ***************
  279. *** 115,121 ****
  280.       NetHack.cnf file or on an OPTIONS line: flush and silent.  When enabled,
  281.       flush discards all characters in the queue except the first, which limits
  282.       typeahead accidents.  The default setting is noflush.  Silent turns off
  283. !     the (new for 3.1.1) audio output.
  284.   
  285.       Usually, most of the confusing options will be set in the NetHack.cnf
  286.       file once when the game is installed and can be ignored after that.
  287. --- 125,131 ----
  288.       NetHack.cnf file or on an OPTIONS line: flush and silent.  When enabled,
  289.       flush discards all characters in the queue except the first, which limits
  290.       typeahead accidents.  The default setting is noflush.  Silent turns off
  291. !     the audio output.
  292.   
  293.       Usually, most of the confusing options will be set in the NetHack.cnf
  294.       file once when the game is installed and can be ignored after that.
  295. ***************
  296. *** 138,156 ****
  297.       each archive in the appropriate directory will put the files in the
  298.       places they belong (note that the archives may have been split
  299.       for distribution).  If you are installing from source, most of this
  300. !     work will be done by the time the build is finished.
  301.   
  302.       IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE
  303.       OLD SAVE AND BONES FILES - THEY WILL NOT WORK!  This includes save
  304. !     and bones files from NetHack 3.1.0.
  305.   
  306.   Will NetHack fit on your machine?
  307.       NetHack 3.1 is large.  NetHack 3.1 is very large.  You will need:
  308. !     > Amiga 500, 1000, 2000, 2500, or 3000.  The A600, A1200, and A4000
  309.         should work, but have not been tested.
  310. !     > WorkBench 1.3 or 2.04.  WorkBench 1.2 will NOT work; we will NOT
  311. !       be fixing that.  WorkBench 2.1 and 3.0 should work but have not been
  312. !       tested.
  313.       > At least 2 meg of RAM.  NetHack will NOT run in 1 meg.
  314.       > Mass storage: NetHack will run on one floppy - but it won't be nice.
  315.         Two floppies are almost enough.  A hard drive with over 3 meg of
  316. --- 148,166 ----
  317.       each archive in the appropriate directory will put the files in the
  318.       places they belong (note that the archives may have been split
  319.       for distribution).  If you are installing from source, most of this
  320. !     work will be done by the time the build is finished.  See below for
  321. !     complete installation instructions.
  322.   
  323.       IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE
  324.       OLD SAVE AND BONES FILES - THEY WILL NOT WORK!  This includes save
  325. !     and bones files from NetHack 3.1.0 and 3.1.1.
  326.   
  327.   Will NetHack fit on your machine?
  328.       NetHack 3.1 is large.  NetHack 3.1 is very large.  You will need:
  329. !     > Amiga 500, 1000, 2000, 2500, 3000, or 4000.  The A600, and A1200
  330.         should work, but have not been tested.
  331. !     > WorkBench 1.3 or 2.04 or later.  WorkBench 1.2 or 2.02 will NOT work;
  332. !       we will NOT be fixing that. 
  333.       > At least 2 meg of RAM.  NetHack will NOT run in 1 meg.
  334.       > Mass storage: NetHack will run on one floppy - but it won't be nice.
  335.         Two floppies are almost enough.  A hard drive with over 3 meg of
  336. ***************
  337. *** 158,239 ****
  338.   
  339.   Find space for the files
  340.       Floppy installation:
  341. !     Format four disks named:
  342.           NetHack
  343.           HackExe
  344.           NHsave
  345.           NHlevels
  346.       Hard Disk installation:
  347.           cd to wherever you want to install NetHack
  348.       make a new directory to be the main NetHack directory:
  349. !       makedir NetHack
  350. !     and the subdirectories:
  351. !       makedir NetHack/save
  352. !       makedir NetHack/levels
  353. !     In s:User-Sequence (under 2.0 or later) or s:Startup (under 1.3),
  354. !     assign NetHack: to the NetHack directory you created above.
  355. !     assign HackExe: to the same directory.
  356.   Install the files
  357. !     Unpack the archives in the directories or onto the disks (you can
  358. !     tell what to unpack where by the file names) by cd'ing to HackExe:
  359. !     and unpacking archive 1 and then to NetHack: and unpacking archive 2.
  360.       Use the table in the next section to see where things should end up.
  361.       Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds
  362.       files end up in the NetHack:sounds directory.
  363.   
  364.   Configuration
  365.       Using your favorite text editor, edit NetHack:NetHack.cnf to match
  366.       your system.  Check HackExe:NetHack.dir and be sure that the paths
  367.       are correct (note that the C or D beginning the line is required and
  368.       is not part of the file path).  The HackWB program uses two standard
  369. !     Amiga programs that must be installed in their standard places: c:copy,
  370. !     c:rename.
  371.   
  372.   III.B. File Location Table
  373. !     NetHack:
  374.       A-filla.lev    A-fillb.lev    A-goal.lev    A-locate.lev
  375.       A-start.lev    air.lev        asmodeus.lev    astral.lev
  376.       B-filla.lev    B-fillb.lev    B-goal.lev    B-locate.lev
  377.       B-start.lev    baalz.lev    bigroom.lev    C-filla.lev
  378.       C-fillb.lev    C-goal.lev    C-locate.lev    C-start.lev
  379. !     castle.lev    cmdhelp        data        default.icon
  380. !     dungeon        E-filla.lev    E-fillb.lev    E-goal.lev
  381.       E-locate.lev    E-start.lev    earth.lev    fakewiz1.lev
  382. !     fakewiz2.lev    fire.lev    Guidebook    Guidebook.info
  383. !     H-filla.lev    H-fillb.lev    H-goal.lev    H-locate.lev
  384. !     H-start.lev    hack.font    HackWB        HackWB.info
  385. !     HackCli        help        hh        history
  386. !     juiblex.lev    K-filla.lev    K-fillb.lev    K-goal.lev
  387. !     K-locate.lev    K-start.lev    knox.lev    license
  388. !     logfile        ManPage        ManPage.info    medusa-1.lev
  389. !     medusa-2.lev    minefill.lev    minetown.lev    mine_end.lev
  390. !     NetHack.cnf    NetHack.c01    NetHack.d00    news
  391. !     NewGame.info    opthelp        options        oracle.lev
  392. !     oracles        orcus.lev    P-filla.lev    P-fillb.lev
  393. !     P-goal.lev    P-locate.lev    P-start.lev    perm
  394. !     quest.dat    R-filla.lev    R-fillb.lev    R-goal.lev
  395. !     R-locate.lev    R-start.lev    ReadMe        ReadMe.info
  396. !     record        recover        rumors        S-filla.lev
  397. !     S-fillb.lev    S-goal.lev    S-locate.lev    S-start.lev
  398. !     sanctum.lev    T-filla.lev    T-fillb.lev    T-goal.lev
  399. !     T-locate.lev    T-start.lev    tower1.lev    tower2.lev
  400. !     tower3.lev    V-filla.lev    V-fillb.lev    V-goal.lev
  401. !     V-locate.lev    V-start.lev    valley.lev    W-filla.lev
  402. !     W-fillb.lev    W-goal.lev    W-locate.lev    W-start.lev
  403. !     water.lev    wizard1.lev    wizard2.lev    wizard3.lev
  404. !     wizhelp
  405.   
  406. !     NetHack:hack
  407. !     8
  408. !     NetHack:sounds
  409. !     Bell        Bugle        Drum_Of_Earthquake
  410. !     Fire_Horn    Frost_Horn    Leather_Drum
  411. !     Magic_Flute    Magic_Harp    Tooled_Horn
  412. !     Wooden_Flute    Wooden_Harp
  413. !     HackExe:
  414. !     NetHack.dir
  415.       NetHack.c00
  416.   
  417.   
  418. --- 168,284 ----
  419.   
  420.   Find space for the files
  421.       Floppy installation:
  422. !     Format five disks named:
  423.           NetHack
  424.           HackExe
  425. +         HackExe2
  426.           NHsave
  427.           NHlevels
  428.       Hard Disk installation:
  429.           cd to wherever you want to install NetHack
  430.       make a new directory to be the main NetHack directory:
  431. !       makedir NH313
  432. !       makedir NH313/NetHack
  433. !       makedir NH313/HackExe
  434. !       makedir NH313/HackExe2
  435. !     In S:User-Startup (under 2.0 or later) or S:Startup-Sequence
  436. !     (under 1.3):
  437. !       assign NetHack: to the NetHack directory you created above.
  438. !       assign HackExe: to the HackExe directory.
  439. !       assign HackExe2: to the HackExe2 directory.
  440.   Install the files
  441. !     Unpack the archives in the directories or onto the disks.  Cd to
  442. !     the appropriate places then unpack the files:
  443. !     Archive 1 (the one this ReadMe came in), should be unpacked into
  444. !     NetHack:.  If you are installing to hard disk, cd to the NH313 directory
  445. !     before unpacking.
  446. !       lz x NH31P3-1.lzh
  447. !     Archive 2 unpacks in two sections to two different places.  If you are
  448. !     installing to hard disk, cd to the NH313 directory before unpacking; if
  449. !     you are installing to floppies, unpack each section to a different disk.
  450. !       lz x NH31P3-2.lzh HackExe/#?
  451. !       lz x NH31P3-2.lzh HackExe2/#?
  452. !       
  453.       Use the table in the next section to see where things should end up.
  454.       Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds
  455.       files end up in the NetHack:sounds directory.
  456.   
  457. + Floppy fixup
  458. +     If you are installing to floppies the files on each disk are probably one
  459. +     level too far down (for example NetHack:NetHack.cnf is probably
  460. +     NetHack:NetHack/NetHack.cnf).  This is how to fix that:
  461. +     Put the following lines into the file ram:fixit (be sure to delete the
  462. +     blanks from the start of the lines or this will NOT work!)
  463. +       .key x
  464. +       rename <x> /<x>
  465. +     For each of the disks NH313, NetHack, and HackExe, cd into the "inner"
  466. +     directory (for example "cd NetHack:NetHack") and execute these commands:
  467. +       list >ram:x lformat="execute ram:fixit %s" #?
  468. +       execute ram:x
  469.   Configuration
  470.       Using your favorite text editor, edit NetHack:NetHack.cnf to match
  471.       your system.  Check HackExe:NetHack.dir and be sure that the paths
  472.       are correct (note that the C or D beginning the line is required and
  473.       is not part of the file path).  The HackWB program uses two standard
  474. !     Amiga programs that must be installed in their standard places: c:copy
  475. !     and c:rename.  The icons for the documentation invoke SYS:Utilities/More
  476. !     and will probably need to be updated for your installation.
  477.   
  478. +     Create the save file directory (makedir NetHack:save) and the levels file
  479. +     directory (makedir NetHack:levels) - if you use floppies than these
  480. +     directories will each be a different floppy.
  481. +     Create the score file (echo to NetHack:record) and, if desired, the log
  482. +     file (echo to NetHack:logfile).
  483.   III.B. File Location Table
  484. ! NetHack:
  485. !     amii.hlp    cmdhelp        data        default.icon
  486. !     dungeon        Guidebook    Guidebook.info    hack.font
  487. !     hack/8        HackCli        HackCli.info    HackWB
  488. !     HackWB.hlp    HackWB.info    help        hh
  489. !     history        license        ManPage        ManPage.info
  490. !     NetHack.cnf    NewGame.info    opthelp        options
  491. !     oracles        quest.dat    ReadMe        ReadMe.info
  492. !     Recover        Recover.info    RecoverMan    RecoverMan.info    
  493. !     rumors
  494. !     sounds/Bell            sounds/Bugle
  495. !     sounds/Drum_Of_Earthquake    sounds/Fire_Horn
  496. !     sounds/Frost_Horn        sounds/Leather_Drum
  497. !     sounds/Magic_Flute        sounds/Magic_Harp
  498. !     sounds/Tooled_Horn        sounds/Wooden_Flute
  499. !     sounds/Wooden_Harp
  500. !     wizhelp
  501. ! HackExe:
  502.       A-filla.lev    A-fillb.lev    A-goal.lev    A-locate.lev
  503.       A-start.lev    air.lev        asmodeus.lev    astral.lev
  504.       B-filla.lev    B-fillb.lev    B-goal.lev    B-locate.lev
  505.       B-start.lev    baalz.lev    bigroom.lev    C-filla.lev
  506.       C-fillb.lev    C-goal.lev    C-locate.lev    C-start.lev
  507. !     castle.lev    E-filla.lev    E-fillb.lev    E-goal.lev
  508.       E-locate.lev    E-start.lev    earth.lev    fakewiz1.lev
  509. !     fakewiz2.lev    fire.lev    H-filla.lev    H-fillb.lev
  510. !     H-goal.lev    H-locate.lev    H-start.lev    juiblex.lev
  511. !     K-filla.lev    K-fillb.lev    K-goal.lev    K-locate.lev
  512. !     K-start.lev    knox.lev    medusa-1.lev    medusa-2.lev
  513. !     minefill.lev    minetown.lev    mine_end.lev    NetHack.c01
  514. !     NetHack.d00    NetHack.dir    oracle.lev    orcus.lev
  515. !     P-filla.lev    P-fillb.lev    P-goal.lev    P-locate.lev
  516. !     P-start.lev    R-filla.lev    R-fillb.lev    R-goal.lev
  517. !     R-locate.lev    R-start.lev    S-filla.lev    S-fillb.lev
  518. !     S-goal.lev    S-locate.lev    S-start.lev    sanctum.lev
  519. !     T-filla.lev    T-fillb.lev    T-goal.lev    T-locate.lev
  520. !     T-start.lev    tower1.lev    tower2.lev    tower3.lev
  521. !     V-filla.lev    V-fillb.lev    V-goal.lev    V-locate.lev
  522. !     V-start.lev    valley.lev    W-filla.lev    W-fillb.lev
  523. !     W-goal.lev    W-locate.lev    W-start.lev    water.lev
  524. !     wizard1.lev    wizard2.lev    wizard3.lev
  525.   
  526. ! HackExe2:
  527.       NetHack.c00
  528.   
  529.   
  530. ***************
  531. *** 249,255 ****
  532.   IV.B. Basic Compilation
  533.       NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5,
  534.       or the registered version of DICE.  The "official" compiler for NetHack 3.1
  535. !     patchlevel 1 is SAS/C 6.2 - we have dropped support for SAS/C 5.x.
  536.   
  537.   IV.B.1. Introduction to Compiling NetHack
  538.       Before doing any compilation, read the README files distributed
  539. --- 294,300 ----
  540.   IV.B. Basic Compilation
  541.       NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5,
  542.       or the registered version of DICE.  The "official" compiler for NetHack 3.1
  543. !     patchlevel 3 is SAS/C 6.2 - we have dropped support for SAS/C 5.x.
  544.   
  545.   IV.B.1. Introduction to Compiling NetHack
  546.       Before doing any compilation, read the README files distributed
  547. ***************
  548. *** 354,363 ****
  549.       be the correct contents for a floppy based system.
  550.   
  551.   IV.C.2 TTY Interface
  552. !     There is a basic tty interface available under 3.1.2.  This is a
  553.       preliminary version and it will change in the future.  Expect bugs.
  554.       (Due to the instability of the interface it will not be in the
  555. !     official binaries for 3.1.2).  The TTY mode is designed for use in
  556.       a BBS setting - it is specifically not recommended for use on the
  557.       console.  The TTY interface is not currently compatible with split
  558.       binaries - invoke NetHack directly as NetHack.  In addition, you should
  559. --- 399,408 ----
  560.       be the correct contents for a floppy based system.
  561.   
  562.   IV.C.2 TTY Interface
  563. !     There is a basic tty interface available since 3.1.2.  This is a
  564.       preliminary version and it will change in the future.  Expect bugs.
  565.       (Due to the instability of the interface it will not be in the
  566. !     official binaries for 3.1.3).  The TTY mode is designed for use in
  567.       a BBS setting - it is specifically not recommended for use on the
  568.       console.  The TTY interface is not currently compatible with split
  569.       binaries - invoke NetHack directly as NetHack.  In addition, you should
  570. *** /tmp/da21650    Mon Jul 12 17:37:07 1993
  571. --- sys/amiga/Makefile.ami    Fri Jul  2 13:13:17 1993
  572. ***************
  573. *** 358,364 ****
  574.       copy $(NHGSTFILE) to $(GSTFILE)
  575.   
  576.   Amiga:ami.lnk: Amiga:Makefile.ami
  577. !     list to Amiga:ami.lnk OBJ:\#?.o QUICK NOHEAD
  578.   
  579.   obj:  $(HOBJ)
  580.   obja:  $(AMIGAOBJ)
  581. --- 358,364 ----
  582.       copy $(NHGSTFILE) to $(GSTFILE)
  583.   
  584.   Amiga:ami.lnk: Amiga:Makefile.ami
  585. !     list to Amiga:ami.lnk lformat="OBJ:%s" OBJ:\#?.o QUICK NOHEAD
  586.   
  587.   obj:  $(HOBJ)
  588.   obja:  $(AMIGAOBJ)
  589. *** /tmp/da21666    Mon Jul 12 17:37:11 1993
  590. --- sys/amiga/NetHack.cnf    Mon Jul 12 13:32:09 1993
  591. ***************
  592. *** 88,94 ****
  593.   
  594.   # An example using the hack.font graphics character set:
  595.   GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \
  596. !        215 213 046 193 192 198 198 046 229 035 \
  597.          060 062 060 062 094 034 095 092 035 123 \
  598.          125 042 125 042 042 035 035 046 035 125 \
  599.          241 240 242 243 042 033 123 125 064 038 \
  600. --- 88,94 ----
  601.   
  602.   # An example using the hack.font graphics character set:
  603.   GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \
  604. !        215 213 217 145 146 147 148 217 218 229 \
  605.          060 062 060 062 094 034 095 092 035 123 \
  606.          125 042 125 042 042 035 035 046 035 125 \
  607.          241 240 242 243 042 033 123 125 064 038 \
  608. *** /tmp/da21684    Mon Jul 12 17:37:15 1993
  609. --- sys/amiga/amidos.c    Tue Jul  6 15:10:57 1993
  610. ***************
  611. *** 194,202 ****
  612.   eraseall(path, files)
  613.   const char *path, *files;
  614.   {
  615. !     char buf[FILENAME];
  616. !     short i;
  617. !     BPTR fileLock, dirLock, dirLock2;
  618.       struct FileInfoBlock *fibp;
  619.       int chklen;
  620.   #ifdef BETA
  621. --- 194,200 ----
  622.   eraseall(path, files)
  623.   const char *path, *files;
  624.   {
  625. !     BPTR dirLock, dirLock2;
  626.       struct FileInfoBlock *fibp;
  627.       int chklen;
  628.   #ifdef BETA
  629. ***************
  630. *** 422,428 ****
  631.   static BPTR OrgDirLock = NO_LOCK;
  632.   
  633.   chdir(dir)
  634. ! char *dir;
  635.   {
  636.       if (dir == orgdir) {
  637.           /* We want to go back to where we came from. */
  638. --- 420,426 ----
  639.   static BPTR OrgDirLock = NO_LOCK;
  640.   
  641.   chdir(dir)
  642. ! const char *dir;
  643.   {
  644.       if (dir == orgdir) {
  645.           /* We want to go back to where we came from. */
  646. *** /tmp/da21725    Mon Jul 12 17:37:27 1993
  647. --- sys/amiga/amii.hlp    Mon Jul 12 14:14:29 1993
  648. ***************
  649. *** 1,4 ****
  650. !             Amiga specific help file for NetHack 3.1.2
  651.   
  652.   The Amiga port of NetHack supports a number of additional commands
  653.   and facilities specific to the Amiga.  Listed below are the things
  654. --- 1,4 ----
  655. !             Amiga specific help file for NetHack 3.1.3
  656.   
  657.   The Amiga port of NetHack supports a number of additional commands
  658.   and facilities specific to the Amiga.  Listed below are the things
  659. ***************
  660. *** 12,17 ****
  661. --- 12,28 ----
  662.                                   these settings of the pens to allow
  663.                                   the game to be resumed with the
  664.                                   same palette at a later date.
  665. + Separate Icon types for saved games:
  666. +                                 Each character class can have a
  667. +                                 separate icon.  The first letter
  668. +                                 of the character class is used
  669. +                                 for deriving the name.  e.g. a
  670. +                                 Wizard saved game would use
  671. +                                 Nethack:w.icon if it is present.
  672. +                                 The NetHack:default.icon is used
  673. +                                 if the associated character class
  674. +                                 icon is not present.
  675.   
  676.   Amiga-specific run-time option:
  677.           flush                   throw away keyboard type-ahead
  678. *** /tmp/da21749    Mon Jul 12 17:37:33 1993
  679. --- sys/amiga/amirip.c    Tue Jul  6 15:11:01 1993
  680. ***************
  681. *** 45,50 ****
  682. --- 45,51 ----
  683.   static void strand ( int x , int y , int dir );
  684.   static void tomb_text ( char *p );
  685.   void draw_moon(int phase);
  686. + void FDECL( amii_outrip, ( winid, int ) );
  687.   
  688.   extern char *killed_by_prefix[];
  689.   struct Window *ripwin;
  690. *** /tmp/da21773    Mon Jul 12 17:37:39 1993
  691. --- sys/amiga/amiwbench.c    Tue Jul  6 15:11:05 1993
  692. ***************
  693. *** 405,411 ****
  694.   ami_default_icon( defname )
  695.       char *defname;
  696.   {
  697. -     long lock;
  698.       static char name[ 300 ];
  699.   
  700.       strcpy( name, "NetHack:x.icon" );
  701. --- 405,410 ----
  702. *** /tmp/da21901    Mon Jul 12 17:38:11 1993
  703. --- sys/amiga/wb.c    Tue Jul  6 15:01:45 1993
  704. ***************
  705. *** 2124,2133 ****
  706.   
  707.                       fp = fopen( StrConf, "r" );
  708.                       if( !fp )
  709.                       fp = fopen( "NetHack:NetHack.cnf", "r" );
  710.                       if( !fp )
  711.                       {
  712. !                                 errmsg( FLASH, "Can't open nethack.cnf" );
  713.                                   break;
  714.                               }
  715.   
  716. --- 2124,2136 ----
  717.   
  718.                       fp = fopen( StrConf, "r" );
  719.                       if( !fp )
  720. +                     {
  721.                       fp = fopen( "NetHack:NetHack.cnf", "r" );
  722. +                     strcpy( StrConf, "NetHack:NetHack.cnf" );
  723. +                 }
  724.                       if( !fp )
  725.                       {
  726. !                                 errmsg( FLASH, "Can't open config file" );
  727.                                   break;
  728.                               }
  729.   
  730. ***************
  731. *** 2147,2153 ****
  732.                       nfp = fopen( nname, "w" );
  733.                       if( !nfp )
  734.                       {
  735. !                                 errmsg( FLASH, "Can't open new_nethack.cnf for write" );
  736.                                   fclose( fp );
  737.                                   break;
  738.                               }
  739. --- 2150,2156 ----
  740.                       nfp = fopen( nname, "w" );
  741.                       if( !nfp )
  742.                       {
  743. !                                 errmsg( FLASH, "Can't open new config file for write" );
  744.                                   fclose( fp );
  745.                                   break;
  746.                               }
  747. ***************
  748. *** 2212,2217 ****
  749. --- 2215,2221 ----
  750.       FILE *fp, *nfp;
  751.       char buf[ 300 ];
  752.       char path=0,option=0,dir=0,pens=0,levels=0,save=0;
  753. +     char oname[ 300 ], nname[ 300 ];
  754.   
  755.       setoneopt( PATH_IDX, StrPath );
  756.       PutOptions( curopts );
  757. ***************
  758. *** 2220,2235 ****
  759.       setoneopt( LEVELS_IDX, StrLevels );
  760.       setoneopt( SAVE_IDX, StrSave );
  761.   
  762. !     fp = fopen( "nethack.cnf", "r" );
  763.       if( !fp )
  764.       {
  765.           errmsg( FLASH, "Can't open nethack.cnf" );
  766.           return;
  767.       }
  768. !     nfp = fopen( "new_nethack.cnf", "w" );
  769.       if( !nfp )
  770.       {
  771. !         errmsg( FLASH, "Can't open new_nethack.cnf for write" );
  772.           fclose( fp );
  773.           return;
  774.       }
  775. --- 2224,2253 ----
  776.       setoneopt( LEVELS_IDX, StrLevels );
  777.       setoneopt( SAVE_IDX, StrSave );
  778.   
  779. !     strcpy( oname, dirname( StrConf ) );
  780. !     if( oname[ strlen(oname)-1 ] != ':' )
  781. !     {
  782. !     sprintf( nname, "%s/new_nethack.cnf", oname );
  783. !     strcat( oname, "/" );
  784. !     strcat( oname, "old_nethack.cnf" );
  785. !     }
  786. !     else
  787. !     {
  788. !     sprintf( nname, "%snew_nethack.cnf", oname );
  789. !     strcat( oname, "old_nethack.cnf" );
  790. !     }
  791. !     fp = fopen( StrConf, "r" );
  792.       if( !fp )
  793.       {
  794.           errmsg( FLASH, "Can't open nethack.cnf" );
  795.           return;
  796.       }
  797. !     nfp = fopen( nname, "w" );
  798.       if( !nfp )
  799.       {
  800. !         sprintf( buf, "Can't open %s for write", nname );
  801. !         errmsg( FLASH, buf );
  802.           fclose( fp );
  803.           return;
  804.       }
  805. ***************
  806. *** 2288,2296 ****
  807.       /* Close up and rename files */
  808.       fclose( fp );
  809.       fclose( nfp );
  810. !     unlink( "old_nethack.cnf" );
  811. !     rename( "nethack.cnf", "old_nethack.cnf" );
  812. !     rename( "new_nethack.cnf", "nethack.cnf" );
  813.   }
  814.   
  815.   void do_gadgetup( imsg )
  816. --- 2306,2340 ----
  817.       /* Close up and rename files */
  818.       fclose( fp );
  819.       fclose( nfp );
  820. !     unlink( oname );
  821. !     if( filecopy( StrConf, oname ) == 0 )
  822. !     filecopy( nname, StrConf );
  823. ! }
  824. ! filecopy( from, to )
  825. !     char *from, *to;
  826. ! {
  827. !     char *buf;
  828. !     int i = 0;
  829. !     buf = malloc( strlen(to) + strlen(from) + 20 );
  830. !     if( buf )
  831. !     {
  832. !         sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to );
  833. !         /* Check SysBase instead?  Shouldn't matter  */
  834. !     if( IntuitionBase->LibNode.lib_Version >= 37 )
  835. !         i = System( buf, NULL );
  836. !     else
  837. !         Execute( buf, NULL, NULL );
  838. !         free( buf );
  839. !     }
  840. !     else
  841. !     {
  842. !         errmsg( FLASH, "Failed to allocate memory for copy command" );
  843. !         return( -1 );
  844. !     }
  845. !     return( i );
  846.   }
  847.   
  848.   void do_gadgetup( imsg )
  849. *** /tmp/da21909    Mon Jul 12 17:38:15 1993
  850. --- sys/amiga/wbcli.c    Thu Jul  1 15:00:51 1993
  851. ***************
  852. *** 218,224 ****
  853.       run_game(gptr);
  854.   
  855.   /* wait for game to end */
  856. !     WaitEOG(gptr);
  857.       FreeGITEM(gptr);
  858.   #endif /* TESTCMDLINE */
  859.   /* ask about another? */
  860. --- 218,227 ----
  861.       run_game(gptr);
  862.   
  863.   /* wait for game to end */
  864. !     if(gptr->wbs)
  865. !         WaitEOG(gptr);
  866. !     /* else load failed */
  867.       FreeGITEM(gptr);
  868.   #endif /* TESTCMDLINE */
  869.   /* ask about another? */
  870. ***************
  871. *** 958,963 ****
  872. --- 961,967 ----
  873.       {
  874.       vprintf( str, vp );
  875.       va_end( vp );
  876. +     printf("\n");
  877.       return;
  878.       }
  879.   
  880. *** /tmp/da21933    Mon Jul 12 17:38:22 1993
  881. --- sys/amiga/wbprotos.h    Fri Jul  2 13:12:55 1993
  882. ***************
  883. *** 105,109 ****
  884. --- 105,110 ----
  885.   void UpdateCnfFile( void );
  886.   char *basename( char * );
  887.   void flushIDCMP( struct MsgPort *);
  888. + filecopy( char *, char * );
  889.   
  890.   #undef P
  891. *** /tmp/da21965    Mon Jul 12 17:38:33 1993
  892. --- sys/amiga/winami.c    Thu Jul  8 14:19:59 1993
  893. ***************
  894. *** 159,164 ****
  895. --- 159,166 ----
  896.   
  897.   struct Rectangle lastinvent, lastmsg;
  898.   
  899. + static int FDECL( put_ext_cmd, ( char *, int, struct amii_WinDesc *, int ) );
  900.   #ifdef    SHAREDLIB
  901.   WinamiBASE *WinamiBase;
  902.   
  903. ***************
  904. *** 445,450 ****
  905. --- 447,453 ----
  906.       { SA_PubName, (ULONG)"NetHack" },
  907.       { SA_Overscan, OSCAN_TEXT },
  908.       { SA_Pens, (ULONG)scrnpens },
  909. +     { SA_DisplayID, 0 },
  910.       { TAG_DONE, 0 },
  911.   };
  912.   #endif
  913. ***************
  914. *** 770,786 ****
  915.       if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL )
  916.       panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd");
  917.       amii_clear_nhwindow( NHW_MESSAGE );
  918. !     pline("# ");
  919.       colx = 3;
  920.       w = cw->win;
  921.   
  922.       if( bigscreen )
  923.       {
  924. !         bottom = w->Height - w->BorderTop - w->BorderBottom;
  925. !         bottom /= w->RPort->TxHeight;
  926. !         if( bottom > 0 )
  927. !         --bottom;
  928.       }
  929.       while((c = WindowGetchar()) != EOF)
  930.       {
  931.       amii_curs( WIN_MESSAGE, colx, bottom );
  932. --- 773,795 ----
  933.       if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL )
  934.       panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd");
  935.       amii_clear_nhwindow( NHW_MESSAGE );
  936. !     if( scrollmsg )
  937. !     {
  938. !     pline("#");
  939. !     amii_putstr( WIN_MESSAGE, -1, " " );
  940. !     }
  941. !     else
  942. !     {
  943. !     pline("# ");
  944. !     }
  945.       colx = 3;
  946.       w = cw->win;
  947.   
  948.       if( bigscreen )
  949.       {
  950. !         bottom = amii_msgborder( w );
  951.       }
  952.       while((c = WindowGetchar()) != EOF)
  953.       {
  954.       amii_curs( WIN_MESSAGE, colx, bottom );
  955. ***************
  956. *** 789,794 ****
  957. --- 798,813 ----
  958.           int win, i, sel;
  959.           char buf[ 100 ];
  960.   
  961. +         if(did_comp){
  962. +         while(bufp!=obufp){
  963. +             bufp--;
  964. +             amii_curs(WIN_MESSAGE, --colx, bottom);
  965. +             Text(w->RPort,spaces,1);
  966. +             amii_curs(WIN_MESSAGE,colx,bottom);
  967. +             did_comp=0;
  968. +         }
  969. +         }
  970.           win = amii_create_nhwindow( NHW_MENU );
  971.           amii_start_menu( win );
  972.   
  973. ***************
  974. *** 808,813 ****
  975. --- 827,833 ----
  976.           {
  977.           *obufp = '\33';
  978.           obufp[ 1 ] = 0;
  979. +         return;
  980.           }
  981.           else
  982.           {
  983. ***************
  984. *** 818,831 ****
  985.           }
  986.   
  987.           /* copy in the text */
  988. !         amii_clear_nhwindow( WIN_MESSAGE );
  989. !         strcpy( obufp, extcmdlist[ i ].ef_txt );
  990. !         colx = 0;
  991. !         pline( "# " );
  992. !         pline( obufp );
  993. !         bufp = obufp + 2;
  994.           }
  995. -         return;
  996.       }
  997.       else if(c == '\033')
  998.       {
  999. --- 838,853 ----
  1000.           }
  1001.   
  1002.           /* copy in the text */
  1003. !         if( extcmdlist[ i ].ef_txt != NULL )
  1004. !         {
  1005. !             amii_clear_nhwindow( WIN_MESSAGE );
  1006. !             strcpy( obufp = bufp, extcmdlist[ i ].ef_txt );
  1007. !             (void) put_ext_cmd( obufp, colx, cw, bottom );
  1008. !             return;
  1009. !         }
  1010. !         else
  1011. !             DisplayBeep( NULL );
  1012.           }
  1013.       }
  1014.       else if(c == '\033')
  1015.       {
  1016. ***************
  1017. *** 884,900 ****
  1018.           {
  1019.           Strcpy(obufp, extcmdlist[com_index].ef_txt);
  1020.           /* finish printing our string */
  1021. !         Text( w->RPort, bufp, strlen( bufp ) );
  1022. !         amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom);
  1023.           bufp = obufp; /* reset it */
  1024.           if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO)
  1025.               bufp += strlen(obufp);
  1026. !             did_comp=1;
  1027.           }
  1028.           else
  1029.           {
  1030. !         Text( w->RPort, bufp, strlen( bufp ) );
  1031. !         amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom);
  1032.           if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO)
  1033.               bufp++;
  1034.           }
  1035. --- 906,920 ----
  1036.           {
  1037.           Strcpy(obufp, extcmdlist[com_index].ef_txt);
  1038.           /* finish printing our string */
  1039. !         colx = put_ext_cmd( obufp, colx, cw, bottom );
  1040.           bufp = obufp; /* reset it */
  1041.           if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO)
  1042.               bufp += strlen(obufp);
  1043. !         did_comp=1;
  1044.           }
  1045.           else
  1046.           {
  1047. !         colx = put_ext_cmd( obufp, colx, cw, bottom );
  1048.           if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO)
  1049.               bufp++;
  1050.           }
  1051. ***************
  1052. *** 910,915 ****
  1053. --- 930,985 ----
  1054.       }
  1055.       *bufp = 0;
  1056.       return;
  1057. + }
  1058. + static int
  1059. + put_ext_cmd( obufp, colx, cw, bottom )
  1060. +     char *obufp;
  1061. +     int colx, bottom;
  1062. +     struct amii_WinDesc *cw;
  1063. + {
  1064. +     struct Window *w = cw->win;
  1065. +     char *t;
  1066. +     t = malloc( strlen( obufp ) + 7 );
  1067. +     if( t != NULL )
  1068. +     {
  1069. +     if( scrollmsg )
  1070. +     {
  1071. +         sprintf( t, "xxx%s", obufp );
  1072. +         t[0] = 1;
  1073. +         t[1] = -1;
  1074. +         t[2] = ' ';
  1075. +         amii_curs( WIN_MESSAGE, 0, bottom);
  1076. +         SetAPen( w->RPort, C_WHITE );
  1077. +         Text(w->RPort, "># ", 3 );
  1078. +         SetAPen( w->RPort, C_RED );
  1079. +         Text(w->RPort, t+3, strlen( t ) - 3 );
  1080. +     }
  1081. +     else
  1082. +     {
  1083. +         sprintf( t, "# %s", obufp );
  1084. +         amii_curs( WIN_MESSAGE, 0, bottom);
  1085. +         SetAPen( w->RPort, C_WHITE );
  1086. +         Text(w->RPort, t, strlen( t ) );
  1087. +     }
  1088. +     if( scrollmsg )
  1089. +         SetAPen( w->RPort, C_WHITE );
  1090. +     if( cw->data[ cw->maxrow - 1 ] )
  1091. +         free( cw->data[ cw->maxrow - 1 ] );
  1092. +     cw->data[ cw->maxrow - 1 ] = t;
  1093. +     }
  1094. +     else
  1095. +     {
  1096. +     amii_curs( WIN_MESSAGE, 0, bottom);
  1097. +     SetAPen( w->RPort, C_WHITE );
  1098. +     Text(w->RPort, "# ", 2 );
  1099. +     SetAPen( w->RPort, C_RED );
  1100. +     Text(w->RPort, obufp, strlen( obufp ) );
  1101. +     SetAPen( w->RPort, C_WHITE );
  1102. +     }
  1103. +     amii_curs( WIN_MESSAGE, colx = strlen( obufp ) + 3 + ( scrollmsg != 0 ), bottom);
  1104. +     return( colx );
  1105.   }
  1106.   #endif /* COM_COMPL */
  1107.   
  1108. *** /tmp/da21981    Mon Jul 12 17:38:38 1993
  1109. --- sys/amiga/windefs.h    Tue Jul  6 15:45:52 1993
  1110. ***************
  1111. *** 67,72 ****
  1112. --- 67,76 ----
  1113.   #include "amiga:lib/libmacs.h"
  1114.   #endif
  1115.   
  1116. + #ifdef    INTUI_NEW_LOOK
  1117. + #include <utility/tagitem.h>
  1118. + #endif
  1119.   /* cw->data[x] contains 2 characters worth of special information.  These
  1120.    * characters are stored at the offsets as described here.
  1121.    */
  1122. *** /tmp/da21997    Mon Jul 12 17:38:42 1993
  1123. --- sys/amiga/winfuncs.c    Tue Jul  6 15:45:58 1993
  1124. ***************
  1125. *** 8,15 ****
  1126.   #include "incl:patchlevel.h"
  1127.   
  1128.   int topl_addspace=1;
  1129.   
  1130.   void
  1131.   amii_destroy_nhwindow(win)      /* just hide */
  1132.       register winid win;
  1133. --- 8,15 ----
  1134.   #include "incl:patchlevel.h"
  1135.   
  1136.   int topl_addspace=1;
  1137. + extern struct TagItem scrntags[];
  1138.   
  1139.   void
  1140.   amii_destroy_nhwindow(win)      /* just hide */
  1141.       register winid win;
  1142. ***************
  1143. *** 224,229 ****
  1144. --- 224,237 ----
  1145.       nw->TopEdge = 1;
  1146.       nw->Height = HackScreen->WBorTop + 1 +
  1147.           ((txheight+1)*(1+(scrollmsg != 0))) + 1 + HackScreen->WBorBottom;
  1148. +     if( ( HackScreen->Height - 1 -
  1149. +         ( ( TextsFont->tf_YSize +
  1150. +             HackScreen->WBorTop + 1 + HackScreen->WBorBottom ) * 2 ) -
  1151. +         ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 ) - maph <
  1152. +             TextsFont->tf_YSize + 3 )
  1153. +     {
  1154. +         scrollmsg = 0;
  1155. +     }
  1156.       if( scrollmsg )
  1157.       {
  1158.           nw->FirstGadget = &MsgScroll;
  1159. ***************
  1160. *** 234,243 ****
  1161.           /* Text space in status window */
  1162.           ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 -
  1163.           maph;
  1164. !         nw->Flags |= WINDOWSIZING;
  1165. ! #ifdef    VIEWWINDOW
  1166. !         nw->Flags |= WINDOWDRAG;
  1167. ! #endif
  1168.       }
  1169.   #ifdef  INTUI_NEW_LOOK
  1170.       if( IntuitionBase->LibNode.lib_Version >= 37 )
  1171. --- 242,248 ----
  1172.           /* Text space in status window */
  1173.           ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 -
  1174.           maph;
  1175. !         nw->Flags |= WINDOWSIZING|WINDOWDRAG;
  1176.       }
  1177.   #ifdef  INTUI_NEW_LOOK
  1178.       if( IntuitionBase->LibNode.lib_Version >= 37 )
  1179. ***************
  1180. *** 248,254 ****
  1181.       /* Just allow height adjustments */
  1182.       nw->MinWidth = w->Width;
  1183.       nw->MinHeight = HackScreen->WBorTop +
  1184. !         HackScreen->WBorBottom + ((w->RPort->TxHeight+1)*2) + 3;
  1185.       }
  1186.   
  1187.       nw->IDCMPFlags |= MENUPICK;
  1188. --- 253,259 ----
  1189.       /* Just allow height adjustments */
  1190.       nw->MinWidth = w->Width;
  1191.       nw->MinHeight = HackScreen->WBorTop +
  1192. !         HackScreen->WBorBottom + ((TextsFont->tf_YSize+1)*2) + 3;
  1193.       }
  1194.   
  1195.       nw->IDCMPFlags |= MENUPICK;
  1196. ***************
  1197. *** 294,300 ****
  1198.       {
  1199.       char buf[ 100 ];
  1200.   
  1201. !     sprintf( buf, "nw is l: %d, t: %d, w: %d, h: %d",
  1202.           nw->LeftEdge, nw->TopEdge,
  1203.           nw->Width, nw->Height );
  1204.       raw_print( buf );
  1205. --- 299,306 ----
  1206.       {
  1207.       char buf[ 100 ];
  1208.   
  1209. !     sprintf( buf, "nw(%d) is l: %d, t: %d, w: %d, h: %d",
  1210. !         type,
  1211.           nw->LeftEdge, nw->TopEdge,
  1212.           nw->Width, nw->Height );
  1213.       raw_print( buf );
  1214. ***************
  1215. *** 520,525 ****
  1216. --- 526,533 ----
  1217.   void
  1218.   amii_init_nhwindows()
  1219.   {
  1220. +     int forcenobig = 0;
  1221.       if (HackScreen)
  1222.       panic( "init_nhwindow() called twice", 0 );
  1223.   
  1224. ***************
  1225. *** 572,590 ****
  1226.           NewHackScreen.ViewModes |= LACE;
  1227.           bigscreen = 1;
  1228.       }
  1229. !     else if( GfxBase->NormalDisplayRows >= 240 )
  1230.       {
  1231.           bigscreen = 1;
  1232.       }
  1233.       }
  1234.       else if( bigscreen == -1 )
  1235.       bigscreen = 0;
  1236.       else if( bigscreen )
  1237.       {
  1238.       /* If bigscreen requested and we don't have enough rows in
  1239.        * noninterlaced mode, switch to interlaced...
  1240.        */
  1241. !     if( GfxBase->NormalDisplayRows < 240 )
  1242.       {
  1243.           amiIDisplay->ypix *= 2;
  1244.           NewHackScreen.ViewModes |= LACE;
  1245. --- 580,601 ----
  1246.           NewHackScreen.ViewModes |= LACE;
  1247.           bigscreen = 1;
  1248.       }
  1249. !     else if( GfxBase->NormalDisplayRows >= 270 )
  1250.       {
  1251.           bigscreen = 1;
  1252.       }
  1253.       }
  1254.       else if( bigscreen == -1 )
  1255. +     {
  1256.       bigscreen = 0;
  1257. +     forcenobig = 1;
  1258. +     }
  1259.       else if( bigscreen )
  1260.       {
  1261.       /* If bigscreen requested and we don't have enough rows in
  1262.        * noninterlaced mode, switch to interlaced...
  1263.        */
  1264. !     if( GfxBase->NormalDisplayRows < 270 )
  1265.       {
  1266.           amiIDisplay->ypix *= 2;
  1267.           NewHackScreen.ViewModes |= LACE;
  1268. ***************
  1269. *** 679,688 ****
  1270.       }
  1271.       NewHackScreen.BlockPen = C_CYAN;
  1272.   #ifdef    INTUI_NEW_LOOK
  1273. !     if( IntuitionBase->LibNode.lib_Version >= 37 && bigscreen )
  1274.       {
  1275.       NewHackScreen.Width = STDSCREENWIDTH;
  1276.       NewHackScreen.Height = STDSCREENHEIGHT;
  1277.       }
  1278.   #endif
  1279.   
  1280. --- 690,734 ----
  1281.       }
  1282.       NewHackScreen.BlockPen = C_CYAN;
  1283.   #ifdef    INTUI_NEW_LOOK
  1284. !     if( IntuitionBase->LibNode.lib_Version >= 37 )
  1285.       {
  1286. +         int i;
  1287. +         long modeid;
  1288. +     struct Screen *wbscr;
  1289. +     for( i = 0; scrntags[i].ti_Tag != SA_DisplayID &&
  1290. +             scrntags[i].ti_Tag != TAG_DONE; ++i )
  1291. +     {
  1292. +         continue;
  1293. +     }
  1294.       NewHackScreen.Width = STDSCREENWIDTH;
  1295.       NewHackScreen.Height = STDSCREENHEIGHT;
  1296. +     if( forcenobig == 0 )
  1297. +     {
  1298. +         wbscr = LockPubScreen( "Workbench" );
  1299. +         if( wbscr )
  1300. +         modeid = GetVPModeID( &wbscr->ViewPort ); 
  1301. +         if( ( wbscr != NULL ) && ( modeid != INVALID_ID ) )
  1302. +         {
  1303. +         if( wbscr->ViewPort.Modes & LACE )
  1304. +             NewHackScreen.ViewModes |= LACE;
  1305. +         UnlockPubScreen( NULL, wbscr );
  1306. +         if( scrntags[i].ti_Tag == SA_DisplayID )
  1307. +         {
  1308. +             scrntags[i].ti_Data = (ULONG)modeid;
  1309. +         }
  1310. +         }
  1311. +     }
  1312. +     else
  1313. +     {
  1314. +         if( scrntags[i].ti_Tag == SA_DisplayID )
  1315. +         {
  1316. +         scrntags[i].ti_Tag = TAG_IGNORE;
  1317. +         }
  1318. +     }
  1319.       }
  1320.   #endif
  1321.   
  1322. ***************
  1323. *** 1082,1088 ****
  1324.       TextsFont13.ta_Name = nname;
  1325.       TextsFont13.ta_YSize = size;
  1326.   
  1327. !     /* No alternate text font allowed for 640x250 or smaller */
  1328.       if( !HackScreen || !bigscreen )
  1329.       return;
  1330.   
  1331. --- 1128,1134 ----
  1332.       TextsFont13.ta_Name = nname;
  1333.       TextsFont13.ta_YSize = size;
  1334.   
  1335. !     /* No alternate text font allowed for 640x269 or smaller */
  1336.       if( !HackScreen || !bigscreen )
  1337.       return;
  1338.   
  1339. *** /tmp/da22021    Mon Jul 12 17:38:49 1993
  1340. --- sys/amiga/winproto.h    Thu Jul  8 14:20:03 1993
  1341. ***************
  1342. *** 12,17 ****
  1343. --- 12,20 ----
  1344.   void amii_getlin ( const char *prompt , char *bufp );
  1345.   void getlind ( const char *prompt , char *bufp , const char *dflt );
  1346.   char *amii_get_color_string( void );
  1347. + int filecopy( char *from, char *to );
  1348. + char *basename( char *str );
  1349. + char *dirname( char *str );
  1350.   
  1351.   /* winstr.c */
  1352.   void amii_putstr ( winid window , int attr , const char *str );
  1353. ***************
  1354. *** 23,28 ****
  1355. --- 26,32 ----
  1356.   void amii_remember_topl ( void );
  1357.   int amii_doprev_message ( void );
  1358.   void flushIDCMP( struct MsgPort * );
  1359. + int amii_msgborder( struct Window * );
  1360.   
  1361.   /* winkey.c */
  1362.   int amii_nh_poskey ( int *x , int *y , int *mod );
  1363. *** /tmp/da22029    Mon Jul 12 17:38:51 1993
  1364. --- sys/amiga/winreq.c    Tue Jul  6 15:01:54 1993
  1365. ***************
  1366. *** 162,169 ****
  1367.               else if( gd->GadgetID == GADCOLSAVE )
  1368.               {
  1369.                   FILE *fp, *nfp;
  1370. !                 char buf[ 300 ];
  1371. !                 int once = 0;
  1372.   
  1373.                   fp = fopen( configfile, "r" );
  1374.               if( !fp )
  1375. --- 162,169 ----
  1376.               else if( gd->GadgetID == GADCOLSAVE )
  1377.               {
  1378.                   FILE *fp, *nfp;
  1379. !                 char buf[ 300 ], nname[ 300 ], oname[ 300 ];
  1380. !             int once = 0;
  1381.   
  1382.                   fp = fopen( configfile, "r" );
  1383.               if( !fp )
  1384. ***************
  1385. *** 172,178 ****
  1386.                               break;
  1387.               }
  1388.   
  1389. !                 nfp = fopen( "New_NetHack.cnf", "w" );
  1390.                   if( !nfp )
  1391.                   {
  1392.                   pline( "can't write to New_NetHack.cnf" );
  1393. --- 172,191 ----
  1394.                               break;
  1395.               }
  1396.   
  1397. !             strcpy( oname, dirname( configfile ) );
  1398. !             if( oname[ strlen(oname)-1 ] != ':' )
  1399. !             {
  1400. !                 sprintf( nname, "%s/New_NetHack.cnf", oname );
  1401. !                 strcat( oname, "/" );
  1402. !                 strcat( oname, "Old_NetHack.cnf" );
  1403. !             }
  1404. !             else
  1405. !             {
  1406. !                 sprintf( nname, "%sNew_NetHack.cnf", oname );
  1407. !                 strcat( oname, "Old_NetHack.cnf" );
  1408. !             }
  1409. !                 nfp = fopen( nname, "w" );
  1410.                   if( !nfp )
  1411.                   {
  1412.                   pline( "can't write to New_NetHack.cnf" );
  1413. ***************
  1414. *** 213,221 ****
  1415.               }
  1416.               fclose( fp );
  1417.               fclose( nfp );
  1418. !             unlink( "Old_NetHack.cnf" );
  1419. !             rename( configfile, "Old_NetHack.cnf" );
  1420. !             rename( "New_NetHack.cnf", configfile );
  1421.               done = 1;
  1422.               okay = 1;
  1423.               }
  1424. --- 226,234 ----
  1425.               }
  1426.               fclose( fp );
  1427.               fclose( nfp );
  1428. !             unlink( oname );
  1429. !             if( filecopy( configfile, oname ) == 0 )
  1430. !                 filecopy( nname, configfile );
  1431.               done = 1;
  1432.               okay = 1;
  1433.               }
  1434. ***************
  1435. *** 279,284 ****
  1436. --- 292,360 ----
  1437.   
  1438.       LoadRGB4( &scrn->ViewPort, flags.amii_curmap, 1L << DEPTH );
  1439.       CloseWindow( nw );
  1440. + }
  1441. + char *dirname( str )
  1442. +     char *str;
  1443. + {
  1444. +     char *t, c;
  1445. +     static char dir[ 300 ];
  1446. +     t = strrchr( str, '/' );
  1447. +     if( !t )
  1448. +     t = strrchr( str, ':' );
  1449. +     if( !t )
  1450. +     t = str;
  1451. +     else
  1452. +     {
  1453. +         c = *t;
  1454. +         *t = 0;
  1455. +         strcpy( dir, str );
  1456. +         *t = c;
  1457. +     }
  1458. +     return( dir );
  1459. + }
  1460. + char *basename( str )
  1461. +     char *str;
  1462. + {
  1463. +     char *t;
  1464. +     t = strrchr( str, '/' );
  1465. +     if( !t )
  1466. +     t = strrchr( str, ':' );
  1467. +     if( !t )
  1468. +     t = str;
  1469. +     else
  1470. +     ++t;
  1471. +     return( t );
  1472. + }
  1473. + filecopy( from, to )
  1474. +     char *from, *to;
  1475. + {
  1476. +     char *buf;
  1477. +     int i = 0;
  1478. +     buf = malloc( strlen(to) + strlen(from) + 20 );
  1479. +     if( buf )
  1480. +     {
  1481. +         sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to );
  1482. +         /* Check SysBase instead?  Shouldn't matter  */
  1483. + #ifdef    INTUI_NEW_LOOK
  1484. +     if( IntuitionBase->LibNode.lib_Version >= 37 )
  1485. +         i = System( buf, NULL );
  1486. +     else
  1487. + #endif
  1488. +         Execute( buf, NULL, NULL );
  1489. +         free( buf );
  1490. +     }
  1491. +     else
  1492. +     {
  1493. +         return( -1 );
  1494. +     }
  1495. +     return( i );
  1496.   }
  1497.   
  1498.   /* The colornames, and the default values for the pens */
  1499. *** /tmp/da22037    Mon Jul 12 17:38:54 1993
  1500. --- sys/amiga/winstr.c    Thu Jul  8 14:20:07 1993
  1501. ***************
  1502. *** 16,22 ****
  1503.   {
  1504.       struct Window *w;
  1505.       register struct amii_WinDesc *cw;
  1506. !     register char *ob;
  1507.       int i, j, n0, bottom, totalvis, wheight;
  1508.   
  1509.   #ifdef    VIEWWINDOW
  1510. --- 16,22 ----
  1511.   {
  1512.       struct Window *w;
  1513.       register struct amii_WinDesc *cw;
  1514. !     char *ob;
  1515.       int i, j, n0, bottom, totalvis, wheight;
  1516.   
  1517.   #ifdef    VIEWWINDOW
  1518. ***************
  1519. *** 72,81 ****
  1520.   #define MORE_FUDGE  10  /* 8 for --more--, 1 for preceeding sp, 1 for */
  1521.           /* putstr pad */
  1522.       case NHW_MESSAGE:
  1523. !         bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
  1524. !         bottom /= w->RPort->TxHeight;
  1525. !         if( bottom > 0 )
  1526. !         --bottom;
  1527.   
  1528.       wheight = ( w->Height - w->BorderTop -
  1529.                   w->BorderBottom - 3 ) / w->RPort->TxHeight;
  1530. --- 72,79 ----
  1531.   #define MORE_FUDGE  10  /* 8 for --more--, 1 for preceeding sp, 1 for */
  1532.           /* putstr pad */
  1533.       case NHW_MESSAGE:
  1534. !         /* Calculate the bottom line */
  1535. !         bottom = amii_msgborder( w );
  1536.   
  1537.       wheight = ( w->Height - w->BorderTop -
  1538.                   w->BorderBottom - 3 ) / w->RPort->TxHeight;
  1539. ***************
  1540. *** 267,272 ****
  1541. --- 265,284 ----
  1542.       }
  1543.   }
  1544.   
  1545. + int
  1546. + amii_msgborder( w )
  1547. +     struct Window *w;
  1548. + {
  1549. +     register int bottom;
  1550. +     /* There is a one pixel border at the borders, so subtract two */
  1551. +     bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
  1552. +     bottom /= w->RPort->TxHeight;
  1553. +     if( bottom > 0 )
  1554. +     --bottom;
  1555. +     return( bottom );
  1556. + }
  1557.   void
  1558.   outmore( cw )
  1559.       register struct amii_WinDesc *cw;
  1560. ***************
  1561. *** 278,293 ****
  1562.       if( scrollmsg )
  1563.       {
  1564.           int bottom;
  1565. !         bottom = w->Height - w->BorderTop - w->BorderBottom;
  1566. !         bottom /= w->RPort->TxHeight;
  1567. !         if( bottom > 0 )
  1568. !         --bottom;
  1569.           ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  1570.               w->BorderLeft-1, w->BorderTop+1,
  1571.               w->Width - w->BorderRight-1,
  1572.               w->Height - w->BorderBottom - 1 );
  1573.           amii_curs( WIN_MESSAGE, 1, bottom );
  1574. !         Text( w->RPort, "--more--", 9 );
  1575.       }
  1576.       else
  1577.           Text( w->RPort, " --more--", 9 );
  1578. --- 290,304 ----
  1579.       if( scrollmsg )
  1580.       {
  1581.           int bottom;
  1582. !         bottom = amii_msgborder( w );
  1583.           ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  1584.               w->BorderLeft-1, w->BorderTop+1,
  1585.               w->Width - w->BorderRight-1,
  1586.               w->Height - w->BorderBottom - 1 );
  1587.           amii_curs( WIN_MESSAGE, 1, bottom );
  1588. !         Text( w->RPort, "--more--", 8 );
  1589.       }
  1590.       else
  1591.           Text( w->RPort, " --more--", 9 );
  1592.