_Hunter, in Darkness_
Special source-code edition
Copyright 1999 Andrew Plotkin <erkyrath@eblong.com>
http://www.eblong.com/zarf/if.html

This is the source code for my 1999 IFComp entry.

This source code is provided for personal, educational use only. The
story and text of _Hunter, in Darkness_ belong to me; you may not use
them or create derivative works which contain them. However, you have
permission to use the programming techniques of this game in your own
works, and you may use the source code excluding game text.

If you want to *play* _Hunter, in Darkness_, you're in the wrong place.
Go to my web site, or the IF Archive, and download the compiled game
file. (http://www.eblong.com/zarf/ftp/huntdark.z5)

* Obvious Warning

This code contains spoilers! If you haven't played _Hunter_, and you
read this code, you'll certainly ruin the game for yourself. Play it
first. I am releasing this code for the benefit of Inform programmers
who are familiar with _Hunter_ and want to know how I did it.

* About The Source

This code is exactly the version I used to build _Hunter_ release 4.
The only change I have made is to update my email address.

The lack of comments is, I'm afraid, the reader's cross to bear.

hunter.inf: Main source file; includes all the others. Compile this one.
  Contains general-purpose routines, new grammar and verb routines,
  DrawStatusLine(), LibraryMessages(), etc.
hunter-kit.inf: The player; body parts. Initial inventory. The bandage.
hunter-0.inf: The initial few rooms.
hunter-1.inf: Climbing down the pit; ledge and rope.
hunter-2.inf: Bottom of the pit; corpse.
hunter-3.inf: Narrow crawl.
hunter-4.inf: A twisty maze of 32768 passages, all different.
hunter-5.inf: Top of slope.
hunter-6.inf: Base of canyon; final confrontation. Exit.
library.patch: Diff of changes I made to library 6/9. See below.
design-notes.txt: Notes, about the game design process.

* The Library

I compiled the game with an older version of the Inform library --
library 6/9. I also modified the library slightly. I *have not* tested
the game with later libraries such as 6/10. I do not guarantee its
behavior if you compile it with 6/10.

I am not including the modified 6/9 library in this package (for
reasons both of space and of copyright), but the file "library.patch"
contains the differences.

There are, in fact, three differences:

  - In parserm.h, three instances of "rfalse" have been changed to
"return -1". This is a 6/9 library bug which is fixed in 6/10.

  - If AMERICAN_COMMAS is defined (which _Hunter_ does), the "and" in
object lists has a comma before it. This prevents strange list phrases
such as "my parents, Ayn Rand and God".

  - If SKIP_MAGIC_ARTICLES is defined (which _Hunter_ does), the
parser does not attempt to magically infer the correct article ("a" or
"an") before objects. I don't like to rely on this feature, because
it's not supported on all interpreters, and it slows down execution in
any case. _Hunter_ always uses the article property when appropriate,
so the magic feature is not necessary.

