NetHack-related stuff

Patches

The following patches are relative to v3.4.1.

succubus.diff: Ever
accidentally pressed '>' while standing on an up staircase and
got the message, "You can't go down here."? Well, if your mind is dirty as
mine is, an alternate
interpretation of that message has probably occurred to you. This patch
adds the corresponding
YAFM
to succubus encounters in the appropriate situation.

sticky.diff, v6:
Implements the #sticky extended command (shortcut key
<ALT-y>). If the 'fixinv' option is set (as it is
by default), objects in your inventory will retain their inventory letters
when dropped and picked up, but they can still be displaced if there's
something else in their slot (if, for instance, you drop your key that's in
slot 'k', pick up something else that ends up in slot 'k', and then pick up
your key again). Objects marked "sticky" will try harder to retain their
inventory letters, displacing other objects if necessary. Sticky objects
are indicated with '=' in inventory listings (note: this is
currently only implemented for X11 and text modes).
NB: You will need to manually add "#define
STICKY_OBJECTS" to include/config.h after applying this
patch to enable the functionality. [Fixed in v2: sticky
flag is now cleared when generating bones files] [Fixed in v3: Added
documentation and help text patches.] [Changed in v4: adapted to v3.4.0,
based on work by
Tapio Kelloniemi (thanks!); added text-mode support.] [Changed in v5:
adapted to v3.4.1.] [Changed in v6: Added sticky flag display to the
'I'nventory command, using patch from Roderick Schertler
(thanks!).]

preadjust.diff, v6:
If you die as often as I do, it can be a pain having to manually
re-#adjust your starting inventory every time you start a new
character. This patch allows you to specify those adjustments in your
.nethackrc and let the game take care of them for you. The line
for a pre-#adjust is of the form `PREADJUST:C-cloak'
to move an object whose name contains the string "cloak" to slot 'C';
if you've also installed the sticky patch above, you
can also use the alternate form `PREADJUST:C=cloak', which
will also mark the cloak as sticky. Note that your string is checked
against the internal object name data, which doesn't include, for instance,
"ring of" for rings (that bit is added on the fly as needed).
NB: You will need to manually add "#define
PREADJUST" to include/config.h after applying this patch to
enable the functionality. [Fixed in v2: Forgot to return a value from a
boolean function. I'm surprised it compiled...] [Changed in v3: Added
documentation.] [Changed in v4: adapted to v3.4.0; combined sticky and
no-sticky versions into single patch using "#ifdef
STICKY_OBJECTS" as necessary.] [Changed in v5: adapted to v3.4.1.]
[Changed in v6: updated for v3.4.3]

tame-foocubus.diff: Dallying
with a
foocubus
can, of course, have negative effects. It occurred to me, though, that if
the foocubus is tame, s/he should at least feel contrite about having hurt
you -- hence this patch. It is independent of my
other patch in this vein, and should apply successfully with or without
it (with some line offsets in the latter case).

wand-yafm.diff, v2: A tiny patch to
change the
engraving
message for wands of striking to something which seemed a little more
YAFM.
[Changed in v2: Now generates no message when blind, for consistency with
all the other bugs-on-the-floor messages.]

ride-key.diff, v2: A tiny patch to
add a shortcut key <ALT-SHIFT-r> for the #ride
command. [Fixed in v2: Added help text patches.]

[That last was the primary motivation for the patch. Sure, it sounds
excessive, but I play with the 'number_pad' option off, and I can't count
the number of times I've bumped into a peaceful monster and tried to walk
around it. In the northwest direction. By typing 'y'. You see the
problem.] NB: You will need to manually add
"#define PARANOID" to include/config.h after applying
this patch to enable the functionality. [Changed in v2: adapted to
v3.4.0.] [Changed in v3: adapted to v3.4.1.]

monabil-yafm.diff: A tiny patch
to add a YAFM
to the #monster command when you're not polymorphed into anything.

killed-kenny.diff, v2: YAYAFMP (Yet
Another YAFM
Patch), and an all-new reason to name your pets Kenny.
[Fixed in v2: Also print
the YAFM if pet killed in your presence.]

blocked-boulder.diff, v2: When
you try to push a boulder that's blocked by a monster that you can see (by
telepathy, most likely), you get the message, "There's the newt on the
other side.", or "There's Fido on the other side." for named monsters.
This patch fixes these to, respectively, "There's a newt on the other
side." and "Fido is on the other side." [Changed in v2: adapted to
v3.4.1, which appears to have fixed the "There's a newt..." case but not
the "There's Fido..." case.]

The following patches are relative to v3.3.1.

opt-bagmerge.diff:
Implements the 'bagmerge' option, to enable or disable merging of objects
in containers. [Obsolete; similar functionality is now included in
standard v3.4.0]

opt-sparkle.diff: Implements
the 'sparkle' option, to enable or disable the sparkly special effect when
a monster (or you) is hit with an attack that it resists. You'd probably,
for instance, want to turn it off while running around on the Plane of
Fire. [Obsolete; this patch is now include in standard v3.4.0]

orb-of-light.diff: Adds the
new object "orb of light" ("glass orb") which acts as a permanent light
source like a magic lamp, with the added advantage that you can successfuly
wish for one.

millennium-bug.diff: No,
this patch doesn't fix the Y2K bug, it brings it to life! Now you too can
slay the dreaded millennium bug with your razor-sharp "de-bugging" tools,
and watch it evaporate in a cloud of media hype.

tshirt.diff: What? Only one kind
of funny T-shirt message available? I smell a market waiting to be
tapped... [Obsolete; this
patch is now included in standard v3.4.0]